Home | History | Annotate | Download | only in include
      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