//***************************************************************************** // File: CorReg.H // // Copyright (c) 1996-1998 Microsoft Corporation. All Rights Reserved. // Microsoft Confidential. Public header file for COM+ 1.0 release. //***************************************************************************** #ifndef _CORREG_H_ #pragma option push -b -a8 -pc -A- /*P_O_Push*/ #define _CORREG_H_ #if _MSC_VER >= 1000 #pragma once #endif // _MSC_VER >= 1000 //***************************************************************************** // Required includes #include // Definitions of OLE types. //***************************************************************************** #ifdef __cplusplus extern "C" { #endif // Force 1 byte alignment for structures which must match. #include #ifndef NODLLIMPORT #define DLLIMPORT __declspec(dllimport) #else #define DLLIMPORT #endif //***************************************************************************** //***************************************************************************** // // D L L P U B L I C E N T R Y P O I N T D E C L A R A T I O N S // //***************************************************************************** //***************************************************************************** #if !defined(_META_DATA_NO_SCOPE_) || defined(_META_DATA_SCOPE_WRAPPER_) //@todo: take out for RTM STDAPI CoGetCor(REFIID riid, void** ppv); #endif STDAPI CoInitializeCor(DWORD fFlags); STDAPI_(void) CoUninitializeCor(void); //***************************************************************************** //***************************************************************************** // // M E T A - D A T A D E C L A R A T I O N S // //***************************************************************************** //***************************************************************************** // Token definitions typedef __int32 mdScope; // scope token #define mdScopeNil ((mdScope)0) typedef __int32 mdToken; // Generic token typedef __int32 mdModule; // Module token (roughly, a scope) typedef __int32 mdTypeDef; // TypeDef in this scope typedef __int32 mdInterfaceImpl; // interface implementation token typedef __int32 mdTypeRef; // TypeRef reference (this or other scope) typedef __int32 mdNamespace; // namespace token typedef __int32 mdCustomValue; // attribute token typedef __int32 mdResource; // CompReg.Resource typedef __int32 mdCocatdef; // CompReg.Cocat typedef __int32 mdCocatImpl; // CompReg.CoclassCat typedef __int32 mdMimeTypeImpl; // CompReg.CoclassMIME typedef __int32 mdFormatImpl; // CompReg.CoclassFormats typedef __int32 mdProgID; // CompReg.RedirectProgID typedef __int32 mdRoleCheck; // CompReg.RoleCheck typedef unsigned long RID; enum CorRegTokenType { mdtTypeDef = 0x00000000, mdtInterfaceImpl = 0x01000000, mdtTypeRef = 0x03000000, mdtNamespace = 0x06000000, mdtCustomValue = 0x07000000, mdtResource = 0x0B000000, mdtCocatImpl = 0x0D000000, mdtMimeTypeImpl = 0x0E000000, mdtFormatImpl = 0x0F000000, mdtProgID = 0x10000000, mdtRoleCheck = 0x11000000, mdtModule = 0x14000000, }; // // Build / decompose tokens. // #define RidToToken(rid,tktype) ((rid) |= (tktype)) #define TokenFromRid(rid,tktype) ((rid) | (tktype)) #define RidFromToken(tk) ((RID) ((tk) & 0x00ffffff)) #define TypeFromToken(tk) ((tk) & 0xff000000) #define mdTokenNil ((mdToken)0) #define mdModuleNil ((mdModule)mdtModule) #define mdTypeDefNil ((mdTypeDef)mdtTypeDef) #define mdInterfaceImplNil ((mdInterfaceImpl)mdtInterfaceImpl) #define mdTypeRefNil ((mdTypeRef)mdtTypeRef) #define mdNamespaceNil ((mdNamespace)mdtNamespace) #define mdCustomValueNil ((mdCustomValue)mdtCustomValue) #define mdResourceNil ((mdResource)mdtResource) #define mdCocatImplNil ((mdCocatImpl)mdtCocatImpl) #define mdMimeTypeImplNil ((mdMimeTypeImpl)mdtMimeTypeImpl) #define mdFormatImplNil ((mdFormatImpl)mdtFormatImpl) #define mdProgIDNil ((mdProgID)mdtProgID) #define mdRoleCheckNil ((mdRoleCheck)mdtRoleCheck) enum CorRegTypeAttr // Used by emit_defineclass { tdPublic = 0x0001, // Class is public scope // Use this mask to retrieve class layout informaiton // 0 is AutoLayout, 0x2 is LayoutSequential, 4 is ExplicitLayout tdLayoutMask = 0x0006, tdAutoLayout = 0x0000, // Class fields are auto-laid out tdLayoutSequential = 0x0002, // Class fields are laid out sequentially tdExplicitLayout = 0x0004, // Layout is supplied explicitly tdWrapperClass = 0x0008, // This is a wrapper class tdFinal = 0x0010, // Class is final tdISSCompat = 0x0020, // InvokeSpecial backwards compatibility // Use tdStringFormatMask to retrieve string information tdStringFormatMask = 0x00c0, tdAnsiClass = 0x0000, // LPTSTR is interpreted as ANSI in this class tdUnicodeClass = 0x0040, // LPTSTR is interpreted as UNICODE tdAutoClass = 0x0080, // LPTSTR is interpreted automatically tdValueClass = 0x0100, // Class has value based semantics tdInterface = 0x0200, // Class is an interface tdAbstract = 0x0400, // Class is abstract tdImport = 0x1000, // Class / interface is imported tdRecord = 0x2000, // Class is a record (no methods or props) tdEnum = 0x4000, // Class is an enum; static final values only tdReserved1 = 0x0800, // reserve bit for internal use // tdReserved2 = 0x8000, // reserve bit for internal use }; enum CorImplementType // Used internally for implements table { itImplements = 0x0000, // Interfaces implemented or parent ifaces itEvents = 0x0001, // Interfaces raised itRequires = 0x0002, itInherits = 0x0004, }; //------------------------------------- //--- Registration support types //------------------------------------- enum CorClassActivateAttr { caaDeferCreate = 0x0001, // supports deferred create caaAppObject = 0x0002, // class is AppObject caaFixedIfaceSet = 0x0004, // interface set is open (use QI) caaIndependentlyCreateable = 0x0100, caaPredefined = 0x0200, // mask for caaLB* caaLoadBalancing = 0x0c00, caaLBNotSupported = 0x0400, caaLBSupported = 0x0800, caaLBNotSpecified = 0x0000, // mask for caaOP* caaObjectPooling = 0x3000, caaOPNotSupported = 0x1000, caaOPSupported = 0x2000, caaOPNotSpecified = 0x0000, // mask for caaJA* caaJITActivation = 0xc000, caaJANotSupported = 0x4000, caaJASupported = 0x8000, caaJANotSpecified = 0x0000, }; enum CorIfaceSvcAttr { mlNone = 0x0001, // Not marshalled mlAutomation = 0x0002, // Standard marshalling mlProxyStub = 0x0004, // Custom marshalling // mask for mlDefer* mlDeferrable = 0x0018, // Methods on this interface are queuable mlDeferNotSupported = 0x0008, mlDeferSupported = 0x0010, mlDeferNotSpecified = 0x0000, }; enum CocatImplAttr { catiaImplements = 0x0001, // coclass implements this category catiaRequires = 0x0002 // coclass requires this category }; enum CorModuleExportAttr { moUsesGetLastError = 0x0001 // Module uses GetLastError }; enum CorModuleRegAttr { rmaCustomReg = 0x0001 }; enum CorRegFormatAttr { rfaSupportsFormat = 0x0001, rfaConvertsFromFormat = 0x0002, rfaConvertsToFormat = 0x0003, rfaDefaultFormat = 0x0004, rfaIsFileExt = 0x0005, rfaIsFileType = 0x0006, rfaIsDataFormat = 0x0007 }; enum CorSynchAttr { sySupported = 0x0001, syRequired = 0x0002, syRequiresNew = 0x0004, syNotSupported = 0x0008, syThreadAffinity = 0x0010 }; enum CorThreadingAttr { taMain = 0x0001, taSTA = 0x0002, taMTA = 0x0004, taNeutral = 0x0008, taBoth = 0x0010 }; enum CorXactionAttr { xaSupported = 0x0001, xaRequired = 0x0002, xaRequiresNew = 0x0004, xaNotSupported = 0x0008, xaNoVote = 0x0010 }; enum CorRoleCheckAttr { rcChecksFor = 0x0001 }; // // Opaque type for an enumeration handle. // typedef void *HCORENUM; // // GetSaveSize accuracy // #ifndef _CORSAVESIZE_DEFINED_ #define _CORSAVESIZE_DEFINED_ enum CorSaveSize { cssAccurate = 0x0000, // Find exact save size, accurate but slower. cssQuick = 0x0001 // Estimate save size, may pad estimate, but faster. }; #endif #define MAX_CLASS_NAME 255 #define MAX_PACKAGE_NAME 255 typedef unsigned __int64 CLASSVERSION; // %%Prototypes: ------------------------------------------------------------- #ifndef DECLSPEC_SELECT_ANY #define DECLSPEC_SELECT_ANY __declspec(selectany) #endif // DECLSPEC_SELECT_ANY // CLSID_Cor: {bee00000-ee77-11d0-a015-00c04fbbb884} extern const GUID DECLSPEC_SELECT_ANY CLSID_Cor = { 0xbee00010, 0xee77, 0x11d0, {0xa0, 0x15, 0x00, 0xc0, 0x4f, 0xbb, 0xb8, 0x84 } }; // CLSID_CorMetaDataDispenser: {E5CB7A31-7512-11d2-89CE-0080C792E5D8} // This is the "Master Dispenser", always guaranteed to be the most recent // dispenser on the machine. extern const GUID DECLSPEC_SELECT_ANY CLSID_CorMetaDataDispenser = { 0xe5cb7a31, 0x7512, 0x11d2, { 0x89, 0xce, 0x0, 0x80, 0xc7, 0x92, 0xe5, 0xd8 } }; // CLSID_CorMetaDataDispenserReg: {435755FF-7397-11d2-9771-00A0C9B4D50C} // Dispenser coclass for version 1.0 meta data. To get the "latest" bind // to CLSID_CorMetaDataDispenser. extern const GUID DECLSPEC_SELECT_ANY CLSID_CorMetaDataDispenserReg = { 0x435755ff, 0x7397, 0x11d2, { 0x97, 0x71, 0x0, 0xa0, 0xc9, 0xb4, 0xd5, 0xc } }; // CLSID_CorMetaDataReg: {87F3A1F5-7397-11d2-9771-00A0C9B4D50C} // For COM+ 1.0 Meta Data, Data Driven Registration extern const GUID DECLSPEC_SELECT_ANY CLSID_CorMetaDataReg = { 0x87f3a1f5, 0x7397, 0x11d2, { 0x97, 0x71, 0x0, 0xa0, 0xc9, 0xb4, 0xd5, 0xc } }; // IID_IMetaDataInternal {02D601BB-C5B9-11d1-93F9-0000F8083460} extern const GUID DECLSPEC_SELECT_ANY IID_IMetaDataInternal = { 0x2d601bb, 0xc5b9, 0x11d1, {0x93, 0xf9, 0x0, 0x0, 0xf8, 0x8, 0x34, 0x60 } }; // {AD93D71D-E1F2-11d1-9409-0000F8083460} extern const GUID DECLSPEC_SELECT_ANY IID_IMetaDataEmitTemp = { 0xad93d71d, 0xe1f2, 0x11d1, {0x94, 0x9, 0x0, 0x0, 0xf8, 0x8, 0x34, 0x60 } }; interface IMetaDataRegEmit; interface IMetaDataRegImport; interface IMetaDataDispenser; // %%Interfaces: ------------------------------------------------------------- //------------------------------------- //--- IMemory //------------------------------------- //--- // IID_IMemory: {06A3EA8A-0225-11d1-BF72-00C04FC31E12} extern const GUID DECLSPEC_SELECT_ANY IID_IMemory = { 0x6a3ea8a, 0x225, 0x11d1, {0xbf, 0x72, 0x0, 0xc0, 0x4f, 0xc3, 0x1e, 0x12 } }; //--- #undef INTERFACE #define INTERFACE IMemory DECLARE_INTERFACE_(IMemory, IUnknown) { // *** IUnknown methods *** STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE; STDMETHOD_(ULONG,AddRef) (THIS) PURE; STDMETHOD_(ULONG,Release) (THIS) PURE; // *** IMemory methods *** STDMETHOD(GetMemory)(void **pMem, ULONG *iSize) PURE; STDMETHOD(SetMemory)(void *pMem, ULONG iSize) PURE; }; //------------------------------------- //--- IMetaDataError //------------------------------------- //--- // {B81FF171-20F3-11d2-8DCC-00A0C9B09C19} extern const GUID DECLSPEC_SELECT_ANY IID_IMetaDataError = { 0xb81ff171, 0x20f3, 0x11d2, { 0x8d, 0xcc, 0x0, 0xa0, 0xc9, 0xb0, 0x9c, 0x19 } }; //--- #undef INTERFACE #define INTERFACE IMetaDataError DECLARE_INTERFACE_(IMetaDataError, IUnknown) { STDMETHOD(OnError)(HRESULT hrError, mdToken token) PURE; }; //------------------------------------- //--- IMapToken //------------------------------------- //--- // IID_IMapToken: {06A3EA8B-0225-11d1-BF72-00C04FC31E12} extern const GUID DECLSPEC_SELECT_ANY IID_IMapToken = { 0x6a3ea8b, 0x225, 0x11d1, {0xbf, 0x72, 0x0, 0xc0, 0x4f, 0xc3, 0x1e, 0x12 } }; //--- #undef INTERFACE #define INTERFACE IMapToken DECLARE_INTERFACE_(IMapToken, IUnknown) { STDMETHOD(Map)(ULONG tkImp, ULONG tkEmit) PURE; }; //------------------------------------- //--- IMetaDataDispenser //------------------------------------- //--- // {B81FF171-20F3-11d2-8DCC-00A0C9B09C19} extern const GUID DECLSPEC_SELECT_ANY IID_IMetaDataDispenser = { 0x809c652e, 0x7396, 0x11d2, { 0x97, 0x71, 0x0, 0xa0, 0xc9, 0xb4, 0xd5, 0xc } }; #undef INTERFACE #define INTERFACE IMetaDataDispenser DECLARE_INTERFACE_(IMetaDataDispenser, IUnknown) { STDMETHOD(DefineScope)( // Return code. REFCLSID rclsid, // [in] What version to create. DWORD dwCreateFlags, // [in] Flags on the create. REFIID riid, // [in] The interface desired. IUnknown **ppIUnk) PURE; // [out] Return interface on success. STDMETHOD(OpenScope)( // Return code. LPCWSTR szScope, // [in] The scope to open. DWORD dwOpenFlags, // [in] Open mode flags. REFIID riid, // [in] The interface desired. IUnknown **ppIUnk) PURE; // [out] Return interface on success. STDMETHOD(OpenScopeOnStream)( // Return code. IStream *pIStream, // [in] The scope to open. DWORD dwOpenFlags, // [in] Open mode flags. REFIID riid, // [in] The interface desired. IUnknown **ppIUnk) PURE; // [out] Return interface on success. STDMETHOD(OpenScopeOnMemory)( // Return code. LPCVOID pData, // [in] Location of scope data. ULONG cbData, // [in] Size of the data pointed to by pData. DWORD dwOpenFlags, // [in] Open mode flags. REFIID riid, // [in] The interface desired. IUnknown **ppIUnk) PURE; // [out] Return interface on success. }; //------------------------------------- //--- IMetaDataRegEmit //------------------------------------- //--- #if defined(_META_DATA_NO_SCOPE_) || defined(_META_DATA_SCOPE_WRAPPER_) // {601C95B9-7398-11d2-9771-00A0C9B4D50C} extern const GUID DECLSPEC_SELECT_ANY IID_IMetaDataRegEmit = { 0x601c95b9, 0x7398, 0x11d2, { 0x97, 0x71, 0x0, 0xa0, 0xc9, 0xb4, 0xd5, 0xc } }; extern const GUID DECLSPEC_SELECT_ANY IID_IMetaDataRegEmitOld = { 0xf28f419b, 0x62ca, 0x11d2, { 0x8f, 0x2c, 0x0, 0xa0, 0xc9, 0xa6, 0x18, 0x6d } }; //--- #undef INTERFACE #define INTERFACE IMetaDataRegEmit DECLARE_INTERFACE_(IMetaDataRegEmit, IUnknown) { STDMETHOD(SetModuleProps)( // S_OK or error. LPCWSTR szName, // [IN] If not NULL, the name to set. const GUID *ppid, // [IN] If not NULL, the GUID to set. LCID lcid) PURE; // [IN] If not -1, the lcid to set. STDMETHOD(Save)( // S_OK or error. LPCWSTR szFile, // [IN] The filename to save to. DWORD dwSaveFlags) PURE; // [IN] Flags for the save. STDMETHOD(SaveToStream)( // S_OK or error. IStream *pIStream, // [IN] A writable stream to save to. DWORD dwSaveFlags) PURE; // [IN] Flags for the save. STDMETHOD(GetSaveSize)( // S_OK or error. CorSaveSize fSave, // [IN] cssAccurate or cssQuick. DWORD *pdwSaveSize) PURE; // [OUT] Put the size here. STDMETHOD(Merge)( // S_OK or error. IMetaDataRegImport *pImport, // [IN] The scope to be merged. IMapToken *pIMap) PURE; // [IN] An object to receive token remap notices. STDMETHOD(DefineCustomValueAsBlob)( mdToken tkObj, LPCWSTR szName, void const *pCustomValue, ULONG cbCustomValue, mdCustomValue *pcv) PURE; STDMETHOD(DefineTypeDef)( // S_OK or error. LPCWSTR szNamespace, // [IN] Namespace that the TypeDef is in. Must be 0 in '98 LPCWSTR szTypeDef, // [IN] Name of TypeDef const GUID *pguid, // [IN] Optional clsid CLASSVERSION *pVer, // [IN] Optional version DWORD dwTypeDefFlags, // [IN] CustomValue flags mdToken tkExtends, // [IN] extends this TypeDef or typeref DWORD dwExtendsFlags, // [IN] Extends flags mdToken rtkImplements[], // [IN] Implements interfaces mdToken rtkEvents[], // [IN] Events interfaces mdTypeDef *ptd) PURE; // [OUT] Put TypeDef token here STDMETHOD(SetTypeDefProps)( // S_OK or error. mdTypeDef td, // [IN] The TypeDef. CLASSVERSION *pVer, // [IN] Optional version. DWORD dwTypeDefFlags, // [IN] TypeDef flags. mdToken tkExtends, // [IN] Base TypeDef or TypeRef. DWORD dwExtendsFlags, // [IN] Extends flags. mdToken rtkImplements[], // [IN] Implemented interfaces. mdToken rtkEvents[]) PURE; // [IN] Event interfaces. STDMETHOD(SetClassSvcsContext)(mdTypeDef td, DWORD dwClassActivateAttr, DWORD dwClassThreadAttr, DWORD dwXactionAttr, DWORD dwSynchAttr) PURE; STDMETHOD(DefineTypeRefByGUID)( // S_OK or error. GUID *pguid, // [IN] The Type's GUID. mdTypeRef *ptr) PURE; // [OUT] Put TypeRef token here. STDMETHOD(SetModuleReg)(DWORD dwModuleRegAttr, const GUID *pguid) PURE; STDMETHOD(SetClassReg)(mdTypeDef td, LPCWSTR szProgID, LPCWSTR szVIProgID, LPCWSTR szIconURL, ULONG ulIconResource, LPCWSTR szSmallIconURL, ULONG ulSmallIconResource, LPCWSTR szDefaultDispName) PURE; STDMETHOD(SetIfaceReg)(mdTypeDef td, DWORD dwIfaceSvcs, const GUID *proxyStub) PURE; STDMETHOD(SetCategoryImpl)(mdTypeDef td, GUID rGuidCoCatImpl[], GUID rGuidCoCatReqd[]) PURE; STDMETHOD(SetRedirectProgID)(mdTypeDef td, LPCWSTR rszRedirectProgID[]) PURE; STDMETHOD(SetMimeTypeImpl)(mdTypeDef td, LPCWSTR rszMimeType[]) PURE; STDMETHOD(SetFormatImpl)( // S_OK or error. mdTypeDef td, // [IN] The TypeDef. LPCWSTR rszFormatSupported[], // [IN] If not 0, array of supported formats. 0 for EOL. LPCWSTR rszFormatConvertsFrom[],// [IN] If not 0, array of ConvertsFrom values. " LPCWSTR rszFormatConvertsTo[], // [IN] If not 0, array of ConvertsTo values. " LPCWSTR rszFormatDefault[], // [IN] If not 0, array of Default format. Only one item. LPCWSTR rszFileExt[], // [IN] If not 0, array of file extensions. 0 for EOL. LPCWSTR rszFileType[]) PURE; // [IN] If not 0, array of file types. " STDMETHOD(SetRoleCheck)( // S_OK or error. mdToken tk, // [IN] Object to place role on. LPCWSTR rszName[], // [IN] Name for the role. DWORD rdwRoleFlags[]) PURE; // [IN] Flags for new role. STDMETHOD(SetHandler)( // S_OK. IUnknown *pUnk) PURE; // [IN] The new error handler. }; #endif // #if defined(_META_DATA_NO_SCOPE_) || defined(_META_DATA_SCOPE_WRAPPER_) #if !defined(_META_DATA_NO_SCOPE_) //@TODO: $#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$# // The following interface definition is being deprecated for COM+ 1.0 // and beyond. Please convert to the new definition by defining _META_DATA_NO_SCOPE_ // in your build. //@TODO: $#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$# #if !defined(_META_DATA_SCOPE_WRAPPER_) // {F28F419B-62CA-11d2-8F2C-00A0C9A6186D} extern const GUID DECLSPEC_SELECT_ANY IID_IMetaDataRegEmit = { 0xf28f419b, 0x62ca, 0x11d2, { 0x8f, 0x2c, 0x0, 0xa0, 0xc9, 0xa6, 0x18, 0x6d } }; #endif #undef INTERFACE #if defined(_META_DATA_SCOPE_WRAPPER_) #define INTERFACE IMetaDataRegEmitOld #else #define INTERFACE IMetaDataRegEmit #endif DECLARE_INTERFACE_(INTERFACE, IUnknown) { STDMETHOD(DefineScope)( // S_OK or error. DWORD dwCreateFlags, // [IN] Flags on the create. mdScope *pscope) PURE; // [OUT] return scope here. STDMETHOD(SetModuleProps)( // S_OK or error. mdScope scope, // [IN] scope for which to set props. LPCWSTR szName, // [IN] If not NULL, the name to set. const GUID *ppid, // [IN] If not NULL, the GUID to set. LCID lcid) PURE; // [IN] If not -1, the lcid to set. STDMETHOD(Save)( // S_OK or error. mdScope es, // [IN] The scope to save. LPCWSTR szFile, // [IN] The filename to save to. DWORD dwSaveFlags) PURE; // [IN] Flags for the save. STDMETHOD(SaveToStream)( // S_OK or error. mdScope es, // [IN] The scope to save. IStream *pIStream, // [IN] A writable stream to save to. DWORD dwSaveFlags) PURE; // [IN] Flags for the save. STDMETHOD(GetSaveSize)( // S_OK or error. mdScope es, // [IN] The scope to query. CorSaveSize fSave, // [IN] cssAccurate or cssQuick. DWORD *pdwSaveSize) PURE; // [OUT] Put the size here. STDMETHOD_(void,Close)( // S_OK or error. mdScope scope) PURE; // [IN] The scope to close. STDMETHOD(Merge)( // S_OK or error. mdScope scEmit, // [IN] The scope to merge into. mdScope scImport, // [IN] The scope to be merged. IMapToken *pIMap) PURE; // [IN] An object to receive token remap notices. STDMETHOD(DefineCustomValueAsBlob)(mdScope es, mdToken tkObj, LPCWSTR szName, void const *pCustomValue, ULONG cbCustomValue, mdCustomValue *pcv) PURE; STDMETHOD(DefineTypeDef)( // S_OK or error. mdScope es, // [IN] Emit scope LPCWSTR szNamespace, // [IN] Namespace that the TypeDef is in. Must be 0 in '98 LPCWSTR szTypeDef, // [IN] Name of TypeDef const GUID *pguid, // [IN] Optional clsid CLASSVERSION *pVer, // [IN] Optional version DWORD dwTypeDefFlags, // [IN] CustomValue flags mdToken tkExtends, // [IN] extends this TypeDef or typeref DWORD dwExtendsFlags, // [IN] Extends flags mdToken rtkImplements[], // [IN] Implements interfaces mdToken rtkEvents[], // [IN] Events interfaces mdTypeDef *ptd) PURE; // [OUT] Put TypeDef token here STDMETHOD(SetTypeDefProps)( // S_OK or error. mdScope es, // [IN] The emit scope. mdTypeDef td, // [IN] The TypeDef. CLASSVERSION *pVer, // [IN] Optional version. DWORD dwTypeDefFlags, // [IN] TypeDef flags. mdToken tkExtends, // [IN] Base TypeDef or TypeRef. DWORD dwExtendsFlags, // [IN] Extends flags. mdToken rtkImplements[], // [IN] Implemented interfaces. mdToken rtkEvents[]) PURE; // [IN] Event interfaces. STDMETHOD(SetClassSvcsContext)(mdScope es, mdTypeDef td, DWORD dwClassActivateAttr, DWORD dwClassThreadAttr, DWORD dwXactionAttr, DWORD dwSynchAttr) PURE; STDMETHOD(DefineTypeRefByGUID)( // S_OK or error. mdScope sc, // [IN] The emit scope. GUID *pguid, // [IN] The Type's GUID. mdTypeRef *ptr) PURE; // [OUT] Put TypeRef token here. STDMETHOD(SetModuleReg)(mdScope es, DWORD dwModuleRegAttr, const GUID *pguid) PURE; STDMETHOD(SetClassReg)(mdScope es, mdTypeDef td, LPCWSTR szProgID, LPCWSTR szVIProgID, LPCWSTR szIconURL, ULONG ulIconResource, LPCWSTR szSmallIconURL, ULONG ulSmallIconResource, LPCWSTR szDefaultDispName) PURE; STDMETHOD(SetIfaceReg)(mdScope es, mdTypeDef td, DWORD dwIfaceSvcs, const GUID *proxyStub) PURE; STDMETHOD(SetCategoryImpl)(mdScope es, mdTypeDef td, GUID rGuidCoCatImpl[], GUID rGuidCoCatReqd[]) PURE; STDMETHOD(SetRedirectProgID)(mdScope es, mdTypeDef td, LPCWSTR rszRedirectProgID[]) PURE; STDMETHOD(SetMimeTypeImpl)(mdScope es, mdTypeDef td, LPCWSTR rszMimeType[]) PURE; STDMETHOD(SetFormatImpl)( // S_OK or error. mdScope es, // [IN] The emit scope. mdTypeDef td, // [IN] The TypeDef. LPCWSTR rszFormatSupported[], // [IN] If not 0, array of supported formats. 0 for EOL. LPCWSTR rszFormatConvertsFrom[],// [IN] If not 0, array of ConvertsFrom values. " LPCWSTR rszFormatConvertsTo[], // [IN] If not 0, array of ConvertsTo values. " LPCWSTR rszFormatDefault[], // [IN] If not 0, array of Default format. Only one item. LPCWSTR rszFileExt[], // [IN] If not 0, array of file extensions. 0 for EOL. LPCWSTR rszFileType[]) PURE; // [IN] If not 0, array of file types. " STDMETHOD(SetRoleCheck)( // S_OK or error. mdScope es, // [IN] Emit scope. mdToken tk, // [IN] Object to place role on. LPCWSTR rszName[], // [IN] Name for the role. DWORD rdwRoleFlags[]) PURE; // [IN] Flags for new role. STDMETHOD(SetHandler)( // S_OK. mdScope sc, // [IN] The scope. IUnknown *pUnk) PURE; // [IN] The new error handler. }; #endif // !defined(_META_DATA_NO_SCOPE_) //------------------------------------- //--- IMetaDataRegImport //------------------------------------- #if defined(_META_DATA_NO_SCOPE_) || defined(_META_DATA_SCOPE_WRAPPER_) // {4398B4FD-7399-11d2-9771-00A0C9B4D50C} extern const GUID DECLSPEC_SELECT_ANY IID_IMetaDataRegImport = { 0x4398b4fd, 0x7399, 0x11d2, { 0x97, 0x71, 0x0, 0xa0, 0xc9, 0xb4, 0xd5, 0xc } }; // {F28F419A-62CA-11d2-8F2C-00A0C9A6186D} extern const GUID DECLSPEC_SELECT_ANY IID_IMetaDataRegImportOld = { 0xf28f419a, 0x62ca, 0x11d2, { 0x8f, 0x2c, 0x0, 0xa0, 0xc9, 0xa6, 0x18, 0x6d } }; #undef INTERFACE #define INTERFACE IMetaDataRegImport DECLARE_INTERFACE_(IMetaDataRegImport, IUnknown) { STDMETHOD_(void, CloseEnum)(HCORENUM hEnum) PURE; STDMETHOD(CountEnum)(HCORENUM hEnum, ULONG *pulCount) PURE; STDMETHOD(ResetEnum)(HCORENUM hEnum, ULONG ulPos) PURE; STDMETHOD(EnumTypeDefs)(HCORENUM *phEnum, mdTypeDef rTypeDefs[], ULONG cMax, ULONG *pcTypeDefs) PURE; STDMETHOD(EnumInterfaceImpls)(HCORENUM *phEnum, mdTypeDef td, mdInterfaceImpl rImpls[], ULONG cMax, ULONG* pcImpls) PURE; STDMETHOD(EnumTypeRefs)(HCORENUM *phEnum, mdTypeRef rTypeRefs[], ULONG cMax, ULONG* pcTypeRefs) PURE; STDMETHOD(EnumCustomValues)(HCORENUM *phEnum, mdToken tk, mdCustomValue rCustomValues[], ULONG cMax, ULONG* pcCustomValues) PURE; STDMETHOD(EnumResources)(HCORENUM *phEnum, mdResource rResources[], ULONG cMax, ULONG* pcResources) PURE; STDMETHOD(EnumCategoryImpls)(HCORENUM *phEnum, mdTypeDef td, mdCocatImpl rCocatImpls[], ULONG cMax, ULONG* pcCocatImpls) PURE; STDMETHOD(EnumRedirectProgIDs)(HCORENUM *phEnum, mdTypeDef td, mdProgID rRedirectProgIDs[], ULONG cMax, ULONG* pcRedirectProgIDs) PURE; STDMETHOD(EnumMimeTypeImpls)(HCORENUM *phEnum, mdTypeDef td, mdMimeTypeImpl rMimeTypeImpls[], ULONG cMax, ULONG* pcMimeTypeImpls) PURE; STDMETHOD(EnumFormatImpls)(HCORENUM *phEnum, mdTypeDef td, mdFormatImpl rFormatImpls[], ULONG cMax, ULONG* pcFormatImpls) PURE; STDMETHOD(EnumRoleChecks)( // S_OK or error. HCORENUM *phEnum, // [OUT] Return enumerator. mdToken tk, // [IN] Object to enumerate roles for. mdRoleCheck rRoleChecks[], // [OUT] Place cMax tokens here. ULONG cMax, // [IN] Max size of rRoleChecks. ULONG *pcRoleChecks) PURE; // [Out] Place count of returned role checks here. STDMETHOD(FindTypeDefByName)( // S_OK or error. LPCWSTR szNamespace, // [IN] Namespace with the Type. LPCWSTR szTypeDef, // [IN] Name of the Type. mdTypeDef *ptd) PURE; // [OUT] Put the TypeDef token here. STDMETHOD(FindTypeDefByGUID)( // S_OK or error. const GUID *pguid, // [IN] The GUID of the Type. mdTypeDef *ptd) PURE; // [OUT] Put the TypeDef token here. STDMETHOD(FindCustomValue)(mdToken tk, LPCWSTR szName, mdCustomValue *pcv, DWORD *pdwValueType) PURE; STDMETHOD(GetScopeProps)(LPWSTR szName, ULONG cchName, ULONG *pchName, GUID *ppid, GUID *pmvid, LCID *pLcid) PURE; STDMETHOD(GetModuleFromScope)( // S_OK. mdModule *pmd) PURE; // [OUT] Put mdModule token here. STDMETHOD(GetTypeDefProps)( // S_OK or error. mdTypeDef td, // [IN] TypeDef token for inquiry. LPWSTR szNamespace, // [OUT] Put Namespace here. ULONG cchNamespace, // [IN] size of Namespace buffer in wide chars. ULONG *pchNamespace, // [OUT] put size of Namespace (wide chars) here. LPWSTR szTypeDef, // [OUT] Put name here. ULONG cchTypeDef, // [IN] size of name buffer in wide chars. ULONG *pchTypeDef, // [OUT] put size of name (wide chars) here. GUID *pguid, // [OUT] Put clsid here. CLASSVERSION *pver, // [OUT] Put version here. DWORD *pdwTypeDefFlags, // [OUT] Put flags here. mdToken *ptkExtends, // [OUT] Put base class TypeDef/TypeRef here. DWORD *pdwExtendsFlags) PURE; // [OUT] Put extends flags here. STDMETHOD(GetClassSvcsContext)(mdTypeDef td, DWORD *pdwClassActivateAttr, DWORD *pdwThreadAttr, DWORD *pdwXactonAttr, DWORD *pdwSynchAttr) PURE; STDMETHOD(GetInterfaceImplProps)( // S_OK or error. mdInterfaceImpl iiImpl, // [IN] InterfaceImpl token. mdTypeDef *pClass, // [OUT] Put implementing class token here. mdToken *ptkIface, // [OUT] Put implemented interface token here. DWORD *pdwFlags) PURE; // [OUT] Put implementation flags here. STDMETHOD(GetCustomValueProps)(mdCustomValue cv, LPWSTR szName, ULONG cchName, ULONG *pchName, DWORD *pdwValueType) PURE; STDMETHOD(GetCustomValueAsBlob)(mdCustomValue cv, void const **ppBlob, ULONG *pcbSize) PURE; STDMETHOD(GetTypeRefProps)(mdTypeRef tr, LPWSTR szTypeRef, ULONG cchTypeRef, ULONG *pchTypeRef, GUID *pGuid, DWORD *pdwBind) PURE; STDMETHOD(GetModuleRegProps)(DWORD *pModuleRegAttr, GUID *pguid) PURE; STDMETHOD(GetClassRegProps)(mdTypeDef td, LPWSTR szProgid, ULONG cchProgid, ULONG *pchProgid, LPWSTR szVIProgid, ULONG cchVIProgid, ULONG *pchVIProgid, LPWSTR szIconURL, ULONG cchIconURL, ULONG *pchIconURL, ULONG *pIconResource, LPWSTR szSmallIconURL, ULONG cchSmallIconURL, ULONG *pchSmallIconURL, ULONG *pSmallIconResource, LPWSTR szDefaultDispname, ULONG cchDefaultDispname, ULONG *pchDefaultDispname) PURE; STDMETHOD(GetIfaceRegProps)(mdTypeDef td, DWORD *pdwIfaceSvcs, GUID *pProxyStub) PURE; STDMETHOD(GetResourceProps)(mdResource rs, LPWSTR szURL, ULONG cchURL, ULONG *pchURL) PURE; STDMETHOD(GetCategoryImplProps)(mdCocatImpl cocat, GUID *pguid, DWORD *pdwCocatImplAttr) PURE; STDMETHOD(GetRedirectProgIDProps)(mdProgID progid, LPWSTR szProgID, ULONG cchProgID, ULONG *pchProgID) PURE; STDMETHOD(GetMimeTypeImplProps)(mdMimeTypeImpl mime, LPWSTR szMime, ULONG cchMime, ULONG *pchMime) PURE; STDMETHOD(GetFormatImplProps)( mdFormatImpl format, LPWSTR szFormat, ULONG cchFormat, ULONG *pchFormat, DWORD *pdwRegFormatAttr) PURE; STDMETHOD(GetRoleCheckProps)( // S_OK or error. mdRoleCheck rc, // [IN] The role check to get props for. LPWSTR szName, // [OUT] Buffer for name. ULONG cchName, // [IN] Max characters for szName. ULONG *pchName, // [OUT] Available string chars for szName. DWORD *pdwRoleFlags) PURE; // [OUT] Role flags go here. STDMETHOD(ResolveTypeRef)(mdTypeRef tr, REFIID riid, IUnknown **ppIScope, mdTypeDef *ptd) PURE; }; #endif // defined(_META_DATA_NO_SCOPE_) || defined(_META_DATA_SCOPE_WRAPPER_) #if !defined(_META_DATA_NO_SCOPE_) //@TODO: $#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$# // The following interface definition is being deprecated for COM+ 1.0 // and beyond. It still exists to make porting to the new api easier. If // you need to, define _META_DATA_NO_SCOPE_ to get the old behavior. //@TODO: $#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$# #if !defined(_META_DATA_SCOPE_WRAPPER_) // {F28F419A-62CA-11d2-8F2C-00A0C9A6186D} extern const GUID DECLSPEC_SELECT_ANY IID_IMetaDataRegImport = { 0xf28f419a, 0x62ca, 0x11d2, { 0x8f, 0x2c, 0x0, 0xa0, 0xc9, 0xa6, 0x18, 0x6d } }; #endif #undef INTERFACE #if defined(_META_DATA_SCOPE_WRAPPER_) #define INTERFACE IMetaDataRegImportOld #else #define INTERFACE IMetaDataRegImport #endif DECLARE_INTERFACE_(INTERFACE, IUnknown) { STDMETHOD(OpenScope)(LPCWSTR szScope, DWORD dwOpenFlags, mdScope *pscope) PURE; STDMETHOD(OpenScopeOnStream)(IStream *pIStream, DWORD dwOpenFlags, mdScope *psc) PURE; STDMETHOD(OpenScopeOnMemory)(LPCVOID pData, ULONG cbData, mdScope *psc) PURE; STDMETHOD_(void,Close)(mdScope scope) PURE; STDMETHOD_(void, CloseEnum)(mdScope scope, HCORENUM hEnum) PURE; STDMETHOD(CountEnum)(mdScope scope, HCORENUM hEnum, ULONG *pulCount) PURE; STDMETHOD(ResetEnum)(mdScope scope, HCORENUM hEnum, ULONG ulPos) PURE; STDMETHOD(EnumTypeDefs)(mdScope scope, HCORENUM *phEnum, mdTypeDef rTypeDefs[], ULONG cMax, ULONG *pcTypeDefs) PURE; STDMETHOD(EnumInterfaceImpls)(mdScope scope, HCORENUM *phEnum, mdTypeDef td, mdInterfaceImpl rImpls[], ULONG cMax, ULONG* pcImpls) PURE; STDMETHOD(EnumTypeRefs)(mdScope scope, HCORENUM *phEnum, mdTypeRef rTypeRefs[], ULONG cMax, ULONG* pcTypeRefs) PURE; STDMETHOD(EnumCustomValues)(mdScope scope, HCORENUM *phEnum, mdToken tk, mdCustomValue rCustomValues[], ULONG cMax, ULONG* pcCustomValues) PURE; STDMETHOD(EnumResources)(mdScope scope, HCORENUM *phEnum, mdResource rResources[], ULONG cMax, ULONG* pcResources) PURE; STDMETHOD(EnumCategoryImpls)(mdScope scope, HCORENUM *phEnum, mdTypeDef td, mdCocatImpl rCocatImpls[], ULONG cMax, ULONG* pcCocatImpls) PURE; STDMETHOD(EnumRedirectProgIDs)(mdScope scope, HCORENUM *phEnum, mdTypeDef td, mdProgID rRedirectProgIDs[], ULONG cMax, ULONG* pcRedirectProgIDs) PURE; STDMETHOD(EnumMimeTypeImpls)(mdScope scope, HCORENUM *phEnum, mdTypeDef td, mdMimeTypeImpl rMimeTypeImpls[], ULONG cMax, ULONG* pcMimeTypeImpls) PURE; STDMETHOD(EnumFormatImpls)(mdScope scope, HCORENUM *phEnum, mdTypeDef td, mdFormatImpl rFormatImpls[], ULONG cMax, ULONG* pcFormatImpls) PURE; STDMETHOD(EnumRoleChecks)( // S_OK or error. mdScope scope, // [IN] Import scope. HCORENUM *phEnum, // [OUT] Return enumerator. mdToken tk, // [IN] Object to enumerate roles for. mdRoleCheck rRoleChecks[], // [OUT] Place cMax tokens here. ULONG cMax, // [IN] Max size of rRoleChecks. ULONG *pcRoleChecks) PURE; // [Out] Place count of returned role checks here. STDMETHOD(FindTypeDefByName)( // S_OK or error. mdScope scope, // [IN] The scope to search. LPCWSTR szNamespace, // [IN] Namespace with the Type. LPCWSTR szTypeDef, // [IN] Name of the Type. mdTypeDef *ptd) PURE; // [OUT] Put the TypeDef token here. STDMETHOD(FindTypeDefByGUID)( // S_OK or error. mdScope scope, // [IN] The scope to search. const GUID *pguid, // [IN] The GUID of the Type. mdTypeDef *ptd) PURE; // [OUT] Put the TypeDef token here. STDMETHOD(FindCustomValue)(mdScope scope, mdToken tk, LPCWSTR szName, mdCustomValue *pcv, DWORD *pdwValueType) PURE; STDMETHOD(GetScopeProps)(mdScope scope, LPWSTR szName, ULONG cchName, ULONG *pchName, GUID *ppid, GUID *pmvid, LCID *pLcid) PURE; STDMETHOD(GetModuleFromScope)( // S_OK. mdScope scope, // [IN] The scope. mdModule *pmd) PURE; // [OUT] Put mdModule token here. STDMETHOD(GetTypeDefProps)( // S_OK or error. mdScope scope, // [IN] The import scope. mdTypeDef td, // [IN] TypeDef token for inquiry. LPWSTR szNamespace, // [OUT] Put Namespace here. ULONG cchNamespace, // [IN] size of Namespace buffer in wide chars. ULONG *pchNamespace, // [OUT] put size of Namespace (wide chars) here. LPWSTR szTypeDef, // [OUT] Put name here. ULONG cchTypeDef, // [IN] size of name buffer in wide chars. ULONG *pchTypeDef, // [OUT] put size of name (wide chars) here. GUID *pguid, // [OUT] Put clsid here. CLASSVERSION *pver, // [OUT] Put version here. DWORD *pdwTypeDefFlags, // [OUT] Put flags here. mdToken *ptkExtends, // [OUT] Put base class TypeDef/TypeRef here. DWORD *pdwExtendsFlags) PURE; // [OUT] Put extends flags here. STDMETHOD(GetClassSvcsContext)(mdScope es, mdTypeDef td, DWORD *pdwClassActivateAttr, DWORD *pdwThreadAttr, DWORD *pdwXactonAttr, DWORD *pdwSynchAttr) PURE; STDMETHOD(GetInterfaceImplProps)( // S_OK or error. mdScope scope, // [IN] The scope. mdInterfaceImpl iiImpl, // [IN] InterfaceImpl token. mdTypeDef *pClass, // [OUT] Put implementing class token here. mdToken *ptkIface, // [OUT] Put implemented interface token here. DWORD *pdwFlags) PURE; // [OUT] Put implementation flags here. STDMETHOD(GetCustomValueProps)(mdScope scope, mdCustomValue cv, LPWSTR szName, ULONG cchName, ULONG *pchName, DWORD *pdwValueType) PURE; STDMETHOD(GetCustomValueAsBlob)(mdScope scope, mdCustomValue cv, void const **ppBlob, ULONG *pcbSize) PURE; STDMETHOD(GetTypeRefProps)(mdScope scope, mdTypeRef tr, LPWSTR szTypeRef, ULONG cchTypeRef, ULONG *pchTypeRef, GUID *pGuid, DWORD *pdwBind) PURE; STDMETHOD(GetModuleRegProps)(mdScope scope, DWORD *pModuleRegAttr, GUID *pguid) PURE; STDMETHOD(GetClassRegProps)(mdScope scope, mdTypeDef td, LPWSTR szProgid, ULONG cchProgid, ULONG *pchProgid, LPWSTR szVIProgid, ULONG cchVIProgid, ULONG *pchVIProgid, LPWSTR szIconURL, ULONG cchIconURL, ULONG *pchIconURL, ULONG *pIconResource, LPWSTR szSmallIconURL, ULONG cchSmallIconURL, ULONG *pchSmallIconURL, ULONG *pSmallIconResource, LPWSTR szDefaultDispname, ULONG cchDefaultDispname, ULONG *pchDefaultDispname) PURE; STDMETHOD(GetIfaceRegProps)(mdScope scope, mdTypeDef td, DWORD *pdwIfaceSvcs, GUID *pProxyStub) PURE; STDMETHOD(GetResourceProps)(mdScope scope, mdResource rs, LPWSTR szURL, ULONG cchURL, ULONG *pchURL) PURE; STDMETHOD(GetCategoryImplProps)(mdScope scope, mdCocatImpl cocat, GUID *pguid, DWORD *pdwCocatImplAttr) PURE; STDMETHOD(GetRedirectProgIDProps)(mdScope scope, mdProgID progid, LPWSTR szProgID, ULONG cchProgID, ULONG *pchProgID) PURE; STDMETHOD(GetMimeTypeImplProps)(mdScope scope, mdMimeTypeImpl mime, LPWSTR szMime, ULONG cchMime, ULONG *pchMime) PURE; STDMETHOD(GetFormatImplProps)(mdScope scope, mdFormatImpl format, LPWSTR szFormat, ULONG cchFormat, ULONG *pchFormat, DWORD *pdwRegFormatAttr) PURE; STDMETHOD(GetRoleCheckProps)( // S_OK or error. mdScope scope, // [IN] Import scope. mdRoleCheck rc, // [IN] The role check to get props for. LPWSTR szName, // [OUT] Buffer for name. ULONG cchName, // [IN] Max characters for szName. ULONG *pchName, // [OUT] Available string chars for szName. DWORD *pdwRoleFlags) PURE; // [OUT] Role flags go here. STDMETHOD(ResolveTypeRef)(mdScope is, mdTypeRef tr, mdScope *pes, mdTypeDef *ptd) PURE; }; #endif // _META_DATA_NO_SCOPE_ // Return to default padding. #include #ifdef __cplusplus } #endif #pragma option pop /*P_O_Pop*/ #endif // _CORREG_H_ // EOF =======================================================================