correg.h 23 KB

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