| /* | 
 |  * 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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, 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; | 
 |  | 
 | /***************************************************************************** | 
 |  * PSTOREC library | 
 |  */ | 
 | [ | 
 |     uuid(5a6f1ebd-2db1-11d0-8c39-00c04fd9126b), | 
 |     version(1.0), | 
 |     helpstring("PStore 1.0 Type Library") | 
 | ] | 
 | library PSTORECLib | 
 | { | 
 |     importlib("stdole2.tlb"); | 
 |  | 
 | typedef struct _PST_PROVIDERINFO | 
 | { | 
 |     DWORD cbSize; | 
 |     PST_PROVIDERID ID; | 
 |     PST_PROVIDERCAPABILITIES Capabilities; | 
 |     LPWSTR szProviderName; | 
 | } PST_PROVIDERINFO, *PPST_PROVIDERINFO; | 
 |  | 
 | typedef struct _PST_PROMPTINFO | 
 | { | 
 |     DWORD cbSize; | 
 |     DWORD dwPromptFlags; | 
 |     HWND hwndApp; | 
 |     LPCWSTR szPrompt; | 
 | } PST_PROMPTINFO, *PPST_PROMPTINFO; | 
 |  | 
 | typedef struct _PST_ACCESSCLAUSE { | 
 |     DWORD cbSize; | 
 |     PST_ACCESSCLAUSETYPE ClauseType; | 
 |     DWORD cbClauseData; | 
 |     BYTE* pbClauseData; | 
 | } PST_ACCESSCLAUSE, *PPST_ACCESSCLAUSE; | 
 |  | 
 | typedef struct _PST_ACCESSRULE { | 
 |     DWORD cbSize; | 
 |     PST_ACCESSMODE AccessModeFlags; | 
 |     DWORD cClauses; | 
 |     PST_ACCESSCLAUSE* rgClauses; | 
 | } PST_ACCESSRULE, *PPST_ACCESSRULE; | 
 |  | 
 | typedef struct _PST_ACCESSRULESET { | 
 |     DWORD cbSize; | 
 |     DWORD cClause; | 
 |     PST_ACCESSRULE* rgRules; | 
 | } PST_ACCESSRULESET, *PPST_ACCESSRULESET; | 
 |  | 
 | typedef struct _PST_TYPEINFO { | 
 |     DWORD cbSize; | 
 |     LPWSTR szDisplayName; | 
 | } PST_TYPEINFO, *PPST_TYPEINFO; | 
 |  | 
 | [ | 
 |   object, | 
 |   uuid(5a6f1ec1-2db1-11d0-8c39-00c04fd9126b), | 
 |   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, | 
 |   uuid(789c1cbf-31ee-11d0-8c39-00c04fd9126b), | 
 |   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, | 
 |   uuid(5a6f1ec0-2db1-11d0-8c39-00c04fd9126b), | 
 |   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_PROMPTINFO pPromptInfo, | 
 |         [in] DWORD dwFlags ); | 
 |  | 
 |     HRESULT WriteItem( | 
 |         [in] PST_KEY Key, | 
 |         [in] const GUID* pItemType, | 
 |         [in] const GUID* pItemSubtype, | 
 |         [in] LPCWSTR szItemName, | 
 |         [in] DWORD cbData, | 
 |         [in,size_is(cbData)] BYTE *ppbData, | 
 |         [in] PPST_PROMPTINFO 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_PROMPTINFO pProomptInfo, | 
 |         [in] DWORD dwFlags ); | 
 |  | 
 |     HRESULT CloseItem(  | 
 |         [in] 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 ); | 
 | } | 
 |  | 
 | }; |