1 /** 2 * This file has no copyright assigned and is placed in the Public Domain. 3 * This file is part of the mingw-w64 runtime package. 4 * No warranty is given; refer to the file DISCLAIMER.PD within this package. 5 */ 6 #ifndef _CORREG_H_ 7 #define _CORREG_H_ 8 9 #include <ole2.h> 10 11 #ifdef __cplusplus 12 extern "C" { 13 #endif 14 15 #include <pshpack1.h> 16 17 #ifndef NODLLIMPORT 18 #define DLLIMPORT __declspec(dllimport) 19 #else 20 #define DLLIMPORT 21 #endif 22 23 #if !defined(_META_DATA_NO_SCOPE_) || defined(_META_DATA_SCOPE_WRAPPER_) 24 25 STDAPI CoGetCor(REFIID riid,void **ppv); 26 #endif 27 28 STDAPI CoInitializeCor(DWORD fFlags); 29 STDAPI_(void) CoUninitializeCor(void); 30 31 typedef INT_PTR mdScope; 32 #define mdScopeNil ((mdScope)0) 33 34 typedef INT_PTR mdToken; 35 typedef INT_PTR mdModule; 36 typedef INT_PTR mdTypeDef; 37 typedef INT_PTR mdInterfaceImpl; 38 typedef INT_PTR mdTypeRef; 39 typedef INT_PTR mdNamespace; 40 typedef INT_PTR mdCustomValue; 41 typedef INT_PTR mdResource; 42 typedef INT_PTR mdCocatdef; 43 typedef INT_PTR mdCocatImpl; 44 typedef INT_PTR mdMimeTypeImpl; 45 typedef INT_PTR mdFormatImpl; 46 typedef INT_PTR mdProgID; 47 typedef INT_PTR mdRoleCheck; 48 typedef unsigned __LONG32 RID; 49 50 enum CorRegTokenType { 51 mdtTypeDef = 0x00000000,mdtInterfaceImpl = 0x01000000,mdtTypeRef = 0x03000000,mdtNamespace = 0x06000000,mdtCustomValue = 0x07000000, 52 mdtResource = 0x0B000000,mdtCocatImpl = 0x0D000000,mdtMimeTypeImpl = 0x0E000000,mdtFormatImpl = 0x0F000000,mdtProgID = 0x10000000, 53 mdtRoleCheck = 0x11000000,mdtModule = 0x14000000 54 }; 55 56 #define RidToToken(rid,tktype) ((rid) |= (tktype)) 57 #define TokenFromRid(rid,tktype) ((rid) | (tktype)) 58 #define RidFromToken(tk) ((RID) ((tk) & 0x00ffffff)) 59 #define TypeFromToken(tk) ((tk) & 0xff000000) 60 61 #define mdTokenNil ((mdToken)0) 62 #define mdModuleNil ((mdModule)mdtModule) 63 #define mdTypeDefNil ((mdTypeDef)mdtTypeDef) 64 #define mdInterfaceImplNil ((mdInterfaceImpl)mdtInterfaceImpl) 65 #define mdTypeRefNil ((mdTypeRef)mdtTypeRef) 66 #define mdNamespaceNil ((mdNamespace)mdtNamespace) 67 #define mdCustomValueNil ((mdCustomValue)mdtCustomValue) 68 #define mdResourceNil ((mdResource)mdtResource) 69 #define mdCocatImplNil ((mdCocatImpl)mdtCocatImpl) 70 #define mdMimeTypeImplNil ((mdMimeTypeImpl)mdtMimeTypeImpl) 71 #define mdFormatImplNil ((mdFormatImpl)mdtFormatImpl) 72 #define mdProgIDNil ((mdProgID)mdtProgID) 73 #define mdRoleCheckNil ((mdRoleCheck)mdtRoleCheck) 74 75 enum CorRegTypeAttr { 76 tdPublic = 0x0001,tdLayoutMask = 0x0006,tdAutoLayout = 0x0000,tdLayoutSequential = 0x0002,tdExplicitLayout = 0x0004,tdWrapperClass = 0x0008, 77 tdFinal = 0x0010,tdISSCompat = 0x0020,tdStringFormatMask = 0x00c0,tdAnsiClass = 0x0000,tdUnicodeClass = 0x0040,tdAutoClass = 0x0080, 78 tdValueClass = 0x0100,tdInterface = 0x0200,tdAbstract = 0x0400,tdImport = 0x1000,tdRecord = 0x2000,tdEnum = 0x4000,tdReserved1 = 0x0800 79 }; 80 81 enum CorImplementType { 82 itImplements = 0x0000,itEvents = 0x0001,itRequires = 0x0002,itInherits = 0x0004 83 }; 84 85 enum CorClassActivateAttr { 86 caaDeferCreate = 0x0001,caaAppObject = 0x0002,caaFixedIfaceSet = 0x0004,caaIndependentlyCreateable = 0x0100,caaPredefined = 0x0200, 87 caaLoadBalancing = 0x0c00,caaLBNotSupported = 0x0400,caaLBSupported = 0x0800,caaLBNotSpecified = 0x0000,caaObjectPooling = 0x3000, 88 caaOPNotSupported = 0x1000,caaOPSupported = 0x2000,caaOPNotSpecified = 0x0000,caaJITActivation = 0xc000,caaJANotSupported = 0x4000, 89 caaJASupported = 0x8000,caaJANotSpecified = 0x0000 90 }; 91 92 enum CorIfaceSvcAttr { 93 mlNone = 0x0001,mlAutomation = 0x0002,mlProxyStub = 0x0004,mlDeferrable = 0x0018,mlDeferNotSupported = 0x0008,mlDeferSupported = 0x0010, 94 mlDeferNotSpecified = 0x0000 95 }; 96 97 enum CocatImplAttr { 98 catiaImplements = 0x0001,catiaRequires = 0x0002 99 }; 100 101 enum CorModuleExportAttr { 102 moUsesGetLastError = 0x0001 103 }; 104 105 enum CorModuleRegAttr { 106 rmaCustomReg = 0x0001 107 }; 108 109 enum CorRegFormatAttr { 110 rfaSupportsFormat = 0x0001,rfaConvertsFromFormat = 0x0002,rfaConvertsToFormat = 0x0003,rfaDefaultFormat = 0x0004,rfaIsFileExt = 0x0005, 111 rfaIsFileType = 0x0006,rfaIsDataFormat = 0x0007 112 }; 113 114 enum CorSynchAttr { 115 sySupported = 0x0001,syRequired = 0x0002,syRequiresNew = 0x0004,syNotSupported = 0x0008,syThreadAffinity = 0x0010 116 }; 117 118 enum CorThreadingAttr { 119 taMain = 0x0001,taSTA = 0x0002,taMTA = 0x0004,taNeutral = 0x0008,taBoth = 0x0010 120 }; 121 122 enum CorXactionAttr { 123 xaSupported = 0x0001,xaRequired = 0x0002,xaRequiresNew = 0x0004,xaNotSupported = 0x0008,xaNoVote = 0x0010 124 }; 125 126 enum CorRoleCheckAttr { 127 rcChecksFor = 0x0001 128 }; 129 130 typedef void *HCORENUM; 131 132 #ifndef _CORSAVESIZE_DEFINED_ 133 #define _CORSAVESIZE_DEFINED_ 134 typedef enum CorSaveSize { 135 cssAccurate = 0x0000,cssQuick = 0x0001 136 } CorSaveSize; 137 #endif 138 139 #define MAX_CLASS_NAME 255 140 #define MAX_PACKAGE_NAME 255 141 142 __MINGW_EXTENSION typedef unsigned __int64 CLASSVERSION; 143 144 #ifndef DECLSPEC_SELECT_ANY 145 #define DECLSPEC_SELECT_ANY __declspec(selectany) 146 #endif 147 148 EXTERN_GUID (CLSID_Cor, 0xbee00010,0xee77,0x11d0,0xa0,0x15,0x00,0xc0,0x4f,0xbb,0xb8,0x84); 149 EXTERN_GUID (CLSID_CorMetaDataDispenser,0xe5cb7a31,0x7512,0x11d2,0x89,0xce,0x0,0x80,0xc7,0x92,0xe5,0xd8); 150 EXTERN_GUID (CLSID_CorMetaDataDispenserReg,0x435755ff,0x7397,0x11d2,0x97,0x71,0x0,0xa0,0xc9,0xb4,0xd5,0xc); 151 EXTERN_GUID (CLSID_CorMetaDataReg,0x87f3a1f5,0x7397,0x11d2,0x97,0x71,0x0,0xa0,0xc9,0xb4,0xd5,0xc); 152 EXTERN_GUID (IID_IMetaDataInternal,0x2d601bb,0xc5b9,0x11d1,0x93,0xf9,0x0,0x0,0xf8,0x8,0x34,0x60); 153 EXTERN_GUID (IID_IMetaDataEmitTemp,0xad93d71d,0xe1f2,0x11d1,0x94,0x9,0x0,0x0,0xf8,0x8,0x34,0x60); 154 155 struct IMetaDataRegEmit; 156 struct IMetaDataRegImport; 157 struct IMetaDataDispenser; 158 159 EXTERN_GUID (IID_IMemory,0x6a3ea8a,0x225,0x11d1,0xbf,0x72,0x0,0xc0,0x4f,0xc3,0x1e,0x12); 160 161 #undef INTERFACE 162 #define INTERFACE IMemory 163 DECLARE_INTERFACE_(IMemory,IUnknown) { 164 #ifndef __cplusplus 165 STDMETHOD(QueryInterface)(THIS_ REFIID riid,LPVOID *ppvObj) PURE; 166 STDMETHOD_(ULONG,AddRef)(THIS) PURE; 167 STDMETHOD_(ULONG,Release)(THIS) PURE; 168 #endif 169 STDMETHOD(GetMemory)(THIS_ void **pMem,ULONG *iSize) PURE; 170 STDMETHOD(SetMemory)(THIS_ void *pMem,ULONG iSize) PURE; 171 }; 172 173 EXTERN_GUID (IID_IMetaDataError,0xb81ff171,0x20f3,0x11d2,0x8d,0xcc,0x0,0xa0,0xc9,0xb0,0x9c,0x19); 174 175 #undef INTERFACE 176 #define INTERFACE IMetaDataError 177 DECLARE_INTERFACE_(IMetaDataError,IUnknown) { 178 #ifndef __cplusplus 179 STDMETHOD(QueryInterface)(THIS_ REFIID riid,LPVOID *ppvObj) PURE; 180 STDMETHOD_(ULONG,AddRef)(THIS) PURE; 181 STDMETHOD_(ULONG,Release)(THIS) PURE; 182 #endif 183 STDMETHOD(OnError)(THIS_ HRESULT hrError,mdToken token) PURE; 184 }; 185 186 EXTERN_GUID (IID_IMapToken,0x6a3ea8b,0x225,0x11d1,0xbf,0x72,0x0,0xc0,0x4f,0xc3,0x1e,0x12); 187 188 #undef INTERFACE 189 #define INTERFACE IMapToken 190 DECLARE_INTERFACE_(IMapToken,IUnknown) { 191 #ifndef __cplusplus 192 STDMETHOD(QueryInterface)(THIS_ REFIID riid,LPVOID *ppvObj) PURE; 193 STDMETHOD_(ULONG,AddRef)(THIS) PURE; 194 STDMETHOD_(ULONG,Release)(THIS) PURE; 195 #endif 196 STDMETHOD(Map)(THIS_ ULONG tkImp,ULONG tkEmit) PURE; 197 }; 198 199 EXTERN_GUID (IID_IMetaDataDispenser,0x809c652e,0x7396,0x11d2,0x97,0x71,0x0,0xa0,0xc9,0xb4,0xd5,0xc); 200 201 #undef INTERFACE 202 #define INTERFACE IMetaDataDispenser 203 DECLARE_INTERFACE_(IMetaDataDispenser,IUnknown) { 204 #ifndef __cplusplus 205 STDMETHOD(QueryInterface)(THIS_ REFIID riid,LPVOID *ppvObj) PURE; 206 STDMETHOD_(ULONG,AddRef)(THIS) PURE; 207 STDMETHOD_(ULONG,Release)(THIS) PURE; 208 #endif 209 STDMETHOD(DefineScope)(THIS_ REFCLSID rclsid,DWORD dwCreateFlags,REFIID riid,IUnknown **ppIUnk) PURE; 210 STDMETHOD(OpenScope)(THIS_ LPCWSTR szScope,DWORD dwOpenFlags,REFIID riid,IUnknown **ppIUnk) PURE; 211 STDMETHOD(OpenScopeOnStream)(THIS_ IStream *pIStream,DWORD dwOpenFlags,REFIID riid,IUnknown **ppIUnk) PURE; 212 STDMETHOD(OpenScopeOnMemory)(THIS_ LPCVOID pData,ULONG cbData,DWORD dwOpenFlags,REFIID riid,IUnknown **ppIUnk) PURE; 213 }; 214 215 #if defined(_META_DATA_NO_SCOPE_) || defined(_META_DATA_SCOPE_WRAPPER_) 216 EXTERN_GUID (IID_IMetaDataRegEmit,0x601c95b9,0x7398,0x11d2,0x97,0x71,0x0,0xa0,0xc9,0xb4,0xd5,0xc); 217 EXTERN_GUID (IID_IMetaDataRegEmitOld,0xf28f419b,0x62ca,0x11d2,0x8f,0x2c,0x0,0xa0,0xc9,0xa6,0x18,0x6d); 218 219 #undef INTERFACE 220 #define INTERFACE IMetaDataRegEmit 221 DECLARE_INTERFACE_(IMetaDataRegEmit,IUnknown) { 222 #ifndef __cplusplus 223 STDMETHOD(QueryInterface)(THIS_ REFIID riid,LPVOID *ppvObj) PURE; 224 STDMETHOD_(ULONG,AddRef)(THIS) PURE; 225 STDMETHOD_(ULONG,Release)(THIS) PURE; 226 #endif 227 STDMETHOD(SetModuleProps)(THIS_ LPCWSTR szName,const GUID *ppid,LCID lcid) PURE; 228 STDMETHOD(Save)(THIS_ LPCWSTR szFile,DWORD dwSaveFlags) PURE; 229 STDMETHOD(SaveToStream)(THIS_ IStream *pIStream,DWORD dwSaveFlags) PURE; 230 STDMETHOD(GetSaveSize)(THIS_ CorSaveSize fSave,DWORD *pdwSaveSize) PURE; 231 STDMETHOD(Merge)(THIS_ IMetaDataRegImport *pImport,IMapToken *pIMap) PURE; 232 STDMETHOD(DefineCustomValueAsBlob)(THIS_ mdToken tkObj,LPCWSTR szName,void const *pCustomValue,ULONG cbCustomValue,mdCustomValue *pcv) PURE; 233 STDMETHOD(DefineTypeDef)(THIS_ LPCWSTR szNamespace,LPCWSTR szTypeDef,const GUID *pguid,CLASSVERSION *pVer,DWORD dwTypeDefFlags,mdToken tkExtends,DWORD dwExtendsFlags,mdToken rtkImplements[],mdToken rtkEvents[],mdTypeDef *ptd) PURE; 234 STDMETHOD(SetTypeDefProps)(THIS_ mdTypeDef td,CLASSVERSION *pVer,DWORD dwTypeDefFlags,mdToken tkExtends,DWORD dwExtendsFlags,mdToken rtkImplements[],mdToken rtkEvents[]) PURE; 235 STDMETHOD(SetClassSvcsContext)(THIS_ mdTypeDef td,DWORD dwClassActivateAttr,DWORD dwClassThreadAttr,DWORD dwXactionAttr,DWORD dwSynchAttr) PURE; 236 STDMETHOD(DefineTypeRefByGUID)(THIS_ GUID *pguid,mdTypeRef *ptr) PURE; 237 STDMETHOD(SetModuleReg)(THIS_ DWORD dwModuleRegAttr,const GUID *pguid) PURE; 238 STDMETHOD(SetClassReg)(THIS_ mdTypeDef td,LPCWSTR szProgID,LPCWSTR szVIProgID,LPCWSTR szIconURL,ULONG ulIconResource,LPCWSTR szSmallIconURL,ULONG ulSmallIconResource,LPCWSTR szDefaultDispName) PURE; 239 STDMETHOD(SetIfaceReg)(THIS_ mdTypeDef td,DWORD dwIfaceSvcs,const GUID *proxyStub) PURE; 240 STDMETHOD(SetCategoryImpl)(THIS_ mdTypeDef td,GUID rGuidCoCatImpl[],GUID rGuidCoCatReqd[]) PURE; 241 STDMETHOD(SetRedirectProgID)(THIS_ mdTypeDef td,LPCWSTR rszRedirectProgID[]) PURE; 242 STDMETHOD(SetMimeTypeImpl)(THIS_ mdTypeDef td,LPCWSTR rszMimeType[]) PURE; 243 STDMETHOD(SetFormatImpl)(THIS_ mdTypeDef td,LPCWSTR rszFormatSupported[],LPCWSTR rszFormatConvertsFrom[],LPCWSTR rszFormatConvertsTo[],LPCWSTR rszFormatDefault[],LPCWSTR rszFileExt[],LPCWSTR rszFileType[]) PURE; 244 STDMETHOD(SetRoleCheck)(THIS_ mdToken tk,LPCWSTR rszName[],DWORD rdwRoleFlags[]) PURE; 245 STDMETHOD(SetHandler)(THIS_ IUnknown *pUnk) PURE; 246 }; 247 #endif 248 249 #if !defined(_META_DATA_NO_SCOPE_) 250 #if !defined(_META_DATA_SCOPE_WRAPPER_) 251 EXTERN_GUID (IID_IMetaDataRegEmit,0xf28f419b,0x62ca,0x11d2,0x8f,0x2c,0x0,0xa0,0xc9,0xa6,0x18,0x6d); 252 #endif 253 254 #undef INTERFACE 255 #if defined(_META_DATA_SCOPE_WRAPPER_) 256 #define INTERFACE IMetaDataRegEmitOld 257 #else 258 #define INTERFACE IMetaDataRegEmit 259 #endif 260 DECLARE_INTERFACE_(INTERFACE,IUnknown) { 261 #ifndef __cplusplus 262 STDMETHOD(QueryInterface)(THIS_ REFIID riid,LPVOID *ppvObj) PURE; 263 STDMETHOD_(ULONG,AddRef)(THIS) PURE; 264 STDMETHOD_(ULONG,Release)(THIS) PURE; 265 #endif 266 STDMETHOD(DefineScope)(THIS_ DWORD dwCreateFlags,mdScope *pscope) PURE; 267 STDMETHOD(SetModuleProps)(THIS_ mdScope scope,LPCWSTR szName,const GUID *ppid,LCID lcid) PURE; 268 STDMETHOD(Save)(THIS_ mdScope es,LPCWSTR szFile,DWORD dwSaveFlags) PURE; 269 STDMETHOD(SaveToStream)(THIS_ mdScope es,IStream *pIStream,DWORD dwSaveFlags) PURE; 270 STDMETHOD(GetSaveSize)(THIS_ mdScope es,CorSaveSize fSave,DWORD *pdwSaveSize) PURE; 271 STDMETHOD_(void,Close)(THIS_ mdScope scope) PURE; 272 STDMETHOD(Merge)(THIS_ mdScope scEmit,mdScope scImport,IMapToken *pIMap) PURE; 273 STDMETHOD(DefineCustomValueAsBlob)(THIS_ mdScope es,mdToken tkObj,LPCWSTR szName,void const *pCustomValue,ULONG cbCustomValue,mdCustomValue *pcv) PURE; 274 STDMETHOD(DefineTypeDef)(THIS_ mdScope es,LPCWSTR szNamespace,LPCWSTR szTypeDef,const GUID *pguid,CLASSVERSION *pVer,DWORD dwTypeDefFlags,mdToken tkExtends,DWORD dwExtendsFlags,mdToken rtkImplements[],mdToken rtkEvents[],mdTypeDef *ptd) PURE; 275 STDMETHOD(SetTypeDefProps)(THIS_ mdScope es,mdTypeDef td,CLASSVERSION *pVer,DWORD dwTypeDefFlags,mdToken tkExtends,DWORD dwExtendsFlags,mdToken rtkImplements[],mdToken rtkEvents[]) PURE; 276 STDMETHOD(SetClassSvcsContext)(THIS_ mdScope es,mdTypeDef td,DWORD dwClassActivateAttr,DWORD dwClassThreadAttr,DWORD dwXactionAttr,DWORD dwSynchAttr) PURE; 277 STDMETHOD(DefineTypeRefByGUID)(THIS_ mdScope sc,GUID *pguid,mdTypeRef *ptr) PURE; 278 STDMETHOD(SetModuleReg)(THIS_ mdScope es,DWORD dwModuleRegAttr,const GUID *pguid) PURE; 279 STDMETHOD(SetClassReg)(THIS_ mdScope es,mdTypeDef td,LPCWSTR szProgID,LPCWSTR szVIProgID,LPCWSTR szIconURL,ULONG ulIconResource,LPCWSTR szSmallIconURL,ULONG ulSmallIconResource,LPCWSTR szDefaultDispName) PURE; 280 STDMETHOD(SetIfaceReg)(THIS_ mdScope es,mdTypeDef td,DWORD dwIfaceSvcs,const GUID *proxyStub) PURE; 281 STDMETHOD(SetCategoryImpl)(THIS_ mdScope es,mdTypeDef td,GUID rGuidCoCatImpl[],GUID rGuidCoCatReqd[]) PURE; 282 STDMETHOD(SetRedirectProgID)(THIS_ mdScope es,mdTypeDef td,LPCWSTR rszRedirectProgID[]) PURE; 283 STDMETHOD(SetMimeTypeImpl)(THIS_ mdScope es,mdTypeDef td,LPCWSTR rszMimeType[]) PURE; 284 STDMETHOD(SetFormatImpl)(THIS_ mdScope es,mdTypeDef td,LPCWSTR rszFormatSupported[],LPCWSTR rszFormatConvertsFrom[],LPCWSTR rszFormatConvertsTo[],LPCWSTR rszFormatDefault[],LPCWSTR rszFileExt[],LPCWSTR rszFileType[]) PURE; 285 STDMETHOD(SetRoleCheck)(THIS_ mdScope es,mdToken tk,LPCWSTR rszName[],DWORD rdwRoleFlags[]) PURE; 286 STDMETHOD(SetHandler)(THIS_ mdScope sc,IUnknown *pUnk) PURE; 287 }; 288 #endif 289 290 #if defined(_META_DATA_NO_SCOPE_) || defined(_META_DATA_SCOPE_WRAPPER_) 291 EXTERN_GUID (IID_IMetaDataRegImport, 0x4398b4fd,0x7399,0x11d2,0x97,0x71,0x0,0xa0,0xc9,0xb4,0xd5,0xc); 292 EXTERN_GUID (IID_IMetaDataRegImportOld, 0xf28f419a,0x62ca,0x11d2,0x8f,0x2c,0x0,0xa0,0xc9,0xa6,0x18,0x6d); 293 294 #undef INTERFACE 295 #define INTERFACE IMetaDataRegImport 296 DECLARE_INTERFACE_(IMetaDataRegImport,IUnknown) { 297 #ifndef __cplusplus 298 STDMETHOD(QueryInterface)(THIS_ REFIID riid,LPVOID *ppvObj) PURE; 299 STDMETHOD_(ULONG,AddRef)(THIS) PURE; 300 STDMETHOD_(ULONG,Release)(THIS) PURE; 301 #endif 302 STDMETHOD_(void,CloseEnum)(THIS_ HCORENUM hEnum) PURE; 303 STDMETHOD(CountEnum)(THIS_ HCORENUM hEnum,ULONG *pulCount) PURE; 304 STDMETHOD(ResetEnum)(THIS_ HCORENUM hEnum,ULONG ulPos) PURE; 305 STDMETHOD(EnumTypeDefs)(THIS_ HCORENUM *phEnum,mdTypeDef rTypeDefs[],ULONG cMax,ULONG *pcTypeDefs) PURE; 306 STDMETHOD(EnumInterfaceImpls)(THIS_ HCORENUM *phEnum,mdTypeDef td,mdInterfaceImpl rImpls[],ULONG cMax,ULONG *pcImpls) PURE; 307 STDMETHOD(EnumTypeRefs)(THIS_ HCORENUM *phEnum,mdTypeRef rTypeRefs[],ULONG cMax,ULONG *pcTypeRefs) PURE; 308 STDMETHOD(EnumCustomValues)(THIS_ HCORENUM *phEnum,mdToken tk,mdCustomValue rCustomValues[],ULONG cMax,ULONG *pcCustomValues) PURE; 309 STDMETHOD(EnumResources)(THIS_ HCORENUM *phEnum,mdResource rResources[],ULONG cMax,ULONG *pcResources) PURE; 310 STDMETHOD(EnumCategoryImpls)(THIS_ HCORENUM *phEnum,mdTypeDef td,mdCocatImpl rCocatImpls[],ULONG cMax,ULONG *pcCocatImpls) PURE; 311 STDMETHOD(EnumRedirectProgIDs)(THIS_ HCORENUM *phEnum,mdTypeDef td,mdProgID rRedirectProgIDs[],ULONG cMax,ULONG *pcRedirectProgIDs) PURE; 312 STDMETHOD(EnumMimeTypeImpls)(THIS_ HCORENUM *phEnum,mdTypeDef td,mdMimeTypeImpl rMimeTypeImpls[],ULONG cMax,ULONG *pcMimeTypeImpls) PURE; 313 STDMETHOD(EnumFormatImpls)(THIS_ HCORENUM *phEnum,mdTypeDef td,mdFormatImpl rFormatImpls[],ULONG cMax,ULONG *pcFormatImpls) PURE; 314 STDMETHOD(EnumRoleChecks)(THIS_ HCORENUM *phEnum,mdToken tk,mdRoleCheck rRoleChecks[],ULONG cMax,ULONG *pcRoleChecks) PURE; 315 STDMETHOD(FindTypeDefByName)(THIS_ LPCWSTR szNamespace,LPCWSTR szTypeDef,mdTypeDef *ptd) PURE; 316 STDMETHOD(FindTypeDefByGUID)(THIS_ const GUID *pguid,mdTypeDef *ptd) PURE; 317 STDMETHOD(FindCustomValue)(THIS_ mdToken tk,LPCWSTR szName,mdCustomValue *pcv,DWORD *pdwValueType) PURE; 318 STDMETHOD(GetScopeProps)(THIS_ LPWSTR szName,ULONG cchName,ULONG *pchName,GUID *ppid,GUID *pmvid,LCID *pLcid) PURE; 319 STDMETHOD(GetModuleFromScope)(THIS_ mdModule *pmd) PURE; 320 STDMETHOD(GetTypeDefProps)(THIS_ mdTypeDef td,LPWSTR szNamespace,ULONG cchNamespace,ULONG *pchNamespace,LPWSTR szTypeDef,ULONG cchTypeDef,ULONG *pchTypeDef,GUID *pguid,CLASSVERSION *pver,DWORD *pdwTypeDefFlags,mdToken *ptkExtends,DWORD *pdwExtendsFlags) PURE; 321 STDMETHOD(GetClassSvcsContext)(THIS_ mdTypeDef td,DWORD *pdwClassActivateAttr,DWORD *pdwThreadAttr,DWORD *pdwXactonAttr,DWORD *pdwSynchAttr) PURE; 322 STDMETHOD(GetInterfaceImplProps)(THIS_ mdInterfaceImpl iiImpl,mdTypeDef *pClass,mdToken *ptkIface,DWORD *pdwFlags) PURE; 323 STDMETHOD(GetCustomValueProps)(THIS_ mdCustomValue cv,LPWSTR szName,ULONG cchName,ULONG *pchName,DWORD *pdwValueType) PURE; 324 STDMETHOD(GetCustomValueAsBlob)(THIS_ mdCustomValue cv,void const **ppBlob,ULONG *pcbSize) PURE; 325 STDMETHOD(GetTypeRefProps)(THIS_ mdTypeRef tr,LPWSTR szTypeRef,ULONG cchTypeRef,ULONG *pchTypeRef,GUID *pGuid,DWORD *pdwBind) PURE; 326 STDMETHOD(GetModuleRegProps)(THIS_ DWORD *pModuleRegAttr,GUID *pguid) PURE; 327 STDMETHOD(GetClassRegProps)(THIS_ 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; 328 STDMETHOD(GetIfaceRegProps)(THIS_ mdTypeDef td,DWORD *pdwIfaceSvcs,GUID *pProxyStub) PURE; 329 STDMETHOD(GetResourceProps)(THIS_ mdResource rs,LPWSTR szURL,ULONG cchURL,ULONG *pchURL) PURE; 330 STDMETHOD(GetCategoryImplProps)(THIS_ mdCocatImpl cocat,GUID *pguid,DWORD *pdwCocatImplAttr) PURE; 331 STDMETHOD(GetRedirectProgIDProps)(THIS_ mdProgID progid,LPWSTR szProgID,ULONG cchProgID,ULONG *pchProgID) PURE; 332 STDMETHOD(GetMimeTypeImplProps)(THIS_ mdMimeTypeImpl mime,LPWSTR szMime,ULONG cchMime,ULONG *pchMime) PURE; 333 STDMETHOD(GetFormatImplProps)(THIS_ mdFormatImpl format,LPWSTR szFormat,ULONG cchFormat,ULONG *pchFormat,DWORD *pdwRegFormatAttr) PURE; 334 STDMETHOD(GetRoleCheckProps)(THIS_ mdRoleCheck rc,LPWSTR szName,ULONG cchName,ULONG *pchName,DWORD *pdwRoleFlags) PURE; 335 STDMETHOD(ResolveTypeRef)(THIS_ mdTypeRef tr,REFIID riid,IUnknown **ppIScope,mdTypeDef *ptd) PURE; 336 }; 337 #endif 338 339 #if !defined(_META_DATA_NO_SCOPE_) 340 #if !defined(_META_DATA_SCOPE_WRAPPER_) 341 EXTERN_GUID (IID_IMetaDataRegImport, 0xf28f419a,0x62ca,0x11d2, 0x8f, 0x2c, 0x0, 0xa0, 0xc9, 0xa6, 0x18, 0x6d); 342 #endif 343 344 #undef INTERFACE 345 #if defined(_META_DATA_SCOPE_WRAPPER_) 346 #define INTERFACE IMetaDataRegImportOld 347 #else 348 #define INTERFACE IMetaDataRegImport 349 #endif 350 DECLARE_INTERFACE_(INTERFACE,IUnknown) { 351 #ifndef __cplusplus 352 STDMETHOD(QueryInterface)(THIS_ REFIID riid,LPVOID *ppvObj) PURE; 353 STDMETHOD_(ULONG,AddRef)(THIS) PURE; 354 STDMETHOD_(ULONG,Release)(THIS) PURE; 355 #endif 356 STDMETHOD(OpenScope)(THIS_ LPCWSTR szScope,DWORD dwOpenFlags,mdScope *pscope) PURE; 357 STDMETHOD(OpenScopeOnStream)(THIS_ IStream *pIStream,DWORD dwOpenFlags,mdScope *psc) PURE; 358 STDMETHOD(OpenScopeOnMemory)(THIS_ LPCVOID pData,ULONG cbData,mdScope *psc) PURE; 359 STDMETHOD_(void,Close)(THIS_ mdScope scope) PURE; 360 STDMETHOD_(void,CloseEnum)(THIS_ mdScope scope,HCORENUM hEnum) PURE; 361 STDMETHOD(CountEnum)(THIS_ mdScope scope,HCORENUM hEnum,ULONG *pulCount) PURE; 362 STDMETHOD(ResetEnum)(THIS_ mdScope scope,HCORENUM hEnum,ULONG ulPos) PURE; 363 STDMETHOD(EnumTypeDefs)(THIS_ mdScope scope,HCORENUM *phEnum,mdTypeDef rTypeDefs[],ULONG cMax,ULONG *pcTypeDefs) PURE; 364 STDMETHOD(EnumInterfaceImpls)(THIS_ mdScope scope,HCORENUM *phEnum,mdTypeDef td,mdInterfaceImpl rImpls[],ULONG cMax,ULONG *pcImpls) PURE; 365 STDMETHOD(EnumTypeRefs)(THIS_ mdScope scope,HCORENUM *phEnum,mdTypeRef rTypeRefs[],ULONG cMax,ULONG *pcTypeRefs) PURE; 366 STDMETHOD(EnumCustomValues)(THIS_ mdScope scope,HCORENUM *phEnum,mdToken tk,mdCustomValue rCustomValues[],ULONG cMax,ULONG *pcCustomValues) PURE; 367 STDMETHOD(EnumResources)(THIS_ mdScope scope,HCORENUM *phEnum,mdResource rResources[],ULONG cMax,ULONG *pcResources) PURE; 368 STDMETHOD(EnumCategoryImpls)(THIS_ mdScope scope,HCORENUM *phEnum,mdTypeDef td,mdCocatImpl rCocatImpls[],ULONG cMax,ULONG *pcCocatImpls) PURE; 369 STDMETHOD(EnumRedirectProgIDs)(THIS_ mdScope scope,HCORENUM *phEnum,mdTypeDef td,mdProgID rRedirectProgIDs[],ULONG cMax,ULONG *pcRedirectProgIDs) PURE; 370 STDMETHOD(EnumMimeTypeImpls)(THIS_ mdScope scope,HCORENUM *phEnum,mdTypeDef td,mdMimeTypeImpl rMimeTypeImpls[],ULONG cMax,ULONG *pcMimeTypeImpls) PURE; 371 STDMETHOD(EnumFormatImpls)(THIS_ mdScope scope,HCORENUM *phEnum,mdTypeDef td,mdFormatImpl rFormatImpls[],ULONG cMax,ULONG *pcFormatImpls) PURE; 372 STDMETHOD(EnumRoleChecks)(THIS_ mdScope scope,HCORENUM *phEnum,mdToken tk,mdRoleCheck rRoleChecks[],ULONG cMax,ULONG *pcRoleChecks) PURE; 373 STDMETHOD(FindTypeDefByName)(THIS_ mdScope scope,LPCWSTR szNamespace,LPCWSTR szTypeDef,mdTypeDef *ptd) PURE; 374 STDMETHOD(FindTypeDefByGUID)(THIS_ mdScope scope,const GUID *pguid,mdTypeDef *ptd) PURE; 375 STDMETHOD(FindCustomValue)(THIS_ mdScope scope,mdToken tk,LPCWSTR szName,mdCustomValue *pcv,DWORD *pdwValueType) PURE; 376 STDMETHOD(GetScopeProps)(THIS_ mdScope scope,LPWSTR szName,ULONG cchName,ULONG *pchName,GUID *ppid,GUID *pmvid,LCID *pLcid) PURE; 377 STDMETHOD(GetModuleFromScope)(THIS_ mdScope scope,mdModule *pmd) PURE; 378 STDMETHOD(GetTypeDefProps)(THIS_ mdScope scope,mdTypeDef td,LPWSTR szNamespace,ULONG cchNamespace,ULONG *pchNamespace,LPWSTR szTypeDef,ULONG cchTypeDef,ULONG *pchTypeDef,GUID *pguid,CLASSVERSION *pver,DWORD *pdwTypeDefFlags,mdToken *ptkExtends,DWORD *pdwExtendsFlags) PURE; 379 STDMETHOD(GetClassSvcsContext)(THIS_ mdScope es,mdTypeDef td,DWORD *pdwClassActivateAttr,DWORD *pdwThreadAttr,DWORD *pdwXactonAttr,DWORD *pdwSynchAttr) PURE; 380 STDMETHOD(GetInterfaceImplProps)(THIS_ mdScope scope,mdInterfaceImpl iiImpl,mdTypeDef *pClass,mdToken *ptkIface,DWORD *pdwFlags) PURE; 381 STDMETHOD(GetCustomValueProps)(THIS_ mdScope scope,mdCustomValue cv,LPWSTR szName,ULONG cchName,ULONG *pchName,DWORD *pdwValueType) PURE; 382 STDMETHOD(GetCustomValueAsBlob)(THIS_ mdScope scope,mdCustomValue cv,void const **ppBlob,ULONG *pcbSize) PURE; 383 STDMETHOD(GetTypeRefProps)(THIS_ mdScope scope,mdTypeRef tr,LPWSTR szTypeRef,ULONG cchTypeRef,ULONG *pchTypeRef,GUID *pGuid,DWORD *pdwBind) PURE; 384 STDMETHOD(GetModuleRegProps)(THIS_ mdScope scope,DWORD *pModuleRegAttr,GUID *pguid) PURE; 385 STDMETHOD(GetClassRegProps)(THIS_ 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; 386 STDMETHOD(GetIfaceRegProps)(THIS_ mdScope scope,mdTypeDef td,DWORD *pdwIfaceSvcs,GUID *pProxyStub) PURE; 387 STDMETHOD(GetResourceProps)(THIS_ mdScope scope,mdResource rs,LPWSTR szURL,ULONG cchURL,ULONG *pchURL) PURE; 388 STDMETHOD(GetCategoryImplProps)(THIS_ mdScope scope,mdCocatImpl cocat,GUID *pguid,DWORD *pdwCocatImplAttr) PURE; 389 STDMETHOD(GetRedirectProgIDProps)(THIS_ mdScope scope,mdProgID progid,LPWSTR szProgID,ULONG cchProgID,ULONG *pchProgID) PURE; 390 STDMETHOD(GetMimeTypeImplProps)(THIS_ mdScope scope,mdMimeTypeImpl mime,LPWSTR szMime,ULONG cchMime,ULONG *pchMime) PURE; 391 STDMETHOD(GetFormatImplProps)(THIS_ mdScope scope,mdFormatImpl format,LPWSTR szFormat,ULONG cchFormat,ULONG *pchFormat,DWORD *pdwRegFormatAttr) PURE; 392 STDMETHOD(GetRoleCheckProps)(THIS_ mdScope scope,mdRoleCheck rc,LPWSTR szName,ULONG cchName,ULONG *pchName,DWORD *pdwRoleFlags) PURE; 393 STDMETHOD(ResolveTypeRef)(THIS_ mdScope is,mdTypeRef tr,mdScope *pes,mdTypeDef *ptd) PURE; 394 }; 395 #endif 396 397 #include <poppack.h> 398 399 #ifdef __cplusplus 400 } 401 #endif 402 #endif 403