6 Appendix A: Full IDL
For ease of implementation, the full IDL is provided as follows, where "ms-dcom.idl" refers to the IDL found in [MS-DCOM] Appendix A, "ms-dtyp.idl" refers to the IDL found in [MS-DTYP] Appendix A, and "ms-oaut.idl" refers to the IDL found in [MS-OAUT] Appendix A.
The syntax uses the IDL syntax extensions, as specified in [MS-RPCE] sections 2.2.4 and 3.1.1.5.1, and the Automation IDL syntax extensions specified in [MS-OAUT] section 2.2.49. For example, as noted in [MS-RPCE] section 2.2.4.9, a pointer_default declaration is not required and pointer_default(unique) is assumed.
-
import "ms-dcom.idl"; import "ms-dtyp.idl"; import "ms-oaut.idl"; typedef struct { DWORD cCalls; DWORD cComponentInstances; DWORD cComponents; DWORD cCallsPerSecond; } ContainerStatistics; typedef struct { DWORD dwLegacyId; WCHAR wszApplicationIdentifier[40]; DWORD dwProcessId; ContainerStatistics statistics; } ContainerData; typedef struct { GUID clsid; DWORD cTotalReferences; DWORD cBoundReferences; DWORD cPooledInstances; DWORD cInstancesInCall; DWORD dwResponseTime; DWORD cCallsCompleted; DWORD cCallsFailed; } ComponentData; [ object, uuid(B60040E0-BCF3-11D1-861D-0080C729264D), pointer_default(unique) ] interface IGetTrackingData: IUnknown { HRESULT Opnum3NotUsedOnWire(); HRESULT GetContainerData( [out] DWORD* nContainers, [out, size_is(,(*nContainers))] ContainerData** aContainerData ); HRESULT GetComponentDataByContainer( [in] DWORD idContainer, [out] DWORD* nComponents, [out, size_is(,*nComponents)] ComponentData** aComponentData ); HRESULT GetComponentDataByContainerAndCLSID( [in] DWORD idContainer, [in] GUID clsid, [out] ComponentData** ppComponentData ); HRESULT Opnum7NotUsedOnWire(); }; [ object, uuid(4E6CDCC9-FB25-4FD5-9CC5-C9F4B6559CEC), pointer_default(unique) ] interface IComTrackingInfoEvents: IUnknown { HRESULT OnNewTrackingInfo( [in] IUnknown* pToplevelCollection ); }; [ object, uuid(23C9DD26-2355-4FE2-84DE-F779A238ADBD), dual ] interface IProcessDump: IDispatch { [id(1)] HRESULT IsSupported(); [id(2)] HRESULT DumpProcess( [in] BSTR bstrContainerID, [in] BSTR bstrDirectory, [in] DWORD dwMaxFiles, [out,retval] BSTR* pbstrDumpFile ); };