zig

fork of https://codeberg.org/ziglang/zig
Log | Files | Refs | README | LICENSE

fusion.h (33172B) - Raw


      1 /*** Autogenerated by WIDL 10.4 from include/fusion.idl - Do not edit ***/
      2 
      3 #ifdef _WIN32
      4 #ifndef __REQUIRED_RPCNDR_H_VERSION__
      5 #define __REQUIRED_RPCNDR_H_VERSION__ 475
      6 #endif
      7 #include <rpc.h>
      8 #include <rpcndr.h>
      9 #endif
     10 
     11 #ifndef COM_NO_WINDOWS_H
     12 #include <windows.h>
     13 #include <ole2.h>
     14 #endif
     15 
     16 #ifndef __fusion_h__
     17 #define __fusion_h__
     18 
     19 /* Forward declarations */
     20 
     21 #ifndef __IAssemblyCache_FWD_DEFINED__
     22 #define __IAssemblyCache_FWD_DEFINED__
     23 typedef interface IAssemblyCache IAssemblyCache;
     24 #ifdef __cplusplus
     25 interface IAssemblyCache;
     26 #endif /* __cplusplus */
     27 #endif
     28 
     29 #ifndef __IAssemblyCacheItem_FWD_DEFINED__
     30 #define __IAssemblyCacheItem_FWD_DEFINED__
     31 typedef interface IAssemblyCacheItem IAssemblyCacheItem;
     32 #ifdef __cplusplus
     33 interface IAssemblyCacheItem;
     34 #endif /* __cplusplus */
     35 #endif
     36 
     37 #ifndef __IAssemblyName_FWD_DEFINED__
     38 #define __IAssemblyName_FWD_DEFINED__
     39 typedef interface IAssemblyName IAssemblyName;
     40 #ifdef __cplusplus
     41 interface IAssemblyName;
     42 #endif /* __cplusplus */
     43 #endif
     44 
     45 #ifndef __IAssemblyEnum_FWD_DEFINED__
     46 #define __IAssemblyEnum_FWD_DEFINED__
     47 typedef interface IAssemblyEnum IAssemblyEnum;
     48 #ifdef __cplusplus
     49 interface IAssemblyEnum;
     50 #endif /* __cplusplus */
     51 #endif
     52 
     53 #ifndef __IInstallReferenceItem_FWD_DEFINED__
     54 #define __IInstallReferenceItem_FWD_DEFINED__
     55 typedef interface IInstallReferenceItem IInstallReferenceItem;
     56 #ifdef __cplusplus
     57 interface IInstallReferenceItem;
     58 #endif /* __cplusplus */
     59 #endif
     60 
     61 #ifndef __IInstallReferenceEnum_FWD_DEFINED__
     62 #define __IInstallReferenceEnum_FWD_DEFINED__
     63 typedef interface IInstallReferenceEnum IInstallReferenceEnum;
     64 #ifdef __cplusplus
     65 interface IInstallReferenceEnum;
     66 #endif /* __cplusplus */
     67 #endif
     68 
     69 /* Headers for imported files */
     70 
     71 #include <objidl.h>
     72 
     73 #ifdef __cplusplus
     74 extern "C" {
     75 #endif
     76 
     77 #ifndef __IAssemblyCache_FWD_DEFINED__
     78 #define __IAssemblyCache_FWD_DEFINED__
     79 typedef interface IAssemblyCache IAssemblyCache;
     80 #ifdef __cplusplus
     81 interface IAssemblyCache;
     82 #endif /* __cplusplus */
     83 #endif
     84 
     85 #ifndef __IAssemblyCacheItem_FWD_DEFINED__
     86 #define __IAssemblyCacheItem_FWD_DEFINED__
     87 typedef interface IAssemblyCacheItem IAssemblyCacheItem;
     88 #ifdef __cplusplus
     89 interface IAssemblyCacheItem;
     90 #endif /* __cplusplus */
     91 #endif
     92 
     93 #ifndef __IAssemblyEnum_FWD_DEFINED__
     94 #define __IAssemblyEnum_FWD_DEFINED__
     95 typedef interface IAssemblyEnum IAssemblyEnum;
     96 #ifdef __cplusplus
     97 interface IAssemblyEnum;
     98 #endif /* __cplusplus */
     99 #endif
    100 
    101 #ifndef __IAssemblyName_FWD_DEFINED__
    102 #define __IAssemblyName_FWD_DEFINED__
    103 typedef interface IAssemblyName IAssemblyName;
    104 #ifdef __cplusplus
    105 interface IAssemblyName;
    106 #endif /* __cplusplus */
    107 #endif
    108 
    109 typedef enum __WIDL_fusion_generated_name_0000000E {
    110     ASM_CACHE_ZAP = 0x1,
    111     ASM_CACHE_GAC = 0x2,
    112     ASM_CACHE_DOWNLOAD = 0x4,
    113     ASM_CACHE_ROOT = 0x8,
    114     ASM_CACHE_ROOT_EX = 0x80
    115 } ASM_CACHE_FLAGS;
    116 typedef enum __WIDL_fusion_generated_name_0000000F {
    117     peNone = 0x0,
    118     peMSIL = 0x1,
    119     peI386 = 0x2,
    120     peIA64 = 0x3,
    121     peAMD64 = 0x4,
    122     peARM = 0x5,
    123     peInvalid = 0xffffffff
    124 } PEKIND;
    125 typedef enum _tagAssemblyComparisonResult {
    126     ACR_Unknown = 0,
    127     ACR_EquivalentFullMatch = 1,
    128     ACR_EquivalentWeakNamed = 2,
    129     ACR_EquivalentFXUnified = 3,
    130     ACR_EquivalentUnified = 4,
    131     ACR_NonEquivalentVersion = 5,
    132     ACR_NonEquivalent = 6,
    133     ACR_EquivalentPartialMatch = 7,
    134     ACR_EquivalentPartialWeakNamed = 8,
    135     ACR_EquivalentPartialUnified = 9,
    136     ACR_EquivalentPartialFXUnified = 10,
    137     ACR_NonEquivalentPartialVersion = 11
    138 } AssemblyComparisonResult;
    139 /*****************************************************************************
    140  * IAssemblyCache interface
    141  */
    142 #ifndef __IAssemblyCache_INTERFACE_DEFINED__
    143 #define __IAssemblyCache_INTERFACE_DEFINED__
    144 
    145 typedef struct _FUSION_INSTALL_REFERENCE_ {
    146     DWORD cbSize;
    147     DWORD dwFlags;
    148     GUID guidScheme;
    149     LPCWSTR szIdentifier;
    150     LPCWSTR szNonCannonicalData;
    151 } FUSION_INSTALL_REFERENCE;
    152 typedef struct _FUSION_INSTALL_REFERENCE_ *LPFUSION_INSTALL_REFERENCE;
    153 typedef const FUSION_INSTALL_REFERENCE *LPCFUSION_INSTALL_REFERENCE;
    154 typedef struct _ASSEMBLY_INFO {
    155     ULONG cbAssemblyInfo;
    156     DWORD dwAssemblyFlags;
    157     ULARGE_INTEGER uliAssemblySizeInKB;
    158     LPWSTR pszCurrentAssemblyPathBuf;
    159     ULONG cchBuf;
    160 } ASSEMBLY_INFO;
    161 #define IASSEMBLYCACHE_INSTALL_FLAG_REFRESH       0x00000001
    162 #define IASSEMBLYCACHE_INSTALL_FLAG_FORCE_REFRESH 0x00000002
    163 #define IASSEMBLYCACHE_UNINSTALL_DISPOSITION_UNINSTALLED 1
    164 #define IASSEMBLYCACHE_UNINSTALL_DISPOSITION_STILL_IN_USE 2
    165 #define IASSEMBLYCACHE_UNINSTALL_DISPOSITION_ALREADY_UNINSTALLED 3
    166 #define IASSEMBLYCACHE_UNINSTALL_DISPOSITION_DELETE_PENDING 4
    167 #define IASSEMBLYCACHE_UNINSTALL_DISPOSITION_HAS_INSTALL_REFERENCES 5
    168 #define IASSEMBLYCACHE_UNINSTALL_DISPOSITION_REFERENCE_NOT_FOUND 6
    169 #define QUERYASMINFO_FLAG_VALIDATE   0x00000001
    170 #define QUERYASMINFO_FLAG_GETSIZE    0x00000002
    171 #define ASSEMBLYINFO_FLAG_INSTALLED       0x00000001
    172 #define ASSEMBLYINFO_FLAG_PAYLOADRESIDENT 0x00000002
    173 DEFINE_GUID(IID_IAssemblyCache, 0xe707dcde, 0xd1cd, 0x11d2, 0xba,0xb9, 0x00,0xc0,0x4f,0x8e,0xce,0xae);
    174 #if defined(__cplusplus) && !defined(CINTERFACE)
    175 MIDL_INTERFACE("e707dcde-d1cd-11d2-bab9-00c04f8eceae")
    176 IAssemblyCache : public IUnknown
    177 {
    178     virtual HRESULT STDMETHODCALLTYPE UninstallAssembly(
    179         DWORD dwFlags,
    180         LPCWSTR pszAssemblyName,
    181         LPCFUSION_INSTALL_REFERENCE pRefData,
    182         ULONG *pulDisposition) = 0;
    183 
    184     virtual HRESULT STDMETHODCALLTYPE QueryAssemblyInfo(
    185         DWORD dwFlags,
    186         LPCWSTR pszAssemblyName,
    187         ASSEMBLY_INFO *pAsmInfo) = 0;
    188 
    189     virtual HRESULT STDMETHODCALLTYPE CreateAssemblyCacheItem(
    190         DWORD dwFlags,
    191         PVOID pvReserved,
    192         IAssemblyCacheItem **ppAsmItem,
    193         LPCWSTR pszAssemblyName) = 0;
    194 
    195     virtual HRESULT STDMETHODCALLTYPE CreateAssemblyScavenger(
    196         IUnknown **ppUnkReserved) = 0;
    197 
    198     virtual HRESULT STDMETHODCALLTYPE InstallAssembly(
    199         DWORD dwFlags,
    200         LPCWSTR pszManifestFilePath,
    201         LPCFUSION_INSTALL_REFERENCE pRefData) = 0;
    202 
    203 };
    204 #ifdef __CRT_UUID_DECL
    205 __CRT_UUID_DECL(IAssemblyCache, 0xe707dcde, 0xd1cd, 0x11d2, 0xba,0xb9, 0x00,0xc0,0x4f,0x8e,0xce,0xae)
    206 #endif
    207 #else
    208 typedef struct IAssemblyCacheVtbl {
    209     BEGIN_INTERFACE
    210 
    211     /*** IUnknown methods ***/
    212     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
    213         IAssemblyCache *This,
    214         REFIID riid,
    215         void **ppvObject);
    216 
    217     ULONG (STDMETHODCALLTYPE *AddRef)(
    218         IAssemblyCache *This);
    219 
    220     ULONG (STDMETHODCALLTYPE *Release)(
    221         IAssemblyCache *This);
    222 
    223     /*** IAssemblyCache methods ***/
    224     HRESULT (STDMETHODCALLTYPE *UninstallAssembly)(
    225         IAssemblyCache *This,
    226         DWORD dwFlags,
    227         LPCWSTR pszAssemblyName,
    228         LPCFUSION_INSTALL_REFERENCE pRefData,
    229         ULONG *pulDisposition);
    230 
    231     HRESULT (STDMETHODCALLTYPE *QueryAssemblyInfo)(
    232         IAssemblyCache *This,
    233         DWORD dwFlags,
    234         LPCWSTR pszAssemblyName,
    235         ASSEMBLY_INFO *pAsmInfo);
    236 
    237     HRESULT (STDMETHODCALLTYPE *CreateAssemblyCacheItem)(
    238         IAssemblyCache *This,
    239         DWORD dwFlags,
    240         PVOID pvReserved,
    241         IAssemblyCacheItem **ppAsmItem,
    242         LPCWSTR pszAssemblyName);
    243 
    244     HRESULT (STDMETHODCALLTYPE *CreateAssemblyScavenger)(
    245         IAssemblyCache *This,
    246         IUnknown **ppUnkReserved);
    247 
    248     HRESULT (STDMETHODCALLTYPE *InstallAssembly)(
    249         IAssemblyCache *This,
    250         DWORD dwFlags,
    251         LPCWSTR pszManifestFilePath,
    252         LPCFUSION_INSTALL_REFERENCE pRefData);
    253 
    254     END_INTERFACE
    255 } IAssemblyCacheVtbl;
    256 
    257 interface IAssemblyCache {
    258     CONST_VTBL IAssemblyCacheVtbl* lpVtbl;
    259 };
    260 
    261 #ifdef COBJMACROS
    262 #ifndef WIDL_C_INLINE_WRAPPERS
    263 /*** IUnknown methods ***/
    264 #define IAssemblyCache_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
    265 #define IAssemblyCache_AddRef(This) (This)->lpVtbl->AddRef(This)
    266 #define IAssemblyCache_Release(This) (This)->lpVtbl->Release(This)
    267 /*** IAssemblyCache methods ***/
    268 #define IAssemblyCache_UninstallAssembly(This,dwFlags,pszAssemblyName,pRefData,pulDisposition) (This)->lpVtbl->UninstallAssembly(This,dwFlags,pszAssemblyName,pRefData,pulDisposition)
    269 #define IAssemblyCache_QueryAssemblyInfo(This,dwFlags,pszAssemblyName,pAsmInfo) (This)->lpVtbl->QueryAssemblyInfo(This,dwFlags,pszAssemblyName,pAsmInfo)
    270 #define IAssemblyCache_CreateAssemblyCacheItem(This,dwFlags,pvReserved,ppAsmItem,pszAssemblyName) (This)->lpVtbl->CreateAssemblyCacheItem(This,dwFlags,pvReserved,ppAsmItem,pszAssemblyName)
    271 #define IAssemblyCache_CreateAssemblyScavenger(This,ppUnkReserved) (This)->lpVtbl->CreateAssemblyScavenger(This,ppUnkReserved)
    272 #define IAssemblyCache_InstallAssembly(This,dwFlags,pszManifestFilePath,pRefData) (This)->lpVtbl->InstallAssembly(This,dwFlags,pszManifestFilePath,pRefData)
    273 #else
    274 /*** IUnknown methods ***/
    275 static inline HRESULT IAssemblyCache_QueryInterface(IAssemblyCache* This,REFIID riid,void **ppvObject) {
    276     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
    277 }
    278 static inline ULONG IAssemblyCache_AddRef(IAssemblyCache* This) {
    279     return This->lpVtbl->AddRef(This);
    280 }
    281 static inline ULONG IAssemblyCache_Release(IAssemblyCache* This) {
    282     return This->lpVtbl->Release(This);
    283 }
    284 /*** IAssemblyCache methods ***/
    285 static inline HRESULT IAssemblyCache_UninstallAssembly(IAssemblyCache* This,DWORD dwFlags,LPCWSTR pszAssemblyName,LPCFUSION_INSTALL_REFERENCE pRefData,ULONG *pulDisposition) {
    286     return This->lpVtbl->UninstallAssembly(This,dwFlags,pszAssemblyName,pRefData,pulDisposition);
    287 }
    288 static inline HRESULT IAssemblyCache_QueryAssemblyInfo(IAssemblyCache* This,DWORD dwFlags,LPCWSTR pszAssemblyName,ASSEMBLY_INFO *pAsmInfo) {
    289     return This->lpVtbl->QueryAssemblyInfo(This,dwFlags,pszAssemblyName,pAsmInfo);
    290 }
    291 static inline HRESULT IAssemblyCache_CreateAssemblyCacheItem(IAssemblyCache* This,DWORD dwFlags,PVOID pvReserved,IAssemblyCacheItem **ppAsmItem,LPCWSTR pszAssemblyName) {
    292     return This->lpVtbl->CreateAssemblyCacheItem(This,dwFlags,pvReserved,ppAsmItem,pszAssemblyName);
    293 }
    294 static inline HRESULT IAssemblyCache_CreateAssemblyScavenger(IAssemblyCache* This,IUnknown **ppUnkReserved) {
    295     return This->lpVtbl->CreateAssemblyScavenger(This,ppUnkReserved);
    296 }
    297 static inline HRESULT IAssemblyCache_InstallAssembly(IAssemblyCache* This,DWORD dwFlags,LPCWSTR pszManifestFilePath,LPCFUSION_INSTALL_REFERENCE pRefData) {
    298     return This->lpVtbl->InstallAssembly(This,dwFlags,pszManifestFilePath,pRefData);
    299 }
    300 #endif
    301 #endif
    302 
    303 #endif
    304 
    305 
    306 #endif  /* __IAssemblyCache_INTERFACE_DEFINED__ */
    307 
    308 /*****************************************************************************
    309  * IAssemblyCacheItem interface
    310  */
    311 #ifndef __IAssemblyCacheItem_INTERFACE_DEFINED__
    312 #define __IAssemblyCacheItem_INTERFACE_DEFINED__
    313 
    314 #define STREAM_FORMAT_COMPLIB_MODULE    0
    315 #define STREAM_FORMAT_COMPLIB_MANIFEST  1
    316 #define STREAM_FORMAT_WIN32_MODULE      2
    317 #define STREAM_FORMAT_WIN32_MANIFEST    4
    318 #define IASSEMBLYCACHEITEM_COMMIT_FLAG_REFRESH       0x00000001
    319 #define IASSEMBLYCACHEITEM_COMMIT_FLAG_FORCE_REFRESH 0x00000002
    320 #define IASSEMBLYCACHEITEM_COMMIT_DISPOSITION_INSTALLED 1
    321 #define IASSEMBLYCACHEITEM_COMMIT_DISPOSITION_REFRESHED 2
    322 #define IASSEMBLYCACHEITEM_COMMIT_DISPOSITION_ALREADY_INSTALLED 3
    323 DEFINE_GUID(IID_IAssemblyCacheItem, 0x9e3aaeb4, 0xd1cd, 0x11d2, 0xba,0xb9, 0x00,0xc0,0x4f,0x8e,0xce,0xae);
    324 #if defined(__cplusplus) && !defined(CINTERFACE)
    325 MIDL_INTERFACE("9e3aaeb4-d1cd-11d2-bab9-00c04f8eceae")
    326 IAssemblyCacheItem : public IUnknown
    327 {
    328     virtual HRESULT STDMETHODCALLTYPE CreateStream(
    329         DWORD dwFlags,
    330         LPCWSTR pszStreamName,
    331         DWORD dwFormat,
    332         DWORD dwFormatFlags,
    333         IStream **ppIStream,
    334         ULARGE_INTEGER *puliMaxSize) = 0;
    335 
    336     virtual HRESULT STDMETHODCALLTYPE Commit(
    337         DWORD dwFlags,
    338         ULONG *pulDisposition) = 0;
    339 
    340     virtual HRESULT STDMETHODCALLTYPE AbortItem(
    341         ) = 0;
    342 
    343 };
    344 #ifdef __CRT_UUID_DECL
    345 __CRT_UUID_DECL(IAssemblyCacheItem, 0x9e3aaeb4, 0xd1cd, 0x11d2, 0xba,0xb9, 0x00,0xc0,0x4f,0x8e,0xce,0xae)
    346 #endif
    347 #else
    348 typedef struct IAssemblyCacheItemVtbl {
    349     BEGIN_INTERFACE
    350 
    351     /*** IUnknown methods ***/
    352     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
    353         IAssemblyCacheItem *This,
    354         REFIID riid,
    355         void **ppvObject);
    356 
    357     ULONG (STDMETHODCALLTYPE *AddRef)(
    358         IAssemblyCacheItem *This);
    359 
    360     ULONG (STDMETHODCALLTYPE *Release)(
    361         IAssemblyCacheItem *This);
    362 
    363     /*** IAssemblyCacheItem methods ***/
    364     HRESULT (STDMETHODCALLTYPE *CreateStream)(
    365         IAssemblyCacheItem *This,
    366         DWORD dwFlags,
    367         LPCWSTR pszStreamName,
    368         DWORD dwFormat,
    369         DWORD dwFormatFlags,
    370         IStream **ppIStream,
    371         ULARGE_INTEGER *puliMaxSize);
    372 
    373     HRESULT (STDMETHODCALLTYPE *Commit)(
    374         IAssemblyCacheItem *This,
    375         DWORD dwFlags,
    376         ULONG *pulDisposition);
    377 
    378     HRESULT (STDMETHODCALLTYPE *AbortItem)(
    379         IAssemblyCacheItem *This);
    380 
    381     END_INTERFACE
    382 } IAssemblyCacheItemVtbl;
    383 
    384 interface IAssemblyCacheItem {
    385     CONST_VTBL IAssemblyCacheItemVtbl* lpVtbl;
    386 };
    387 
    388 #ifdef COBJMACROS
    389 #ifndef WIDL_C_INLINE_WRAPPERS
    390 /*** IUnknown methods ***/
    391 #define IAssemblyCacheItem_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
    392 #define IAssemblyCacheItem_AddRef(This) (This)->lpVtbl->AddRef(This)
    393 #define IAssemblyCacheItem_Release(This) (This)->lpVtbl->Release(This)
    394 /*** IAssemblyCacheItem methods ***/
    395 #define IAssemblyCacheItem_CreateStream(This,dwFlags,pszStreamName,dwFormat,dwFormatFlags,ppIStream,puliMaxSize) (This)->lpVtbl->CreateStream(This,dwFlags,pszStreamName,dwFormat,dwFormatFlags,ppIStream,puliMaxSize)
    396 #define IAssemblyCacheItem_Commit(This,dwFlags,pulDisposition) (This)->lpVtbl->Commit(This,dwFlags,pulDisposition)
    397 #define IAssemblyCacheItem_AbortItem(This) (This)->lpVtbl->AbortItem(This)
    398 #else
    399 /*** IUnknown methods ***/
    400 static inline HRESULT IAssemblyCacheItem_QueryInterface(IAssemblyCacheItem* This,REFIID riid,void **ppvObject) {
    401     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
    402 }
    403 static inline ULONG IAssemblyCacheItem_AddRef(IAssemblyCacheItem* This) {
    404     return This->lpVtbl->AddRef(This);
    405 }
    406 static inline ULONG IAssemblyCacheItem_Release(IAssemblyCacheItem* This) {
    407     return This->lpVtbl->Release(This);
    408 }
    409 /*** IAssemblyCacheItem methods ***/
    410 static inline HRESULT IAssemblyCacheItem_CreateStream(IAssemblyCacheItem* This,DWORD dwFlags,LPCWSTR pszStreamName,DWORD dwFormat,DWORD dwFormatFlags,IStream **ppIStream,ULARGE_INTEGER *puliMaxSize) {
    411     return This->lpVtbl->CreateStream(This,dwFlags,pszStreamName,dwFormat,dwFormatFlags,ppIStream,puliMaxSize);
    412 }
    413 static inline HRESULT IAssemblyCacheItem_Commit(IAssemblyCacheItem* This,DWORD dwFlags,ULONG *pulDisposition) {
    414     return This->lpVtbl->Commit(This,dwFlags,pulDisposition);
    415 }
    416 static inline HRESULT IAssemblyCacheItem_AbortItem(IAssemblyCacheItem* This) {
    417     return This->lpVtbl->AbortItem(This);
    418 }
    419 #endif
    420 #endif
    421 
    422 #endif
    423 
    424 
    425 #endif  /* __IAssemblyCacheItem_INTERFACE_DEFINED__ */
    426 
    427 /*****************************************************************************
    428  * IAssemblyName interface
    429  */
    430 #ifndef __IAssemblyName_INTERFACE_DEFINED__
    431 #define __IAssemblyName_INTERFACE_DEFINED__
    432 
    433 typedef IAssemblyName *LPASSEMBLYNAME;
    434 typedef enum __WIDL_fusion_generated_name_00000010 {
    435     CANOF_PARSE_DISPLAY_NAME = 0x1,
    436     CANOF_SET_DEFAULT_VALUES = 0x2,
    437     CANOF_VERIFY_FRIEND_ASSEMBLYNAME = 0x4,
    438     CANOF_PARSE_FRIEND_DISPLAY_NAME = CANOF_PARSE_DISPLAY_NAME | CANOF_VERIFY_FRIEND_ASSEMBLYNAME
    439 } CREATE_ASM_NAME_OBJ_FLAGS;
    440 typedef enum __WIDL_fusion_generated_name_00000011 {
    441     ASM_NAME_PUBLIC_KEY = 0,
    442     ASM_NAME_PUBLIC_KEY_TOKEN = 1,
    443     ASM_NAME_HASH_VALUE = 2,
    444     ASM_NAME_NAME = 3,
    445     ASM_NAME_MAJOR_VERSION = 4,
    446     ASM_NAME_MINOR_VERSION = 5,
    447     ASM_NAME_BUILD_NUMBER = 6,
    448     ASM_NAME_REVISION_NUMBER = 7,
    449     ASM_NAME_CULTURE = 8,
    450     ASM_NAME_PROCESSOR_ID_ARRAY = 9,
    451     ASM_NAME_OSINFO_ARRAY = 10,
    452     ASM_NAME_HASH_ALGID = 11,
    453     ASM_NAME_ALIAS = 12,
    454     ASM_NAME_CODEBASE_URL = 13,
    455     ASM_NAME_CODEBASE_LASTMOD = 14,
    456     ASM_NAME_NULL_PUBLIC_KEY = 15,
    457     ASM_NAME_NULL_PUBLIC_KEY_TOKEN = 16,
    458     ASM_NAME_CUSTOM = 17,
    459     ASM_NAME_NULL_CUSTOM = 18,
    460     ASM_NAME_MVID = 19,
    461     ASM_NAME_FILE_MAJOR_VERSION = 20,
    462     ASM_NAME_FILE_MINOR_VERSION = 21,
    463     ASM_NAME_FILE_BUILD_NUMBER = 22,
    464     ASM_NAME_FILE_REVISION_NUMBER = 23,
    465     ASM_NAME_RETARGET = 24,
    466     ASM_NAME_SIGNATURE_BLOB = 25,
    467     ASM_NAME_CONFIG_MASK = 26,
    468     ASM_NAME_ARCHITECTURE = 27,
    469     ASM_NAME_MAX_PARAMS = 28
    470 } ASM_NAME;
    471 typedef enum __WIDL_fusion_generated_name_00000012 {
    472     ASM_DISPLAYF_VERSION = 0x1,
    473     ASM_DISPLAYF_CULTURE = 0x2,
    474     ASM_DISPLAYF_PUBLIC_KEY_TOKEN = 0x4,
    475     ASM_DISPLAYF_PUBLIC_KEY = 0x8,
    476     ASM_DISPLAYF_CUSTOM = 0x10,
    477     ASM_DISPLAYF_PROCESSORARCHITECTURE = 0x20,
    478     ASM_DISPLAYF_LANGUAGEID = 0x40,
    479     ASM_DISPLAYF_RETARGET = 0x80,
    480     ASM_DISPLAYF_CONFIG_MASK = 0x100,
    481     ASM_DISPLAYF_MVID = 0x200,
    482     ASM_DISPLAYF_FULL = (((ASM_DISPLAYF_VERSION | ASM_DISPLAYF_CULTURE) | ASM_DISPLAYF_PUBLIC_KEY_TOKEN) | ASM_DISPLAYF_RETARGET) | ASM_DISPLAYF_PROCESSORARCHITECTURE
    483 } ASM_DISPLAY_FLAGS;
    484 typedef enum __WIDL_fusion_generated_name_00000013 {
    485     ASM_CMPF_NAME = 0x1,
    486     ASM_CMPF_MAJOR_VERSION = 0x2,
    487     ASM_CMPF_MINOR_VERSION = 0x4,
    488     ASM_CMPF_BUILD_NUMBER = 0x8,
    489     ASM_CMPF_REVISION_NUMBER = 0x10,
    490     ASM_CMPF_VERSION = ((ASM_CMPF_MAJOR_VERSION | ASM_CMPF_MINOR_VERSION) | ASM_CMPF_BUILD_NUMBER) | ASM_CMPF_REVISION_NUMBER,
    491     ASM_CMPF_PUBLIC_KEY_TOKEN = 0x20,
    492     ASM_CMPF_CULTURE = 0x40,
    493     ASM_CMPF_CUSTOM = 0x80,
    494     ASM_CMPF_DEFAULT = 0x100,
    495     ASM_CMPF_RETARGET = 0x200,
    496     ASM_CMPF_ARCHITECTURE = 0x400,
    497     ASM_CMPF_CONFIG_MASK = 0x800,
    498     ASM_CMPF_MVID = 0x1000,
    499     ASM_CMPF_SIGNATURE = 0x2000,
    500     ASM_CMPF_IL_ALL = ((ASM_CMPF_NAME | ASM_CMPF_VERSION) | ASM_CMPF_PUBLIC_KEY_TOKEN) | ASM_CMPF_CULTURE,
    501     ASM_CMPF_IL_NO_VERSION = (ASM_CMPF_NAME | ASM_CMPF_PUBLIC_KEY_TOKEN) | ASM_CMPF_CULTURE
    502 } ASM_CMP_FLAGS;
    503 DEFINE_GUID(IID_IAssemblyName, 0xcd193bc0, 0xb4bc, 0x11d2, 0x98,0x33, 0x00,0xc0,0x4f,0xc3,0x1d,0x2e);
    504 #if defined(__cplusplus) && !defined(CINTERFACE)
    505 MIDL_INTERFACE("cd193bc0-b4bc-11d2-9833-00c04fc31d2e")
    506 IAssemblyName : public IUnknown
    507 {
    508     virtual HRESULT STDMETHODCALLTYPE SetProperty(
    509         DWORD PropertyId,
    510         LPVOID pvProperty,
    511         DWORD cbProperty) = 0;
    512 
    513     virtual HRESULT STDMETHODCALLTYPE GetProperty(
    514         DWORD PropertyId,
    515         LPVOID pvProperty,
    516         LPDWORD pcbProperty) = 0;
    517 
    518     virtual HRESULT STDMETHODCALLTYPE Finalize(
    519         ) = 0;
    520 
    521     virtual HRESULT STDMETHODCALLTYPE GetDisplayName(
    522         LPOLESTR szDisplayName,
    523         LPDWORD pccDisplayName,
    524         DWORD dwDisplayFlags) = 0;
    525 
    526     virtual HRESULT STDMETHODCALLTYPE Reserved(
    527         REFIID refIID,
    528         IUnknown *pUnkReserved1,
    529         IUnknown *pUnkReserved2,
    530         LPCOLESTR szReserved,
    531         LONGLONG llReserved,
    532         LPVOID pvReserved,
    533         DWORD cbReserved,
    534         LPVOID *ppReserved) = 0;
    535 
    536     virtual HRESULT STDMETHODCALLTYPE GetName(
    537         LPDWORD lpcwBuffer,
    538         WCHAR *pwzName) = 0;
    539 
    540     virtual HRESULT STDMETHODCALLTYPE GetVersion(
    541         LPDWORD pdwVersionHi,
    542         LPDWORD pdwVersionLow) = 0;
    543 
    544     virtual HRESULT STDMETHODCALLTYPE IsEqual(
    545         IAssemblyName *pName,
    546         DWORD dwCmpFlags) = 0;
    547 
    548     virtual HRESULT STDMETHODCALLTYPE Clone(
    549         IAssemblyName **pName) = 0;
    550 
    551 };
    552 #ifdef __CRT_UUID_DECL
    553 __CRT_UUID_DECL(IAssemblyName, 0xcd193bc0, 0xb4bc, 0x11d2, 0x98,0x33, 0x00,0xc0,0x4f,0xc3,0x1d,0x2e)
    554 #endif
    555 #else
    556 typedef struct IAssemblyNameVtbl {
    557     BEGIN_INTERFACE
    558 
    559     /*** IUnknown methods ***/
    560     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
    561         IAssemblyName *This,
    562         REFIID riid,
    563         void **ppvObject);
    564 
    565     ULONG (STDMETHODCALLTYPE *AddRef)(
    566         IAssemblyName *This);
    567 
    568     ULONG (STDMETHODCALLTYPE *Release)(
    569         IAssemblyName *This);
    570 
    571     /*** IAssemblyName methods ***/
    572     HRESULT (STDMETHODCALLTYPE *SetProperty)(
    573         IAssemblyName *This,
    574         DWORD PropertyId,
    575         LPVOID pvProperty,
    576         DWORD cbProperty);
    577 
    578     HRESULT (STDMETHODCALLTYPE *GetProperty)(
    579         IAssemblyName *This,
    580         DWORD PropertyId,
    581         LPVOID pvProperty,
    582         LPDWORD pcbProperty);
    583 
    584     HRESULT (STDMETHODCALLTYPE *Finalize)(
    585         IAssemblyName *This);
    586 
    587     HRESULT (STDMETHODCALLTYPE *GetDisplayName)(
    588         IAssemblyName *This,
    589         LPOLESTR szDisplayName,
    590         LPDWORD pccDisplayName,
    591         DWORD dwDisplayFlags);
    592 
    593     HRESULT (STDMETHODCALLTYPE *Reserved)(
    594         IAssemblyName *This,
    595         REFIID refIID,
    596         IUnknown *pUnkReserved1,
    597         IUnknown *pUnkReserved2,
    598         LPCOLESTR szReserved,
    599         LONGLONG llReserved,
    600         LPVOID pvReserved,
    601         DWORD cbReserved,
    602         LPVOID *ppReserved);
    603 
    604     HRESULT (STDMETHODCALLTYPE *GetName)(
    605         IAssemblyName *This,
    606         LPDWORD lpcwBuffer,
    607         WCHAR *pwzName);
    608 
    609     HRESULT (STDMETHODCALLTYPE *GetVersion)(
    610         IAssemblyName *This,
    611         LPDWORD pdwVersionHi,
    612         LPDWORD pdwVersionLow);
    613 
    614     HRESULT (STDMETHODCALLTYPE *IsEqual)(
    615         IAssemblyName *This,
    616         IAssemblyName *pName,
    617         DWORD dwCmpFlags);
    618 
    619     HRESULT (STDMETHODCALLTYPE *Clone)(
    620         IAssemblyName *This,
    621         IAssemblyName **pName);
    622 
    623     END_INTERFACE
    624 } IAssemblyNameVtbl;
    625 
    626 interface IAssemblyName {
    627     CONST_VTBL IAssemblyNameVtbl* lpVtbl;
    628 };
    629 
    630 #ifdef COBJMACROS
    631 #ifndef WIDL_C_INLINE_WRAPPERS
    632 /*** IUnknown methods ***/
    633 #define IAssemblyName_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
    634 #define IAssemblyName_AddRef(This) (This)->lpVtbl->AddRef(This)
    635 #define IAssemblyName_Release(This) (This)->lpVtbl->Release(This)
    636 /*** IAssemblyName methods ***/
    637 #define IAssemblyName_SetProperty(This,PropertyId,pvProperty,cbProperty) (This)->lpVtbl->SetProperty(This,PropertyId,pvProperty,cbProperty)
    638 #define IAssemblyName_GetProperty(This,PropertyId,pvProperty,pcbProperty) (This)->lpVtbl->GetProperty(This,PropertyId,pvProperty,pcbProperty)
    639 #define IAssemblyName_Finalize(This) (This)->lpVtbl->Finalize(This)
    640 #define IAssemblyName_GetDisplayName(This,szDisplayName,pccDisplayName,dwDisplayFlags) (This)->lpVtbl->GetDisplayName(This,szDisplayName,pccDisplayName,dwDisplayFlags)
    641 #define IAssemblyName_Reserved(This,refIID,pUnkReserved1,pUnkReserved2,szReserved,llReserved,pvReserved,cbReserved,ppReserved) (This)->lpVtbl->Reserved(This,refIID,pUnkReserved1,pUnkReserved2,szReserved,llReserved,pvReserved,cbReserved,ppReserved)
    642 #define IAssemblyName_GetName(This,lpcwBuffer,pwzName) (This)->lpVtbl->GetName(This,lpcwBuffer,pwzName)
    643 #define IAssemblyName_GetVersion(This,pdwVersionHi,pdwVersionLow) (This)->lpVtbl->GetVersion(This,pdwVersionHi,pdwVersionLow)
    644 #define IAssemblyName_IsEqual(This,pName,dwCmpFlags) (This)->lpVtbl->IsEqual(This,pName,dwCmpFlags)
    645 #define IAssemblyName_Clone(This,pName) (This)->lpVtbl->Clone(This,pName)
    646 #else
    647 /*** IUnknown methods ***/
    648 static inline HRESULT IAssemblyName_QueryInterface(IAssemblyName* This,REFIID riid,void **ppvObject) {
    649     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
    650 }
    651 static inline ULONG IAssemblyName_AddRef(IAssemblyName* This) {
    652     return This->lpVtbl->AddRef(This);
    653 }
    654 static inline ULONG IAssemblyName_Release(IAssemblyName* This) {
    655     return This->lpVtbl->Release(This);
    656 }
    657 /*** IAssemblyName methods ***/
    658 static inline HRESULT IAssemblyName_SetProperty(IAssemblyName* This,DWORD PropertyId,LPVOID pvProperty,DWORD cbProperty) {
    659     return This->lpVtbl->SetProperty(This,PropertyId,pvProperty,cbProperty);
    660 }
    661 static inline HRESULT IAssemblyName_GetProperty(IAssemblyName* This,DWORD PropertyId,LPVOID pvProperty,LPDWORD pcbProperty) {
    662     return This->lpVtbl->GetProperty(This,PropertyId,pvProperty,pcbProperty);
    663 }
    664 static inline HRESULT IAssemblyName_Finalize(IAssemblyName* This) {
    665     return This->lpVtbl->Finalize(This);
    666 }
    667 static inline HRESULT IAssemblyName_GetDisplayName(IAssemblyName* This,LPOLESTR szDisplayName,LPDWORD pccDisplayName,DWORD dwDisplayFlags) {
    668     return This->lpVtbl->GetDisplayName(This,szDisplayName,pccDisplayName,dwDisplayFlags);
    669 }
    670 static inline HRESULT IAssemblyName_Reserved(IAssemblyName* This,REFIID refIID,IUnknown *pUnkReserved1,IUnknown *pUnkReserved2,LPCOLESTR szReserved,LONGLONG llReserved,LPVOID pvReserved,DWORD cbReserved,LPVOID *ppReserved) {
    671     return This->lpVtbl->Reserved(This,refIID,pUnkReserved1,pUnkReserved2,szReserved,llReserved,pvReserved,cbReserved,ppReserved);
    672 }
    673 static inline HRESULT IAssemblyName_GetName(IAssemblyName* This,LPDWORD lpcwBuffer,WCHAR *pwzName) {
    674     return This->lpVtbl->GetName(This,lpcwBuffer,pwzName);
    675 }
    676 static inline HRESULT IAssemblyName_GetVersion(IAssemblyName* This,LPDWORD pdwVersionHi,LPDWORD pdwVersionLow) {
    677     return This->lpVtbl->GetVersion(This,pdwVersionHi,pdwVersionLow);
    678 }
    679 static inline HRESULT IAssemblyName_IsEqual(IAssemblyName* This,IAssemblyName *pName,DWORD dwCmpFlags) {
    680     return This->lpVtbl->IsEqual(This,pName,dwCmpFlags);
    681 }
    682 static inline HRESULT IAssemblyName_Clone(IAssemblyName* This,IAssemblyName **pName) {
    683     return This->lpVtbl->Clone(This,pName);
    684 }
    685 #endif
    686 #endif
    687 
    688 #endif
    689 
    690 
    691 #endif  /* __IAssemblyName_INTERFACE_DEFINED__ */
    692 
    693 /*****************************************************************************
    694  * IAssemblyEnum interface
    695  */
    696 #ifndef __IAssemblyEnum_INTERFACE_DEFINED__
    697 #define __IAssemblyEnum_INTERFACE_DEFINED__
    698 
    699 DEFINE_GUID(IID_IAssemblyEnum, 0x21b8916c, 0xf28e, 0x11d2, 0xa4,0x73, 0x00,0xc0,0x4f,0x8e,0xf4,0x48);
    700 #if defined(__cplusplus) && !defined(CINTERFACE)
    701 MIDL_INTERFACE("21b8916c-f28e-11d2-a473-00c04f8ef448")
    702 IAssemblyEnum : public IUnknown
    703 {
    704     virtual HRESULT STDMETHODCALLTYPE GetNextAssembly(
    705         LPVOID pvReserved,
    706         IAssemblyName **ppName,
    707         DWORD dwFlags) = 0;
    708 
    709     virtual HRESULT STDMETHODCALLTYPE Reset(
    710         ) = 0;
    711 
    712     virtual HRESULT STDMETHODCALLTYPE Clone(
    713         IAssemblyEnum **ppEnum) = 0;
    714 
    715 };
    716 #ifdef __CRT_UUID_DECL
    717 __CRT_UUID_DECL(IAssemblyEnum, 0x21b8916c, 0xf28e, 0x11d2, 0xa4,0x73, 0x00,0xc0,0x4f,0x8e,0xf4,0x48)
    718 #endif
    719 #else
    720 typedef struct IAssemblyEnumVtbl {
    721     BEGIN_INTERFACE
    722 
    723     /*** IUnknown methods ***/
    724     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
    725         IAssemblyEnum *This,
    726         REFIID riid,
    727         void **ppvObject);
    728 
    729     ULONG (STDMETHODCALLTYPE *AddRef)(
    730         IAssemblyEnum *This);
    731 
    732     ULONG (STDMETHODCALLTYPE *Release)(
    733         IAssemblyEnum *This);
    734 
    735     /*** IAssemblyEnum methods ***/
    736     HRESULT (STDMETHODCALLTYPE *GetNextAssembly)(
    737         IAssemblyEnum *This,
    738         LPVOID pvReserved,
    739         IAssemblyName **ppName,
    740         DWORD dwFlags);
    741 
    742     HRESULT (STDMETHODCALLTYPE *Reset)(
    743         IAssemblyEnum *This);
    744 
    745     HRESULT (STDMETHODCALLTYPE *Clone)(
    746         IAssemblyEnum *This,
    747         IAssemblyEnum **ppEnum);
    748 
    749     END_INTERFACE
    750 } IAssemblyEnumVtbl;
    751 
    752 interface IAssemblyEnum {
    753     CONST_VTBL IAssemblyEnumVtbl* lpVtbl;
    754 };
    755 
    756 #ifdef COBJMACROS
    757 #ifndef WIDL_C_INLINE_WRAPPERS
    758 /*** IUnknown methods ***/
    759 #define IAssemblyEnum_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
    760 #define IAssemblyEnum_AddRef(This) (This)->lpVtbl->AddRef(This)
    761 #define IAssemblyEnum_Release(This) (This)->lpVtbl->Release(This)
    762 /*** IAssemblyEnum methods ***/
    763 #define IAssemblyEnum_GetNextAssembly(This,pvReserved,ppName,dwFlags) (This)->lpVtbl->GetNextAssembly(This,pvReserved,ppName,dwFlags)
    764 #define IAssemblyEnum_Reset(This) (This)->lpVtbl->Reset(This)
    765 #define IAssemblyEnum_Clone(This,ppEnum) (This)->lpVtbl->Clone(This,ppEnum)
    766 #else
    767 /*** IUnknown methods ***/
    768 static inline HRESULT IAssemblyEnum_QueryInterface(IAssemblyEnum* This,REFIID riid,void **ppvObject) {
    769     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
    770 }
    771 static inline ULONG IAssemblyEnum_AddRef(IAssemblyEnum* This) {
    772     return This->lpVtbl->AddRef(This);
    773 }
    774 static inline ULONG IAssemblyEnum_Release(IAssemblyEnum* This) {
    775     return This->lpVtbl->Release(This);
    776 }
    777 /*** IAssemblyEnum methods ***/
    778 static inline HRESULT IAssemblyEnum_GetNextAssembly(IAssemblyEnum* This,LPVOID pvReserved,IAssemblyName **ppName,DWORD dwFlags) {
    779     return This->lpVtbl->GetNextAssembly(This,pvReserved,ppName,dwFlags);
    780 }
    781 static inline HRESULT IAssemblyEnum_Reset(IAssemblyEnum* This) {
    782     return This->lpVtbl->Reset(This);
    783 }
    784 static inline HRESULT IAssemblyEnum_Clone(IAssemblyEnum* This,IAssemblyEnum **ppEnum) {
    785     return This->lpVtbl->Clone(This,ppEnum);
    786 }
    787 #endif
    788 #endif
    789 
    790 #endif
    791 
    792 
    793 #endif  /* __IAssemblyEnum_INTERFACE_DEFINED__ */
    794 
    795 /*****************************************************************************
    796  * IInstallReferenceItem interface
    797  */
    798 #ifndef __IInstallReferenceItem_INTERFACE_DEFINED__
    799 #define __IInstallReferenceItem_INTERFACE_DEFINED__
    800 
    801 DEFINE_GUID(IID_IInstallReferenceItem, 0x582dac66, 0xe678, 0x449f, 0xab,0xa6, 0x6f,0xaa,0xec,0x8a,0x93,0x94);
    802 #if defined(__cplusplus) && !defined(CINTERFACE)
    803 MIDL_INTERFACE("582dac66-e678-449f-aba6-6faaec8a9394")
    804 IInstallReferenceItem : public IUnknown
    805 {
    806 };
    807 #ifdef __CRT_UUID_DECL
    808 __CRT_UUID_DECL(IInstallReferenceItem, 0x582dac66, 0xe678, 0x449f, 0xab,0xa6, 0x6f,0xaa,0xec,0x8a,0x93,0x94)
    809 #endif
    810 #else
    811 typedef struct IInstallReferenceItemVtbl {
    812     BEGIN_INTERFACE
    813 
    814     /*** IUnknown methods ***/
    815     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
    816         IInstallReferenceItem *This,
    817         REFIID riid,
    818         void **ppvObject);
    819 
    820     ULONG (STDMETHODCALLTYPE *AddRef)(
    821         IInstallReferenceItem *This);
    822 
    823     ULONG (STDMETHODCALLTYPE *Release)(
    824         IInstallReferenceItem *This);
    825 
    826     END_INTERFACE
    827 } IInstallReferenceItemVtbl;
    828 
    829 interface IInstallReferenceItem {
    830     CONST_VTBL IInstallReferenceItemVtbl* lpVtbl;
    831 };
    832 
    833 #ifdef COBJMACROS
    834 #ifndef WIDL_C_INLINE_WRAPPERS
    835 /*** IUnknown methods ***/
    836 #define IInstallReferenceItem_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
    837 #define IInstallReferenceItem_AddRef(This) (This)->lpVtbl->AddRef(This)
    838 #define IInstallReferenceItem_Release(This) (This)->lpVtbl->Release(This)
    839 #else
    840 /*** IUnknown methods ***/
    841 static inline HRESULT IInstallReferenceItem_QueryInterface(IInstallReferenceItem* This,REFIID riid,void **ppvObject) {
    842     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
    843 }
    844 static inline ULONG IInstallReferenceItem_AddRef(IInstallReferenceItem* This) {
    845     return This->lpVtbl->AddRef(This);
    846 }
    847 static inline ULONG IInstallReferenceItem_Release(IInstallReferenceItem* This) {
    848     return This->lpVtbl->Release(This);
    849 }
    850 #endif
    851 #endif
    852 
    853 #endif
    854 
    855 
    856 #endif  /* __IInstallReferenceItem_INTERFACE_DEFINED__ */
    857 
    858 /*****************************************************************************
    859  * IInstallReferenceEnum interface
    860  */
    861 #ifndef __IInstallReferenceEnum_INTERFACE_DEFINED__
    862 #define __IInstallReferenceEnum_INTERFACE_DEFINED__
    863 
    864 DEFINE_GUID(IID_IInstallReferenceEnum, 0x56b1a988, 0x7c0c, 0x4aa2, 0x86,0x39, 0xc3,0xeb,0x5a,0x90,0x22,0x6f);
    865 #if defined(__cplusplus) && !defined(CINTERFACE)
    866 MIDL_INTERFACE("56b1a988-7c0c-4aa2-8639-c3eb5a90226f")
    867 IInstallReferenceEnum : public IUnknown
    868 {
    869 };
    870 #ifdef __CRT_UUID_DECL
    871 __CRT_UUID_DECL(IInstallReferenceEnum, 0x56b1a988, 0x7c0c, 0x4aa2, 0x86,0x39, 0xc3,0xeb,0x5a,0x90,0x22,0x6f)
    872 #endif
    873 #else
    874 typedef struct IInstallReferenceEnumVtbl {
    875     BEGIN_INTERFACE
    876 
    877     /*** IUnknown methods ***/
    878     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
    879         IInstallReferenceEnum *This,
    880         REFIID riid,
    881         void **ppvObject);
    882 
    883     ULONG (STDMETHODCALLTYPE *AddRef)(
    884         IInstallReferenceEnum *This);
    885 
    886     ULONG (STDMETHODCALLTYPE *Release)(
    887         IInstallReferenceEnum *This);
    888 
    889     END_INTERFACE
    890 } IInstallReferenceEnumVtbl;
    891 
    892 interface IInstallReferenceEnum {
    893     CONST_VTBL IInstallReferenceEnumVtbl* lpVtbl;
    894 };
    895 
    896 #ifdef COBJMACROS
    897 #ifndef WIDL_C_INLINE_WRAPPERS
    898 /*** IUnknown methods ***/
    899 #define IInstallReferenceEnum_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
    900 #define IInstallReferenceEnum_AddRef(This) (This)->lpVtbl->AddRef(This)
    901 #define IInstallReferenceEnum_Release(This) (This)->lpVtbl->Release(This)
    902 #else
    903 /*** IUnknown methods ***/
    904 static inline HRESULT IInstallReferenceEnum_QueryInterface(IInstallReferenceEnum* This,REFIID riid,void **ppvObject) {
    905     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
    906 }
    907 static inline ULONG IInstallReferenceEnum_AddRef(IInstallReferenceEnum* This) {
    908     return This->lpVtbl->AddRef(This);
    909 }
    910 static inline ULONG IInstallReferenceEnum_Release(IInstallReferenceEnum* This) {
    911     return This->lpVtbl->Release(This);
    912 }
    913 #endif
    914 #endif
    915 
    916 #endif
    917 
    918 
    919 #endif  /* __IInstallReferenceEnum_INTERFACE_DEFINED__ */
    920 
    921 HRESULT WINAPI ClearDownloadCache(void);
    922 HRESULT WINAPI CompareAssemblyIdentity(LPCWSTR,WINBOOL,LPCWSTR,WINBOOL,WINBOOL*,AssemblyComparisonResult*);
    923 HRESULT WINAPI CreateAssemblyCache(IAssemblyCache**,DWORD);
    924 HRESULT WINAPI CreateAssemblyEnum(IAssemblyEnum**,IUnknown*,IAssemblyName*,DWORD,LPVOID);
    925 HRESULT WINAPI CreateAssemblyNameObject(LPASSEMBLYNAME*,LPCWSTR,DWORD,LPVOID);
    926 HRESULT WINAPI CreateInstallReferenceEnum(IInstallReferenceEnum**,IAssemblyName*,DWORD,LPVOID);
    927 HRESULT WINAPI GetAssemblyIdentityFromFile(LPCWSTR,REFIID,IUnknown**);
    928 HRESULT WINAPI GetCachePath(ASM_CACHE_FLAGS,LPWSTR,PDWORD);
    929 /* Begin additional prototypes for all interfaces */
    930 
    931 
    932 /* End additional prototypes */
    933 
    934 #ifdef __cplusplus
    935 }
    936 #endif
    937 
    938 #endif /* __fusion_h__ */