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