2 * Copyright (C) 2004 Mike McCormack
4 * This library is free software; you can redistribute it and/or
5 * modify it under the terms of the GNU Lesser General Public
6 * License as published by the Free Software Foundation; either
7 * version 2.1 of the License, or (at your option) any later version.
9 * This library is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 * Lesser General Public License for more details.
14 * You should have received a copy of the GNU Lesser General Public
15 * License along with this library; if not, write to the Free Software
16 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
22 cpp_quote
("#define PST_KEY_CURRENT_USER 0")
23 cpp_quote
("#define PST_KEY_LOCAL_MACHINE 1")
25 cpp_quote
("#define PST_E_OK 0x00000000L")
26 cpp_quote
("#define PST_E_TYPE_EXISTS 0x800C0004L")
28 cpp_quote
("#define PST_AUTHENTICODE 1")
29 cpp_quote
("#define PST_BINARY_CHECK 2")
30 cpp_quote
("#define PST_SECURITY_DESCRIPTOR 4")
32 typedef DWORD PST_ACCESSMODE
;
33 typedef DWORD PST_ACCESSCLAUSETYPE
;
34 typedef DWORD PST_KEY
;
35 typedef DWORD PST_PROVIDERCAPABILITIES
;
36 typedef GUID PST_PROVIDERID
, *PPST_PROVIDERID
;
38 /*****************************************************************************
42 uuid(5a6f1ebd
-2db1
-11d0
-8c39
-00c04fd9126b
),
44 helpstring("PStore 1.0 Type Library")
48 importlib
("stdole2.tlb");
50 typedef struct _PST_PROVIDERINFO
54 PST_PROVIDERCAPABILITIES Capabilities
;
55 LPWSTR szProviderName
;
56 } PST_PROVIDERINFO
, *PPST_PROVIDERINFO
;
58 typedef struct _PST_PROMPTINFO
64 } PST_PROMPTINFO
, *PPST_PROMPTINFO
;
66 typedef struct _PST_ACCESSCLAUSE
{
68 PST_ACCESSCLAUSETYPE ClauseType
;
71 } PST_ACCESSCLAUSE
, *PPST_ACCESSCLAUSE
;
73 typedef struct _PST_ACCESSRULE
{
75 PST_ACCESSMODE AccessModeFlags
;
77 PST_ACCESSCLAUSE
* rgClauses
;
78 } PST_ACCESSRULE
, *PPST_ACCESSRULE
;
80 typedef struct _PST_ACCESSRULESET
{
83 PST_ACCESSRULE
* rgRules
;
84 } PST_ACCESSRULESET
, *PPST_ACCESSRULESET
;
86 typedef struct _PST_TYPEINFO
{
89 } PST_TYPEINFO
, *PPST_TYPEINFO
;
93 uuid(5a6f1ec1
-2db1
-11d0
-8c39
-00c04fd9126b
),
94 pointer_default(unique)
96 interface IEnumPStoreItems
: IUnknown
99 [in] IEnumPStoreItems
** ppenum
);
104 [in] DWORD
* pceltFetched
);
114 uuid(789c1cbf
-31ee
-11d0
-8c39
-00c04fd9126b
),
115 pointer_default(unique)
117 interface IEnumPStoreTypes
: IUnknown
120 [in] IEnumPStoreTypes
** ppenum
);
125 [in] DWORD
* pceltFetched
);
133 /*****************************************************************************
138 uuid(5a6f1ec0
-2db1
-11d0
-8c39
-00c04fd9126b
),
139 pointer_default(unique)
141 interface IPStore
: IUnknown
144 [in] PPST_PROVIDERINFO
* ppProperties
);
146 HRESULT GetProvParam
(
148 [out] DWORD
* pcbData
,
149 [out] BYTE** ppbData
,
150 [in] DWORD dwFlags
);
152 HRESULT SetProvParam
(
156 [in] DWORD
* dwFlags
);
160 [in] const GUID
* pType
,
161 [in] PPST_TYPEINFO pInfo
,
162 [in] DWORD dwFlags
);
166 [in] const GUID
* pType
,
167 [in] PPST_TYPEINFO
** ppInfo
,
168 [in] DWORD dwFlags
);
172 [in] const GUID
* pType
,
173 [in] DWORD dwFlags
);
175 HRESULT CreateSubtype
(
177 [in] const GUID
* pType
,
178 [in] const GUID
* pSubtype
,
179 [in] PPST_TYPEINFO pInfo
,
180 [in] PPST_ACCESSRULESET pRules
,
181 [in] DWORD dwFlags
);
183 HRESULT GetSubtypeInfo
(
185 [in] const GUID
* pType
,
186 [in] const GUID
* pSubtype
,
187 [in] PPST_TYPEINFO
** ppInfo
,
188 [in] DWORD dwFlags
);
190 HRESULT DeleteSubtype
(
192 [in] const GUID
* pType
,
193 [in] const GUID
* pSubtype
,
194 [in] DWORD dwFlags
);
196 HRESULT ReadAccessRuleset
(
198 [in] const GUID
* pType
,
199 [in] const GUID
* pSubtype
,
200 [in] PPST_TYPEINFO pInfo
,
201 [in] PPST_ACCESSRULESET
** ppRules
,
202 [in] DWORD dwFlags
);
204 HRESULT WriteAccessRuleset
(
206 [in] const GUID
* pType
,
207 [in] const GUID
* pSubtype
,
208 [in] PPST_TYPEINFO pInfo
,
209 [in] PPST_ACCESSRULESET pRules
,
210 [in] DWORD dwFlags
);
215 [in] IEnumPStoreTypes
** ppenum
);
217 HRESULT EnumSubtypes
(
219 [in] const GUID
* pType
,
221 [in] IEnumPStoreTypes
** ppenum
);
225 [in] const GUID
* pItemType
,
226 [in] const GUID
* pItemSubType
,
227 [in] LPCWSTR szItemName
,
228 [in] PPST_PROMPTINFO pPromptInfo
,
229 [in] DWORD dwFlags
);
233 [in] const GUID
* pItemType
,
234 [in] const GUID
* pItemSubtype
,
235 [in] LPCWSTR szItemName
,
238 [in] PPST_PROMPTINFO pPromptInfo
,
239 [in] DWORD dwFlags
);
243 [in] const GUID
* pItemType
,
244 [in] const GUID
* pItemSubtype
,
245 [in] LPCWSTR szItemName
,
247 [in,size_is(cbData
)] BYTE *ppbData
,
248 [in] PPST_PROMPTINFO pPromptInfo
,
249 [in] DWORD dwDefaultConfirmationStyle
,
254 [in] const GUID
* pItemType
,
255 [in] const GUID
* pItemSubtype
,
256 [in] LPCWSTR szItemName
,
257 [in] PST_ACCESSMODE ModeFlags
,
258 [in] PPST_PROMPTINFO pProomptInfo
,
259 [in] DWORD dwFlags
);
263 [in] const GUID
* pItemType
,
264 [in] const GUID
* pItemSubtype
,
265 [in] LPCWSTR
* szItemName
,
266 [in] DWORD dwFlags
);
270 [in] const GUID
* pItemType
,
271 [in] const GUID
* pItemSubtype
,
273 [in] IEnumPStoreItems
** ppenum
);