Authors: Stewart Caie<kyz@uklinux.net>, Jed Wing <jedwin@ugcs.caltech.edu>, Mike...
[wine] / include / pstore.h
1 /*** Autogenerated by WIDL 0.1 from pstore.idl - Do not edit ***/
2 #include <rpc.h>
3 #include <rpcndr.h>
4
5 #ifndef __WIDL_PSTORE_H
6 #define __WIDL_PSTORE_H
7 #ifdef __cplusplus
8 extern "C" {
9 #endif
10 #include <oaidl.h>
11 #define PST_KEY_CURRENT_USER    0
12 #define PST_KEY_LOCAL_MACHINE   1
13 #define PST_E_OK          0x00000000L
14 #define PST_E_TYPE_EXISTS 0x800C0004L
15 #define PST_AUTHENTICODE        1
16 #define PST_BINARY_CHECK        2
17 #define PST_SECURITY_DESCRIPTOR 4
18 typedef DWORD PST_ACCESSMODE;
19
20 typedef DWORD PST_ACCESSCLAUSETYPE;
21
22 typedef DWORD PST_KEY;
23
24 typedef DWORD PST_PROVIDERCAPABILITIES;
25
26 typedef GUID PST_PROVIDERID, *PPST_PROVIDERID;
27
28 typedef struct _PST_PROVIDERINFO {
29     DWORD cbSize;
30     PST_PROVIDERID ID;
31     PST_PROVIDERCAPABILITIES Capabilities;
32     LPWSTR szProviderName;
33 } PST_PROVIDERINFO, *PPST_PROVIDERINFO;
34
35 typedef void *PPST_PROMPTIFO;
36
37 typedef struct {
38     DWORD cbSize;
39     PST_ACCESSCLAUSETYPE ClauseType;
40     DWORD cbClauseData;
41     BYTE *pbClauseData;
42 } PST_ACCESSCLAUSE, *PPST_ACCESSCLAUSE;
43
44 typedef struct {
45     DWORD cbSize;
46     PST_ACCESSMODE AccessModeFlags;
47     DWORD cClauses;
48     PST_ACCESSCLAUSE *rgClauses;
49 } PST_ACCESSRULE, *PPST_ACCESSRULE;
50
51 typedef struct {
52     DWORD cbSize;
53     DWORD cClause;
54     PST_ACCESSRULE *rgRules;
55 } PST_ACCESSRULESET, *PPST_ACCESSRULESET;
56
57 typedef struct {
58     DWORD cbSize;
59     LPWSTR szDisplayName;
60 } PST_TYPEINFO, *PPST_TYPEINFO;
61
62 typedef struct {
63     DWORD cbSize;
64     DWORD dwPromptFlags;
65     DWORD_PTR hwndApp;
66     LPCWSTR szPrompt;
67 } PST_PROMPTINFO, *PPST_PROMPTINFO;
68
69 #ifndef __IEnumPStoreItems_FWD_DEFINED__
70 #define __IEnumPStoreItems_FWD_DEFINED__
71 typedef struct IEnumPStoreItems IEnumPStoreItems;
72 #endif
73
74 /*****************************************************************************
75  * IEnumPStoreItems interface
76  */
77 #ifndef __IEnumPStoreItems_INTERFACE_DEFINED__
78 #define __IEnumPStoreItems_INTERFACE_DEFINED__
79
80 #if defined(__cplusplus) && !defined(CINTERFACE)
81 struct IEnumPStoreItems : public IUnknown
82 {
83     virtual HRESULT STDMETHODCALLTYPE Clone(
84         IEnumPStoreItems** ppenum) = 0;
85
86     virtual HRESULT STDMETHODCALLTYPE Next(
87         DWORD celt,
88         LPWSTR* rgelt,
89         DWORD* pceltFetched) = 0;
90
91     virtual HRESULT STDMETHODCALLTYPE Reset(
92         ) = 0;
93
94     virtual HRESULT STDMETHODCALLTYPE Skip(
95         DWORD celt) = 0;
96
97 };
98 #else
99 typedef struct IEnumPStoreItemsVtbl IEnumPStoreItemsVtbl;
100 struct IEnumPStoreItems {
101     const IEnumPStoreItemsVtbl* lpVtbl;
102 };
103 struct IEnumPStoreItemsVtbl {
104     BEGIN_INTERFACE
105
106     /*** IUnknown methods ***/
107     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
108         IEnumPStoreItems* This,
109         REFIID riid,
110         void** ppvObject);
111
112     ULONG (STDMETHODCALLTYPE *AddRef)(
113         IEnumPStoreItems* This);
114
115     ULONG (STDMETHODCALLTYPE *Release)(
116         IEnumPStoreItems* This);
117
118     /*** IEnumPStoreItems methods ***/
119     HRESULT (STDMETHODCALLTYPE *Clone)(
120         IEnumPStoreItems* This,
121         IEnumPStoreItems** ppenum);
122
123     HRESULT (STDMETHODCALLTYPE *Next)(
124         IEnumPStoreItems* This,
125         DWORD celt,
126         LPWSTR* rgelt,
127         DWORD* pceltFetched);
128
129     HRESULT (STDMETHODCALLTYPE *Reset)(
130         IEnumPStoreItems* This);
131
132     HRESULT (STDMETHODCALLTYPE *Skip)(
133         IEnumPStoreItems* This,
134         DWORD celt);
135
136     END_INTERFACE
137 };
138
139 #ifdef COBJMACROS
140 /*** IUnknown methods ***/
141 #define IEnumPStoreItems_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
142 #define IEnumPStoreItems_AddRef(p) (p)->lpVtbl->AddRef(p)
143 #define IEnumPStoreItems_Release(p) (p)->lpVtbl->Release(p)
144 /*** IEnumPStoreItems methods ***/
145 #define IEnumPStoreItems_Clone(p,a) (p)->lpVtbl->Clone(p,a)
146 #define IEnumPStoreItems_Next(p,a,b,c) (p)->lpVtbl->Next(p,a,b,c)
147 #define IEnumPStoreItems_Reset(p) (p)->lpVtbl->Reset(p)
148 #define IEnumPStoreItems_Skip(p,a) (p)->lpVtbl->Skip(p,a)
149 #endif
150
151 #endif
152
153 #define IEnumPStoreItems_METHODS \
154     /*** IUnknown methods ***/ \
155     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \
156     STDMETHOD_(ULONG,AddRef)(THIS) PURE; \
157     STDMETHOD_(ULONG,Release)(THIS) PURE; \
158     /*** IEnumPStoreItems methods ***/ \
159     STDMETHOD_(HRESULT,Clone)(THIS_ IEnumPStoreItems** ppenum) PURE; \
160     STDMETHOD_(HRESULT,Next)(THIS_ DWORD celt, LPWSTR* rgelt, DWORD* pceltFetched) PURE; \
161     STDMETHOD_(HRESULT,Reset)(THIS) PURE; \
162     STDMETHOD_(HRESULT,Skip)(THIS_ DWORD celt) PURE;
163
164 HRESULT CALLBACK IEnumPStoreItems_Clone_Proxy(
165     IEnumPStoreItems* This,
166     IEnumPStoreItems** ppenum);
167 void __RPC_STUB IEnumPStoreItems_Clone_Stub(
168     struct IRpcStubBuffer* This,
169     struct IRpcChannelBuffer* pRpcChannelBuffer,
170     PRPC_MESSAGE pRpcMessage,
171     DWORD* pdwStubPhase);
172 HRESULT CALLBACK IEnumPStoreItems_Next_Proxy(
173     IEnumPStoreItems* This,
174     DWORD celt,
175     LPWSTR* rgelt,
176     DWORD* pceltFetched);
177 void __RPC_STUB IEnumPStoreItems_Next_Stub(
178     struct IRpcStubBuffer* This,
179     struct IRpcChannelBuffer* pRpcChannelBuffer,
180     PRPC_MESSAGE pRpcMessage,
181     DWORD* pdwStubPhase);
182 HRESULT CALLBACK IEnumPStoreItems_Reset_Proxy(
183     IEnumPStoreItems* This);
184 void __RPC_STUB IEnumPStoreItems_Reset_Stub(
185     struct IRpcStubBuffer* This,
186     struct IRpcChannelBuffer* pRpcChannelBuffer,
187     PRPC_MESSAGE pRpcMessage,
188     DWORD* pdwStubPhase);
189 HRESULT CALLBACK IEnumPStoreItems_Skip_Proxy(
190     IEnumPStoreItems* This,
191     DWORD celt);
192 void __RPC_STUB IEnumPStoreItems_Skip_Stub(
193     struct IRpcStubBuffer* This,
194     struct IRpcChannelBuffer* pRpcChannelBuffer,
195     PRPC_MESSAGE pRpcMessage,
196     DWORD* pdwStubPhase);
197
198 #endif  /* __IEnumPStoreItems_INTERFACE_DEFINED__ */
199
200 #ifndef __IEnumPStoreTypes_FWD_DEFINED__
201 #define __IEnumPStoreTypes_FWD_DEFINED__
202 typedef struct IEnumPStoreTypes IEnumPStoreTypes;
203 #endif
204
205 /*****************************************************************************
206  * IEnumPStoreTypes interface
207  */
208 #ifndef __IEnumPStoreTypes_INTERFACE_DEFINED__
209 #define __IEnumPStoreTypes_INTERFACE_DEFINED__
210
211 #if defined(__cplusplus) && !defined(CINTERFACE)
212 struct IEnumPStoreTypes : public IUnknown
213 {
214     virtual HRESULT STDMETHODCALLTYPE Clone(
215         IEnumPStoreTypes** ppenum) = 0;
216
217     virtual HRESULT STDMETHODCALLTYPE Next(
218         DWORD celt,
219         LPWSTR* rgelt,
220         DWORD* pceltFetched) = 0;
221
222     virtual HRESULT STDMETHODCALLTYPE Reset(
223         ) = 0;
224
225     virtual HRESULT STDMETHODCALLTYPE Skip(
226         DWORD celt) = 0;
227
228 };
229 #else
230 typedef struct IEnumPStoreTypesVtbl IEnumPStoreTypesVtbl;
231 struct IEnumPStoreTypes {
232     const IEnumPStoreTypesVtbl* lpVtbl;
233 };
234 struct IEnumPStoreTypesVtbl {
235     BEGIN_INTERFACE
236
237     /*** IUnknown methods ***/
238     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
239         IEnumPStoreTypes* This,
240         REFIID riid,
241         void** ppvObject);
242
243     ULONG (STDMETHODCALLTYPE *AddRef)(
244         IEnumPStoreTypes* This);
245
246     ULONG (STDMETHODCALLTYPE *Release)(
247         IEnumPStoreTypes* This);
248
249     /*** IEnumPStoreTypes methods ***/
250     HRESULT (STDMETHODCALLTYPE *Clone)(
251         IEnumPStoreTypes* This,
252         IEnumPStoreTypes** ppenum);
253
254     HRESULT (STDMETHODCALLTYPE *Next)(
255         IEnumPStoreTypes* This,
256         DWORD celt,
257         LPWSTR* rgelt,
258         DWORD* pceltFetched);
259
260     HRESULT (STDMETHODCALLTYPE *Reset)(
261         IEnumPStoreTypes* This);
262
263     HRESULT (STDMETHODCALLTYPE *Skip)(
264         IEnumPStoreTypes* This,
265         DWORD celt);
266
267     END_INTERFACE
268 };
269
270 #ifdef COBJMACROS
271 /*** IUnknown methods ***/
272 #define IEnumPStoreTypes_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
273 #define IEnumPStoreTypes_AddRef(p) (p)->lpVtbl->AddRef(p)
274 #define IEnumPStoreTypes_Release(p) (p)->lpVtbl->Release(p)
275 /*** IEnumPStoreTypes methods ***/
276 #define IEnumPStoreTypes_Clone(p,a) (p)->lpVtbl->Clone(p,a)
277 #define IEnumPStoreTypes_Next(p,a,b,c) (p)->lpVtbl->Next(p,a,b,c)
278 #define IEnumPStoreTypes_Reset(p) (p)->lpVtbl->Reset(p)
279 #define IEnumPStoreTypes_Skip(p,a) (p)->lpVtbl->Skip(p,a)
280 #endif
281
282 #endif
283
284 #define IEnumPStoreTypes_METHODS \
285     /*** IUnknown methods ***/ \
286     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \
287     STDMETHOD_(ULONG,AddRef)(THIS) PURE; \
288     STDMETHOD_(ULONG,Release)(THIS) PURE; \
289     /*** IEnumPStoreTypes methods ***/ \
290     STDMETHOD_(HRESULT,Clone)(THIS_ IEnumPStoreTypes** ppenum) PURE; \
291     STDMETHOD_(HRESULT,Next)(THIS_ DWORD celt, LPWSTR* rgelt, DWORD* pceltFetched) PURE; \
292     STDMETHOD_(HRESULT,Reset)(THIS) PURE; \
293     STDMETHOD_(HRESULT,Skip)(THIS_ DWORD celt) PURE;
294
295 HRESULT CALLBACK IEnumPStoreTypes_Clone_Proxy(
296     IEnumPStoreTypes* This,
297     IEnumPStoreTypes** ppenum);
298 void __RPC_STUB IEnumPStoreTypes_Clone_Stub(
299     struct IRpcStubBuffer* This,
300     struct IRpcChannelBuffer* pRpcChannelBuffer,
301     PRPC_MESSAGE pRpcMessage,
302     DWORD* pdwStubPhase);
303 HRESULT CALLBACK IEnumPStoreTypes_Next_Proxy(
304     IEnumPStoreTypes* This,
305     DWORD celt,
306     LPWSTR* rgelt,
307     DWORD* pceltFetched);
308 void __RPC_STUB IEnumPStoreTypes_Next_Stub(
309     struct IRpcStubBuffer* This,
310     struct IRpcChannelBuffer* pRpcChannelBuffer,
311     PRPC_MESSAGE pRpcMessage,
312     DWORD* pdwStubPhase);
313 HRESULT CALLBACK IEnumPStoreTypes_Reset_Proxy(
314     IEnumPStoreTypes* This);
315 void __RPC_STUB IEnumPStoreTypes_Reset_Stub(
316     struct IRpcStubBuffer* This,
317     struct IRpcChannelBuffer* pRpcChannelBuffer,
318     PRPC_MESSAGE pRpcMessage,
319     DWORD* pdwStubPhase);
320 HRESULT CALLBACK IEnumPStoreTypes_Skip_Proxy(
321     IEnumPStoreTypes* This,
322     DWORD celt);
323 void __RPC_STUB IEnumPStoreTypes_Skip_Stub(
324     struct IRpcStubBuffer* This,
325     struct IRpcChannelBuffer* pRpcChannelBuffer,
326     PRPC_MESSAGE pRpcMessage,
327     DWORD* pdwStubPhase);
328
329 #endif  /* __IEnumPStoreTypes_INTERFACE_DEFINED__ */
330
331 #ifndef __IPStore_FWD_DEFINED__
332 #define __IPStore_FWD_DEFINED__
333 typedef struct IPStore IPStore;
334 #endif
335
336 /*****************************************************************************
337  * IPStore interface
338  */
339 #ifndef __IPStore_INTERFACE_DEFINED__
340 #define __IPStore_INTERFACE_DEFINED__
341
342 #if defined(__cplusplus) && !defined(CINTERFACE)
343 struct IPStore : public IUnknown
344 {
345     virtual HRESULT STDMETHODCALLTYPE GetInfo(
346         PPST_PROVIDERINFO* ppProperties) = 0;
347
348     virtual HRESULT STDMETHODCALLTYPE GetProvParam(
349         DWORD dwParam,
350         DWORD* pcbData,
351         BYTE** ppbData,
352         DWORD dwFlags) = 0;
353
354     virtual HRESULT STDMETHODCALLTYPE SetProvParam(
355         DWORD dwParam,
356         DWORD cbData,
357         BYTE* pbData,
358         DWORD* dwFlags) = 0;
359
360     virtual HRESULT STDMETHODCALLTYPE CreateType(
361         PST_KEY Key,
362         const GUID* pType,
363         PPST_TYPEINFO pInfo,
364         DWORD dwFlags) = 0;
365
366     virtual HRESULT STDMETHODCALLTYPE GetTypeInfo(
367         PST_KEY Key,
368         const GUID* pType,
369         PPST_TYPEINFO** ppInfo,
370         DWORD dwFlags) = 0;
371
372     virtual HRESULT STDMETHODCALLTYPE DeleteType(
373         PST_KEY Key,
374         const GUID* pType,
375         DWORD dwFlags) = 0;
376
377     virtual HRESULT STDMETHODCALLTYPE CreateSubtype(
378         PST_KEY Key,
379         const GUID* pType,
380         const GUID* pSubtype,
381         PPST_TYPEINFO pInfo,
382         PPST_ACCESSRULESET pRules,
383         DWORD dwFlags) = 0;
384
385     virtual HRESULT STDMETHODCALLTYPE GetSubtypeInfo(
386         PST_KEY Key,
387         const GUID* pType,
388         const GUID* pSubtype,
389         PPST_TYPEINFO** ppInfo,
390         DWORD dwFlags) = 0;
391
392     virtual HRESULT STDMETHODCALLTYPE DeleteSubtype(
393         PST_KEY Key,
394         const GUID* pType,
395         const GUID* pSubtype,
396         DWORD dwFlags) = 0;
397
398     virtual HRESULT STDMETHODCALLTYPE ReadAccessRuleset(
399         PST_KEY Key,
400         const GUID* pType,
401         const GUID* pSubtype,
402         PPST_TYPEINFO pInfo,
403         PPST_ACCESSRULESET** ppRules,
404         DWORD dwFlags) = 0;
405
406     virtual HRESULT STDMETHODCALLTYPE WriteAccessRuleset(
407         PST_KEY Key,
408         const GUID* pType,
409         const GUID* pSubtype,
410         PPST_TYPEINFO pInfo,
411         PPST_ACCESSRULESET pRules,
412         DWORD dwFlags) = 0;
413
414     virtual HRESULT STDMETHODCALLTYPE EnumTypes(
415         PST_KEY Key,
416         DWORD dwFlags,
417         IEnumPStoreTypes** ppenum) = 0;
418
419     virtual HRESULT STDMETHODCALLTYPE EnumSubtypes(
420         PST_KEY Key,
421         const GUID* pType,
422         DWORD dwFlags,
423         IEnumPStoreTypes** ppenum) = 0;
424
425     virtual HRESULT STDMETHODCALLTYPE DeleteItem(
426         PST_KEY Key,
427         const GUID* pItemType,
428         const GUID* pItemSubType,
429         LPCWSTR szItemName,
430         PPST_PROMPTINFO pPromptInfo,
431         DWORD dwFlags) = 0;
432
433     virtual HRESULT STDMETHODCALLTYPE ReadItem(
434         PST_KEY Key,
435         const GUID* pItemType,
436         const GUID* pItemSubtype,
437         LPCWSTR szItemName,
438         DWORD* cbData,
439         BYTE** pbData,
440         PPST_PROMPTIFO pPromptInfo,
441         DWORD dwFlags) = 0;
442
443     virtual HRESULT STDMETHODCALLTYPE WriteItem(
444         PST_KEY Key,
445         const GUID* pItemType,
446         const GUID* pItemSubtype,
447         LPCWSTR szItemName,
448         DWORD cbData,
449         BYTE* ppbData,
450         PPST_PROMPTIFO pPromptInfo,
451         DWORD dwDefaultConfirmationStyle,
452         DWORD dwFlags) = 0;
453
454     virtual HRESULT STDMETHODCALLTYPE OpenItem(
455         PST_KEY Key,
456         const GUID* pItemType,
457         const GUID* pItemSubtype,
458         LPCWSTR szItemName,
459         PST_ACCESSMODE ModeFlags,
460         PPST_PROMPTIFO pProomptInfo,
461         DWORD dwFlags) = 0;
462
463     virtual HRESULT STDMETHODCALLTYPE CloseItem(
464         PST_KEY Key,
465         const GUID* pItemType,
466         const GUID* pItemSubtype,
467         LPCWSTR* szItemName,
468         DWORD dwFlags) = 0;
469
470     virtual HRESULT STDMETHODCALLTYPE EnumItems(
471         PST_KEY Key,
472         const GUID* pItemType,
473         const GUID* pItemSubtype,
474         DWORD dwFlags,
475         IEnumPStoreItems** ppenum) = 0;
476
477 };
478 #else
479 typedef struct IPStoreVtbl IPStoreVtbl;
480 struct IPStore {
481     const IPStoreVtbl* lpVtbl;
482 };
483 struct IPStoreVtbl {
484     BEGIN_INTERFACE
485
486     /*** IUnknown methods ***/
487     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
488         IPStore* This,
489         REFIID riid,
490         void** ppvObject);
491
492     ULONG (STDMETHODCALLTYPE *AddRef)(
493         IPStore* This);
494
495     ULONG (STDMETHODCALLTYPE *Release)(
496         IPStore* This);
497
498     /*** IPStore methods ***/
499     HRESULT (STDMETHODCALLTYPE *GetInfo)(
500         IPStore* This,
501         PPST_PROVIDERINFO* ppProperties);
502
503     HRESULT (STDMETHODCALLTYPE *GetProvParam)(
504         IPStore* This,
505         DWORD dwParam,
506         DWORD* pcbData,
507         BYTE** ppbData,
508         DWORD dwFlags);
509
510     HRESULT (STDMETHODCALLTYPE *SetProvParam)(
511         IPStore* This,
512         DWORD dwParam,
513         DWORD cbData,
514         BYTE* pbData,
515         DWORD* dwFlags);
516
517     HRESULT (STDMETHODCALLTYPE *CreateType)(
518         IPStore* This,
519         PST_KEY Key,
520         const GUID* pType,
521         PPST_TYPEINFO pInfo,
522         DWORD dwFlags);
523
524     HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
525         IPStore* This,
526         PST_KEY Key,
527         const GUID* pType,
528         PPST_TYPEINFO** ppInfo,
529         DWORD dwFlags);
530
531     HRESULT (STDMETHODCALLTYPE *DeleteType)(
532         IPStore* This,
533         PST_KEY Key,
534         const GUID* pType,
535         DWORD dwFlags);
536
537     HRESULT (STDMETHODCALLTYPE *CreateSubtype)(
538         IPStore* This,
539         PST_KEY Key,
540         const GUID* pType,
541         const GUID* pSubtype,
542         PPST_TYPEINFO pInfo,
543         PPST_ACCESSRULESET pRules,
544         DWORD dwFlags);
545
546     HRESULT (STDMETHODCALLTYPE *GetSubtypeInfo)(
547         IPStore* This,
548         PST_KEY Key,
549         const GUID* pType,
550         const GUID* pSubtype,
551         PPST_TYPEINFO** ppInfo,
552         DWORD dwFlags);
553
554     HRESULT (STDMETHODCALLTYPE *DeleteSubtype)(
555         IPStore* This,
556         PST_KEY Key,
557         const GUID* pType,
558         const GUID* pSubtype,
559         DWORD dwFlags);
560
561     HRESULT (STDMETHODCALLTYPE *ReadAccessRuleset)(
562         IPStore* This,
563         PST_KEY Key,
564         const GUID* pType,
565         const GUID* pSubtype,
566         PPST_TYPEINFO pInfo,
567         PPST_ACCESSRULESET** ppRules,
568         DWORD dwFlags);
569
570     HRESULT (STDMETHODCALLTYPE *WriteAccessRuleset)(
571         IPStore* This,
572         PST_KEY Key,
573         const GUID* pType,
574         const GUID* pSubtype,
575         PPST_TYPEINFO pInfo,
576         PPST_ACCESSRULESET pRules,
577         DWORD dwFlags);
578
579     HRESULT (STDMETHODCALLTYPE *EnumTypes)(
580         IPStore* This,
581         PST_KEY Key,
582         DWORD dwFlags,
583         IEnumPStoreTypes** ppenum);
584
585     HRESULT (STDMETHODCALLTYPE *EnumSubtypes)(
586         IPStore* This,
587         PST_KEY Key,
588         const GUID* pType,
589         DWORD dwFlags,
590         IEnumPStoreTypes** ppenum);
591
592     HRESULT (STDMETHODCALLTYPE *DeleteItem)(
593         IPStore* This,
594         PST_KEY Key,
595         const GUID* pItemType,
596         const GUID* pItemSubType,
597         LPCWSTR szItemName,
598         PPST_PROMPTINFO pPromptInfo,
599         DWORD dwFlags);
600
601     HRESULT (STDMETHODCALLTYPE *ReadItem)(
602         IPStore* This,
603         PST_KEY Key,
604         const GUID* pItemType,
605         const GUID* pItemSubtype,
606         LPCWSTR szItemName,
607         DWORD* cbData,
608         BYTE** pbData,
609         PPST_PROMPTIFO pPromptInfo,
610         DWORD dwFlags);
611
612     HRESULT (STDMETHODCALLTYPE *WriteItem)(
613         IPStore* This,
614         PST_KEY Key,
615         const GUID* pItemType,
616         const GUID* pItemSubtype,
617         LPCWSTR szItemName,
618         DWORD cbData,
619         BYTE* ppbData,
620         PPST_PROMPTIFO pPromptInfo,
621         DWORD dwDefaultConfirmationStyle,
622         DWORD dwFlags);
623
624     HRESULT (STDMETHODCALLTYPE *OpenItem)(
625         IPStore* This,
626         PST_KEY Key,
627         const GUID* pItemType,
628         const GUID* pItemSubtype,
629         LPCWSTR szItemName,
630         PST_ACCESSMODE ModeFlags,
631         PPST_PROMPTIFO pProomptInfo,
632         DWORD dwFlags);
633
634     HRESULT (STDMETHODCALLTYPE *CloseItem)(
635         IPStore* This,
636         PST_KEY Key,
637         const GUID* pItemType,
638         const GUID* pItemSubtype,
639         LPCWSTR* szItemName,
640         DWORD dwFlags);
641
642     HRESULT (STDMETHODCALLTYPE *EnumItems)(
643         IPStore* This,
644         PST_KEY Key,
645         const GUID* pItemType,
646         const GUID* pItemSubtype,
647         DWORD dwFlags,
648         IEnumPStoreItems** ppenum);
649
650     END_INTERFACE
651 };
652
653 #ifdef COBJMACROS
654 /*** IUnknown methods ***/
655 #define IPStore_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
656 #define IPStore_AddRef(p) (p)->lpVtbl->AddRef(p)
657 #define IPStore_Release(p) (p)->lpVtbl->Release(p)
658 /*** IPStore methods ***/
659 #define IPStore_GetInfo(p,a) (p)->lpVtbl->GetInfo(p,a)
660 #define IPStore_GetProvParam(p,a,b,c,d) (p)->lpVtbl->GetProvParam(p,a,b,c,d)
661 #define IPStore_SetProvParam(p,a,b,c,d) (p)->lpVtbl->SetProvParam(p,a,b,c,d)
662 #define IPStore_CreateType(p,a,b,c,d) (p)->lpVtbl->CreateType(p,a,b,c,d)
663 #define IPStore_GetTypeInfo(p,a,b,c,d) (p)->lpVtbl->GetTypeInfo(p,a,b,c,d)
664 #define IPStore_DeleteType(p,a,b,c) (p)->lpVtbl->DeleteType(p,a,b,c)
665 #define IPStore_CreateSubtype(p,a,b,c,d,e,f) (p)->lpVtbl->CreateSubtype(p,a,b,c,d,e,f)
666 #define IPStore_GetSubtypeInfo(p,a,b,c,d,e) (p)->lpVtbl->GetSubtypeInfo(p,a,b,c,d,e)
667 #define IPStore_DeleteSubtype(p,a,b,c,d) (p)->lpVtbl->DeleteSubtype(p,a,b,c,d)
668 #define IPStore_ReadAccessRuleset(p,a,b,c,d,e,f) (p)->lpVtbl->ReadAccessRuleset(p,a,b,c,d,e,f)
669 #define IPStore_WriteAccessRuleset(p,a,b,c,d,e,f) (p)->lpVtbl->WriteAccessRuleset(p,a,b,c,d,e,f)
670 #define IPStore_EnumTypes(p,a,b,c) (p)->lpVtbl->EnumTypes(p,a,b,c)
671 #define IPStore_EnumSubtypes(p,a,b,c,d) (p)->lpVtbl->EnumSubtypes(p,a,b,c,d)
672 #define IPStore_DeleteItem(p,a,b,c,d,e,f) (p)->lpVtbl->DeleteItem(p,a,b,c,d,e,f)
673 #define IPStore_ReadItem(p,a,b,c,d,e,f,g,h) (p)->lpVtbl->ReadItem(p,a,b,c,d,e,f,g,h)
674 #define IPStore_WriteItem(p,a,b,c,d,e,f,g,h,i) (p)->lpVtbl->WriteItem(p,a,b,c,d,e,f,g,h,i)
675 #define IPStore_OpenItem(p,a,b,c,d,e,f,g) (p)->lpVtbl->OpenItem(p,a,b,c,d,e,f,g)
676 #define IPStore_CloseItem(p,a,b,c,d,e) (p)->lpVtbl->CloseItem(p,a,b,c,d,e)
677 #define IPStore_EnumItems(p,a,b,c,d,e) (p)->lpVtbl->EnumItems(p,a,b,c,d,e)
678 #endif
679
680 #endif
681
682 #define IPStore_METHODS \
683     /*** IUnknown methods ***/ \
684     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \
685     STDMETHOD_(ULONG,AddRef)(THIS) PURE; \
686     STDMETHOD_(ULONG,Release)(THIS) PURE; \
687     /*** IPStore methods ***/ \
688     STDMETHOD_(HRESULT,GetInfo)(THIS_ PPST_PROVIDERINFO* ppProperties) PURE; \
689     STDMETHOD_(HRESULT,GetProvParam)(THIS_ DWORD dwParam, DWORD* pcbData, BYTE** ppbData, DWORD dwFlags) PURE; \
690     STDMETHOD_(HRESULT,SetProvParam)(THIS_ DWORD dwParam, DWORD cbData, BYTE* pbData, DWORD* dwFlags) PURE; \
691     STDMETHOD_(HRESULT,CreateType)(THIS_ PST_KEY Key, const GUID* pType, PPST_TYPEINFO pInfo, DWORD dwFlags) PURE; \
692     STDMETHOD_(HRESULT,GetTypeInfo)(THIS_ PST_KEY Key, const GUID* pType, PPST_TYPEINFO** ppInfo, DWORD dwFlags) PURE; \
693     STDMETHOD_(HRESULT,DeleteType)(THIS_ PST_KEY Key, const GUID* pType, DWORD dwFlags) PURE; \
694     STDMETHOD_(HRESULT,CreateSubtype)(THIS_ PST_KEY Key, const GUID* pType, const GUID* pSubtype, PPST_TYPEINFO pInfo, PPST_ACCESSRULESET pRules, DWORD dwFlags) PURE; \
695     STDMETHOD_(HRESULT,GetSubtypeInfo)(THIS_ PST_KEY Key, const GUID* pType, const GUID* pSubtype, PPST_TYPEINFO** ppInfo, DWORD dwFlags) PURE; \
696     STDMETHOD_(HRESULT,DeleteSubtype)(THIS_ PST_KEY Key, const GUID* pType, const GUID* pSubtype, DWORD dwFlags) PURE; \
697     STDMETHOD_(HRESULT,ReadAccessRuleset)(THIS_ PST_KEY Key, const GUID* pType, const GUID* pSubtype, PPST_TYPEINFO pInfo, PPST_ACCESSRULESET** ppRules, DWORD dwFlags) PURE; \
698     STDMETHOD_(HRESULT,WriteAccessRuleset)(THIS_ PST_KEY Key, const GUID* pType, const GUID* pSubtype, PPST_TYPEINFO pInfo, PPST_ACCESSRULESET pRules, DWORD dwFlags) PURE; \
699     STDMETHOD_(HRESULT,EnumTypes)(THIS_ PST_KEY Key, DWORD dwFlags, IEnumPStoreTypes** ppenum) PURE; \
700     STDMETHOD_(HRESULT,EnumSubtypes)(THIS_ PST_KEY Key, const GUID* pType, DWORD dwFlags, IEnumPStoreTypes** ppenum) PURE; \
701     STDMETHOD_(HRESULT,DeleteItem)(THIS_ PST_KEY Key, const GUID* pItemType, const GUID* pItemSubType, LPCWSTR szItemName, PPST_PROMPTINFO pPromptInfo, DWORD dwFlags) PURE; \
702     STDMETHOD_(HRESULT,ReadItem)(THIS_ PST_KEY Key, const GUID* pItemType, const GUID* pItemSubtype, LPCWSTR szItemName, DWORD* cbData, BYTE** pbData, PPST_PROMPTIFO pPromptInfo, DWORD dwFlags) PURE; \
703     STDMETHOD_(HRESULT,WriteItem)(THIS_ PST_KEY Key, const GUID* pItemType, const GUID* pItemSubtype, LPCWSTR szItemName, DWORD cbData, BYTE* ppbData, PPST_PROMPTIFO pPromptInfo, DWORD dwDefaultConfirmationStyle, DWORD dwFlags) PURE; \
704     STDMETHOD_(HRESULT,OpenItem)(THIS_ PST_KEY Key, const GUID* pItemType, const GUID* pItemSubtype, LPCWSTR szItemName, PST_ACCESSMODE ModeFlags, PPST_PROMPTIFO pProomptInfo, DWORD dwFlags) PURE; \
705     STDMETHOD_(HRESULT,CloseItem)(THIS_ PST_KEY Key, const GUID* pItemType, const GUID* pItemSubtype, LPCWSTR* szItemName, DWORD dwFlags) PURE; \
706     STDMETHOD_(HRESULT,EnumItems)(THIS_ PST_KEY Key, const GUID* pItemType, const GUID* pItemSubtype, DWORD dwFlags, IEnumPStoreItems** ppenum) PURE;
707
708 HRESULT CALLBACK IPStore_GetInfo_Proxy(
709     IPStore* This,
710     PPST_PROVIDERINFO* ppProperties);
711 void __RPC_STUB IPStore_GetInfo_Stub(
712     struct IRpcStubBuffer* This,
713     struct IRpcChannelBuffer* pRpcChannelBuffer,
714     PRPC_MESSAGE pRpcMessage,
715     DWORD* pdwStubPhase);
716 HRESULT CALLBACK IPStore_GetProvParam_Proxy(
717     IPStore* This,
718     DWORD dwParam,
719     DWORD* pcbData,
720     BYTE** ppbData,
721     DWORD dwFlags);
722 void __RPC_STUB IPStore_GetProvParam_Stub(
723     struct IRpcStubBuffer* This,
724     struct IRpcChannelBuffer* pRpcChannelBuffer,
725     PRPC_MESSAGE pRpcMessage,
726     DWORD* pdwStubPhase);
727 HRESULT CALLBACK IPStore_SetProvParam_Proxy(
728     IPStore* This,
729     DWORD dwParam,
730     DWORD cbData,
731     BYTE* pbData,
732     DWORD* dwFlags);
733 void __RPC_STUB IPStore_SetProvParam_Stub(
734     struct IRpcStubBuffer* This,
735     struct IRpcChannelBuffer* pRpcChannelBuffer,
736     PRPC_MESSAGE pRpcMessage,
737     DWORD* pdwStubPhase);
738 HRESULT CALLBACK IPStore_CreateType_Proxy(
739     IPStore* This,
740     PST_KEY Key,
741     const GUID* pType,
742     PPST_TYPEINFO pInfo,
743     DWORD dwFlags);
744 void __RPC_STUB IPStore_CreateType_Stub(
745     struct IRpcStubBuffer* This,
746     struct IRpcChannelBuffer* pRpcChannelBuffer,
747     PRPC_MESSAGE pRpcMessage,
748     DWORD* pdwStubPhase);
749 HRESULT CALLBACK IPStore_GetTypeInfo_Proxy(
750     IPStore* This,
751     PST_KEY Key,
752     const GUID* pType,
753     PPST_TYPEINFO** ppInfo,
754     DWORD dwFlags);
755 void __RPC_STUB IPStore_GetTypeInfo_Stub(
756     struct IRpcStubBuffer* This,
757     struct IRpcChannelBuffer* pRpcChannelBuffer,
758     PRPC_MESSAGE pRpcMessage,
759     DWORD* pdwStubPhase);
760 HRESULT CALLBACK IPStore_DeleteType_Proxy(
761     IPStore* This,
762     PST_KEY Key,
763     const GUID* pType,
764     DWORD dwFlags);
765 void __RPC_STUB IPStore_DeleteType_Stub(
766     struct IRpcStubBuffer* This,
767     struct IRpcChannelBuffer* pRpcChannelBuffer,
768     PRPC_MESSAGE pRpcMessage,
769     DWORD* pdwStubPhase);
770 HRESULT CALLBACK IPStore_CreateSubtype_Proxy(
771     IPStore* This,
772     PST_KEY Key,
773     const GUID* pType,
774     const GUID* pSubtype,
775     PPST_TYPEINFO pInfo,
776     PPST_ACCESSRULESET pRules,
777     DWORD dwFlags);
778 void __RPC_STUB IPStore_CreateSubtype_Stub(
779     struct IRpcStubBuffer* This,
780     struct IRpcChannelBuffer* pRpcChannelBuffer,
781     PRPC_MESSAGE pRpcMessage,
782     DWORD* pdwStubPhase);
783 HRESULT CALLBACK IPStore_GetSubtypeInfo_Proxy(
784     IPStore* This,
785     PST_KEY Key,
786     const GUID* pType,
787     const GUID* pSubtype,
788     PPST_TYPEINFO** ppInfo,
789     DWORD dwFlags);
790 void __RPC_STUB IPStore_GetSubtypeInfo_Stub(
791     struct IRpcStubBuffer* This,
792     struct IRpcChannelBuffer* pRpcChannelBuffer,
793     PRPC_MESSAGE pRpcMessage,
794     DWORD* pdwStubPhase);
795 HRESULT CALLBACK IPStore_DeleteSubtype_Proxy(
796     IPStore* This,
797     PST_KEY Key,
798     const GUID* pType,
799     const GUID* pSubtype,
800     DWORD dwFlags);
801 void __RPC_STUB IPStore_DeleteSubtype_Stub(
802     struct IRpcStubBuffer* This,
803     struct IRpcChannelBuffer* pRpcChannelBuffer,
804     PRPC_MESSAGE pRpcMessage,
805     DWORD* pdwStubPhase);
806 HRESULT CALLBACK IPStore_ReadAccessRuleset_Proxy(
807     IPStore* This,
808     PST_KEY Key,
809     const GUID* pType,
810     const GUID* pSubtype,
811     PPST_TYPEINFO pInfo,
812     PPST_ACCESSRULESET** ppRules,
813     DWORD dwFlags);
814 void __RPC_STUB IPStore_ReadAccessRuleset_Stub(
815     struct IRpcStubBuffer* This,
816     struct IRpcChannelBuffer* pRpcChannelBuffer,
817     PRPC_MESSAGE pRpcMessage,
818     DWORD* pdwStubPhase);
819 HRESULT CALLBACK IPStore_WriteAccessRuleset_Proxy(
820     IPStore* This,
821     PST_KEY Key,
822     const GUID* pType,
823     const GUID* pSubtype,
824     PPST_TYPEINFO pInfo,
825     PPST_ACCESSRULESET pRules,
826     DWORD dwFlags);
827 void __RPC_STUB IPStore_WriteAccessRuleset_Stub(
828     struct IRpcStubBuffer* This,
829     struct IRpcChannelBuffer* pRpcChannelBuffer,
830     PRPC_MESSAGE pRpcMessage,
831     DWORD* pdwStubPhase);
832 HRESULT CALLBACK IPStore_EnumTypes_Proxy(
833     IPStore* This,
834     PST_KEY Key,
835     DWORD dwFlags,
836     IEnumPStoreTypes** ppenum);
837 void __RPC_STUB IPStore_EnumTypes_Stub(
838     struct IRpcStubBuffer* This,
839     struct IRpcChannelBuffer* pRpcChannelBuffer,
840     PRPC_MESSAGE pRpcMessage,
841     DWORD* pdwStubPhase);
842 HRESULT CALLBACK IPStore_EnumSubtypes_Proxy(
843     IPStore* This,
844     PST_KEY Key,
845     const GUID* pType,
846     DWORD dwFlags,
847     IEnumPStoreTypes** ppenum);
848 void __RPC_STUB IPStore_EnumSubtypes_Stub(
849     struct IRpcStubBuffer* This,
850     struct IRpcChannelBuffer* pRpcChannelBuffer,
851     PRPC_MESSAGE pRpcMessage,
852     DWORD* pdwStubPhase);
853 HRESULT CALLBACK IPStore_DeleteItem_Proxy(
854     IPStore* This,
855     PST_KEY Key,
856     const GUID* pItemType,
857     const GUID* pItemSubType,
858     LPCWSTR szItemName,
859     PPST_PROMPTINFO pPromptInfo,
860     DWORD dwFlags);
861 void __RPC_STUB IPStore_DeleteItem_Stub(
862     struct IRpcStubBuffer* This,
863     struct IRpcChannelBuffer* pRpcChannelBuffer,
864     PRPC_MESSAGE pRpcMessage,
865     DWORD* pdwStubPhase);
866 HRESULT CALLBACK IPStore_ReadItem_Proxy(
867     IPStore* This,
868     PST_KEY Key,
869     const GUID* pItemType,
870     const GUID* pItemSubtype,
871     LPCWSTR szItemName,
872     DWORD* cbData,
873     BYTE** pbData,
874     PPST_PROMPTIFO pPromptInfo,
875     DWORD dwFlags);
876 void __RPC_STUB IPStore_ReadItem_Stub(
877     struct IRpcStubBuffer* This,
878     struct IRpcChannelBuffer* pRpcChannelBuffer,
879     PRPC_MESSAGE pRpcMessage,
880     DWORD* pdwStubPhase);
881 HRESULT CALLBACK IPStore_WriteItem_Proxy(
882     IPStore* This,
883     PST_KEY Key,
884     const GUID* pItemType,
885     const GUID* pItemSubtype,
886     LPCWSTR szItemName,
887     DWORD cbData,
888     BYTE* ppbData,
889     PPST_PROMPTIFO pPromptInfo,
890     DWORD dwDefaultConfirmationStyle,
891     DWORD dwFlags);
892 void __RPC_STUB IPStore_WriteItem_Stub(
893     struct IRpcStubBuffer* This,
894     struct IRpcChannelBuffer* pRpcChannelBuffer,
895     PRPC_MESSAGE pRpcMessage,
896     DWORD* pdwStubPhase);
897 HRESULT CALLBACK IPStore_OpenItem_Proxy(
898     IPStore* This,
899     PST_KEY Key,
900     const GUID* pItemType,
901     const GUID* pItemSubtype,
902     LPCWSTR szItemName,
903     PST_ACCESSMODE ModeFlags,
904     PPST_PROMPTIFO pProomptInfo,
905     DWORD dwFlags);
906 void __RPC_STUB IPStore_OpenItem_Stub(
907     struct IRpcStubBuffer* This,
908     struct IRpcChannelBuffer* pRpcChannelBuffer,
909     PRPC_MESSAGE pRpcMessage,
910     DWORD* pdwStubPhase);
911 HRESULT CALLBACK IPStore_CloseItem_Proxy(
912     IPStore* This,
913     PST_KEY Key,
914     const GUID* pItemType,
915     const GUID* pItemSubtype,
916     LPCWSTR* szItemName,
917     DWORD dwFlags);
918 void __RPC_STUB IPStore_CloseItem_Stub(
919     struct IRpcStubBuffer* This,
920     struct IRpcChannelBuffer* pRpcChannelBuffer,
921     PRPC_MESSAGE pRpcMessage,
922     DWORD* pdwStubPhase);
923 HRESULT CALLBACK IPStore_EnumItems_Proxy(
924     IPStore* This,
925     PST_KEY Key,
926     const GUID* pItemType,
927     const GUID* pItemSubtype,
928     DWORD dwFlags,
929     IEnumPStoreItems** ppenum);
930 void __RPC_STUB IPStore_EnumItems_Stub(
931     struct IRpcStubBuffer* This,
932     struct IRpcChannelBuffer* pRpcChannelBuffer,
933     PRPC_MESSAGE pRpcMessage,
934     DWORD* pdwStubPhase);
935
936 #endif  /* __IPStore_INTERFACE_DEFINED__ */
937
938 #ifdef __cplusplus
939 }
940 #endif
941 #endif /* __WIDL_PSTORE_H */