d7de7188010ad8fc90981907c993896cd5456ecd
[samba.git] / librpc / gen_ndr / ndr_winreg.c
1 /* parser auto-generated by pidl */
2
3 #include "includes.h"
4 #include "../librpc/gen_ndr/ndr_winreg.h"
5
6 #include "librpc/gen_ndr/ndr_lsa.h"
7 #include "librpc/gen_ndr/ndr_security.h"
8 #include "librpc/gen_ndr/ndr_misc.h"
9 static enum ndr_err_code ndr_push_winreg_AccessMask(struct ndr_push *ndr, int ndr_flags, uint32_t r)
10 {
11         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r));
12         return NDR_ERR_SUCCESS;
13 }
14
15 static enum ndr_err_code ndr_pull_winreg_AccessMask(struct ndr_pull *ndr, int ndr_flags, uint32_t *r)
16 {
17         uint32_t v;
18         NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &v));
19         *r = v;
20         return NDR_ERR_SUCCESS;
21 }
22
23 _PUBLIC_ void ndr_print_winreg_AccessMask(struct ndr_print *ndr, const char *name, uint32_t r)
24 {
25         ndr_print_uint32(ndr, name, r);
26         ndr->depth++;
27         ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "KEY_QUERY_VALUE", KEY_QUERY_VALUE, r);
28         ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "KEY_SET_VALUE", KEY_SET_VALUE, r);
29         ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "KEY_CREATE_SUB_KEY", KEY_CREATE_SUB_KEY, r);
30         ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "KEY_ENUMERATE_SUB_KEYS", KEY_ENUMERATE_SUB_KEYS, r);
31         ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "KEY_NOTIFY", KEY_NOTIFY, r);
32         ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "KEY_CREATE_LINK", KEY_CREATE_LINK, r);
33         ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "KEY_WOW64_64KEY", KEY_WOW64_64KEY, r);
34         ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "KEY_WOW64_32KEY", KEY_WOW64_32KEY, r);
35         ndr->depth--;
36 }
37
38 _PUBLIC_ enum ndr_err_code ndr_push_winreg_String(struct ndr_push *ndr, int ndr_flags, const struct winreg_String *r)
39 {
40         if (ndr_flags & NDR_SCALARS) {
41                 NDR_CHECK(ndr_push_align(ndr, 4));
42                 NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, strlen_m_term(r->name) * 2));
43                 NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, strlen_m_term(r->name) * 2));
44                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->name));
45         }
46         if (ndr_flags & NDR_BUFFERS) {
47                 if (r->name) {
48                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->name, CH_UTF16)));
49                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
50                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->name, CH_UTF16)));
51                         NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->name, ndr_charset_length(r->name, CH_UTF16), sizeof(uint16_t), CH_UTF16));
52                 }
53         }
54         return NDR_ERR_SUCCESS;
55 }
56
57 _PUBLIC_ enum ndr_err_code ndr_pull_winreg_String(struct ndr_pull *ndr, int ndr_flags, struct winreg_String *r)
58 {
59         uint32_t _ptr_name;
60         TALLOC_CTX *_mem_save_name_0;
61         if (ndr_flags & NDR_SCALARS) {
62                 NDR_CHECK(ndr_pull_align(ndr, 4));
63                 NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->name_len));
64                 NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->name_size));
65                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_name));
66                 if (_ptr_name) {
67                         NDR_PULL_ALLOC(ndr, r->name);
68                 } else {
69                         r->name = NULL;
70                 }
71         }
72         if (ndr_flags & NDR_BUFFERS) {
73                 if (r->name) {
74                         _mem_save_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
75                         NDR_PULL_SET_MEM_CTX(ndr, r->name, 0);
76                         NDR_CHECK(ndr_pull_array_size(ndr, &r->name));
77                         NDR_CHECK(ndr_pull_array_length(ndr, &r->name));
78                         if (ndr_get_array_length(ndr, &r->name) > ndr_get_array_size(ndr, &r->name)) {
79                                 return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->name), ndr_get_array_length(ndr, &r->name));
80                         }
81                         NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->name), sizeof(uint16_t)));
82                         NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->name, ndr_get_array_length(ndr, &r->name), sizeof(uint16_t), CH_UTF16));
83                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_name_0, 0);
84                 }
85         }
86         return NDR_ERR_SUCCESS;
87 }
88
89 _PUBLIC_ void ndr_print_winreg_String(struct ndr_print *ndr, const char *name, const struct winreg_String *r)
90 {
91         ndr_print_struct(ndr, name, "winreg_String");
92         ndr->depth++;
93         ndr_print_uint16(ndr, "name_len", (ndr->flags & LIBNDR_PRINT_SET_VALUES)?strlen_m_term(r->name) * 2:r->name_len);
94         ndr_print_uint16(ndr, "name_size", (ndr->flags & LIBNDR_PRINT_SET_VALUES)?strlen_m_term(r->name) * 2:r->name_size);
95         ndr_print_ptr(ndr, "name", r->name);
96         ndr->depth++;
97         if (r->name) {
98                 ndr_print_string(ndr, "name", r->name);
99         }
100         ndr->depth--;
101         ndr->depth--;
102 }
103
104 static enum ndr_err_code ndr_push_KeySecurityData(struct ndr_push *ndr, int ndr_flags, const struct KeySecurityData *r)
105 {
106         if (ndr_flags & NDR_SCALARS) {
107                 NDR_CHECK(ndr_push_align(ndr, 4));
108                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->data));
109                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->size));
110                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->len));
111         }
112         if (ndr_flags & NDR_BUFFERS) {
113                 if (r->data) {
114                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->size));
115                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
116                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->len));
117                         NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->data, r->len));
118                 }
119         }
120         return NDR_ERR_SUCCESS;
121 }
122
123 static enum ndr_err_code ndr_pull_KeySecurityData(struct ndr_pull *ndr, int ndr_flags, struct KeySecurityData *r)
124 {
125         uint32_t _ptr_data;
126         TALLOC_CTX *_mem_save_data_0;
127         if (ndr_flags & NDR_SCALARS) {
128                 NDR_CHECK(ndr_pull_align(ndr, 4));
129                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_data));
130                 if (_ptr_data) {
131                         NDR_PULL_ALLOC(ndr, r->data);
132                 } else {
133                         r->data = NULL;
134                 }
135                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->size));
136                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->len));
137         }
138         if (ndr_flags & NDR_BUFFERS) {
139                 if (r->data) {
140                         _mem_save_data_0 = NDR_PULL_GET_MEM_CTX(ndr);
141                         NDR_PULL_SET_MEM_CTX(ndr, r->data, 0);
142                         NDR_CHECK(ndr_pull_array_size(ndr, &r->data));
143                         NDR_CHECK(ndr_pull_array_length(ndr, &r->data));
144                         if (ndr_get_array_length(ndr, &r->data) > ndr_get_array_size(ndr, &r->data)) {
145                                 return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->data), ndr_get_array_length(ndr, &r->data));
146                         }
147                         NDR_PULL_ALLOC_N(ndr, r->data, ndr_get_array_size(ndr, &r->data));
148                         NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->data, ndr_get_array_length(ndr, &r->data)));
149                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_data_0, 0);
150                 }
151                 if (r->data) {
152                         NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->data, r->size));
153                 }
154                 if (r->data) {
155                         NDR_CHECK(ndr_check_array_length(ndr, (void*)&r->data, r->len));
156                 }
157         }
158         return NDR_ERR_SUCCESS;
159 }
160
161 _PUBLIC_ void ndr_print_KeySecurityData(struct ndr_print *ndr, const char *name, const struct KeySecurityData *r)
162 {
163         ndr_print_struct(ndr, name, "KeySecurityData");
164         ndr->depth++;
165         ndr_print_ptr(ndr, "data", r->data);
166         ndr->depth++;
167         if (r->data) {
168                 ndr_print_array_uint8(ndr, "data", r->data, r->len);
169         }
170         ndr->depth--;
171         ndr_print_uint32(ndr, "size", r->size);
172         ndr_print_uint32(ndr, "len", r->len);
173         ndr->depth--;
174 }
175
176 static enum ndr_err_code ndr_push_winreg_SecBuf(struct ndr_push *ndr, int ndr_flags, const struct winreg_SecBuf *r)
177 {
178         if (ndr_flags & NDR_SCALARS) {
179                 NDR_CHECK(ndr_push_align(ndr, 4));
180                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->length));
181                 NDR_CHECK(ndr_push_KeySecurityData(ndr, NDR_SCALARS, &r->sd));
182                 NDR_CHECK(ndr_push_uint8(ndr, NDR_SCALARS, r->inherit));
183         }
184         if (ndr_flags & NDR_BUFFERS) {
185                 NDR_CHECK(ndr_push_KeySecurityData(ndr, NDR_BUFFERS, &r->sd));
186         }
187         return NDR_ERR_SUCCESS;
188 }
189
190 static enum ndr_err_code ndr_pull_winreg_SecBuf(struct ndr_pull *ndr, int ndr_flags, struct winreg_SecBuf *r)
191 {
192         if (ndr_flags & NDR_SCALARS) {
193                 NDR_CHECK(ndr_pull_align(ndr, 4));
194                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->length));
195                 NDR_CHECK(ndr_pull_KeySecurityData(ndr, NDR_SCALARS, &r->sd));
196                 NDR_CHECK(ndr_pull_uint8(ndr, NDR_SCALARS, &r->inherit));
197         }
198         if (ndr_flags & NDR_BUFFERS) {
199                 NDR_CHECK(ndr_pull_KeySecurityData(ndr, NDR_BUFFERS, &r->sd));
200         }
201         return NDR_ERR_SUCCESS;
202 }
203
204 _PUBLIC_ void ndr_print_winreg_SecBuf(struct ndr_print *ndr, const char *name, const struct winreg_SecBuf *r)
205 {
206         ndr_print_struct(ndr, name, "winreg_SecBuf");
207         ndr->depth++;
208         ndr_print_uint32(ndr, "length", r->length);
209         ndr_print_KeySecurityData(ndr, "sd", &r->sd);
210         ndr_print_uint8(ndr, "inherit", r->inherit);
211         ndr->depth--;
212 }
213
214 static enum ndr_err_code ndr_push_winreg_CreateAction(struct ndr_push *ndr, int ndr_flags, enum winreg_CreateAction r)
215 {
216         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r));
217         return NDR_ERR_SUCCESS;
218 }
219
220 static enum ndr_err_code ndr_pull_winreg_CreateAction(struct ndr_pull *ndr, int ndr_flags, enum winreg_CreateAction *r)
221 {
222         uint32_t v;
223         NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &v));
224         *r = v;
225         return NDR_ERR_SUCCESS;
226 }
227
228 _PUBLIC_ void ndr_print_winreg_CreateAction(struct ndr_print *ndr, const char *name, enum winreg_CreateAction r)
229 {
230         const char *val = NULL;
231
232         switch (r) {
233                 case REG_ACTION_NONE: val = "REG_ACTION_NONE"; break;
234                 case REG_CREATED_NEW_KEY: val = "REG_CREATED_NEW_KEY"; break;
235                 case REG_OPENED_EXISTING_KEY: val = "REG_OPENED_EXISTING_KEY"; break;
236         }
237         ndr_print_enum(ndr, name, "ENUM", val, r);
238 }
239
240 static enum ndr_err_code ndr_push_winreg_StringBuf(struct ndr_push *ndr, int ndr_flags, const struct winreg_StringBuf *r)
241 {
242         if (ndr_flags & NDR_SCALARS) {
243                 NDR_CHECK(ndr_push_align(ndr, 4));
244                 NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, strlen_m_term_null(r->name) * 2));
245                 NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->size));
246                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->name));
247         }
248         if (ndr_flags & NDR_BUFFERS) {
249                 if (r->name) {
250                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->size / 2));
251                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
252                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, strlen_m_term_null(r->name) * 2 / 2));
253                         NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->name, strlen_m_term_null(r->name) * 2 / 2, sizeof(uint16_t), CH_UTF16));
254                 }
255         }
256         return NDR_ERR_SUCCESS;
257 }
258
259 static enum ndr_err_code ndr_pull_winreg_StringBuf(struct ndr_pull *ndr, int ndr_flags, struct winreg_StringBuf *r)
260 {
261         uint32_t _ptr_name;
262         TALLOC_CTX *_mem_save_name_0;
263         if (ndr_flags & NDR_SCALARS) {
264                 NDR_CHECK(ndr_pull_align(ndr, 4));
265                 NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->length));
266                 NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->size));
267                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_name));
268                 if (_ptr_name) {
269                         NDR_PULL_ALLOC(ndr, r->name);
270                 } else {
271                         r->name = NULL;
272                 }
273         }
274         if (ndr_flags & NDR_BUFFERS) {
275                 if (r->name) {
276                         _mem_save_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
277                         NDR_PULL_SET_MEM_CTX(ndr, r->name, 0);
278                         NDR_CHECK(ndr_pull_array_size(ndr, &r->name));
279                         NDR_CHECK(ndr_pull_array_length(ndr, &r->name));
280                         if (ndr_get_array_length(ndr, &r->name) > ndr_get_array_size(ndr, &r->name)) {
281                                 return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->name), ndr_get_array_length(ndr, &r->name));
282                         }
283                         NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->name, ndr_get_array_length(ndr, &r->name), sizeof(uint16_t), CH_UTF16));
284                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_name_0, 0);
285                 }
286                 if (r->name) {
287                         NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->name, r->size / 2));
288                 }
289                 if (r->name) {
290                         NDR_CHECK(ndr_check_array_length(ndr, (void*)&r->name, r->length / 2));
291                 }
292         }
293         return NDR_ERR_SUCCESS;
294 }
295
296 _PUBLIC_ void ndr_print_winreg_StringBuf(struct ndr_print *ndr, const char *name, const struct winreg_StringBuf *r)
297 {
298         ndr_print_struct(ndr, name, "winreg_StringBuf");
299         ndr->depth++;
300         ndr_print_uint16(ndr, "length", (ndr->flags & LIBNDR_PRINT_SET_VALUES)?strlen_m_term_null(r->name) * 2:r->length);
301         ndr_print_uint16(ndr, "size", r->size);
302         ndr_print_ptr(ndr, "name", r->name);
303         ndr->depth++;
304         if (r->name) {
305                 ndr_print_string(ndr, "name", r->name);
306         }
307         ndr->depth--;
308         ndr->depth--;
309 }
310
311 static enum ndr_err_code ndr_push_winreg_ValNameBuf(struct ndr_push *ndr, int ndr_flags, const struct winreg_ValNameBuf *r)
312 {
313         if (ndr_flags & NDR_SCALARS) {
314                 NDR_CHECK(ndr_push_align(ndr, 4));
315                 NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, strlen_m_term(r->name) * 2));
316                 NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->size));
317                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->name));
318         }
319         if (ndr_flags & NDR_BUFFERS) {
320                 if (r->name) {
321                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->size / 2));
322                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
323                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, strlen_m_term(r->name) * 2 / 2));
324                         NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->name, strlen_m_term(r->name) * 2 / 2, sizeof(uint16_t), CH_UTF16));
325                 }
326         }
327         return NDR_ERR_SUCCESS;
328 }
329
330 static enum ndr_err_code ndr_pull_winreg_ValNameBuf(struct ndr_pull *ndr, int ndr_flags, struct winreg_ValNameBuf *r)
331 {
332         uint32_t _ptr_name;
333         TALLOC_CTX *_mem_save_name_0;
334         if (ndr_flags & NDR_SCALARS) {
335                 NDR_CHECK(ndr_pull_align(ndr, 4));
336                 NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->length));
337                 NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->size));
338                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_name));
339                 if (_ptr_name) {
340                         NDR_PULL_ALLOC(ndr, r->name);
341                 } else {
342                         r->name = NULL;
343                 }
344         }
345         if (ndr_flags & NDR_BUFFERS) {
346                 if (r->name) {
347                         _mem_save_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
348                         NDR_PULL_SET_MEM_CTX(ndr, r->name, 0);
349                         NDR_CHECK(ndr_pull_array_size(ndr, &r->name));
350                         NDR_CHECK(ndr_pull_array_length(ndr, &r->name));
351                         if (ndr_get_array_length(ndr, &r->name) > ndr_get_array_size(ndr, &r->name)) {
352                                 return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->name), ndr_get_array_length(ndr, &r->name));
353                         }
354                         NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->name, ndr_get_array_length(ndr, &r->name), sizeof(uint16_t), CH_UTF16));
355                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_name_0, 0);
356                 }
357                 if (r->name) {
358                         NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->name, r->size / 2));
359                 }
360                 if (r->name) {
361                         NDR_CHECK(ndr_check_array_length(ndr, (void*)&r->name, r->length / 2));
362                 }
363         }
364         return NDR_ERR_SUCCESS;
365 }
366
367 _PUBLIC_ void ndr_print_winreg_ValNameBuf(struct ndr_print *ndr, const char *name, const struct winreg_ValNameBuf *r)
368 {
369         ndr_print_struct(ndr, name, "winreg_ValNameBuf");
370         ndr->depth++;
371         ndr_print_uint16(ndr, "length", (ndr->flags & LIBNDR_PRINT_SET_VALUES)?strlen_m_term(r->name) * 2:r->length);
372         ndr_print_uint16(ndr, "size", r->size);
373         ndr_print_ptr(ndr, "name", r->name);
374         ndr->depth++;
375         if (r->name) {
376                 ndr_print_string(ndr, "name", r->name);
377         }
378         ndr->depth--;
379         ndr->depth--;
380 }
381
382 _PUBLIC_ enum ndr_err_code ndr_push_winreg_NotifyChangeType(struct ndr_push *ndr, int ndr_flags, uint32_t r)
383 {
384         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r));
385         return NDR_ERR_SUCCESS;
386 }
387
388 _PUBLIC_ enum ndr_err_code ndr_pull_winreg_NotifyChangeType(struct ndr_pull *ndr, int ndr_flags, uint32_t *r)
389 {
390         uint32_t v;
391         NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &v));
392         *r = v;
393         return NDR_ERR_SUCCESS;
394 }
395
396 _PUBLIC_ void ndr_print_winreg_NotifyChangeType(struct ndr_print *ndr, const char *name, uint32_t r)
397 {
398         ndr_print_uint32(ndr, name, r);
399         ndr->depth++;
400         ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "REG_NOTIFY_CHANGE_NAME", REG_NOTIFY_CHANGE_NAME, r);
401         ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "REG_NOTIFY_CHANGE_ATTRIBUTES", REG_NOTIFY_CHANGE_ATTRIBUTES, r);
402         ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "REG_NOTIFY_CHANGE_LAST_SET", REG_NOTIFY_CHANGE_LAST_SET, r);
403         ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "REG_NOTIFY_CHANGE_SECURITY", REG_NOTIFY_CHANGE_SECURITY, r);
404         ndr->depth--;
405 }
406
407 static enum ndr_err_code ndr_push_KeySecurityAttribute(struct ndr_push *ndr, int ndr_flags, const struct KeySecurityAttribute *r)
408 {
409         if (ndr_flags & NDR_SCALARS) {
410                 NDR_CHECK(ndr_push_align(ndr, 4));
411                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->data_size));
412                 NDR_CHECK(ndr_push_KeySecurityData(ndr, NDR_SCALARS, &r->sec_data));
413                 NDR_CHECK(ndr_push_uint8(ndr, NDR_SCALARS, r->inherit));
414         }
415         if (ndr_flags & NDR_BUFFERS) {
416                 NDR_CHECK(ndr_push_KeySecurityData(ndr, NDR_BUFFERS, &r->sec_data));
417         }
418         return NDR_ERR_SUCCESS;
419 }
420
421 static enum ndr_err_code ndr_pull_KeySecurityAttribute(struct ndr_pull *ndr, int ndr_flags, struct KeySecurityAttribute *r)
422 {
423         if (ndr_flags & NDR_SCALARS) {
424                 NDR_CHECK(ndr_pull_align(ndr, 4));
425                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->data_size));
426                 NDR_CHECK(ndr_pull_KeySecurityData(ndr, NDR_SCALARS, &r->sec_data));
427                 NDR_CHECK(ndr_pull_uint8(ndr, NDR_SCALARS, &r->inherit));
428         }
429         if (ndr_flags & NDR_BUFFERS) {
430                 NDR_CHECK(ndr_pull_KeySecurityData(ndr, NDR_BUFFERS, &r->sec_data));
431         }
432         return NDR_ERR_SUCCESS;
433 }
434
435 _PUBLIC_ void ndr_print_KeySecurityAttribute(struct ndr_print *ndr, const char *name, const struct KeySecurityAttribute *r)
436 {
437         ndr_print_struct(ndr, name, "KeySecurityAttribute");
438         ndr->depth++;
439         ndr_print_uint32(ndr, "data_size", r->data_size);
440         ndr_print_KeySecurityData(ndr, "sec_data", &r->sec_data);
441         ndr_print_uint8(ndr, "inherit", r->inherit);
442         ndr->depth--;
443 }
444
445 static enum ndr_err_code ndr_push_QueryMultipleValue(struct ndr_push *ndr, int ndr_flags, const struct QueryMultipleValue *r)
446 {
447         if (ndr_flags & NDR_SCALARS) {
448                 NDR_CHECK(ndr_push_align(ndr, 4));
449                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->name));
450                 NDR_CHECK(ndr_push_winreg_Type(ndr, NDR_SCALARS, r->type));
451                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->offset));
452                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->length));
453         }
454         if (ndr_flags & NDR_BUFFERS) {
455                 if (r->name) {
456                         NDR_CHECK(ndr_push_winreg_String(ndr, NDR_SCALARS|NDR_BUFFERS, r->name));
457                 }
458         }
459         return NDR_ERR_SUCCESS;
460 }
461
462 static enum ndr_err_code ndr_pull_QueryMultipleValue(struct ndr_pull *ndr, int ndr_flags, struct QueryMultipleValue *r)
463 {
464         uint32_t _ptr_name;
465         TALLOC_CTX *_mem_save_name_0;
466         if (ndr_flags & NDR_SCALARS) {
467                 NDR_CHECK(ndr_pull_align(ndr, 4));
468                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_name));
469                 if (_ptr_name) {
470                         NDR_PULL_ALLOC(ndr, r->name);
471                 } else {
472                         r->name = NULL;
473                 }
474                 NDR_CHECK(ndr_pull_winreg_Type(ndr, NDR_SCALARS, &r->type));
475                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->offset));
476                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->length));
477         }
478         if (ndr_flags & NDR_BUFFERS) {
479                 if (r->name) {
480                         _mem_save_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
481                         NDR_PULL_SET_MEM_CTX(ndr, r->name, 0);
482                         NDR_CHECK(ndr_pull_winreg_String(ndr, NDR_SCALARS|NDR_BUFFERS, r->name));
483                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_name_0, 0);
484                 }
485         }
486         return NDR_ERR_SUCCESS;
487 }
488
489 _PUBLIC_ void ndr_print_QueryMultipleValue(struct ndr_print *ndr, const char *name, const struct QueryMultipleValue *r)
490 {
491         ndr_print_struct(ndr, name, "QueryMultipleValue");
492         ndr->depth++;
493         ndr_print_ptr(ndr, "name", r->name);
494         ndr->depth++;
495         if (r->name) {
496                 ndr_print_winreg_String(ndr, "name", r->name);
497         }
498         ndr->depth--;
499         ndr_print_winreg_Type(ndr, "type", r->type);
500         ndr_print_uint32(ndr, "offset", r->offset);
501         ndr_print_uint32(ndr, "length", r->length);
502         ndr->depth--;
503 }
504
505 static enum ndr_err_code ndr_push_winreg_OpenHKCR(struct ndr_push *ndr, int flags, const struct winreg_OpenHKCR *r)
506 {
507         if (flags & NDR_IN) {
508                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.system_name));
509                 if (r->in.system_name) {
510                         NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, *r->in.system_name));
511                 }
512                 NDR_CHECK(ndr_push_winreg_AccessMask(ndr, NDR_SCALARS, r->in.access_mask));
513         }
514         if (flags & NDR_OUT) {
515                 if (r->out.handle == NULL) {
516                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
517                 }
518                 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->out.handle));
519                 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
520         }
521         return NDR_ERR_SUCCESS;
522 }
523
524 static enum ndr_err_code ndr_pull_winreg_OpenHKCR(struct ndr_pull *ndr, int flags, struct winreg_OpenHKCR *r)
525 {
526         uint32_t _ptr_system_name;
527         TALLOC_CTX *_mem_save_system_name_0;
528         TALLOC_CTX *_mem_save_handle_0;
529         if (flags & NDR_IN) {
530                 ZERO_STRUCT(r->out);
531
532                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_system_name));
533                 if (_ptr_system_name) {
534                         NDR_PULL_ALLOC(ndr, r->in.system_name);
535                 } else {
536                         r->in.system_name = NULL;
537                 }
538                 if (r->in.system_name) {
539                         _mem_save_system_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
540                         NDR_PULL_SET_MEM_CTX(ndr, r->in.system_name, 0);
541                         NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, r->in.system_name));
542                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_system_name_0, 0);
543                 }
544                 NDR_CHECK(ndr_pull_winreg_AccessMask(ndr, NDR_SCALARS, &r->in.access_mask));
545                 NDR_PULL_ALLOC(ndr, r->out.handle);
546                 ZERO_STRUCTP(r->out.handle);
547         }
548         if (flags & NDR_OUT) {
549                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
550                         NDR_PULL_ALLOC(ndr, r->out.handle);
551                 }
552                 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
553                 NDR_PULL_SET_MEM_CTX(ndr, r->out.handle, LIBNDR_FLAG_REF_ALLOC);
554                 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->out.handle));
555                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
556                 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
557         }
558         return NDR_ERR_SUCCESS;
559 }
560
561 _PUBLIC_ void ndr_print_winreg_OpenHKCR(struct ndr_print *ndr, const char *name, int flags, const struct winreg_OpenHKCR *r)
562 {
563         ndr_print_struct(ndr, name, "winreg_OpenHKCR");
564         ndr->depth++;
565         if (flags & NDR_SET_VALUES) {
566                 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
567         }
568         if (flags & NDR_IN) {
569                 ndr_print_struct(ndr, "in", "winreg_OpenHKCR");
570                 ndr->depth++;
571                 ndr_print_ptr(ndr, "system_name", r->in.system_name);
572                 ndr->depth++;
573                 if (r->in.system_name) {
574                         ndr_print_uint16(ndr, "system_name", *r->in.system_name);
575                 }
576                 ndr->depth--;
577                 ndr_print_winreg_AccessMask(ndr, "access_mask", r->in.access_mask);
578                 ndr->depth--;
579         }
580         if (flags & NDR_OUT) {
581                 ndr_print_struct(ndr, "out", "winreg_OpenHKCR");
582                 ndr->depth++;
583                 ndr_print_ptr(ndr, "handle", r->out.handle);
584                 ndr->depth++;
585                 ndr_print_policy_handle(ndr, "handle", r->out.handle);
586                 ndr->depth--;
587                 ndr_print_WERROR(ndr, "result", r->out.result);
588                 ndr->depth--;
589         }
590         ndr->depth--;
591 }
592
593 static enum ndr_err_code ndr_push_winreg_OpenHKCU(struct ndr_push *ndr, int flags, const struct winreg_OpenHKCU *r)
594 {
595         if (flags & NDR_IN) {
596                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.system_name));
597                 if (r->in.system_name) {
598                         NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, *r->in.system_name));
599                 }
600                 NDR_CHECK(ndr_push_winreg_AccessMask(ndr, NDR_SCALARS, r->in.access_mask));
601         }
602         if (flags & NDR_OUT) {
603                 if (r->out.handle == NULL) {
604                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
605                 }
606                 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->out.handle));
607                 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
608         }
609         return NDR_ERR_SUCCESS;
610 }
611
612 static enum ndr_err_code ndr_pull_winreg_OpenHKCU(struct ndr_pull *ndr, int flags, struct winreg_OpenHKCU *r)
613 {
614         uint32_t _ptr_system_name;
615         TALLOC_CTX *_mem_save_system_name_0;
616         TALLOC_CTX *_mem_save_handle_0;
617         if (flags & NDR_IN) {
618                 ZERO_STRUCT(r->out);
619
620                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_system_name));
621                 if (_ptr_system_name) {
622                         NDR_PULL_ALLOC(ndr, r->in.system_name);
623                 } else {
624                         r->in.system_name = NULL;
625                 }
626                 if (r->in.system_name) {
627                         _mem_save_system_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
628                         NDR_PULL_SET_MEM_CTX(ndr, r->in.system_name, 0);
629                         NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, r->in.system_name));
630                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_system_name_0, 0);
631                 }
632                 NDR_CHECK(ndr_pull_winreg_AccessMask(ndr, NDR_SCALARS, &r->in.access_mask));
633                 NDR_PULL_ALLOC(ndr, r->out.handle);
634                 ZERO_STRUCTP(r->out.handle);
635         }
636         if (flags & NDR_OUT) {
637                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
638                         NDR_PULL_ALLOC(ndr, r->out.handle);
639                 }
640                 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
641                 NDR_PULL_SET_MEM_CTX(ndr, r->out.handle, LIBNDR_FLAG_REF_ALLOC);
642                 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->out.handle));
643                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
644                 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
645         }
646         return NDR_ERR_SUCCESS;
647 }
648
649 _PUBLIC_ void ndr_print_winreg_OpenHKCU(struct ndr_print *ndr, const char *name, int flags, const struct winreg_OpenHKCU *r)
650 {
651         ndr_print_struct(ndr, name, "winreg_OpenHKCU");
652         ndr->depth++;
653         if (flags & NDR_SET_VALUES) {
654                 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
655         }
656         if (flags & NDR_IN) {
657                 ndr_print_struct(ndr, "in", "winreg_OpenHKCU");
658                 ndr->depth++;
659                 ndr_print_ptr(ndr, "system_name", r->in.system_name);
660                 ndr->depth++;
661                 if (r->in.system_name) {
662                         ndr_print_uint16(ndr, "system_name", *r->in.system_name);
663                 }
664                 ndr->depth--;
665                 ndr_print_winreg_AccessMask(ndr, "access_mask", r->in.access_mask);
666                 ndr->depth--;
667         }
668         if (flags & NDR_OUT) {
669                 ndr_print_struct(ndr, "out", "winreg_OpenHKCU");
670                 ndr->depth++;
671                 ndr_print_ptr(ndr, "handle", r->out.handle);
672                 ndr->depth++;
673                 ndr_print_policy_handle(ndr, "handle", r->out.handle);
674                 ndr->depth--;
675                 ndr_print_WERROR(ndr, "result", r->out.result);
676                 ndr->depth--;
677         }
678         ndr->depth--;
679 }
680
681 _PUBLIC_ enum ndr_err_code ndr_push_winreg_OpenHKLM(struct ndr_push *ndr, int flags, const struct winreg_OpenHKLM *r)
682 {
683         if (flags & NDR_IN) {
684                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.system_name));
685                 if (r->in.system_name) {
686                         NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, *r->in.system_name));
687                 }
688                 NDR_CHECK(ndr_push_winreg_AccessMask(ndr, NDR_SCALARS, r->in.access_mask));
689         }
690         if (flags & NDR_OUT) {
691                 if (r->out.handle == NULL) {
692                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
693                 }
694                 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->out.handle));
695                 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
696         }
697         return NDR_ERR_SUCCESS;
698 }
699
700 _PUBLIC_ enum ndr_err_code ndr_pull_winreg_OpenHKLM(struct ndr_pull *ndr, int flags, struct winreg_OpenHKLM *r)
701 {
702         uint32_t _ptr_system_name;
703         TALLOC_CTX *_mem_save_system_name_0;
704         TALLOC_CTX *_mem_save_handle_0;
705         if (flags & NDR_IN) {
706                 ZERO_STRUCT(r->out);
707
708                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_system_name));
709                 if (_ptr_system_name) {
710                         NDR_PULL_ALLOC(ndr, r->in.system_name);
711                 } else {
712                         r->in.system_name = NULL;
713                 }
714                 if (r->in.system_name) {
715                         _mem_save_system_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
716                         NDR_PULL_SET_MEM_CTX(ndr, r->in.system_name, 0);
717                         NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, r->in.system_name));
718                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_system_name_0, 0);
719                 }
720                 NDR_CHECK(ndr_pull_winreg_AccessMask(ndr, NDR_SCALARS, &r->in.access_mask));
721                 NDR_PULL_ALLOC(ndr, r->out.handle);
722                 ZERO_STRUCTP(r->out.handle);
723         }
724         if (flags & NDR_OUT) {
725                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
726                         NDR_PULL_ALLOC(ndr, r->out.handle);
727                 }
728                 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
729                 NDR_PULL_SET_MEM_CTX(ndr, r->out.handle, LIBNDR_FLAG_REF_ALLOC);
730                 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->out.handle));
731                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
732                 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
733         }
734         return NDR_ERR_SUCCESS;
735 }
736
737 _PUBLIC_ void ndr_print_winreg_OpenHKLM(struct ndr_print *ndr, const char *name, int flags, const struct winreg_OpenHKLM *r)
738 {
739         ndr_print_struct(ndr, name, "winreg_OpenHKLM");
740         ndr->depth++;
741         if (flags & NDR_SET_VALUES) {
742                 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
743         }
744         if (flags & NDR_IN) {
745                 ndr_print_struct(ndr, "in", "winreg_OpenHKLM");
746                 ndr->depth++;
747                 ndr_print_ptr(ndr, "system_name", r->in.system_name);
748                 ndr->depth++;
749                 if (r->in.system_name) {
750                         ndr_print_uint16(ndr, "system_name", *r->in.system_name);
751                 }
752                 ndr->depth--;
753                 ndr_print_winreg_AccessMask(ndr, "access_mask", r->in.access_mask);
754                 ndr->depth--;
755         }
756         if (flags & NDR_OUT) {
757                 ndr_print_struct(ndr, "out", "winreg_OpenHKLM");
758                 ndr->depth++;
759                 ndr_print_ptr(ndr, "handle", r->out.handle);
760                 ndr->depth++;
761                 ndr_print_policy_handle(ndr, "handle", r->out.handle);
762                 ndr->depth--;
763                 ndr_print_WERROR(ndr, "result", r->out.result);
764                 ndr->depth--;
765         }
766         ndr->depth--;
767 }
768
769 static enum ndr_err_code ndr_push_winreg_OpenHKPD(struct ndr_push *ndr, int flags, const struct winreg_OpenHKPD *r)
770 {
771         if (flags & NDR_IN) {
772                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.system_name));
773                 if (r->in.system_name) {
774                         NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, *r->in.system_name));
775                 }
776                 NDR_CHECK(ndr_push_winreg_AccessMask(ndr, NDR_SCALARS, r->in.access_mask));
777         }
778         if (flags & NDR_OUT) {
779                 if (r->out.handle == NULL) {
780                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
781                 }
782                 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->out.handle));
783                 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
784         }
785         return NDR_ERR_SUCCESS;
786 }
787
788 static enum ndr_err_code ndr_pull_winreg_OpenHKPD(struct ndr_pull *ndr, int flags, struct winreg_OpenHKPD *r)
789 {
790         uint32_t _ptr_system_name;
791         TALLOC_CTX *_mem_save_system_name_0;
792         TALLOC_CTX *_mem_save_handle_0;
793         if (flags & NDR_IN) {
794                 ZERO_STRUCT(r->out);
795
796                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_system_name));
797                 if (_ptr_system_name) {
798                         NDR_PULL_ALLOC(ndr, r->in.system_name);
799                 } else {
800                         r->in.system_name = NULL;
801                 }
802                 if (r->in.system_name) {
803                         _mem_save_system_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
804                         NDR_PULL_SET_MEM_CTX(ndr, r->in.system_name, 0);
805                         NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, r->in.system_name));
806                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_system_name_0, 0);
807                 }
808                 NDR_CHECK(ndr_pull_winreg_AccessMask(ndr, NDR_SCALARS, &r->in.access_mask));
809                 NDR_PULL_ALLOC(ndr, r->out.handle);
810                 ZERO_STRUCTP(r->out.handle);
811         }
812         if (flags & NDR_OUT) {
813                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
814                         NDR_PULL_ALLOC(ndr, r->out.handle);
815                 }
816                 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
817                 NDR_PULL_SET_MEM_CTX(ndr, r->out.handle, LIBNDR_FLAG_REF_ALLOC);
818                 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->out.handle));
819                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
820                 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
821         }
822         return NDR_ERR_SUCCESS;
823 }
824
825 _PUBLIC_ void ndr_print_winreg_OpenHKPD(struct ndr_print *ndr, const char *name, int flags, const struct winreg_OpenHKPD *r)
826 {
827         ndr_print_struct(ndr, name, "winreg_OpenHKPD");
828         ndr->depth++;
829         if (flags & NDR_SET_VALUES) {
830                 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
831         }
832         if (flags & NDR_IN) {
833                 ndr_print_struct(ndr, "in", "winreg_OpenHKPD");
834                 ndr->depth++;
835                 ndr_print_ptr(ndr, "system_name", r->in.system_name);
836                 ndr->depth++;
837                 if (r->in.system_name) {
838                         ndr_print_uint16(ndr, "system_name", *r->in.system_name);
839                 }
840                 ndr->depth--;
841                 ndr_print_winreg_AccessMask(ndr, "access_mask", r->in.access_mask);
842                 ndr->depth--;
843         }
844         if (flags & NDR_OUT) {
845                 ndr_print_struct(ndr, "out", "winreg_OpenHKPD");
846                 ndr->depth++;
847                 ndr_print_ptr(ndr, "handle", r->out.handle);
848                 ndr->depth++;
849                 ndr_print_policy_handle(ndr, "handle", r->out.handle);
850                 ndr->depth--;
851                 ndr_print_WERROR(ndr, "result", r->out.result);
852                 ndr->depth--;
853         }
854         ndr->depth--;
855 }
856
857 static enum ndr_err_code ndr_push_winreg_OpenHKU(struct ndr_push *ndr, int flags, const struct winreg_OpenHKU *r)
858 {
859         if (flags & NDR_IN) {
860                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.system_name));
861                 if (r->in.system_name) {
862                         NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, *r->in.system_name));
863                 }
864                 NDR_CHECK(ndr_push_winreg_AccessMask(ndr, NDR_SCALARS, r->in.access_mask));
865         }
866         if (flags & NDR_OUT) {
867                 if (r->out.handle == NULL) {
868                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
869                 }
870                 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->out.handle));
871                 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
872         }
873         return NDR_ERR_SUCCESS;
874 }
875
876 static enum ndr_err_code ndr_pull_winreg_OpenHKU(struct ndr_pull *ndr, int flags, struct winreg_OpenHKU *r)
877 {
878         uint32_t _ptr_system_name;
879         TALLOC_CTX *_mem_save_system_name_0;
880         TALLOC_CTX *_mem_save_handle_0;
881         if (flags & NDR_IN) {
882                 ZERO_STRUCT(r->out);
883
884                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_system_name));
885                 if (_ptr_system_name) {
886                         NDR_PULL_ALLOC(ndr, r->in.system_name);
887                 } else {
888                         r->in.system_name = NULL;
889                 }
890                 if (r->in.system_name) {
891                         _mem_save_system_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
892                         NDR_PULL_SET_MEM_CTX(ndr, r->in.system_name, 0);
893                         NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, r->in.system_name));
894                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_system_name_0, 0);
895                 }
896                 NDR_CHECK(ndr_pull_winreg_AccessMask(ndr, NDR_SCALARS, &r->in.access_mask));
897                 NDR_PULL_ALLOC(ndr, r->out.handle);
898                 ZERO_STRUCTP(r->out.handle);
899         }
900         if (flags & NDR_OUT) {
901                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
902                         NDR_PULL_ALLOC(ndr, r->out.handle);
903                 }
904                 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
905                 NDR_PULL_SET_MEM_CTX(ndr, r->out.handle, LIBNDR_FLAG_REF_ALLOC);
906                 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->out.handle));
907                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
908                 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
909         }
910         return NDR_ERR_SUCCESS;
911 }
912
913 _PUBLIC_ void ndr_print_winreg_OpenHKU(struct ndr_print *ndr, const char *name, int flags, const struct winreg_OpenHKU *r)
914 {
915         ndr_print_struct(ndr, name, "winreg_OpenHKU");
916         ndr->depth++;
917         if (flags & NDR_SET_VALUES) {
918                 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
919         }
920         if (flags & NDR_IN) {
921                 ndr_print_struct(ndr, "in", "winreg_OpenHKU");
922                 ndr->depth++;
923                 ndr_print_ptr(ndr, "system_name", r->in.system_name);
924                 ndr->depth++;
925                 if (r->in.system_name) {
926                         ndr_print_uint16(ndr, "system_name", *r->in.system_name);
927                 }
928                 ndr->depth--;
929                 ndr_print_winreg_AccessMask(ndr, "access_mask", r->in.access_mask);
930                 ndr->depth--;
931         }
932         if (flags & NDR_OUT) {
933                 ndr_print_struct(ndr, "out", "winreg_OpenHKU");
934                 ndr->depth++;
935                 ndr_print_ptr(ndr, "handle", r->out.handle);
936                 ndr->depth++;
937                 ndr_print_policy_handle(ndr, "handle", r->out.handle);
938                 ndr->depth--;
939                 ndr_print_WERROR(ndr, "result", r->out.result);
940                 ndr->depth--;
941         }
942         ndr->depth--;
943 }
944
945 _PUBLIC_ enum ndr_err_code ndr_push_winreg_CloseKey(struct ndr_push *ndr, int flags, const struct winreg_CloseKey *r)
946 {
947         if (flags & NDR_IN) {
948                 if (r->in.handle == NULL) {
949                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
950                 }
951                 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
952         }
953         if (flags & NDR_OUT) {
954                 if (r->out.handle == NULL) {
955                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
956                 }
957                 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->out.handle));
958                 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
959         }
960         return NDR_ERR_SUCCESS;
961 }
962
963 _PUBLIC_ enum ndr_err_code ndr_pull_winreg_CloseKey(struct ndr_pull *ndr, int flags, struct winreg_CloseKey *r)
964 {
965         TALLOC_CTX *_mem_save_handle_0;
966         if (flags & NDR_IN) {
967                 ZERO_STRUCT(r->out);
968
969                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
970                         NDR_PULL_ALLOC(ndr, r->in.handle);
971                 }
972                 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
973                 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
974                 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
975                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
976                 NDR_PULL_ALLOC(ndr, r->out.handle);
977                 *r->out.handle = *r->in.handle;
978         }
979         if (flags & NDR_OUT) {
980                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
981                         NDR_PULL_ALLOC(ndr, r->out.handle);
982                 }
983                 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
984                 NDR_PULL_SET_MEM_CTX(ndr, r->out.handle, LIBNDR_FLAG_REF_ALLOC);
985                 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->out.handle));
986                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
987                 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
988         }
989         return NDR_ERR_SUCCESS;
990 }
991
992 _PUBLIC_ void ndr_print_winreg_CloseKey(struct ndr_print *ndr, const char *name, int flags, const struct winreg_CloseKey *r)
993 {
994         ndr_print_struct(ndr, name, "winreg_CloseKey");
995         ndr->depth++;
996         if (flags & NDR_SET_VALUES) {
997                 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
998         }
999         if (flags & NDR_IN) {
1000                 ndr_print_struct(ndr, "in", "winreg_CloseKey");
1001                 ndr->depth++;
1002                 ndr_print_ptr(ndr, "handle", r->in.handle);
1003                 ndr->depth++;
1004                 ndr_print_policy_handle(ndr, "handle", r->in.handle);
1005                 ndr->depth--;
1006                 ndr->depth--;
1007         }
1008         if (flags & NDR_OUT) {
1009                 ndr_print_struct(ndr, "out", "winreg_CloseKey");
1010                 ndr->depth++;
1011                 ndr_print_ptr(ndr, "handle", r->out.handle);
1012                 ndr->depth++;
1013                 ndr_print_policy_handle(ndr, "handle", r->out.handle);
1014                 ndr->depth--;
1015                 ndr_print_WERROR(ndr, "result", r->out.result);
1016                 ndr->depth--;
1017         }
1018         ndr->depth--;
1019 }
1020
1021 _PUBLIC_ enum ndr_err_code ndr_push_winreg_CreateKey(struct ndr_push *ndr, int flags, const struct winreg_CreateKey *r)
1022 {
1023         if (flags & NDR_IN) {
1024                 if (r->in.handle == NULL) {
1025                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
1026                 }
1027                 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
1028                 NDR_CHECK(ndr_push_winreg_String(ndr, NDR_SCALARS|NDR_BUFFERS, &r->in.name));
1029                 NDR_CHECK(ndr_push_winreg_String(ndr, NDR_SCALARS|NDR_BUFFERS, &r->in.keyclass));
1030                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.options));
1031                 NDR_CHECK(ndr_push_winreg_AccessMask(ndr, NDR_SCALARS, r->in.access_mask));
1032                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.secdesc));
1033                 if (r->in.secdesc) {
1034                         NDR_CHECK(ndr_push_winreg_SecBuf(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.secdesc));
1035                 }
1036                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.action_taken));
1037                 if (r->in.action_taken) {
1038                         NDR_CHECK(ndr_push_winreg_CreateAction(ndr, NDR_SCALARS, *r->in.action_taken));
1039                 }
1040         }
1041         if (flags & NDR_OUT) {
1042                 if (r->out.new_handle == NULL) {
1043                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
1044                 }
1045                 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->out.new_handle));
1046                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->out.action_taken));
1047                 if (r->out.action_taken) {
1048                         NDR_CHECK(ndr_push_winreg_CreateAction(ndr, NDR_SCALARS, *r->out.action_taken));
1049                 }
1050                 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
1051         }
1052         return NDR_ERR_SUCCESS;
1053 }
1054
1055 _PUBLIC_ enum ndr_err_code ndr_pull_winreg_CreateKey(struct ndr_pull *ndr, int flags, struct winreg_CreateKey *r)
1056 {
1057         uint32_t _ptr_secdesc;
1058         uint32_t _ptr_action_taken;
1059         TALLOC_CTX *_mem_save_handle_0;
1060         TALLOC_CTX *_mem_save_secdesc_0;
1061         TALLOC_CTX *_mem_save_new_handle_0;
1062         TALLOC_CTX *_mem_save_action_taken_0;
1063         if (flags & NDR_IN) {
1064                 ZERO_STRUCT(r->out);
1065
1066                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
1067                         NDR_PULL_ALLOC(ndr, r->in.handle);
1068                 }
1069                 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
1070                 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
1071                 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
1072                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
1073                 NDR_CHECK(ndr_pull_winreg_String(ndr, NDR_SCALARS|NDR_BUFFERS, &r->in.name));
1074                 NDR_CHECK(ndr_pull_winreg_String(ndr, NDR_SCALARS|NDR_BUFFERS, &r->in.keyclass));
1075                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.options));
1076                 NDR_CHECK(ndr_pull_winreg_AccessMask(ndr, NDR_SCALARS, &r->in.access_mask));
1077                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_secdesc));
1078                 if (_ptr_secdesc) {
1079                         NDR_PULL_ALLOC(ndr, r->in.secdesc);
1080                 } else {
1081                         r->in.secdesc = NULL;
1082                 }
1083                 if (r->in.secdesc) {
1084                         _mem_save_secdesc_0 = NDR_PULL_GET_MEM_CTX(ndr);
1085                         NDR_PULL_SET_MEM_CTX(ndr, r->in.secdesc, 0);
1086                         NDR_CHECK(ndr_pull_winreg_SecBuf(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.secdesc));
1087                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_secdesc_0, 0);
1088                 }
1089                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_action_taken));
1090                 if (_ptr_action_taken) {
1091                         NDR_PULL_ALLOC(ndr, r->in.action_taken);
1092                 } else {
1093                         r->in.action_taken = NULL;
1094                 }
1095                 if (r->in.action_taken) {
1096                         _mem_save_action_taken_0 = NDR_PULL_GET_MEM_CTX(ndr);
1097                         NDR_PULL_SET_MEM_CTX(ndr, r->in.action_taken, 0);
1098                         NDR_CHECK(ndr_pull_winreg_CreateAction(ndr, NDR_SCALARS, r->in.action_taken));
1099                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_action_taken_0, 0);
1100                 }
1101                 NDR_PULL_ALLOC(ndr, r->out.new_handle);
1102                 ZERO_STRUCTP(r->out.new_handle);
1103         }
1104         if (flags & NDR_OUT) {
1105                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
1106                         NDR_PULL_ALLOC(ndr, r->out.new_handle);
1107                 }
1108                 _mem_save_new_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
1109                 NDR_PULL_SET_MEM_CTX(ndr, r->out.new_handle, LIBNDR_FLAG_REF_ALLOC);
1110                 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->out.new_handle));
1111                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_new_handle_0, LIBNDR_FLAG_REF_ALLOC);
1112                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_action_taken));
1113                 if (_ptr_action_taken) {
1114                         NDR_PULL_ALLOC(ndr, r->out.action_taken);
1115                 } else {
1116                         r->out.action_taken = NULL;
1117                 }
1118                 if (r->out.action_taken) {
1119                         _mem_save_action_taken_0 = NDR_PULL_GET_MEM_CTX(ndr);
1120                         NDR_PULL_SET_MEM_CTX(ndr, r->out.action_taken, 0);
1121                         NDR_CHECK(ndr_pull_winreg_CreateAction(ndr, NDR_SCALARS, r->out.action_taken));
1122                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_action_taken_0, 0);
1123                 }
1124                 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
1125         }
1126         return NDR_ERR_SUCCESS;
1127 }
1128
1129 _PUBLIC_ void ndr_print_winreg_CreateKey(struct ndr_print *ndr, const char *name, int flags, const struct winreg_CreateKey *r)
1130 {
1131         ndr_print_struct(ndr, name, "winreg_CreateKey");
1132         ndr->depth++;
1133         if (flags & NDR_SET_VALUES) {
1134                 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
1135         }
1136         if (flags & NDR_IN) {
1137                 ndr_print_struct(ndr, "in", "winreg_CreateKey");
1138                 ndr->depth++;
1139                 ndr_print_ptr(ndr, "handle", r->in.handle);
1140                 ndr->depth++;
1141                 ndr_print_policy_handle(ndr, "handle", r->in.handle);
1142                 ndr->depth--;
1143                 ndr_print_winreg_String(ndr, "name", &r->in.name);
1144                 ndr_print_winreg_String(ndr, "keyclass", &r->in.keyclass);
1145                 ndr_print_uint32(ndr, "options", r->in.options);
1146                 ndr_print_winreg_AccessMask(ndr, "access_mask", r->in.access_mask);
1147                 ndr_print_ptr(ndr, "secdesc", r->in.secdesc);
1148                 ndr->depth++;
1149                 if (r->in.secdesc) {
1150                         ndr_print_winreg_SecBuf(ndr, "secdesc", r->in.secdesc);
1151                 }
1152                 ndr->depth--;
1153                 ndr_print_ptr(ndr, "action_taken", r->in.action_taken);
1154                 ndr->depth++;
1155                 if (r->in.action_taken) {
1156                         ndr_print_winreg_CreateAction(ndr, "action_taken", *r->in.action_taken);
1157                 }
1158                 ndr->depth--;
1159                 ndr->depth--;
1160         }
1161         if (flags & NDR_OUT) {
1162                 ndr_print_struct(ndr, "out", "winreg_CreateKey");
1163                 ndr->depth++;
1164                 ndr_print_ptr(ndr, "new_handle", r->out.new_handle);
1165                 ndr->depth++;
1166                 ndr_print_policy_handle(ndr, "new_handle", r->out.new_handle);
1167                 ndr->depth--;
1168                 ndr_print_ptr(ndr, "action_taken", r->out.action_taken);
1169                 ndr->depth++;
1170                 if (r->out.action_taken) {
1171                         ndr_print_winreg_CreateAction(ndr, "action_taken", *r->out.action_taken);
1172                 }
1173                 ndr->depth--;
1174                 ndr_print_WERROR(ndr, "result", r->out.result);
1175                 ndr->depth--;
1176         }
1177         ndr->depth--;
1178 }
1179
1180 _PUBLIC_ enum ndr_err_code ndr_push_winreg_DeleteKey(struct ndr_push *ndr, int flags, const struct winreg_DeleteKey *r)
1181 {
1182         if (flags & NDR_IN) {
1183                 if (r->in.handle == NULL) {
1184                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
1185                 }
1186                 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
1187                 NDR_CHECK(ndr_push_winreg_String(ndr, NDR_SCALARS|NDR_BUFFERS, &r->in.key));
1188         }
1189         if (flags & NDR_OUT) {
1190                 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
1191         }
1192         return NDR_ERR_SUCCESS;
1193 }
1194
1195 _PUBLIC_ enum ndr_err_code ndr_pull_winreg_DeleteKey(struct ndr_pull *ndr, int flags, struct winreg_DeleteKey *r)
1196 {
1197         TALLOC_CTX *_mem_save_handle_0;
1198         if (flags & NDR_IN) {
1199                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
1200                         NDR_PULL_ALLOC(ndr, r->in.handle);
1201                 }
1202                 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
1203                 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
1204                 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
1205                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
1206                 NDR_CHECK(ndr_pull_winreg_String(ndr, NDR_SCALARS|NDR_BUFFERS, &r->in.key));
1207         }
1208         if (flags & NDR_OUT) {
1209                 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
1210         }
1211         return NDR_ERR_SUCCESS;
1212 }
1213
1214 _PUBLIC_ void ndr_print_winreg_DeleteKey(struct ndr_print *ndr, const char *name, int flags, const struct winreg_DeleteKey *r)
1215 {
1216         ndr_print_struct(ndr, name, "winreg_DeleteKey");
1217         ndr->depth++;
1218         if (flags & NDR_SET_VALUES) {
1219                 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
1220         }
1221         if (flags & NDR_IN) {
1222                 ndr_print_struct(ndr, "in", "winreg_DeleteKey");
1223                 ndr->depth++;
1224                 ndr_print_ptr(ndr, "handle", r->in.handle);
1225                 ndr->depth++;
1226                 ndr_print_policy_handle(ndr, "handle", r->in.handle);
1227                 ndr->depth--;
1228                 ndr_print_winreg_String(ndr, "key", &r->in.key);
1229                 ndr->depth--;
1230         }
1231         if (flags & NDR_OUT) {
1232                 ndr_print_struct(ndr, "out", "winreg_DeleteKey");
1233                 ndr->depth++;
1234                 ndr_print_WERROR(ndr, "result", r->out.result);
1235                 ndr->depth--;
1236         }
1237         ndr->depth--;
1238 }
1239
1240 static enum ndr_err_code ndr_push_winreg_DeleteValue(struct ndr_push *ndr, int flags, const struct winreg_DeleteValue *r)
1241 {
1242         if (flags & NDR_IN) {
1243                 if (r->in.handle == NULL) {
1244                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
1245                 }
1246                 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
1247                 NDR_CHECK(ndr_push_winreg_String(ndr, NDR_SCALARS|NDR_BUFFERS, &r->in.value));
1248         }
1249         if (flags & NDR_OUT) {
1250                 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
1251         }
1252         return NDR_ERR_SUCCESS;
1253 }
1254
1255 static enum ndr_err_code ndr_pull_winreg_DeleteValue(struct ndr_pull *ndr, int flags, struct winreg_DeleteValue *r)
1256 {
1257         TALLOC_CTX *_mem_save_handle_0;
1258         if (flags & NDR_IN) {
1259                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
1260                         NDR_PULL_ALLOC(ndr, r->in.handle);
1261                 }
1262                 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
1263                 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
1264                 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
1265                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
1266                 NDR_CHECK(ndr_pull_winreg_String(ndr, NDR_SCALARS|NDR_BUFFERS, &r->in.value));
1267         }
1268         if (flags & NDR_OUT) {
1269                 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
1270         }
1271         return NDR_ERR_SUCCESS;
1272 }
1273
1274 _PUBLIC_ void ndr_print_winreg_DeleteValue(struct ndr_print *ndr, const char *name, int flags, const struct winreg_DeleteValue *r)
1275 {
1276         ndr_print_struct(ndr, name, "winreg_DeleteValue");
1277         ndr->depth++;
1278         if (flags & NDR_SET_VALUES) {
1279                 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
1280         }
1281         if (flags & NDR_IN) {
1282                 ndr_print_struct(ndr, "in", "winreg_DeleteValue");
1283                 ndr->depth++;
1284                 ndr_print_ptr(ndr, "handle", r->in.handle);
1285                 ndr->depth++;
1286                 ndr_print_policy_handle(ndr, "handle", r->in.handle);
1287                 ndr->depth--;
1288                 ndr_print_winreg_String(ndr, "value", &r->in.value);
1289                 ndr->depth--;
1290         }
1291         if (flags & NDR_OUT) {
1292                 ndr_print_struct(ndr, "out", "winreg_DeleteValue");
1293                 ndr->depth++;
1294                 ndr_print_WERROR(ndr, "result", r->out.result);
1295                 ndr->depth--;
1296         }
1297         ndr->depth--;
1298 }
1299
1300 _PUBLIC_ enum ndr_err_code ndr_push_winreg_EnumKey(struct ndr_push *ndr, int flags, const struct winreg_EnumKey *r)
1301 {
1302         if (flags & NDR_IN) {
1303                 if (r->in.handle == NULL) {
1304                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
1305                 }
1306                 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
1307                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.enum_index));
1308                 if (r->in.name == NULL) {
1309                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
1310                 }
1311                 NDR_CHECK(ndr_push_winreg_StringBuf(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.name));
1312                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.keyclass));
1313                 if (r->in.keyclass) {
1314                         NDR_CHECK(ndr_push_winreg_StringBuf(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.keyclass));
1315                 }
1316                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.last_changed_time));
1317                 if (r->in.last_changed_time) {
1318                         NDR_CHECK(ndr_push_NTTIME(ndr, NDR_SCALARS, *r->in.last_changed_time));
1319                 }
1320         }
1321         if (flags & NDR_OUT) {
1322                 if (r->out.name == NULL) {
1323                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
1324                 }
1325                 NDR_CHECK(ndr_push_winreg_StringBuf(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.name));
1326                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->out.keyclass));
1327                 if (r->out.keyclass) {
1328                         NDR_CHECK(ndr_push_winreg_StringBuf(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.keyclass));
1329                 }
1330                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->out.last_changed_time));
1331                 if (r->out.last_changed_time) {
1332                         NDR_CHECK(ndr_push_NTTIME(ndr, NDR_SCALARS, *r->out.last_changed_time));
1333                 }
1334                 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
1335         }
1336         return NDR_ERR_SUCCESS;
1337 }
1338
1339 _PUBLIC_ enum ndr_err_code ndr_pull_winreg_EnumKey(struct ndr_pull *ndr, int flags, struct winreg_EnumKey *r)
1340 {
1341         uint32_t _ptr_keyclass;
1342         uint32_t _ptr_last_changed_time;
1343         TALLOC_CTX *_mem_save_handle_0;
1344         TALLOC_CTX *_mem_save_name_0;
1345         TALLOC_CTX *_mem_save_keyclass_0;
1346         TALLOC_CTX *_mem_save_last_changed_time_0;
1347         if (flags & NDR_IN) {
1348                 ZERO_STRUCT(r->out);
1349
1350                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
1351                         NDR_PULL_ALLOC(ndr, r->in.handle);
1352                 }
1353                 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
1354                 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
1355                 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
1356                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
1357                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.enum_index));
1358                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
1359                         NDR_PULL_ALLOC(ndr, r->in.name);
1360                 }
1361                 _mem_save_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
1362                 NDR_PULL_SET_MEM_CTX(ndr, r->in.name, LIBNDR_FLAG_REF_ALLOC);
1363                 NDR_CHECK(ndr_pull_winreg_StringBuf(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.name));
1364                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_name_0, LIBNDR_FLAG_REF_ALLOC);
1365                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_keyclass));
1366                 if (_ptr_keyclass) {
1367                         NDR_PULL_ALLOC(ndr, r->in.keyclass);
1368                 } else {
1369                         r->in.keyclass = NULL;
1370                 }
1371                 if (r->in.keyclass) {
1372                         _mem_save_keyclass_0 = NDR_PULL_GET_MEM_CTX(ndr);
1373                         NDR_PULL_SET_MEM_CTX(ndr, r->in.keyclass, 0);
1374                         NDR_CHECK(ndr_pull_winreg_StringBuf(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.keyclass));
1375                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_keyclass_0, 0);
1376                 }
1377                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_last_changed_time));
1378                 if (_ptr_last_changed_time) {
1379                         NDR_PULL_ALLOC(ndr, r->in.last_changed_time);
1380                 } else {
1381                         r->in.last_changed_time = NULL;
1382                 }
1383                 if (r->in.last_changed_time) {
1384                         _mem_save_last_changed_time_0 = NDR_PULL_GET_MEM_CTX(ndr);
1385                         NDR_PULL_SET_MEM_CTX(ndr, r->in.last_changed_time, 0);
1386                         NDR_CHECK(ndr_pull_NTTIME(ndr, NDR_SCALARS, r->in.last_changed_time));
1387                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_last_changed_time_0, 0);
1388                 }
1389                 NDR_PULL_ALLOC(ndr, r->out.name);
1390                 *r->out.name = *r->in.name;
1391         }
1392         if (flags & NDR_OUT) {
1393                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
1394                         NDR_PULL_ALLOC(ndr, r->out.name);
1395                 }
1396                 _mem_save_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
1397                 NDR_PULL_SET_MEM_CTX(ndr, r->out.name, LIBNDR_FLAG_REF_ALLOC);
1398                 NDR_CHECK(ndr_pull_winreg_StringBuf(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.name));
1399                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_name_0, LIBNDR_FLAG_REF_ALLOC);
1400                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_keyclass));
1401                 if (_ptr_keyclass) {
1402                         NDR_PULL_ALLOC(ndr, r->out.keyclass);
1403                 } else {
1404                         r->out.keyclass = NULL;
1405                 }
1406                 if (r->out.keyclass) {
1407                         _mem_save_keyclass_0 = NDR_PULL_GET_MEM_CTX(ndr);
1408                         NDR_PULL_SET_MEM_CTX(ndr, r->out.keyclass, 0);
1409                         NDR_CHECK(ndr_pull_winreg_StringBuf(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.keyclass));
1410                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_keyclass_0, 0);
1411                 }
1412                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_last_changed_time));
1413                 if (_ptr_last_changed_time) {
1414                         NDR_PULL_ALLOC(ndr, r->out.last_changed_time);
1415                 } else {
1416                         r->out.last_changed_time = NULL;
1417                 }
1418                 if (r->out.last_changed_time) {
1419                         _mem_save_last_changed_time_0 = NDR_PULL_GET_MEM_CTX(ndr);
1420                         NDR_PULL_SET_MEM_CTX(ndr, r->out.last_changed_time, 0);
1421                         NDR_CHECK(ndr_pull_NTTIME(ndr, NDR_SCALARS, r->out.last_changed_time));
1422                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_last_changed_time_0, 0);
1423                 }
1424                 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
1425         }
1426         return NDR_ERR_SUCCESS;
1427 }
1428
1429 _PUBLIC_ void ndr_print_winreg_EnumKey(struct ndr_print *ndr, const char *name, int flags, const struct winreg_EnumKey *r)
1430 {
1431         ndr_print_struct(ndr, name, "winreg_EnumKey");
1432         ndr->depth++;
1433         if (flags & NDR_SET_VALUES) {
1434                 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
1435         }
1436         if (flags & NDR_IN) {
1437                 ndr_print_struct(ndr, "in", "winreg_EnumKey");
1438                 ndr->depth++;
1439                 ndr_print_ptr(ndr, "handle", r->in.handle);
1440                 ndr->depth++;
1441                 ndr_print_policy_handle(ndr, "handle", r->in.handle);
1442                 ndr->depth--;
1443                 ndr_print_uint32(ndr, "enum_index", r->in.enum_index);
1444                 ndr_print_ptr(ndr, "name", r->in.name);
1445                 ndr->depth++;
1446                 ndr_print_winreg_StringBuf(ndr, "name", r->in.name);
1447                 ndr->depth--;
1448                 ndr_print_ptr(ndr, "keyclass", r->in.keyclass);
1449                 ndr->depth++;
1450                 if (r->in.keyclass) {
1451                         ndr_print_winreg_StringBuf(ndr, "keyclass", r->in.keyclass);
1452                 }
1453                 ndr->depth--;
1454                 ndr_print_ptr(ndr, "last_changed_time", r->in.last_changed_time);
1455                 ndr->depth++;
1456                 if (r->in.last_changed_time) {
1457                         ndr_print_NTTIME(ndr, "last_changed_time", *r->in.last_changed_time);
1458                 }
1459                 ndr->depth--;
1460                 ndr->depth--;
1461         }
1462         if (flags & NDR_OUT) {
1463                 ndr_print_struct(ndr, "out", "winreg_EnumKey");
1464                 ndr->depth++;
1465                 ndr_print_ptr(ndr, "name", r->out.name);
1466                 ndr->depth++;
1467                 ndr_print_winreg_StringBuf(ndr, "name", r->out.name);
1468                 ndr->depth--;
1469                 ndr_print_ptr(ndr, "keyclass", r->out.keyclass);
1470                 ndr->depth++;
1471                 if (r->out.keyclass) {
1472                         ndr_print_winreg_StringBuf(ndr, "keyclass", r->out.keyclass);
1473                 }
1474                 ndr->depth--;
1475                 ndr_print_ptr(ndr, "last_changed_time", r->out.last_changed_time);
1476                 ndr->depth++;
1477                 if (r->out.last_changed_time) {
1478                         ndr_print_NTTIME(ndr, "last_changed_time", *r->out.last_changed_time);
1479                 }
1480                 ndr->depth--;
1481                 ndr_print_WERROR(ndr, "result", r->out.result);
1482                 ndr->depth--;
1483         }
1484         ndr->depth--;
1485 }
1486
1487 _PUBLIC_ enum ndr_err_code ndr_push_winreg_EnumValue(struct ndr_push *ndr, int flags, const struct winreg_EnumValue *r)
1488 {
1489         if (flags & NDR_IN) {
1490                 if (r->in.handle == NULL) {
1491                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
1492                 }
1493                 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
1494                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.enum_index));
1495                 if (r->in.name == NULL) {
1496                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
1497                 }
1498                 NDR_CHECK(ndr_push_winreg_ValNameBuf(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.name));
1499                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.type));
1500                 if (r->in.type) {
1501                         NDR_CHECK(ndr_push_winreg_Type(ndr, NDR_SCALARS, *r->in.type));
1502                 }
1503                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.value));
1504                 if (r->in.value) {
1505                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->in.size));
1506                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
1507                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->in.length));
1508                         NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->in.value, *r->in.length));
1509                 }
1510                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.size));
1511                 if (r->in.size) {
1512                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->in.size));
1513                 }
1514                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.length));
1515                 if (r->in.length) {
1516                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->in.length));
1517                 }
1518         }
1519         if (flags & NDR_OUT) {
1520                 if (r->out.name == NULL) {
1521                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
1522                 }
1523                 NDR_CHECK(ndr_push_winreg_ValNameBuf(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.name));
1524                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->out.type));
1525                 if (r->out.type) {
1526                         NDR_CHECK(ndr_push_winreg_Type(ndr, NDR_SCALARS, *r->out.type));
1527                 }
1528                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->out.value));
1529                 if (r->out.value) {
1530                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.size));
1531                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
1532                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.length));
1533                         NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->out.value, *r->out.length));
1534                 }
1535                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->out.size));
1536                 if (r->out.size) {
1537                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.size));
1538                 }
1539                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->out.length));
1540                 if (r->out.length) {
1541                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.length));
1542                 }
1543                 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
1544         }
1545         return NDR_ERR_SUCCESS;
1546 }
1547
1548 _PUBLIC_ enum ndr_err_code ndr_pull_winreg_EnumValue(struct ndr_pull *ndr, int flags, struct winreg_EnumValue *r)
1549 {
1550         uint32_t _ptr_type;
1551         uint32_t _ptr_value;
1552         uint32_t _ptr_size;
1553         uint32_t _ptr_length;
1554         TALLOC_CTX *_mem_save_handle_0;
1555         TALLOC_CTX *_mem_save_name_0;
1556         TALLOC_CTX *_mem_save_type_0;
1557         TALLOC_CTX *_mem_save_value_0;
1558         TALLOC_CTX *_mem_save_size_0;
1559         TALLOC_CTX *_mem_save_length_0;
1560         if (flags & NDR_IN) {
1561                 ZERO_STRUCT(r->out);
1562
1563                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
1564                         NDR_PULL_ALLOC(ndr, r->in.handle);
1565                 }
1566                 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
1567                 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
1568                 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
1569                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
1570                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.enum_index));
1571                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
1572                         NDR_PULL_ALLOC(ndr, r->in.name);
1573                 }
1574                 _mem_save_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
1575                 NDR_PULL_SET_MEM_CTX(ndr, r->in.name, LIBNDR_FLAG_REF_ALLOC);
1576                 NDR_CHECK(ndr_pull_winreg_ValNameBuf(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.name));
1577                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_name_0, LIBNDR_FLAG_REF_ALLOC);
1578                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_type));
1579                 if (_ptr_type) {
1580                         NDR_PULL_ALLOC(ndr, r->in.type);
1581                 } else {
1582                         r->in.type = NULL;
1583                 }
1584                 if (r->in.type) {
1585                         _mem_save_type_0 = NDR_PULL_GET_MEM_CTX(ndr);
1586                         NDR_PULL_SET_MEM_CTX(ndr, r->in.type, 0);
1587                         NDR_CHECK(ndr_pull_winreg_Type(ndr, NDR_SCALARS, r->in.type));
1588                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_type_0, 0);
1589                 }
1590                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_value));
1591                 if (_ptr_value) {
1592                         NDR_PULL_ALLOC(ndr, r->in.value);
1593                 } else {
1594                         r->in.value = NULL;
1595                 }
1596                 if (r->in.value) {
1597                         _mem_save_value_0 = NDR_PULL_GET_MEM_CTX(ndr);
1598                         NDR_PULL_SET_MEM_CTX(ndr, r->in.value, 0);
1599                         NDR_CHECK(ndr_pull_array_size(ndr, &r->in.value));
1600                         NDR_CHECK(ndr_pull_array_length(ndr, &r->in.value));
1601                         if (ndr_get_array_length(ndr, &r->in.value) > ndr_get_array_size(ndr, &r->in.value)) {
1602                                 return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.value), ndr_get_array_length(ndr, &r->in.value));
1603                         }
1604                         NDR_PULL_ALLOC_N(ndr, r->in.value, ndr_get_array_size(ndr, &r->in.value));
1605                         NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->in.value, ndr_get_array_length(ndr, &r->in.value)));
1606                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_value_0, 0);
1607                 }
1608                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_size));
1609                 if (_ptr_size) {
1610                         NDR_PULL_ALLOC(ndr, r->in.size);
1611                 } else {
1612                         r->in.size = NULL;
1613                 }
1614                 if (r->in.size) {
1615                         _mem_save_size_0 = NDR_PULL_GET_MEM_CTX(ndr);
1616                         NDR_PULL_SET_MEM_CTX(ndr, r->in.size, 0);
1617                         NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->in.size));
1618                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_size_0, 0);
1619                 }
1620                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_length));
1621                 if (_ptr_length) {
1622                         NDR_PULL_ALLOC(ndr, r->in.length);
1623                 } else {
1624                         r->in.length = NULL;
1625                 }
1626                 if (r->in.length) {
1627                         _mem_save_length_0 = NDR_PULL_GET_MEM_CTX(ndr);
1628                         NDR_PULL_SET_MEM_CTX(ndr, r->in.length, 0);
1629                         NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->in.length));
1630                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_length_0, 0);
1631                 }
1632                 NDR_PULL_ALLOC(ndr, r->out.name);
1633                 *r->out.name = *r->in.name;
1634                 if (r->in.value) {
1635                         if (r->in.size == NULL) return ndr_pull_error(ndr, NDR_ERR_INVALID_POINTER, "NULL Pointer for size_is()");
1636                         NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->in.value, *r->in.size));
1637                 }
1638                 if (r->in.value) {
1639                         if (r->in.length == NULL) return ndr_pull_error(ndr, NDR_ERR_INVALID_POINTER, "NULL Pointer for length_is()");
1640                         NDR_CHECK(ndr_check_array_length(ndr, (void*)&r->in.value, *r->in.length));
1641                 }
1642         }
1643         if (flags & NDR_OUT) {
1644                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
1645                         NDR_PULL_ALLOC(ndr, r->out.name);
1646                 }
1647                 _mem_save_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
1648                 NDR_PULL_SET_MEM_CTX(ndr, r->out.name, LIBNDR_FLAG_REF_ALLOC);
1649                 NDR_CHECK(ndr_pull_winreg_ValNameBuf(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.name));
1650                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_name_0, LIBNDR_FLAG_REF_ALLOC);
1651                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_type));
1652                 if (_ptr_type) {
1653                         NDR_PULL_ALLOC(ndr, r->out.type);
1654                 } else {
1655                         r->out.type = NULL;
1656                 }
1657                 if (r->out.type) {
1658                         _mem_save_type_0 = NDR_PULL_GET_MEM_CTX(ndr);
1659                         NDR_PULL_SET_MEM_CTX(ndr, r->out.type, 0);
1660                         NDR_CHECK(ndr_pull_winreg_Type(ndr, NDR_SCALARS, r->out.type));
1661                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_type_0, 0);
1662                 }
1663                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_value));
1664                 if (_ptr_value) {
1665                         NDR_PULL_ALLOC(ndr, r->out.value);
1666                 } else {
1667                         r->out.value = NULL;
1668                 }
1669                 if (r->out.value) {
1670                         _mem_save_value_0 = NDR_PULL_GET_MEM_CTX(ndr);
1671                         NDR_PULL_SET_MEM_CTX(ndr, r->out.value, 0);
1672                         NDR_CHECK(ndr_pull_array_size(ndr, &r->out.value));
1673                         NDR_CHECK(ndr_pull_array_length(ndr, &r->out.value));
1674                         if (ndr_get_array_length(ndr, &r->out.value) > ndr_get_array_size(ndr, &r->out.value)) {
1675                                 return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->out.value), ndr_get_array_length(ndr, &r->out.value));
1676                         }
1677                         NDR_PULL_ALLOC_N(ndr, r->out.value, ndr_get_array_size(ndr, &r->out.value));
1678                         NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->out.value, ndr_get_array_length(ndr, &r->out.value)));
1679                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_value_0, 0);
1680                 }
1681                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_size));
1682                 if (_ptr_size) {
1683                         NDR_PULL_ALLOC(ndr, r->out.size);
1684                 } else {
1685                         r->out.size = NULL;
1686                 }
1687                 if (r->out.size) {
1688                         _mem_save_size_0 = NDR_PULL_GET_MEM_CTX(ndr);
1689                         NDR_PULL_SET_MEM_CTX(ndr, r->out.size, 0);
1690                         NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.size));
1691                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_size_0, 0);
1692                 }
1693                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_length));
1694                 if (_ptr_length) {
1695                         NDR_PULL_ALLOC(ndr, r->out.length);
1696                 } else {
1697                         r->out.length = NULL;
1698                 }
1699                 if (r->out.length) {
1700                         _mem_save_length_0 = NDR_PULL_GET_MEM_CTX(ndr);
1701                         NDR_PULL_SET_MEM_CTX(ndr, r->out.length, 0);
1702                         NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.length));
1703                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_length_0, 0);
1704                 }
1705                 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
1706                 if (r->out.value) {
1707                         if (r->out.size == NULL) return ndr_pull_error(ndr, NDR_ERR_INVALID_POINTER, "NULL Pointer for size_is()");
1708                         NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->out.value, *r->out.size));
1709                 }
1710                 if (r->out.value) {
1711                         if (r->out.length == NULL) return ndr_pull_error(ndr, NDR_ERR_INVALID_POINTER, "NULL Pointer for length_is()");
1712                         NDR_CHECK(ndr_check_array_length(ndr, (void*)&r->out.value, *r->out.length));
1713                 }
1714         }
1715         return NDR_ERR_SUCCESS;
1716 }
1717
1718 _PUBLIC_ void ndr_print_winreg_EnumValue(struct ndr_print *ndr, const char *name, int flags, const struct winreg_EnumValue *r)
1719 {
1720         ndr_print_struct(ndr, name, "winreg_EnumValue");
1721         ndr->depth++;
1722         if (flags & NDR_SET_VALUES) {
1723                 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
1724         }
1725         if (flags & NDR_IN) {
1726                 ndr_print_struct(ndr, "in", "winreg_EnumValue");
1727                 ndr->depth++;
1728                 ndr_print_ptr(ndr, "handle", r->in.handle);
1729                 ndr->depth++;
1730                 ndr_print_policy_handle(ndr, "handle", r->in.handle);
1731                 ndr->depth--;
1732                 ndr_print_uint32(ndr, "enum_index", r->in.enum_index);
1733                 ndr_print_ptr(ndr, "name", r->in.name);
1734                 ndr->depth++;
1735                 ndr_print_winreg_ValNameBuf(ndr, "name", r->in.name);
1736                 ndr->depth--;
1737                 ndr_print_ptr(ndr, "type", r->in.type);
1738                 ndr->depth++;
1739                 if (r->in.type) {
1740                         ndr_print_winreg_Type(ndr, "type", *r->in.type);
1741                 }
1742                 ndr->depth--;
1743                 ndr_print_ptr(ndr, "value", r->in.value);
1744                 ndr->depth++;
1745                 if (r->in.value) {
1746                         if (r->in.length == NULL) return;
1747                         ndr_print_array_uint8(ndr, "value", r->in.value, *r->in.length);
1748                 }
1749                 ndr->depth--;
1750                 ndr_print_ptr(ndr, "size", r->in.size);
1751                 ndr->depth++;
1752                 if (r->in.size) {
1753                         ndr_print_uint32(ndr, "size", *r->in.size);
1754                 }
1755                 ndr->depth--;
1756                 ndr_print_ptr(ndr, "length", r->in.length);
1757                 ndr->depth++;
1758                 if (r->in.length) {
1759                         ndr_print_uint32(ndr, "length", *r->in.length);
1760                 }
1761                 ndr->depth--;
1762                 ndr->depth--;
1763         }
1764         if (flags & NDR_OUT) {
1765                 ndr_print_struct(ndr, "out", "winreg_EnumValue");
1766                 ndr->depth++;
1767                 ndr_print_ptr(ndr, "name", r->out.name);
1768                 ndr->depth++;
1769                 ndr_print_winreg_ValNameBuf(ndr, "name", r->out.name);
1770                 ndr->depth--;
1771                 ndr_print_ptr(ndr, "type", r->out.type);
1772                 ndr->depth++;
1773                 if (r->out.type) {
1774                         ndr_print_winreg_Type(ndr, "type", *r->out.type);
1775                 }
1776                 ndr->depth--;
1777                 ndr_print_ptr(ndr, "value", r->out.value);
1778                 ndr->depth++;
1779                 if (r->out.value) {
1780                         if (r->out.length == NULL) return;
1781                         ndr_print_array_uint8(ndr, "value", r->out.value, *r->out.length);
1782                 }
1783                 ndr->depth--;
1784                 ndr_print_ptr(ndr, "size", r->out.size);
1785                 ndr->depth++;
1786                 if (r->out.size) {
1787                         ndr_print_uint32(ndr, "size", *r->out.size);
1788                 }
1789                 ndr->depth--;
1790                 ndr_print_ptr(ndr, "length", r->out.length);
1791                 ndr->depth++;
1792                 if (r->out.length) {
1793                         ndr_print_uint32(ndr, "length", *r->out.length);
1794                 }
1795                 ndr->depth--;
1796                 ndr_print_WERROR(ndr, "result", r->out.result);
1797                 ndr->depth--;
1798         }
1799         ndr->depth--;
1800 }
1801
1802 _PUBLIC_ enum ndr_err_code ndr_push_winreg_FlushKey(struct ndr_push *ndr, int flags, const struct winreg_FlushKey *r)
1803 {
1804         if (flags & NDR_IN) {
1805                 if (r->in.handle == NULL) {
1806                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
1807                 }
1808                 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
1809         }
1810         if (flags & NDR_OUT) {
1811                 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
1812         }
1813         return NDR_ERR_SUCCESS;
1814 }
1815
1816 _PUBLIC_ enum ndr_err_code ndr_pull_winreg_FlushKey(struct ndr_pull *ndr, int flags, struct winreg_FlushKey *r)
1817 {
1818         TALLOC_CTX *_mem_save_handle_0;
1819         if (flags & NDR_IN) {
1820                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
1821                         NDR_PULL_ALLOC(ndr, r->in.handle);
1822                 }
1823                 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
1824                 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
1825                 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
1826                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
1827         }
1828         if (flags & NDR_OUT) {
1829                 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
1830         }
1831         return NDR_ERR_SUCCESS;
1832 }
1833
1834 _PUBLIC_ void ndr_print_winreg_FlushKey(struct ndr_print *ndr, const char *name, int flags, const struct winreg_FlushKey *r)
1835 {
1836         ndr_print_struct(ndr, name, "winreg_FlushKey");
1837         ndr->depth++;
1838         if (flags & NDR_SET_VALUES) {
1839                 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
1840         }
1841         if (flags & NDR_IN) {
1842                 ndr_print_struct(ndr, "in", "winreg_FlushKey");
1843                 ndr->depth++;
1844                 ndr_print_ptr(ndr, "handle", r->in.handle);
1845                 ndr->depth++;
1846                 ndr_print_policy_handle(ndr, "handle", r->in.handle);
1847                 ndr->depth--;
1848                 ndr->depth--;
1849         }
1850         if (flags & NDR_OUT) {
1851                 ndr_print_struct(ndr, "out", "winreg_FlushKey");
1852                 ndr->depth++;
1853                 ndr_print_WERROR(ndr, "result", r->out.result);
1854                 ndr->depth--;
1855         }
1856         ndr->depth--;
1857 }
1858
1859 _PUBLIC_ enum ndr_err_code ndr_push_winreg_GetKeySecurity(struct ndr_push *ndr, int flags, const struct winreg_GetKeySecurity *r)
1860 {
1861         if (flags & NDR_IN) {
1862                 if (r->in.handle == NULL) {
1863                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
1864                 }
1865                 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
1866                 NDR_CHECK(ndr_push_security_secinfo(ndr, NDR_SCALARS, r->in.sec_info));
1867                 if (r->in.sd == NULL) {
1868                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
1869                 }
1870                 NDR_CHECK(ndr_push_KeySecurityData(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.sd));
1871         }
1872         if (flags & NDR_OUT) {
1873                 if (r->out.sd == NULL) {
1874                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
1875                 }
1876                 NDR_CHECK(ndr_push_KeySecurityData(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.sd));
1877                 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
1878         }
1879         return NDR_ERR_SUCCESS;
1880 }
1881
1882 _PUBLIC_ enum ndr_err_code ndr_pull_winreg_GetKeySecurity(struct ndr_pull *ndr, int flags, struct winreg_GetKeySecurity *r)
1883 {
1884         TALLOC_CTX *_mem_save_handle_0;
1885         TALLOC_CTX *_mem_save_sd_0;
1886         if (flags & NDR_IN) {
1887                 ZERO_STRUCT(r->out);
1888
1889                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
1890                         NDR_PULL_ALLOC(ndr, r->in.handle);
1891                 }
1892                 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
1893                 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
1894                 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
1895                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
1896                 NDR_CHECK(ndr_pull_security_secinfo(ndr, NDR_SCALARS, &r->in.sec_info));
1897                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
1898                         NDR_PULL_ALLOC(ndr, r->in.sd);
1899                 }
1900                 _mem_save_sd_0 = NDR_PULL_GET_MEM_CTX(ndr);
1901                 NDR_PULL_SET_MEM_CTX(ndr, r->in.sd, LIBNDR_FLAG_REF_ALLOC);
1902                 NDR_CHECK(ndr_pull_KeySecurityData(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.sd));
1903                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_sd_0, LIBNDR_FLAG_REF_ALLOC);
1904                 NDR_PULL_ALLOC(ndr, r->out.sd);
1905                 *r->out.sd = *r->in.sd;
1906         }
1907         if (flags & NDR_OUT) {
1908                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
1909                         NDR_PULL_ALLOC(ndr, r->out.sd);
1910                 }
1911                 _mem_save_sd_0 = NDR_PULL_GET_MEM_CTX(ndr);
1912                 NDR_PULL_SET_MEM_CTX(ndr, r->out.sd, LIBNDR_FLAG_REF_ALLOC);
1913                 NDR_CHECK(ndr_pull_KeySecurityData(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.sd));
1914                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_sd_0, LIBNDR_FLAG_REF_ALLOC);
1915                 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
1916         }
1917         return NDR_ERR_SUCCESS;
1918 }
1919
1920 _PUBLIC_ void ndr_print_winreg_GetKeySecurity(struct ndr_print *ndr, const char *name, int flags, const struct winreg_GetKeySecurity *r)
1921 {
1922         ndr_print_struct(ndr, name, "winreg_GetKeySecurity");
1923         ndr->depth++;
1924         if (flags & NDR_SET_VALUES) {
1925                 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
1926         }
1927         if (flags & NDR_IN) {
1928                 ndr_print_struct(ndr, "in", "winreg_GetKeySecurity");
1929                 ndr->depth++;
1930                 ndr_print_ptr(ndr, "handle", r->in.handle);
1931                 ndr->depth++;
1932                 ndr_print_policy_handle(ndr, "handle", r->in.handle);
1933                 ndr->depth--;
1934                 ndr_print_security_secinfo(ndr, "sec_info", r->in.sec_info);
1935                 ndr_print_ptr(ndr, "sd", r->in.sd);
1936                 ndr->depth++;
1937                 ndr_print_KeySecurityData(ndr, "sd", r->in.sd);
1938                 ndr->depth--;
1939                 ndr->depth--;
1940         }
1941         if (flags & NDR_OUT) {
1942                 ndr_print_struct(ndr, "out", "winreg_GetKeySecurity");
1943                 ndr->depth++;
1944                 ndr_print_ptr(ndr, "sd", r->out.sd);
1945                 ndr->depth++;
1946                 ndr_print_KeySecurityData(ndr, "sd", r->out.sd);
1947                 ndr->depth--;
1948                 ndr_print_WERROR(ndr, "result", r->out.result);
1949                 ndr->depth--;
1950         }
1951         ndr->depth--;
1952 }
1953
1954 static enum ndr_err_code ndr_push_winreg_LoadKey(struct ndr_push *ndr, int flags, const struct winreg_LoadKey *r)
1955 {
1956         if (flags & NDR_IN) {
1957                 if (r->in.handle == NULL) {
1958                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
1959                 }
1960                 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
1961                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.keyname));
1962                 if (r->in.keyname) {
1963                         NDR_CHECK(ndr_push_winreg_String(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.keyname));
1964                 }
1965                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.filename));
1966                 if (r->in.filename) {
1967                         NDR_CHECK(ndr_push_winreg_String(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.filename));
1968                 }
1969         }
1970         if (flags & NDR_OUT) {
1971                 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
1972         }
1973         return NDR_ERR_SUCCESS;
1974 }
1975
1976 static enum ndr_err_code ndr_pull_winreg_LoadKey(struct ndr_pull *ndr, int flags, struct winreg_LoadKey *r)
1977 {
1978         uint32_t _ptr_keyname;
1979         uint32_t _ptr_filename;
1980         TALLOC_CTX *_mem_save_handle_0;
1981         TALLOC_CTX *_mem_save_keyname_0;
1982         TALLOC_CTX *_mem_save_filename_0;
1983         if (flags & NDR_IN) {
1984                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
1985                         NDR_PULL_ALLOC(ndr, r->in.handle);
1986                 }
1987                 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
1988                 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
1989                 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
1990                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
1991                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_keyname));
1992                 if (_ptr_keyname) {
1993                         NDR_PULL_ALLOC(ndr, r->in.keyname);
1994                 } else {
1995                         r->in.keyname = NULL;
1996                 }
1997                 if (r->in.keyname) {
1998                         _mem_save_keyname_0 = NDR_PULL_GET_MEM_CTX(ndr);
1999                         NDR_PULL_SET_MEM_CTX(ndr, r->in.keyname, 0);
2000                         NDR_CHECK(ndr_pull_winreg_String(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.keyname));
2001                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_keyname_0, 0);
2002                 }
2003                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_filename));
2004                 if (_ptr_filename) {
2005                         NDR_PULL_ALLOC(ndr, r->in.filename);
2006                 } else {
2007                         r->in.filename = NULL;
2008                 }
2009                 if (r->in.filename) {
2010                         _mem_save_filename_0 = NDR_PULL_GET_MEM_CTX(ndr);
2011                         NDR_PULL_SET_MEM_CTX(ndr, r->in.filename, 0);
2012                         NDR_CHECK(ndr_pull_winreg_String(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.filename));
2013                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_filename_0, 0);
2014                 }
2015         }
2016         if (flags & NDR_OUT) {
2017                 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
2018         }
2019         return NDR_ERR_SUCCESS;
2020 }
2021
2022 _PUBLIC_ void ndr_print_winreg_LoadKey(struct ndr_print *ndr, const char *name, int flags, const struct winreg_LoadKey *r)
2023 {
2024         ndr_print_struct(ndr, name, "winreg_LoadKey");
2025         ndr->depth++;
2026         if (flags & NDR_SET_VALUES) {
2027                 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
2028         }
2029         if (flags & NDR_IN) {
2030                 ndr_print_struct(ndr, "in", "winreg_LoadKey");
2031                 ndr->depth++;
2032                 ndr_print_ptr(ndr, "handle", r->in.handle);
2033                 ndr->depth++;
2034                 ndr_print_policy_handle(ndr, "handle", r->in.handle);
2035                 ndr->depth--;
2036                 ndr_print_ptr(ndr, "keyname", r->in.keyname);
2037                 ndr->depth++;
2038                 if (r->in.keyname) {
2039                         ndr_print_winreg_String(ndr, "keyname", r->in.keyname);
2040                 }
2041                 ndr->depth--;
2042                 ndr_print_ptr(ndr, "filename", r->in.filename);
2043                 ndr->depth++;
2044                 if (r->in.filename) {
2045                         ndr_print_winreg_String(ndr, "filename", r->in.filename);
2046                 }
2047                 ndr->depth--;
2048                 ndr->depth--;
2049         }
2050         if (flags & NDR_OUT) {
2051                 ndr_print_struct(ndr, "out", "winreg_LoadKey");
2052                 ndr->depth++;
2053                 ndr_print_WERROR(ndr, "result", r->out.result);
2054                 ndr->depth--;
2055         }
2056         ndr->depth--;
2057 }
2058
2059 _PUBLIC_ enum ndr_err_code ndr_push_winreg_NotifyChangeKeyValue(struct ndr_push *ndr, int flags, const struct winreg_NotifyChangeKeyValue *r)
2060 {
2061         if (flags & NDR_IN) {
2062                 if (r->in.handle == NULL) {
2063                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
2064                 }
2065                 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
2066                 NDR_CHECK(ndr_push_uint8(ndr, NDR_SCALARS, r->in.watch_subtree));
2067                 NDR_CHECK(ndr_push_winreg_NotifyChangeType(ndr, NDR_SCALARS, r->in.notify_filter));
2068                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.unknown));
2069                 NDR_CHECK(ndr_push_winreg_String(ndr, NDR_SCALARS|NDR_BUFFERS, &r->in.string1));
2070                 NDR_CHECK(ndr_push_winreg_String(ndr, NDR_SCALARS|NDR_BUFFERS, &r->in.string2));
2071                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.unknown2));
2072         }
2073         if (flags & NDR_OUT) {
2074                 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
2075         }
2076         return NDR_ERR_SUCCESS;
2077 }
2078
2079 _PUBLIC_ enum ndr_err_code ndr_pull_winreg_NotifyChangeKeyValue(struct ndr_pull *ndr, int flags, struct winreg_NotifyChangeKeyValue *r)
2080 {
2081         TALLOC_CTX *_mem_save_handle_0;
2082         if (flags & NDR_IN) {
2083                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
2084                         NDR_PULL_ALLOC(ndr, r->in.handle);
2085                 }
2086                 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
2087                 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
2088                 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
2089                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
2090                 NDR_CHECK(ndr_pull_uint8(ndr, NDR_SCALARS, &r->in.watch_subtree));
2091                 NDR_CHECK(ndr_pull_winreg_NotifyChangeType(ndr, NDR_SCALARS, &r->in.notify_filter));
2092                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.unknown));
2093                 NDR_CHECK(ndr_pull_winreg_String(ndr, NDR_SCALARS|NDR_BUFFERS, &r->in.string1));
2094                 NDR_CHECK(ndr_pull_winreg_String(ndr, NDR_SCALARS|NDR_BUFFERS, &r->in.string2));
2095                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.unknown2));
2096         }
2097         if (flags & NDR_OUT) {
2098                 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
2099         }
2100         return NDR_ERR_SUCCESS;
2101 }
2102
2103 _PUBLIC_ void ndr_print_winreg_NotifyChangeKeyValue(struct ndr_print *ndr, const char *name, int flags, const struct winreg_NotifyChangeKeyValue *r)
2104 {
2105         ndr_print_struct(ndr, name, "winreg_NotifyChangeKeyValue");
2106         ndr->depth++;
2107         if (flags & NDR_SET_VALUES) {
2108                 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
2109         }
2110         if (flags & NDR_IN) {
2111                 ndr_print_struct(ndr, "in", "winreg_NotifyChangeKeyValue");
2112                 ndr->depth++;
2113                 ndr_print_ptr(ndr, "handle", r->in.handle);
2114                 ndr->depth++;
2115                 ndr_print_policy_handle(ndr, "handle", r->in.handle);
2116                 ndr->depth--;
2117                 ndr_print_uint8(ndr, "watch_subtree", r->in.watch_subtree);
2118                 ndr_print_winreg_NotifyChangeType(ndr, "notify_filter", r->in.notify_filter);
2119                 ndr_print_uint32(ndr, "unknown", r->in.unknown);
2120                 ndr_print_winreg_String(ndr, "string1", &r->in.string1);
2121                 ndr_print_winreg_String(ndr, "string2", &r->in.string2);
2122                 ndr_print_uint32(ndr, "unknown2", r->in.unknown2);
2123                 ndr->depth--;
2124         }
2125         if (flags & NDR_OUT) {
2126                 ndr_print_struct(ndr, "out", "winreg_NotifyChangeKeyValue");
2127                 ndr->depth++;
2128                 ndr_print_WERROR(ndr, "result", r->out.result);
2129                 ndr->depth--;
2130         }
2131         ndr->depth--;
2132 }
2133
2134 _PUBLIC_ enum ndr_err_code ndr_push_winreg_OpenKey(struct ndr_push *ndr, int flags, const struct winreg_OpenKey *r)
2135 {
2136         if (flags & NDR_IN) {
2137                 if (r->in.parent_handle == NULL) {
2138                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
2139                 }
2140                 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.parent_handle));
2141                 NDR_CHECK(ndr_push_winreg_String(ndr, NDR_SCALARS|NDR_BUFFERS, &r->in.keyname));
2142                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.unknown));
2143                 NDR_CHECK(ndr_push_winreg_AccessMask(ndr, NDR_SCALARS, r->in.access_mask));
2144         }
2145         if (flags & NDR_OUT) {
2146                 if (r->out.handle == NULL) {
2147                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
2148                 }
2149                 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->out.handle));
2150                 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
2151         }
2152         return NDR_ERR_SUCCESS;
2153 }
2154
2155 _PUBLIC_ enum ndr_err_code ndr_pull_winreg_OpenKey(struct ndr_pull *ndr, int flags, struct winreg_OpenKey *r)
2156 {
2157         TALLOC_CTX *_mem_save_parent_handle_0;
2158         TALLOC_CTX *_mem_save_handle_0;
2159         if (flags & NDR_IN) {
2160                 ZERO_STRUCT(r->out);
2161
2162                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
2163                         NDR_PULL_ALLOC(ndr, r->in.parent_handle);
2164                 }
2165                 _mem_save_parent_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
2166                 NDR_PULL_SET_MEM_CTX(ndr, r->in.parent_handle, LIBNDR_FLAG_REF_ALLOC);
2167                 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.parent_handle));
2168                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_parent_handle_0, LIBNDR_FLAG_REF_ALLOC);
2169                 NDR_CHECK(ndr_pull_winreg_String(ndr, NDR_SCALARS|NDR_BUFFERS, &r->in.keyname));
2170                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.unknown));
2171                 NDR_CHECK(ndr_pull_winreg_AccessMask(ndr, NDR_SCALARS, &r->in.access_mask));
2172                 NDR_PULL_ALLOC(ndr, r->out.handle);
2173                 ZERO_STRUCTP(r->out.handle);
2174         }
2175         if (flags & NDR_OUT) {
2176                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
2177                         NDR_PULL_ALLOC(ndr, r->out.handle);
2178                 }
2179                 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
2180                 NDR_PULL_SET_MEM_CTX(ndr, r->out.handle, LIBNDR_FLAG_REF_ALLOC);
2181                 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->out.handle));
2182                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
2183                 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
2184         }
2185         return NDR_ERR_SUCCESS;
2186 }
2187
2188 _PUBLIC_ void ndr_print_winreg_OpenKey(struct ndr_print *ndr, const char *name, int flags, const struct winreg_OpenKey *r)
2189 {
2190         ndr_print_struct(ndr, name, "winreg_OpenKey");
2191         ndr->depth++;
2192         if (flags & NDR_SET_VALUES) {
2193                 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
2194         }
2195         if (flags & NDR_IN) {
2196                 ndr_print_struct(ndr, "in", "winreg_OpenKey");
2197                 ndr->depth++;
2198                 ndr_print_ptr(ndr, "parent_handle", r->in.parent_handle);
2199                 ndr->depth++;
2200                 ndr_print_policy_handle(ndr, "parent_handle", r->in.parent_handle);
2201                 ndr->depth--;
2202                 ndr_print_winreg_String(ndr, "keyname", &r->in.keyname);
2203                 ndr_print_uint32(ndr, "unknown", r->in.unknown);
2204                 ndr_print_winreg_AccessMask(ndr, "access_mask", r->in.access_mask);
2205                 ndr->depth--;
2206         }
2207         if (flags & NDR_OUT) {
2208                 ndr_print_struct(ndr, "out", "winreg_OpenKey");
2209                 ndr->depth++;
2210                 ndr_print_ptr(ndr, "handle", r->out.handle);
2211                 ndr->depth++;
2212                 ndr_print_policy_handle(ndr, "handle", r->out.handle);
2213                 ndr->depth--;
2214                 ndr_print_WERROR(ndr, "result", r->out.result);
2215                 ndr->depth--;
2216         }
2217         ndr->depth--;
2218 }
2219
2220 _PUBLIC_ enum ndr_err_code ndr_push_winreg_QueryInfoKey(struct ndr_push *ndr, int flags, const struct winreg_QueryInfoKey *r)
2221 {
2222         if (flags & NDR_IN) {
2223                 if (r->in.handle == NULL) {
2224                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
2225                 }
2226                 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
2227                 if (r->in.classname == NULL) {
2228                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
2229                 }
2230                 NDR_CHECK(ndr_push_winreg_String(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.classname));
2231         }
2232         if (flags & NDR_OUT) {
2233                 if (r->out.classname == NULL) {
2234                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
2235                 }
2236                 NDR_CHECK(ndr_push_winreg_String(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.classname));
2237                 if (r->out.num_subkeys == NULL) {
2238                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
2239                 }
2240                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.num_subkeys));
2241                 if (r->out.max_subkeylen == NULL) {
2242                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
2243                 }
2244                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.max_subkeylen));
2245                 if (r->out.max_classlen == NULL) {
2246                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
2247                 }
2248                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.max_classlen));
2249                 if (r->out.num_values == NULL) {
2250                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
2251                 }
2252                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.num_values));
2253                 if (r->out.max_valnamelen == NULL) {
2254                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
2255                 }
2256                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.max_valnamelen));
2257                 if (r->out.max_valbufsize == NULL) {
2258                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
2259                 }
2260                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.max_valbufsize));
2261                 if (r->out.secdescsize == NULL) {
2262                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
2263                 }
2264                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.secdescsize));
2265                 if (r->out.last_changed_time == NULL) {
2266                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
2267                 }
2268                 NDR_CHECK(ndr_push_NTTIME(ndr, NDR_SCALARS, *r->out.last_changed_time));
2269                 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
2270         }
2271         return NDR_ERR_SUCCESS;
2272 }
2273
2274 _PUBLIC_ enum ndr_err_code ndr_pull_winreg_QueryInfoKey(struct ndr_pull *ndr, int flags, struct winreg_QueryInfoKey *r)
2275 {
2276         TALLOC_CTX *_mem_save_handle_0;
2277         TALLOC_CTX *_mem_save_classname_0;
2278         TALLOC_CTX *_mem_save_num_subkeys_0;
2279         TALLOC_CTX *_mem_save_max_subkeylen_0;
2280         TALLOC_CTX *_mem_save_max_classlen_0;
2281         TALLOC_CTX *_mem_save_num_values_0;
2282         TALLOC_CTX *_mem_save_max_valnamelen_0;
2283         TALLOC_CTX *_mem_save_max_valbufsize_0;
2284         TALLOC_CTX *_mem_save_secdescsize_0;
2285         TALLOC_CTX *_mem_save_last_changed_time_0;
2286         if (flags & NDR_IN) {
2287                 ZERO_STRUCT(r->out);
2288
2289                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
2290                         NDR_PULL_ALLOC(ndr, r->in.handle);
2291                 }
2292                 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
2293                 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
2294                 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
2295                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
2296                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
2297                         NDR_PULL_ALLOC(ndr, r->in.classname);
2298                 }
2299                 _mem_save_classname_0 = NDR_PULL_GET_MEM_CTX(ndr);
2300                 NDR_PULL_SET_MEM_CTX(ndr, r->in.classname, LIBNDR_FLAG_REF_ALLOC);
2301                 NDR_CHECK(ndr_pull_winreg_String(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.classname));
2302                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_classname_0, LIBNDR_FLAG_REF_ALLOC);
2303                 NDR_PULL_ALLOC(ndr, r->out.classname);
2304                 *r->out.classname = *r->in.classname;
2305                 NDR_PULL_ALLOC(ndr, r->out.num_subkeys);
2306                 ZERO_STRUCTP(r->out.num_subkeys);
2307                 NDR_PULL_ALLOC(ndr, r->out.max_subkeylen);
2308                 ZERO_STRUCTP(r->out.max_subkeylen);
2309                 NDR_PULL_ALLOC(ndr, r->out.max_classlen);
2310                 ZERO_STRUCTP(r->out.max_classlen);
2311                 NDR_PULL_ALLOC(ndr, r->out.num_values);
2312                 ZERO_STRUCTP(r->out.num_values);
2313                 NDR_PULL_ALLOC(ndr, r->out.max_valnamelen);
2314                 ZERO_STRUCTP(r->out.max_valnamelen);
2315                 NDR_PULL_ALLOC(ndr, r->out.max_valbufsize);
2316                 ZERO_STRUCTP(r->out.max_valbufsize);
2317                 NDR_PULL_ALLOC(ndr, r->out.secdescsize);
2318                 ZERO_STRUCTP(r->out.secdescsize);
2319                 NDR_PULL_ALLOC(ndr, r->out.last_changed_time);
2320                 ZERO_STRUCTP(r->out.last_changed_time);
2321         }
2322         if (flags & NDR_OUT) {
2323                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
2324                         NDR_PULL_ALLOC(ndr, r->out.classname);
2325                 }
2326                 _mem_save_classname_0 = NDR_PULL_GET_MEM_CTX(ndr);
2327                 NDR_PULL_SET_MEM_CTX(ndr, r->out.classname, LIBNDR_FLAG_REF_ALLOC);
2328                 NDR_CHECK(ndr_pull_winreg_String(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.classname));
2329                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_classname_0, LIBNDR_FLAG_REF_ALLOC);
2330                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
2331                         NDR_PULL_ALLOC(ndr, r->out.num_subkeys);
2332                 }
2333                 _mem_save_num_subkeys_0 = NDR_PULL_GET_MEM_CTX(ndr);
2334                 NDR_PULL_SET_MEM_CTX(ndr, r->out.num_subkeys, LIBNDR_FLAG_REF_ALLOC);
2335                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.num_subkeys));
2336                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_num_subkeys_0, LIBNDR_FLAG_REF_ALLOC);
2337                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
2338                         NDR_PULL_ALLOC(ndr, r->out.max_subkeylen);
2339                 }
2340                 _mem_save_max_subkeylen_0 = NDR_PULL_GET_MEM_CTX(ndr);
2341                 NDR_PULL_SET_MEM_CTX(ndr, r->out.max_subkeylen, LIBNDR_FLAG_REF_ALLOC);
2342                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.max_subkeylen));
2343                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_max_subkeylen_0, LIBNDR_FLAG_REF_ALLOC);
2344                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
2345                         NDR_PULL_ALLOC(ndr, r->out.max_classlen);
2346                 }
2347                 _mem_save_max_classlen_0 = NDR_PULL_GET_MEM_CTX(ndr);
2348                 NDR_PULL_SET_MEM_CTX(ndr, r->out.max_classlen, LIBNDR_FLAG_REF_ALLOC);
2349                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.max_classlen));
2350                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_max_classlen_0, LIBNDR_FLAG_REF_ALLOC);
2351                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
2352                         NDR_PULL_ALLOC(ndr, r->out.num_values);
2353                 }
2354                 _mem_save_num_values_0 = NDR_PULL_GET_MEM_CTX(ndr);
2355                 NDR_PULL_SET_MEM_CTX(ndr, r->out.num_values, LIBNDR_FLAG_REF_ALLOC);
2356                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.num_values));
2357                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_num_values_0, LIBNDR_FLAG_REF_ALLOC);
2358                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
2359                         NDR_PULL_ALLOC(ndr, r->out.max_valnamelen);
2360                 }
2361                 _mem_save_max_valnamelen_0 = NDR_PULL_GET_MEM_CTX(ndr);
2362                 NDR_PULL_SET_MEM_CTX(ndr, r->out.max_valnamelen, LIBNDR_FLAG_REF_ALLOC);
2363                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.max_valnamelen));
2364                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_max_valnamelen_0, LIBNDR_FLAG_REF_ALLOC);
2365                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
2366                         NDR_PULL_ALLOC(ndr, r->out.max_valbufsize);
2367                 }
2368                 _mem_save_max_valbufsize_0 = NDR_PULL_GET_MEM_CTX(ndr);
2369                 NDR_PULL_SET_MEM_CTX(ndr, r->out.max_valbufsize, LIBNDR_FLAG_REF_ALLOC);
2370                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.max_valbufsize));
2371                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_max_valbufsize_0, LIBNDR_FLAG_REF_ALLOC);
2372                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
2373                         NDR_PULL_ALLOC(ndr, r->out.secdescsize);
2374                 }
2375                 _mem_save_secdescsize_0 = NDR_PULL_GET_MEM_CTX(ndr);
2376                 NDR_PULL_SET_MEM_CTX(ndr, r->out.secdescsize, LIBNDR_FLAG_REF_ALLOC);
2377                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.secdescsize));
2378                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_secdescsize_0, LIBNDR_FLAG_REF_ALLOC);
2379                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
2380                         NDR_PULL_ALLOC(ndr, r->out.last_changed_time);
2381                 }
2382                 _mem_save_last_changed_time_0 = NDR_PULL_GET_MEM_CTX(ndr);
2383                 NDR_PULL_SET_MEM_CTX(ndr, r->out.last_changed_time, LIBNDR_FLAG_REF_ALLOC);
2384                 NDR_CHECK(ndr_pull_NTTIME(ndr, NDR_SCALARS, r->out.last_changed_time));
2385                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_last_changed_time_0, LIBNDR_FLAG_REF_ALLOC);
2386                 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
2387         }
2388         return NDR_ERR_SUCCESS;
2389 }
2390
2391 _PUBLIC_ void ndr_print_winreg_QueryInfoKey(struct ndr_print *ndr, const char *name, int flags, const struct winreg_QueryInfoKey *r)
2392 {
2393         ndr_print_struct(ndr, name, "winreg_QueryInfoKey");
2394         ndr->depth++;
2395         if (flags & NDR_SET_VALUES) {
2396                 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
2397         }
2398         if (flags & NDR_IN) {
2399                 ndr_print_struct(ndr, "in", "winreg_QueryInfoKey");
2400                 ndr->depth++;
2401                 ndr_print_ptr(ndr, "handle", r->in.handle);
2402                 ndr->depth++;
2403                 ndr_print_policy_handle(ndr, "handle", r->in.handle);
2404                 ndr->depth--;
2405                 ndr_print_ptr(ndr, "classname", r->in.classname);
2406                 ndr->depth++;
2407                 ndr_print_winreg_String(ndr, "classname", r->in.classname);
2408                 ndr->depth--;
2409                 ndr->depth--;
2410         }
2411         if (flags & NDR_OUT) {
2412                 ndr_print_struct(ndr, "out", "winreg_QueryInfoKey");
2413                 ndr->depth++;
2414                 ndr_print_ptr(ndr, "classname", r->out.classname);
2415                 ndr->depth++;
2416                 ndr_print_winreg_String(ndr, "classname", r->out.classname);
2417                 ndr->depth--;
2418                 ndr_print_ptr(ndr, "num_subkeys", r->out.num_subkeys);
2419                 ndr->depth++;
2420                 ndr_print_uint32(ndr, "num_subkeys", *r->out.num_subkeys);
2421                 ndr->depth--;
2422                 ndr_print_ptr(ndr, "max_subkeylen", r->out.max_subkeylen);
2423                 ndr->depth++;
2424                 ndr_print_uint32(ndr, "max_subkeylen", *r->out.max_subkeylen);
2425                 ndr->depth--;
2426                 ndr_print_ptr(ndr, "max_classlen", r->out.max_classlen);
2427                 ndr->depth++;
2428                 ndr_print_uint32(ndr, "max_classlen", *r->out.max_classlen);
2429                 ndr->depth--;
2430                 ndr_print_ptr(ndr, "num_values", r->out.num_values);
2431                 ndr->depth++;
2432                 ndr_print_uint32(ndr, "num_values", *r->out.num_values);
2433                 ndr->depth--;
2434                 ndr_print_ptr(ndr, "max_valnamelen", r->out.max_valnamelen);
2435                 ndr->depth++;
2436                 ndr_print_uint32(ndr, "max_valnamelen", *r->out.max_valnamelen);
2437                 ndr->depth--;
2438                 ndr_print_ptr(ndr, "max_valbufsize", r->out.max_valbufsize);
2439                 ndr->depth++;
2440                 ndr_print_uint32(ndr, "max_valbufsize", *r->out.max_valbufsize);
2441                 ndr->depth--;
2442                 ndr_print_ptr(ndr, "secdescsize", r->out.secdescsize);
2443                 ndr->depth++;
2444                 ndr_print_uint32(ndr, "secdescsize", *r->out.secdescsize);
2445                 ndr->depth--;
2446                 ndr_print_ptr(ndr, "last_changed_time", r->out.last_changed_time);
2447                 ndr->depth++;
2448                 ndr_print_NTTIME(ndr, "last_changed_time", *r->out.last_changed_time);
2449                 ndr->depth--;
2450                 ndr_print_WERROR(ndr, "result", r->out.result);
2451                 ndr->depth--;
2452         }
2453         ndr->depth--;
2454 }
2455
2456 _PUBLIC_ enum ndr_err_code ndr_push_winreg_QueryValue(struct ndr_push *ndr, int flags, const struct winreg_QueryValue *r)
2457 {
2458         if (flags & NDR_IN) {
2459                 if (r->in.handle == NULL) {
2460                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
2461                 }
2462                 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
2463                 if (r->in.value_name == NULL) {
2464                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
2465                 }
2466                 NDR_CHECK(ndr_push_winreg_String(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.value_name));
2467                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.type));
2468                 if (r->in.type) {
2469                         NDR_CHECK(ndr_push_winreg_Type(ndr, NDR_SCALARS, *r->in.type));
2470                 }
2471                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.data));
2472                 if (r->in.data) {
2473                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->in.data_size));
2474                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
2475                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->in.data_length));
2476                         NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->in.data, *r->in.data_length));
2477                 }
2478                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.data_size));
2479                 if (r->in.data_size) {
2480                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->in.data_size));
2481                 }
2482                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.data_length));
2483                 if (r->in.data_length) {
2484                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->in.data_length));
2485                 }
2486         }
2487         if (flags & NDR_OUT) {
2488                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->out.type));
2489                 if (r->out.type) {
2490                         NDR_CHECK(ndr_push_winreg_Type(ndr, NDR_SCALARS, *r->out.type));
2491                 }
2492                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->out.data));
2493                 if (r->out.data) {
2494                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.data_size));
2495                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
2496                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.data_length));
2497                         NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->out.data, *r->out.data_length));
2498                 }
2499                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->out.data_size));
2500                 if (r->out.data_size) {
2501                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.data_size));
2502                 }
2503                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->out.data_length));
2504                 if (r->out.data_length) {
2505                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.data_length));
2506                 }
2507                 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
2508         }
2509         return NDR_ERR_SUCCESS;
2510 }
2511
2512 _PUBLIC_ enum ndr_err_code ndr_pull_winreg_QueryValue(struct ndr_pull *ndr, int flags, struct winreg_QueryValue *r)
2513 {
2514         uint32_t _ptr_type;
2515         uint32_t _ptr_data;
2516         uint32_t _ptr_data_size;
2517         uint32_t _ptr_data_length;
2518         TALLOC_CTX *_mem_save_handle_0;
2519         TALLOC_CTX *_mem_save_value_name_0;
2520         TALLOC_CTX *_mem_save_type_0;
2521         TALLOC_CTX *_mem_save_data_0;
2522         TALLOC_CTX *_mem_save_data_size_0;
2523         TALLOC_CTX *_mem_save_data_length_0;
2524         if (flags & NDR_IN) {
2525                 ZERO_STRUCT(r->out);
2526
2527                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
2528                         NDR_PULL_ALLOC(ndr, r->in.handle);
2529                 }
2530                 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
2531                 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
2532                 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
2533                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
2534                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
2535                         NDR_PULL_ALLOC(ndr, r->in.value_name);
2536                 }
2537                 _mem_save_value_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
2538                 NDR_PULL_SET_MEM_CTX(ndr, r->in.value_name, LIBNDR_FLAG_REF_ALLOC);
2539                 NDR_CHECK(ndr_pull_winreg_String(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.value_name));
2540                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_value_name_0, LIBNDR_FLAG_REF_ALLOC);
2541                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_type));
2542                 if (_ptr_type) {
2543                         NDR_PULL_ALLOC(ndr, r->in.type);
2544                 } else {
2545                         r->in.type = NULL;
2546                 }
2547                 if (r->in.type) {
2548                         _mem_save_type_0 = NDR_PULL_GET_MEM_CTX(ndr);
2549                         NDR_PULL_SET_MEM_CTX(ndr, r->in.type, 0);
2550                         NDR_CHECK(ndr_pull_winreg_Type(ndr, NDR_SCALARS, r->in.type));
2551                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_type_0, 0);
2552                 }
2553                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_data));
2554                 if (_ptr_data) {
2555                         NDR_PULL_ALLOC(ndr, r->in.data);
2556                 } else {
2557                         r->in.data = NULL;
2558                 }
2559                 if (r->in.data) {
2560                         _mem_save_data_0 = NDR_PULL_GET_MEM_CTX(ndr);
2561                         NDR_PULL_SET_MEM_CTX(ndr, r->in.data, 0);
2562                         NDR_CHECK(ndr_pull_array_size(ndr, &r->in.data));
2563                         NDR_CHECK(ndr_pull_array_length(ndr, &r->in.data));
2564                         if (ndr_get_array_length(ndr, &r->in.data) > ndr_get_array_size(ndr, &r->in.data)) {
2565                                 return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.data), ndr_get_array_length(ndr, &r->in.data));
2566                         }
2567                         NDR_PULL_ALLOC_N(ndr, r->in.data, ndr_get_array_size(ndr, &r->in.data));
2568                         NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->in.data, ndr_get_array_length(ndr, &r->in.data)));
2569                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_data_0, 0);
2570                 }
2571                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_data_size));
2572                 if (_ptr_data_size) {
2573                         NDR_PULL_ALLOC(ndr, r->in.data_size);
2574                 } else {
2575                         r->in.data_size = NULL;
2576                 }
2577                 if (r->in.data_size) {
2578                         _mem_save_data_size_0 = NDR_PULL_GET_MEM_CTX(ndr);
2579                         NDR_PULL_SET_MEM_CTX(ndr, r->in.data_size, 0);
2580                         NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->in.data_size));
2581                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_data_size_0, 0);
2582                 }
2583                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_data_length));
2584                 if (_ptr_data_length) {
2585                         NDR_PULL_ALLOC(ndr, r->in.data_length);
2586                 } else {
2587                         r->in.data_length = NULL;
2588                 }
2589                 if (r->in.data_length) {
2590                         _mem_save_data_length_0 = NDR_PULL_GET_MEM_CTX(ndr);
2591                         NDR_PULL_SET_MEM_CTX(ndr, r->in.data_length, 0);
2592                         NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->in.data_length));
2593                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_data_length_0, 0);
2594                 }
2595                 if (r->in.data) {
2596                         if (r->in.data_size == NULL) return ndr_pull_error(ndr, NDR_ERR_INVALID_POINTER, "NULL Pointer for size_is()");
2597                         NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->in.data, *r->in.data_size));
2598                 }
2599                 if (r->in.data) {
2600                         if (r->in.data_length == NULL) return ndr_pull_error(ndr, NDR_ERR_INVALID_POINTER, "NULL Pointer for length_is()");
2601                         NDR_CHECK(ndr_check_array_length(ndr, (void*)&r->in.data, *r->in.data_length));
2602                 }
2603         }
2604         if (flags & NDR_OUT) {
2605                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_type));
2606                 if (_ptr_type) {
2607                         NDR_PULL_ALLOC(ndr, r->out.type);
2608                 } else {
2609                         r->out.type = NULL;
2610                 }
2611                 if (r->out.type) {
2612                         _mem_save_type_0 = NDR_PULL_GET_MEM_CTX(ndr);
2613                         NDR_PULL_SET_MEM_CTX(ndr, r->out.type, 0);
2614                         NDR_CHECK(ndr_pull_winreg_Type(ndr, NDR_SCALARS, r->out.type));
2615                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_type_0, 0);
2616                 }
2617                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_data));
2618                 if (_ptr_data) {
2619                         NDR_PULL_ALLOC(ndr, r->out.data);
2620                 } else {
2621                         r->out.data = NULL;
2622                 }
2623                 if (r->out.data) {
2624                         _mem_save_data_0 = NDR_PULL_GET_MEM_CTX(ndr);
2625                         NDR_PULL_SET_MEM_CTX(ndr, r->out.data, 0);
2626                         NDR_CHECK(ndr_pull_array_size(ndr, &r->out.data));
2627                         NDR_CHECK(ndr_pull_array_length(ndr, &r->out.data));
2628                         if (ndr_get_array_length(ndr, &r->out.data) > ndr_get_array_size(ndr, &r->out.data)) {
2629                                 return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->out.data), ndr_get_array_length(ndr, &r->out.data));
2630                         }
2631                         NDR_PULL_ALLOC_N(ndr, r->out.data, ndr_get_array_size(ndr, &r->out.data));
2632                         NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->out.data, ndr_get_array_length(ndr, &r->out.data)));
2633                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_data_0, 0);
2634                 }
2635                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_data_size));
2636                 if (_ptr_data_size) {
2637                         NDR_PULL_ALLOC(ndr, r->out.data_size);
2638                 } else {
2639                         r->out.data_size = NULL;
2640                 }
2641                 if (r->out.data_size) {
2642                         _mem_save_data_size_0 = NDR_PULL_GET_MEM_CTX(ndr);
2643                         NDR_PULL_SET_MEM_CTX(ndr, r->out.data_size, 0);
2644                         NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.data_size));
2645                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_data_size_0, 0);
2646                 }
2647                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_data_length));
2648                 if (_ptr_data_length) {
2649                         NDR_PULL_ALLOC(ndr, r->out.data_length);
2650                 } else {
2651                         r->out.data_length = NULL;
2652                 }
2653                 if (r->out.data_length) {
2654                         _mem_save_data_length_0 = NDR_PULL_GET_MEM_CTX(ndr);
2655                         NDR_PULL_SET_MEM_CTX(ndr, r->out.data_length, 0);
2656                         NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.data_length));
2657                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_data_length_0, 0);
2658                 }
2659                 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
2660                 if (r->out.data) {
2661                         if (r->out.data_size == NULL) return ndr_pull_error(ndr, NDR_ERR_INVALID_POINTER, "NULL Pointer for size_is()");
2662                         NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->out.data, *r->out.data_size));
2663                 }
2664                 if (r->out.data) {
2665                         if (r->out.data_length == NULL) return ndr_pull_error(ndr, NDR_ERR_INVALID_POINTER, "NULL Pointer for length_is()");
2666                         NDR_CHECK(ndr_check_array_length(ndr, (void*)&r->out.data, *r->out.data_length));
2667                 }
2668         }
2669         return NDR_ERR_SUCCESS;
2670 }
2671
2672 _PUBLIC_ void ndr_print_winreg_QueryValue(struct ndr_print *ndr, const char *name, int flags, const struct winreg_QueryValue *r)
2673 {
2674         ndr_print_struct(ndr, name, "winreg_QueryValue");
2675         ndr->depth++;
2676         if (flags & NDR_SET_VALUES) {
2677                 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
2678         }
2679         if (flags & NDR_IN) {
2680                 ndr_print_struct(ndr, "in", "winreg_QueryValue");
2681                 ndr->depth++;
2682                 ndr_print_ptr(ndr, "handle", r->in.handle);
2683                 ndr->depth++;
2684                 ndr_print_policy_handle(ndr, "handle", r->in.handle);
2685                 ndr->depth--;
2686                 ndr_print_ptr(ndr, "value_name", r->in.value_name);
2687                 ndr->depth++;
2688                 ndr_print_winreg_String(ndr, "value_name", r->in.value_name);
2689                 ndr->depth--;
2690                 ndr_print_ptr(ndr, "type", r->in.type);
2691                 ndr->depth++;
2692                 if (r->in.type) {
2693                         ndr_print_winreg_Type(ndr, "type", *r->in.type);
2694                 }
2695                 ndr->depth--;
2696                 ndr_print_ptr(ndr, "data", r->in.data);
2697                 ndr->depth++;
2698                 if (r->in.data) {
2699                         if (r->in.data_length == NULL) return;
2700                         ndr_print_array_uint8(ndr, "data", r->in.data, *r->in.data_length);
2701                 }
2702                 ndr->depth--;
2703                 ndr_print_ptr(ndr, "data_size", r->in.data_size);
2704                 ndr->depth++;
2705                 if (r->in.data_size) {
2706                         ndr_print_uint32(ndr, "data_size", *r->in.data_size);
2707                 }
2708                 ndr->depth--;
2709                 ndr_print_ptr(ndr, "data_length", r->in.data_length);
2710                 ndr->depth++;
2711                 if (r->in.data_length) {
2712                         ndr_print_uint32(ndr, "data_length", *r->in.data_length);
2713                 }
2714                 ndr->depth--;
2715                 ndr->depth--;
2716         }
2717         if (flags & NDR_OUT) {
2718                 ndr_print_struct(ndr, "out", "winreg_QueryValue");
2719                 ndr->depth++;
2720                 ndr_print_ptr(ndr, "type", r->out.type);
2721                 ndr->depth++;
2722                 if (r->out.type) {
2723                         ndr_print_winreg_Type(ndr, "type", *r->out.type);
2724                 }
2725                 ndr->depth--;
2726                 ndr_print_ptr(ndr, "data", r->out.data);
2727                 ndr->depth++;
2728                 if (r->out.data) {
2729                         if (r->out.data_length == NULL) return;
2730                         ndr_print_array_uint8(ndr, "data", r->out.data, *r->out.data_length);
2731                 }
2732                 ndr->depth--;
2733                 ndr_print_ptr(ndr, "data_size", r->out.data_size);
2734                 ndr->depth++;
2735                 if (r->out.data_size) {
2736                         ndr_print_uint32(ndr, "data_size", *r->out.data_size);
2737                 }
2738                 ndr->depth--;
2739                 ndr_print_ptr(ndr, "data_length", r->out.data_length);
2740                 ndr->depth++;
2741                 if (r->out.data_length) {
2742                         ndr_print_uint32(ndr, "data_length", *r->out.data_length);
2743                 }
2744                 ndr->depth--;
2745                 ndr_print_WERROR(ndr, "result", r->out.result);
2746                 ndr->depth--;
2747         }
2748         ndr->depth--;
2749 }
2750
2751 static enum ndr_err_code ndr_push_winreg_ReplaceKey(struct ndr_push *ndr, int flags, const struct winreg_ReplaceKey *r)
2752 {
2753         if (flags & NDR_IN) {
2754         }
2755         if (flags & NDR_OUT) {
2756                 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
2757         }
2758         return NDR_ERR_SUCCESS;
2759 }
2760
2761 static enum ndr_err_code ndr_pull_winreg_ReplaceKey(struct ndr_pull *ndr, int flags, struct winreg_ReplaceKey *r)
2762 {
2763         if (flags & NDR_IN) {
2764         }
2765         if (flags & NDR_OUT) {
2766                 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
2767         }
2768         return NDR_ERR_SUCCESS;
2769 }
2770
2771 _PUBLIC_ void ndr_print_winreg_ReplaceKey(struct ndr_print *ndr, const char *name, int flags, const struct winreg_ReplaceKey *r)
2772 {
2773         ndr_print_struct(ndr, name, "winreg_ReplaceKey");
2774         ndr->depth++;
2775         if (flags & NDR_SET_VALUES) {
2776                 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
2777         }
2778         if (flags & NDR_IN) {
2779                 ndr_print_struct(ndr, "in", "winreg_ReplaceKey");
2780                 ndr->depth++;
2781                 ndr->depth--;
2782         }
2783         if (flags & NDR_OUT) {
2784                 ndr_print_struct(ndr, "out", "winreg_ReplaceKey");
2785                 ndr->depth++;
2786                 ndr_print_WERROR(ndr, "result", r->out.result);
2787                 ndr->depth--;
2788         }
2789         ndr->depth--;
2790 }
2791
2792 static enum ndr_err_code ndr_push_winreg_RestoreKey(struct ndr_push *ndr, int flags, const struct winreg_RestoreKey *r)
2793 {
2794         if (flags & NDR_IN) {
2795                 if (r->in.handle == NULL) {
2796                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
2797                 }
2798                 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
2799                 if (r->in.filename == NULL) {
2800                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
2801                 }
2802                 NDR_CHECK(ndr_push_winreg_String(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.filename));
2803                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.flags));
2804         }
2805         if (flags & NDR_OUT) {
2806                 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
2807         }
2808         return NDR_ERR_SUCCESS;
2809 }
2810
2811 static enum ndr_err_code ndr_pull_winreg_RestoreKey(struct ndr_pull *ndr, int flags, struct winreg_RestoreKey *r)
2812 {
2813         TALLOC_CTX *_mem_save_handle_0;
2814         TALLOC_CTX *_mem_save_filename_0;
2815         if (flags & NDR_IN) {
2816                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
2817                         NDR_PULL_ALLOC(ndr, r->in.handle);
2818                 }
2819                 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
2820                 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
2821                 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
2822                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
2823                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
2824                         NDR_PULL_ALLOC(ndr, r->in.filename);
2825                 }
2826                 _mem_save_filename_0 = NDR_PULL_GET_MEM_CTX(ndr);
2827                 NDR_PULL_SET_MEM_CTX(ndr, r->in.filename, LIBNDR_FLAG_REF_ALLOC);
2828                 NDR_CHECK(ndr_pull_winreg_String(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.filename));
2829                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_filename_0, LIBNDR_FLAG_REF_ALLOC);
2830                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.flags));
2831         }
2832         if (flags & NDR_OUT) {
2833                 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
2834         }
2835         return NDR_ERR_SUCCESS;
2836 }
2837
2838 _PUBLIC_ void ndr_print_winreg_RestoreKey(struct ndr_print *ndr, const char *name, int flags, const struct winreg_RestoreKey *r)
2839 {
2840         ndr_print_struct(ndr, name, "winreg_RestoreKey");
2841         ndr->depth++;
2842         if (flags & NDR_SET_VALUES) {
2843                 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
2844         }
2845         if (flags & NDR_IN) {
2846                 ndr_print_struct(ndr, "in", "winreg_RestoreKey");
2847                 ndr->depth++;
2848                 ndr_print_ptr(ndr, "handle", r->in.handle);
2849                 ndr->depth++;
2850                 ndr_print_policy_handle(ndr, "handle", r->in.handle);
2851                 ndr->depth--;
2852                 ndr_print_ptr(ndr, "filename", r->in.filename);
2853                 ndr->depth++;
2854                 ndr_print_winreg_String(ndr, "filename", r->in.filename);
2855                 ndr->depth--;
2856                 ndr_print_uint32(ndr, "flags", r->in.flags);
2857                 ndr->depth--;
2858         }
2859         if (flags & NDR_OUT) {
2860                 ndr_print_struct(ndr, "out", "winreg_RestoreKey");
2861                 ndr->depth++;
2862                 ndr_print_WERROR(ndr, "result", r->out.result);
2863                 ndr->depth--;
2864         }
2865         ndr->depth--;
2866 }
2867
2868 static enum ndr_err_code ndr_push_winreg_SaveKey(struct ndr_push *ndr, int flags, const struct winreg_SaveKey *r)
2869 {
2870         if (flags & NDR_IN) {
2871                 if (r->in.handle == NULL) {
2872                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
2873                 }
2874                 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
2875                 if (r->in.filename == NULL) {
2876                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
2877                 }
2878                 NDR_CHECK(ndr_push_winreg_String(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.filename));
2879                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.sec_attrib));
2880                 if (r->in.sec_attrib) {
2881                         NDR_CHECK(ndr_push_KeySecurityAttribute(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.sec_attrib));
2882                 }
2883         }
2884         if (flags & NDR_OUT) {
2885                 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
2886         }
2887         return NDR_ERR_SUCCESS;
2888 }
2889
2890 static enum ndr_err_code ndr_pull_winreg_SaveKey(struct ndr_pull *ndr, int flags, struct winreg_SaveKey *r)
2891 {
2892         uint32_t _ptr_sec_attrib;
2893         TALLOC_CTX *_mem_save_handle_0;
2894         TALLOC_CTX *_mem_save_filename_0;
2895         TALLOC_CTX *_mem_save_sec_attrib_0;
2896         if (flags & NDR_IN) {
2897                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
2898                         NDR_PULL_ALLOC(ndr, r->in.handle);
2899                 }
2900                 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
2901                 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
2902                 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
2903                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
2904                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
2905                         NDR_PULL_ALLOC(ndr, r->in.filename);
2906                 }
2907                 _mem_save_filename_0 = NDR_PULL_GET_MEM_CTX(ndr);
2908                 NDR_PULL_SET_MEM_CTX(ndr, r->in.filename, LIBNDR_FLAG_REF_ALLOC);
2909                 NDR_CHECK(ndr_pull_winreg_String(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.filename));
2910                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_filename_0, LIBNDR_FLAG_REF_ALLOC);
2911                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_sec_attrib));
2912                 if (_ptr_sec_attrib) {
2913                         NDR_PULL_ALLOC(ndr, r->in.sec_attrib);
2914                 } else {
2915                         r->in.sec_attrib = NULL;
2916                 }
2917                 if (r->in.sec_attrib) {
2918                         _mem_save_sec_attrib_0 = NDR_PULL_GET_MEM_CTX(ndr);
2919                         NDR_PULL_SET_MEM_CTX(ndr, r->in.sec_attrib, 0);
2920                         NDR_CHECK(ndr_pull_KeySecurityAttribute(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.sec_attrib));
2921                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_sec_attrib_0, 0);
2922                 }
2923         }
2924         if (flags & NDR_OUT) {
2925                 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
2926         }
2927         return NDR_ERR_SUCCESS;
2928 }
2929
2930 _PUBLIC_ void ndr_print_winreg_SaveKey(struct ndr_print *ndr, const char *name, int flags, const struct winreg_SaveKey *r)
2931 {
2932         ndr_print_struct(ndr, name, "winreg_SaveKey");
2933         ndr->depth++;
2934         if (flags & NDR_SET_VALUES) {
2935                 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
2936         }
2937         if (flags & NDR_IN) {
2938                 ndr_print_struct(ndr, "in", "winreg_SaveKey");
2939                 ndr->depth++;
2940                 ndr_print_ptr(ndr, "handle", r->in.handle);
2941                 ndr->depth++;
2942                 ndr_print_policy_handle(ndr, "handle", r->in.handle);
2943                 ndr->depth--;
2944                 ndr_print_ptr(ndr, "filename", r->in.filename);
2945                 ndr->depth++;
2946                 ndr_print_winreg_String(ndr, "filename", r->in.filename);
2947                 ndr->depth--;
2948                 ndr_print_ptr(ndr, "sec_attrib", r->in.sec_attrib);
2949                 ndr->depth++;
2950                 if (r->in.sec_attrib) {
2951                         ndr_print_KeySecurityAttribute(ndr, "sec_attrib", r->in.sec_attrib);
2952                 }
2953                 ndr->depth--;
2954                 ndr->depth--;
2955         }
2956         if (flags & NDR_OUT) {
2957                 ndr_print_struct(ndr, "out", "winreg_SaveKey");
2958                 ndr->depth++;
2959                 ndr_print_WERROR(ndr, "result", r->out.result);
2960                 ndr->depth--;
2961         }
2962         ndr->depth--;
2963 }
2964
2965 static enum ndr_err_code ndr_push_winreg_SetKeySecurity(struct ndr_push *ndr, int flags, const struct winreg_SetKeySecurity *r)
2966 {
2967         if (flags & NDR_IN) {
2968                 if (r->in.handle == NULL) {
2969                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
2970                 }
2971                 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
2972                 NDR_CHECK(ndr_push_security_secinfo(ndr, NDR_SCALARS, r->in.sec_info));
2973                 if (r->in.sd == NULL) {
2974                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
2975                 }
2976                 NDR_CHECK(ndr_push_KeySecurityData(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.sd));
2977         }
2978         if (flags & NDR_OUT) {
2979                 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
2980         }
2981         return NDR_ERR_SUCCESS;
2982 }
2983
2984 static enum ndr_err_code ndr_pull_winreg_SetKeySecurity(struct ndr_pull *ndr, int flags, struct winreg_SetKeySecurity *r)
2985 {
2986         TALLOC_CTX *_mem_save_handle_0;
2987         TALLOC_CTX *_mem_save_sd_0;
2988         if (flags & NDR_IN) {
2989                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
2990                         NDR_PULL_ALLOC(ndr, r->in.handle);
2991                 }
2992                 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
2993                 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
2994                 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
2995                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
2996                 NDR_CHECK(ndr_pull_security_secinfo(ndr, NDR_SCALARS, &r->in.sec_info));
2997                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
2998                         NDR_PULL_ALLOC(ndr, r->in.sd);
2999                 }
3000                 _mem_save_sd_0 = NDR_PULL_GET_MEM_CTX(ndr);
3001                 NDR_PULL_SET_MEM_CTX(ndr, r->in.sd, LIBNDR_FLAG_REF_ALLOC);
3002                 NDR_CHECK(ndr_pull_KeySecurityData(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.sd));
3003                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_sd_0, LIBNDR_FLAG_REF_ALLOC);
3004         }
3005         if (flags & NDR_OUT) {
3006                 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
3007         }
3008         return NDR_ERR_SUCCESS;
3009 }
3010
3011 _PUBLIC_ void ndr_print_winreg_SetKeySecurity(struct ndr_print *ndr, const char *name, int flags, const struct winreg_SetKeySecurity *r)
3012 {
3013         ndr_print_struct(ndr, name, "winreg_SetKeySecurity");
3014         ndr->depth++;
3015         if (flags & NDR_SET_VALUES) {
3016                 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
3017         }
3018         if (flags & NDR_IN) {
3019                 ndr_print_struct(ndr, "in", "winreg_SetKeySecurity");
3020                 ndr->depth++;
3021                 ndr_print_ptr(ndr, "handle", r->in.handle);
3022                 ndr->depth++;
3023                 ndr_print_policy_handle(ndr, "handle", r->in.handle);
3024                 ndr->depth--;
3025                 ndr_print_security_secinfo(ndr, "sec_info", r->in.sec_info);
3026                 ndr_print_ptr(ndr, "sd", r->in.sd);
3027                 ndr->depth++;
3028                 ndr_print_KeySecurityData(ndr, "sd", r->in.sd);
3029                 ndr->depth--;
3030                 ndr->depth--;
3031         }
3032         if (flags & NDR_OUT) {
3033                 ndr_print_struct(ndr, "out", "winreg_SetKeySecurity");
3034                 ndr->depth++;
3035                 ndr_print_WERROR(ndr, "result", r->out.result);
3036                 ndr->depth--;
3037         }
3038         ndr->depth--;
3039 }
3040
3041 static enum ndr_err_code ndr_push_winreg_SetValue(struct ndr_push *ndr, int flags, const struct winreg_SetValue *r)
3042 {
3043         if (flags & NDR_IN) {
3044                 if (r->in.handle == NULL) {
3045                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
3046                 }
3047                 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
3048                 NDR_CHECK(ndr_push_winreg_String(ndr, NDR_SCALARS|NDR_BUFFERS, &r->in.name));
3049                 NDR_CHECK(ndr_push_winreg_Type(ndr, NDR_SCALARS, r->in.type));
3050                 if (r->in.data == NULL) {
3051                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
3052                 }
3053                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.size));
3054                 NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->in.data, r->in.size));
3055                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.size));
3056         }
3057         if (flags & NDR_OUT) {
3058                 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
3059         }
3060         return NDR_ERR_SUCCESS;
3061 }
3062
3063 static enum ndr_err_code ndr_pull_winreg_SetValue(struct ndr_pull *ndr, int flags, struct winreg_SetValue *r)
3064 {
3065         TALLOC_CTX *_mem_save_handle_0;
3066         if (flags & NDR_IN) {
3067                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
3068                         NDR_PULL_ALLOC(ndr, r->in.handle);
3069                 }
3070                 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
3071                 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
3072                 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
3073                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
3074                 NDR_CHECK(ndr_pull_winreg_String(ndr, NDR_SCALARS|NDR_BUFFERS, &r->in.name));
3075                 NDR_CHECK(ndr_pull_winreg_Type(ndr, NDR_SCALARS, &r->in.type));
3076                 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.data));
3077                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
3078                         NDR_PULL_ALLOC_N(ndr, r->in.data, ndr_get_array_size(ndr, &r->in.data));
3079                 }
3080                 NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->in.data, ndr_get_array_size(ndr, &r->in.data)));
3081                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.size));
3082                 if (r->in.data) {
3083                         NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->in.data, r->in.size));
3084                 }
3085         }
3086         if (flags & NDR_OUT) {
3087                 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
3088         }
3089         return NDR_ERR_SUCCESS;
3090 }
3091
3092 _PUBLIC_ void ndr_print_winreg_SetValue(struct ndr_print *ndr, const char *name, int flags, const struct winreg_SetValue *r)
3093 {
3094         ndr_print_struct(ndr, name, "winreg_SetValue");
3095         ndr->depth++;
3096         if (flags & NDR_SET_VALUES) {
3097                 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
3098         }
3099         if (flags & NDR_IN) {
3100                 ndr_print_struct(ndr, "in", "winreg_SetValue");
3101                 ndr->depth++;
3102                 ndr_print_ptr(ndr, "handle", r->in.handle);
3103                 ndr->depth++;
3104                 ndr_print_policy_handle(ndr, "handle", r->in.handle);
3105                 ndr->depth--;
3106                 ndr_print_winreg_String(ndr, "name", &r->in.name);
3107                 ndr_print_winreg_Type(ndr, "type", r->in.type);
3108                 ndr_print_ptr(ndr, "data", r->in.data);
3109                 ndr->depth++;
3110                 ndr_print_array_uint8(ndr, "data", r->in.data, r->in.size);
3111                 ndr->depth--;
3112                 ndr_print_uint32(ndr, "size", r->in.size);
3113                 ndr->depth--;
3114         }
3115         if (flags & NDR_OUT) {
3116                 ndr_print_struct(ndr, "out", "winreg_SetValue");
3117                 ndr->depth++;
3118                 ndr_print_WERROR(ndr, "result", r->out.result);
3119                 ndr->depth--;
3120         }
3121         ndr->depth--;
3122 }
3123
3124 static enum ndr_err_code ndr_push_winreg_UnLoadKey(struct ndr_push *ndr, int flags, const struct winreg_UnLoadKey *r)
3125 {
3126         if (flags & NDR_IN) {
3127         }
3128         if (flags & NDR_OUT) {
3129                 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
3130         }
3131         return NDR_ERR_SUCCESS;
3132 }
3133
3134 static enum ndr_err_code ndr_pull_winreg_UnLoadKey(struct ndr_pull *ndr, int flags, struct winreg_UnLoadKey *r)
3135 {
3136         if (flags & NDR_IN) {
3137         }
3138         if (flags & NDR_OUT) {
3139                 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
3140         }
3141         return NDR_ERR_SUCCESS;
3142 }
3143
3144 _PUBLIC_ void ndr_print_winreg_UnLoadKey(struct ndr_print *ndr, const char *name, int flags, const struct winreg_UnLoadKey *r)
3145 {
3146         ndr_print_struct(ndr, name, "winreg_UnLoadKey");
3147         ndr->depth++;
3148         if (flags & NDR_SET_VALUES) {
3149                 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
3150         }
3151         if (flags & NDR_IN) {
3152                 ndr_print_struct(ndr, "in", "winreg_UnLoadKey");
3153                 ndr->depth++;
3154                 ndr->depth--;
3155         }
3156         if (flags & NDR_OUT) {
3157                 ndr_print_struct(ndr, "out", "winreg_UnLoadKey");
3158                 ndr->depth++;
3159                 ndr_print_WERROR(ndr, "result", r->out.result);
3160                 ndr->depth--;
3161         }
3162         ndr->depth--;
3163 }
3164
3165 static enum ndr_err_code ndr_push_winreg_InitiateSystemShutdown(struct ndr_push *ndr, int flags, const struct winreg_InitiateSystemShutdown *r)
3166 {
3167         if (flags & NDR_IN) {
3168                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.hostname));
3169                 if (r->in.hostname) {
3170                         NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, *r->in.hostname));
3171                 }
3172                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.message));
3173                 if (r->in.message) {
3174                         NDR_CHECK(ndr_push_lsa_StringLarge(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.message));
3175                 }
3176                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.timeout));
3177                 NDR_CHECK(ndr_push_uint8(ndr, NDR_SCALARS, r->in.force_apps));
3178                 NDR_CHECK(ndr_push_uint8(ndr, NDR_SCALARS, r->in.do_reboot));
3179         }
3180         if (flags & NDR_OUT) {
3181                 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
3182         }
3183         return NDR_ERR_SUCCESS;
3184 }
3185
3186 static enum ndr_err_code ndr_pull_winreg_InitiateSystemShutdown(struct ndr_pull *ndr, int flags, struct winreg_InitiateSystemShutdown *r)
3187 {
3188         uint32_t _ptr_hostname;
3189         uint32_t _ptr_message;
3190         TALLOC_CTX *_mem_save_hostname_0;
3191         TALLOC_CTX *_mem_save_message_0;
3192         if (flags & NDR_IN) {
3193                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_hostname));
3194                 if (_ptr_hostname) {
3195                         NDR_PULL_ALLOC(ndr, r->in.hostname);
3196                 } else {
3197                         r->in.hostname = NULL;
3198                 }
3199                 if (r->in.hostname) {
3200                         _mem_save_hostname_0 = NDR_PULL_GET_MEM_CTX(ndr);
3201                         NDR_PULL_SET_MEM_CTX(ndr, r->in.hostname, 0);
3202                         NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, r->in.hostname));
3203                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_hostname_0, 0);
3204                 }
3205                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_message));
3206                 if (_ptr_message) {
3207                         NDR_PULL_ALLOC(ndr, r->in.message);
3208                 } else {
3209                         r->in.message = NULL;
3210                 }
3211                 if (r->in.message) {
3212                         _mem_save_message_0 = NDR_PULL_GET_MEM_CTX(ndr);
3213                         NDR_PULL_SET_MEM_CTX(ndr, r->in.message, 0);
3214                         NDR_CHECK(ndr_pull_lsa_StringLarge(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.message));
3215                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_message_0, 0);
3216                 }
3217                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.timeout));
3218                 NDR_CHECK(ndr_pull_uint8(ndr, NDR_SCALARS, &r->in.force_apps));
3219                 NDR_CHECK(ndr_pull_uint8(ndr, NDR_SCALARS, &r->in.do_reboot));
3220         }
3221         if (flags & NDR_OUT) {
3222                 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
3223         }
3224         return NDR_ERR_SUCCESS;
3225 }
3226
3227 _PUBLIC_ void ndr_print_winreg_InitiateSystemShutdown(struct ndr_print *ndr, const char *name, int flags, const struct winreg_InitiateSystemShutdown *r)
3228 {
3229         ndr_print_struct(ndr, name, "winreg_InitiateSystemShutdown");
3230         ndr->depth++;
3231         if (flags & NDR_SET_VALUES) {
3232                 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
3233         }
3234         if (flags & NDR_IN) {
3235                 ndr_print_struct(ndr, "in", "winreg_InitiateSystemShutdown");
3236                 ndr->depth++;
3237                 ndr_print_ptr(ndr, "hostname", r->in.hostname);
3238                 ndr->depth++;
3239                 if (r->in.hostname) {
3240                         ndr_print_uint16(ndr, "hostname", *r->in.hostname);
3241                 }
3242                 ndr->depth--;
3243                 ndr_print_ptr(ndr, "message", r->in.message);
3244                 ndr->depth++;
3245                 if (r->in.message) {
3246                         ndr_print_lsa_StringLarge(ndr, "message", r->in.message);
3247                 }
3248                 ndr->depth--;
3249                 ndr_print_uint32(ndr, "timeout", r->in.timeout);
3250                 ndr_print_uint8(ndr, "force_apps", r->in.force_apps);
3251                 ndr_print_uint8(ndr, "do_reboot", r->in.do_reboot);
3252                 ndr->depth--;
3253         }
3254         if (flags & NDR_OUT) {
3255                 ndr_print_struct(ndr, "out", "winreg_InitiateSystemShutdown");
3256                 ndr->depth++;
3257                 ndr_print_WERROR(ndr, "result", r->out.result);
3258                 ndr->depth--;
3259         }
3260         ndr->depth--;
3261 }
3262
3263 static enum ndr_err_code ndr_push_winreg_AbortSystemShutdown(struct ndr_push *ndr, int flags, const struct winreg_AbortSystemShutdown *r)
3264 {
3265         if (flags & NDR_IN) {
3266                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.server));
3267                 if (r->in.server) {
3268                         NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, *r->in.server));
3269                 }
3270         }
3271         if (flags & NDR_OUT) {
3272                 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
3273         }
3274         return NDR_ERR_SUCCESS;
3275 }
3276
3277 static enum ndr_err_code ndr_pull_winreg_AbortSystemShutdown(struct ndr_pull *ndr, int flags, struct winreg_AbortSystemShutdown *r)
3278 {
3279         uint32_t _ptr_server;
3280         TALLOC_CTX *_mem_save_server_0;
3281         if (flags & NDR_IN) {
3282                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_server));
3283                 if (_ptr_server) {
3284                         NDR_PULL_ALLOC(ndr, r->in.server);
3285                 } else {
3286                         r->in.server = NULL;
3287                 }
3288                 if (r->in.server) {
3289                         _mem_save_server_0 = NDR_PULL_GET_MEM_CTX(ndr);
3290                         NDR_PULL_SET_MEM_CTX(ndr, r->in.server, 0);
3291                         NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, r->in.server));
3292                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_server_0, 0);
3293                 }
3294         }
3295         if (flags & NDR_OUT) {
3296                 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
3297         }
3298         return NDR_ERR_SUCCESS;
3299 }
3300
3301 _PUBLIC_ void ndr_print_winreg_AbortSystemShutdown(struct ndr_print *ndr, const char *name, int flags, const struct winreg_AbortSystemShutdown *r)
3302 {
3303         ndr_print_struct(ndr, name, "winreg_AbortSystemShutdown");
3304         ndr->depth++;
3305         if (flags & NDR_SET_VALUES) {
3306                 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
3307         }
3308         if (flags & NDR_IN) {
3309                 ndr_print_struct(ndr, "in", "winreg_AbortSystemShutdown");
3310                 ndr->depth++;
3311                 ndr_print_ptr(ndr, "server", r->in.server);
3312                 ndr->depth++;
3313                 if (r->in.server) {
3314                         ndr_print_uint16(ndr, "server", *r->in.server);
3315                 }
3316                 ndr->depth--;
3317                 ndr->depth--;
3318         }
3319         if (flags & NDR_OUT) {
3320                 ndr_print_struct(ndr, "out", "winreg_AbortSystemShutdown");
3321                 ndr->depth++;
3322                 ndr_print_WERROR(ndr, "result", r->out.result);
3323                 ndr->depth--;
3324         }
3325         ndr->depth--;
3326 }
3327
3328 _PUBLIC_ enum ndr_err_code ndr_push_winreg_GetVersion(struct ndr_push *ndr, int flags, const struct winreg_GetVersion *r)
3329 {
3330         if (flags & NDR_IN) {
3331                 if (r->in.handle == NULL) {
3332                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
3333                 }
3334                 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
3335         }
3336         if (flags & NDR_OUT) {
3337                 if (r->out.version == NULL) {
3338                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
3339                 }
3340                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.version));
3341                 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
3342         }
3343         return NDR_ERR_SUCCESS;
3344 }
3345
3346 _PUBLIC_ enum ndr_err_code ndr_pull_winreg_GetVersion(struct ndr_pull *ndr, int flags, struct winreg_GetVersion *r)
3347 {
3348         TALLOC_CTX *_mem_save_handle_0;
3349         TALLOC_CTX *_mem_save_version_0;
3350         if (flags & NDR_IN) {
3351                 ZERO_STRUCT(r->out);
3352
3353                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
3354                         NDR_PULL_ALLOC(ndr, r->in.handle);
3355                 }
3356                 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
3357                 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
3358                 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
3359                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
3360                 NDR_PULL_ALLOC(ndr, r->out.version);
3361                 ZERO_STRUCTP(r->out.version);
3362         }
3363         if (flags & NDR_OUT) {
3364                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
3365                         NDR_PULL_ALLOC(ndr, r->out.version);
3366                 }
3367                 _mem_save_version_0 = NDR_PULL_GET_MEM_CTX(ndr);
3368                 NDR_PULL_SET_MEM_CTX(ndr, r->out.version, LIBNDR_FLAG_REF_ALLOC);
3369                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.version));
3370                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_version_0, LIBNDR_FLAG_REF_ALLOC);
3371                 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
3372         }
3373         return NDR_ERR_SUCCESS;
3374 }
3375
3376 _PUBLIC_ void ndr_print_winreg_GetVersion(struct ndr_print *ndr, const char *name, int flags, const struct winreg_GetVersion *r)
3377 {
3378         ndr_print_struct(ndr, name, "winreg_GetVersion");
3379         ndr->depth++;
3380         if (flags & NDR_SET_VALUES) {
3381                 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
3382         }
3383         if (flags & NDR_IN) {
3384                 ndr_print_struct(ndr, "in", "winreg_GetVersion");
3385                 ndr->depth++;
3386                 ndr_print_ptr(ndr, "handle", r->in.handle);
3387                 ndr->depth++;
3388                 ndr_print_policy_handle(ndr, "handle", r->in.handle);
3389                 ndr->depth--;
3390                 ndr->depth--;
3391         }
3392         if (flags & NDR_OUT) {
3393                 ndr_print_struct(ndr, "out", "winreg_GetVersion");
3394                 ndr->depth++;
3395                 ndr_print_ptr(ndr, "version", r->out.version);
3396                 ndr->depth++;
3397                 ndr_print_uint32(ndr, "version", *r->out.version);
3398                 ndr->depth--;
3399                 ndr_print_WERROR(ndr, "result", r->out.result);
3400                 ndr->depth--;
3401         }
3402         ndr->depth--;
3403 }
3404
3405 static enum ndr_err_code ndr_push_winreg_OpenHKCC(struct ndr_push *ndr, int flags, const struct winreg_OpenHKCC *r)
3406 {
3407         if (flags & NDR_IN) {
3408                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.system_name));
3409                 if (r->in.system_name) {
3410                         NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, *r->in.system_name));
3411                 }
3412                 NDR_CHECK(ndr_push_winreg_AccessMask(ndr, NDR_SCALARS, r->in.access_mask));
3413         }
3414         if (flags & NDR_OUT) {
3415                 if (r->out.handle == NULL) {
3416                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
3417                 }
3418                 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->out.handle));
3419                 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
3420         }
3421         return NDR_ERR_SUCCESS;
3422 }
3423
3424 static enum ndr_err_code ndr_pull_winreg_OpenHKCC(struct ndr_pull *ndr, int flags, struct winreg_OpenHKCC *r)
3425 {
3426         uint32_t _ptr_system_name;
3427         TALLOC_CTX *_mem_save_system_name_0;
3428         TALLOC_CTX *_mem_save_handle_0;
3429         if (flags & NDR_IN) {
3430                 ZERO_STRUCT(r->out);
3431
3432                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_system_name));
3433                 if (_ptr_system_name) {
3434                         NDR_PULL_ALLOC(ndr, r->in.system_name);
3435                 } else {
3436                         r->in.system_name = NULL;
3437                 }
3438                 if (r->in.system_name) {
3439                         _mem_save_system_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
3440                         NDR_PULL_SET_MEM_CTX(ndr, r->in.system_name, 0);
3441                         NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, r->in.system_name));
3442                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_system_name_0, 0);
3443                 }
3444                 NDR_CHECK(ndr_pull_winreg_AccessMask(ndr, NDR_SCALARS, &r->in.access_mask));
3445                 NDR_PULL_ALLOC(ndr, r->out.handle);
3446                 ZERO_STRUCTP(r->out.handle);
3447         }
3448         if (flags & NDR_OUT) {
3449                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
3450                         NDR_PULL_ALLOC(ndr, r->out.handle);
3451                 }
3452                 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
3453                 NDR_PULL_SET_MEM_CTX(ndr, r->out.handle, LIBNDR_FLAG_REF_ALLOC);
3454                 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->out.handle));
3455                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
3456                 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
3457         }
3458         return NDR_ERR_SUCCESS;
3459 }
3460
3461 _PUBLIC_ void ndr_print_winreg_OpenHKCC(struct ndr_print *ndr, const char *name, int flags, const struct winreg_OpenHKCC *r)
3462 {
3463         ndr_print_struct(ndr, name, "winreg_OpenHKCC");
3464         ndr->depth++;
3465         if (flags & NDR_SET_VALUES) {
3466                 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
3467         }
3468         if (flags & NDR_IN) {
3469                 ndr_print_struct(ndr, "in", "winreg_OpenHKCC");
3470                 ndr->depth++;
3471                 ndr_print_ptr(ndr, "system_name", r->in.system_name);
3472                 ndr->depth++;
3473                 if (r->in.system_name) {
3474                         ndr_print_uint16(ndr, "system_name", *r->in.system_name);
3475                 }
3476                 ndr->depth--;
3477                 ndr_print_winreg_AccessMask(ndr, "access_mask", r->in.access_mask);
3478                 ndr->depth--;
3479         }
3480         if (flags & NDR_OUT) {
3481                 ndr_print_struct(ndr, "out", "winreg_OpenHKCC");
3482                 ndr->depth++;
3483                 ndr_print_ptr(ndr, "handle", r->out.handle);
3484                 ndr->depth++;
3485                 ndr_print_policy_handle(ndr, "handle", r->out.handle);
3486                 ndr->depth--;
3487                 ndr_print_WERROR(ndr, "result", r->out.result);
3488                 ndr->depth--;
3489         }
3490         ndr->depth--;
3491 }
3492
3493 static enum ndr_err_code ndr_push_winreg_OpenHKDD(struct ndr_push *ndr, int flags, const struct winreg_OpenHKDD *r)
3494 {
3495         if (flags & NDR_IN) {
3496                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.system_name));
3497                 if (r->in.system_name) {
3498                         NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, *r->in.system_name));
3499                 }
3500                 NDR_CHECK(ndr_push_winreg_AccessMask(ndr, NDR_SCALARS, r->in.access_mask));
3501         }
3502         if (flags & NDR_OUT) {
3503                 if (r->out.handle == NULL) {
3504                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
3505                 }
3506                 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->out.handle));
3507                 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
3508         }
3509         return NDR_ERR_SUCCESS;
3510 }
3511
3512 static enum ndr_err_code ndr_pull_winreg_OpenHKDD(struct ndr_pull *ndr, int flags, struct winreg_OpenHKDD *r)
3513 {
3514         uint32_t _ptr_system_name;
3515         TALLOC_CTX *_mem_save_system_name_0;
3516         TALLOC_CTX *_mem_save_handle_0;
3517         if (flags & NDR_IN) {
3518                 ZERO_STRUCT(r->out);
3519
3520                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_system_name));
3521                 if (_ptr_system_name) {
3522                         NDR_PULL_ALLOC(ndr, r->in.system_name);
3523                 } else {
3524                         r->in.system_name = NULL;
3525                 }
3526                 if (r->in.system_name) {
3527                         _mem_save_system_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
3528                         NDR_PULL_SET_MEM_CTX(ndr, r->in.system_name, 0);
3529                         NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, r->in.system_name));
3530                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_system_name_0, 0);
3531                 }
3532                 NDR_CHECK(ndr_pull_winreg_AccessMask(ndr, NDR_SCALARS, &r->in.access_mask));
3533                 NDR_PULL_ALLOC(ndr, r->out.handle);
3534                 ZERO_STRUCTP(r->out.handle);
3535         }
3536         if (flags & NDR_OUT) {
3537                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
3538                         NDR_PULL_ALLOC(ndr, r->out.handle);
3539                 }
3540                 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
3541                 NDR_PULL_SET_MEM_CTX(ndr, r->out.handle, LIBNDR_FLAG_REF_ALLOC);
3542                 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->out.handle));
3543                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
3544                 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
3545         }
3546         return NDR_ERR_SUCCESS;
3547 }
3548
3549 _PUBLIC_ void ndr_print_winreg_OpenHKDD(struct ndr_print *ndr, const char *name, int flags, const struct winreg_OpenHKDD *r)
3550 {
3551         ndr_print_struct(ndr, name, "winreg_OpenHKDD");
3552         ndr->depth++;
3553         if (flags & NDR_SET_VALUES) {
3554                 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
3555         }
3556         if (flags & NDR_IN) {
3557                 ndr_print_struct(ndr, "in", "winreg_OpenHKDD");
3558                 ndr->depth++;
3559                 ndr_print_ptr(ndr, "system_name", r->in.system_name);
3560                 ndr->depth++;
3561                 if (r->in.system_name) {
3562                         ndr_print_uint16(ndr, "system_name", *r->in.system_name);
3563                 }
3564                 ndr->depth--;
3565                 ndr_print_winreg_AccessMask(ndr, "access_mask", r->in.access_mask);
3566                 ndr->depth--;
3567         }
3568         if (flags & NDR_OUT) {
3569                 ndr_print_struct(ndr, "out", "winreg_OpenHKDD");
3570                 ndr->depth++;
3571                 ndr_print_ptr(ndr, "handle", r->out.handle);
3572                 ndr->depth++;
3573                 ndr_print_policy_handle(ndr, "handle", r->out.handle);
3574                 ndr->depth--;
3575                 ndr_print_WERROR(ndr, "result", r->out.result);
3576                 ndr->depth--;
3577         }
3578         ndr->depth--;
3579 }
3580
3581 _PUBLIC_ enum ndr_err_code ndr_push_winreg_QueryMultipleValues(struct ndr_push *ndr, int flags, const struct winreg_QueryMultipleValues *r)
3582 {
3583         uint32_t cntr_values_1;
3584         if (flags & NDR_IN) {
3585                 if (r->in.key_handle == NULL) {
3586                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
3587                 }
3588                 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.key_handle));
3589                 if (r->in.values == NULL) {
3590                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
3591                 }
3592                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.num_values));
3593                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
3594                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.num_values));
3595                 for (cntr_values_1 = 0; cntr_values_1 < r->in.num_values; cntr_values_1++) {
3596                         NDR_CHECK(ndr_push_QueryMultipleValue(ndr, NDR_SCALARS, &r->in.values[cntr_values_1]));
3597                 }
3598                 for (cntr_values_1 = 0; cntr_values_1 < r->in.num_values; cntr_values_1++) {
3599                         NDR_CHECK(ndr_push_QueryMultipleValue(ndr, NDR_BUFFERS, &r->in.values[cntr_values_1]));
3600                 }
3601                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.num_values));
3602                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.buffer));
3603                 if (r->in.buffer) {
3604                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->in.buffer_size));
3605                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
3606                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->in.buffer_size));
3607                         NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->in.buffer, *r->in.buffer_size));
3608                 }
3609                 if (r->in.buffer_size == NULL) {
3610                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
3611                 }
3612                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->in.buffer_size));
3613         }
3614         if (flags & NDR_OUT) {
3615                 if (r->out.values == NULL) {
3616                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
3617                 }
3618                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.num_values));
3619                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
3620                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.num_values));
3621                 for (cntr_values_1 = 0; cntr_values_1 < r->in.num_values; cntr_values_1++) {
3622                         NDR_CHECK(ndr_push_QueryMultipleValue(ndr, NDR_SCALARS, &r->out.values[cntr_values_1]));
3623                 }
3624                 for (cntr_values_1 = 0; cntr_values_1 < r->in.num_values; cntr_values_1++) {
3625                         NDR_CHECK(ndr_push_QueryMultipleValue(ndr, NDR_BUFFERS, &r->out.values[cntr_values_1]));
3626                 }
3627                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->out.buffer));
3628                 if (r->out.buffer) {
3629                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.buffer_size));
3630                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
3631                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.buffer_size));
3632                         NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->out.buffer, *r->out.buffer_size));
3633                 }
3634                 if (r->out.buffer_size == NULL) {
3635                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
3636                 }
3637                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.buffer_size));
3638                 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
3639         }
3640         return NDR_ERR_SUCCESS;
3641 }
3642
3643 _PUBLIC_ enum ndr_err_code ndr_pull_winreg_QueryMultipleValues(struct ndr_pull *ndr, int flags, struct winreg_QueryMultipleValues *r)
3644 {
3645         uint32_t cntr_values_1;
3646         uint32_t _ptr_buffer;
3647         TALLOC_CTX *_mem_save_key_handle_0;
3648         TALLOC_CTX *_mem_save_values_1;
3649         TALLOC_CTX *_mem_save_buffer_0;
3650         TALLOC_CTX *_mem_save_buffer_size_0;
3651         if (flags & NDR_IN) {
3652                 ZERO_STRUCT(r->out);
3653
3654                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
3655                         NDR_PULL_ALLOC(ndr, r->in.key_handle);
3656                 }
3657                 _mem_save_key_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
3658                 NDR_PULL_SET_MEM_CTX(ndr, r->in.key_handle, LIBNDR_FLAG_REF_ALLOC);
3659                 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.key_handle));
3660                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_key_handle_0, LIBNDR_FLAG_REF_ALLOC);
3661                 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.values));
3662                 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.values));
3663                 if (ndr_get_array_length(ndr, &r->in.values) > ndr_get_array_size(ndr, &r->in.values)) {
3664                         return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.values), ndr_get_array_length(ndr, &r->in.values));
3665                 }
3666                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
3667                         NDR_PULL_ALLOC_N(ndr, r->in.values, ndr_get_array_size(ndr, &r->in.values));
3668                 }
3669                 memcpy(r->out.values, r->in.values, (ndr_get_array_size(ndr, &r->in.values)) * sizeof(*r->in.values));
3670                 _mem_save_values_1 = NDR_PULL_GET_MEM_CTX(ndr);
3671                 NDR_PULL_SET_MEM_CTX(ndr, r->in.values, 0);
3672                 for (cntr_values_1 = 0; cntr_values_1 < r->in.num_values; cntr_values_1++) {
3673                         NDR_CHECK(ndr_pull_QueryMultipleValue(ndr, NDR_SCALARS, &r->in.values[cntr_values_1]));
3674                 }
3675                 for (cntr_values_1 = 0; cntr_values_1 < r->in.num_values; cntr_values_1++) {
3676                         NDR_CHECK(ndr_pull_QueryMultipleValue(ndr, NDR_BUFFERS, &r->in.values[cntr_values_1]));
3677                 }
3678                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_values_1, 0);
3679                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.num_values));
3680                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_buffer));
3681                 if (_ptr_buffer) {
3682                         NDR_PULL_ALLOC(ndr, r->in.buffer);
3683                 } else {
3684                         r->in.buffer = NULL;
3685                 }
3686                 if (r->in.buffer) {
3687                         _mem_save_buffer_0 = NDR_PULL_GET_MEM_CTX(ndr);
3688                         NDR_PULL_SET_MEM_CTX(ndr, r->in.buffer, 0);
3689                         NDR_CHECK(ndr_pull_array_size(ndr, &r->in.buffer));
3690                         NDR_CHECK(ndr_pull_array_length(ndr, &r->in.buffer));
3691                         if (ndr_get_array_length(ndr, &r->in.buffer) > ndr_get_array_size(ndr, &r->in.buffer)) {
3692                                 return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.buffer), ndr_get_array_length(ndr, &r->in.buffer));
3693                         }
3694                         NDR_PULL_ALLOC_N(ndr, r->in.buffer, ndr_get_array_size(ndr, &r->in.buffer));
3695                         NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->in.buffer, ndr_get_array_length(ndr, &r->in.buffer)));
3696                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_buffer_0, 0);
3697                 }
3698                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
3699                         NDR_PULL_ALLOC(ndr, r->in.buffer_size);
3700                 }
3701                 _mem_save_buffer_size_0 = NDR_PULL_GET_MEM_CTX(ndr);
3702                 NDR_PULL_SET_MEM_CTX(ndr, r->in.buffer_size, LIBNDR_FLAG_REF_ALLOC);
3703                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->in.buffer_size));
3704                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_buffer_size_0, LIBNDR_FLAG_REF_ALLOC);
3705                 NDR_PULL_ALLOC_N(ndr, r->out.values, r->in.num_values);
3706                 memcpy(r->out.values, r->in.values, (r->in.num_values) * sizeof(*r->in.values));
3707                 NDR_PULL_ALLOC(ndr, r->out.buffer_size);
3708                 *r->out.buffer_size = *r->in.buffer_size;
3709                 if (r->in.values) {
3710                         NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->in.values, r->in.num_values));
3711                 }
3712                 if (r->in.values) {
3713                         NDR_CHECK(ndr_check_array_length(ndr, (void*)&r->in.values, r->in.num_values));
3714                 }
3715                 if (r->in.buffer) {
3716                         NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->in.buffer, *r->in.buffer_size));
3717                 }
3718                 if (r->in.buffer) {
3719                         NDR_CHECK(ndr_check_array_length(ndr, (void*)&r->in.buffer, *r->in.buffer_size));
3720                 }
3721         }
3722         if (flags & NDR_OUT) {
3723                 NDR_CHECK(ndr_pull_array_size(ndr, &r->out.values));
3724                 NDR_CHECK(ndr_pull_array_length(ndr, &r->out.values));
3725                 if (ndr_get_array_length(ndr, &r->out.values) > ndr_get_array_size(ndr, &r->out.values)) {
3726                         return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->out.values), ndr_get_array_length(ndr, &r->out.values));
3727                 }
3728                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
3729                         NDR_PULL_ALLOC_N(ndr, r->out.values, ndr_get_array_size(ndr, &r->out.values));
3730                 }
3731                 memcpy(r->out.values, r->in.values, (ndr_get_array_size(ndr, &r->out.values)) * sizeof(*r->in.values));
3732                 _mem_save_values_1 = NDR_PULL_GET_MEM_CTX(ndr);
3733                 NDR_PULL_SET_MEM_CTX(ndr, r->out.values, 0);
3734                 for (cntr_values_1 = 0; cntr_values_1 < r->in.num_values; cntr_values_1++) {
3735                         NDR_CHECK(ndr_pull_QueryMultipleValue(ndr, NDR_SCALARS, &r->out.values[cntr_values_1]));
3736                 }
3737                 for (cntr_values_1 = 0; cntr_values_1 < r->in.num_values; cntr_values_1++) {
3738                         NDR_CHECK(ndr_pull_QueryMultipleValue(ndr, NDR_BUFFERS, &r->out.values[cntr_values_1]));
3739                 }
3740                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_values_1, 0);
3741                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_buffer));
3742                 if (_ptr_buffer) {
3743                         NDR_PULL_ALLOC(ndr, r->out.buffer);
3744                 } else {
3745                         r->out.buffer = NULL;
3746                 }
3747                 if (r->out.buffer) {
3748                         _mem_save_buffer_0 = NDR_PULL_GET_MEM_CTX(ndr);
3749                         NDR_PULL_SET_MEM_CTX(ndr, r->out.buffer, 0);
3750                         NDR_CHECK(ndr_pull_array_size(ndr, &r->out.buffer));
3751                         NDR_CHECK(ndr_pull_array_length(ndr, &r->out.buffer));
3752                         if (ndr_get_array_length(ndr, &r->out.buffer) > ndr_get_array_size(ndr, &r->out.buffer)) {
3753                                 return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->out.buffer), ndr_get_array_length(ndr, &r->out.buffer));
3754                         }
3755                         NDR_PULL_ALLOC_N(ndr, r->out.buffer, ndr_get_array_size(ndr, &r->out.buffer));
3756                         NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->out.buffer, ndr_get_array_length(ndr, &r->out.buffer)));
3757                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_buffer_0, 0);
3758                 }
3759                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
3760                         NDR_PULL_ALLOC(ndr, r->out.buffer_size);
3761                 }
3762                 _mem_save_buffer_size_0 = NDR_PULL_GET_MEM_CTX(ndr);
3763                 NDR_PULL_SET_MEM_CTX(ndr, r->out.buffer_size, LIBNDR_FLAG_REF_ALLOC);
3764                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.buffer_size));
3765                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_buffer_size_0, LIBNDR_FLAG_REF_ALLOC);
3766                 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
3767                 if (r->out.values) {
3768                         NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->out.values, r->in.num_values));
3769                 }
3770                 if (r->out.values) {
3771                         NDR_CHECK(ndr_check_array_length(ndr, (void*)&r->out.values, r->in.num_values));
3772                 }
3773                 if (r->out.buffer) {
3774                         NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->out.buffer, *r->out.buffer_size));
3775                 }
3776                 if (r->out.buffer) {
3777                         NDR_CHECK(ndr_check_array_length(ndr, (void*)&r->out.buffer, *r->out.buffer_size));
3778                 }
3779         }
3780         return NDR_ERR_SUCCESS;
3781 }
3782
3783 _PUBLIC_ void ndr_print_winreg_QueryMultipleValues(struct ndr_print *ndr, const char *name, int flags, const struct winreg_QueryMultipleValues *r)
3784 {
3785         uint32_t cntr_values_1;
3786         ndr_print_struct(ndr, name, "winreg_QueryMultipleValues");
3787         ndr->depth++;
3788         if (flags & NDR_SET_VALUES) {
3789                 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
3790         }
3791         if (flags & NDR_IN) {
3792                 ndr_print_struct(ndr, "in", "winreg_QueryMultipleValues");
3793                 ndr->depth++;
3794                 ndr_print_ptr(ndr, "key_handle", r->in.key_handle);
3795                 ndr->depth++;
3796                 ndr_print_policy_handle(ndr, "key_handle", r->in.key_handle);
3797                 ndr->depth--;
3798                 ndr_print_ptr(ndr, "values", r->in.values);
3799                 ndr->depth++;
3800                 ndr->print(ndr, "%s: ARRAY(%d)", "values", (int)r->in.num_values);
3801                 ndr->depth++;
3802                 for (cntr_values_1=0;cntr_values_1<r->in.num_values;cntr_values_1++) {
3803                         char *idx_1=NULL;
3804                         if (asprintf(&idx_1, "[%d]", cntr_values_1) != -1) {
3805                                 ndr_print_QueryMultipleValue(ndr, "values", &r->in.values[cntr_values_1]);
3806                                 free(idx_1);
3807                         }
3808                 }
3809                 ndr->depth--;
3810                 ndr->depth--;
3811                 ndr_print_uint32(ndr, "num_values", r->in.num_values);
3812                 ndr_print_ptr(ndr, "buffer", r->in.buffer);
3813                 ndr->depth++;
3814                 if (r->in.buffer) {
3815                         ndr_print_array_uint8(ndr, "buffer", r->in.buffer, *r->in.buffer_size);
3816                 }
3817                 ndr->depth--;
3818                 ndr_print_ptr(ndr, "buffer_size", r->in.buffer_size);
3819                 ndr->depth++;
3820                 ndr_print_uint32(ndr, "buffer_size", *r->in.buffer_size);
3821                 ndr->depth--;
3822                 ndr->depth--;
3823         }
3824         if (flags & NDR_OUT) {
3825                 ndr_print_struct(ndr, "out", "winreg_QueryMultipleValues");
3826                 ndr->depth++;
3827                 ndr_print_ptr(ndr, "values", r->out.values);
3828                 ndr->depth++;
3829                 ndr->print(ndr, "%s: ARRAY(%d)", "values", (int)r->in.num_values);
3830                 ndr->depth++;
3831                 for (cntr_values_1=0;cntr_values_1<r->in.num_values;cntr_values_1++) {
3832                         char *idx_1=NULL;
3833                         if (asprintf(&idx_1, "[%d]", cntr_values_1) != -1) {
3834                                 ndr_print_QueryMultipleValue(ndr, "values", &r->out.values[cntr_values_1]);
3835                                 free(idx_1);
3836                         }
3837                 }
3838                 ndr->depth--;
3839                 ndr->depth--;
3840                 ndr_print_ptr(ndr, "buffer", r->out.buffer);
3841                 ndr->depth++;
3842                 if (r->out.buffer) {
3843                         ndr_print_array_uint8(ndr, "buffer", r->out.buffer, *r->out.buffer_size);
3844                 }
3845                 ndr->depth--;
3846                 ndr_print_ptr(ndr, "buffer_size", r->out.buffer_size);
3847                 ndr->depth++;
3848                 ndr_print_uint32(ndr, "buffer_size", *r->out.buffer_size);
3849                 ndr->depth--;
3850                 ndr_print_WERROR(ndr, "result", r->out.result);
3851                 ndr->depth--;
3852         }
3853         ndr->depth--;
3854 }
3855
3856 static enum ndr_err_code ndr_push_winreg_InitiateSystemShutdownEx(struct ndr_push *ndr, int flags, const struct winreg_InitiateSystemShutdownEx *r)
3857 {
3858         if (flags & NDR_IN) {
3859                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.hostname));
3860                 if (r->in.hostname) {
3861                         NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, *r->in.hostname));
3862                 }
3863                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.message));
3864                 if (r->in.message) {
3865                         NDR_CHECK(ndr_push_lsa_StringLarge(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.message));
3866                 }
3867                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.timeout));
3868                 NDR_CHECK(ndr_push_uint8(ndr, NDR_SCALARS, r->in.force_apps));
3869                 NDR_CHECK(ndr_push_uint8(ndr, NDR_SCALARS, r->in.do_reboot));
3870                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.reason));
3871         }
3872         if (flags & NDR_OUT) {
3873                 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
3874         }
3875         return NDR_ERR_SUCCESS;
3876 }
3877
3878 static enum ndr_err_code ndr_pull_winreg_InitiateSystemShutdownEx(struct ndr_pull *ndr, int flags, struct winreg_InitiateSystemShutdownEx *r)
3879 {
3880         uint32_t _ptr_hostname;
3881         uint32_t _ptr_message;
3882         TALLOC_CTX *_mem_save_hostname_0;
3883         TALLOC_CTX *_mem_save_message_0;
3884         if (flags & NDR_IN) {
3885                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_hostname));
3886                 if (_ptr_hostname) {
3887                         NDR_PULL_ALLOC(ndr, r->in.hostname);
3888                 } else {
3889                         r->in.hostname = NULL;
3890                 }
3891                 if (r->in.hostname) {
3892                         _mem_save_hostname_0 = NDR_PULL_GET_MEM_CTX(ndr);
3893                         NDR_PULL_SET_MEM_CTX(ndr, r->in.hostname, 0);
3894                         NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, r->in.hostname));
3895                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_hostname_0, 0);
3896                 }
3897                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_message));
3898                 if (_ptr_message) {
3899                         NDR_PULL_ALLOC(ndr, r->in.message);
3900                 } else {
3901                         r->in.message = NULL;
3902                 }
3903                 if (r->in.message) {
3904                         _mem_save_message_0 = NDR_PULL_GET_MEM_CTX(ndr);
3905                         NDR_PULL_SET_MEM_CTX(ndr, r->in.message, 0);
3906                         NDR_CHECK(ndr_pull_lsa_StringLarge(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.message));
3907                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_message_0, 0);
3908                 }
3909                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.timeout));
3910                 NDR_CHECK(ndr_pull_uint8(ndr, NDR_SCALARS, &r->in.force_apps));
3911                 NDR_CHECK(ndr_pull_uint8(ndr, NDR_SCALARS, &r->in.do_reboot));
3912                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.reason));
3913         }
3914         if (flags & NDR_OUT) {
3915                 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
3916         }
3917         return NDR_ERR_SUCCESS;
3918 }
3919
3920 _PUBLIC_ void ndr_print_winreg_InitiateSystemShutdownEx(struct ndr_print *ndr, const char *name, int flags, const struct winreg_InitiateSystemShutdownEx *r)
3921 {
3922         ndr_print_struct(ndr, name, "winreg_InitiateSystemShutdownEx");
3923         ndr->depth++;
3924         if (flags & NDR_SET_VALUES) {
3925                 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
3926         }
3927         if (flags & NDR_IN) {
3928                 ndr_print_struct(ndr, "in", "winreg_InitiateSystemShutdownEx");
3929                 ndr->depth++;
3930                 ndr_print_ptr(ndr, "hostname", r->in.hostname);
3931                 ndr->depth++;
3932                 if (r->in.hostname) {
3933                         ndr_print_uint16(ndr, "hostname", *r->in.hostname);
3934                 }
3935                 ndr->depth--;
3936                 ndr_print_ptr(ndr, "message", r->in.message);
3937                 ndr->depth++;
3938                 if (r->in.message) {
3939                         ndr_print_lsa_StringLarge(ndr, "message", r->in.message);
3940                 }
3941                 ndr->depth--;
3942                 ndr_print_uint32(ndr, "timeout", r->in.timeout);
3943                 ndr_print_uint8(ndr, "force_apps", r->in.force_apps);
3944                 ndr_print_uint8(ndr, "do_reboot", r->in.do_reboot);
3945                 ndr_print_uint32(ndr, "reason", r->in.reason);
3946                 ndr->depth--;
3947         }
3948         if (flags & NDR_OUT) {
3949                 ndr_print_struct(ndr, "out", "winreg_InitiateSystemShutdownEx");
3950                 ndr->depth++;
3951                 ndr_print_WERROR(ndr, "result", r->out.result);
3952                 ndr->depth--;
3953         }
3954         ndr->depth--;
3955 }
3956
3957 static enum ndr_err_code ndr_push_winreg_SaveKeyEx(struct ndr_push *ndr, int flags, const struct winreg_SaveKeyEx *r)
3958 {
3959         if (flags & NDR_IN) {
3960         }
3961         if (flags & NDR_OUT) {
3962                 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
3963         }
3964         return NDR_ERR_SUCCESS;
3965 }
3966
3967 static enum ndr_err_code ndr_pull_winreg_SaveKeyEx(struct ndr_pull *ndr, int flags, struct winreg_SaveKeyEx *r)
3968 {
3969         if (flags & NDR_IN) {
3970         }
3971         if (flags & NDR_OUT) {
3972                 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
3973         }
3974         return NDR_ERR_SUCCESS;
3975 }
3976
3977 _PUBLIC_ void ndr_print_winreg_SaveKeyEx(struct ndr_print *ndr, const char *name, int flags, const struct winreg_SaveKeyEx *r)
3978 {
3979         ndr_print_struct(ndr, name, "winreg_SaveKeyEx");
3980         ndr->depth++;
3981         if (flags & NDR_SET_VALUES) {
3982                 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
3983         }
3984         if (flags & NDR_IN) {
3985                 ndr_print_struct(ndr, "in", "winreg_SaveKeyEx");
3986                 ndr->depth++;
3987                 ndr->depth--;
3988         }
3989         if (flags & NDR_OUT) {
3990                 ndr_print_struct(ndr, "out", "winreg_SaveKeyEx");
3991                 ndr->depth++;
3992                 ndr_print_WERROR(ndr, "result", r->out.result);
3993                 ndr->depth--;
3994         }
3995         ndr->depth--;
3996 }
3997
3998 static enum ndr_err_code ndr_push_winreg_OpenHKPT(struct ndr_push *ndr, int flags, const struct winreg_OpenHKPT *r)
3999 {
4000         if (flags & NDR_IN) {
4001                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.system_name));
4002                 if (r->in.system_name) {
4003                         NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, *r->in.system_name));
4004                 }
4005                 NDR_CHECK(ndr_push_winreg_AccessMask(ndr, NDR_SCALARS, r->in.access_mask));
4006         }
4007         if (flags & NDR_OUT) {
4008                 if (r->out.handle == NULL) {
4009                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
4010                 }
4011                 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->out.handle));
4012                 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
4013         }
4014         return NDR_ERR_SUCCESS;
4015 }
4016
4017 static enum ndr_err_code ndr_pull_winreg_OpenHKPT(struct ndr_pull *ndr, int flags, struct winreg_OpenHKPT *r)
4018 {
4019         uint32_t _ptr_system_name;
4020         TALLOC_CTX *_mem_save_system_name_0;
4021         TALLOC_CTX *_mem_save_handle_0;
4022         if (flags & NDR_IN) {
4023                 ZERO_STRUCT(r->out);
4024
4025                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_system_name));
4026                 if (_ptr_system_name) {
4027                         NDR_PULL_ALLOC(ndr, r->in.system_name);
4028                 } else {
4029                         r->in.system_name = NULL;
4030                 }
4031                 if (r->in.system_name) {
4032                         _mem_save_system_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
4033                         NDR_PULL_SET_MEM_CTX(ndr, r->in.system_name, 0);
4034                         NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, r->in.system_name));
4035                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_system_name_0, 0);
4036                 }
4037                 NDR_CHECK(ndr_pull_winreg_AccessMask(ndr, NDR_SCALARS, &r->in.access_mask));
4038                 NDR_PULL_ALLOC(ndr, r->out.handle);
4039                 ZERO_STRUCTP(r->out.handle);
4040         }
4041         if (flags & NDR_OUT) {
4042                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
4043                         NDR_PULL_ALLOC(ndr, r->out.handle);
4044                 }
4045                 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
4046                 NDR_PULL_SET_MEM_CTX(ndr, r->out.handle, LIBNDR_FLAG_REF_ALLOC);
4047                 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->out.handle));
4048                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
4049                 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
4050         }
4051         return NDR_ERR_SUCCESS;
4052 }
4053
4054 _PUBLIC_ void ndr_print_winreg_OpenHKPT(struct ndr_print *ndr, const char *name, int flags, const struct winreg_OpenHKPT *r)
4055 {
4056         ndr_print_struct(ndr, name, "winreg_OpenHKPT");
4057         ndr->depth++;
4058         if (flags & NDR_SET_VALUES) {
4059                 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
4060         }
4061         if (flags & NDR_IN) {
4062                 ndr_print_struct(ndr, "in", "winreg_OpenHKPT");
4063                 ndr->depth++;
4064                 ndr_print_ptr(ndr, "system_name", r->in.system_name);
4065                 ndr->depth++;
4066                 if (r->in.system_name) {
4067                         ndr_print_uint16(ndr, "system_name", *r->in.system_name);
4068                 }
4069                 ndr->depth--;
4070                 ndr_print_winreg_AccessMask(ndr, "access_mask", r->in.access_mask);
4071                 ndr->depth--;
4072         }
4073         if (flags & NDR_OUT) {
4074                 ndr_print_struct(ndr, "out", "winreg_OpenHKPT");
4075                 ndr->depth++;
4076                 ndr_print_ptr(ndr, "handle", r->out.handle);
4077                 ndr->depth++;
4078                 ndr_print_policy_handle(ndr, "handle", r->out.handle);
4079                 ndr->depth--;
4080                 ndr_print_WERROR(ndr, "result", r->out.result);
4081                 ndr->depth--;
4082         }
4083         ndr->depth--;
4084 }
4085
4086 static enum ndr_err_code ndr_push_winreg_OpenHKPN(struct ndr_push *ndr, int flags, const struct winreg_OpenHKPN *r)
4087 {
4088         if (flags & NDR_IN) {
4089                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.system_name));
4090                 if (r->in.system_name) {
4091                         NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, *r->in.system_name));
4092                 }
4093                 NDR_CHECK(ndr_push_winreg_AccessMask(ndr, NDR_SCALARS, r->in.access_mask));
4094         }
4095         if (flags & NDR_OUT) {
4096                 if (r->out.handle == NULL) {
4097                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
4098                 }
4099                 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->out.handle));
4100                 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
4101         }
4102         return NDR_ERR_SUCCESS;
4103 }
4104
4105 static enum ndr_err_code ndr_pull_winreg_OpenHKPN(struct ndr_pull *ndr, int flags, struct winreg_OpenHKPN *r)
4106 {
4107         uint32_t _ptr_system_name;
4108         TALLOC_CTX *_mem_save_system_name_0;
4109         TALLOC_CTX *_mem_save_handle_0;
4110         if (flags & NDR_IN) {
4111                 ZERO_STRUCT(r->out);
4112
4113                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_system_name));
4114                 if (_ptr_system_name) {
4115                         NDR_PULL_ALLOC(ndr, r->in.system_name);
4116                 } else {
4117                         r->in.system_name = NULL;
4118                 }
4119                 if (r->in.system_name) {
4120                         _mem_save_system_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
4121                         NDR_PULL_SET_MEM_CTX(ndr, r->in.system_name, 0);
4122                         NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, r->in.system_name));
4123                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_system_name_0, 0);
4124                 }
4125                 NDR_CHECK(ndr_pull_winreg_AccessMask(ndr, NDR_SCALARS, &r->in.access_mask));
4126                 NDR_PULL_ALLOC(ndr, r->out.handle);
4127                 ZERO_STRUCTP(r->out.handle);
4128         }
4129         if (flags & NDR_OUT) {
4130                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
4131                         NDR_PULL_ALLOC(ndr, r->out.handle);
4132                 }
4133                 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
4134                 NDR_PULL_SET_MEM_CTX(ndr, r->out.handle, LIBNDR_FLAG_REF_ALLOC);
4135                 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->out.handle));
4136                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
4137                 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
4138         }
4139         return NDR_ERR_SUCCESS;
4140 }
4141
4142 _PUBLIC_ void ndr_print_winreg_OpenHKPN(struct ndr_print *ndr, const char *name, int flags, const struct winreg_OpenHKPN *r)
4143 {
4144         ndr_print_struct(ndr, name, "winreg_OpenHKPN");
4145         ndr->depth++;
4146         if (flags & NDR_SET_VALUES) {
4147                 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
4148         }
4149         if (flags & NDR_IN) {
4150                 ndr_print_struct(ndr, "in", "winreg_OpenHKPN");
4151                 ndr->depth++;
4152                 ndr_print_ptr(ndr, "system_name", r->in.system_name);
4153                 ndr->depth++;
4154                 if (r->in.system_name) {
4155                         ndr_print_uint16(ndr, "system_name", *r->in.system_name);
4156                 }
4157                 ndr->depth--;
4158                 ndr_print_winreg_AccessMask(ndr, "access_mask", r->in.access_mask);
4159                 ndr->depth--;
4160         }
4161         if (flags & NDR_OUT) {
4162                 ndr_print_struct(ndr, "out", "winreg_OpenHKPN");
4163                 ndr->depth++;
4164                 ndr_print_ptr(ndr, "handle", r->out.handle);
4165                 ndr->depth++;
4166                 ndr_print_policy_handle(ndr, "handle", r->out.handle);
4167                 ndr->depth--;
4168                 ndr_print_WERROR(ndr, "result", r->out.result);
4169                 ndr->depth--;
4170         }
4171         ndr->depth--;
4172 }
4173
4174 static enum ndr_err_code ndr_push_winreg_QueryMultipleValues2(struct ndr_push *ndr, int flags, const struct winreg_QueryMultipleValues2 *r)
4175 {
4176         if (flags & NDR_IN) {
4177         }
4178         if (flags & NDR_OUT) {
4179                 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
4180         }
4181         return NDR_ERR_SUCCESS;
4182 }
4183
4184 static enum ndr_err_code ndr_pull_winreg_QueryMultipleValues2(struct ndr_pull *ndr, int flags, struct winreg_QueryMultipleValues2 *r)
4185 {
4186         if (flags & NDR_IN) {
4187         }
4188         if (flags & NDR_OUT) {
4189                 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
4190         }
4191         return NDR_ERR_SUCCESS;
4192 }
4193
4194 _PUBLIC_ void ndr_print_winreg_QueryMultipleValues2(struct ndr_print *ndr, const char *name, int flags, const struct winreg_QueryMultipleValues2 *r)
4195 {
4196         ndr_print_struct(ndr, name, "winreg_QueryMultipleValues2");
4197         ndr->depth++;
4198         if (flags & NDR_SET_VALUES) {
4199                 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
4200         }
4201         if (flags & NDR_IN) {
4202                 ndr_print_struct(ndr, "in", "winreg_QueryMultipleValues2");
4203                 ndr->depth++;
4204                 ndr->depth--;
4205         }
4206         if (flags & NDR_OUT) {
4207                 ndr_print_struct(ndr, "out", "winreg_QueryMultipleValues2");
4208                 ndr->depth++;
4209                 ndr_print_WERROR(ndr, "result", r->out.result);
4210                 ndr->depth--;
4211         }
4212         ndr->depth--;
4213 }
4214
4215 static const struct ndr_interface_call winreg_calls[] = {
4216         {
4217                 "winreg_OpenHKCR",
4218                 sizeof(struct winreg_OpenHKCR),
4219                 (ndr_push_flags_fn_t) ndr_push_winreg_OpenHKCR,
4220                 (ndr_pull_flags_fn_t) ndr_pull_winreg_OpenHKCR,
4221                 (ndr_print_function_t) ndr_print_winreg_OpenHKCR,
4222                 false,
4223         },
4224         {
4225                 "winreg_OpenHKCU",
4226                 sizeof(struct winreg_OpenHKCU),
4227                 (ndr_push_flags_fn_t) ndr_push_winreg_OpenHKCU,
4228                 (ndr_pull_flags_fn_t) ndr_pull_winreg_OpenHKCU,
4229                 (ndr_print_function_t) ndr_print_winreg_OpenHKCU,
4230                 false,
4231         },
4232         {
4233                 "winreg_OpenHKLM",
4234                 sizeof(struct winreg_OpenHKLM),
4235                 (ndr_push_flags_fn_t) ndr_push_winreg_OpenHKLM,
4236                 (ndr_pull_flags_fn_t) ndr_pull_winreg_OpenHKLM,
4237                 (ndr_print_function_t) ndr_print_winreg_OpenHKLM,
4238                 false,
4239         },
4240         {
4241                 "winreg_OpenHKPD",
4242                 sizeof(struct winreg_OpenHKPD),
4243                 (ndr_push_flags_fn_t) ndr_push_winreg_OpenHKPD,
4244                 (ndr_pull_flags_fn_t) ndr_pull_winreg_OpenHKPD,
4245                 (ndr_print_function_t) ndr_print_winreg_OpenHKPD,
4246                 false,
4247         },
4248         {
4249                 "winreg_OpenHKU",
4250                 sizeof(struct winreg_OpenHKU),
4251                 (ndr_push_flags_fn_t) ndr_push_winreg_OpenHKU,
4252                 (ndr_pull_flags_fn_t) ndr_pull_winreg_OpenHKU,
4253                 (ndr_print_function_t) ndr_print_winreg_OpenHKU,
4254                 false,
4255         },
4256         {
4257                 "winreg_CloseKey",
4258                 sizeof(struct winreg_CloseKey),
4259                 (ndr_push_flags_fn_t) ndr_push_winreg_CloseKey,
4260                 (ndr_pull_flags_fn_t) ndr_pull_winreg_CloseKey,
4261                 (ndr_print_function_t) ndr_print_winreg_CloseKey,
4262                 false,
4263         },
4264         {
4265                 "winreg_CreateKey",
4266                 sizeof(struct winreg_CreateKey),
4267                 (ndr_push_flags_fn_t) ndr_push_winreg_CreateKey,
4268                 (ndr_pull_flags_fn_t) ndr_pull_winreg_CreateKey,
4269                 (ndr_print_function_t) ndr_print_winreg_CreateKey,
4270                 false,
4271         },
4272         {
4273                 "winreg_DeleteKey",
4274                 sizeof(struct winreg_DeleteKey),
4275                 (ndr_push_flags_fn_t) ndr_push_winreg_DeleteKey,
4276                 (ndr_pull_flags_fn_t) ndr_pull_winreg_DeleteKey,
4277                 (ndr_print_function_t) ndr_print_winreg_DeleteKey,
4278                 false,
4279         },
4280         {
4281                 "winreg_DeleteValue",
4282                 sizeof(struct winreg_DeleteValue),
4283                 (ndr_push_flags_fn_t) ndr_push_winreg_DeleteValue,
4284                 (ndr_pull_flags_fn_t) ndr_pull_winreg_DeleteValue,
4285                 (ndr_print_function_t) ndr_print_winreg_DeleteValue,
4286                 false,
4287         },
4288         {
4289                 "winreg_EnumKey",
4290                 sizeof(struct winreg_EnumKey),
4291                 (ndr_push_flags_fn_t) ndr_push_winreg_EnumKey,
4292                 (ndr_pull_flags_fn_t) ndr_pull_winreg_EnumKey,
4293                 (ndr_print_function_t) ndr_print_winreg_EnumKey,
4294                 false,
4295         },
4296         {
4297                 "winreg_EnumValue",
4298                 sizeof(struct winreg_EnumValue),
4299                 (ndr_push_flags_fn_t) ndr_push_winreg_EnumValue,
4300                 (ndr_pull_flags_fn_t) ndr_pull_winreg_EnumValue,
4301                 (ndr_print_function_t) ndr_print_winreg_EnumValue,
4302                 false,
4303         },
4304         {
4305                 "winreg_FlushKey",
4306                 sizeof(struct winreg_FlushKey),
4307                 (ndr_push_flags_fn_t) ndr_push_winreg_FlushKey,
4308                 (ndr_pull_flags_fn_t) ndr_pull_winreg_FlushKey,
4309                 (ndr_print_function_t) ndr_print_winreg_FlushKey,
4310                 false,
4311         },
4312         {
4313                 "winreg_GetKeySecurity",
4314                 sizeof(struct winreg_GetKeySecurity),
4315                 (ndr_push_flags_fn_t) ndr_push_winreg_GetKeySecurity,
4316                 (ndr_pull_flags_fn_t) ndr_pull_winreg_GetKeySecurity,
4317                 (ndr_print_function_t) ndr_print_winreg_GetKeySecurity,
4318                 false,
4319         },
4320         {
4321                 "winreg_LoadKey",
4322                 sizeof(struct winreg_LoadKey),
4323                 (ndr_push_flags_fn_t) ndr_push_winreg_LoadKey,
4324                 (ndr_pull_flags_fn_t) ndr_pull_winreg_LoadKey,
4325                 (ndr_print_function_t) ndr_print_winreg_LoadKey,
4326                 false,
4327         },
4328         {
4329                 "winreg_NotifyChangeKeyValue",
4330                 sizeof(struct winreg_NotifyChangeKeyValue),
4331                 (ndr_push_flags_fn_t) ndr_push_winreg_NotifyChangeKeyValue,
4332                 (ndr_pull_flags_fn_t) ndr_pull_winreg_NotifyChangeKeyValue,
4333                 (ndr_print_function_t) ndr_print_winreg_NotifyChangeKeyValue,
4334                 false,
4335         },
4336         {
4337                 "winreg_OpenKey",
4338                 sizeof(struct winreg_OpenKey),
4339                 (ndr_push_flags_fn_t) ndr_push_winreg_OpenKey,
4340                 (ndr_pull_flags_fn_t) ndr_pull_winreg_OpenKey,
4341                 (ndr_print_function_t) ndr_print_winreg_OpenKey,
4342                 false,
4343         },
4344         {
4345                 "winreg_QueryInfoKey",
4346                 sizeof(struct winreg_QueryInfoKey),
4347                 (ndr_push_flags_fn_t) ndr_push_winreg_QueryInfoKey,
4348                 (ndr_pull_flags_fn_t) ndr_pull_winreg_QueryInfoKey,
4349                 (ndr_print_function_t) ndr_print_winreg_QueryInfoKey,
4350                 false,
4351         },
4352         {
4353                 "winreg_QueryValue",
4354                 sizeof(struct winreg_QueryValue),
4355                 (ndr_push_flags_fn_t) ndr_push_winreg_QueryValue,
4356                 (ndr_pull_flags_fn_t) ndr_pull_winreg_QueryValue,
4357                 (ndr_print_function_t) ndr_print_winreg_QueryValue,
4358                 false,
4359         },
4360         {
4361                 "winreg_ReplaceKey",
4362                 sizeof(struct winreg_ReplaceKey),
4363                 (ndr_push_flags_fn_t) ndr_push_winreg_ReplaceKey,
4364                 (ndr_pull_flags_fn_t) ndr_pull_winreg_ReplaceKey,
4365                 (ndr_print_function_t) ndr_print_winreg_ReplaceKey,
4366                 false,
4367         },
4368         {
4369                 "winreg_RestoreKey",
4370                 sizeof(struct winreg_RestoreKey),
4371                 (ndr_push_flags_fn_t) ndr_push_winreg_RestoreKey,
4372                 (ndr_pull_flags_fn_t) ndr_pull_winreg_RestoreKey,
4373                 (ndr_print_function_t) ndr_print_winreg_RestoreKey,
4374                 false,
4375         },
4376         {
4377                 "winreg_SaveKey",
4378                 sizeof(struct winreg_SaveKey),
4379                 (ndr_push_flags_fn_t) ndr_push_winreg_SaveKey,
4380                 (ndr_pull_flags_fn_t) ndr_pull_winreg_SaveKey,
4381                 (ndr_print_function_t) ndr_print_winreg_SaveKey,
4382                 false,
4383         },
4384         {
4385                 "winreg_SetKeySecurity",
4386                 sizeof(struct winreg_SetKeySecurity),
4387                 (ndr_push_flags_fn_t) ndr_push_winreg_SetKeySecurity,
4388                 (ndr_pull_flags_fn_t) ndr_pull_winreg_SetKeySecurity,
4389                 (ndr_print_function_t) ndr_print_winreg_SetKeySecurity,
4390                 false,
4391         },
4392         {
4393                 "winreg_SetValue",
4394                 sizeof(struct winreg_SetValue),
4395                 (ndr_push_flags_fn_t) ndr_push_winreg_SetValue,
4396                 (ndr_pull_flags_fn_t) ndr_pull_winreg_SetValue,
4397                 (ndr_print_function_t) ndr_print_winreg_SetValue,
4398                 false,
4399         },
4400         {
4401                 "winreg_UnLoadKey",
4402                 sizeof(struct winreg_UnLoadKey),
4403                 (ndr_push_flags_fn_t) ndr_push_winreg_UnLoadKey,
4404                 (ndr_pull_flags_fn_t) ndr_pull_winreg_UnLoadKey,
4405                 (ndr_print_function_t) ndr_print_winreg_UnLoadKey,
4406                 false,
4407         },
4408         {
4409                 "winreg_InitiateSystemShutdown",
4410                 sizeof(struct winreg_InitiateSystemShutdown),
4411                 (ndr_push_flags_fn_t) ndr_push_winreg_InitiateSystemShutdown,
4412                 (ndr_pull_flags_fn_t) ndr_pull_winreg_InitiateSystemShutdown,
4413                 (ndr_print_function_t) ndr_print_winreg_InitiateSystemShutdown,
4414                 false,
4415         },
4416         {
4417                 "winreg_AbortSystemShutdown",
4418                 sizeof(struct winreg_AbortSystemShutdown),
4419                 (ndr_push_flags_fn_t) ndr_push_winreg_AbortSystemShutdown,
4420                 (ndr_pull_flags_fn_t) ndr_pull_winreg_AbortSystemShutdown,
4421                 (ndr_print_function_t) ndr_print_winreg_AbortSystemShutdown,
4422                 false,
4423         },
4424         {
4425                 "winreg_GetVersion",
4426                 sizeof(struct winreg_GetVersion),
4427                 (ndr_push_flags_fn_t) ndr_push_winreg_GetVersion,
4428                 (ndr_pull_flags_fn_t) ndr_pull_winreg_GetVersion,
4429                 (ndr_print_function_t) ndr_print_winreg_GetVersion,
4430                 false,
4431         },
4432         {
4433                 "winreg_OpenHKCC",
4434                 sizeof(struct winreg_OpenHKCC),
4435                 (ndr_push_flags_fn_t) ndr_push_winreg_OpenHKCC,
4436                 (ndr_pull_flags_fn_t) ndr_pull_winreg_OpenHKCC,
4437                 (ndr_print_function_t) ndr_print_winreg_OpenHKCC,
4438                 false,
4439         },
4440         {
4441                 "winreg_OpenHKDD",
4442                 sizeof(struct winreg_OpenHKDD),
4443                 (ndr_push_flags_fn_t) ndr_push_winreg_OpenHKDD,
4444                 (ndr_pull_flags_fn_t) ndr_pull_winreg_OpenHKDD,
4445                 (ndr_print_function_t) ndr_print_winreg_OpenHKDD,
4446                 false,
4447         },
4448         {
4449                 "winreg_QueryMultipleValues",
4450                 sizeof(struct winreg_QueryMultipleValues),
4451                 (ndr_push_flags_fn_t) ndr_push_winreg_QueryMultipleValues,
4452                 (ndr_pull_flags_fn_t) ndr_pull_winreg_QueryMultipleValues,
4453                 (ndr_print_function_t) ndr_print_winreg_QueryMultipleValues,
4454                 false,
4455         },
4456         {
4457                 "winreg_InitiateSystemShutdownEx",
4458                 sizeof(struct winreg_InitiateSystemShutdownEx),
4459                 (ndr_push_flags_fn_t) ndr_push_winreg_InitiateSystemShutdownEx,
4460                 (ndr_pull_flags_fn_t) ndr_pull_winreg_InitiateSystemShutdownEx,
4461                 (ndr_print_function_t) ndr_print_winreg_InitiateSystemShutdownEx,
4462                 false,
4463         },
4464         {
4465                 "winreg_SaveKeyEx",
4466                 sizeof(struct winreg_SaveKeyEx),
4467                 (ndr_push_flags_fn_t) ndr_push_winreg_SaveKeyEx,
4468                 (ndr_pull_flags_fn_t) ndr_pull_winreg_SaveKeyEx,
4469                 (ndr_print_function_t) ndr_print_winreg_SaveKeyEx,
4470                 false,
4471         },
4472         {
4473                 "winreg_OpenHKPT",
4474                 sizeof(struct winreg_OpenHKPT),
4475                 (ndr_push_flags_fn_t) ndr_push_winreg_OpenHKPT,
4476                 (ndr_pull_flags_fn_t) ndr_pull_winreg_OpenHKPT,
4477                 (ndr_print_function_t) ndr_print_winreg_OpenHKPT,
4478                 false,
4479         },
4480         {
4481                 "winreg_OpenHKPN",
4482                 sizeof(struct winreg_OpenHKPN),
4483                 (ndr_push_flags_fn_t) ndr_push_winreg_OpenHKPN,
4484                 (ndr_pull_flags_fn_t) ndr_pull_winreg_OpenHKPN,
4485                 (ndr_print_function_t) ndr_print_winreg_OpenHKPN,
4486                 false,
4487         },
4488         {
4489                 "winreg_QueryMultipleValues2",
4490                 sizeof(struct winreg_QueryMultipleValues2),
4491                 (ndr_push_flags_fn_t) ndr_push_winreg_QueryMultipleValues2,
4492                 (ndr_pull_flags_fn_t) ndr_pull_winreg_QueryMultipleValues2,
4493                 (ndr_print_function_t) ndr_print_winreg_QueryMultipleValues2,
4494                 false,
4495         },
4496         { NULL, 0, NULL, NULL, NULL, false }
4497 };
4498
4499 static const char * const winreg_endpoint_strings[] = {
4500         "ncacn_np:[\\pipe\\winreg]", 
4501         "ncacn_ip_tcp:", 
4502         "ncalrpc:", 
4503 };
4504
4505 static const struct ndr_interface_string_array winreg_endpoints = {
4506         .count  = 3,
4507         .names  = winreg_endpoint_strings
4508 };
4509
4510 static const char * const winreg_authservice_strings[] = {
4511         "host", 
4512 };
4513
4514 static const struct ndr_interface_string_array winreg_authservices = {
4515         .count  = 1,
4516         .names  = winreg_authservice_strings
4517 };
4518
4519
4520 const struct ndr_interface_table ndr_table_winreg = {
4521         .name           = "winreg",
4522         .syntax_id      = {
4523                 {0x338cd001,0x2244,0x31f1,{0xaa,0xaa},{0x90,0x00,0x38,0x00,0x10,0x03}},
4524                 NDR_WINREG_VERSION
4525         },
4526         .helpstring     = NDR_WINREG_HELPSTRING,
4527         .num_calls      = 35,
4528         .calls          = winreg_calls,
4529         .endpoints      = &winreg_endpoints,
4530         .authservices   = &winreg_authservices
4531 };
4532