includes: Fix alignment for 64-bits
[wine/wine64.git] / include / pstore.idl
blob62ce00b8da1658a002ebe8546f1d8db79d6f31c7
1 /*
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
19 import "oaidl.idl";
21 cpp_quote("#define PST_KEY_CURRENT_USER 0")
22 cpp_quote("#define PST_KEY_LOCAL_MACHINE 1")
24 cpp_quote("#define PST_E_OK 0x00000000L")
25 cpp_quote("#define PST_E_TYPE_EXISTS 0x800C0004L")
27 cpp_quote("#define PST_AUTHENTICODE 1")
28 cpp_quote("#define PST_BINARY_CHECK 2")
29 cpp_quote("#define PST_SECURITY_DESCRIPTOR 4")
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;
37 typedef struct _PST_PROVIDERINFO
39 DWORD cbSize;
40 PST_PROVIDERID ID;
41 PST_PROVIDERCAPABILITIES Capabilities;
42 LPWSTR szProviderName;
43 } PST_PROVIDERINFO, *PPST_PROVIDERINFO;
45 typedef struct _PST_PROMPTINFO
47 DWORD cbSize;
48 DWORD dwPromptFlags;
49 HWND hwndApp;
50 LPCWSTR szPrompt;
51 } PST_PROMPTINFO, *PPST_PROMPTINFO;
53 typedef struct {
54 DWORD cbSize;
55 PST_ACCESSCLAUSETYPE ClauseType;
56 DWORD cbClauseData;
57 BYTE* pbClauseData;
58 } PST_ACCESSCLAUSE, *PPST_ACCESSCLAUSE;
60 typedef struct {
61 DWORD cbSize;
62 PST_ACCESSMODE AccessModeFlags;
63 DWORD cClauses;
64 PST_ACCESSCLAUSE* rgClauses;
65 } PST_ACCESSRULE, *PPST_ACCESSRULE;
67 typedef struct {
68 DWORD cbSize;
69 DWORD cClause;
70 PST_ACCESSRULE* rgRules;
71 } PST_ACCESSRULESET, *PPST_ACCESSRULESET;
73 typedef struct {
74 DWORD cbSize;
75 LPWSTR szDisplayName;
76 } PST_TYPEINFO, *PPST_TYPEINFO;
79 object,
80 uuid(5a6f1ec1-2db1-11d0-8c39-00c04fd9126b),
81 pointer_default(unique)
83 interface IEnumPStoreItems : IUnknown
85 HRESULT Clone(
86 [in] IEnumPStoreItems** ppenum );
88 HRESULT Next(
89 [in] DWORD celt,
90 [in] LPWSTR* rgelt,
91 [in] DWORD* pceltFetched );
93 HRESULT Reset();
95 HRESULT Skip(
96 [in] DWORD celt );
100 object,
101 uuid(789c1cbf-31ee-11d0-8c39-00c04fd9126b),
102 pointer_default(unique)
104 interface IEnumPStoreTypes : IUnknown
106 HRESULT Clone(
107 [in] IEnumPStoreTypes** ppenum );
109 HRESULT Next(
110 [in] DWORD celt,
111 [in] LPWSTR* rgelt,
112 [in] DWORD* pceltFetched );
114 HRESULT Reset();
116 HRESULT Skip(
117 [in] DWORD celt );
120 /*****************************************************************************
121 * IPStore interface
124 object,
125 uuid(5a6f1ec0-2db1-11d0-8c39-00c04fd9126b),
126 pointer_default(unique)
128 interface IPStore : IUnknown
130 HRESULT GetInfo(
131 [in] PPST_PROVIDERINFO* ppProperties );
133 HRESULT GetProvParam(
134 [in] DWORD dwParam,
135 [out] DWORD* pcbData,
136 [out] BYTE** ppbData,
137 [in] DWORD dwFlags );
139 HRESULT SetProvParam(
140 [in] DWORD dwParam,
141 [in] DWORD cbData,
142 [in] BYTE* pbData,
143 [in] DWORD* dwFlags );
145 HRESULT CreateType(
146 [in] PST_KEY Key,
147 [in] const GUID* pType,
148 [in] PPST_TYPEINFO pInfo,
149 [in] DWORD dwFlags );
151 HRESULT GetTypeInfo(
152 [in] PST_KEY Key,
153 [in] const GUID* pType,
154 [in] PPST_TYPEINFO** ppInfo,
155 [in] DWORD dwFlags );
157 HRESULT DeleteType(
158 [in] PST_KEY Key,
159 [in] const GUID* pType,
160 [in] DWORD dwFlags );
162 HRESULT CreateSubtype(
163 [in] PST_KEY Key,
164 [in] const GUID* pType,
165 [in] const GUID* pSubtype,
166 [in] PPST_TYPEINFO pInfo,
167 [in] PPST_ACCESSRULESET pRules,
168 [in] DWORD dwFlags );
170 HRESULT GetSubtypeInfo(
171 [in] PST_KEY Key,
172 [in] const GUID* pType,
173 [in] const GUID* pSubtype,
174 [in] PPST_TYPEINFO** ppInfo,
175 [in] DWORD dwFlags );
177 HRESULT DeleteSubtype(
178 [in] PST_KEY Key,
179 [in] const GUID* pType,
180 [in] const GUID* pSubtype,
181 [in] DWORD dwFlags );
183 HRESULT ReadAccessRuleset(
184 [in] PST_KEY Key,
185 [in] const GUID* pType,
186 [in] const GUID* pSubtype,
187 [in] PPST_TYPEINFO pInfo,
188 [in] PPST_ACCESSRULESET** ppRules,
189 [in] DWORD dwFlags );
191 HRESULT WriteAccessRuleset(
192 [in] PST_KEY Key,
193 [in] const GUID* pType,
194 [in] const GUID* pSubtype,
195 [in] PPST_TYPEINFO pInfo,
196 [in] PPST_ACCESSRULESET pRules,
197 [in] DWORD dwFlags );
199 HRESULT EnumTypes(
200 [in] PST_KEY Key,
201 [in] DWORD dwFlags,
202 [in] IEnumPStoreTypes** ppenum );
204 HRESULT EnumSubtypes(
205 [in] PST_KEY Key,
206 [in] const GUID* pType,
207 [in] DWORD dwFlags,
208 [in] IEnumPStoreTypes** ppenum );
210 HRESULT DeleteItem(
211 [in] PST_KEY Key,
212 [in] const GUID* pItemType,
213 [in] const GUID* pItemSubType,
214 [in] LPCWSTR szItemName,
215 [in] PPST_PROMPTINFO pPromptInfo,
216 [in] DWORD dwFlags );
218 HRESULT ReadItem(
219 [in] PST_KEY Key,
220 [in] const GUID* pItemType,
221 [in] const GUID* pItemSubtype,
222 [in] LPCWSTR szItemName,
223 [in] DWORD *cbData,
224 [in] BYTE** pbData,
225 [in] PPST_PROMPTINFO pPromptInfo,
226 [in] DWORD dwFlags );
228 HRESULT WriteItem(
229 [in] PST_KEY Key,
230 [in] const GUID* pItemType,
231 [in] const GUID* pItemSubtype,
232 [in] LPCWSTR szItemName,
233 [in] DWORD cbData,
234 [in,size_is(cbData)] BYTE *ppbData,
235 [in] PPST_PROMPTINFO pPromptInfo,
236 [in] DWORD dwDefaultConfirmationStyle,
237 [in] DWORD dwFlags);
239 HRESULT OpenItem(
240 [in] PST_KEY Key,
241 [in] const GUID* pItemType,
242 [in] const GUID* pItemSubtype,
243 [in] LPCWSTR szItemName,
244 [in] PST_ACCESSMODE ModeFlags,
245 [in] PPST_PROMPTINFO pProomptInfo,
246 [in] DWORD dwFlags );
248 HRESULT CloseItem(
249 [in] PST_KEY Key,
250 [in] const GUID* pItemType,
251 [in] const GUID* pItemSubtype,
252 [in] LPCWSTR* szItemName,
253 [in] DWORD dwFlags );
255 HRESULT EnumItems(
256 [in] PST_KEY Key,
257 [in] const GUID* pItemType,
258 [in] const GUID* pItemSubtype,
259 [in] DWORD dwFlags,
260 [in] IEnumPStoreItems** ppenum );