/* Automated generated idl file <plalibrary>.
 * Generated by genidl tool (c) 2009, 2010 Mingw-w64 project.
 */

/* Union record forward declarations.  */
dispinterface IDataCollectorSet;
dispinterface IDataCollectorCollection;
dispinterface IDataCollector;
dispinterface IValueMap;
dispinterface IValueMapItem;
dispinterface IScheduleCollection;
dispinterface ISchedule;
dispinterface IDataManager;
dispinterface IFolderActionCollection;
dispinterface IFolderAction;
dispinterface IPerformanceCounterDataCollector;
dispinterface ITraceDataCollector;
dispinterface ITraceDataProviderCollection;
dispinterface ITraceDataProvider;
dispinterface IConfigurationDataCollector;
dispinterface IAlertDataCollector;
dispinterface IApiTracingDataCollector;
dispinterface IDataCollectorSetCollection;

/* Union record forward declarations.  */
coclass DataCollectorSet;
coclass TraceSession;
coclass TraceSessionCollection;
coclass TraceDataProvider;
coclass TraceDataProviderCollection;
coclass DataCollectorSetCollection;
coclass LegacyDataCollectorSet;
coclass LegacyDataCollectorSetCollection;
coclass LegacyTraceSession;
coclass LegacyTraceSessionCollection;
coclass ServerDataCollectorSet;
coclass ServerDataCollectorSetCollection;
coclass SystemDataCollectorSet;
coclass SystemDataCollectorSetCollection;
coclass BootTraceSession;
coclass BootTraceSessionCollection;

/* Enumeration declarations.  */
enum __MIDL___MIDL_itf_pla_0000_0000_0001
{
  plaPerformanceCounter = (int) 201326592,
  plaTrace = (int) 201326593,
  plaConfiguration = (int) 201326594,
  plaAlert = (int) 201326595,
  plaApiTrace = (int) 201326596
};
enum __MIDL___MIDL_itf_pla_0000_0000_0003
{
  plaNone = (int) 201326592,
  plaPattern = (int) 201326593,
  plaComputer = (int) 201326594,
  plaMonthDayHour = (int) 201326848,
  plaSerialNumber = (int) 201327104,
  plaYearDayOfYear = (int) 201327616,
  plaYearMonth = (int) 201328640,
  plaYearMonthDay = (int) 201330688,
  plaYearMonthDayHour = (int) 201334784,
  plaMonthDayHourMinute = (int) 201342976
};
enum __MIDL___MIDL_itf_pla_0000_0000_0008
{
  plaIndex = (int) 201326593,
  plaFlag = (int) 201326594,
  plaFlagArray = (int) 201326595,
  plaValidation = (int) 201326596
};
enum __MIDL___MIDL_itf_pla_0000_0000_0004
{
  plaStopped = (int) 201326592,
  plaRunning = (int) 201326593,
  plaCompiling = (int) 201326594,
  plaPending = (int) 201326595,
  plaUndefined = (int) 201326596
};
enum __MIDL___MIDL_itf_pla_0000_0000_0009
{
  plaRunOnce = (int) 201326592,
  plaSunday = (int) 201326593,
  plaMonday = (int) 201326594,
  plaTuesday = (int) 201326596,
  plaWednesday = (int) 201326600,
  plaThursday = (int) 201326608,
  plaFriday = (int) 201326624,
  plaSaturday = (int) 201326656,
  plaEveryday = (int) 201326719
};
enum __MIDL___MIDL_itf_pla_0000_0000_0010
{
  plaDeleteLargest = (int) 201326592,
  plaDeleteOldest = (int) 201326593
};
enum __MIDL___MIDL_itf_pla_0000_0000_0012
{
  plaCreateCab = (int) 201326593,
  plaDeleteData = (int) 201326594,
  plaSendCab = (int) 201326596,
  plaDeleteCab = (int) 201326600,
  plaDeleteReport = (int) 201326608
};
enum __MIDL___MIDL_itf_pla_0000_0000_0011
{
  plaCreateReport = (int) 201326593,
  plaRunRules = (int) 201326594,
  plaCreateHtml = (int) 201326596,
  plaFolderActions = (int) 201326600,
  plaResourceFreeing = (int) 201326608
};
enum __MIDL___MIDL_itf_pla_0000_0000_0007
{
  plaCreateNew = (int) 201326593,
  plaModify = (int) 201326594,
  plaCreateOrModify = (int) 201326595,
  plaUpdateRunningInstance = (int) 201326608,
  plaFlushTrace = (int) 201326624,
  plaValidateOnly = (int) 201330688
};
enum __MIDL___MIDL_itf_pla_0000_0000_0002
{
  plaCommaSeparated = (int) 201326592,
  plaTabSeparated = (int) 201326593,
  plaSql = (int) 201326594,
  plaBinary = (int) 201326595
};
enum __MIDL___MIDL_itf_pla_0000_0000_0005
{
  plaTimeStamp = (int) 201326592,
  plaPerformance = (int) 201326593,
  plaSystem = (int) 201326594,
  plaCycle = (int) 201326595
};
enum __MIDL___MIDL_itf_pla_0000_0000_0006
{
  plaFile = (int) 201326593,
  plaRealTime = (int) 201326594,
  plaBoth = (int) 201326595,
  plaBuffering = (int) 201326596
};

/* Type definitions.  */
[
  uuid(03837504-098B-11D8-9414-505054503030)
]
typedef enum __MIDL___MIDL_itf_pla_0000_0000_0001 DataCollectorType;
[
  uuid(03837508-098B-11D8-9414-505054503030)
]
typedef enum __MIDL___MIDL_itf_pla_0000_0000_0003 AutoPathFormat;
[
  uuid(03837535-098B-11D8-9414-505054503030)
]
typedef enum __MIDL___MIDL_itf_pla_0000_0000_0008 ValueMapType;
[
  uuid(0383750A-098B-11D8-9414-505054503030)
]
typedef enum __MIDL___MIDL_itf_pla_0000_0000_0004 DataCollectorSetStatus;
[
  uuid(0383753B-098B-11D8-9414-505054503030)
]
typedef enum __MIDL___MIDL_itf_pla_0000_0000_0009 WeekDays;
[
  uuid(0383753F-098B-11D8-9414-505054503030)
]
typedef enum __MIDL___MIDL_itf_pla_0000_0000_0010 ResourcePolicy;
[
  uuid(03837542-098B-11D8-9414-505054503030)
]
typedef enum __MIDL___MIDL_itf_pla_0000_0000_0012 FolderActionSteps;
[
  uuid(03837540-098B-11D8-9414-505054503030)
]
typedef enum __MIDL___MIDL_itf_pla_0000_0000_0011 DataManagerSteps;
[
  uuid(0383751F-098B-11D8-9414-505054503030)
]
typedef enum __MIDL___MIDL_itf_pla_0000_0000_0007 CommitMode;
[
  uuid(03837507-098B-11D8-9414-505054503030)
]
typedef enum __MIDL___MIDL_itf_pla_0000_0000_0002 FileFormat;
[
  uuid(0383750D-098B-11D8-9414-505054503030)
]
typedef enum __MIDL___MIDL_itf_pla_0000_0000_0005 ClockType;
[
  uuid(0383750E-098B-11D8-9414-505054503030)
]
typedef enum __MIDL___MIDL_itf_pla_0000_0000_0006 StreamMode;

[
  uuid(03837500-098B-11D8-9414-505054503030),
  version(1.0),
  helpstring("Performance Data Service")
]
library plalibrary
{
  importlib("stdole2.tlb");

   /* CoClass declarations.  */
   [
     uuid(03837521-098B-11D8-9414-505054503030),
     cancreate,
     control
   ]
   coclass DataCollectorSet
   {
     dispinterface IDataCollectorSet;
   };
   [
     uuid(0383751C-098B-11D8-9414-505054503030),
     cancreate,
     control
   ]
   coclass TraceSession
   {
     dispinterface IDataCollectorSet;
   };
   [
     uuid(03837530-098B-11D8-9414-505054503030),
     cancreate,
     control
   ]
   coclass TraceSessionCollection
   {
     dispinterface IDataCollectorSetCollection;
   };
   [
     uuid(03837513-098B-11D8-9414-505054503030),
     cancreate,
     control
   ]
   coclass TraceDataProvider
   {
     dispinterface ITraceDataProvider;
   };
   [
     uuid(03837511-098B-11D8-9414-505054503030),
     cancreate,
     control
   ]
   coclass TraceDataProviderCollection
   {
     dispinterface ITraceDataProviderCollection;
   };
   [
     uuid(03837525-098B-11D8-9414-505054503030),
     cancreate,
     control
   ]
   coclass DataCollectorSetCollection
   {
     dispinterface IDataCollectorSetCollection;
   };
   [
     uuid(03837526-098B-11D8-9414-505054503030),
     cancreate,
     control
   ]
   coclass LegacyDataCollectorSet
   {
     dispinterface IDataCollectorSet;
   };
   [
     uuid(03837527-098B-11D8-9414-505054503030),
     cancreate,
     control
   ]
   coclass LegacyDataCollectorSetCollection
   {
     dispinterface IDataCollectorSetCollection;
   };
   [
     uuid(03837528-098B-11D8-9414-505054503030),
     cancreate,
     control
   ]
   coclass LegacyTraceSession
   {
     dispinterface IDataCollectorSet;
   };
   [
     uuid(03837529-098B-11D8-9414-505054503030),
     cancreate,
     control
   ]
   coclass LegacyTraceSessionCollection
   {
     dispinterface IDataCollectorSetCollection;
   };
   [
     uuid(03837531-098B-11D8-9414-505054503030),
     cancreate,
     control
   ]
   coclass ServerDataCollectorSet
   {
     dispinterface IDataCollectorSet;
   };
   [
     uuid(03837532-098B-11D8-9414-505054503030),
     cancreate,
     control
   ]
   coclass ServerDataCollectorSetCollection
   {
     dispinterface IDataCollectorSetCollection;
   };
   [
     uuid(03837546-098B-11D8-9414-505054503030),
     cancreate,
     control
   ]
   coclass SystemDataCollectorSet
   {
     dispinterface IDataCollectorSet;
   };
   [
     uuid(03837547-098B-11D8-9414-505054503030),
     cancreate,
     control
   ]
   coclass SystemDataCollectorSetCollection
   {
     dispinterface IDataCollectorSetCollection;
   };
   [
     uuid(03837538-098B-11D8-9414-505054503030),
     cancreate,
     control
   ]
   coclass BootTraceSession
   {
     dispinterface IDataCollectorSet;
   };
   [
     uuid(03837539-098B-11D8-9414-505054503030),
     cancreate,
     control
   ]
   coclass BootTraceSessionCollection
   {
     dispinterface IDataCollectorSetCollection;
   };

   /* Dispatch interface declarations.  */
   [
     uuid(03837520-098B-11D8-9414-505054503030),
     dual,
     oleautomation,
     dispatchable
   ]
   dispinterface IDataCollectorSet : IDispatch
   {
     [id(1610743808), propget]
     HRESULT __stdcall DataCollectors (
       [out retval] dispinterface IDataCollectorCollection **collectors
     );
     [propget]
     HRESULT __stdcall Duration (
       [out retval] UINT *seconds
     );
     [id(1610743809), propput]
     HRESULT __stdcall Duration (
       [in] UINT argNo1
     );
     [id(1610743811), propget]
     HRESULT __stdcall Description (
       [out retval] BSTR *Description
     );
     [id(1610743811), propput]
     HRESULT __stdcall Description (
       [in] BSTR argNo1
     );
     [id(1610743813), propget]
     HRESULT __stdcall DescriptionUnresolved (
       [out retval] BSTR *Descr
     );
     [propget]
     HRESULT __stdcall DisplayName (
       [out retval] BSTR *DisplayName
     );
     [id(1610743814), propput]
     HRESULT __stdcall DisplayName (
       [in] BSTR argNo1
     );
     [id(1610743816), propget]
     HRESULT __stdcall DisplayNameUnresolved (
       [out retval] BSTR *name
     );
     [propget]
     HRESULT __stdcall Keywords (
       [out retval] BSTR Keywords[]*
     );
     [id(1610743817), propput]
     HRESULT __stdcall Keywords (
       [in] BSTR argNo1[]
     );
     [id(1610743819), propget]
     HRESULT __stdcall LatestOutputLocation (
       [out retval] BSTR *path
     );
     [id(1610743819), propput]
     HRESULT __stdcall LatestOutputLocation (
       [in] BSTR argNo1
     );
     [id(0), propget]
     HRESULT __stdcall name (
       [out retval] BSTR *name
     );
     [id(1610743822), propget]
     HRESULT __stdcall OutputLocation (
       [out retval] BSTR *path
     );
     [propget]
     HRESULT __stdcall RootPath (
       [out retval] BSTR *folder
     );
     [id(1610743823), propput]
     HRESULT __stdcall RootPath (
       [in] BSTR argNo1
     );
     [id(1610743825), propget]
     HRESULT __stdcall Segment (
       [out retval] WINBOOL *Segment
     );
     [id(1610743825), propput]
     HRESULT __stdcall Segment (
       [in] WINBOOL argNo1
     );
     [id(1610743827), propget]
     HRESULT __stdcall SegmentMaxDuration (
       [out retval] UINT *seconds
     );
     [id(1610743827), propput]
     HRESULT __stdcall SegmentMaxDuration (
       [in] UINT argNo1
     );
     [id(1610743829), propget]
     HRESULT __stdcall SegmentMaxSize (
       [out retval] UINT *size
     );
     [id(1610743829), propput]
     HRESULT __stdcall SegmentMaxSize (
       [in] UINT argNo1
     );
     [id(1610743831), propget]
     HRESULT __stdcall SerialNumber (
       [out retval] UINT *Index
     );
     [id(1610743831), propput]
     HRESULT __stdcall SerialNumber (
       [in] UINT argNo1
     );
     [id(1610743833), propget]
     HRESULT __stdcall Server (
       [out retval] BSTR *Server
     );
     [propget]
     HRESULT __stdcall Status (
       [out retval] DataCollectorSetStatus *Status
     );
     [propget]
     HRESULT __stdcall Subdirectory (
       [out retval] BSTR *folder
     );
     [id(1610743835), propput]
     HRESULT __stdcall Subdirectory (
       [in] BSTR argNo1
     );
     [id(1610743837), propget]
     HRESULT __stdcall SubdirectoryFormat (
       [out retval] AutoPathFormat *format
     );
     [id(1610743837), propput]
     HRESULT __stdcall SubdirectoryFormat (
       [in] AutoPathFormat argNo1
     );
     [id(1610743839), propget]
     HRESULT __stdcall SubdirectoryFormatPattern (
       [out retval] BSTR *pattern
     );
     [id(1610743839), propput]
     HRESULT __stdcall SubdirectoryFormatPattern (
       [in] BSTR argNo1
     );
     [id(1610743841), propget]
     HRESULT __stdcall Task (
       [out retval] BSTR *Task
     );
     [id(1610743841), propput]
     HRESULT __stdcall Task (
       [in] BSTR argNo1
     );
     [id(1610743843), propget]
     HRESULT __stdcall TaskRunAsSelf (
       [out retval] WINBOOL *RunAsSelf
     );
     [id(1610743843), propput]
     HRESULT __stdcall TaskRunAsSelf (
       [in] WINBOOL argNo1
     );
     [id(1610743845), propget]
     HRESULT __stdcall TaskArguments (
       [out retval] BSTR *Task
     );
     [id(1610743845), propput]
     HRESULT __stdcall TaskArguments (
       [in] BSTR argNo1
     );
     [id(1610743847), propget]
     HRESULT __stdcall TaskUserTextArguments (
       [out retval] BSTR *UserText
     );
     [id(1610743847), propput]
     HRESULT __stdcall TaskUserTextArguments (
       [in] BSTR argNo1
     );
     [id(1610743849), propget]
     HRESULT __stdcall Schedules (
       [out retval] dispinterface IScheduleCollection **ppSchedules
     );
     [propget]
     HRESULT __stdcall SchedulesEnabled (
       [out retval] WINBOOL *Enabled
     );
     [id(1610743850), propput]
     HRESULT __stdcall SchedulesEnabled (
       [in] WINBOOL argNo1
     );
     [id(1610743852), propget]
     HRESULT __stdcall UserAccount (
       [out retval] BSTR *user
     );
     [propget]
     HRESULT __stdcall Xml (
       [out retval] BSTR *Xml
     );
     [propget]
     HRESULT __stdcall Security (
       [out retval] BSTR *pbstrSecurity
     );
     [id(1610743854), propput]
     HRESULT __stdcall Security (
       [in] BSTR argNo1
     );
     [id(1610743856), propget]
     HRESULT __stdcall StopOnCompletion (
       [out retval] WINBOOL *Stop
     );
     [id(1610743856), propput]
     HRESULT __stdcall StopOnCompletion (
       [in] WINBOOL argNo1
     );
     [id(1610743858), propget]
     HRESULT __stdcall DataManager (
       [out retval] dispinterface IDataManager **DataManager
     );
     HRESULT __stdcall SetCredentials (
       BSTR user,
       BSTR password
     );
     HRESULT __stdcall Query (
       [in] BSTR name,
       [in] BSTR Server
     );
     HRESULT __stdcall Commit (
       [in] BSTR name,
       [in] BSTR Server,
       CommitMode mode,
       [out retval] dispinterface IValueMap **Validation
     );
     HRESULT __stdcall Delete (void);
     HRESULT __stdcall start (
       [in] WINBOOL Synchronous
     );
     HRESULT __stdcall Stop (
       [in] WINBOOL Synchronous
     );
     HRESULT __stdcall SetXml (
       [in] BSTR Xml,
       [out retval] dispinterface IValueMap **Validation
     );
     HRESULT __stdcall SetValue (
       BSTR Key,
       BSTR Value
     );
     HRESULT __stdcall GetValue (
       BSTR Key,
       [out retval] BSTR *Value
     );
   };
   [
     uuid(03837502-098B-11D8-9414-505054503030),
     dual,
     nonextensible,
     oleautomation,
     dispatchable
   ]
   dispinterface IDataCollectorCollection : IDispatch
   {
     [id(1), propget]
     HRESULT __stdcall Count (
       [out retval] long *retVal
     );
     [id(0), propget]
     HRESULT __stdcall Item (
       [in] VARIANT Index,
       [out retval] dispinterface IDataCollector **collector
     );
     [id(-4), propget]
     HRESULT __stdcall _NewEnum (
       [out retval] IUnknown **retVal
     );
     [id(1610743811)]
     HRESULT __stdcall Add (
       dispinterface IDataCollector *collector
     );
     HRESULT __stdcall Remove (
       VARIANT collector
     );
     HRESULT __stdcall Clear (void);
     HRESULT __stdcall AddRange (
       dispinterface IDataCollectorCollection *collectors
     );
     HRESULT __stdcall CreateDataCollectorFromXml (
       [in] BSTR bstrXml,
       [out] dispinterface IValueMap **pValidation,
       [out retval] dispinterface IDataCollector **pCollector
     );
     HRESULT __stdcall CreateDataCollector (
       [in] DataCollectorType type,
       [out retval] dispinterface IDataCollector **collector
     );
   };
   [
     uuid(038374FF-098B-11D8-9414-505054503030),
     dual,
     oleautomation,
     dispatchable
   ]
   dispinterface IDataCollector : IDispatch
   {
     [id(1610743808), propget]
     HRESULT __stdcall DataCollectorSet (
       [out retval] dispinterface IDataCollectorSet **group
     );
     [id(1610743808), propput, restricted, hidden]
     HRESULT __stdcall DataCollectorSet (
       [in] dispinterface IDataCollectorSet *argNo1
     );
     [id(1610743810), propget]
     HRESULT __stdcall DataCollectorType (
       [out retval] DataCollectorType *type
     );
     [propget]
     HRESULT __stdcall FileName (
       [out retval] BSTR *name
     );
     [id(1610743811), propput]
     HRESULT __stdcall FileName (
       [in] BSTR argNo1
     );
     [id(1610743813), propget]
     HRESULT __stdcall FileNameFormat (
       [out retval] AutoPathFormat *format
     );
     [id(1610743813), propput]
     HRESULT __stdcall FileNameFormat (
       [in] AutoPathFormat argNo1
     );
     [id(1610743815), propget]
     HRESULT __stdcall FileNameFormatPattern (
       [out retval] BSTR *pattern
     );
     [id(1610743815), propput]
     HRESULT __stdcall FileNameFormatPattern (
       [in] BSTR argNo1
     );
     [id(1610743817), propget]
     HRESULT __stdcall LatestOutputLocation (
       [out retval] BSTR *path
     );
     [id(1610743817), propput]
     HRESULT __stdcall LatestOutputLocation (
       [in] BSTR argNo1
     );
     [id(1610743819), propget]
     HRESULT __stdcall LogAppend (
       [out retval] WINBOOL *append
     );
     [id(1610743819), propput]
     HRESULT __stdcall LogAppend (
       [in] WINBOOL argNo1
     );
     [id(1610743821), propget]
     HRESULT __stdcall LogCircular (
       [out retval] WINBOOL *circular
     );
     [id(1610743821), propput]
     HRESULT __stdcall LogCircular (
       [in] WINBOOL argNo1
     );
     [id(1610743823), propget]
     HRESULT __stdcall LogOverwrite (
       [out retval] WINBOOL *overwrite
     );
     [id(1610743823), propput]
     HRESULT __stdcall LogOverwrite (
       [in] WINBOOL argNo1
     );
     [id(1610743825), propget]
     HRESULT __stdcall name (
       [out retval] BSTR *name
     );
     [id(1610743825), propput]
     HRESULT __stdcall name (
       [in] BSTR argNo1
     );
     [id(1610743827), propget]
     HRESULT __stdcall OutputLocation (
       [out retval] BSTR *path
     );
     [propget]
     HRESULT __stdcall Index (
       [out retval] long *Index
     );
     [id(1610743828), propput, restricted, hidden]
     HRESULT __stdcall Index (
       [in] long argNo1
     );
     [id(1610743830), propget]
     HRESULT __stdcall Xml (
       [out retval] BSTR *Xml
     );
     HRESULT __stdcall SetXml (
       [in] BSTR Xml,
       [out retval] dispinterface IValueMap **Validation
     );
     HRESULT __stdcall CreateOutputLocation (
       [in] WINBOOL Latest,
       [out retval] BSTR *Location
     );
   };
   [
     uuid(03837534-098B-11D8-9414-505054503030),
     dual,
     nonextensible,
     oleautomation,
     dispatchable
   ]
   dispinterface IValueMap : IDispatch
   {
     [id(1), propget]
     HRESULT __stdcall Count (
       [out retval] long *retVal
     );
     [id(0), propget]
     HRESULT __stdcall Item (
       [in] VARIANT Index,
       [out retval] dispinterface IValueMapItem **Value
     );
     [id(-4), propget]
     HRESULT __stdcall _NewEnum (
       [out retval] IUnknown **retVal
     );
     [id(1610743811), propget]
     HRESULT __stdcall Description (
       [out retval] BSTR *Description
     );
     [id(1610743811), propput]
     HRESULT __stdcall Description (
       [in] BSTR argNo1
     );
     [id(1610743813), propget]
     HRESULT __stdcall Value (
       [out retval] VARIANT *Value
     );
     [id(1610743813), propput]
     HRESULT __stdcall Value (
       [in] VARIANT argNo1
     );
     [id(1610743815), propget]
     HRESULT __stdcall ValueMapType (
       [out retval] ValueMapType *type
     );
     [id(1610743815), propput]
     HRESULT __stdcall ValueMapType (
       [in] ValueMapType argNo1
     );
     [id(1610743817)]
     HRESULT __stdcall Add (
       VARIANT Value
     );
     HRESULT __stdcall Remove (
       VARIANT Value
     );
     HRESULT __stdcall Clear (void);
     HRESULT __stdcall AddRange (
       dispinterface IValueMap *map
     );
     HRESULT __stdcall CreateValueMapItem (
       [out retval] dispinterface IValueMapItem **Item
     );
   };
   [
     uuid(03837533-098B-11D8-9414-505054503030),
     dual,
     nonextensible,
     oleautomation,
     dispatchable
   ]
   dispinterface IValueMapItem : IDispatch
   {
     [id(1610743808), propget]
     HRESULT __stdcall Description (
       [out retval] BSTR *Description
     );
     [id(1610743808), propput]
     HRESULT __stdcall Description (
       [in] BSTR argNo1
     );
     [id(1610743810), propget]
     HRESULT __stdcall Enabled (
       [out retval] WINBOOL *Enabled
     );
     [id(1610743810), propput]
     HRESULT __stdcall Enabled (
       [in] WINBOOL argNo1
     );
     [id(1610743812), propget]
     HRESULT __stdcall Key (
       [out retval] BSTR *Key
     );
     [id(1610743812), propput]
     HRESULT __stdcall Key (
       [in] BSTR argNo1
     );
     [id(1610743814), propget]
     HRESULT __stdcall Value (
       [out retval] VARIANT *Value
     );
     [id(1610743814), propput]
     HRESULT __stdcall Value (
       [in] VARIANT argNo1
     );
     [id(1610743816), propget]
     HRESULT __stdcall ValueMapType (
       [out retval] ValueMapType *type
     );
     [id(1610743816), propput]
     HRESULT __stdcall ValueMapType (
       [in] ValueMapType argNo1
     );
   };
   [
     uuid(0383753D-098B-11D8-9414-505054503030),
     dual,
     nonextensible,
     oleautomation,
     dispatchable
   ]
   dispinterface IScheduleCollection : IDispatch
   {
     [id(1), propget]
     HRESULT __stdcall Count (
       [out retval] long *retVal
     );
     [id(0), propget]
     HRESULT __stdcall Item (
       [in] VARIANT Index,
       [out retval] dispinterface ISchedule **ppSchedule
     );
     [id(-4), propget]
     HRESULT __stdcall _NewEnum (
       [out retval] IUnknown **ienum
     );
     [id(1610743811)]
     HRESULT __stdcall Add (
       dispinterface ISchedule *pSchedule
     );
     HRESULT __stdcall Remove (
       VARIANT vSchedule
     );
     HRESULT __stdcall Clear (void);
     HRESULT __stdcall AddRange (
       dispinterface IScheduleCollection *pSchedules
     );
     HRESULT __stdcall CreateSchedule (
       [out retval] dispinterface ISchedule **Schedule
     );
   };
   [
     uuid(0383753A-098B-11D8-9414-505054503030),
     dual,
     oleautomation,
     dispatchable
   ]
   dispinterface ISchedule : IDispatch
   {
     [id(1610743808), propget]
     HRESULT __stdcall StartDate (
       [out retval] VARIANT *start
     );
     [id(1610743808), propput]
     HRESULT __stdcall StartDate (
       [in] VARIANT argNo1
     );
     [id(1610743810), propget]
     HRESULT __stdcall EndDate (
       [out retval] VARIANT *end
     );
     [id(1610743810), propput]
     HRESULT __stdcall EndDate (
       [in] VARIANT argNo1
     );
     [id(1610743812), propget]
     HRESULT __stdcall StartTime (
       [out retval] VARIANT *start
     );
     [id(1610743812), propput]
     HRESULT __stdcall StartTime (
       [in] VARIANT argNo1
     );
     [id(1610743814), propget]
     HRESULT __stdcall Days (
       [out retval] WeekDays *Days
     );
     [id(1610743814), propput]
     HRESULT __stdcall Days (
       [in] WeekDays argNo1
     );
   };
   [
     uuid(03837541-098B-11D8-9414-505054503030),
     dual,
     oleautomation,
     dispatchable
   ]
   dispinterface IDataManager : IDispatch
   {
     [id(1610743808), propget]
     HRESULT __stdcall Enabled (
       [out retval] WINBOOL *pfEnabled
     );
     [id(1610743808), propput]
     HRESULT __stdcall Enabled (
       [in] WINBOOL argNo1
     );
     [id(1610743810), propget]
     HRESULT __stdcall CheckBeforeRunning (
       [out retval] WINBOOL *pfCheck
     );
     [id(1610743810), propput]
     HRESULT __stdcall CheckBeforeRunning (
       [in] WINBOOL argNo1
     );
     [id(1610743812), propget]
     HRESULT __stdcall MinFreeDisk (
       [out retval] UINT *MinFreeDisk
     );
     [id(1610743812), propput]
     HRESULT __stdcall MinFreeDisk (
       [in] UINT argNo1
     );
     [id(1610743814), propget]
     HRESULT __stdcall MaxSize (
       [out retval] UINT *pulMaxSize
     );
     [id(1610743814), propput]
     HRESULT __stdcall MaxSize (
       [in] UINT argNo1
     );
     [id(1610743816), propget]
     HRESULT __stdcall MaxFolderCount (
       [out retval] UINT *pulMaxFolderCount
     );
     [id(1610743816), propput]
     HRESULT __stdcall MaxFolderCount (
       [in] UINT argNo1
     );
     [id(1610743818), propget]
     HRESULT __stdcall ResourcePolicy (
       [out retval] ResourcePolicy *pPolicy
     );
     [id(1610743818), propput]
     HRESULT __stdcall ResourcePolicy (
       [in] ResourcePolicy argNo1
     );
     [id(1610743820), propget]
     HRESULT __stdcall FolderActions (
       [out retval] dispinterface IFolderActionCollection **Actions
     );
     [propget]
     HRESULT __stdcall ReportSchema (
       [out retval] BSTR *ReportSchema
     );
     [id(1610743821), propput]
     HRESULT __stdcall ReportSchema (
       [in] BSTR argNo1
     );
     [id(1610743823), propget]
     HRESULT __stdcall ReportFileName (
       [out retval] BSTR *pbstrFilename
     );
     [id(1610743823), propput]
     HRESULT __stdcall ReportFileName (
       [in] BSTR argNo1
     );
     [id(1610743825), propget]
     HRESULT __stdcall RuleTargetFileName (
       [out retval] BSTR *FileName
     );
     [id(1610743825), propput]
     HRESULT __stdcall RuleTargetFileName (
       [in] BSTR argNo1
     );
     [id(1610743827), propget]
     HRESULT __stdcall EventsFileName (
       [out retval] BSTR *pbstrFilename
     );
     [id(1610743827), propput]
     HRESULT __stdcall EventsFileName (
       [in] BSTR argNo1
     );
     [id(1610743829), propget]
     HRESULT __stdcall Rules (
       [out retval] BSTR *pbstrXml
     );
     [id(1610743829), propput]
     HRESULT __stdcall Rules (
       [in] BSTR argNo1
     );
     [id(1610743831)]
     HRESULT __stdcall Run (
       [in] DataManagerSteps Steps,
       [in] BSTR bstrFolder,
       [out retval] dispinterface IValueMap **Errors
     );
     HRESULT __stdcall Extract (
       [in] BSTR CabFilename,
       [in] BSTR DestinationPath
     );
   };
   [
     uuid(03837544-098B-11D8-9414-505054503030),
     dual,
     nonextensible,
     oleautomation,
     dispatchable
   ]
   dispinterface IFolderActionCollection : IDispatch
   {
     [id(1), propget]
     HRESULT __stdcall Count (
       [out retval] UINT *Count
     );
     [id(0), propget]
     HRESULT __stdcall Item (
       [in] VARIANT Index,
       [out retval] dispinterface IFolderAction **Action
     );
     [id(-4), propget]
     HRESULT __stdcall _NewEnum (
       [out retval] IUnknown **Enum
     );
     [id(1610743811)]
     HRESULT __stdcall Add (
       dispinterface IFolderAction *Action
     );
     HRESULT __stdcall Remove (
       VARIANT Index
     );
     HRESULT __stdcall Clear (void);
     HRESULT __stdcall AddRange (
       dispinterface IFolderActionCollection *Actions
     );
     HRESULT __stdcall CreateFolderAction (
       [out retval] dispinterface IFolderAction **FolderAction
     );
   };
   [
     uuid(03837543-098B-11D8-9414-505054503030),
     dual,
     oleautomation,
     dispatchable
   ]
   dispinterface IFolderAction : IDispatch
   {
     [id(1610743808), propget]
     HRESULT __stdcall Age (
       [out retval] UINT *pulAge
     );
     [id(1610743808), propput]
     HRESULT __stdcall Age (
       [in] UINT argNo1
     );
     [id(1610743810), propget]
     HRESULT __stdcall size (
       [out retval] UINT *pulAge
     );
     [id(1610743810), propput]
     HRESULT __stdcall size (
       [in] UINT argNo1
     );
     [id(1610743812), propget]
     HRESULT __stdcall Actions (
       [out retval] FolderActionSteps *Steps
     );
     [id(1610743812), propput]
     HRESULT __stdcall Actions (
       [in] FolderActionSteps argNo1
     );
     [id(1610743814), propget]
     HRESULT __stdcall SendCabTo (
       [out retval] BSTR *pbstrDestination
     );
     [id(1610743814), propput]
     HRESULT __stdcall SendCabTo (
       [in] BSTR argNo1
     );
   };
   [
     uuid(03837506-098B-11D8-9414-505054503030),
     dual,
     oleautomation,
     dispatchable
   ]
   dispinterface IPerformanceCounterDataCollector : IDataCollector
   {
     [id(1610809344), propget]
     HRESULT __stdcall DataSourceName (
       [out retval] BSTR *dsn
     );
     [id(1610809344), propput]
     HRESULT __stdcall DataSourceName (
       [in] BSTR argNo1
     );
     [id(1610809346), propget]
     HRESULT __stdcall PerformanceCounters (
       [out retval] BSTR counters[]*
     );
     [id(1610809346), propput]
     HRESULT __stdcall PerformanceCounters (
       [in] BSTR argNo1[]
     );
     [id(1610809348), propget]
     HRESULT __stdcall LogFileFormat (
       [out retval] FileFormat *format
     );
     [id(1610809348), propput]
     HRESULT __stdcall LogFileFormat (
       [in] FileFormat argNo1
     );
     [id(1610809350), propget]
     HRESULT __stdcall SampleInterval (
       [out retval] UINT *interval
     );
     [id(1610809350), propput]
     HRESULT __stdcall SampleInterval (
       [in] UINT argNo1
     );
     [id(1610809352), propget]
     HRESULT __stdcall SegmentMaxRecords (
       [out retval] UINT *records
     );
     [id(1610809352), propput]
     HRESULT __stdcall SegmentMaxRecords (
       [in] UINT argNo1
     );
   };
   [
     uuid(0383750B-098B-11D8-9414-505054503030),
     dual,
     oleautomation,
     dispatchable
   ]
   dispinterface ITraceDataCollector : IDataCollector
   {
     [id(1610809344), propget]
     HRESULT __stdcall BufferSize (
       [out retval] UINT *size
     );
     [id(1610809344), propput]
     HRESULT __stdcall BufferSize (
       [in] UINT argNo1
     );
     [id(1610809346), propget]
     HRESULT __stdcall BuffersLost (
       [out retval] UINT *buffers
     );
     [id(1610809346), propput, restricted, hidden]
     HRESULT __stdcall BuffersLost (
       [in] UINT argNo1
     );
     [id(1610809348), propget]
     HRESULT __stdcall BuffersWritten (
       [out retval] UINT *buffers
     );
     [id(1610809348), propput, restricted, hidden]
     HRESULT __stdcall BuffersWritten (
       [in] UINT argNo1
     );
     [id(1610809350), propget]
     HRESULT __stdcall ClockType (
       [out retval] ClockType *clock
     );
     [id(1610809350), propput]
     HRESULT __stdcall ClockType (
       [in] ClockType argNo1
     );
     [id(1610809352), propget]
     HRESULT __stdcall EventsLost (
       [out retval] UINT *events
     );
     [id(1610809352), propput, restricted, hidden]
     HRESULT __stdcall EventsLost (
       [in] UINT argNo1
     );
     [id(1610809354), propget]
     HRESULT __stdcall ExtendedModes (
       [out retval] UINT *mode
     );
     [id(1610809354), propput]
     HRESULT __stdcall ExtendedModes (
       [in] UINT argNo1
     );
     [id(1610809356), propget]
     HRESULT __stdcall FlushTimer (
       [out retval] UINT *seconds
     );
     [id(1610809356), propput]
     HRESULT __stdcall FlushTimer (
       [in] UINT argNo1
     );
     [id(1610809358), propget]
     HRESULT __stdcall FreeBuffers (
       [out retval] UINT *buffers
     );
     [id(1610809358), propput, restricted, hidden]
     HRESULT __stdcall FreeBuffers (
       [in] UINT argNo1
     );
     [id(1610809360), propget]
     HRESULT __stdcall Guid (
       [out retval] struct GUID *Guid
     );
     [id(1610809360), propput]
     HRESULT __stdcall Guid (
       [in] struct GUID argNo1
     );
     [id(1610809362), propget]
     HRESULT __stdcall IsKernelTrace (
       [out retval] WINBOOL *kernel
     );
     [propget]
     HRESULT __stdcall MaximumBuffers (
       [out retval] UINT *buffers
     );
     [id(1610809363), propput]
     HRESULT __stdcall MaximumBuffers (
       [in] UINT argNo1
     );
     [id(1610809365), propget]
     HRESULT __stdcall MinimumBuffers (
       [out retval] UINT *buffers
     );
     [id(1610809365), propput]
     HRESULT __stdcall MinimumBuffers (
       [in] UINT argNo1
     );
     [id(1610809367), propget]
     HRESULT __stdcall NumberOfBuffers (
       [out retval] UINT *buffers
     );
     [id(1610809367), propput]
     HRESULT __stdcall NumberOfBuffers (
       [in] UINT argNo1
     );
     [id(1610809369), propget]
     HRESULT __stdcall PreallocateFile (
       [out retval] WINBOOL *allocate
     );
     [id(1610809369), propput]
     HRESULT __stdcall PreallocateFile (
       [in] WINBOOL argNo1
     );
     [id(1610809371), propget]
     HRESULT __stdcall ProcessMode (
       [out retval] WINBOOL *process
     );
     [id(1610809371), propput]
     HRESULT __stdcall ProcessMode (
       [in] WINBOOL argNo1
     );
     [id(1610809373), propget]
     HRESULT __stdcall RealTimeBuffersLost (
       [out retval] UINT *buffers
     );
     [id(1610809373), propput, restricted, hidden]
     HRESULT __stdcall RealTimeBuffersLost (
       [in] UINT argNo1
     );
     [id(1610809375), propget]
     HRESULT __stdcall SessionId (
       [out retval] ULONGLONG *id
     );
     [id(1610809375), propput, restricted, hidden]
     HRESULT __stdcall SessionId (
       [in] ULONGLONG argNo1
     );
     [id(1610809377), propget]
     HRESULT __stdcall SessionName (
       [out retval] BSTR *name
     );
     [id(1610809377), propput]
     HRESULT __stdcall SessionName (
       [in] BSTR argNo1
     );
     [id(1610809379), propget]
     HRESULT __stdcall SessionThreadId (
       [out retval] UINT *tid
     );
     [id(1610809379), propput, restricted, hidden]
     HRESULT __stdcall SessionThreadId (
       [in] UINT argNo1
     );
     [id(1610809381), propget]
     HRESULT __stdcall StreamMode (
       [out retval] StreamMode *mode
     );
     [id(1610809381), propput]
     HRESULT __stdcall StreamMode (
       [in] StreamMode argNo1
     );
     [id(1610809383), propget]
     HRESULT __stdcall TraceDataProviders (
       [out retval] dispinterface ITraceDataProviderCollection **providers
     );
   };
   [
     uuid(03837510-098B-11D8-9414-505054503030),
     dual,
     nonextensible,
     oleautomation,
     dispatchable
   ]
   dispinterface ITraceDataProviderCollection : IDispatch
   {
     [id(1), propget]
     HRESULT __stdcall Count (
       [out retval] long *retVal
     );
     [id(0), propget]
     HRESULT __stdcall Item (
       [in] VARIANT Index,
       [out retval] dispinterface ITraceDataProvider **ppProvider
     );
     [id(-4), propget]
     HRESULT __stdcall _NewEnum (
       [out retval] IUnknown **retVal
     );
     [id(1610743811)]
     HRESULT __stdcall Add (
       dispinterface ITraceDataProvider *pProvider
     );
     HRESULT __stdcall Remove (
       VARIANT vProvider
     );
     HRESULT __stdcall Clear (void);
     HRESULT __stdcall AddRange (
       dispinterface ITraceDataProviderCollection *providers
     );
     HRESULT __stdcall CreateTraceDataProvider (
       [out retval] dispinterface ITraceDataProvider **Provider
     );
     HRESULT __stdcall GetTraceDataProviders (
       [in] BSTR Server
     );
     HRESULT __stdcall GetTraceDataProvidersByProcess (
       [in] BSTR Server,
       [in] UINT Pid
     );
   };
   [
     uuid(03837512-098B-11D8-9414-505054503030),
     dual,
     oleautomation,
     dispatchable
   ]
   dispinterface ITraceDataProvider : IDispatch
   {
     [id(1610743808), propget]
     HRESULT __stdcall DisplayName (
       [out retval] BSTR *name
     );
     [id(1610743808), propput]
     HRESULT __stdcall DisplayName (
       [in] BSTR argNo1
     );
     [id(1610743810), propget]
     HRESULT __stdcall Guid (
       [out retval] struct GUID *Guid
     );
     [id(1610743810), propput]
     HRESULT __stdcall Guid (
       [in] struct GUID argNo1
     );
     [id(1610743812), propget]
     HRESULT __stdcall Level (
       [out retval] dispinterface IValueMap **ppLevel
     );
     [propget]
     HRESULT __stdcall KeywordsAny (
       [out retval] dispinterface IValueMap **ppKeywords
     );
     [propget]
     HRESULT __stdcall KeywordsAll (
       [out retval] dispinterface IValueMap **ppKeywords
     );
     [propget]
     HRESULT __stdcall Properties (
       [out retval] dispinterface IValueMap **ppProperties
     );
     [propget]
     HRESULT __stdcall FilterEnabled (
       [out retval] WINBOOL *FilterEnabled
     );
     [id(1610743816), propput]
     HRESULT __stdcall FilterEnabled (
       [in] WINBOOL argNo1
     );
     [id(1610743818), propget]
     HRESULT __stdcall FilterType (
       [out retval] UINT *pulType
     );
     [id(1610743818), propput]
     HRESULT __stdcall FilterType (
       [in] UINT argNo1
     );
     [id(1610743820), propget]
     HRESULT __stdcall FilterData (
       [out retval] UCHAR ppData[]*
     );
     [id(1610743820), propput]
     HRESULT __stdcall FilterData (
       [in] UCHAR argNo1[]
     );
     [id(1610743822)]
     HRESULT __stdcall Query (
       [in] BSTR bstrName,
       [in] BSTR bstrServer
     );
     HRESULT __stdcall Resolve (
       [in] IDispatch * pFrom
     );
     HRESULT __stdcall SetSecurity (
       [in] BSTR Sddl
     );
     HRESULT __stdcall GetSecurity (
       [in] UINT SecurityInfo,
       [out retval] BSTR *Sddl
     );
     HRESULT __stdcall GetRegisteredProcesses (
       [out] dispinterface IValueMap **Processes
     );
   };
   [
     uuid(03837514-098B-11D8-9414-505054503030),
     dual,
     oleautomation,
     dispatchable
   ]
   dispinterface IConfigurationDataCollector : IDataCollector
   {
     [id(1610809344), propget]
     HRESULT __stdcall FileMaxCount (
       [out retval] UINT *Count
     );
     [id(1610809344), propput]
     HRESULT __stdcall FileMaxCount (
       [in] UINT argNo1
     );
     [id(1610809346), propget]
     HRESULT __stdcall FileMaxRecursiveDepth (
       [out retval] UINT *depth
     );
     [id(1610809346), propput]
     HRESULT __stdcall FileMaxRecursiveDepth (
       [in] UINT argNo1
     );
     [id(1610809348), propget]
     HRESULT __stdcall FileMaxTotalSize (
       [out retval] UINT *size
     );
     [id(1610809348), propput]
     HRESULT __stdcall FileMaxTotalSize (
       [in] UINT argNo1
     );
     [id(1610809350), propget]
     HRESULT __stdcall Files (
       [out retval] BSTR Files[]*
     );
     [id(1610809350), propput]
     HRESULT __stdcall Files (
       [in] BSTR argNo1[]
     );
     [id(1610809352), propget]
     HRESULT __stdcall ManagementQueries (
       [out retval] BSTR Queries[]*
     );
     [id(1610809352), propput]
     HRESULT __stdcall ManagementQueries (
       [in] BSTR argNo1[]
     );
     [id(1610809354), propget]
     HRESULT __stdcall QueryNetworkAdapters (
       [out retval] WINBOOL *network
     );
     [id(1610809354), propput]
     HRESULT __stdcall QueryNetworkAdapters (
       [in] WINBOOL argNo1
     );
     [id(1610809356), propget]
     HRESULT __stdcall RegistryKeys (
       [out retval] BSTR Query[]*
     );
     [id(1610809356), propput]
     HRESULT __stdcall RegistryKeys (
       [in] BSTR argNo1[]
     );
     [id(1610809358), propget]
     HRESULT __stdcall RegistryMaxRecursiveDepth (
       [out retval] UINT *depth
     );
     [id(1610809358), propput]
     HRESULT __stdcall RegistryMaxRecursiveDepth (
       [in] UINT argNo1
     );
     [id(1610809360), propget]
     HRESULT __stdcall SystemStateFile (
       [out retval] BSTR *FileName
     );
     [id(1610809360), propput]
     HRESULT __stdcall SystemStateFile (
       [in] BSTR argNo1
     );
   };
   [
     uuid(03837516-098B-11D8-9414-505054503030),
     dual,
     oleautomation,
     dispatchable
   ]
   dispinterface IAlertDataCollector : IDataCollector
   {
     [id(1610809344), propget]
     HRESULT __stdcall AlertThresholds (
       [out retval] BSTR alerts[]*
     );
     [id(1610809344), propput]
     HRESULT __stdcall AlertThresholds (
       [in] BSTR argNo1[]
     );
     [id(1610809346), propget]
     HRESULT __stdcall EventLog (
       [out retval] WINBOOL *log
     );
     [id(1610809346), propput]
     HRESULT __stdcall EventLog (
       [in] WINBOOL argNo1
     );
     [id(1610809348), propget]
     HRESULT __stdcall SampleInterval (
       [out retval] UINT *interval
     );
     [id(1610809348), propput]
     HRESULT __stdcall SampleInterval (
       [in] UINT argNo1
     );
     [id(1610809350), propget]
     HRESULT __stdcall Task (
       [out retval] BSTR *Task
     );
     [id(1610809350), propput]
     HRESULT __stdcall Task (
       [in] BSTR argNo1
     );
     [id(1610809352), propget]
     HRESULT __stdcall TaskRunAsSelf (
       [out retval] WINBOOL *RunAsSelf
     );
     [id(1610809352), propput]
     HRESULT __stdcall TaskRunAsSelf (
       [in] WINBOOL argNo1
     );
     [id(1610809354), propget]
     HRESULT __stdcall TaskArguments (
       [out retval] BSTR *Task
     );
     [id(1610809354), propput]
     HRESULT __stdcall TaskArguments (
       [in] BSTR argNo1
     );
     [id(1610809356), propget]
     HRESULT __stdcall TaskUserTextArguments (
       [out retval] BSTR *Task
     );
     [id(1610809356), propput]
     HRESULT __stdcall TaskUserTextArguments (
       [in] BSTR argNo1
     );
     [id(1610809358), propget]
     HRESULT __stdcall TriggerDataCollectorSet (
       [out retval] BSTR *name
     );
     [id(1610809358), propput]
     HRESULT __stdcall TriggerDataCollectorSet (
       [in] BSTR argNo1
     );
   };
   [
     uuid(0383751A-098B-11D8-9414-505054503030),
     dual,
     oleautomation,
     dispatchable
   ]
   dispinterface IApiTracingDataCollector : IDataCollector
   {
     [id(1610809344), propget]
     HRESULT __stdcall LogApiNamesOnly (
       [out retval] WINBOOL *logapinames
     );
     [id(1610809344), propput]
     HRESULT __stdcall LogApiNamesOnly (
       [in] WINBOOL argNo1
     );
     [id(1610809346), propget]
     HRESULT __stdcall LogApisRecursively (
       [out retval] WINBOOL *logrecursively
     );
     [id(1610809346), propput]
     HRESULT __stdcall LogApisRecursively (
       [in] WINBOOL argNo1
     );
     [id(1610809348), propget]
     HRESULT __stdcall ExePath (
       [out retval] BSTR *ExePath
     );
     [id(1610809348), propput]
     HRESULT __stdcall ExePath (
       [in] BSTR argNo1
     );
     [id(1610809350), propget]
     HRESULT __stdcall LogFilePath (
       [out retval] BSTR *LogFilePath
     );
     [id(1610809350), propput]
     HRESULT __stdcall LogFilePath (
       [in] BSTR argNo1
     );
     [id(1610809352), propget]
     HRESULT __stdcall IncludeModules (
       [out retval] BSTR IncludeModules[]*
     );
     [id(1610809352), propput]
     HRESULT __stdcall IncludeModules (
       [in] BSTR argNo1[]
     );
     [id(1610809354), propget]
     HRESULT __stdcall IncludeApis (
       [out retval] BSTR IncludeApis[]*
     );
     [id(1610809354), propput]
     HRESULT __stdcall IncludeApis (
       [in] BSTR argNo1[]
     );
     [id(1610809356), propget]
     HRESULT __stdcall ExcludeApis (
       [out retval] BSTR ExcludeApis[]*
     );
     [id(1610809356), propput]
     HRESULT __stdcall ExcludeApis (
       [in] BSTR argNo1[]
     );
   };
   [
     uuid(03837524-098B-11D8-9414-505054503030),
     dual,
     nonextensible,
     oleautomation,
     dispatchable
   ]
   dispinterface IDataCollectorSetCollection : IDispatch
   {
     [id(1), propget]
     HRESULT __stdcall Count (
       [out retval] long *retVal
     );
     [id(0), propget]
     HRESULT __stdcall Item (
       [in] VARIANT Index,
       [out retval] dispinterface IDataCollectorSet **set
     );
     [id(-4), propget]
     HRESULT __stdcall _NewEnum (
       [out retval] IUnknown **retVal
     );
     [id(1610743811)]
     HRESULT __stdcall Add (
       dispinterface IDataCollectorSet *set
     );
     HRESULT __stdcall Remove (
       VARIANT set
     );
     HRESULT __stdcall Clear (void);
     HRESULT __stdcall AddRange (
       dispinterface IDataCollectorSetCollection *sets
     );
     HRESULT __stdcall GetDataCollectorSets (
       [in] BSTR Server,
       [in] BSTR filter
     );
   };

};

