gdiplus: Implement GdipGetPathGradientBlend with basic tests.
[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   uuid(5a6f1ec1-2db1-11d0-8c39-00c04fd9126b),
81   pointer_default(unique)
82 ]
83 interface IEnumPStoreItems : IUnknown
84 {
85     HRESULT Clone(
86         [in] IEnumPStoreItems** ppenum );
87
88     HRESULT Next(
89         [in] DWORD celt,
90         [in] LPWSTR* rgelt,
91         [in] DWORD* pceltFetched );
92
93     HRESULT Reset();
94
95     HRESULT Skip(
96         [in] DWORD celt );
97 }
98
99 [
100   object,
101   uuid(789c1cbf-31ee-11d0-8c39-00c04fd9126b),
102   pointer_default(unique)
103 ]
104 interface IEnumPStoreTypes : IUnknown
105 {
106     HRESULT Clone(
107         [in] IEnumPStoreTypes** ppenum );
108
109     HRESULT Next(
110         [in] DWORD celt,
111         [in] LPWSTR* rgelt,
112         [in] DWORD* pceltFetched );
113
114     HRESULT Reset();
115
116     HRESULT Skip(
117         [in] DWORD celt );
118 }
119
120 /*****************************************************************************
121  * IPStore interface
122  */
123 [
124   object,
125   uuid(5a6f1ec0-2db1-11d0-8c39-00c04fd9126b),
126   pointer_default(unique)
127 ]
128 interface IPStore : IUnknown
129 {
130     HRESULT GetInfo(
131         [in] PPST_PROVIDERINFO* ppProperties );
132
133     HRESULT GetProvParam(
134         [in] DWORD dwParam,
135         [out] DWORD* pcbData,
136         [out] BYTE** ppbData,
137         [in] DWORD dwFlags );
138
139     HRESULT SetProvParam(
140         [in] DWORD dwParam,
141         [in] DWORD cbData,
142         [in] BYTE* pbData,
143         [in] DWORD* dwFlags );
144
145     HRESULT CreateType(
146         [in] PST_KEY Key,
147         [in] const GUID* pType,
148         [in] PPST_TYPEINFO pInfo,
149         [in] DWORD dwFlags );
150
151     HRESULT GetTypeInfo(
152         [in] PST_KEY Key,
153         [in] const GUID* pType,
154         [in] PPST_TYPEINFO** ppInfo,
155         [in] DWORD dwFlags );
156
157     HRESULT DeleteType(
158         [in] PST_KEY Key,
159         [in] const GUID* pType,
160         [in] DWORD dwFlags );
161
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 );
169
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 );
176
177     HRESULT DeleteSubtype(
178         [in] PST_KEY Key,
179         [in] const GUID* pType,
180         [in] const GUID* pSubtype,
181         [in] DWORD dwFlags );
182
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 );
190
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 );
198
199     HRESULT EnumTypes(
200         [in] PST_KEY Key,
201         [in] DWORD dwFlags,
202         [in] IEnumPStoreTypes** ppenum );
203
204     HRESULT EnumSubtypes(
205         [in] PST_KEY Key,
206         [in] const GUID* pType,
207         [in] DWORD dwFlags,
208         [in] IEnumPStoreTypes** ppenum );
209
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 );
217
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 );
227
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);
238
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 );
247
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 );
254
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 );
261 }