Added pstore.h and an IDL file to generate it.
diff --git a/include/pstore.idl b/include/pstore.idl new file mode 100644 index 0000000..9002a13 --- /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 ); +}