1/* 2 * Copyright 2010 Hans Leidekker for CodeWeavers 3 * 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. 8 * 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. 13 * 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 17 */ 18 19import "objidl.idl"; 20import "oleidl.idl"; 21 22interface IAssemblyCache; 23interface IAssemblyCacheItem; 24interface IAssemblyName; 25 26typedef struct _FUSION_INSTALL_REFERENCE_ 27{ 28 DWORD cbSize; 29 DWORD dwFlags; 30 GUID guidScheme; 31 LPCWSTR szIdentifier; 32 LPCWSTR szNonCannonicalData; 33} FUSION_INSTALL_REFERENCE, *LPFUSION_INSTALL_REFERENCE; 34 35typedef struct _ASSEMBLY_INFO 36{ 37 ULONG cbAssemblyInfo; 38 DWORD dwAssemblyFlags; 39 ULARGE_INTEGER uliAssemblySizeInKB; 40 LPWSTR pszCurrentAssemblyPathBuf; 41 ULONG cchBuf; 42} ASSEMBLY_INFO; 43 44typedef const struct _FUSION_INSTALL_REFERENCE_ *LPCFUSION_INSTALL_REFERENCE; 45 46[ 47 object, 48 uuid(e707dcde-d1cd-11d2-bab9-00c04f8eceae), 49 pointer_default(unique), 50 local 51] 52interface IAssemblyCache : IUnknown 53{ 54 HRESULT UninstallAssembly( 55 [in] DWORD flags, 56 [in] LPCWSTR name, 57 [in] LPCFUSION_INSTALL_REFERENCE ref, 58 [out, optional] ULONG *disp); 59 60 HRESULT QueryAssemblyInfo( 61 [in] DWORD flags, 62 [in] LPCWSTR name, 63 [in, out] ASSEMBLY_INFO *info); 64 65 HRESULT CreateAssemblyCacheItem( 66 [in] DWORD flags, 67 [in] PVOID reserved, 68 [out] IAssemblyCacheItem **item, 69 [in, optional] LPCWSTR name); 70 71 HRESULT Reserved( 72 [out] IUnknown **reserved); 73 74 HRESULT InstallAssembly( 75 [in] DWORD flags, 76 [in] LPCWSTR path, 77 [in] LPCFUSION_INSTALL_REFERENCE ref); 78} 79 80[ 81 object, 82 uuid(9e3aaeb4-d1cd-11d2-bab9-00c04f8eceae), 83 pointer_default(unique), 84 local 85] 86interface IAssemblyCacheItem : IUnknown 87{ 88 HRESULT CreateStream( 89 [in] DWORD flags, 90 [in] LPCWSTR name, 91 [in] DWORD format, 92 [in] DWORD format_flags, 93 [out] IStream **stream, 94 [in, optional] ULARGE_INTEGER *max_size); 95 96 HRESULT Commit( 97 [in] DWORD flags, 98 [out, optional] ULONG *disp); 99 100 HRESULT AbortItem(); 101} 102 103[ 104 object, 105 uuid(cd193bc0-b4bc-11D2-9833-00c04fc31d2e), 106 pointer_default(unique), 107 local 108] 109interface IAssemblyName : IUnknown 110{ 111 typedef [public] enum 112 { 113 ASM_NAME_PUBLIC_KEY, 114 ASM_NAME_PUBLIC_KEY_TOKEN, 115 ASM_NAME_HASH_VALUE, 116 ASM_NAME_NAME, 117 ASM_NAME_MAJOR_VERSION, 118 ASM_NAME_MINOR_VERSION, 119 ASM_NAME_BUILD_NUMBER, 120 ASM_NAME_REVISION_NUMBER, 121 ASM_NAME_CULTURE, 122 ASM_NAME_PROCESSOR_ID_ARRAY, 123 ASM_NAME_OSINFO_ARRAY, 124 ASM_NAME_HASH_ALGID, 125 ASM_NAME_ALIAS, 126 ASM_NAME_CODEBASE_URL, 127 ASM_NAME_CODEBASE_LASTMOD, 128 ASM_NAME_NULL_PUBLIC_KEY, 129 ASM_NAME_NULL_PUBLIC_KEY_TOKEN, 130 ASM_NAME_CUSTOM, 131 ASM_NAME_NULL_CUSTOM, 132 ASM_NAME_MVID, 133 ASM_NAME_MAX_PARAMS 134 } ASM_NAME; 135 136 typedef [public] enum 137 { 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 145 } ASM_DISPLAY_FLAGS; 146 147 HRESULT SetProperty( 148 [in] DWORD id, 149 [in] LPVOID property, 150 [in] DWORD size); 151 152 HRESULT GetProperty( 153 [in] DWORD id, 154 [out] LPVOID buffer, 155 [in][out] LPDWORD buflen); 156 157 HRESULT Finalize(); 158 159 HRESULT GetDisplayName( 160 [out] LPWSTR buffer, 161 [in][out] LPDWORD buflen, 162 [in] DWORD flags); 163 164 HRESULT Reserved( 165 [in] REFIID riid, 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); 173 174 HRESULT GetName( 175 [in][out] LPDWORD buflen, 176 [out] LPWSTR buffer); 177 178 HRESULT GetVersion( 179 [out] LPDWORD hi, 180 [out] LPDWORD low); 181 182 HRESULT IsEqual( 183 [in] IAssemblyName *name, 184 [in] DWORD flags); 185 186 HRESULT Clone( 187 [out] IAssemblyName **name); 188} 189 190typedef [unique] IAssemblyName *LPASSEMBLYNAME; 191typedef [public] enum 192{ 193 CANOF_PARSE_DISPLAY_NAME = 0x1, 194 CANOF_SET_DEFAULT_VALUES = 0x2 195} CREATE_ASM_NAME_OBJ_FLAGS; 196 197cpp_quote("HRESULT WINAPI CreateAssemblyCache(IAssemblyCache**,DWORD);") 198cpp_quote("HRESULT WINAPI CreateAssemblyNameObject(LPASSEMBLYNAME *,LPCWSTR,DWORD,LPVOID);") 199