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