pstore.h 30 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526
  1. /**
  2. * This file has no copyright assigned and is placed in the Public Domain.
  3. * This file is part of the mingw-w64 runtime package.
  4. * No warranty is given; refer to the file DISCLAIMER.PD within this package.
  5. */
  6. #ifndef __PSTORE_H__
  7. #define __PSTORE_H__
  8. typedef DWORD PST_PROVIDERCAPABILITIES;
  9. #define PST_PC_PFX 0x00000001
  10. #define PST_PC_HARDWARE 0x00000002
  11. #define PST_PC_SMARTCARD 0x00000004
  12. #define PST_PC_PCMCIA 0x00000008
  13. #define PST_PC_MULTIPLE_REPOSITORIES 0x00000010
  14. #define PST_PC_ROAMABLE 0x00000020
  15. typedef DWORD PST_REPOSITORYCAPABILITIES;
  16. #define PST_RC_REMOVABLE 0x80000000
  17. typedef DWORD PST_KEY;
  18. #define PST_KEY_CURRENT_USER 0x00000000
  19. #define PST_KEY_LOCAL_MACHINE 0x00000001
  20. #define PST_CF_DEFAULT 0x00000000
  21. #define PST_CF_NONE 0x00000001
  22. #define PST_PF_ALWAYS_SHOW 0x00000001
  23. #define PST_PF_NEVER_SHOW 0x00000002
  24. #define PST_NO_OVERWRITE 0x00000002
  25. #define PST_UNRESTRICTED_ITEMDATA 0x00000004
  26. #define PST_PROMPT_QUERY 0x00000008
  27. #define PST_NO_UI_MIGRATION 0x00000010
  28. typedef DWORD PST_ACCESSMODE;
  29. #define PST_READ 0x0001
  30. #define PST_WRITE 0x0002
  31. typedef DWORD PST_ACCESSCLAUSETYPE;
  32. #define PST_AUTHENTICODE 1
  33. #define PST_BINARY_CHECK 2
  34. #define PST_SECURITY_DESCRIPTOR 4
  35. #define PST_SELF_RELATIVE_CLAUSE __MSABI_LONG(0x80000000)
  36. #define PST_AC_SINGLE_CALLER 0
  37. #define PST_AC_TOP_LEVEL_CALLER 1
  38. #define PST_AC_IMMEDIATE_CALLER 2
  39. #define PST_PP_FLUSH_PW_CACHE 0x1
  40. #define MS_BASE_PSTPROVIDER_NAME L"System Protected Storage"
  41. #define MS_BASE_PSTPROVIDER_ID { 0x8a078c30,0x3755,0x11d0,{ 0xa0,0xbd,0x0,0xaa,0x0,0x61,0x42,0x6a } }
  42. #define MS_BASE_PSTPROVIDER_SZID L"8A078C30-3755-11d0-A0BD-00AA0061426A"
  43. #define MS_PFX_PSTPROVIDER_NAME L"PFX Storage Provider"
  44. #define MS_PFX_PSTPROVIDER_ID { 0x3ca94f30,0x7ac1,0x11d0,{0x8c,0x42,0x00,0xc0,0x4f,0xc2,0x99,0xeb} }
  45. #define MS_PFX_PSTPROVIDER_SZID L"3ca94f30-7ac1-11d0-8c42-00c04fc299eb"
  46. #define PST_CONFIGDATA_TYPE_STRING L"Configuration Data"
  47. #define PST_CONFIGDATA_TYPE_GUID { 0x8ec99652,0x8909,0x11d0,{0x8c,0x4d,0x00,0xc0,0x4f,0xc2,0x97,0xeb} }
  48. #define PST_PROTECTEDSTORAGE_SUBTYPE_STRING L"Protected Storage"
  49. #define PST_PROTECTEDSTORAGE_SUBTYPE_GUID { 0xd3121b8e,0x8a7d,0x11d0,{0x8c,0x4f,0x00,0xc0,0x4f,0xc2,0x97,0xeb} }
  50. #define PST_PSTORE_PROVIDERS_SUBTYPE_STRING L"Protected Storage Provider List"
  51. #define PST_PSTORE_PROVIDERS_SUBTYPE_GUID { 0x8ed17a64,0x91d0,0x11d0,{0x8c,0x43,0x00,0xc0,0x4f,0xc2,0xc6,0x21} }
  52. #ifndef PST_E_OK
  53. #define PST_E_OK _HRESULT_TYPEDEF_(0x00000000)
  54. #define PST_E_FAIL _HRESULT_TYPEDEF_(0x800C0001)
  55. #define PST_E_PROV_DLL_NOT_FOUND _HRESULT_TYPEDEF_(0x800C0002)
  56. #define PST_E_INVALID_HANDLE _HRESULT_TYPEDEF_(0x800C0003)
  57. #define PST_E_TYPE_EXISTS _HRESULT_TYPEDEF_(0x800C0004)
  58. #define PST_E_TYPE_NO_EXISTS _HRESULT_TYPEDEF_(0x800C0005)
  59. #define PST_E_INVALID_RULESET _HRESULT_TYPEDEF_(0x800C0006)
  60. #define PST_E_NO_PERMISSIONS _HRESULT_TYPEDEF_(0x800C0007)
  61. #define PST_E_STORAGE_ERROR _HRESULT_TYPEDEF_(0x800C0008)
  62. #define PST_E_CALLER_NOT_VERIFIED _HRESULT_TYPEDEF_(0x800C0009)
  63. #define PST_E_WRONG_PASSWORD _HRESULT_TYPEDEF_(0x800C000A)
  64. #define PST_E_DISK_IMAGE_MISMATCH _HRESULT_TYPEDEF_(0x800C000B)
  65. #define PST_E_UNKNOWN_EXCEPTION _HRESULT_TYPEDEF_(0x800C000D)
  66. #define PST_E_BAD_FLAGS _HRESULT_TYPEDEF_(0x800C000E)
  67. #define PST_E_ITEM_EXISTS _HRESULT_TYPEDEF_(0x800C000F)
  68. #define PST_E_ITEM_NO_EXISTS _HRESULT_TYPEDEF_(0x800C0010)
  69. #define PST_E_SERVICE_UNAVAILABLE _HRESULT_TYPEDEF_(0x800C0011)
  70. #define PST_E_NOTEMPTY _HRESULT_TYPEDEF_(0x800C0012)
  71. #define PST_E_INVALID_STRING _HRESULT_TYPEDEF_(0x800C0013)
  72. #define PST_E_STATE_INVALID _HRESULT_TYPEDEF_(0x800C0014)
  73. #define PST_E_NOT_OPEN _HRESULT_TYPEDEF_(0x800C0015)
  74. #define PST_E_ALREADY_OPEN _HRESULT_TYPEDEF_(0x800C0016)
  75. #define PST_E_NYI _HRESULT_TYPEDEF_(0x800C0F00)
  76. #define MIN_PST_ERROR 0x800C0001
  77. #define MAX_PST_ERROR 0x800C0F00
  78. #endif
  79. #include "rpc.h"
  80. #include "rpcndr.h"
  81. #ifdef __cplusplus
  82. extern "C" {
  83. #endif
  84. #include "wtypes.h"
  85. #ifndef __MIDL_user_allocate_free_DEFINED__
  86. #define __MIDL_user_allocate_free_DEFINED__
  87. void *__RPC_API MIDL_user_allocate(size_t);
  88. void __RPC_API MIDL_user_free(void *);
  89. #endif
  90. typedef DWORD PST_PROVIDERCAPABILITIES;
  91. typedef DWORD PST_REPOSITORYCAPABILITIES;
  92. typedef DWORD PST_KEY;
  93. typedef DWORD PST_ACCESSMODE;
  94. typedef DWORD PST_ACCESSCLAUSETYPE;
  95. typedef GUID UUID;
  96. typedef ULARGE_INTEGER PST_PROVIDER_HANDLE;
  97. typedef GUID PST_PROVIDERID;
  98. typedef PST_PROVIDERID *PPST_PROVIDERID;
  99. typedef struct _PST_PROVIDERINFO {
  100. DWORD cbSize;
  101. PST_PROVIDERID ID;
  102. PST_PROVIDERCAPABILITIES Capabilities;
  103. LPWSTR szProviderName;
  104. } PST_PROVIDERINFO;
  105. typedef struct _PST_PROVIDERINFO *PPST_PROVIDERINFO;
  106. typedef struct _PST_TYPEINFO {
  107. DWORD cbSize;
  108. LPWSTR szDisplayName;
  109. } PST_TYPEINFO;
  110. typedef struct _PST_TYPEINFO *PPST_TYPEINFO;
  111. typedef struct _PST_PROMPTINFO {
  112. DWORD cbSize;
  113. DWORD dwPromptFlags;
  114. HWND hwndApp;
  115. LPCWSTR szPrompt;
  116. } PST_PROMPTINFO;
  117. typedef struct _PST_PROMPTINFO *PPST_PROMPTINFO;
  118. typedef struct _PST_ACCESSCLAUSE {
  119. DWORD cbSize;
  120. PST_ACCESSCLAUSETYPE ClauseType;
  121. DWORD cbClauseData;
  122. VOID *pbClauseData;
  123. } PST_ACCESSCLAUSE;
  124. typedef struct _PST_ACCESSCLAUSE *PPST_ACCESSCLAUSE;
  125. typedef struct _PST_ACCESSRULE {
  126. DWORD cbSize;
  127. PST_ACCESSMODE AccessModeFlags;
  128. DWORD cClauses;
  129. PST_ACCESSCLAUSE *rgClauses;
  130. } PST_ACCESSRULE;
  131. typedef struct _PST_ACCESSRULE *PPST_ACCESSRULE;
  132. typedef struct _PST_ACCESSRULESET {
  133. DWORD cbSize;
  134. DWORD cRules;
  135. PST_ACCESSRULE *rgRules;
  136. } PST_ACCESSRULESET;
  137. typedef struct _PST_ACCESSRULESET *PPST_ACCESSRULESET;
  138. typedef struct _PST_AUTHENTICODEDATA {
  139. DWORD cbSize;
  140. DWORD dwModifiers;
  141. LPCWSTR szRootCA;
  142. LPCWSTR szIssuer;
  143. LPCWSTR szPublisher;
  144. LPCWSTR szProgramName;
  145. } PST_AUTHENTICODEDATA;
  146. typedef struct _PST_AUTHENTICODEDATA *PPST_AUTHENTICODEDATA;
  147. typedef struct _PST_AUTHENTICODEDATA *LPPST_AUTHENTICODEDATA;
  148. typedef struct _PST_BINARYCHECKDATA {
  149. DWORD cbSize;
  150. DWORD dwModifiers;
  151. LPCWSTR szFilePath;
  152. } PST_BINARYCHECKDATA;
  153. typedef struct _PST_BINARYCHECKDATA *PPST_BINARYCHECKDATA;
  154. typedef struct _PST_BINARYCHECKDATA *LPPST_BINARYCHECKDATA;
  155. extern RPC_IF_HANDLE __MIDL__intf_0000_v0_0_c_ifspec;
  156. extern RPC_IF_HANDLE __MIDL__intf_0000_v0_0_s_ifspec;
  157. #ifdef __cplusplus
  158. }
  159. #endif
  160. #ifndef COM_NO_WINDOWS_H
  161. #include "windows.h"
  162. #include "ole2.h"
  163. #endif
  164. #ifdef __cplusplus
  165. extern "C" {
  166. #endif
  167. #ifndef __IEnumPStoreItems_FWD_DEFINED__
  168. #define __IEnumPStoreItems_FWD_DEFINED__
  169. typedef struct IEnumPStoreItems IEnumPStoreItems;
  170. #endif
  171. #ifndef __IEnumPStoreTypes_FWD_DEFINED__
  172. #define __IEnumPStoreTypes_FWD_DEFINED__
  173. typedef struct IEnumPStoreTypes IEnumPStoreTypes;
  174. #endif
  175. #ifndef __IPStore_FWD_DEFINED__
  176. #define __IPStore_FWD_DEFINED__
  177. typedef struct IPStore IPStore;
  178. #endif
  179. #ifndef __IEnumPStoreProviders_FWD_DEFINED__
  180. #define __IEnumPStoreProviders_FWD_DEFINED__
  181. typedef struct IEnumPStoreProviders IEnumPStoreProviders;
  182. #endif
  183. #include "oaidl.h"
  184. #ifndef __MIDL_user_allocate_free_DEFINED__
  185. #define __MIDL_user_allocate_free_DEFINED__
  186. void *__RPC_API MIDL_user_allocate(size_t);
  187. void __RPC_API MIDL_user_free(void *);
  188. #endif
  189. #ifndef __IEnumPStoreItems_INTERFACE_DEFINED__
  190. #define __IEnumPStoreItems_INTERFACE_DEFINED__
  191. EXTERN_C const IID IID_IEnumPStoreItems;
  192. #if defined(__cplusplus) && !defined(CINTERFACE)
  193. struct IEnumPStoreItems : public IUnknown {
  194. public:
  195. virtual HRESULT WINAPI Next(DWORD celt,LPWSTR *rgelt,DWORD *pceltFetched) = 0;
  196. virtual HRESULT WINAPI Skip(DWORD celt) = 0;
  197. virtual HRESULT WINAPI Reset(void) = 0;
  198. virtual HRESULT WINAPI Clone(IEnumPStoreItems **ppenum) = 0;
  199. };
  200. #else
  201. typedef struct IEnumPStoreItemsVtbl {
  202. BEGIN_INTERFACE
  203. HRESULT (WINAPI *QueryInterface)(IEnumPStoreItems *This,REFIID riid,void **ppvObject);
  204. ULONG (WINAPI *AddRef)(IEnumPStoreItems *This);
  205. ULONG (WINAPI *Release)(IEnumPStoreItems *This);
  206. HRESULT (WINAPI *Next)(IEnumPStoreItems *This,DWORD celt,LPWSTR *rgelt,DWORD *pceltFetched);
  207. HRESULT (WINAPI *Skip)(IEnumPStoreItems *This,DWORD celt);
  208. HRESULT (WINAPI *Reset)(IEnumPStoreItems *This);
  209. HRESULT (WINAPI *Clone)(IEnumPStoreItems *This,IEnumPStoreItems **ppenum);
  210. END_INTERFACE
  211. } IEnumPStoreItemsVtbl;
  212. struct IEnumPStoreItems {
  213. CONST_VTBL struct IEnumPStoreItemsVtbl *lpVtbl;
  214. };
  215. #ifdef COBJMACROS
  216. #define IEnumPStoreItems_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
  217. #define IEnumPStoreItems_AddRef(This) (This)->lpVtbl->AddRef(This)
  218. #define IEnumPStoreItems_Release(This) (This)->lpVtbl->Release(This)
  219. #define IEnumPStoreItems_Next(This,celt,rgelt,pceltFetched) (This)->lpVtbl->Next(This,celt,rgelt,pceltFetched)
  220. #define IEnumPStoreItems_Skip(This,celt) (This)->lpVtbl->Skip(This,celt)
  221. #define IEnumPStoreItems_Reset(This) (This)->lpVtbl->Reset(This)
  222. #define IEnumPStoreItems_Clone(This,ppenum) (This)->lpVtbl->Clone(This,ppenum)
  223. #endif
  224. #endif
  225. HRESULT WINAPI IEnumPStoreItems_Next_Proxy(IEnumPStoreItems *This,DWORD celt,LPWSTR *rgelt,DWORD *pceltFetched);
  226. void __RPC_STUB IEnumPStoreItems_Next_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
  227. HRESULT WINAPI IEnumPStoreItems_Skip_Proxy(IEnumPStoreItems *This,DWORD celt);
  228. void __RPC_STUB IEnumPStoreItems_Skip_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
  229. HRESULT WINAPI IEnumPStoreItems_Reset_Proxy(IEnumPStoreItems *This);
  230. void __RPC_STUB IEnumPStoreItems_Reset_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
  231. HRESULT WINAPI IEnumPStoreItems_Clone_Proxy(IEnumPStoreItems *This,IEnumPStoreItems **ppenum);
  232. void __RPC_STUB IEnumPStoreItems_Clone_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
  233. #endif
  234. #ifndef __IEnumPStoreTypes_INTERFACE_DEFINED__
  235. #define __IEnumPStoreTypes_INTERFACE_DEFINED__
  236. EXTERN_C const IID IID_IEnumPStoreTypes;
  237. #if defined(__cplusplus) && !defined(CINTERFACE)
  238. struct IEnumPStoreTypes : public IUnknown {
  239. public:
  240. virtual HRESULT WINAPI Next(DWORD celt,GUID *rgelt,DWORD *pceltFetched) = 0;
  241. virtual HRESULT WINAPI Skip(DWORD celt) = 0;
  242. virtual HRESULT WINAPI Reset(void) = 0;
  243. virtual HRESULT WINAPI Clone(IEnumPStoreTypes **ppenum) = 0;
  244. };
  245. #else
  246. typedef struct IEnumPStoreTypesVtbl {
  247. BEGIN_INTERFACE
  248. HRESULT (WINAPI *QueryInterface)(IEnumPStoreTypes *This,REFIID riid,void **ppvObject);
  249. ULONG (WINAPI *AddRef)(IEnumPStoreTypes *This);
  250. ULONG (WINAPI *Release)(IEnumPStoreTypes *This);
  251. HRESULT (WINAPI *Next)(IEnumPStoreTypes *This,DWORD celt,GUID *rgelt,DWORD *pceltFetched);
  252. HRESULT (WINAPI *Skip)(IEnumPStoreTypes *This,DWORD celt);
  253. HRESULT (WINAPI *Reset)(IEnumPStoreTypes *This);
  254. HRESULT (WINAPI *Clone)(IEnumPStoreTypes *This,IEnumPStoreTypes **ppenum);
  255. END_INTERFACE
  256. } IEnumPStoreTypesVtbl;
  257. struct IEnumPStoreTypes {
  258. CONST_VTBL struct IEnumPStoreTypesVtbl *lpVtbl;
  259. };
  260. #ifdef COBJMACROS
  261. #define IEnumPStoreTypes_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
  262. #define IEnumPStoreTypes_AddRef(This) (This)->lpVtbl->AddRef(This)
  263. #define IEnumPStoreTypes_Release(This) (This)->lpVtbl->Release(This)
  264. #define IEnumPStoreTypes_Next(This,celt,rgelt,pceltFetched) (This)->lpVtbl->Next(This,celt,rgelt,pceltFetched)
  265. #define IEnumPStoreTypes_Skip(This,celt) (This)->lpVtbl->Skip(This,celt)
  266. #define IEnumPStoreTypes_Reset(This) (This)->lpVtbl->Reset(This)
  267. #define IEnumPStoreTypes_Clone(This,ppenum) (This)->lpVtbl->Clone(This,ppenum)
  268. #endif
  269. #endif
  270. HRESULT WINAPI IEnumPStoreTypes_Next_Proxy(IEnumPStoreTypes *This,DWORD celt,GUID *rgelt,DWORD *pceltFetched);
  271. void __RPC_STUB IEnumPStoreTypes_Next_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
  272. HRESULT WINAPI IEnumPStoreTypes_Skip_Proxy(IEnumPStoreTypes *This,DWORD celt);
  273. void __RPC_STUB IEnumPStoreTypes_Skip_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
  274. HRESULT WINAPI IEnumPStoreTypes_Reset_Proxy(IEnumPStoreTypes *This);
  275. void __RPC_STUB IEnumPStoreTypes_Reset_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
  276. HRESULT WINAPI IEnumPStoreTypes_Clone_Proxy(IEnumPStoreTypes *This,IEnumPStoreTypes **ppenum);
  277. void __RPC_STUB IEnumPStoreTypes_Clone_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
  278. #endif
  279. #ifndef __IPStore_INTERFACE_DEFINED__
  280. #define __IPStore_INTERFACE_DEFINED__
  281. EXTERN_C const IID IID_IPStore;
  282. #if defined(__cplusplus) && !defined(CINTERFACE)
  283. struct IPStore : public IUnknown {
  284. public:
  285. virtual HRESULT WINAPI GetInfo(PPST_PROVIDERINFO *ppProperties) = 0;
  286. virtual HRESULT WINAPI GetProvParam(DWORD dwParam,DWORD *pcbData,BYTE **ppbData,DWORD dwFlags) = 0;
  287. virtual HRESULT WINAPI SetProvParam(DWORD dwParam,DWORD cbData,BYTE *pbData,DWORD dwFlags) = 0;
  288. virtual HRESULT WINAPI CreateType(PST_KEY Key,const GUID *pType,PPST_TYPEINFO pInfo,DWORD dwFlags) = 0;
  289. virtual HRESULT WINAPI GetTypeInfo(PST_KEY Key,const GUID *pType,PPST_TYPEINFO *ppInfo,DWORD dwFlags) = 0;
  290. virtual HRESULT WINAPI DeleteType(PST_KEY Key,const GUID *pType,DWORD dwFlags) = 0;
  291. virtual HRESULT WINAPI CreateSubtype(PST_KEY Key,const GUID *pType,const GUID *pSubtype,PPST_TYPEINFO pInfo,PPST_ACCESSRULESET pRules,DWORD dwFlags) = 0;
  292. virtual HRESULT WINAPI GetSubtypeInfo(PST_KEY Key,const GUID *pType,const GUID *pSubtype,PPST_TYPEINFO *ppInfo,DWORD dwFlags) = 0;
  293. virtual HRESULT WINAPI DeleteSubtype(PST_KEY Key,const GUID *pType,const GUID *pSubtype,DWORD dwFlags) = 0;
  294. virtual HRESULT WINAPI ReadAccessRuleset(PST_KEY Key,const GUID *pType,const GUID *pSubtype,PPST_ACCESSRULESET *ppRules,DWORD dwFlags) = 0;
  295. virtual HRESULT WINAPI WriteAccessRuleset(PST_KEY Key,const GUID *pType,const GUID *pSubtype,PPST_ACCESSRULESET pRules,DWORD dwFlags) = 0;
  296. virtual HRESULT WINAPI EnumTypes(PST_KEY Key,DWORD dwFlags,IEnumPStoreTypes **ppenum) = 0;
  297. virtual HRESULT WINAPI EnumSubtypes(PST_KEY Key,const GUID *pType,DWORD dwFlags,IEnumPStoreTypes **ppenum) = 0;
  298. virtual HRESULT WINAPI DeleteItem(PST_KEY Key,const GUID *pItemType,const GUID *pItemSubtype,LPCWSTR szItemName,PPST_PROMPTINFO pPromptInfo,DWORD dwFlags) = 0;
  299. 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;
  300. 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;
  301. virtual HRESULT WINAPI OpenItem(PST_KEY Key,const GUID *pItemType,const GUID *pItemSubtype,LPCWSTR szItemName,PST_ACCESSMODE ModeFlags,PPST_PROMPTINFO pPromptInfo,DWORD dwFlags) = 0;
  302. virtual HRESULT WINAPI CloseItem(PST_KEY Key,const GUID *pItemType,const GUID *pItemSubtype,LPCWSTR szItemName,DWORD dwFlags) = 0;
  303. virtual HRESULT WINAPI EnumItems(PST_KEY Key,const GUID *pItemType,const GUID *pItemSubtype,DWORD dwFlags,IEnumPStoreItems **ppenum) = 0;
  304. };
  305. #else
  306. typedef struct IPStoreVtbl {
  307. BEGIN_INTERFACE
  308. HRESULT (WINAPI *QueryInterface)(IPStore *This,REFIID riid,void **ppvObject);
  309. ULONG (WINAPI *AddRef)(IPStore *This);
  310. ULONG (WINAPI *Release)(IPStore *This);
  311. HRESULT (WINAPI *GetInfo)(IPStore *This,PPST_PROVIDERINFO *ppProperties);
  312. HRESULT (WINAPI *GetProvParam)(IPStore *This,DWORD dwParam,DWORD *pcbData,BYTE **ppbData,DWORD dwFlags);
  313. HRESULT (WINAPI *SetProvParam)(IPStore *This,DWORD dwParam,DWORD cbData,BYTE *pbData,DWORD dwFlags);
  314. HRESULT (WINAPI *CreateType)(IPStore *This,PST_KEY Key,const GUID *pType,PPST_TYPEINFO pInfo,DWORD dwFlags);
  315. HRESULT (WINAPI *GetTypeInfo)(IPStore *This,PST_KEY Key,const GUID *pType,PPST_TYPEINFO *ppInfo,DWORD dwFlags);
  316. HRESULT (WINAPI *DeleteType)(IPStore *This,PST_KEY Key,const GUID *pType,DWORD dwFlags);
  317. HRESULT (WINAPI *CreateSubtype)(IPStore *This,PST_KEY Key,const GUID *pType,const GUID *pSubtype,PPST_TYPEINFO pInfo,PPST_ACCESSRULESET pRules,DWORD dwFlags);
  318. HRESULT (WINAPI *GetSubtypeInfo)(IPStore *This,PST_KEY Key,const GUID *pType,const GUID *pSubtype,PPST_TYPEINFO *ppInfo,DWORD dwFlags);
  319. HRESULT (WINAPI *DeleteSubtype)(IPStore *This,PST_KEY Key,const GUID *pType,const GUID *pSubtype,DWORD dwFlags);
  320. HRESULT (WINAPI *ReadAccessRuleset)(IPStore *This,PST_KEY Key,const GUID *pType,const GUID *pSubtype,PPST_ACCESSRULESET *ppRules,DWORD dwFlags);
  321. HRESULT (WINAPI *WriteAccessRuleset)(IPStore *This,PST_KEY Key,const GUID *pType,const GUID *pSubtype,PPST_ACCESSRULESET pRules,DWORD dwFlags);
  322. HRESULT (WINAPI *EnumTypes)(IPStore *This,PST_KEY Key,DWORD dwFlags,IEnumPStoreTypes **ppenum);
  323. HRESULT (WINAPI *EnumSubtypes)(IPStore *This,PST_KEY Key,const GUID *pType,DWORD dwFlags,IEnumPStoreTypes **ppenum);
  324. HRESULT (WINAPI *DeleteItem)(IPStore *This,PST_KEY Key,const GUID *pItemType,const GUID *pItemSubtype,LPCWSTR szItemName,PPST_PROMPTINFO pPromptInfo,DWORD dwFlags);
  325. 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);
  326. 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);
  327. HRESULT (WINAPI *OpenItem)(IPStore *This,PST_KEY Key,const GUID *pItemType,const GUID *pItemSubtype,LPCWSTR szItemName,PST_ACCESSMODE ModeFlags,PPST_PROMPTINFO pPromptInfo,DWORD dwFlags);
  328. HRESULT (WINAPI *CloseItem)(IPStore *This,PST_KEY Key,const GUID *pItemType,const GUID *pItemSubtype,LPCWSTR szItemName,DWORD dwFlags);
  329. HRESULT (WINAPI *EnumItems)(IPStore *This,PST_KEY Key,const GUID *pItemType,const GUID *pItemSubtype,DWORD dwFlags,IEnumPStoreItems **ppenum);
  330. END_INTERFACE
  331. } IPStoreVtbl;
  332. struct IPStore {
  333. CONST_VTBL struct IPStoreVtbl *lpVtbl;
  334. };
  335. #ifdef COBJMACROS
  336. #define IPStore_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
  337. #define IPStore_AddRef(This) (This)->lpVtbl->AddRef(This)
  338. #define IPStore_Release(This) (This)->lpVtbl->Release(This)
  339. #define IPStore_GetInfo(This,ppProperties) (This)->lpVtbl->GetInfo(This,ppProperties)
  340. #define IPStore_GetProvParam(This,dwParam,pcbData,ppbData,dwFlags) (This)->lpVtbl->GetProvParam(This,dwParam,pcbData,ppbData,dwFlags)
  341. #define IPStore_SetProvParam(This,dwParam,cbData,pbData,dwFlags) (This)->lpVtbl->SetProvParam(This,dwParam,cbData,pbData,dwFlags)
  342. #define IPStore_CreateType(This,Key,pType,pInfo,dwFlags) (This)->lpVtbl->CreateType(This,Key,pType,pInfo,dwFlags)
  343. #define IPStore_GetTypeInfo(This,Key,pType,ppInfo,dwFlags) (This)->lpVtbl->GetTypeInfo(This,Key,pType,ppInfo,dwFlags)
  344. #define IPStore_DeleteType(This,Key,pType,dwFlags) (This)->lpVtbl->DeleteType(This,Key,pType,dwFlags)
  345. #define IPStore_CreateSubtype(This,Key,pType,pSubtype,pInfo,pRules,dwFlags) (This)->lpVtbl->CreateSubtype(This,Key,pType,pSubtype,pInfo,pRules,dwFlags)
  346. #define IPStore_GetSubtypeInfo(This,Key,pType,pSubtype,ppInfo,dwFlags) (This)->lpVtbl->GetSubtypeInfo(This,Key,pType,pSubtype,ppInfo,dwFlags)
  347. #define IPStore_DeleteSubtype(This,Key,pType,pSubtype,dwFlags) (This)->lpVtbl->DeleteSubtype(This,Key,pType,pSubtype,dwFlags)
  348. #define IPStore_ReadAccessRuleset(This,Key,pType,pSubtype,ppRules,dwFlags) (This)->lpVtbl->ReadAccessRuleset(This,Key,pType,pSubtype,ppRules,dwFlags)
  349. #define IPStore_WriteAccessRuleset(This,Key,pType,pSubtype,pRules,dwFlags) (This)->lpVtbl->WriteAccessRuleset(This,Key,pType,pSubtype,pRules,dwFlags)
  350. #define IPStore_EnumTypes(This,Key,dwFlags,ppenum) (This)->lpVtbl->EnumTypes(This,Key,dwFlags,ppenum)
  351. #define IPStore_EnumSubtypes(This,Key,pType,dwFlags,ppenum) (This)->lpVtbl->EnumSubtypes(This,Key,pType,dwFlags,ppenum)
  352. #define IPStore_DeleteItem(This,Key,pItemType,pItemSubtype,szItemName,pPromptInfo,dwFlags) (This)->lpVtbl->DeleteItem(This,Key,pItemType,pItemSubtype,szItemName,pPromptInfo,dwFlags)
  353. #define IPStore_ReadItem(This,Key,pItemType,pItemSubtype,szItemName,pcbData,ppbData,pPromptInfo,dwFlags) (This)->lpVtbl->ReadItem(This,Key,pItemType,pItemSubtype,szItemName,pcbData,ppbData,pPromptInfo,dwFlags)
  354. #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)
  355. #define IPStore_OpenItem(This,Key,pItemType,pItemSubtype,szItemName,ModeFlags,pPromptInfo,dwFlags) (This)->lpVtbl->OpenItem(This,Key,pItemType,pItemSubtype,szItemName,ModeFlags,pPromptInfo,dwFlags)
  356. #define IPStore_CloseItem(This,Key,pItemType,pItemSubtype,szItemName,dwFlags) (This)->lpVtbl->CloseItem(This,Key,pItemType,pItemSubtype,szItemName,dwFlags)
  357. #define IPStore_EnumItems(This,Key,pItemType,pItemSubtype,dwFlags,ppenum) (This)->lpVtbl->EnumItems(This,Key,pItemType,pItemSubtype,dwFlags,ppenum)
  358. #endif
  359. #endif
  360. HRESULT WINAPI IPStore_GetInfo_Proxy(IPStore *This,PPST_PROVIDERINFO *ppProperties);
  361. void __RPC_STUB IPStore_GetInfo_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
  362. HRESULT WINAPI IPStore_GetProvParam_Proxy(IPStore *This,DWORD dwParam,DWORD *pcbData,BYTE **ppbData,DWORD dwFlags);
  363. void __RPC_STUB IPStore_GetProvParam_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
  364. HRESULT WINAPI IPStore_SetProvParam_Proxy(IPStore *This,DWORD dwParam,DWORD cbData,BYTE *pbData,DWORD dwFlags);
  365. void __RPC_STUB IPStore_SetProvParam_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
  366. HRESULT WINAPI IPStore_CreateType_Proxy(IPStore *This,PST_KEY Key,const GUID *pType,PPST_TYPEINFO pInfo,DWORD dwFlags);
  367. void __RPC_STUB IPStore_CreateType_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
  368. HRESULT WINAPI IPStore_GetTypeInfo_Proxy(IPStore *This,PST_KEY Key,const GUID *pType,PPST_TYPEINFO *ppInfo,DWORD dwFlags);
  369. void __RPC_STUB IPStore_GetTypeInfo_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
  370. HRESULT WINAPI IPStore_DeleteType_Proxy(IPStore *This,PST_KEY Key,const GUID *pType,DWORD dwFlags);
  371. void __RPC_STUB IPStore_DeleteType_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
  372. HRESULT WINAPI IPStore_CreateSubtype_Proxy(IPStore *This,PST_KEY Key,const GUID *pType,const GUID *pSubtype,PPST_TYPEINFO pInfo,PPST_ACCESSRULESET pRules,DWORD dwFlags);
  373. void __RPC_STUB IPStore_CreateSubtype_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
  374. HRESULT WINAPI IPStore_GetSubtypeInfo_Proxy(IPStore *This,PST_KEY Key,const GUID *pType,const GUID *pSubtype,PPST_TYPEINFO *ppInfo,DWORD dwFlags);
  375. void __RPC_STUB IPStore_GetSubtypeInfo_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
  376. HRESULT WINAPI IPStore_DeleteSubtype_Proxy(IPStore *This,PST_KEY Key,const GUID *pType,const GUID *pSubtype,DWORD dwFlags);
  377. void __RPC_STUB IPStore_DeleteSubtype_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
  378. HRESULT WINAPI IPStore_ReadAccessRuleset_Proxy(IPStore *This,PST_KEY Key,const GUID *pType,const GUID *pSubtype,PPST_ACCESSRULESET *ppRules,DWORD dwFlags);
  379. void __RPC_STUB IPStore_ReadAccessRuleset_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
  380. HRESULT WINAPI IPStore_WriteAccessRuleset_Proxy(IPStore *This,PST_KEY Key,const GUID *pType,const GUID *pSubtype,PPST_ACCESSRULESET pRules,DWORD dwFlags);
  381. void __RPC_STUB IPStore_WriteAccessRuleset_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
  382. HRESULT WINAPI IPStore_EnumTypes_Proxy(IPStore *This,PST_KEY Key,DWORD dwFlags,IEnumPStoreTypes **ppenum);
  383. void __RPC_STUB IPStore_EnumTypes_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
  384. HRESULT WINAPI IPStore_EnumSubtypes_Proxy(IPStore *This,PST_KEY Key,const GUID *pType,DWORD dwFlags,IEnumPStoreTypes **ppenum);
  385. void __RPC_STUB IPStore_EnumSubtypes_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
  386. HRESULT WINAPI IPStore_DeleteItem_Proxy(IPStore *This,PST_KEY Key,const GUID *pItemType,const GUID *pItemSubtype,LPCWSTR szItemName,PPST_PROMPTINFO pPromptInfo,DWORD dwFlags);
  387. void __RPC_STUB IPStore_DeleteItem_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
  388. 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);
  389. void __RPC_STUB IPStore_ReadItem_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
  390. 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);
  391. void __RPC_STUB IPStore_WriteItem_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
  392. 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);
  393. void __RPC_STUB IPStore_OpenItem_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
  394. HRESULT WINAPI IPStore_CloseItem_Proxy(IPStore *This,PST_KEY Key,const GUID *pItemType,const GUID *pItemSubtype,LPCWSTR szItemName,DWORD dwFlags);
  395. void __RPC_STUB IPStore_CloseItem_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
  396. HRESULT WINAPI IPStore_EnumItems_Proxy(IPStore *This,PST_KEY Key,const GUID *pItemType,const GUID *pItemSubtype,DWORD dwFlags,IEnumPStoreItems **ppenum);
  397. void __RPC_STUB IPStore_EnumItems_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
  398. #endif
  399. #ifndef __IEnumPStoreProviders_INTERFACE_DEFINED__
  400. #define __IEnumPStoreProviders_INTERFACE_DEFINED__
  401. EXTERN_C const IID IID_IEnumPStoreProviders;
  402. #if defined(__cplusplus) && !defined(CINTERFACE)
  403. struct IEnumPStoreProviders : public IUnknown {
  404. public:
  405. virtual HRESULT WINAPI Next(DWORD celt,PST_PROVIDERINFO **rgelt,DWORD *pceltFetched) = 0;
  406. virtual HRESULT WINAPI Skip(DWORD celt) = 0;
  407. virtual HRESULT WINAPI Reset(void) = 0;
  408. virtual HRESULT WINAPI Clone(IEnumPStoreProviders **ppenum) = 0;
  409. };
  410. #else
  411. typedef struct IEnumPStoreProvidersVtbl {
  412. BEGIN_INTERFACE
  413. HRESULT (WINAPI *QueryInterface)(IEnumPStoreProviders *This,REFIID riid,void **ppvObject);
  414. ULONG (WINAPI *AddRef)(IEnumPStoreProviders *This);
  415. ULONG (WINAPI *Release)(IEnumPStoreProviders *This);
  416. HRESULT (WINAPI *Next)(IEnumPStoreProviders *This,DWORD celt,PST_PROVIDERINFO **rgelt,DWORD *pceltFetched);
  417. HRESULT (WINAPI *Skip)(IEnumPStoreProviders *This,DWORD celt);
  418. HRESULT (WINAPI *Reset)(IEnumPStoreProviders *This);
  419. HRESULT (WINAPI *Clone)(IEnumPStoreProviders *This,IEnumPStoreProviders **ppenum);
  420. END_INTERFACE
  421. } IEnumPStoreProvidersVtbl;
  422. struct IEnumPStoreProviders {
  423. CONST_VTBL struct IEnumPStoreProvidersVtbl *lpVtbl;
  424. };
  425. #ifdef COBJMACROS
  426. #define IEnumPStoreProviders_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
  427. #define IEnumPStoreProviders_AddRef(This) (This)->lpVtbl->AddRef(This)
  428. #define IEnumPStoreProviders_Release(This) (This)->lpVtbl->Release(This)
  429. #define IEnumPStoreProviders_Next(This,celt,rgelt,pceltFetched) (This)->lpVtbl->Next(This,celt,rgelt,pceltFetched)
  430. #define IEnumPStoreProviders_Skip(This,celt) (This)->lpVtbl->Skip(This,celt)
  431. #define IEnumPStoreProviders_Reset(This) (This)->lpVtbl->Reset(This)
  432. #define IEnumPStoreProviders_Clone(This,ppenum) (This)->lpVtbl->Clone(This,ppenum)
  433. #endif
  434. #endif
  435. HRESULT WINAPI IEnumPStoreProviders_Next_Proxy(IEnumPStoreProviders *This,DWORD celt,PST_PROVIDERINFO **rgelt,DWORD *pceltFetched);
  436. void __RPC_STUB IEnumPStoreProviders_Next_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
  437. HRESULT WINAPI IEnumPStoreProviders_Skip_Proxy(IEnumPStoreProviders *This,DWORD celt);
  438. void __RPC_STUB IEnumPStoreProviders_Skip_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
  439. HRESULT WINAPI IEnumPStoreProviders_Reset_Proxy(IEnumPStoreProviders *This);
  440. void __RPC_STUB IEnumPStoreProviders_Reset_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
  441. HRESULT WINAPI IEnumPStoreProviders_Clone_Proxy(IEnumPStoreProviders *This,IEnumPStoreProviders **ppenum);
  442. void __RPC_STUB IEnumPStoreProviders_Clone_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
  443. #endif
  444. #ifndef __PSTORECLib_LIBRARY_DEFINED__
  445. #define __PSTORECLib_LIBRARY_DEFINED__
  446. EXTERN_C const IID LIBID_PSTORECLib;
  447. #ifdef __cplusplus
  448. EXTERN_C const CLSID CLSID_CPStore;
  449. class CPStore;
  450. #endif
  451. #ifdef __cplusplus
  452. EXTERN_C const CLSID CLSID_CEnumTypes;
  453. class CEnumTypes;
  454. #endif
  455. #ifdef __cplusplus
  456. EXTERN_C const CLSID CLSID_CEnumItems;
  457. class CEnumItems;
  458. #endif
  459. #endif
  460. HRESULT WINAPI PStoreCreateInstance(IPStore **ppProvider,PST_PROVIDERID *pProviderID,void *pReserved,DWORD dwFlags);
  461. HRESULT WINAPI PStoreEnumProviders(DWORD dwFlags,IEnumPStoreProviders **ppenum);
  462. extern RPC_IF_HANDLE __MIDL__intf_0080_v0_0_c_ifspec;
  463. extern RPC_IF_HANDLE __MIDL__intf_0080_v0_0_s_ifspec;
  464. #ifdef __cplusplus
  465. }
  466. #endif
  467. #endif