r199: More registry rpc updates
[kai/samba.git] / source4 / librpc / idl / winreg.idl
1 #include "idl_types.h"
2
3 /*
4   winreg interface definition
5 */
6
7 [ uuid(338cd001-2244-31f1-aaaa-900038001003),
8   version(1.0),
9   pointer_default(unique)
10 ] interface winreg
11 {
12         typedef struct {
13                 [value(strlen_m_term(r->name)*2)] uint16 name_len;
14                 [value(r->name_len)]              uint16 name_size;
15                 unistr *name;
16         } winreg_String;
17
18         typedef struct {
19                 uint16 unknown0;
20                 uint16 unknown1;
21         } winreg_OpenUnknown;
22
23         /******************/
24         /* Function: 0x00 */
25         WERROR winreg_OpenHKCR(
26                 [in]      winreg_OpenUnknown *unknown,
27                 [in]      uint32 access_required,
28                 [out,ref] policy_handle *handle
29         );
30
31         /******************/
32         /* Function: 0x01 */
33         WERROR winreg_OpenHKCU(
34                 [in]      winreg_OpenUnknown *unknown,
35                 [in]      uint32 access_required,
36                 [out,ref] policy_handle *handle
37         );
38
39         /******************/
40         /* Function: 0x02 */
41         WERROR winreg_OpenHKLM(
42                 [in]      winreg_OpenUnknown *unknown,
43                 [in]      uint32 access_required,
44                 [out,ref] policy_handle *handle
45         );
46
47         /******************/
48         /* Function: 0x03 */
49         WERROR winreg_OpenHKPD(
50                 [in]      winreg_OpenUnknown *unknown,
51                 [in]      uint32 access_required,
52                 [out,ref] policy_handle *handle
53         );
54
55         /******************/
56         /* Function: 0x04 */
57         WERROR winreg_OpenHKU(
58                 [in]      winreg_OpenUnknown *unknown,
59                 [in]      uint32 access_required,
60                 [out,ref] policy_handle *handle
61         );
62
63         /******************/
64         /* Function: 0x05 */
65         WERROR winreg_CloseKey(
66                 [in,out,ref] policy_handle *handle
67         );
68
69         /******************/
70         /* Function: 0x06 */
71         WERROR winreg_CreateKey(
72                 [in,out,ref] policy_handle *handle,
73                 [in] winreg_String key,
74                 [in] winreg_String class,
75                 [in] uint32 reserved,
76                 [out] uint32 *unknown,
77                 [in] uint32 access_mask,
78                 [in,ref] uint32 *sec_info,
79                 [in] sec_desc_buf *sec_desc
80         );
81
82         /******************/
83         /* Function: 0x07 */
84         WERROR winreg_DeleteKey(
85                 [in,ref] policy_handle *handle,
86                 [in]     winreg_String key
87         );
88
89         /******************/
90         /* Function: 0x08 */
91         WERROR winreg_DeleteValue(
92                 [in,ref] policy_handle *handle,
93                 [in]     winreg_String value
94         );
95
96         typedef struct {
97                 uint32 low;
98                 uint32 high;
99         } winreg_Time;
100
101         typedef struct {
102                 uint32 unknown;
103                 winreg_String key_name;
104         } winreg_EnumKeyNameRequest;
105
106         typedef struct {
107                 uint32 unknown1;
108                 uint32 unknown2;
109                 lstring name;
110         } winreg_EnumKeyNameResponse;
111
112         /******************/
113         /* Function: 0x09 */
114         WERROR winreg_EnumKey(
115                 [in,ref]    policy_handle *handle,
116                 [in] uint32 enum_index,
117                 [in,out]    uint16 key_name_len,
118                 [in,out]    uint16 unknown,
119                 [in]        winreg_EnumKeyNameRequest *in_name,
120                 [out]       winreg_EnumKeyNameResponse *out_name,
121                 [in,out]    winreg_String *class,
122                 [in,out]    winreg_Time *last_changed_time
123         );
124
125         typedef struct {
126                 uint32 max_len;
127                 uint32 offset;
128                 uint32 len;
129                 uint16 buffer[len];
130         } winreg_Uint16buf;
131
132         typedef struct {
133                 uint16 len;
134                 uint16 max_len;
135                 unistr *buf;
136         } winreg_EnumValueName;
137
138         typedef struct {
139                 uint32 max_len;
140                 uint32 offset;
141                 uint32 len;
142                 uint8 buffer[len];
143         } winreg_Uint8buf;
144
145         /******************/
146         /* Function: 0x0a */
147         WERROR winreg_EnumValue(
148                 [in,ref] policy_handle *handle,
149                 [in] uint32 enum_index,
150                 [in,out,ref] winreg_EnumValueName *name,
151                 [in,out] uint32 *type,
152                 [in,out] winreg_Uint8buf *value,
153                 [in,out] uint32 *requested_len,
154                 [in,out] uint32 *returned_len
155         );
156
157         /******************/
158         /* Function: 0x0b */
159         WERROR winreg_FlushKey(
160                 [in,ref] policy_handle *handle
161         );
162
163         /******************/
164         /* Function: 0x0c */
165         WERROR winreg_GetKeySecurity(
166                 [in,ref] policy_handle *handle,
167                 [in] uint32 sec_info,
168                 [in] uint32 *len1,
169                 [in] uint32 empty,
170                 [in] uint32 len2,
171                 [in] uint32 unknown1,
172                 [in] uint32 unknown2,
173                 [out] sec_desc_buf *data
174         );
175
176         /******************/
177         /* Function: 0x0d */
178         WERROR winreg_LoadKey(
179         );
180
181         /******************/
182         /* Function: 0x0e */
183         WERROR winreg_NotifyChangeKeyValue(
184         );
185
186         /******************/
187         /* Function: 0x0f */
188         WERROR winreg_OpenKey(
189                 [in,ref] policy_handle *handle,
190                 [in] winreg_String keyname,
191                 [in] uint32 unknown,
192                 [in] uint32 access_mask,
193                 [out,ref] policy_handle *handle
194         );
195
196         /******************/
197         /* Function: 0x10 */
198         WERROR winreg_QueryInfoKey(
199                 [in,ref] policy_handle *handle,
200                 [in] winreg_String class,
201                 [out] winreg_String class,
202                 [out] uint32 num_subkeys,
203                 [out] uint32 max_subkeylen,
204                 [out] uint32 max_subkeysize,
205                 [out] uint32 num_values,
206                 [out] uint32 max_valnamelen,
207                 [out] uint32 max_valbufsize,
208                 [out] uint32 secdescsize,
209                 [out] winreg_Time last_changed_time
210         );
211
212         /******************/
213         /* Function: 0x11 */
214         WERROR winreg_QueryValue(
215         );
216
217         /******************/
218         /* Function: 0x12 */
219         WERROR winreg_ReplaceKey(
220         );
221
222         /******************/
223         /* Function: 0x13 */
224         WERROR winreg_RestoreKey(
225         );
226
227         /******************/
228         /* Function: 0x14 */
229         WERROR winreg_SaveKey(
230         );
231
232         /******************/
233         /* Function: 0x15 */
234         WERROR winreg_SetKeySecurity(
235                 [in,ref] policy_handle *handle,
236                 [in] uint32 sec_info,
237                 [in] sec_desc_buf *sec_desc
238         );
239
240         typedef struct {
241                 uint32 max_len;
242                 [length_is(buf_max_len)] uint8 *buffer;
243                 uint32 len;
244         } winreg_Value;
245
246         /******************/
247         /* Function: 0x16 */
248         WERROR winreg_SetValue(
249                 [in,ref] policy_handle *handle,
250                 [in] winreg_String name,
251                 [in] uint32 type,
252                 [in] winreg_Value value
253         );
254
255         /******************/
256         /* Function: 0x17 */
257         WERROR winreg_UnLoadKey(
258         );
259
260         /******************/
261         /* Function: 0x18 */
262         WERROR winreg_InitiateSystemShutdown(
263                 [in]    winreg_String hostname,
264                 [in]    winreg_String message,
265                 [in]    uint32 timeout,
266                 [in]    uint16 flags,
267                 [out]   uint16 status
268         );
269
270         /******************/
271         /* Function: 0x19 */
272         WERROR winreg_AbortSystemShutdown(
273                 [in,ref]        uint16 *server
274         );
275
276         /******************/
277         /* Function: 0x1a */
278         WERROR winreg_GetVersion(
279                 [in,ref] policy_handle *handle,
280                 [out]    uint32 version
281         );
282
283         /******************/
284         /* Function: 0x1b */
285         WERROR winreg_OpenHKCC(
286                 [in]      winreg_OpenUnknown *unknown,
287                 [in]      uint32 access_required,
288                 [out,ref] policy_handle *handle
289         );
290
291         /******************/
292         /* Function: 0x1c */
293         WERROR winreg_OpenHKDD(
294                 [in]      winreg_OpenUnknown *unknown,
295                 [in]      uint32 access_required,
296                 [out,ref] policy_handle *handle
297         );
298
299         /******************/
300         /* Function: 0x1d */
301         WERROR winreg_QueryMultipleValues(
302         );
303
304         /******************/
305         /* Function: 0x1e */
306         WERROR winreg_InitiateSystemShutdownEx(
307                 );
308
309         /******************/
310         /* Function: 0x1f */
311         WERROR winreg_SaveKeyEx(
312         );
313
314         /******************/
315         /* Function: 0x20 */
316         WERROR winreg_OpenHKPT(
317                 [in]      winreg_OpenUnknown *unknown,
318                 [in]      uint32 access_required,
319                 [out,ref] policy_handle *handle
320         );
321
322         /******************/
323         /* Function: 0x21 */
324         WERROR winreg_OpenHKPN(
325                 [in]      winreg_OpenUnknown *unknown,
326                 [in]      uint32 access_required,
327                 [out,ref] policy_handle *handle
328         );
329
330         /******************/
331         /* Function: 0x21 */
332         WERROR winreg_QueryMultipleValues2(
333         );
334 }