wintrust: Implement WTHelperGetProvPrivateDataFromChain.
[wine] / include / 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 typedef struct _PST_PROVIDERINFO
38 {
39     DWORD cbSize;
40     PST_PROVIDERID ID;
41     PST_PROVIDERCAPABILITIES Capabilities;
42     LPWSTR szProviderName;
43 } PST_PROVIDERINFO, *PPST_PROVIDERINFO;
44
45 typedef struct _PST_PROMPTINFO
46 {
47     DWORD cbSize;
48     DWORD dwPromptFlags;
49     HWND hwndApp;
50     LPCWSTR szPrompt;
51 } PST_PROMPTINFO, *PPST_PROMPTINFO;
52
53 typedef struct {
54     DWORD cbSize;
55     PST_ACCESSCLAUSETYPE ClauseType;
56     DWORD cbClauseData;
57     BYTE* pbClauseData;
58 } PST_ACCESSCLAUSE, *PPST_ACCESSCLAUSE;
59
60 typedef struct {
61     DWORD cbSize;
62     PST_ACCESSMODE AccessModeFlags;
63     DWORD cClauses;
64     PST_ACCESSCLAUSE* rgClauses;
65 } PST_ACCESSRULE, *PPST_ACCESSRULE;
66
67 typedef struct {
68     DWORD cbSize;
69     DWORD cClause;
70     PST_ACCESSRULE* rgRules;
71 } PST_ACCESSRULESET, *PPST_ACCESSRULESET;
72
73 typedef struct {
74     DWORD cbSize;
75     LPWSTR szDisplayName;
76 } PST_TYPEINFO, *PPST_TYPEINFO;
77
78 [
79   object,
80   pointer_default(unique)
81 ]
82 interface IEnumPStoreItems : IUnknown
83 {
84     HRESULT Clone(
85         [in] IEnumPStoreItems** ppenum );
86
87     HRESULT Next(
88         [in] DWORD celt,
89         [in] LPWSTR* rgelt,
90         [in] DWORD* pceltFetched );
91
92     HRESULT Reset();
93
94     HRESULT Skip(
95         [in] DWORD celt );
96 }
97
98 [
99   object,
100   pointer_default(unique)
101 ]
102 interface IEnumPStoreTypes : IUnknown
103 {
104     HRESULT Clone(
105         [in] IEnumPStoreTypes** ppenum );
106
107     HRESULT Next(
108         [in] DWORD celt,
109         [in] LPWSTR* rgelt,
110         [in] DWORD* pceltFetched );
111
112     HRESULT Reset();
113
114     HRESULT Skip(
115         [in] DWORD celt );
116 }
117
118 /*****************************************************************************
119  * IPStore interface
120  */
121 [
122   object,
123   pointer_default(unique)
124 ]
125 interface IPStore : IUnknown
126 {
127     HRESULT GetInfo(
128         [in] PPST_PROVIDERINFO* ppProperties );
129
130     HRESULT GetProvParam(
131         [in] DWORD dwParam,
132         [out] DWORD* pcbData,
133         [out] BYTE** ppbData,
134         [in] DWORD dwFlags );
135
136     HRESULT SetProvParam(
137         [in] DWORD dwParam,
138         [in] DWORD cbData,
139         [in] BYTE* pbData,
140         [in] DWORD* dwFlags );
141
142     HRESULT CreateType(
143         [in] PST_KEY Key,
144         [in] const GUID* pType,
145         [in] PPST_TYPEINFO pInfo,
146         [in] DWORD dwFlags );
147
148     HRESULT GetTypeInfo(
149         [in] PST_KEY Key,
150         [in] const GUID* pType,
151         [in] PPST_TYPEINFO** ppInfo,
152         [in] DWORD dwFlags );
153
154     HRESULT DeleteType(
155         [in] PST_KEY Key,
156         [in] const GUID* pType,
157         [in] DWORD dwFlags );
158
159     HRESULT CreateSubtype(
160         [in] PST_KEY Key,
161         [in] const GUID* pType,
162         [in] const GUID* pSubtype,
163         [in] PPST_TYPEINFO pInfo,
164         [in] PPST_ACCESSRULESET pRules,
165         [in] DWORD dwFlags );
166
167     HRESULT GetSubtypeInfo(
168         [in] PST_KEY Key,
169         [in] const GUID* pType,
170         [in] const GUID* pSubtype,
171         [in] PPST_TYPEINFO** ppInfo,
172         [in] DWORD dwFlags );
173
174     HRESULT DeleteSubtype(
175         [in] PST_KEY Key,
176         [in] const GUID* pType,
177         [in] const GUID* pSubtype,
178         [in] DWORD dwFlags );
179
180     HRESULT ReadAccessRuleset(
181         [in] PST_KEY Key,
182         [in] const GUID* pType,
183         [in] const GUID* pSubtype,
184         [in] PPST_TYPEINFO pInfo,
185         [in] PPST_ACCESSRULESET** ppRules,
186         [in] DWORD dwFlags );
187
188     HRESULT WriteAccessRuleset(
189         [in] PST_KEY Key,
190         [in] const GUID* pType,
191         [in] const GUID* pSubtype,
192         [in] PPST_TYPEINFO pInfo,
193         [in] PPST_ACCESSRULESET pRules,
194         [in] DWORD dwFlags );
195
196     HRESULT EnumTypes(
197         [in] PST_KEY Key,
198         [in] DWORD dwFlags,
199         [in] IEnumPStoreTypes** ppenum );
200
201     HRESULT EnumSubtypes(
202         [in] PST_KEY Key,
203         [in] const GUID* pType,
204         [in] DWORD dwFlags,
205         [in] IEnumPStoreTypes** ppenum );
206
207     HRESULT DeleteItem(
208         [in] PST_KEY Key,
209         [in] const GUID* pItemType,
210         [in] const GUID* pItemSubType,
211         [in] LPCWSTR szItemName,
212         [in] PPST_PROMPTINFO pPromptInfo,
213         [in] DWORD dwFlags );
214
215     HRESULT ReadItem(
216         [in] PST_KEY Key,
217         [in] const GUID* pItemType,
218         [in] const GUID* pItemSubtype,
219         [in] LPCWSTR szItemName,
220         [in] DWORD *cbData,
221         [in] BYTE** pbData,
222         [in] PPST_PROMPTINFO pPromptInfo,
223         [in] DWORD dwFlags );
224
225     HRESULT WriteItem(
226         [in] PST_KEY Key,
227         [in] const GUID* pItemType,
228         [in] const GUID* pItemSubtype,
229         [in] LPCWSTR szItemName,
230         [in] DWORD cbData,
231         [in,size_is(cbData)] BYTE *ppbData,
232         [in] PPST_PROMPTINFO pPromptInfo,
233         [in] DWORD dwDefaultConfirmationStyle,
234         [in] DWORD dwFlags);
235
236     HRESULT OpenItem(
237         [in] PST_KEY Key,
238         [in] const GUID* pItemType,
239         [in] const GUID* pItemSubtype,
240         [in] LPCWSTR szItemName,
241         [in] PST_ACCESSMODE ModeFlags,
242         [in] PPST_PROMPTINFO pProomptInfo,
243         [in] DWORD dwFlags );
244
245     HRESULT CloseItem( 
246         [in] PST_KEY Key, 
247         [in] const GUID* pItemType, 
248         [in] const GUID* pItemSubtype,
249         [in] LPCWSTR* szItemName,
250         [in] DWORD dwFlags );
251
252     HRESULT EnumItems(
253         [in] PST_KEY Key,
254         [in] const GUID* pItemType,
255         [in] const GUID* pItemSubtype,
256         [in] DWORD dwFlags,
257         [in] IEnumPStoreItems** ppenum );
258 }