508 lines
19 KiB
Plaintext
508 lines
19 KiB
Plaintext
|
|
cpp_quote ("/*++")
|
|
cpp_quote(" ")
|
|
cpp_quote("Copyright (c) 1997 Microsoft Corporation")
|
|
cpp_quote(" ")
|
|
cpp_quote("Module Name: iadm.h")
|
|
cpp_quote(" ")
|
|
cpp_quote(" Admin Objects Interfaces")
|
|
cpp_quote(" ")
|
|
cpp_quote ("--*/")
|
|
cpp_quote("#ifndef _ADM_IADM_")
|
|
cpp_quote("#define _ADM_IADM_")
|
|
|
|
import "mddef.idl";
|
|
|
|
import "unknwn.idl";
|
|
import "wtypes.idl";
|
|
import "objidl.idl";
|
|
import "ocidl.idl";
|
|
import "iiscblob.h"; // Removed by POSTMIDL.SCR after IADM.H is generated!
|
|
|
|
cpp_quote("#include <mdcommsg.h>")
|
|
cpp_quote("#include <mdmsg.h>")
|
|
|
|
cpp_quote("/* ")
|
|
cpp_quote(" Error Codes ")
|
|
cpp_quote(" ")
|
|
cpp_quote(" Admin api's all return HRESULTS. Since internal results are either ")
|
|
cpp_quote(" winerrors or Metadata specific return codes (see mdmsg.h), they are ")
|
|
cpp_quote(" converted to HRESULTS using the RETURNCODETOHRESULT macro (see ")
|
|
cpp_quote(" commsg.h). ")
|
|
cpp_quote("*/ ")
|
|
|
|
cpp_quote(" ")
|
|
|
|
|
|
cpp_quote("/* ")
|
|
cpp_quote(" Max Name Length ")
|
|
cpp_quote(" The maximum number of characters in the length of a metaobject name, ")
|
|
cpp_quote(" including the terminating NULL. This refers to each node in the tree, ")
|
|
cpp_quote(" not the entire path. ")
|
|
cpp_quote(" eg. strlen(\"Root\") < ADMINDATA_MAX_NAME_LEN ")
|
|
cpp_quote("*/ ")
|
|
|
|
#define ADMINDATA_MAX_NAME_LEN 256
|
|
cpp_quote("#define ADMINDATA_MAX_NAME_LEN 256")
|
|
|
|
cpp_quote(" ")
|
|
|
|
cpp_quote("DEFINE_GUID(CLSID_MSAdminBase, 0x88e4ba60, 0x537b, 0x11d0, 0x9b, 0x8e, 0x0, 0xa0, 0xc9, 0x22, 0xe7, 0x3);")
|
|
cpp_quote("DEFINE_GUID(IID_IMSAdminBase, 0xcba424f0, 0x483a, 0x11d0, 0x9d, 0x2a, 0x0,0xa0, 0xc9, 0x22, 0xe7, 0x3);")
|
|
cpp_quote("DEFINE_GUID(CLSID_MSAdminBaseExe, 0xdf380700, 0x537d, 0x11d0, 0x9b, 0x8e, 0x0, 0xa0, 0xc9, 0x22, 0xe7, 0x3);")
|
|
cpp_quote("DEFINE_GUID(CLSID_MSAdmin, 0x668583f0, 0x6fdb, 0x11d0, 0xb9, 0xb0, 0x0, 0xa0, 0xc9, 0x22, 0xe7, 0x50);")
|
|
|
|
cpp_quote("DEFINE_GUID(IID_IMSAdminBaseSink, 0x1e056350, 0x761e, 0x11d0, 0x9b, 0xa1, 0x0, 0xa0, 0xc9, 0x22, 0xe7, 0x03);")
|
|
|
|
cpp_quote("DEFINE_GUID(IID_IMSMetaBase, 0xc1bea50, 0x4fd7, 0x11d0, 0xb9, 0xac, 0x0, 0xa0, 0xc9, 0x22, 0xe7, 0x50);")
|
|
cpp_quote("DEFINE_GUID(IID_IMSMetaDataItem, 0x3e31f00, 0x627c, 0x11d0, 0xb9, 0xad, 0x0, 0xa0, 0xc9, 0x22, 0xe7, 0x50);")
|
|
cpp_quote("DEFINE_GUID(IID_IMSMetaKey, 0x34617b10, 0x7fbc, 0x11d0, 0xb9, 0xb1, 0x0, 0xa0, 0xc9, 0x22, 0xe7, 0x50);")
|
|
//cpp_quote("DEFINE_GUID(DIID_IMSAdminSCRIPT, 0x850f0fa0, 0x4fd5, 0x11d0, 0xb9, 0xac, 0x0, 0xa0, 0xc9, 0x22, 0xe7, 0x50);")
|
|
cpp_quote("DEFINE_GUID(LIBID_MSAdmin, 0x1b890330, 0x4f09, 0x11d0, 0xb9, 0xac, 0x0, 0xa0, 0xc9, 0x22, 0xe7, 0x50);")
|
|
|
|
|
|
cpp_quote("#define GETAdminBaseCLSID(IsService) ((IsService) ? CLSID_MSAdminBase : CLSID_MSAdminBaseExe)")
|
|
|
|
cpp_quote("/* ")
|
|
cpp_quote("The Main Interface ")
|
|
cpp_quote("*/ ")
|
|
|
|
|
|
[
|
|
object,
|
|
uuid(CBA424F0-483A-11D0-9D2A-00A0C922E703),
|
|
pointer_default(unique)
|
|
]
|
|
|
|
interface IMSAdminBase : IUnknown {
|
|
|
|
// Interfaces
|
|
|
|
HRESULT AddKey([in] METADATA_HANDLE hMDHandle,
|
|
[unique, in, string] unsigned char *pszMDPath);
|
|
|
|
HRESULT DeleteKey([in] METADATA_HANDLE hMDHandle,
|
|
[unique, in, string] unsigned char *pszMDPath);
|
|
|
|
HRESULT DeleteChildKeys([in] METADATA_HANDLE hMDHandle,
|
|
[unique, in, string] unsigned char *pszMDPath);
|
|
|
|
HRESULT EnumKeys([in] METADATA_HANDLE hMDHandle,
|
|
[unique, in, string] unsigned char *pszMDPath,
|
|
[out, size_is(ADMINDATA_MAX_NAME_LEN)] unsigned char *pszMDName,
|
|
[in] DWORD dwMDEnumObjectIndex);
|
|
|
|
HRESULT CopyKey([in] METADATA_HANDLE hMDSourceHandle,
|
|
[unique, in, string] unsigned char *pszMDSourcePath,
|
|
[in] METADATA_HANDLE hMDDestHandle,
|
|
[unique, in, string] unsigned char *pszMDDestPath,
|
|
[in] BOOL bMDOverwriteFlag,
|
|
[in] BOOL bMDCopyFlag);
|
|
|
|
HRESULT RenameKey([in] METADATA_HANDLE hMDHandle,
|
|
[unique, in, string] unsigned char *pszMDPath,
|
|
[unique, in, string] unsigned char *pszMDNewName);
|
|
|
|
[local]
|
|
HRESULT SetData([in] METADATA_HANDLE hMDHandle,
|
|
[unique, in, string] unsigned char *pszMDPath,
|
|
[in] PMETADATA_RECORD pmdrMDData);
|
|
|
|
[call_as(SetData)]
|
|
HRESULT R_SetData([in] METADATA_HANDLE hMDHandle,
|
|
[unique, in, string] unsigned char *pszMDPath,
|
|
[in] PMETADATA_RECORD pmdrMDData);
|
|
|
|
[local]
|
|
HRESULT GetData([in] METADATA_HANDLE hMDHandle,
|
|
[unique, in, string] unsigned char *pszMDPath,
|
|
[in, out] PMETADATA_RECORD pmdrMDData,
|
|
[out] DWORD *pdwMDRequiredDataLen);
|
|
|
|
[call_as(GetData)]
|
|
HRESULT R_GetData([in] METADATA_HANDLE hMDHandle,
|
|
[unique, in, string] unsigned char *pszMDPath,
|
|
[in, out] PMETADATA_RECORD pmdrMDData,
|
|
[out] DWORD *pdwMDRequiredDataLen,
|
|
[out] struct _IIS_CRYPTO_BLOB **ppDataBlob);
|
|
|
|
HRESULT DeleteData([in] METADATA_HANDLE hMDHandle,
|
|
[unique, in, string] unsigned char *pszMDPath,
|
|
[in] DWORD dwMDIdentifier,
|
|
[in] DWORD dwMDDataType);
|
|
|
|
[local]
|
|
HRESULT EnumData([in] METADATA_HANDLE hMDHandle,
|
|
[unique, in, string] unsigned char *pszMDPath,
|
|
[in, out] PMETADATA_RECORD pmdrMDData,
|
|
[in] DWORD dwMDEnumDataIndex,
|
|
[out] DWORD *pdwMDRequiredDataLen);
|
|
|
|
[call_as(EnumData)]
|
|
HRESULT R_EnumData([in] METADATA_HANDLE hMDHandle,
|
|
[unique, in, string] unsigned char *pszMDPath,
|
|
[in, out] PMETADATA_RECORD pmdrMDData,
|
|
[in] DWORD dwMDEnumDataIndex,
|
|
[out] DWORD *pdwMDRequiredDataLen,
|
|
[out] struct _IIS_CRYPTO_BLOB **ppDataBlob);
|
|
|
|
[local]
|
|
HRESULT GetAllData([in] METADATA_HANDLE hMDHandle,
|
|
[unique, in, string] unsigned char *pszMDPath,
|
|
[in] DWORD dwMDAttributes,
|
|
[in] DWORD dwMDUserType,
|
|
[in] DWORD dwMDDataType,
|
|
[out] DWORD *pdwMDNumDataEntries,
|
|
[out] DWORD *pdwMDDataSetNumber,
|
|
[in] DWORD dwMDBufferSize,
|
|
[out, size_is(dwMDBufferSize)] unsigned char *pbBuffer,
|
|
[out] DWORD *pdwMDRequiredBufferSize);
|
|
|
|
[call_as(GetAllData)]
|
|
HRESULT R_GetAllData([in] METADATA_HANDLE hMDHandle,
|
|
[unique, in, string] unsigned char *pszMDPath,
|
|
[in] DWORD dwMDAttributes,
|
|
[in] DWORD dwMDUserType,
|
|
[in] DWORD dwMDDataType,
|
|
[out] DWORD *pdwMDNumDataEntries,
|
|
[out] DWORD *pdwMDDataSetNumber,
|
|
[in] DWORD dwMDBufferSize,
|
|
[out] DWORD *pdwMDRequiredBufferSize,
|
|
[out] struct _IIS_CRYPTO_BLOB **ppDataBlob);
|
|
|
|
HRESULT DeleteAllData([in] METADATA_HANDLE hMDHandle,
|
|
[unique, in, string] unsigned char *pszMDPath,
|
|
[in] DWORD dwMDUserType,
|
|
[in] DWORD dwMDDataType);
|
|
|
|
HRESULT CopyData([in] METADATA_HANDLE hMDSourceHandle,
|
|
[unique, in, string] unsigned char *pszMDSourcePath,
|
|
[in] METADATA_HANDLE hMDDestHandle,
|
|
[unique, in, string] unsigned char *pszMDDestPath,
|
|
[in] DWORD dwMDAttributes,
|
|
[in] DWORD dwMDUserType,
|
|
[in] DWORD dwMDDataType,
|
|
[in] BOOL bMDCopyFlag);
|
|
/*
|
|
HRESULT SetReferenceObject([in] METADATA_HANDLE hMDReferenceHandle,
|
|
[unique, in, string] unsigned char *pszMDReferencePath,
|
|
[in] METADATA_HANDLE hMDSubjectHandle,
|
|
[unique, in, string] unsigned char *pszMDSubjectPath);
|
|
*/
|
|
|
|
HRESULT OpenKey([in] METADATA_HANDLE hMDHandle,
|
|
[unique, in, string] unsigned char *pszMDPath,
|
|
[in] DWORD dwMDAccessRequested,
|
|
[in] DWORD dwMDTimeOut,
|
|
[out] PMETADATA_HANDLE phMDNewHandle);
|
|
|
|
HRESULT CloseKey([in] METADATA_HANDLE hMDHandle);
|
|
|
|
HRESULT ChangePermissions([in] METADATA_HANDLE hMDHandle,
|
|
[in] DWORD dwMDTimeOut,
|
|
[in] DWORD dwMDAccessRequested);
|
|
|
|
HRESULT SaveData();
|
|
|
|
HRESULT GetHandleInfo([in] METADATA_HANDLE hMDHandle,
|
|
[out] PMETADATA_HANDLE_INFO pmdhiInfo);
|
|
|
|
HRESULT GetSystemChangeNumber([out] DWORD *pdwSystemChangeNumber);
|
|
|
|
HRESULT GetDataSetNumber([in] METADATA_HANDLE hMDHandle,
|
|
[unique, in, string] unsigned char *pszMDPath,
|
|
[out] DWORD *pdwMDDataSetNumber);
|
|
|
|
HRESULT ReleaseReferenceData([in] DWORD dwMDDataTag);
|
|
|
|
HRESULT SetLastChangeTime([in] METADATA_HANDLE hMDHandle,
|
|
[unique, in, string] unsigned char *pszMDPath,
|
|
[in] PFILETIME pftMDLastChangeTime,
|
|
[in] BOOL bLocalTime);
|
|
|
|
HRESULT GetLastChangeTime([in] METADATA_HANDLE hMDHandle,
|
|
[unique, in, string] unsigned char *pszMDPath,
|
|
[out] PFILETIME pftMDLastChangeTime,
|
|
[in] BOOL bLocalTime);
|
|
|
|
[local, restricted]
|
|
HRESULT KeyExchangePhase1();
|
|
|
|
[local, restricted]
|
|
HRESULT KeyExchangePhase2();
|
|
|
|
[call_as(KeyExchangePhase1)]
|
|
HRESULT R_KeyExchangePhase1(
|
|
[unique, in] struct _IIS_CRYPTO_BLOB *pClientKeyExchangeKeyBlob,
|
|
[unique, in] struct _IIS_CRYPTO_BLOB *pClientSignatureKeyBlob,
|
|
[out] struct _IIS_CRYPTO_BLOB **ppServerKeyExchangeKeyBlob,
|
|
[out] struct _IIS_CRYPTO_BLOB **ppServerSignatureKeyBlob,
|
|
[out] struct _IIS_CRYPTO_BLOB **ppServerSessionKeyBlob
|
|
);
|
|
|
|
[call_as(KeyExchangePhase2)]
|
|
HRESULT R_KeyExchangePhase2(
|
|
[unique, in] struct _IIS_CRYPTO_BLOB *pClientSessionKeyBlob,
|
|
[unique, in] struct _IIS_CRYPTO_BLOB *pClientHashBlob,
|
|
[out] struct _IIS_CRYPTO_BLOB **ppServerHashBlob
|
|
);
|
|
|
|
};
|
|
|
|
//LIBID_MSAdmin
|
|
[
|
|
uuid(1B890330-4F09-11d0-B9AC-00A0C922E750)
|
|
, helpstring("IIS Admin Objects Type Library")
|
|
, lcid(0x0000)
|
|
, version(1.0)
|
|
]
|
|
library MSAdminTypeLibrary
|
|
{
|
|
importlib("STDOLE2.TLB");
|
|
|
|
[
|
|
dual,
|
|
object,
|
|
uuid(03E31F00-627C-11d0-B9AD-00A0C922E750),
|
|
oleautomation
|
|
]
|
|
interface IMSMetaDataItem : IDispatch {
|
|
|
|
[propget, id(0), helpstring("Return Data Identifier.")]
|
|
HRESULT Identifier(
|
|
[out, retval] long *pdwIdentifier);
|
|
|
|
[propput, helpstring("Set Data Identifier.")]
|
|
HRESULT Identifier(
|
|
[in] long dwIdentifier);
|
|
|
|
[propget, helpstring("Return Data Attributes.")]
|
|
HRESULT Attributes(
|
|
[out, retval] long *pdwAttributes);
|
|
|
|
[propput, helpstring("Set Data Attributes.")]
|
|
HRESULT Attributes(
|
|
[in] long dwAttributes);
|
|
|
|
[propget, helpstring("Return Inherit Attribute.")]
|
|
HRESULT InheritAttribute(
|
|
[out, retval] BOOL *pbInherit);
|
|
|
|
[propput, helpstring("Set Inherit Attribute.")]
|
|
HRESULT InheritAttribute(
|
|
[in] BOOL bInherit);
|
|
|
|
[propget, helpstring("Return Partial Path Attribute.")]
|
|
HRESULT ParialPathAttribute(
|
|
[out, retval] BOOL *pbParialPath);
|
|
|
|
[propput, helpstring("Get Parial Path Attribute.")]
|
|
HRESULT PartialPathAttribute(
|
|
[in] BOOL bPartialPath);
|
|
|
|
[propget, helpstring("Return Secure Attribute.")]
|
|
HRESULT SecureAttribute(
|
|
[out, retval] BOOL *pbSecure);
|
|
|
|
[propput, helpstring("Get Secure Attribute.")]
|
|
HRESULT SecureAttribute(
|
|
[in] BOOL bSecure);
|
|
|
|
[propget, helpstring("Return Reference Attribute.")]
|
|
HRESULT ReferenceAttribute(
|
|
[out, retval] BOOL *pbReference);
|
|
|
|
[propput, helpstring("Get Reference Attribute.")]
|
|
HRESULT ReferenceAttribute(
|
|
[in] BOOL bReference);
|
|
|
|
[propget, helpstring("Return Data User Type.")]
|
|
HRESULT UserType(
|
|
[out, retval] long *pdwUserType);
|
|
|
|
[propput, helpstring("Set Data User Type.")]
|
|
HRESULT UserType(
|
|
[in] long dwUserType);
|
|
|
|
[propget, helpstring("Return Data Type.")]
|
|
HRESULT DataType(
|
|
[out, retval] long *pdwDataType);
|
|
|
|
[propput, helpstring("Set Data Type.")]
|
|
HRESULT DataType(
|
|
[in] long dwDataType);
|
|
|
|
// [propget, helpstring("Return Data Length.")]
|
|
// HRESULT GetDataLen(
|
|
// [out, retval] long *pdwDataLen);
|
|
|
|
// [propput, helpstring("Set Data Length.")]
|
|
// HRESULT SetDataLen(
|
|
// [in] long dwDataLen);
|
|
|
|
[propget, helpstring("Return Data.")]
|
|
HRESULT Value(
|
|
[out, retval] VARIANTARG *pvaData);
|
|
|
|
[propput, helpstring("Set Data.")]
|
|
HRESULT Value(
|
|
[in] VARIANTARG *pvaData);
|
|
}
|
|
|
|
// {34617B10-7FBC-11d0-B9B1-00A0C922E750}
|
|
//static const GUID <<name>> =
|
|
//{ 0x34617b10, 0x7fbc, 0x11d0, { 0xb9, 0xb1, 0x0, 0xa0, 0xc9, 0x22, 0xe7, 0x50 } };
|
|
|
|
[
|
|
dual,
|
|
object,
|
|
uuid(34617B10-7FBC-11d0-B9B1-00A0C922E750),
|
|
oleautomation
|
|
]
|
|
interface IMSMetaKey : IDispatch {
|
|
|
|
HRESULT AddKey([in, optional] VARIANTARG *pvaPath);
|
|
|
|
HRESULT DeleteKey([in, optional] VARIANTARG *pvaPath);
|
|
|
|
HRESULT DeleteChildKeys([in, optional] VARIANTARG *pvaPath);
|
|
|
|
HRESULT EnumKeys([out] VARIANTARG *pvaName,
|
|
[in] long dwEnumObjectIndex,
|
|
[in, optional] VARIANTARG *pvaPath);
|
|
|
|
[propget, helpstring("Return Data Object.")]
|
|
HRESULT DataItem([out, retval] IMSMetaDataItem **ppmdiData);
|
|
|
|
HRESULT SetData([in] IMSMetaDataItem *pmdiData,
|
|
[in, optional] VARIANTARG *pvaPath);
|
|
|
|
HRESULT GetData([out][in] IMSMetaDataItem **ppmdiData,
|
|
[in, optional] VARIANTARG *pvaPath);
|
|
|
|
HRESULT DeleteData([in] long dwIdentifier,
|
|
[in] long dwDataType,
|
|
[in, optional] VARIANTARG *pvaPath);
|
|
|
|
HRESULT EnumData([in, out] IMSMetaDataItem **ppmdiData,
|
|
[in] long dwEnumDataIndex,
|
|
[in, optional] VARIANTARG *pvaPath);
|
|
|
|
HRESULT GetAllData([in] long dwAttributes,
|
|
[in] long dwUserType,
|
|
[in] long dwDataType,
|
|
[out] long *pdwDataSetNumber,
|
|
[out] VARIANTARG *pvaDataObjectsArray,
|
|
[in, optional] VARIANTARG *pvaPath);
|
|
|
|
HRESULT DeleteAllData([in] long dwUserType,
|
|
[in] long dwDataType,
|
|
[in, optional] VARIANTARG *pvaPath);
|
|
|
|
HRESULT OpenKey([in] long dwAccessRequested,
|
|
[in, optional] VARIANTARG vaTimeOut,
|
|
[in, optional] VARIANTARG *pvaPath,
|
|
[out, retval] IMSMetaKey **ppmkKey);
|
|
|
|
HRESULT Close();
|
|
|
|
HRESULT ChangePermissions([in] long dwAccessRequested,
|
|
[in, optional] VARIANTARG vaTimeOut);
|
|
|
|
HRESULT GetKeyInfo([out] long *dwPermissions,
|
|
[out] long *dwSystemChangeNumber);
|
|
|
|
HRESULT GetDataSetNumber([out] long *pdwDataSetNumber,
|
|
[in, optional] VARIANTARG *pvaPath);
|
|
|
|
HRESULT SetLastChangeTime([in] DATE dLastChangeTime,
|
|
[in, optional] VARIANTARG vaLocalTime,
|
|
[in, optional] VARIANTARG *pvaPath);
|
|
|
|
HRESULT GetLastChangeTime([out] DATE *pdLastChangeTime,
|
|
[in, optional] VARIANTARG vaLocalTime,
|
|
[in, optional] VARIANTARG *pvaPath);
|
|
}
|
|
|
|
|
|
[
|
|
dual,
|
|
object,
|
|
uuid(0C1BEA50-4FD7-11d0-B9AC-00A0C922E750),
|
|
oleautomation
|
|
]
|
|
interface IMSMetaBase : IDispatch {
|
|
|
|
HRESULT CopyKey([in] IMSMetaKey *pmkSourceKey,
|
|
[in] IMSMetaKey *pmkDestKey,
|
|
[in] BOOL bOverwriteFlag,
|
|
[in] BOOL bCopyFlag,
|
|
[in, optional] VARIANTARG *pvaSourcePath,
|
|
[in, optional] VARIANTARG *pvaDestPath);
|
|
|
|
HRESULT CopyData([in] IMSMetaKey *pmkSourceKey,
|
|
[in] IMSMetaKey *pmkDestKey,
|
|
[in] long dwAttributes,
|
|
[in] long dwUserType,
|
|
[in] long dwDataType,
|
|
[in] BOOL bCopyFlag,
|
|
[in, optional] VARIANTARG *pvaSourcePath,
|
|
[in, optional] VARIANTARG *pvaDestPath);
|
|
|
|
HRESULT OpenKey([in] long dwAccessRequested,
|
|
[in, optional] VARIANTARG vaTimeOut,
|
|
[in, optional] VARIANTARG *pvaPath,
|
|
[out, retval] IMSMetaKey **ppmkKey);
|
|
|
|
HRESULT FlushData();
|
|
|
|
HRESULT GetSystemChangeNumber([out] VARIANTARG *pdwSystemChangeNumber);
|
|
|
|
}
|
|
|
|
/*
|
|
//DIID_IMSAdminSCRIPT
|
|
[
|
|
uuid(850F0FA0-4FD5-11d0-B9AC-00A0C922E750)
|
|
, helpstring("Definition of dispinterface DIMDCOM")
|
|
]
|
|
dispinterface DIMDCOMSCRIPT
|
|
{
|
|
interface IMDCOMSCRIPT;
|
|
}
|
|
*/
|
|
//CLSID_MSAdminBase
|
|
[
|
|
uuid(668583F0-6FDB-11d0-B9B0-00A0C922E750)
|
|
, helpstring("IIS Admin Objects Type Information")
|
|
]
|
|
coclass MSAdmin
|
|
{
|
|
interface IMSMetaBase;
|
|
interface IMSMetaKey;
|
|
interface IMSMetaDataItem;
|
|
// interface IMSAdmin;
|
|
}
|
|
};
|
|
|
|
//
|
|
// IID_IMSAdminBaseSink
|
|
//
|
|
|
|
[
|
|
object,
|
|
uuid(1E056350-761E-11d0-9BA1-00A0C922E703),
|
|
pointer_default(unique)
|
|
]
|
|
|
|
interface IMSAdminBaseSink:IUnknown
|
|
{
|
|
HRESULT SinkNotify(
|
|
[in] DWORD dwMDNumElements,
|
|
[in, size_is(dwMDNumElements)] MD_CHANGE_OBJECT pcoChangeList[]);
|
|
}
|
|
|
|
|
|
cpp_quote("#endif")
|
|
|