/* * 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 ); } };