This file is indexed.

/usr/x86_64-w64-mingw32/include/pstore.h is in mingw-w64-x86-64-dev 2.0.3-1.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
/**
 * This file has no copyright assigned and is placed in the Public Domain.
 * This file is part of the w64 mingw-runtime package.
 * No warranty is given; refer to the file DISCLAIMER.PD within this package.
 */
#ifndef __PSTORE_H__
#define __PSTORE_H__

typedef DWORD PST_PROVIDERCAPABILITIES;

#define PST_PC_PFX 0x00000001
#define PST_PC_HARDWARE 0x00000002
#define PST_PC_SMARTCARD 0x00000004
#define PST_PC_PCMCIA 0x00000008
#define PST_PC_MULTIPLE_REPOSITORIES 0x00000010
#define PST_PC_ROAMABLE 0x00000020

typedef DWORD PST_REPOSITORYCAPABILITIES;

#define PST_RC_REMOVABLE 0x80000000

typedef DWORD PST_KEY;

#define PST_KEY_CURRENT_USER 0x00000000
#define PST_KEY_LOCAL_MACHINE 0x00000001

#define PST_CF_DEFAULT 0x00000000
#define PST_CF_NONE 0x00000001
#define PST_PF_ALWAYS_SHOW 0x00000001
#define PST_PF_NEVER_SHOW 0x00000002
#define PST_NO_OVERWRITE 0x00000002
#define PST_UNRESTRICTED_ITEMDATA 0x00000004
#define PST_PROMPT_QUERY 0x00000008
#define PST_NO_UI_MIGRATION 0x00000010

typedef DWORD PST_ACCESSMODE;

#define PST_READ 0x0001
#define PST_WRITE 0x0002

typedef DWORD PST_ACCESSCLAUSETYPE;

#define PST_AUTHENTICODE 1
#define PST_BINARY_CHECK 2
#define PST_SECURITY_DESCRIPTOR 4
#define PST_SELF_RELATIVE_CLAUSE 0x80000000L

#define PST_AC_SINGLE_CALLER 0
#define PST_AC_TOP_LEVEL_CALLER 1
#define PST_AC_IMMEDIATE_CALLER 2

#define PST_PP_FLUSH_PW_CACHE 0x1

#define MS_BASE_PSTPROVIDER_NAME L"System Protected Storage"

#define MS_BASE_PSTPROVIDER_ID { 0x8a078c30,0x3755,0x11d0,{ 0xa0,0xbd,0x0,0xaa,0x0,0x61,0x42,0x6a } }
#define MS_BASE_PSTPROVIDER_SZID L"8A078C30-3755-11d0-A0BD-00AA0061426A"

#define MS_PFX_PSTPROVIDER_NAME L"PFX Storage Provider"
#define MS_PFX_PSTPROVIDER_ID { 0x3ca94f30,0x7ac1,0x11d0,{0x8c,0x42,0x00,0xc0,0x4f,0xc2,0x99,0xeb} }
#define MS_PFX_PSTPROVIDER_SZID L"3ca94f30-7ac1-11d0-8c42-00c04fc299eb"

#define PST_CONFIGDATA_TYPE_STRING L"Configuration Data"
#define PST_CONFIGDATA_TYPE_GUID { 0x8ec99652,0x8909,0x11d0,{0x8c,0x4d,0x00,0xc0,0x4f,0xc2,0x97,0xeb} }

#define PST_PROTECTEDSTORAGE_SUBTYPE_STRING L"Protected Storage"
#define PST_PROTECTEDSTORAGE_SUBTYPE_GUID { 0xd3121b8e,0x8a7d,0x11d0,{0x8c,0x4f,0x00,0xc0,0x4f,0xc2,0x97,0xeb} }

#define PST_PSTORE_PROVIDERS_SUBTYPE_STRING L"Protected Storage Provider List"
#define PST_PSTORE_PROVIDERS_SUBTYPE_GUID { 0x8ed17a64,0x91d0,0x11d0,{0x8c,0x43,0x00,0xc0,0x4f,0xc2,0xc6,0x21} }

#ifndef PST_E_OK
#define PST_E_OK _HRESULT_TYPEDEF_(0x00000000L)
#define PST_E_FAIL _HRESULT_TYPEDEF_(0x800C0001L)
#define PST_E_PROV_DLL_NOT_FOUND _HRESULT_TYPEDEF_(0x800C0002L)
#define PST_E_INVALID_HANDLE _HRESULT_TYPEDEF_(0x800C0003L)
#define PST_E_TYPE_EXISTS _HRESULT_TYPEDEF_(0x800C0004L)
#define PST_E_TYPE_NO_EXISTS _HRESULT_TYPEDEF_(0x800C0005L)
#define PST_E_INVALID_RULESET _HRESULT_TYPEDEF_(0x800C0006L)
#define PST_E_NO_PERMISSIONS _HRESULT_TYPEDEF_(0x800C0007L)
#define PST_E_STORAGE_ERROR _HRESULT_TYPEDEF_(0x800C0008L)
#define PST_E_CALLER_NOT_VERIFIED _HRESULT_TYPEDEF_(0x800C0009L)
#define PST_E_WRONG_PASSWORD _HRESULT_TYPEDEF_(0x800C000AL)
#define PST_E_DISK_IMAGE_MISMATCH _HRESULT_TYPEDEF_(0x800C000BL)
#define PST_E_UNKNOWN_EXCEPTION _HRESULT_TYPEDEF_(0x800C000DL)
#define PST_E_BAD_FLAGS _HRESULT_TYPEDEF_(0x800C000EL)
#define PST_E_ITEM_EXISTS _HRESULT_TYPEDEF_(0x800C000FL)
#define PST_E_ITEM_NO_EXISTS _HRESULT_TYPEDEF_(0x800C0010L)
#define PST_E_SERVICE_UNAVAILABLE _HRESULT_TYPEDEF_(0x800C0011L)
#define PST_E_NOTEMPTY _HRESULT_TYPEDEF_(0x800C0012L)
#define PST_E_INVALID_STRING _HRESULT_TYPEDEF_(0x800C0013L)
#define PST_E_STATE_INVALID _HRESULT_TYPEDEF_(0x800C0014L)
#define PST_E_NOT_OPEN _HRESULT_TYPEDEF_(0x800C0015L)
#define PST_E_ALREADY_OPEN _HRESULT_TYPEDEF_(0x800C0016L)
#define PST_E_NYI _HRESULT_TYPEDEF_(0x800C0F00L)

#define MIN_PST_ERROR 0x800C0001
#define MAX_PST_ERROR 0x800C0F00
#endif

#include "rpc.h"
#include "rpcndr.h"

#ifdef __cplusplus
extern "C" {
#endif

#include "wtypes.h"

#ifndef __MIDL_user_allocate_free_DEFINED__
#define __MIDL_user_allocate_free_DEFINED__
  void *__RPC_API MIDL_user_allocate(size_t);
  void __RPC_API MIDL_user_free(void *);
#endif

  typedef DWORD PST_PROVIDERCAPABILITIES;
  typedef DWORD PST_REPOSITORYCAPABILITIES;
  typedef DWORD PST_KEY;
  typedef DWORD PST_ACCESSMODE;
  typedef DWORD PST_ACCESSCLAUSETYPE;
  typedef GUID UUID;
  typedef ULARGE_INTEGER PST_PROVIDER_HANDLE;
  typedef GUID PST_PROVIDERID;
  typedef PST_PROVIDERID *PPST_PROVIDERID;

  typedef struct _PST_PROVIDERINFO {
    DWORD cbSize;
    PST_PROVIDERID ID;
    PST_PROVIDERCAPABILITIES Capabilities;
    LPWSTR szProviderName;
  } PST_PROVIDERINFO;

  typedef struct _PST_PROVIDERINFO *PPST_PROVIDERINFO;

  typedef struct _PST_TYPEINFO {
    DWORD cbSize;
    LPWSTR szDisplayName;
  } PST_TYPEINFO;

  typedef struct _PST_TYPEINFO *PPST_TYPEINFO;

  typedef struct _PST_PROMPTINFO {
    DWORD cbSize;
    DWORD dwPromptFlags;
    HWND hwndApp;
    LPCWSTR szPrompt;
  } PST_PROMPTINFO;

  typedef struct _PST_PROMPTINFO *PPST_PROMPTINFO;

  typedef struct _PST_ACCESSCLAUSE {
    DWORD cbSize;
    PST_ACCESSCLAUSETYPE ClauseType;
    DWORD cbClauseData;
    VOID *pbClauseData;
  } PST_ACCESSCLAUSE;

  typedef struct _PST_ACCESSCLAUSE *PPST_ACCESSCLAUSE;

  typedef struct _PST_ACCESSRULE {
    DWORD cbSize;
    PST_ACCESSMODE AccessModeFlags;
    DWORD cClauses;
    PST_ACCESSCLAUSE *rgClauses;
  } PST_ACCESSRULE;

  typedef struct _PST_ACCESSRULE *PPST_ACCESSRULE;

  typedef struct _PST_ACCESSRULESET {
    DWORD cbSize;
    DWORD cRules;
    PST_ACCESSRULE *rgRules;
  } PST_ACCESSRULESET;

  typedef struct _PST_ACCESSRULESET *PPST_ACCESSRULESET;

  typedef struct _PST_AUTHENTICODEDATA {
    DWORD cbSize;
    DWORD dwModifiers;
    LPCWSTR szRootCA;
    LPCWSTR szIssuer;
    LPCWSTR szPublisher;
    LPCWSTR szProgramName;
  } PST_AUTHENTICODEDATA;

  typedef struct _PST_AUTHENTICODEDATA *PPST_AUTHENTICODEDATA;
  typedef struct _PST_AUTHENTICODEDATA *LPPST_AUTHENTICODEDATA;

  typedef struct _PST_BINARYCHECKDATA {
    DWORD cbSize;
    DWORD dwModifiers;
    LPCWSTR szFilePath;
  } PST_BINARYCHECKDATA;

  typedef struct _PST_BINARYCHECKDATA *PPST_BINARYCHECKDATA;
  typedef struct _PST_BINARYCHECKDATA *LPPST_BINARYCHECKDATA;
  extern RPC_IF_HANDLE __MIDL__intf_0000_v0_0_c_ifspec;
  extern RPC_IF_HANDLE __MIDL__intf_0000_v0_0_s_ifspec;

#ifdef __cplusplus
}
#endif

#ifndef COM_NO_WINDOWS_H
#include "windows.h"
#include "ole2.h"
#endif

#ifdef __cplusplus
extern "C" {
#endif

#ifndef __IEnumPStoreItems_FWD_DEFINED__
#define __IEnumPStoreItems_FWD_DEFINED__
  typedef struct IEnumPStoreItems IEnumPStoreItems;
#endif

#ifndef __IEnumPStoreTypes_FWD_DEFINED__
#define __IEnumPStoreTypes_FWD_DEFINED__
  typedef struct IEnumPStoreTypes IEnumPStoreTypes;
#endif

#ifndef __IPStore_FWD_DEFINED__
#define __IPStore_FWD_DEFINED__
  typedef struct IPStore IPStore;
#endif

#ifndef __IEnumPStoreProviders_FWD_DEFINED__
#define __IEnumPStoreProviders_FWD_DEFINED__
  typedef struct IEnumPStoreProviders IEnumPStoreProviders;
#endif

#include "oaidl.h"

#ifndef __MIDL_user_allocate_free_DEFINED__
#define __MIDL_user_allocate_free_DEFINED__
  void *__RPC_API MIDL_user_allocate(size_t);
  void __RPC_API MIDL_user_free(void *);
#endif

#ifndef __IEnumPStoreItems_INTERFACE_DEFINED__
#define __IEnumPStoreItems_INTERFACE_DEFINED__
  EXTERN_C const IID IID_IEnumPStoreItems;
#if defined(__cplusplus) && !defined(CINTERFACE)
  struct IEnumPStoreItems : public IUnknown {
public:
  virtual HRESULT WINAPI Next(DWORD celt,LPWSTR *rgelt,DWORD *pceltFetched) = 0;
  virtual HRESULT WINAPI Skip(DWORD celt) = 0;
  virtual HRESULT WINAPI Reset(void) = 0;
  virtual HRESULT WINAPI Clone(IEnumPStoreItems **ppenum) = 0;
  };
#else
  typedef struct IEnumPStoreItemsVtbl {
    BEGIN_INTERFACE
      HRESULT (WINAPI *QueryInterface)(IEnumPStoreItems *This,REFIID riid,void **ppvObject);
      ULONG (WINAPI *AddRef)(IEnumPStoreItems *This);
      ULONG (WINAPI *Release)(IEnumPStoreItems *This);
      HRESULT (WINAPI *Next)(IEnumPStoreItems *This,DWORD celt,LPWSTR *rgelt,DWORD *pceltFetched);
      HRESULT (WINAPI *Skip)(IEnumPStoreItems *This,DWORD celt);
      HRESULT (WINAPI *Reset)(IEnumPStoreItems *This);
      HRESULT (WINAPI *Clone)(IEnumPStoreItems *This,IEnumPStoreItems **ppenum);
    END_INTERFACE
  } IEnumPStoreItemsVtbl;
  struct IEnumPStoreItems {
    CONST_VTBL struct IEnumPStoreItemsVtbl *lpVtbl;
  };
#ifdef COBJMACROS
#define IEnumPStoreItems_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IEnumPStoreItems_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IEnumPStoreItems_Release(This) (This)->lpVtbl->Release(This)
#define IEnumPStoreItems_Next(This,celt,rgelt,pceltFetched) (This)->lpVtbl->Next(This,celt,rgelt,pceltFetched)
#define IEnumPStoreItems_Skip(This,celt) (This)->lpVtbl->Skip(This,celt)
#define IEnumPStoreItems_Reset(This) (This)->lpVtbl->Reset(This)
#define IEnumPStoreItems_Clone(This,ppenum) (This)->lpVtbl->Clone(This,ppenum)
#endif
#endif
  HRESULT WINAPI IEnumPStoreItems_Next_Proxy(IEnumPStoreItems *This,DWORD celt,LPWSTR *rgelt,DWORD *pceltFetched);
  void __RPC_STUB IEnumPStoreItems_Next_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
  HRESULT WINAPI IEnumPStoreItems_Skip_Proxy(IEnumPStoreItems *This,DWORD celt);
  void __RPC_STUB IEnumPStoreItems_Skip_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
  HRESULT WINAPI IEnumPStoreItems_Reset_Proxy(IEnumPStoreItems *This);
  void __RPC_STUB IEnumPStoreItems_Reset_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
  HRESULT WINAPI IEnumPStoreItems_Clone_Proxy(IEnumPStoreItems *This,IEnumPStoreItems **ppenum);
  void __RPC_STUB IEnumPStoreItems_Clone_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
#endif

#ifndef __IEnumPStoreTypes_INTERFACE_DEFINED__
#define __IEnumPStoreTypes_INTERFACE_DEFINED__
  EXTERN_C const IID IID_IEnumPStoreTypes;
#if defined(__cplusplus) && !defined(CINTERFACE)
  struct IEnumPStoreTypes : public IUnknown {
  public:
    virtual HRESULT WINAPI Next(DWORD celt,GUID *rgelt,DWORD *pceltFetched) = 0;
    virtual HRESULT WINAPI Skip(DWORD celt) = 0;
    virtual HRESULT WINAPI Reset(void) = 0;
    virtual HRESULT WINAPI Clone(IEnumPStoreTypes **ppenum) = 0;
  };
#else
  typedef struct IEnumPStoreTypesVtbl {
    BEGIN_INTERFACE
      HRESULT (WINAPI *QueryInterface)(IEnumPStoreTypes *This,REFIID riid,void **ppvObject);
      ULONG (WINAPI *AddRef)(IEnumPStoreTypes *This);
      ULONG (WINAPI *Release)(IEnumPStoreTypes *This);
      HRESULT (WINAPI *Next)(IEnumPStoreTypes *This,DWORD celt,GUID *rgelt,DWORD *pceltFetched);
      HRESULT (WINAPI *Skip)(IEnumPStoreTypes *This,DWORD celt);
      HRESULT (WINAPI *Reset)(IEnumPStoreTypes *This);
      HRESULT (WINAPI *Clone)(IEnumPStoreTypes *This,IEnumPStoreTypes **ppenum);
    END_INTERFACE
  } IEnumPStoreTypesVtbl;
  struct IEnumPStoreTypes {
    CONST_VTBL struct IEnumPStoreTypesVtbl *lpVtbl;
  };
#ifdef COBJMACROS
#define IEnumPStoreTypes_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IEnumPStoreTypes_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IEnumPStoreTypes_Release(This) (This)->lpVtbl->Release(This)
#define IEnumPStoreTypes_Next(This,celt,rgelt,pceltFetched) (This)->lpVtbl->Next(This,celt,rgelt,pceltFetched)
#define IEnumPStoreTypes_Skip(This,celt) (This)->lpVtbl->Skip(This,celt)
#define IEnumPStoreTypes_Reset(This) (This)->lpVtbl->Reset(This)
#define IEnumPStoreTypes_Clone(This,ppenum) (This)->lpVtbl->Clone(This,ppenum)
#endif
#endif
  HRESULT WINAPI IEnumPStoreTypes_Next_Proxy(IEnumPStoreTypes *This,DWORD celt,GUID *rgelt,DWORD *pceltFetched);
  void __RPC_STUB IEnumPStoreTypes_Next_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
  HRESULT WINAPI IEnumPStoreTypes_Skip_Proxy(IEnumPStoreTypes *This,DWORD celt);
  void __RPC_STUB IEnumPStoreTypes_Skip_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
  HRESULT WINAPI IEnumPStoreTypes_Reset_Proxy(IEnumPStoreTypes *This);
  void __RPC_STUB IEnumPStoreTypes_Reset_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
  HRESULT WINAPI IEnumPStoreTypes_Clone_Proxy(IEnumPStoreTypes *This,IEnumPStoreTypes **ppenum);
  void __RPC_STUB IEnumPStoreTypes_Clone_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
#endif

#ifndef __IPStore_INTERFACE_DEFINED__
#define __IPStore_INTERFACE_DEFINED__
  EXTERN_C const IID IID_IPStore;
#if defined(__cplusplus) && !defined(CINTERFACE)
  struct IPStore : public IUnknown {
  public:
    virtual HRESULT WINAPI GetInfo(PPST_PROVIDERINFO *ppProperties) = 0;
    virtual HRESULT WINAPI GetProvParam(DWORD dwParam,DWORD *pcbData,BYTE **ppbData,DWORD dwFlags) = 0;
    virtual HRESULT WINAPI SetProvParam(DWORD dwParam,DWORD cbData,BYTE *pbData,DWORD dwFlags) = 0;
    virtual HRESULT WINAPI CreateType(PST_KEY Key,const GUID *pType,PPST_TYPEINFO pInfo,DWORD dwFlags) = 0;
    virtual HRESULT WINAPI GetTypeInfo(PST_KEY Key,const GUID *pType,PPST_TYPEINFO *ppInfo,DWORD dwFlags) = 0;
    virtual HRESULT WINAPI DeleteType(PST_KEY Key,const GUID *pType,DWORD dwFlags) = 0;
    virtual HRESULT WINAPI CreateSubtype(PST_KEY Key,const GUID *pType,const GUID *pSubtype,PPST_TYPEINFO pInfo,PPST_ACCESSRULESET pRules,DWORD dwFlags) = 0;
    virtual HRESULT WINAPI GetSubtypeInfo(PST_KEY Key,const GUID *pType,const GUID *pSubtype,PPST_TYPEINFO *ppInfo,DWORD dwFlags) = 0;
    virtual HRESULT WINAPI DeleteSubtype(PST_KEY Key,const GUID *pType,const GUID *pSubtype,DWORD dwFlags) = 0;
    virtual HRESULT WINAPI ReadAccessRuleset(PST_KEY Key,const GUID *pType,const GUID *pSubtype,PPST_ACCESSRULESET *ppRules,DWORD dwFlags) = 0;
    virtual HRESULT WINAPI WriteAccessRuleset(PST_KEY Key,const GUID *pType,const GUID *pSubtype,PPST_ACCESSRULESET pRules,DWORD dwFlags) = 0;
    virtual HRESULT WINAPI EnumTypes(PST_KEY Key,DWORD dwFlags,IEnumPStoreTypes **ppenum) = 0;
    virtual HRESULT WINAPI EnumSubtypes(PST_KEY Key,const GUID *pType,DWORD dwFlags,IEnumPStoreTypes **ppenum) = 0;
    virtual HRESULT WINAPI DeleteItem(PST_KEY Key,const GUID *pItemType,const GUID *pItemSubtype,LPCWSTR szItemName,PPST_PROMPTINFO pPromptInfo,DWORD dwFlags) = 0;
    virtual HRESULT WINAPI ReadItem(PST_KEY Key,const GUID *pItemType,const GUID *pItemSubtype,LPCWSTR szItemName,DWORD *pcbData,BYTE **ppbData,PPST_PROMPTINFO pPromptInfo,DWORD dwFlags) = 0;
    virtual HRESULT WINAPI WriteItem(PST_KEY Key,const GUID *pItemType,const GUID *pItemSubtype,LPCWSTR szItemName,DWORD cbData,BYTE *pbData,PPST_PROMPTINFO pPromptInfo,DWORD dwDefaultConfirmationStyle,DWORD dwFlags) = 0;
    virtual HRESULT WINAPI OpenItem(PST_KEY Key,const GUID *pItemType,const GUID *pItemSubtype,LPCWSTR szItemName,PST_ACCESSMODE ModeFlags,PPST_PROMPTINFO pPromptInfo,DWORD dwFlags) = 0;
    virtual HRESULT WINAPI CloseItem(PST_KEY Key,const GUID *pItemType,const GUID *pItemSubtype,LPCWSTR szItemName,DWORD dwFlags) = 0;
    virtual HRESULT WINAPI EnumItems(PST_KEY Key,const GUID *pItemType,const GUID *pItemSubtype,DWORD dwFlags,IEnumPStoreItems **ppenum) = 0;
  };
#else
  typedef struct IPStoreVtbl {
    BEGIN_INTERFACE
      HRESULT (WINAPI *QueryInterface)(IPStore *This,REFIID riid,void **ppvObject);
      ULONG (WINAPI *AddRef)(IPStore *This);
      ULONG (WINAPI *Release)(IPStore *This);
      HRESULT (WINAPI *GetInfo)(IPStore *This,PPST_PROVIDERINFO *ppProperties);
      HRESULT (WINAPI *GetProvParam)(IPStore *This,DWORD dwParam,DWORD *pcbData,BYTE **ppbData,DWORD dwFlags);
      HRESULT (WINAPI *SetProvParam)(IPStore *This,DWORD dwParam,DWORD cbData,BYTE *pbData,DWORD dwFlags);
      HRESULT (WINAPI *CreateType)(IPStore *This,PST_KEY Key,const GUID *pType,PPST_TYPEINFO pInfo,DWORD dwFlags);
      HRESULT (WINAPI *GetTypeInfo)(IPStore *This,PST_KEY Key,const GUID *pType,PPST_TYPEINFO *ppInfo,DWORD dwFlags);
      HRESULT (WINAPI *DeleteType)(IPStore *This,PST_KEY Key,const GUID *pType,DWORD dwFlags);
      HRESULT (WINAPI *CreateSubtype)(IPStore *This,PST_KEY Key,const GUID *pType,const GUID *pSubtype,PPST_TYPEINFO pInfo,PPST_ACCESSRULESET pRules,DWORD dwFlags);
      HRESULT (WINAPI *GetSubtypeInfo)(IPStore *This,PST_KEY Key,const GUID *pType,const GUID *pSubtype,PPST_TYPEINFO *ppInfo,DWORD dwFlags);
      HRESULT (WINAPI *DeleteSubtype)(IPStore *This,PST_KEY Key,const GUID *pType,const GUID *pSubtype,DWORD dwFlags);
      HRESULT (WINAPI *ReadAccessRuleset)(IPStore *This,PST_KEY Key,const GUID *pType,const GUID *pSubtype,PPST_ACCESSRULESET *ppRules,DWORD dwFlags);
      HRESULT (WINAPI *WriteAccessRuleset)(IPStore *This,PST_KEY Key,const GUID *pType,const GUID *pSubtype,PPST_ACCESSRULESET pRules,DWORD dwFlags);
      HRESULT (WINAPI *EnumTypes)(IPStore *This,PST_KEY Key,DWORD dwFlags,IEnumPStoreTypes **ppenum);
      HRESULT (WINAPI *EnumSubtypes)(IPStore *This,PST_KEY Key,const GUID *pType,DWORD dwFlags,IEnumPStoreTypes **ppenum);
      HRESULT (WINAPI *DeleteItem)(IPStore *This,PST_KEY Key,const GUID *pItemType,const GUID *pItemSubtype,LPCWSTR szItemName,PPST_PROMPTINFO pPromptInfo,DWORD dwFlags);
      HRESULT (WINAPI *ReadItem)(IPStore *This,PST_KEY Key,const GUID *pItemType,const GUID *pItemSubtype,LPCWSTR szItemName,DWORD *pcbData,BYTE **ppbData,PPST_PROMPTINFO pPromptInfo,DWORD dwFlags);
      HRESULT (WINAPI *WriteItem)(IPStore *This,PST_KEY Key,const GUID *pItemType,const GUID *pItemSubtype,LPCWSTR szItemName,DWORD cbData,BYTE *pbData,PPST_PROMPTINFO pPromptInfo,DWORD dwDefaultConfirmationStyle,DWORD dwFlags);
      HRESULT (WINAPI *OpenItem)(IPStore *This,PST_KEY Key,const GUID *pItemType,const GUID *pItemSubtype,LPCWSTR szItemName,PST_ACCESSMODE ModeFlags,PPST_PROMPTINFO pPromptInfo,DWORD dwFlags);
      HRESULT (WINAPI *CloseItem)(IPStore *This,PST_KEY Key,const GUID *pItemType,const GUID *pItemSubtype,LPCWSTR szItemName,DWORD dwFlags);
      HRESULT (WINAPI *EnumItems)(IPStore *This,PST_KEY Key,const GUID *pItemType,const GUID *pItemSubtype,DWORD dwFlags,IEnumPStoreItems **ppenum);
    END_INTERFACE
  } IPStoreVtbl;
  struct IPStore {
    CONST_VTBL struct IPStoreVtbl *lpVtbl;
  };
#ifdef COBJMACROS
#define IPStore_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IPStore_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IPStore_Release(This) (This)->lpVtbl->Release(This)
#define IPStore_GetInfo(This,ppProperties) (This)->lpVtbl->GetInfo(This,ppProperties)
#define IPStore_GetProvParam(This,dwParam,pcbData,ppbData,dwFlags) (This)->lpVtbl->GetProvParam(This,dwParam,pcbData,ppbData,dwFlags)
#define IPStore_SetProvParam(This,dwParam,cbData,pbData,dwFlags) (This)->lpVtbl->SetProvParam(This,dwParam,cbData,pbData,dwFlags)
#define IPStore_CreateType(This,Key,pType,pInfo,dwFlags) (This)->lpVtbl->CreateType(This,Key,pType,pInfo,dwFlags)
#define IPStore_GetTypeInfo(This,Key,pType,ppInfo,dwFlags) (This)->lpVtbl->GetTypeInfo(This,Key,pType,ppInfo,dwFlags)
#define IPStore_DeleteType(This,Key,pType,dwFlags) (This)->lpVtbl->DeleteType(This,Key,pType,dwFlags)
#define IPStore_CreateSubtype(This,Key,pType,pSubtype,pInfo,pRules,dwFlags) (This)->lpVtbl->CreateSubtype(This,Key,pType,pSubtype,pInfo,pRules,dwFlags)
#define IPStore_GetSubtypeInfo(This,Key,pType,pSubtype,ppInfo,dwFlags) (This)->lpVtbl->GetSubtypeInfo(This,Key,pType,pSubtype,ppInfo,dwFlags)
#define IPStore_DeleteSubtype(This,Key,pType,pSubtype,dwFlags) (This)->lpVtbl->DeleteSubtype(This,Key,pType,pSubtype,dwFlags)
#define IPStore_ReadAccessRuleset(This,Key,pType,pSubtype,ppRules,dwFlags) (This)->lpVtbl->ReadAccessRuleset(This,Key,pType,pSubtype,ppRules,dwFlags)
#define IPStore_WriteAccessRuleset(This,Key,pType,pSubtype,pRules,dwFlags) (This)->lpVtbl->WriteAccessRuleset(This,Key,pType,pSubtype,pRules,dwFlags)
#define IPStore_EnumTypes(This,Key,dwFlags,ppenum) (This)->lpVtbl->EnumTypes(This,Key,dwFlags,ppenum)
#define IPStore_EnumSubtypes(This,Key,pType,dwFlags,ppenum) (This)->lpVtbl->EnumSubtypes(This,Key,pType,dwFlags,ppenum)
#define IPStore_DeleteItem(This,Key,pItemType,pItemSubtype,szItemName,pPromptInfo,dwFlags) (This)->lpVtbl->DeleteItem(This,Key,pItemType,pItemSubtype,szItemName,pPromptInfo,dwFlags)
#define IPStore_ReadItem(This,Key,pItemType,pItemSubtype,szItemName,pcbData,ppbData,pPromptInfo,dwFlags) (This)->lpVtbl->ReadItem(This,Key,pItemType,pItemSubtype,szItemName,pcbData,ppbData,pPromptInfo,dwFlags)
#define IPStore_WriteItem(This,Key,pItemType,pItemSubtype,szItemName,cbData,pbData,pPromptInfo,dwDefaultConfirmationStyle,dwFlags) (This)->lpVtbl->WriteItem(This,Key,pItemType,pItemSubtype,szItemName,cbData,pbData,pPromptInfo,dwDefaultConfirmationStyle,dwFlags)
#define IPStore_OpenItem(This,Key,pItemType,pItemSubtype,szItemName,ModeFlags,pPromptInfo,dwFlags) (This)->lpVtbl->OpenItem(This,Key,pItemType,pItemSubtype,szItemName,ModeFlags,pPromptInfo,dwFlags)
#define IPStore_CloseItem(This,Key,pItemType,pItemSubtype,szItemName,dwFlags) (This)->lpVtbl->CloseItem(This,Key,pItemType,pItemSubtype,szItemName,dwFlags)
#define IPStore_EnumItems(This,Key,pItemType,pItemSubtype,dwFlags,ppenum) (This)->lpVtbl->EnumItems(This,Key,pItemType,pItemSubtype,dwFlags,ppenum)
#endif
#endif
  HRESULT WINAPI IPStore_GetInfo_Proxy(IPStore *This,PPST_PROVIDERINFO *ppProperties);
  void __RPC_STUB IPStore_GetInfo_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
  HRESULT WINAPI IPStore_GetProvParam_Proxy(IPStore *This,DWORD dwParam,DWORD *pcbData,BYTE **ppbData,DWORD dwFlags);
  void __RPC_STUB IPStore_GetProvParam_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
  HRESULT WINAPI IPStore_SetProvParam_Proxy(IPStore *This,DWORD dwParam,DWORD cbData,BYTE *pbData,DWORD dwFlags);
  void __RPC_STUB IPStore_SetProvParam_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
  HRESULT WINAPI IPStore_CreateType_Proxy(IPStore *This,PST_KEY Key,const GUID *pType,PPST_TYPEINFO pInfo,DWORD dwFlags);
  void __RPC_STUB IPStore_CreateType_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
  HRESULT WINAPI IPStore_GetTypeInfo_Proxy(IPStore *This,PST_KEY Key,const GUID *pType,PPST_TYPEINFO *ppInfo,DWORD dwFlags);
  void __RPC_STUB IPStore_GetTypeInfo_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
  HRESULT WINAPI IPStore_DeleteType_Proxy(IPStore *This,PST_KEY Key,const GUID *pType,DWORD dwFlags);
  void __RPC_STUB IPStore_DeleteType_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
  HRESULT WINAPI IPStore_CreateSubtype_Proxy(IPStore *This,PST_KEY Key,const GUID *pType,const GUID *pSubtype,PPST_TYPEINFO pInfo,PPST_ACCESSRULESET pRules,DWORD dwFlags);
  void __RPC_STUB IPStore_CreateSubtype_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
  HRESULT WINAPI IPStore_GetSubtypeInfo_Proxy(IPStore *This,PST_KEY Key,const GUID *pType,const GUID *pSubtype,PPST_TYPEINFO *ppInfo,DWORD dwFlags);
  void __RPC_STUB IPStore_GetSubtypeInfo_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
  HRESULT WINAPI IPStore_DeleteSubtype_Proxy(IPStore *This,PST_KEY Key,const GUID *pType,const GUID *pSubtype,DWORD dwFlags);
  void __RPC_STUB IPStore_DeleteSubtype_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
  HRESULT WINAPI IPStore_ReadAccessRuleset_Proxy(IPStore *This,PST_KEY Key,const GUID *pType,const GUID *pSubtype,PPST_ACCESSRULESET *ppRules,DWORD dwFlags);
  void __RPC_STUB IPStore_ReadAccessRuleset_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
  HRESULT WINAPI IPStore_WriteAccessRuleset_Proxy(IPStore *This,PST_KEY Key,const GUID *pType,const GUID *pSubtype,PPST_ACCESSRULESET pRules,DWORD dwFlags);
  void __RPC_STUB IPStore_WriteAccessRuleset_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
  HRESULT WINAPI IPStore_EnumTypes_Proxy(IPStore *This,PST_KEY Key,DWORD dwFlags,IEnumPStoreTypes **ppenum);
  void __RPC_STUB IPStore_EnumTypes_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
  HRESULT WINAPI IPStore_EnumSubtypes_Proxy(IPStore *This,PST_KEY Key,const GUID *pType,DWORD dwFlags,IEnumPStoreTypes **ppenum);
  void __RPC_STUB IPStore_EnumSubtypes_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
  HRESULT WINAPI IPStore_DeleteItem_Proxy(IPStore *This,PST_KEY Key,const GUID *pItemType,const GUID *pItemSubtype,LPCWSTR szItemName,PPST_PROMPTINFO pPromptInfo,DWORD dwFlags);
  void __RPC_STUB IPStore_DeleteItem_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
  HRESULT WINAPI IPStore_ReadItem_Proxy(IPStore *This,PST_KEY Key,const GUID *pItemType,const GUID *pItemSubtype,LPCWSTR szItemName,DWORD *pcbData,BYTE **ppbData,PPST_PROMPTINFO pPromptInfo,DWORD dwFlags);
  void __RPC_STUB IPStore_ReadItem_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
  HRESULT WINAPI IPStore_WriteItem_Proxy(IPStore *This,PST_KEY Key,const GUID *pItemType,const GUID *pItemSubtype,LPCWSTR szItemName,DWORD cbData,BYTE *pbData,PPST_PROMPTINFO pPromptInfo,DWORD dwDefaultConfirmationStyle,DWORD dwFlags);
  void __RPC_STUB IPStore_WriteItem_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
  HRESULT WINAPI IPStore_OpenItem_Proxy(IPStore *This,PST_KEY Key,const GUID *pItemType,const GUID *pItemSubtype,LPCWSTR szItemName,PST_ACCESSMODE ModeFlags,PPST_PROMPTINFO pPromptInfo,DWORD dwFlags);
  void __RPC_STUB IPStore_OpenItem_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
  HRESULT WINAPI IPStore_CloseItem_Proxy(IPStore *This,PST_KEY Key,const GUID *pItemType,const GUID *pItemSubtype,LPCWSTR szItemName,DWORD dwFlags);
  void __RPC_STUB IPStore_CloseItem_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
  HRESULT WINAPI IPStore_EnumItems_Proxy(IPStore *This,PST_KEY Key,const GUID *pItemType,const GUID *pItemSubtype,DWORD dwFlags,IEnumPStoreItems **ppenum);
  void __RPC_STUB IPStore_EnumItems_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
#endif

#ifndef __IEnumPStoreProviders_INTERFACE_DEFINED__
#define __IEnumPStoreProviders_INTERFACE_DEFINED__
  EXTERN_C const IID IID_IEnumPStoreProviders;
#if defined(__cplusplus) && !defined(CINTERFACE)
  struct IEnumPStoreProviders : public IUnknown {
  public:
    virtual HRESULT WINAPI Next(DWORD celt,PST_PROVIDERINFO **rgelt,DWORD *pceltFetched) = 0;
    virtual HRESULT WINAPI Skip(DWORD celt) = 0;
    virtual HRESULT WINAPI Reset(void) = 0;
    virtual HRESULT WINAPI Clone(IEnumPStoreProviders **ppenum) = 0;
  };
#else
  typedef struct IEnumPStoreProvidersVtbl {
    BEGIN_INTERFACE
      HRESULT (WINAPI *QueryInterface)(IEnumPStoreProviders *This,REFIID riid,void **ppvObject);
      ULONG (WINAPI *AddRef)(IEnumPStoreProviders *This);
      ULONG (WINAPI *Release)(IEnumPStoreProviders *This);
      HRESULT (WINAPI *Next)(IEnumPStoreProviders *This,DWORD celt,PST_PROVIDERINFO **rgelt,DWORD *pceltFetched);
      HRESULT (WINAPI *Skip)(IEnumPStoreProviders *This,DWORD celt);
      HRESULT (WINAPI *Reset)(IEnumPStoreProviders *This);
      HRESULT (WINAPI *Clone)(IEnumPStoreProviders *This,IEnumPStoreProviders **ppenum);
    END_INTERFACE
  } IEnumPStoreProvidersVtbl;
  struct IEnumPStoreProviders {
    CONST_VTBL struct IEnumPStoreProvidersVtbl *lpVtbl;
  };
#ifdef COBJMACROS
#define IEnumPStoreProviders_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IEnumPStoreProviders_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IEnumPStoreProviders_Release(This) (This)->lpVtbl->Release(This)
#define IEnumPStoreProviders_Next(This,celt,rgelt,pceltFetched) (This)->lpVtbl->Next(This,celt,rgelt,pceltFetched)
#define IEnumPStoreProviders_Skip(This,celt) (This)->lpVtbl->Skip(This,celt)
#define IEnumPStoreProviders_Reset(This) (This)->lpVtbl->Reset(This)
#define IEnumPStoreProviders_Clone(This,ppenum) (This)->lpVtbl->Clone(This,ppenum)
#endif
#endif
  HRESULT WINAPI IEnumPStoreProviders_Next_Proxy(IEnumPStoreProviders *This,DWORD celt,PST_PROVIDERINFO **rgelt,DWORD *pceltFetched);
  void __RPC_STUB IEnumPStoreProviders_Next_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
  HRESULT WINAPI IEnumPStoreProviders_Skip_Proxy(IEnumPStoreProviders *This,DWORD celt);
  void __RPC_STUB IEnumPStoreProviders_Skip_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
  HRESULT WINAPI IEnumPStoreProviders_Reset_Proxy(IEnumPStoreProviders *This);
  void __RPC_STUB IEnumPStoreProviders_Reset_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
  HRESULT WINAPI IEnumPStoreProviders_Clone_Proxy(IEnumPStoreProviders *This,IEnumPStoreProviders **ppenum);
  void __RPC_STUB IEnumPStoreProviders_Clone_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
#endif

#ifndef __PSTORECLib_LIBRARY_DEFINED__
#define __PSTORECLib_LIBRARY_DEFINED__
  EXTERN_C const IID LIBID_PSTORECLib;
#ifdef __cplusplus
  EXTERN_C const CLSID CLSID_CPStore;
  class CPStore;
#endif
#ifdef __cplusplus
  EXTERN_C const CLSID CLSID_CEnumTypes;
  class CEnumTypes;
#endif
#ifdef __cplusplus
  EXTERN_C const CLSID CLSID_CEnumItems;
  class CEnumItems;
#endif
#endif

  HRESULT WINAPI PStoreCreateInstance(IPStore **ppProvider,PST_PROVIDERID *pProviderID,void *pReserved,DWORD dwFlags);
  HRESULT WINAPI PStoreEnumProviders(DWORD dwFlags,IEnumPStoreProviders **ppenum);

  extern RPC_IF_HANDLE __MIDL__intf_0080_v0_0_c_ifspec;
  extern RPC_IF_HANDLE __MIDL__intf_0080_v0_0_s_ifspec;

#ifdef __cplusplus
}
#endif
#endif