[PSTOREC]
[reactos.git] / reactos / include / psdk / pstore.idl
1 /*
2 * Copyright (C) 2004 Mike McCormack
3 *
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.
8 *
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.
13 *
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
17 */
18
19 import "oaidl.idl";
20
21 cpp_quote("#define PST_KEY_CURRENT_USER 0")
22 cpp_quote("#define PST_KEY_LOCAL_MACHINE 1")
23
24 cpp_quote("#define PST_E_OK 0x00000000L")
25 cpp_quote("#define PST_E_TYPE_EXISTS 0x800C0004L")
26
27 cpp_quote("#define PST_AUTHENTICODE 1")
28 cpp_quote("#define PST_BINARY_CHECK 2")
29 cpp_quote("#define PST_SECURITY_DESCRIPTOR 4")
30
31 typedef DWORD PST_ACCESSMODE;
32 typedef DWORD PST_ACCESSCLAUSETYPE;
33 typedef DWORD PST_KEY;
34 typedef DWORD PST_PROVIDERCAPABILITIES;
35 typedef GUID PST_PROVIDERID, *PPST_PROVIDERID;
36
37 /*****************************************************************************
38 * PSTOREC library
39 */
40 [
41 uuid(5a6f1ebd-2db1-11d0-8c39-00c04fd9126b),
42 version(1.0),
43 helpstring("PStore 1.0 Type Library")
44 ]
45 library PSTORECLib
46 {
47 importlib("stdole2.tlb");
48
49 typedef struct _PST_PROVIDERINFO
50 {
51 DWORD cbSize;
52 PST_PROVIDERID ID;
53 PST_PROVIDERCAPABILITIES Capabilities;
54 LPWSTR szProviderName;
55 } PST_PROVIDERINFO, *PPST_PROVIDERINFO;
56
57 typedef struct _PST_PROMPTINFO
58 {
59 DWORD cbSize;
60 DWORD dwPromptFlags;
61 HWND hwndApp;
62 LPCWSTR szPrompt;
63 } PST_PROMPTINFO, *PPST_PROMPTINFO;
64
65 typedef struct _PST_ACCESSCLAUSE {
66 DWORD cbSize;
67 PST_ACCESSCLAUSETYPE ClauseType;
68 DWORD cbClauseData;
69 BYTE* pbClauseData;
70 } PST_ACCESSCLAUSE, *PPST_ACCESSCLAUSE;
71
72 typedef struct _PST_ACCESSRULE {
73 DWORD cbSize;
74 PST_ACCESSMODE AccessModeFlags;
75 DWORD cClauses;
76 PST_ACCESSCLAUSE* rgClauses;
77 } PST_ACCESSRULE, *PPST_ACCESSRULE;
78
79 typedef struct _PST_ACCESSRULESET {
80 DWORD cbSize;
81 DWORD cClause;
82 PST_ACCESSRULE* rgRules;
83 } PST_ACCESSRULESET, *PPST_ACCESSRULESET;
84
85 typedef struct _PST_TYPEINFO {
86 DWORD cbSize;
87 LPWSTR szDisplayName;
88 } PST_TYPEINFO, *PPST_TYPEINFO;
89
90 [
91 object,
92 uuid(5a6f1ec1-2db1-11d0-8c39-00c04fd9126b),
93 pointer_default(unique)
94 ]
95 interface IEnumPStoreItems : IUnknown
96 {
97 HRESULT Clone(
98 [in] IEnumPStoreItems** ppenum );
99
100 HRESULT Next(
101 [in] DWORD celt,
102 [in] LPWSTR* rgelt,
103 [in] DWORD* pceltFetched );
104
105 HRESULT Reset();
106
107 HRESULT Skip(
108 [in] DWORD celt );
109 }
110
111 [
112 object,
113 uuid(789c1cbf-31ee-11d0-8c39-00c04fd9126b),
114 pointer_default(unique)
115 ]
116 interface IEnumPStoreTypes : IUnknown
117 {
118 HRESULT Clone(
119 [in] IEnumPStoreTypes** ppenum );
120
121 HRESULT Next(
122 [in] DWORD celt,
123 [in] LPWSTR* rgelt,
124 [in] DWORD* pceltFetched );
125
126 HRESULT Reset();
127
128 HRESULT Skip(
129 [in] DWORD celt );
130 }
131
132 /*****************************************************************************
133 * IPStore interface
134 */
135 [
136 object,
137 uuid(5a6f1ec0-2db1-11d0-8c39-00c04fd9126b),
138 pointer_default(unique)
139 ]
140 interface IPStore : IUnknown
141 {
142 HRESULT GetInfo(
143 [in] PPST_PROVIDERINFO* ppProperties );
144
145 HRESULT GetProvParam(
146 [in] DWORD dwParam,
147 [out] DWORD* pcbData,
148 [out] BYTE** ppbData,
149 [in] DWORD dwFlags );
150
151 HRESULT SetProvParam(
152 [in] DWORD dwParam,
153 [in] DWORD cbData,
154 [in] BYTE* pbData,
155 [in] DWORD* dwFlags );
156
157 HRESULT CreateType(
158 [in] PST_KEY Key,
159 [in] const GUID* pType,
160 [in] PPST_TYPEINFO pInfo,
161 [in] DWORD dwFlags );
162
163 HRESULT GetTypeInfo(
164 [in] PST_KEY Key,
165 [in] const GUID* pType,
166 [in] PPST_TYPEINFO** ppInfo,
167 [in] DWORD dwFlags );
168
169 HRESULT DeleteType(
170 [in] PST_KEY Key,
171 [in] const GUID* pType,
172 [in] DWORD dwFlags );
173
174 HRESULT CreateSubtype(
175 [in] PST_KEY Key,
176 [in] const GUID* pType,
177 [in] const GUID* pSubtype,
178 [in] PPST_TYPEINFO pInfo,
179 [in] PPST_ACCESSRULESET pRules,
180 [in] DWORD dwFlags );
181
182 HRESULT GetSubtypeInfo(
183 [in] PST_KEY Key,
184 [in] const GUID* pType,
185 [in] const GUID* pSubtype,
186 [in] PPST_TYPEINFO** ppInfo,
187 [in] DWORD dwFlags );
188
189 HRESULT DeleteSubtype(
190 [in] PST_KEY Key,
191 [in] const GUID* pType,
192 [in] const GUID* pSubtype,
193 [in] DWORD dwFlags );
194
195 HRESULT ReadAccessRuleset(
196 [in] PST_KEY Key,
197 [in] const GUID* pType,
198 [in] const GUID* pSubtype,
199 [in] PPST_TYPEINFO pInfo,
200 [in] PPST_ACCESSRULESET** ppRules,
201 [in] DWORD dwFlags );
202
203 HRESULT WriteAccessRuleset(
204 [in] PST_KEY Key,
205 [in] const GUID* pType,
206 [in] const GUID* pSubtype,
207 [in] PPST_TYPEINFO pInfo,
208 [in] PPST_ACCESSRULESET pRules,
209 [in] DWORD dwFlags );
210
211 HRESULT EnumTypes(
212 [in] PST_KEY Key,
213 [in] DWORD dwFlags,
214 [in] IEnumPStoreTypes** ppenum );
215
216 HRESULT EnumSubtypes(
217 [in] PST_KEY Key,
218 [in] const GUID* pType,
219 [in] DWORD dwFlags,
220 [in] IEnumPStoreTypes** ppenum );
221
222 HRESULT DeleteItem(
223 [in] PST_KEY Key,
224 [in] const GUID* pItemType,
225 [in] const GUID* pItemSubType,
226 [in] LPCWSTR szItemName,
227 [in] PPST_PROMPTINFO pPromptInfo,
228 [in] DWORD dwFlags );
229
230 HRESULT ReadItem(
231 [in] PST_KEY Key,
232 [in] const GUID* pItemType,
233 [in] const GUID* pItemSubtype,
234 [in] LPCWSTR szItemName,
235 [in] DWORD *cbData,
236 [in] BYTE** pbData,
237 [in] PPST_PROMPTINFO pPromptInfo,
238 [in] DWORD dwFlags );
239
240 HRESULT WriteItem(
241 [in] PST_KEY Key,
242 [in] const GUID* pItemType,
243 [in] const GUID* pItemSubtype,
244 [in] LPCWSTR szItemName,
245 [in] DWORD cbData,
246 [in,size_is(cbData)] BYTE *ppbData,
247 [in] PPST_PROMPTINFO pPromptInfo,
248 [in] DWORD dwDefaultConfirmationStyle,
249 [in] DWORD dwFlags);
250
251 HRESULT OpenItem(
252 [in] PST_KEY Key,
253 [in] const GUID* pItemType,
254 [in] const GUID* pItemSubtype,
255 [in] LPCWSTR szItemName,
256 [in] PST_ACCESSMODE ModeFlags,
257 [in] PPST_PROMPTINFO pProomptInfo,
258 [in] DWORD dwFlags );
259
260 HRESULT CloseItem(
261 [in] PST_KEY Key,
262 [in] const GUID* pItemType,
263 [in] const GUID* pItemSubtype,
264 [in] LPCWSTR* szItemName,
265 [in] DWORD dwFlags );
266
267 HRESULT EnumItems(
268 [in] PST_KEY Key,
269 [in] const GUID* pItemType,
270 [in] const GUID* pItemSubtype,
271 [in] DWORD dwFlags,
272 [in] IEnumPStoreItems** ppenum );
273 }
274
275 };