master
  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__
 23typedef interface IAssemblyCache IAssemblyCache;
 24#ifdef __cplusplus
 25interface IAssemblyCache;
 26#endif /* __cplusplus */
 27#endif
 28
 29#ifndef __IAssemblyCacheItem_FWD_DEFINED__
 30#define __IAssemblyCacheItem_FWD_DEFINED__
 31typedef interface IAssemblyCacheItem IAssemblyCacheItem;
 32#ifdef __cplusplus
 33interface IAssemblyCacheItem;
 34#endif /* __cplusplus */
 35#endif
 36
 37#ifndef __IAssemblyName_FWD_DEFINED__
 38#define __IAssemblyName_FWD_DEFINED__
 39typedef interface IAssemblyName IAssemblyName;
 40#ifdef __cplusplus
 41interface IAssemblyName;
 42#endif /* __cplusplus */
 43#endif
 44
 45#ifndef __IAssemblyEnum_FWD_DEFINED__
 46#define __IAssemblyEnum_FWD_DEFINED__
 47typedef interface IAssemblyEnum IAssemblyEnum;
 48#ifdef __cplusplus
 49interface IAssemblyEnum;
 50#endif /* __cplusplus */
 51#endif
 52
 53#ifndef __IInstallReferenceItem_FWD_DEFINED__
 54#define __IInstallReferenceItem_FWD_DEFINED__
 55typedef interface IInstallReferenceItem IInstallReferenceItem;
 56#ifdef __cplusplus
 57interface IInstallReferenceItem;
 58#endif /* __cplusplus */
 59#endif
 60
 61#ifndef __IInstallReferenceEnum_FWD_DEFINED__
 62#define __IInstallReferenceEnum_FWD_DEFINED__
 63typedef interface IInstallReferenceEnum IInstallReferenceEnum;
 64#ifdef __cplusplus
 65interface IInstallReferenceEnum;
 66#endif /* __cplusplus */
 67#endif
 68
 69/* Headers for imported files */
 70
 71#include <objidl.h>
 72
 73#ifdef __cplusplus
 74extern "C" {
 75#endif
 76
 77#ifndef __IAssemblyCache_FWD_DEFINED__
 78#define __IAssemblyCache_FWD_DEFINED__
 79typedef interface IAssemblyCache IAssemblyCache;
 80#ifdef __cplusplus
 81interface IAssemblyCache;
 82#endif /* __cplusplus */
 83#endif
 84
 85#ifndef __IAssemblyCacheItem_FWD_DEFINED__
 86#define __IAssemblyCacheItem_FWD_DEFINED__
 87typedef interface IAssemblyCacheItem IAssemblyCacheItem;
 88#ifdef __cplusplus
 89interface IAssemblyCacheItem;
 90#endif /* __cplusplus */
 91#endif
 92
 93#ifndef __IAssemblyEnum_FWD_DEFINED__
 94#define __IAssemblyEnum_FWD_DEFINED__
 95typedef interface IAssemblyEnum IAssemblyEnum;
 96#ifdef __cplusplus
 97interface IAssemblyEnum;
 98#endif /* __cplusplus */
 99#endif
100
101#ifndef __IAssemblyName_FWD_DEFINED__
102#define __IAssemblyName_FWD_DEFINED__
103typedef interface IAssemblyName IAssemblyName;
104#ifdef __cplusplus
105interface IAssemblyName;
106#endif /* __cplusplus */
107#endif
108
109typedef 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;
116typedef 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;
125typedef 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
145typedef struct _FUSION_INSTALL_REFERENCE_ {
146    DWORD cbSize;
147    DWORD dwFlags;
148    GUID guidScheme;
149    LPCWSTR szIdentifier;
150    LPCWSTR szNonCannonicalData;
151} FUSION_INSTALL_REFERENCE;
152typedef struct _FUSION_INSTALL_REFERENCE_ *LPFUSION_INSTALL_REFERENCE;
153typedef const FUSION_INSTALL_REFERENCE *LPCFUSION_INSTALL_REFERENCE;
154typedef 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
173DEFINE_GUID(IID_IAssemblyCache, 0xe707dcde, 0xd1cd, 0x11d2, 0xba,0xb9, 0x00,0xc0,0x4f,0x8e,0xce,0xae);
174#if defined(__cplusplus) && !defined(CINTERFACE)
175MIDL_INTERFACE("e707dcde-d1cd-11d2-bab9-00c04f8eceae")
176IAssemblyCache : 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
208typedef 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
257interface 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 ***/
275static inline HRESULT IAssemblyCache_QueryInterface(IAssemblyCache* This,REFIID riid,void **ppvObject) {
276    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
277}
278static inline ULONG IAssemblyCache_AddRef(IAssemblyCache* This) {
279    return This->lpVtbl->AddRef(This);
280}
281static inline ULONG IAssemblyCache_Release(IAssemblyCache* This) {
282    return This->lpVtbl->Release(This);
283}
284/*** IAssemblyCache methods ***/
285static 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}
288static inline HRESULT IAssemblyCache_QueryAssemblyInfo(IAssemblyCache* This,DWORD dwFlags,LPCWSTR pszAssemblyName,ASSEMBLY_INFO *pAsmInfo) {
289    return This->lpVtbl->QueryAssemblyInfo(This,dwFlags,pszAssemblyName,pAsmInfo);
290}
291static 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}
294static inline HRESULT IAssemblyCache_CreateAssemblyScavenger(IAssemblyCache* This,IUnknown **ppUnkReserved) {
295    return This->lpVtbl->CreateAssemblyScavenger(This,ppUnkReserved);
296}
297static 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
323DEFINE_GUID(IID_IAssemblyCacheItem, 0x9e3aaeb4, 0xd1cd, 0x11d2, 0xba,0xb9, 0x00,0xc0,0x4f,0x8e,0xce,0xae);
324#if defined(__cplusplus) && !defined(CINTERFACE)
325MIDL_INTERFACE("9e3aaeb4-d1cd-11d2-bab9-00c04f8eceae")
326IAssemblyCacheItem : 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
348typedef 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
384interface 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 ***/
400static inline HRESULT IAssemblyCacheItem_QueryInterface(IAssemblyCacheItem* This,REFIID riid,void **ppvObject) {
401    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
402}
403static inline ULONG IAssemblyCacheItem_AddRef(IAssemblyCacheItem* This) {
404    return This->lpVtbl->AddRef(This);
405}
406static inline ULONG IAssemblyCacheItem_Release(IAssemblyCacheItem* This) {
407    return This->lpVtbl->Release(This);
408}
409/*** IAssemblyCacheItem methods ***/
410static 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}
413static inline HRESULT IAssemblyCacheItem_Commit(IAssemblyCacheItem* This,DWORD dwFlags,ULONG *pulDisposition) {
414    return This->lpVtbl->Commit(This,dwFlags,pulDisposition);
415}
416static 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
433typedef IAssemblyName *LPASSEMBLYNAME;
434typedef 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;
440typedef 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;
471typedef 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;
484typedef 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;
503DEFINE_GUID(IID_IAssemblyName, 0xcd193bc0, 0xb4bc, 0x11d2, 0x98,0x33, 0x00,0xc0,0x4f,0xc3,0x1d,0x2e);
504#if defined(__cplusplus) && !defined(CINTERFACE)
505MIDL_INTERFACE("cd193bc0-b4bc-11d2-9833-00c04fc31d2e")
506IAssemblyName : 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
556typedef 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
626interface 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 ***/
648static inline HRESULT IAssemblyName_QueryInterface(IAssemblyName* This,REFIID riid,void **ppvObject) {
649    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
650}
651static inline ULONG IAssemblyName_AddRef(IAssemblyName* This) {
652    return This->lpVtbl->AddRef(This);
653}
654static inline ULONG IAssemblyName_Release(IAssemblyName* This) {
655    return This->lpVtbl->Release(This);
656}
657/*** IAssemblyName methods ***/
658static inline HRESULT IAssemblyName_SetProperty(IAssemblyName* This,DWORD PropertyId,LPVOID pvProperty,DWORD cbProperty) {
659    return This->lpVtbl->SetProperty(This,PropertyId,pvProperty,cbProperty);
660}
661static inline HRESULT IAssemblyName_GetProperty(IAssemblyName* This,DWORD PropertyId,LPVOID pvProperty,LPDWORD pcbProperty) {
662    return This->lpVtbl->GetProperty(This,PropertyId,pvProperty,pcbProperty);
663}
664static inline HRESULT IAssemblyName_Finalize(IAssemblyName* This) {
665    return This->lpVtbl->Finalize(This);
666}
667static inline HRESULT IAssemblyName_GetDisplayName(IAssemblyName* This,LPOLESTR szDisplayName,LPDWORD pccDisplayName,DWORD dwDisplayFlags) {
668    return This->lpVtbl->GetDisplayName(This,szDisplayName,pccDisplayName,dwDisplayFlags);
669}
670static 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}
673static inline HRESULT IAssemblyName_GetName(IAssemblyName* This,LPDWORD lpcwBuffer,WCHAR *pwzName) {
674    return This->lpVtbl->GetName(This,lpcwBuffer,pwzName);
675}
676static inline HRESULT IAssemblyName_GetVersion(IAssemblyName* This,LPDWORD pdwVersionHi,LPDWORD pdwVersionLow) {
677    return This->lpVtbl->GetVersion(This,pdwVersionHi,pdwVersionLow);
678}
679static inline HRESULT IAssemblyName_IsEqual(IAssemblyName* This,IAssemblyName *pName,DWORD dwCmpFlags) {
680    return This->lpVtbl->IsEqual(This,pName,dwCmpFlags);
681}
682static 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
699DEFINE_GUID(IID_IAssemblyEnum, 0x21b8916c, 0xf28e, 0x11d2, 0xa4,0x73, 0x00,0xc0,0x4f,0x8e,0xf4,0x48);
700#if defined(__cplusplus) && !defined(CINTERFACE)
701MIDL_INTERFACE("21b8916c-f28e-11d2-a473-00c04f8ef448")
702IAssemblyEnum : 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
720typedef 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
752interface 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 ***/
768static inline HRESULT IAssemblyEnum_QueryInterface(IAssemblyEnum* This,REFIID riid,void **ppvObject) {
769    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
770}
771static inline ULONG IAssemblyEnum_AddRef(IAssemblyEnum* This) {
772    return This->lpVtbl->AddRef(This);
773}
774static inline ULONG IAssemblyEnum_Release(IAssemblyEnum* This) {
775    return This->lpVtbl->Release(This);
776}
777/*** IAssemblyEnum methods ***/
778static inline HRESULT IAssemblyEnum_GetNextAssembly(IAssemblyEnum* This,LPVOID pvReserved,IAssemblyName **ppName,DWORD dwFlags) {
779    return This->lpVtbl->GetNextAssembly(This,pvReserved,ppName,dwFlags);
780}
781static inline HRESULT IAssemblyEnum_Reset(IAssemblyEnum* This) {
782    return This->lpVtbl->Reset(This);
783}
784static 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
801DEFINE_GUID(IID_IInstallReferenceItem, 0x582dac66, 0xe678, 0x449f, 0xab,0xa6, 0x6f,0xaa,0xec,0x8a,0x93,0x94);
802#if defined(__cplusplus) && !defined(CINTERFACE)
803MIDL_INTERFACE("582dac66-e678-449f-aba6-6faaec8a9394")
804IInstallReferenceItem : 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
811typedef 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
829interface 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 ***/
841static inline HRESULT IInstallReferenceItem_QueryInterface(IInstallReferenceItem* This,REFIID riid,void **ppvObject) {
842    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
843}
844static inline ULONG IInstallReferenceItem_AddRef(IInstallReferenceItem* This) {
845    return This->lpVtbl->AddRef(This);
846}
847static 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
864DEFINE_GUID(IID_IInstallReferenceEnum, 0x56b1a988, 0x7c0c, 0x4aa2, 0x86,0x39, 0xc3,0xeb,0x5a,0x90,0x22,0x6f);
865#if defined(__cplusplus) && !defined(CINTERFACE)
866MIDL_INTERFACE("56b1a988-7c0c-4aa2-8639-c3eb5a90226f")
867IInstallReferenceEnum : 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
874typedef 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
892interface 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 ***/
904static inline HRESULT IInstallReferenceEnum_QueryInterface(IInstallReferenceEnum* This,REFIID riid,void **ppvObject) {
905    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
906}
907static inline ULONG IInstallReferenceEnum_AddRef(IInstallReferenceEnum* This) {
908    return This->lpVtbl->AddRef(This);
909}
910static 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
921HRESULT WINAPI ClearDownloadCache(void);
922HRESULT WINAPI CompareAssemblyIdentity(LPCWSTR,WINBOOL,LPCWSTR,WINBOOL,WINBOOL*,AssemblyComparisonResult*);
923HRESULT WINAPI CreateAssemblyCache(IAssemblyCache**,DWORD);
924HRESULT WINAPI CreateAssemblyEnum(IAssemblyEnum**,IUnknown*,IAssemblyName*,DWORD,LPVOID);
925HRESULT WINAPI CreateAssemblyNameObject(LPASSEMBLYNAME*,LPCWSTR,DWORD,LPVOID);
926HRESULT WINAPI CreateInstallReferenceEnum(IInstallReferenceEnum**,IAssemblyName*,DWORD,LPVOID);
927HRESULT WINAPI GetAssemblyIdentityFromFile(LPCWSTR,REFIID,IUnknown**);
928HRESULT 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__ */