msi: Make WHEREVIEW able to deal directly with multiple tables.
[wine] / include / winsxs.idl
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
19 import "objidl.idl";
20
21 interface IAssemblyCache;
22 interface IAssemblyCacheItem;
23
24 typedef struct _FUSION_INSTALL_REFERENCE_
25 {
26     DWORD   cbSize;
27     DWORD   dwFlags;
28     GUID    guidScheme;
29     LPCWSTR szIdentifier;
30     LPCWSTR szNonCannonicalData;
31 } FUSION_INSTALL_REFERENCE, *LPFUSION_INSTALL_REFERENCE;
32
33 typedef struct _ASSEMBLY_INFO
34 {
35     ULONG          cbAssemblyInfo;
36     DWORD          dwAssemblyFlags;
37     ULARGE_INTEGER uliAssemblySizeInKB;
38     LPWSTR         pszCurrentAssemblyPathBuf;
39     ULONG          cchBuf;
40 } ASSEMBLY_INFO;
41
42 typedef const struct _FUSION_INSTALL_REFERENCE_ *LPCFUSION_INSTALL_REFERENCE;
43
44 [
45     object,
46     uuid(e707dcde-d1cd-11d2-bab9-00c04f8eceae),
47     pointer_default(unique),
48     local
49 ]
50 interface IAssemblyCache : IUnknown
51 {
52     HRESULT UninstallAssembly(
53         [in] DWORD flags,
54         [in] LPCWSTR name,
55         [in] LPCFUSION_INSTALL_REFERENCE ref,
56         [out, optional] ULONG *disp);
57
58     HRESULT QueryAssemblyInfo(
59         [in] DWORD flags,
60         [in] LPCWSTR name,
61         [in, out] ASSEMBLY_INFO *info);
62
63     HRESULT CreateAssemblyCacheItem(
64         [in] DWORD flags,
65         [in] PVOID reserved,
66         [out] IAssemblyCacheItem **item,
67         [in, optional] LPCWSTR name);
68
69     HRESULT Reserved(
70         [out] IUnknown **reserved);
71
72     HRESULT InstallAssembly(
73         [in] DWORD flags,
74         [in] LPCWSTR path,
75         [in] LPCFUSION_INSTALL_REFERENCE ref);
76 }
77
78 [
79     object,
80     uuid(9e3aaeb4-d1cd-11d2-bab9-00c04f8eceae),
81     pointer_default(unique),
82     local
83 ]
84 interface IAssemblyCacheItem : IUnknown
85 {
86     HRESULT CreateStream(
87         [in] DWORD flags,
88         [in] LPCWSTR name,
89         [in] DWORD format,
90         [in] DWORD format_flags,
91         [out] IStream **stream,
92         [in, optional] ULARGE_INTEGER *max_size);
93
94     HRESULT Commit(
95         [in] DWORD flags,
96         [out, optional] ULONG *disp);
97
98     HRESULT AbortItem();
99 }
100
101 cpp_quote("HRESULT WINAPI CreateAssemblyCache(IAssemblyCache**,DWORD);")