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