1 /*
2 * SPDX-FileCopyrightText: This file has no copyright assigned and is placed in the Public Domain.
3 * SPDX-License-Identifier: CC0-1.0
4 *
5 * This file is part of the w64 mingw-runtime package.
6 * No warranty is given; refer to https://github.com/kinke/mingw-w64-crt/blob/master/DISCLAIMER.PD.
7 *
8 * Additional code derived from the windows-rs repository on GitHub
9 * (https://github.com/microsoft/windows-rs) with the MIT license:
10 *
11 * MIT License
12 *
13 * Copyright (c) Microsoft Corporation.
14 *
15 * Permission is hereby granted, free of charge, to any person obtaining a copy
16 * of this software and associated documentation files (the "Software"), to deal
17 * in the Software without restriction, including without limitation the rights
18 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
19 * copies of the Software, and to permit persons to whom the Software is
20 * furnished to do so, subject to the following conditions:
21 *
22 * The above copyright notice and this permission notice shall be included in all
23 * copies or substantial portions of the Software.
24 *
25 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
26 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
27 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
28 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
29 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
30 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
31 * SOFTWARE
32 */
33
34 typedef interface IPackageManager IPackageManager;
35 typedef interface IPackage IPackage;
36 typedef interface IPackageId IPackageId;
37 typedef interface IPackageVersion IPackageVersion;
38 typedef interface IPackage2 IPackage2;
39
40 DEFINE_GUID(IID_IPackageManager, 0x9A7D4B65, 0x5E8F, 0x4FC7, 0xA2, 0xE5, 0x7F, 0x69, 0x25, 0xCB, 0x8B, 0x53);
41 DEFINE_GUID(IID_IPackage, 0x163C792F, 0xBD75, 0x413C, 0xBF, 0x23, 0xB1, 0xFE, 0x7B, 0x95, 0xD8, 0x25);
42 DEFINE_GUID(IID_IPackage2, 0xA6612fb6, 0x7688, 0x4ACE, 0x95, 0xFB, 0x35, 0x95, 0x38, 0xE7, 0xAA, 0x01);
43
44 /* IPackageManager */
45 typedef struct IPackageManagerVtbl {
46 BEGIN_INTERFACE
47
48 /*** IUnknown methods ***/
49 HRESULT (STDMETHODCALLTYPE *QueryInterface)(
50 IPackageManager *This,
51 REFIID riid,
52 void **ppvObject);
53
54 ULONG (STDMETHODCALLTYPE *AddRef)(
55 IPackageManager *This);
56
57 ULONG (STDMETHODCALLTYPE *Release)(
58 IPackageManager *This);
59
60 /*** IInspectable methods ***/
61 HRESULT (STDMETHODCALLTYPE *GetIids)(
62 IPackageManager *This,
63 UINT32 *count,
64 IID **ids);
65
66 HRESULT (STDMETHODCALLTYPE *GetRuntimeClassName)(
67 IPackageManager *This,
68 HSTRING *className);
69
70 HRESULT (STDMETHODCALLTYPE *GetTrustLevel)(
71 IPackageManager *This,
72 TrustLevel *trustLevel);
73
74 /*** IPackageManager methods ***/
75 HRESULT (STDMETHODCALLTYPE *stub_AddPackageAsync)(
76 IPackageManager *This);
77
78 HRESULT (STDMETHODCALLTYPE *stub_UpdatePackageAsync)(
79 IPackageManager *This);
80
81 HRESULT (STDMETHODCALLTYPE *stub_RemovePackageAsync)(
82 IPackageManager *This);
83
84 HRESULT (STDMETHODCALLTYPE *stub_StagePackageAsync)(
85 IPackageManager *This);
86
87 HRESULT (STDMETHODCALLTYPE *stub_RegisterPackageAsync)(
88 IPackageManager *This);
89
90 HRESULT (STDMETHODCALLTYPE *FindPackages)(
91 IPackageManager *This,
92 IIterable **retval);
93
94 HRESULT (STDMETHODCALLTYPE *FindPackagesByUserSecurityId)(
95 IPackageManager *This,
96 HSTRING userSecurityId,
97 IIterable **retval);
98
99 HRESULT (STDMETHODCALLTYPE *stub_FindPackagesByNamePublisher)(
100 IPackageManager *This);
101
102 HRESULT (STDMETHODCALLTYPE *stub_FindPackagesByUserSecurityIdNamePublisher)(
103 IPackageManager *This);
104
105 HRESULT (STDMETHODCALLTYPE *stub_FindUsers)(
106 IPackageManager *This);
107
108 HRESULT (STDMETHODCALLTYPE *stub_SetPackageState)(
109 IPackageManager *This);
110
111 HRESULT (STDMETHODCALLTYPE *stub_FindPackageByPackageFullName)(
112 IPackageManager *This);
113
114 HRESULT (STDMETHODCALLTYPE *stub_CleanupPackageForUserAsync)(
115 IPackageManager *This);
116
117 HRESULT (STDMETHODCALLTYPE *stub_FindPackagesByPackageFamilyName)(
118 IPackageManager *This);
119
120 HRESULT (STDMETHODCALLTYPE *stub_FindPackagesByUserSecurityIdPackageFamilyName)(
121 IPackageManager *This);
122
123 HRESULT (STDMETHODCALLTYPE *stub_FindPackageByUserSecurityIdPackageFullName)(
124 IPackageManager *This);
125
126 END_INTERFACE
127 } IPackageManagerVtbl;
128
129 interface IPackageManager {
130 CONST_VTBL IPackageManagerVtbl* lpVtbl;
131 };
132
133 /*** IUnknown methods ***/
134 #define IPackageManager_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
135 #define IPackageManager_AddRef(This) (This)->lpVtbl->AddRef(This)
136 #define IPackageManager_Release(This) (This)->lpVtbl->Release(This)
137 /*** IInspectable methods ***/
138 #define IPackageManager_GetIids(This,count,ids) (This)->lpVtbl->GetIids(This,count,ids)
139 #define IPackageManager_GetRuntimeClassName(This,name) (This)->lpVtbl->GetRuntimeClassName(This,name)
140 #define IPackageManager_GetTrustLevel(This,level) (This)->lpVtbl->GetTrustLevel(This,level)
141 /*** IPackageManager methods ***/
142 #define IPackageManager_FindPackages(This,retval) (This)->lpVtbl->FindPackages(This,retval)
143 #define IPackageManager_FindPackagesByUserSecurityId(This,userSecurityId,retval) (This)->lpVtbl->FindPackagesByUserSecurityId(This,userSecurityId,retval)
144
145 /* IPackageId */
146 typedef struct IPackageIdVtbl {
147 BEGIN_INTERFACE
148
149 /*** IUnknown methods ***/
150 HRESULT (STDMETHODCALLTYPE *QueryInterface)(
151 IPackageId *This,
152 REFIID riid,
153 void **ppvObject);
154
155 ULONG (STDMETHODCALLTYPE *AddRef)(
156 IPackageId *This);
157
158 ULONG (STDMETHODCALLTYPE *Release)(
159 IPackageId *This);
160
161 /*** IInspectable methods ***/
162 HRESULT (STDMETHODCALLTYPE *GetIids)(
163 IPackageId *This,
164 UINT32 *count,
165 IID **ids);
166
167 HRESULT (STDMETHODCALLTYPE *GetRuntimeClassName)(
168 IPackageId *This,
169 HSTRING *className);
170
171 HRESULT (STDMETHODCALLTYPE *GetTrustLevel)(
172 IPackageId *This,
173 TrustLevel *trustLevel);
174
175 /*** IPackageId methods ***/
176 HRESULT (STDMETHODCALLTYPE *get_Name)(
177 IPackageId *This,
178 HSTRING *value);
179
180 HRESULT (STDMETHODCALLTYPE *get_Version)(
181 IPackageId *This,
182 IPackageVersion *value);
183
184 HRESULT (STDMETHODCALLTYPE *get_Architecture)(
185 IPackageId *This,
186 IProcessorArchitecture *value);
187
188 HRESULT (STDMETHODCALLTYPE *get_ResourceId)(
189 IPackageId *This,
190 HSTRING *value);
191
192 HRESULT (STDMETHODCALLTYPE *get_Publisher)(
193 IPackageId *This,
194 HSTRING *value);
195
196 HRESULT (STDMETHODCALLTYPE *get_PublisherId)(
197 IPackageId *This,
198 HSTRING *value);
199
200 HRESULT (STDMETHODCALLTYPE *get_FullName)(
201 IPackageId *This,
202 HSTRING *value);
203
204 HRESULT (STDMETHODCALLTYPE *get_FamilyName)(
205 IPackageId *This,
206 HSTRING *value);
207
208 END_INTERFACE
209 } IPackageIdVtbl;
210
211 interface IPackageId {
212 CONST_VTBL IPackageIdVtbl* lpVtbl;
213 };
214
215 /*** IUnknown methods ***/
216 #define IPackageId_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
217 #define IPackageId_AddRef(This) (This)->lpVtbl->AddRef(This)
218 #define IPackageId_Release(This) (This)->lpVtbl->Release(This)
219 /*** IInspectable methods ***/
220 #define IPackageId_GetIids(This,count,ids) (This)->lpVtbl->GetIids(This,count,ids)
221 #define IPackageId_GetRuntimeClassName(This,name) (This)->lpVtbl->GetRuntimeClassName(This,name)
222 #define IPackageId_GetTrustLevel(This,level) (This)->lpVtbl->GetTrustLevel(This,level)
223 /*** IPackageId methods ***/
224 #define IPackageId_get_Name(This,value) (This)->lpVtbl->get_Name(This,value)
225 #define IPackageId_get_Version(This,value) (This)->lpVtbl->get_Version(This,value)
226 #define IPackageId_get_Architecture(This,value) (This)->lpVtbl->get_Architecture(This,value)
227 #define IPackageId_get_ResourceId(This,value) (This)->lpVtbl->get_ResourceId(This,value)
228 #define IPackageId_get_Publisher(This,value) (This)->lpVtbl->get_Publisher(This,value)
229 #define IPackageId_get_PublisherId(This,value) (This)->lpVtbl->get_PublisherId(This,value)
230 #define IPackageId_get_FullName(This,value) (This)->lpVtbl->get_FullName(This,value)
231 #define IPackageId_get_FamilyName(This,value) (This)->lpVtbl->get_FamilyName(This,value)
232
233 /* IPackage */
234 typedef struct IPackageVtbl {
235 BEGIN_INTERFACE
236
237 /*** IUnknown methods ***/
238 HRESULT (STDMETHODCALLTYPE *QueryInterface)(
239 IPackage *This,
240 REFIID riid,
241 void **ppvObject);
242
243 ULONG (STDMETHODCALLTYPE *AddRef)(
244 IPackage *This);
245
246 ULONG (STDMETHODCALLTYPE *Release)(
247 IPackage *This);
248
249 /*** IInspectable methods ***/
250 HRESULT (STDMETHODCALLTYPE *GetIids)(
251 IPackage *This,
252 UINT32 *count,
253 IID **ids);
254
255 HRESULT (STDMETHODCALLTYPE *GetRuntimeClassName)(
256 IPackage *This,
257 HSTRING *className);
258
259 HRESULT (STDMETHODCALLTYPE *GetTrustLevel)(
260 IPackage *This,
261 TrustLevel *trustLevel);
262
263 /*** IPackage methods ***/
264 HRESULT (STDMETHODCALLTYPE *get_Id)(
265 IPackage *This,
266 IPackageId **value);
267
268 HRESULT (STDMETHODCALLTYPE *get_InstalledLocation)(
269 IPackage *This,
270 IUnknown **value);
271
272 HRESULT (STDMETHODCALLTYPE *get_IsFramework)(
273 IPackage *This,
274 CHAR *value);
275
276 HRESULT (STDMETHODCALLTYPE *get_Dependencies)(
277 IPackage *This,
278 void **value);
279
280 END_INTERFACE
281 } IPackageVtbl;
282
283 interface IPackage {
284 CONST_VTBL IPackageVtbl* lpVtbl;
285 };
286
287 /*** IUnknown methods ***/
288 #define IPackage_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
289 #define IPackage_AddRef(This) (This)->lpVtbl->AddRef(This)
290 #define IPackage_Release(This) (This)->lpVtbl->Release(This)
291 /*** IInspectable methods ***/
292 #define IPackage_GetIids(This,count,ids) (This)->lpVtbl->GetIids(This,count,ids)
293 #define IPackage_GetRuntimeClassName(This,name) (This)->lpVtbl->GetRuntimeClassName(This,name)
294 #define IPackage_GetTrustLevel(This,level) (This)->lpVtbl->GetTrustLevel(This,level)
295 /*** IPackage methods ***/
296 #define IPackage_get_Id(This,value) (This)->lpVtbl->get_Id(This,value)
297 #define IPackage_get_InstalledLocation(This,value) (This)->lpVtbl->get_InstalledLocation(This,value)
298 #define IPackage_get_IsFramework(This,value) (This)->lpVtbl->get_IsFramework(This,value)
299 #define IPackage_get_Dependencies(This,value) (This)->lpVtbl->get_Dependencies(This,value)
300
301 /* IPackage2 */
302 typedef struct IPackage2Vtbl {
303 BEGIN_INTERFACE
304
305 /*** IUnknown methods ***/
306 HRESULT (STDMETHODCALLTYPE *QueryInterface)(
307 IPackage2 *This,
308 REFIID riid,
309 void **ppvObject);
310
311 ULONG (STDMETHODCALLTYPE *AddRef)(
312 IPackage2 *This);
313
314 ULONG (STDMETHODCALLTYPE *Release)(
315 IPackage2 *This);
316
317 /*** IInspectable methods ***/
318 HRESULT (STDMETHODCALLTYPE *GetIids)(
319 IPackage2 *This,
320 UINT32 *count,
321 IID **ids);
322
323 HRESULT (STDMETHODCALLTYPE *GetRuntimeClassName)(
324 IPackage2 *This,
325 HSTRING *className);
326
327 HRESULT (STDMETHODCALLTYPE *GetTrustLevel)(
328 IPackage2 *This,
329 TrustLevel *trustLevel);
330
331 /*** IPackage2 methods ***/
332 HRESULT (STDMETHODCALLTYPE *get_DisplayName)(
333 IPackage2 *This,
334 HSTRING *value);
335
336 HRESULT (STDMETHODCALLTYPE *get_PublisherDisplayName)(
337 IPackage2 *This,
338 HSTRING *value);
339
340 HRESULT (STDMETHODCALLTYPE *get_Description)(
341 IPackage2 *This,
342 HSTRING *value);
343
344 HRESULT (STDMETHODCALLTYPE *get_Logo)(
345 IPackage2 *This,
346 void **value);
347
348 HRESULT (STDMETHODCALLTYPE *get_IsResourcePackage)(
349 IPackage2 *This,
350 UCHAR *value);
351
352 HRESULT (STDMETHODCALLTYPE *get_IsBundle)(
353 IPackage2 *This,
354 UCHAR *value);
355
356 HRESULT (STDMETHODCALLTYPE *get_IsDevelopmentMode)(
357 IPackage2 *This,
358 UCHAR *value);
359
360 END_INTERFACE
361 } IPackage2Vtbl;
362
363 interface IPackage2 {
364 CONST_VTBL IPackage2Vtbl* lpVtbl;
365 };
366
367 /*** IUnknown methods ***/
368 #define IPackage2_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
369 #define IPackage2_AddRef(This) (This)->lpVtbl->AddRef(This)
370 #define IPackage2_Release(This) (This)->lpVtbl->Release(This)
371 /*** IInspectable methods ***/
372 #define IPackage2_GetIids(This,count,ids) (This)->lpVtbl->GetIids(This,count,ids)
373 #define IPackage2_GetRuntimeClassName(This,name) (This)->lpVtbl->GetRuntimeClassName(This,name)
374 #define IPackage2_GetTrustLevel(This,level) (This)->lpVtbl->GetTrustLevel(This,level)
375 /*** IPackage2 methods ***/
376 #define IPackage2_get_DisplayName(This,value) (This)->lpVtbl->get_DisplayName(This,value)
377 #define IPackage2_get_PublisherDisplayName(This,value) (This)->lpVtbl->get_PublisherDisplayName(This,value)
378 #define IPackage2_get_Description(This,value) (This)->lpVtbl->get_Description(This,value)
379 #define IPackage2_get_Logo(This,value) (This)->lpVtbl->get_Logo(This,value)
380 #define IPackage2_get_IsResourcePackage(This,value) (This)->lpVtbl->get_IsResourcePackage(This,value)
381 #define IPackage2_get_IsBundle(This,value) (This)->lpVtbl->get_IsBundle(This,value)
382 #define IPackage2_get_IsDevelopmentMode(This,value) (This)->lpVtbl->get_IsDevelopmentMode(This,value)