2 * Copyright 2010 Hans Leidekker for CodeWeavers
4 * This library is free software; you can redistribute it and/or
5 * modify it under the terms of the GNU Lesser General Public
6 * License as published by the Free Software Foundation; either
7 * version 2.1 of the License, or (at your option) any later version.
9 * This library is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 * Lesser General Public License for more details.
14 * You should have received a copy of the GNU Lesser General Public
15 * License along with this library; if not, write to the Free Software
16 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
22 interface IAssemblyCache
;
23 interface IAssemblyCacheItem
;
24 interface IAssemblyName
;
26 typedef struct _FUSION_INSTALL_REFERENCE_
32 LPCWSTR szNonCannonicalData
;
33 } FUSION_INSTALL_REFERENCE
, *LPFUSION_INSTALL_REFERENCE
;
35 typedef struct _ASSEMBLY_INFO
38 DWORD dwAssemblyFlags
;
39 ULARGE_INTEGER uliAssemblySizeInKB
;
40 LPWSTR pszCurrentAssemblyPathBuf
;
44 typedef const struct _FUSION_INSTALL_REFERENCE_
*LPCFUSION_INSTALL_REFERENCE
;
48 uuid(e707dcde
-d1cd
-11d2
-bab9
-00c04f8eceae
),
49 pointer_default(unique),
52 interface IAssemblyCache
: IUnknown
54 HRESULT UninstallAssembly
(
57 [in] LPCFUSION_INSTALL_REFERENCE
ref,
58 [out, optional] ULONG
*disp
);
60 HRESULT QueryAssemblyInfo
(
63 [in, out] ASSEMBLY_INFO
*info
);
65 HRESULT CreateAssemblyCacheItem
(
68 [out] IAssemblyCacheItem
**item
,
69 [in, optional] LPCWSTR name
);
72 [out] IUnknown
**reserved
);
74 HRESULT InstallAssembly
(
77 [in] LPCFUSION_INSTALL_REFERENCE
ref);
82 uuid(9e3aaeb4
-d1cd
-11d2
-bab9
-00c04f8eceae
),
83 pointer_default(unique),
86 interface IAssemblyCacheItem
: IUnknown
92 [in] DWORD format_flags
,
93 [out] IStream
**stream
,
94 [in, optional] ULARGE_INTEGER
*max_size
);
98 [out, optional] ULONG
*disp
);
105 uuid(cd193bc0
-b4bc
-11D2
-9833-00c04fc31d2e
),
106 pointer_default(unique),
109 interface IAssemblyName
: IUnknown
111 typedef [public] enum
114 ASM_NAME_PUBLIC_KEY_TOKEN
,
117 ASM_NAME_MAJOR_VERSION
,
118 ASM_NAME_MINOR_VERSION
,
119 ASM_NAME_BUILD_NUMBER
,
120 ASM_NAME_REVISION_NUMBER
,
122 ASM_NAME_PROCESSOR_ID_ARRAY
,
123 ASM_NAME_OSINFO_ARRAY
,
126 ASM_NAME_CODEBASE_URL
,
127 ASM_NAME_CODEBASE_LASTMOD
,
128 ASM_NAME_NULL_PUBLIC_KEY
,
129 ASM_NAME_NULL_PUBLIC_KEY_TOKEN
,
131 ASM_NAME_NULL_CUSTOM
,
136 typedef [public] enum
138 ASM_DISPLAYF_VERSION
= 0x1,
139 ASM_DISPLAYF_CULTURE
= 0x2,
140 ASM_DISPLAYF_PUBLIC_KEY_TOKEN
= 0x4,
141 ASM_DISPLAYF_PUBLIC_KEY
= 0x8,
142 ASM_DISPLAYF_CUSTOM
= 0x10,
143 ASM_DISPLAYF_PROCESSORARCHITECTURE
= 0x20,
144 ASM_DISPLAYF_LANGUAGEID
= 0x40
149 [in] LPVOID property
,
155 [in][out] LPDWORD buflen
);
159 HRESULT GetDisplayName
(
161 [in][out] LPDWORD buflen
,
166 [in] IUnknown
*pUnkReserved1
,
167 [in] IUnknown
*pUnkReserved2
,
168 [in] LPCOLESTR szReserved
,
169 [in] LONGLONG llReserved
,
170 [in] LPVOID pvReserved
,
171 [in] DWORD cbReserved
,
172 [out] LPVOID
*ppReserved
);
175 [in][out] LPDWORD buflen
,
176 [out] LPWSTR buffer
);
183 [in] IAssemblyName
*name
,
187 [out] IAssemblyName
**name
);
190 typedef [unique] IAssemblyName
*LPASSEMBLYNAME
;
191 typedef [public] enum
193 CANOF_PARSE_DISPLAY_NAME
= 0x1,
194 CANOF_SET_DEFAULT_VALUES
= 0x2
195 } CREATE_ASM_NAME_OBJ_FLAGS
;
197 cpp_quote
("HRESULT WINAPI CreateAssemblyCache(IAssemblyCache**,DWORD);")
198 cpp_quote
("HRESULT WINAPI CreateAssemblyNameObject(LPASSEMBLYNAME *,LPCWSTR,DWORD,LPVOID);")