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