| /* | 
 |  * Copyright 2010 Hans Leidekker for CodeWeavers | 
 |  * | 
 |  * This library is free software; you can redistribute it and/or | 
 |  * modify it under the terms of the GNU Lesser General Public | 
 |  * License as published by the Free Software Foundation; either | 
 |  * version 2.1 of the License, or (at your option) any later version. | 
 |  * | 
 |  * This library is distributed in the hope that it will be useful, | 
 |  * but WITHOUT ANY WARRANTY; without even the implied warranty of | 
 |  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU | 
 |  * Lesser General Public License for more details. | 
 |  * | 
 |  * You should have received a copy of the GNU Lesser General Public | 
 |  * License along with this library; if not, write to the Free Software | 
 |  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA | 
 |  */ | 
 |  | 
 | import "objidl.idl"; | 
 |  | 
 | interface IAssemblyCache; | 
 | interface IAssemblyCacheItem; | 
 |  | 
 | typedef struct _FUSION_INSTALL_REFERENCE_ | 
 | { | 
 |     DWORD   cbSize; | 
 |     DWORD   dwFlags; | 
 |     GUID    guidScheme; | 
 |     LPCWSTR szIdentifier; | 
 |     LPCWSTR szNonCannonicalData; | 
 | } FUSION_INSTALL_REFERENCE, *LPFUSION_INSTALL_REFERENCE; | 
 |  | 
 | typedef struct _ASSEMBLY_INFO | 
 | { | 
 |     ULONG          cbAssemblyInfo; | 
 |     DWORD          dwAssemblyFlags; | 
 |     ULARGE_INTEGER uliAssemblySizeInKB; | 
 |     LPWSTR         pszCurrentAssemblyPathBuf; | 
 |     ULONG          cchBuf; | 
 | } ASSEMBLY_INFO; | 
 |  | 
 | typedef const struct _FUSION_INSTALL_REFERENCE_ *LPCFUSION_INSTALL_REFERENCE; | 
 |  | 
 | [ | 
 |     object, | 
 |     uuid(e707dcde-d1cd-11d2-bab9-00c04f8eceae), | 
 |     pointer_default(unique), | 
 |     local | 
 | ] | 
 | interface IAssemblyCache : IUnknown | 
 | { | 
 |     HRESULT UninstallAssembly( | 
 |         [in] DWORD flags, | 
 |         [in] LPCWSTR name, | 
 |         [in] LPCFUSION_INSTALL_REFERENCE ref, | 
 |         [out, optional] ULONG *disp); | 
 |  | 
 |     HRESULT QueryAssemblyInfo( | 
 |         [in] DWORD flags, | 
 |         [in] LPCWSTR name, | 
 |         [in, out] ASSEMBLY_INFO *info); | 
 |  | 
 |     HRESULT CreateAssemblyCacheItem( | 
 |         [in] DWORD flags, | 
 |         [in] PVOID reserved, | 
 |         [out] IAssemblyCacheItem **item, | 
 |         [in, optional] LPCWSTR name); | 
 |  | 
 |     HRESULT Reserved( | 
 |         [out] IUnknown **reserved); | 
 |  | 
 |     HRESULT InstallAssembly( | 
 |         [in] DWORD flags, | 
 |         [in] LPCWSTR path, | 
 |         [in] LPCFUSION_INSTALL_REFERENCE ref); | 
 | } | 
 |  | 
 | [ | 
 |     object, | 
 |     uuid(9e3aaeb4-d1cd-11d2-bab9-00c04f8eceae), | 
 |     pointer_default(unique), | 
 |     local | 
 | ] | 
 | interface IAssemblyCacheItem : IUnknown | 
 | { | 
 |     HRESULT CreateStream( | 
 |         [in] DWORD flags, | 
 |         [in] LPCWSTR name, | 
 |         [in] DWORD format, | 
 |         [in] DWORD format_flags, | 
 |         [out] IStream **stream, | 
 |         [in, optional] ULARGE_INTEGER *max_size); | 
 |  | 
 |     HRESULT Commit( | 
 |         [in] DWORD flags, | 
 |         [out, optional] ULONG *disp); | 
 |  | 
 |     HRESULT AbortItem(); | 
 | } | 
 |  | 
 | cpp_quote("HRESULT WINAPI CreateAssemblyCache(IAssemblyCache**,DWORD);") |