From c3b8a20e71e6fedb90385f24c90f671bcc261a4b Mon Sep 17 00:00:00 2001 From: Mike McCormack Date: Thu, 29 Apr 2004 20:00:26 +0000 Subject: [PATCH] Added pstore.h and an IDL file to generate it. --- include/Makefile.in | 1 + include/pstore.h | 935 ++++++++++++++++++++++++++++++++++++++++++++ include/pstore.idl | 261 +++++++++++++ 3 files changed, 1197 insertions(+) create mode 100644 include/pstore.h create mode 100644 include/pstore.idl diff --git a/include/Makefile.in b/include/Makefile.in index fa57b08dd1c..8d6b9452f50 100644 --- a/include/Makefile.in +++ b/include/Makefile.in @@ -17,6 +17,7 @@ IDL_SRCS = \ objidl.idl \ ocidl.idl \ oleidl.idl \ + pstore.idl \ servprov.idl \ shldisp.idl \ shobjidl.idl \ diff --git a/include/pstore.h b/include/pstore.h new file mode 100644 index 00000000000..245767b99cb --- /dev/null +++ b/include/pstore.h @@ -0,0 +1,935 @@ +/*** Autogenerated by WIDL 0.1 from pstore.idl - Do not edit ***/ +#include +#include + +#ifndef __WIDL_PSTORE_H +#define __WIDL_PSTORE_H +#ifdef __cplusplus +extern "C" { +#endif +#include +#define PST_KEY_CURRENT_USER 0 +#define PST_KEY_LOCAL_MACHINE 1 +#define PST_E_OK 0x00000000L +#define PST_E_TYPE_EXISTS 0x800C0004L +#define PST_AUTHENTICODE 1 +#define PST_BINARY_CHECK 2 +#define PST_SECURITY_DESCRIPTOR 4 +typedef DWORD PST_ACCESSMODE; + +typedef DWORD PST_ACCESSCLAUSETYPE; + +typedef DWORD PST_KEY; + +typedef DWORD PST_PROVIDERCAPABILITIES; + +typedef GUID PST_PROVIDERID, *PPST_PROVIDERID; + +typedef struct _PST_PROVIDERINFO { + DWORD cbSize; + PST_PROVIDERID ID; + PST_PROVIDERCAPABILITIES Capabilities; + LPWSTR szProviderName; +} PST_PROVIDERINFO, *PPST_PROVIDERINFO; + +typedef void *PPST_PROMPTIFO; + +typedef struct { + DWORD cbSize; + PST_ACCESSCLAUSETYPE ClauseType; + DWORD cbClauseData; + BYTE *pbClauseData; +} PST_ACCESSCLAUSE, *PPST_ACCESSCLAUSE; + +typedef struct { + DWORD cbSize; + PST_ACCESSMODE AccessModeFlags; + DWORD cClauses; + PST_ACCESSCLAUSE *rgClauses; +} PST_ACCESSRULE, *PPST_ACCESSRULE; + +typedef struct { + DWORD cbSize; + DWORD cClause; + PST_ACCESSRULE *rgRules; +} PST_ACCESSRULESET, *PPST_ACCESSRULESET; + +typedef struct { + DWORD cbSize; + LPWSTR szDisplayName; +} PST_TYPEINFO, *PPST_TYPEINFO; + +typedef struct { + DWORD cbSize; + DWORD dwPromptFlags; + DWORD_PTR hwndApp; + LPCWSTR szPrompt; +} PST_PROMPTINFO, *PPST_PROMPTINFO; + +#ifndef __IEnumPStoreItems_FWD_DEFINED__ +#define __IEnumPStoreItems_FWD_DEFINED__ +typedef struct IEnumPStoreItems IEnumPStoreItems; +#endif + +/***************************************************************************** + * IEnumPStoreItems interface + */ +#ifndef __IEnumPStoreItems_INTERFACE_DEFINED__ +#define __IEnumPStoreItems_INTERFACE_DEFINED__ + +#if defined(__cplusplus) && !defined(CINTERFACE) +struct IEnumPStoreItems : public IUnknown +{ + virtual HRESULT STDMETHODCALLTYPE Clone( + IEnumPStoreItems** ppenum) = 0; + + virtual HRESULT STDMETHODCALLTYPE Next( + DWORD celt, + LPWSTR* rgelt, + DWORD* pceltFetched) = 0; + + virtual HRESULT STDMETHODCALLTYPE Reset( + ) = 0; + + virtual HRESULT STDMETHODCALLTYPE Skip( + DWORD celt) = 0; + +}; +#else +typedef struct IEnumPStoreItemsVtbl IEnumPStoreItemsVtbl; +struct IEnumPStoreItems { + const IEnumPStoreItemsVtbl* lpVtbl; +}; +struct IEnumPStoreItemsVtbl { + ICOM_MSVTABLE_COMPAT_FIELDS + + /*** IUnknown methods ***/ + HRESULT (STDMETHODCALLTYPE *QueryInterface)( + IEnumPStoreItems* This, + REFIID riid, + void** ppvObject); + + ULONG (STDMETHODCALLTYPE *AddRef)( + IEnumPStoreItems* This); + + ULONG (STDMETHODCALLTYPE *Release)( + IEnumPStoreItems* This); + + /*** IEnumPStoreItems methods ***/ + HRESULT (STDMETHODCALLTYPE *Clone)( + IEnumPStoreItems* This, + IEnumPStoreItems** ppenum); + + HRESULT (STDMETHODCALLTYPE *Next)( + IEnumPStoreItems* This, + DWORD celt, + LPWSTR* rgelt, + DWORD* pceltFetched); + + HRESULT (STDMETHODCALLTYPE *Reset)( + IEnumPStoreItems* This); + + HRESULT (STDMETHODCALLTYPE *Skip)( + IEnumPStoreItems* This, + DWORD celt); + +}; + +/*** IUnknown methods ***/ +#define IEnumPStoreItems_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) +#define IEnumPStoreItems_AddRef(p) (p)->lpVtbl->AddRef(p) +#define IEnumPStoreItems_Release(p) (p)->lpVtbl->Release(p) +/*** IEnumPStoreItems methods ***/ +#define IEnumPStoreItems_Clone(p,a) (p)->lpVtbl->Clone(p,a) +#define IEnumPStoreItems_Next(p,a,b,c) (p)->lpVtbl->Next(p,a,b,c) +#define IEnumPStoreItems_Reset(p) (p)->lpVtbl->Reset(p) +#define IEnumPStoreItems_Skip(p,a) (p)->lpVtbl->Skip(p,a) + +#endif + +#define IEnumPStoreItems_METHODS \ + ICOM_MSVTABLE_COMPAT_FIELDS \ + /*** IUnknown methods ***/ \ + STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \ + STDMETHOD_(ULONG,AddRef)(THIS) PURE; \ + STDMETHOD_(ULONG,Release)(THIS) PURE; \ + /*** IEnumPStoreItems methods ***/ \ + STDMETHOD_(HRESULT,Clone)(THIS_ IEnumPStoreItems** ppenum) PURE; \ + STDMETHOD_(HRESULT,Next)(THIS_ DWORD celt, LPWSTR* rgelt, DWORD* pceltFetched) PURE; \ + STDMETHOD_(HRESULT,Reset)(THIS) PURE; \ + STDMETHOD_(HRESULT,Skip)(THIS_ DWORD celt) PURE; + +HRESULT CALLBACK IEnumPStoreItems_Clone_Proxy( + IEnumPStoreItems* This, + IEnumPStoreItems** ppenum); +void __RPC_STUB IEnumPStoreItems_Clone_Stub( + struct IRpcStubBuffer* This, + struct IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IEnumPStoreItems_Next_Proxy( + IEnumPStoreItems* This, + DWORD celt, + LPWSTR* rgelt, + DWORD* pceltFetched); +void __RPC_STUB IEnumPStoreItems_Next_Stub( + struct IRpcStubBuffer* This, + struct IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IEnumPStoreItems_Reset_Proxy( + IEnumPStoreItems* This); +void __RPC_STUB IEnumPStoreItems_Reset_Stub( + struct IRpcStubBuffer* This, + struct IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IEnumPStoreItems_Skip_Proxy( + IEnumPStoreItems* This, + DWORD celt); +void __RPC_STUB IEnumPStoreItems_Skip_Stub( + struct IRpcStubBuffer* This, + struct IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); + +#endif /* __IEnumPStoreItems_INTERFACE_DEFINED__ */ + +#ifndef __IEnumPStoreTypes_FWD_DEFINED__ +#define __IEnumPStoreTypes_FWD_DEFINED__ +typedef struct IEnumPStoreTypes IEnumPStoreTypes; +#endif + +/***************************************************************************** + * IEnumPStoreTypes interface + */ +#ifndef __IEnumPStoreTypes_INTERFACE_DEFINED__ +#define __IEnumPStoreTypes_INTERFACE_DEFINED__ + +#if defined(__cplusplus) && !defined(CINTERFACE) +struct IEnumPStoreTypes : public IUnknown +{ + virtual HRESULT STDMETHODCALLTYPE Clone( + IEnumPStoreTypes** ppenum) = 0; + + virtual HRESULT STDMETHODCALLTYPE Next( + DWORD celt, + LPWSTR* rgelt, + DWORD* pceltFetched) = 0; + + virtual HRESULT STDMETHODCALLTYPE Reset( + ) = 0; + + virtual HRESULT STDMETHODCALLTYPE Skip( + DWORD celt) = 0; + +}; +#else +typedef struct IEnumPStoreTypesVtbl IEnumPStoreTypesVtbl; +struct IEnumPStoreTypes { + const IEnumPStoreTypesVtbl* lpVtbl; +}; +struct IEnumPStoreTypesVtbl { + ICOM_MSVTABLE_COMPAT_FIELDS + + /*** IUnknown methods ***/ + HRESULT (STDMETHODCALLTYPE *QueryInterface)( + IEnumPStoreTypes* This, + REFIID riid, + void** ppvObject); + + ULONG (STDMETHODCALLTYPE *AddRef)( + IEnumPStoreTypes* This); + + ULONG (STDMETHODCALLTYPE *Release)( + IEnumPStoreTypes* This); + + /*** IEnumPStoreTypes methods ***/ + HRESULT (STDMETHODCALLTYPE *Clone)( + IEnumPStoreTypes* This, + IEnumPStoreTypes** ppenum); + + HRESULT (STDMETHODCALLTYPE *Next)( + IEnumPStoreTypes* This, + DWORD celt, + LPWSTR* rgelt, + DWORD* pceltFetched); + + HRESULT (STDMETHODCALLTYPE *Reset)( + IEnumPStoreTypes* This); + + HRESULT (STDMETHODCALLTYPE *Skip)( + IEnumPStoreTypes* This, + DWORD celt); + +}; + +/*** IUnknown methods ***/ +#define IEnumPStoreTypes_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) +#define IEnumPStoreTypes_AddRef(p) (p)->lpVtbl->AddRef(p) +#define IEnumPStoreTypes_Release(p) (p)->lpVtbl->Release(p) +/*** IEnumPStoreTypes methods ***/ +#define IEnumPStoreTypes_Clone(p,a) (p)->lpVtbl->Clone(p,a) +#define IEnumPStoreTypes_Next(p,a,b,c) (p)->lpVtbl->Next(p,a,b,c) +#define IEnumPStoreTypes_Reset(p) (p)->lpVtbl->Reset(p) +#define IEnumPStoreTypes_Skip(p,a) (p)->lpVtbl->Skip(p,a) + +#endif + +#define IEnumPStoreTypes_METHODS \ + ICOM_MSVTABLE_COMPAT_FIELDS \ + /*** IUnknown methods ***/ \ + STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \ + STDMETHOD_(ULONG,AddRef)(THIS) PURE; \ + STDMETHOD_(ULONG,Release)(THIS) PURE; \ + /*** IEnumPStoreTypes methods ***/ \ + STDMETHOD_(HRESULT,Clone)(THIS_ IEnumPStoreTypes** ppenum) PURE; \ + STDMETHOD_(HRESULT,Next)(THIS_ DWORD celt, LPWSTR* rgelt, DWORD* pceltFetched) PURE; \ + STDMETHOD_(HRESULT,Reset)(THIS) PURE; \ + STDMETHOD_(HRESULT,Skip)(THIS_ DWORD celt) PURE; + +HRESULT CALLBACK IEnumPStoreTypes_Clone_Proxy( + IEnumPStoreTypes* This, + IEnumPStoreTypes** ppenum); +void __RPC_STUB IEnumPStoreTypes_Clone_Stub( + struct IRpcStubBuffer* This, + struct IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IEnumPStoreTypes_Next_Proxy( + IEnumPStoreTypes* This, + DWORD celt, + LPWSTR* rgelt, + DWORD* pceltFetched); +void __RPC_STUB IEnumPStoreTypes_Next_Stub( + struct IRpcStubBuffer* This, + struct IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IEnumPStoreTypes_Reset_Proxy( + IEnumPStoreTypes* This); +void __RPC_STUB IEnumPStoreTypes_Reset_Stub( + struct IRpcStubBuffer* This, + struct IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IEnumPStoreTypes_Skip_Proxy( + IEnumPStoreTypes* This, + DWORD celt); +void __RPC_STUB IEnumPStoreTypes_Skip_Stub( + struct IRpcStubBuffer* This, + struct IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); + +#endif /* __IEnumPStoreTypes_INTERFACE_DEFINED__ */ + +#ifndef __IPStore_FWD_DEFINED__ +#define __IPStore_FWD_DEFINED__ +typedef struct IPStore IPStore; +#endif + +/***************************************************************************** + * IPStore interface + */ +#ifndef __IPStore_INTERFACE_DEFINED__ +#define __IPStore_INTERFACE_DEFINED__ + +#if defined(__cplusplus) && !defined(CINTERFACE) +struct IPStore : public IUnknown +{ + virtual HRESULT STDMETHODCALLTYPE GetInfo( + PPST_PROVIDERINFO* ppProperties) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetProvParam( + DWORD dwParam, + DWORD* pcbData, + BYTE** ppbData, + DWORD dwFlags) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetProvParam( + DWORD dwParam, + DWORD cbData, + BYTE* pbData, + DWORD* dwFlags) = 0; + + virtual HRESULT STDMETHODCALLTYPE CreateType( + PST_KEY Key, + const GUID* pType, + PPST_TYPEINFO pInfo, + DWORD dwFlags) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetTypeInfo( + PST_KEY Key, + const GUID* pType, + PPST_TYPEINFO** ppInfo, + DWORD dwFlags) = 0; + + virtual HRESULT STDMETHODCALLTYPE DeleteType( + PST_KEY Key, + const GUID* pType, + DWORD dwFlags) = 0; + + virtual HRESULT STDMETHODCALLTYPE CreateSubtype( + PST_KEY Key, + const GUID* pType, + const GUID* pSubtype, + PPST_TYPEINFO pInfo, + PPST_ACCESSRULESET pRules, + DWORD dwFlags) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetSubtypeInfo( + PST_KEY Key, + const GUID* pType, + const GUID* pSubtype, + PPST_TYPEINFO** ppInfo, + DWORD dwFlags) = 0; + + virtual HRESULT STDMETHODCALLTYPE DeleteSubtype( + PST_KEY Key, + const GUID* pType, + const GUID* pSubtype, + DWORD dwFlags) = 0; + + virtual HRESULT STDMETHODCALLTYPE ReadAccessRuleset( + PST_KEY Key, + const GUID* pType, + const GUID* pSubtype, + PPST_TYPEINFO pInfo, + PPST_ACCESSRULESET** ppRules, + DWORD dwFlags) = 0; + + virtual HRESULT STDMETHODCALLTYPE WriteAccessRuleset( + PST_KEY Key, + const GUID* pType, + const GUID* pSubtype, + PPST_TYPEINFO pInfo, + PPST_ACCESSRULESET pRules, + DWORD dwFlags) = 0; + + virtual HRESULT STDMETHODCALLTYPE EnumTypes( + PST_KEY Key, + DWORD dwFlags, + IEnumPStoreTypes** ppenum) = 0; + + virtual HRESULT STDMETHODCALLTYPE EnumSubtypes( + PST_KEY Key, + const GUID* pType, + DWORD dwFlags, + IEnumPStoreTypes** ppenum) = 0; + + virtual HRESULT STDMETHODCALLTYPE DeleteItem( + PST_KEY Key, + const GUID* pItemType, + const GUID* pItemSubType, + LPCWSTR szItemName, + PPST_PROMPTINFO pPromptInfo, + DWORD dwFlags) = 0; + + virtual HRESULT STDMETHODCALLTYPE ReadItem( + PST_KEY Key, + const GUID* pItemType, + const GUID* pItemSubtype, + LPCWSTR szItemName, + DWORD* cbData, + BYTE** pbData, + PPST_PROMPTIFO pPromptInfo, + DWORD dwFlags) = 0; + + virtual HRESULT STDMETHODCALLTYPE WriteItem( + PST_KEY Key, + const GUID* pItemType, + const GUID* pItemSubtype, + LPCWSTR szItemName, + DWORD cbData, + BYTE* ppbData, + PPST_PROMPTIFO pPromptInfo, + DWORD dwDefaultConfirmationStyle, + DWORD dwFlags) = 0; + + virtual HRESULT STDMETHODCALLTYPE OpenItem( + PST_KEY Key, + const GUID* pItemType, + const GUID* pItemSubtype, + LPCWSTR* szItemName, + PST_ACCESSMODE ModeFlags, + PPST_PROMPTIFO pProomptInfo, + DWORD dwFlags) = 0; + + virtual HRESULT STDMETHODCALLTYPE CloseItem( + PST_KEY Key, + const GUID* pItemType, + const GUID* pItemSubtype, + LPCWSTR* szItemName, + DWORD dwFlags) = 0; + + virtual HRESULT STDMETHODCALLTYPE EnumItems( + PST_KEY Key, + const GUID* pItemType, + const GUID* pItemSubtype, + DWORD dwFlags, + IEnumPStoreItems** ppenum) = 0; + +}; +#else +typedef struct IPStoreVtbl IPStoreVtbl; +struct IPStore { + const IPStoreVtbl* lpVtbl; +}; +struct IPStoreVtbl { + ICOM_MSVTABLE_COMPAT_FIELDS + + /*** IUnknown methods ***/ + HRESULT (STDMETHODCALLTYPE *QueryInterface)( + IPStore* This, + REFIID riid, + void** ppvObject); + + ULONG (STDMETHODCALLTYPE *AddRef)( + IPStore* This); + + ULONG (STDMETHODCALLTYPE *Release)( + IPStore* This); + + /*** IPStore methods ***/ + HRESULT (STDMETHODCALLTYPE *GetInfo)( + IPStore* This, + PPST_PROVIDERINFO* ppProperties); + + HRESULT (STDMETHODCALLTYPE *GetProvParam)( + IPStore* This, + DWORD dwParam, + DWORD* pcbData, + BYTE** ppbData, + DWORD dwFlags); + + HRESULT (STDMETHODCALLTYPE *SetProvParam)( + IPStore* This, + DWORD dwParam, + DWORD cbData, + BYTE* pbData, + DWORD* dwFlags); + + HRESULT (STDMETHODCALLTYPE *CreateType)( + IPStore* This, + PST_KEY Key, + const GUID* pType, + PPST_TYPEINFO pInfo, + DWORD dwFlags); + + HRESULT (STDMETHODCALLTYPE *GetTypeInfo)( + IPStore* This, + PST_KEY Key, + const GUID* pType, + PPST_TYPEINFO** ppInfo, + DWORD dwFlags); + + HRESULT (STDMETHODCALLTYPE *DeleteType)( + IPStore* This, + PST_KEY Key, + const GUID* pType, + DWORD dwFlags); + + HRESULT (STDMETHODCALLTYPE *CreateSubtype)( + IPStore* This, + PST_KEY Key, + const GUID* pType, + const GUID* pSubtype, + PPST_TYPEINFO pInfo, + PPST_ACCESSRULESET pRules, + DWORD dwFlags); + + HRESULT (STDMETHODCALLTYPE *GetSubtypeInfo)( + IPStore* This, + PST_KEY Key, + const GUID* pType, + const GUID* pSubtype, + PPST_TYPEINFO** ppInfo, + DWORD dwFlags); + + HRESULT (STDMETHODCALLTYPE *DeleteSubtype)( + IPStore* This, + PST_KEY Key, + const GUID* pType, + const GUID* pSubtype, + DWORD dwFlags); + + HRESULT (STDMETHODCALLTYPE *ReadAccessRuleset)( + IPStore* This, + PST_KEY Key, + const GUID* pType, + const GUID* pSubtype, + PPST_TYPEINFO pInfo, + PPST_ACCESSRULESET** ppRules, + DWORD dwFlags); + + HRESULT (STDMETHODCALLTYPE *WriteAccessRuleset)( + IPStore* This, + PST_KEY Key, + const GUID* pType, + const GUID* pSubtype, + PPST_TYPEINFO pInfo, + PPST_ACCESSRULESET pRules, + DWORD dwFlags); + + HRESULT (STDMETHODCALLTYPE *EnumTypes)( + IPStore* This, + PST_KEY Key, + DWORD dwFlags, + IEnumPStoreTypes** ppenum); + + HRESULT (STDMETHODCALLTYPE *EnumSubtypes)( + IPStore* This, + PST_KEY Key, + const GUID* pType, + DWORD dwFlags, + IEnumPStoreTypes** ppenum); + + HRESULT (STDMETHODCALLTYPE *DeleteItem)( + IPStore* This, + PST_KEY Key, + const GUID* pItemType, + const GUID* pItemSubType, + LPCWSTR szItemName, + PPST_PROMPTINFO pPromptInfo, + DWORD dwFlags); + + HRESULT (STDMETHODCALLTYPE *ReadItem)( + IPStore* This, + PST_KEY Key, + const GUID* pItemType, + const GUID* pItemSubtype, + LPCWSTR szItemName, + DWORD* cbData, + BYTE** pbData, + PPST_PROMPTIFO pPromptInfo, + DWORD dwFlags); + + HRESULT (STDMETHODCALLTYPE *WriteItem)( + IPStore* This, + PST_KEY Key, + const GUID* pItemType, + const GUID* pItemSubtype, + LPCWSTR szItemName, + DWORD cbData, + BYTE* ppbData, + PPST_PROMPTIFO pPromptInfo, + DWORD dwDefaultConfirmationStyle, + DWORD dwFlags); + + HRESULT (STDMETHODCALLTYPE *OpenItem)( + IPStore* This, + PST_KEY Key, + const GUID* pItemType, + const GUID* pItemSubtype, + LPCWSTR* szItemName, + PST_ACCESSMODE ModeFlags, + PPST_PROMPTIFO pProomptInfo, + DWORD dwFlags); + + HRESULT (STDMETHODCALLTYPE *CloseItem)( + IPStore* This, + PST_KEY Key, + const GUID* pItemType, + const GUID* pItemSubtype, + LPCWSTR* szItemName, + DWORD dwFlags); + + HRESULT (STDMETHODCALLTYPE *EnumItems)( + IPStore* This, + PST_KEY Key, + const GUID* pItemType, + const GUID* pItemSubtype, + DWORD dwFlags, + IEnumPStoreItems** ppenum); + +}; + +/*** IUnknown methods ***/ +#define IPStore_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) +#define IPStore_AddRef(p) (p)->lpVtbl->AddRef(p) +#define IPStore_Release(p) (p)->lpVtbl->Release(p) +/*** IPStore methods ***/ +#define IPStore_GetInfo(p,a) (p)->lpVtbl->GetInfo(p,a) +#define IPStore_GetProvParam(p,a,b,c,d) (p)->lpVtbl->GetProvParam(p,a,b,c,d) +#define IPStore_SetProvParam(p,a,b,c,d) (p)->lpVtbl->SetProvParam(p,a,b,c,d) +#define IPStore_CreateType(p,a,b,c,d) (p)->lpVtbl->CreateType(p,a,b,c,d) +#define IPStore_GetTypeInfo(p,a,b,c,d) (p)->lpVtbl->GetTypeInfo(p,a,b,c,d) +#define IPStore_DeleteType(p,a,b,c) (p)->lpVtbl->DeleteType(p,a,b,c) +#define IPStore_CreateSubtype(p,a,b,c,d,e,f) (p)->lpVtbl->CreateSubtype(p,a,b,c,d,e,f) +#define IPStore_GetSubtypeInfo(p,a,b,c,d,e) (p)->lpVtbl->GetSubtypeInfo(p,a,b,c,d,e) +#define IPStore_DeleteSubtype(p,a,b,c,d) (p)->lpVtbl->DeleteSubtype(p,a,b,c,d) +#define IPStore_ReadAccessRuleset(p,a,b,c,d,e,f) (p)->lpVtbl->ReadAccessRuleset(p,a,b,c,d,e,f) +#define IPStore_WriteAccessRuleset(p,a,b,c,d,e,f) (p)->lpVtbl->WriteAccessRuleset(p,a,b,c,d,e,f) +#define IPStore_EnumTypes(p,a,b,c) (p)->lpVtbl->EnumTypes(p,a,b,c) +#define IPStore_EnumSubtypes(p,a,b,c,d) (p)->lpVtbl->EnumSubtypes(p,a,b,c,d) +#define IPStore_DeleteItem(p,a,b,c,d,e,f) (p)->lpVtbl->DeleteItem(p,a,b,c,d,e,f) +#define IPStore_ReadItem(p,a,b,c,d,e,f,g,h) (p)->lpVtbl->ReadItem(p,a,b,c,d,e,f,g,h) +#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) +#define IPStore_OpenItem(p,a,b,c,d,e,f,g) (p)->lpVtbl->OpenItem(p,a,b,c,d,e,f,g) +#define IPStore_CloseItem(p,a,b,c,d,e) (p)->lpVtbl->CloseItem(p,a,b,c,d,e) +#define IPStore_EnumItems(p,a,b,c,d,e) (p)->lpVtbl->EnumItems(p,a,b,c,d,e) + +#endif + +#define IPStore_METHODS \ + ICOM_MSVTABLE_COMPAT_FIELDS \ + /*** IUnknown methods ***/ \ + STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \ + STDMETHOD_(ULONG,AddRef)(THIS) PURE; \ + STDMETHOD_(ULONG,Release)(THIS) PURE; \ + /*** IPStore methods ***/ \ + STDMETHOD_(HRESULT,GetInfo)(THIS_ PPST_PROVIDERINFO* ppProperties) PURE; \ + STDMETHOD_(HRESULT,GetProvParam)(THIS_ DWORD dwParam, DWORD* pcbData, BYTE** ppbData, DWORD dwFlags) PURE; \ + STDMETHOD_(HRESULT,SetProvParam)(THIS_ DWORD dwParam, DWORD cbData, BYTE* pbData, DWORD* dwFlags) PURE; \ + STDMETHOD_(HRESULT,CreateType)(THIS_ PST_KEY Key, const GUID* pType, PPST_TYPEINFO pInfo, DWORD dwFlags) PURE; \ + STDMETHOD_(HRESULT,GetTypeInfo)(THIS_ PST_KEY Key, const GUID* pType, PPST_TYPEINFO** ppInfo, DWORD dwFlags) PURE; \ + STDMETHOD_(HRESULT,DeleteType)(THIS_ PST_KEY Key, const GUID* pType, DWORD dwFlags) PURE; \ + STDMETHOD_(HRESULT,CreateSubtype)(THIS_ PST_KEY Key, const GUID* pType, const GUID* pSubtype, PPST_TYPEINFO pInfo, PPST_ACCESSRULESET pRules, DWORD dwFlags) PURE; \ + STDMETHOD_(HRESULT,GetSubtypeInfo)(THIS_ PST_KEY Key, const GUID* pType, const GUID* pSubtype, PPST_TYPEINFO** ppInfo, DWORD dwFlags) PURE; \ + STDMETHOD_(HRESULT,DeleteSubtype)(THIS_ PST_KEY Key, const GUID* pType, const GUID* pSubtype, DWORD dwFlags) PURE; \ + STDMETHOD_(HRESULT,ReadAccessRuleset)(THIS_ PST_KEY Key, const GUID* pType, const GUID* pSubtype, PPST_TYPEINFO pInfo, PPST_ACCESSRULESET** ppRules, DWORD dwFlags) PURE; \ + STDMETHOD_(HRESULT,WriteAccessRuleset)(THIS_ PST_KEY Key, const GUID* pType, const GUID* pSubtype, PPST_TYPEINFO pInfo, PPST_ACCESSRULESET pRules, DWORD dwFlags) PURE; \ + STDMETHOD_(HRESULT,EnumTypes)(THIS_ PST_KEY Key, DWORD dwFlags, IEnumPStoreTypes** ppenum) PURE; \ + STDMETHOD_(HRESULT,EnumSubtypes)(THIS_ PST_KEY Key, const GUID* pType, DWORD dwFlags, IEnumPStoreTypes** ppenum) PURE; \ + STDMETHOD_(HRESULT,DeleteItem)(THIS_ PST_KEY Key, const GUID* pItemType, const GUID* pItemSubType, LPCWSTR szItemName, PPST_PROMPTINFO pPromptInfo, DWORD dwFlags) PURE; \ + 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; \ + 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; \ + STDMETHOD_(HRESULT,OpenItem)(THIS_ PST_KEY Key, const GUID* pItemType, const GUID* pItemSubtype, LPCWSTR* szItemName, PST_ACCESSMODE ModeFlags, PPST_PROMPTIFO pProomptInfo, DWORD dwFlags) PURE; \ + STDMETHOD_(HRESULT,CloseItem)(THIS_ PST_KEY Key, const GUID* pItemType, const GUID* pItemSubtype, LPCWSTR* szItemName, DWORD dwFlags) PURE; \ + STDMETHOD_(HRESULT,EnumItems)(THIS_ PST_KEY Key, const GUID* pItemType, const GUID* pItemSubtype, DWORD dwFlags, IEnumPStoreItems** ppenum) PURE; + +HRESULT CALLBACK IPStore_GetInfo_Proxy( + IPStore* This, + PPST_PROVIDERINFO* ppProperties); +void __RPC_STUB IPStore_GetInfo_Stub( + struct IRpcStubBuffer* This, + struct IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IPStore_GetProvParam_Proxy( + IPStore* This, + DWORD dwParam, + DWORD* pcbData, + BYTE** ppbData, + DWORD dwFlags); +void __RPC_STUB IPStore_GetProvParam_Stub( + struct IRpcStubBuffer* This, + struct IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IPStore_SetProvParam_Proxy( + IPStore* This, + DWORD dwParam, + DWORD cbData, + BYTE* pbData, + DWORD* dwFlags); +void __RPC_STUB IPStore_SetProvParam_Stub( + struct IRpcStubBuffer* This, + struct IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IPStore_CreateType_Proxy( + IPStore* This, + PST_KEY Key, + const GUID* pType, + PPST_TYPEINFO pInfo, + DWORD dwFlags); +void __RPC_STUB IPStore_CreateType_Stub( + struct IRpcStubBuffer* This, + struct IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IPStore_GetTypeInfo_Proxy( + IPStore* This, + PST_KEY Key, + const GUID* pType, + PPST_TYPEINFO** ppInfo, + DWORD dwFlags); +void __RPC_STUB IPStore_GetTypeInfo_Stub( + struct IRpcStubBuffer* This, + struct IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IPStore_DeleteType_Proxy( + IPStore* This, + PST_KEY Key, + const GUID* pType, + DWORD dwFlags); +void __RPC_STUB IPStore_DeleteType_Stub( + struct IRpcStubBuffer* This, + struct IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK 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( + struct IRpcStubBuffer* This, + struct IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK 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( + struct IRpcStubBuffer* This, + struct IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IPStore_DeleteSubtype_Proxy( + IPStore* This, + PST_KEY Key, + const GUID* pType, + const GUID* pSubtype, + DWORD dwFlags); +void __RPC_STUB IPStore_DeleteSubtype_Stub( + struct IRpcStubBuffer* This, + struct IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IPStore_ReadAccessRuleset_Proxy( + IPStore* This, + PST_KEY Key, + const GUID* pType, + const GUID* pSubtype, + PPST_TYPEINFO pInfo, + PPST_ACCESSRULESET** ppRules, + DWORD dwFlags); +void __RPC_STUB IPStore_ReadAccessRuleset_Stub( + struct IRpcStubBuffer* This, + struct IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IPStore_WriteAccessRuleset_Proxy( + IPStore* This, + PST_KEY Key, + const GUID* pType, + const GUID* pSubtype, + PPST_TYPEINFO pInfo, + PPST_ACCESSRULESET pRules, + DWORD dwFlags); +void __RPC_STUB IPStore_WriteAccessRuleset_Stub( + struct IRpcStubBuffer* This, + struct IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IPStore_EnumTypes_Proxy( + IPStore* This, + PST_KEY Key, + DWORD dwFlags, + IEnumPStoreTypes** ppenum); +void __RPC_STUB IPStore_EnumTypes_Stub( + struct IRpcStubBuffer* This, + struct IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IPStore_EnumSubtypes_Proxy( + IPStore* This, + PST_KEY Key, + const GUID* pType, + DWORD dwFlags, + IEnumPStoreTypes** ppenum); +void __RPC_STUB IPStore_EnumSubtypes_Stub( + struct IRpcStubBuffer* This, + struct IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK 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( + struct IRpcStubBuffer* This, + struct IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IPStore_ReadItem_Proxy( + IPStore* This, + PST_KEY Key, + const GUID* pItemType, + const GUID* pItemSubtype, + LPCWSTR szItemName, + DWORD* cbData, + BYTE** pbData, + PPST_PROMPTIFO pPromptInfo, + DWORD dwFlags); +void __RPC_STUB IPStore_ReadItem_Stub( + struct IRpcStubBuffer* This, + struct IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IPStore_WriteItem_Proxy( + IPStore* This, + PST_KEY Key, + const GUID* pItemType, + const GUID* pItemSubtype, + LPCWSTR szItemName, + DWORD cbData, + BYTE* ppbData, + PPST_PROMPTIFO pPromptInfo, + DWORD dwDefaultConfirmationStyle, + DWORD dwFlags); +void __RPC_STUB IPStore_WriteItem_Stub( + struct IRpcStubBuffer* This, + struct IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IPStore_OpenItem_Proxy( + IPStore* This, + PST_KEY Key, + const GUID* pItemType, + const GUID* pItemSubtype, + LPCWSTR* szItemName, + PST_ACCESSMODE ModeFlags, + PPST_PROMPTIFO pProomptInfo, + DWORD dwFlags); +void __RPC_STUB IPStore_OpenItem_Stub( + struct IRpcStubBuffer* This, + struct IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IPStore_CloseItem_Proxy( + IPStore* This, + PST_KEY Key, + const GUID* pItemType, + const GUID* pItemSubtype, + LPCWSTR* szItemName, + DWORD dwFlags); +void __RPC_STUB IPStore_CloseItem_Stub( + struct IRpcStubBuffer* This, + struct IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IPStore_EnumItems_Proxy( + IPStore* This, + PST_KEY Key, + const GUID* pItemType, + const GUID* pItemSubtype, + DWORD dwFlags, + IEnumPStoreItems** ppenum); +void __RPC_STUB IPStore_EnumItems_Stub( + struct IRpcStubBuffer* This, + struct IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); + +#endif /* __IPStore_INTERFACE_DEFINED__ */ + +#ifdef __cplusplus +} +#endif +#endif /* __WIDL_PSTORE_H */ diff --git a/include/pstore.idl b/include/pstore.idl new file mode 100644 index 00000000000..9002a13a318 --- /dev/null +++ b/include/pstore.idl @@ -0,0 +1,261 @@ +/* + * Copyright (C) 2004 Mike McCormack + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +import "oaidl.idl"; + +cpp_quote("#define PST_KEY_CURRENT_USER 0"); +cpp_quote("#define PST_KEY_LOCAL_MACHINE 1"); + +cpp_quote("#define PST_E_OK 0x00000000L"); +cpp_quote("#define PST_E_TYPE_EXISTS 0x800C0004L"); + +cpp_quote("#define PST_AUTHENTICODE 1"); +cpp_quote("#define PST_BINARY_CHECK 2"); +cpp_quote("#define PST_SECURITY_DESCRIPTOR 4"); + +typedef DWORD PST_ACCESSMODE; +typedef DWORD PST_ACCESSCLAUSETYPE; +typedef DWORD PST_KEY; +typedef DWORD PST_PROVIDERCAPABILITIES; +typedef GUID PST_PROVIDERID, *PPST_PROVIDERID; + +typedef struct _PST_PROVIDERINFO +{ + DWORD cbSize; + PST_PROVIDERID ID; + PST_PROVIDERCAPABILITIES Capabilities; + LPWSTR szProviderName; +} PST_PROVIDERINFO, *PPST_PROVIDERINFO; + +typedef void *PPST_PROMPTIFO; + + + +typedef struct { + DWORD cbSize; + PST_ACCESSCLAUSETYPE ClauseType; + DWORD cbClauseData; + BYTE* pbClauseData; +} PST_ACCESSCLAUSE, *PPST_ACCESSCLAUSE; + +typedef struct { + DWORD cbSize; + PST_ACCESSMODE AccessModeFlags; + DWORD cClauses; + PST_ACCESSCLAUSE* rgClauses; +} PST_ACCESSRULE, *PPST_ACCESSRULE; + +typedef struct { + DWORD cbSize; + DWORD cClause; + PST_ACCESSRULE* rgRules; +} PST_ACCESSRULESET, *PPST_ACCESSRULESET; + +typedef struct { + DWORD cbSize; + LPWSTR szDisplayName; +} PST_TYPEINFO, *PPST_TYPEINFO; + +typedef struct { + DWORD cbSize; + DWORD dwPromptFlags; + DWORD_PTR hwndApp; + LPCWSTR szPrompt; +} PST_PROMPTINFO, *PPST_PROMPTINFO; + +[ + object, + pointer_default(unique) +] +interface IEnumPStoreItems : IUnknown +{ + HRESULT Clone( + [in] IEnumPStoreItems** ppenum ); + + HRESULT Next( + [in] DWORD celt, + [in] LPWSTR* rgelt, + [in] DWORD* pceltFetched ); + + HRESULT Reset(); + + HRESULT Skip( + [in] DWORD celt ); +} + +[ + object, + pointer_default(unique) +] +interface IEnumPStoreTypes : IUnknown +{ + HRESULT Clone( + [in] IEnumPStoreTypes** ppenum ); + + HRESULT Next( + [in] DWORD celt, + [in] LPWSTR* rgelt, + [in] DWORD* pceltFetched ); + + HRESULT Reset(); + + HRESULT Skip( + [in] DWORD celt ); +} + +/***************************************************************************** + * IPStore interface + */ +[ + object, + pointer_default(unique) +] +interface IPStore : IUnknown +{ + HRESULT GetInfo( + [in] PPST_PROVIDERINFO* ppProperties ); + + HRESULT GetProvParam( + [in] DWORD dwParam, + [out] DWORD* pcbData, + [out] BYTE** ppbData, + [in] DWORD dwFlags ); + + HRESULT SetProvParam( + [in] DWORD dwParam, + [in] DWORD cbData, + [in] BYTE* pbData, + [in] DWORD* dwFlags ); + + HRESULT CreateType( + [in] PST_KEY Key, + [in] const GUID* pType, + [in] PPST_TYPEINFO pInfo, + [in] DWORD dwFlags ); + + HRESULT GetTypeInfo( + [in] PST_KEY Key, + [in] const GUID* pType, + [in] PPST_TYPEINFO** ppInfo, + [in] DWORD dwFlags ); + + HRESULT DeleteType( + [in] PST_KEY Key, + [in] const GUID* pType, + [in] DWORD dwFlags ); + + HRESULT CreateSubtype( + [in] PST_KEY Key, + [in] const GUID* pType, + [in] const GUID* pSubtype, + [in] PPST_TYPEINFO pInfo, + [in] PPST_ACCESSRULESET pRules, + [in] DWORD dwFlags ); + + HRESULT GetSubtypeInfo( + [in] PST_KEY Key, + [in] const GUID* pType, + [in] const GUID* pSubtype, + [in] PPST_TYPEINFO** ppInfo, + [in] DWORD dwFlags ); + + HRESULT DeleteSubtype( + [in] PST_KEY Key, + [in] const GUID* pType, + [in] const GUID* pSubtype, + [in] DWORD dwFlags ); + + HRESULT ReadAccessRuleset( + [in] PST_KEY Key, + [in] const GUID* pType, + [in] const GUID* pSubtype, + [in] PPST_TYPEINFO pInfo, + [in] PPST_ACCESSRULESET** ppRules, + [in] DWORD dwFlags ); + + HRESULT WriteAccessRuleset( + [in] PST_KEY Key, + [in] const GUID* pType, + [in] const GUID* pSubtype, + [in] PPST_TYPEINFO pInfo, + [in] PPST_ACCESSRULESET pRules, + [in] DWORD dwFlags ); + + HRESULT EnumTypes( + [in] PST_KEY Key, + [in] DWORD dwFlags, + [in] IEnumPStoreTypes** ppenum ); + + HRESULT EnumSubtypes( + [in] PST_KEY Key, + [in] const GUID* pType, + [in] DWORD dwFlags, + [in] IEnumPStoreTypes** ppenum ); + + HRESULT DeleteItem( + [in] PST_KEY Key, + [in] const GUID* pItemType, + [in] const GUID* pItemSubType, + [in] LPCWSTR szItemName, + [in] PPST_PROMPTINFO pPromptInfo, + [in] DWORD dwFlags ); + + HRESULT ReadItem( + [in] PST_KEY Key, + [in] const GUID* pItemType, + [in] const GUID* pItemSubtype, + [in] LPCWSTR szItemName, + [in] DWORD *cbData, + [in] BYTE** pbData, + [in] PPST_PROMPTIFO pPromptInfo, + [in] DWORD dwFlags ); + + HRESULT WriteItem( + [in] PST_KEY Key, + [in] const GUID* pItemType, + [in] const GUID* pItemSubtype, + [in] LPCWSTR szItemName, + [out] DWORD cbData, + [out] BYTE *ppbData, + [in] PPST_PROMPTIFO pPromptInfo, + [in] DWORD dwDefaultConfirmationStyle, + [in] DWORD dwFlags); + + HRESULT OpenItem( + [in] PST_KEY Key, + [in] const GUID* pItemType, + [in] const GUID* pItemSubtype, + [in] LPCWSTR* szItemName, + [in] PST_ACCESSMODE ModeFlags, + [in] PPST_PROMPTIFO pProomptInfo, + [in] DWORD dwFlags ); + + HRESULT CloseItem( + [out] PST_KEY Key, + [in] const GUID* pItemType, + [in] const GUID* pItemSubtype, + [in] LPCWSTR* szItemName, + [in] DWORD dwFlags ); + + HRESULT EnumItems( + [in] PST_KEY Key, + [in] const GUID* pItemType, + [in] const GUID* pItemSubtype, + [in] DWORD dwFlags, + [in] IEnumPStoreItems** ppenum ); +}