1 /* parser auto-generated by pidl */
4 #include "../librpc/gen_ndr/ndr_svcctl.h"
6 #include "librpc/gen_ndr/ndr_misc.h"
7 #include "librpc/gen_ndr/ndr_security.h"
8 static enum ndr_err_code ndr_push_SERVICE_LOCK_STATUS(struct ndr_push *ndr, int ndr_flags, const struct SERVICE_LOCK_STATUS *r)
10 if (ndr_flags & NDR_SCALARS) {
11 NDR_CHECK(ndr_push_align(ndr, 4));
12 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->is_locked));
13 NDR_CHECK(ndr_push_unique_ptr(ndr, r->lock_owner));
14 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->lock_duration));
16 if (ndr_flags & NDR_BUFFERS) {
18 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->lock_owner, CH_UTF16)));
19 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
20 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->lock_owner, CH_UTF16)));
21 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->lock_owner, ndr_charset_length(r->lock_owner, CH_UTF16), sizeof(uint16_t), CH_UTF16));
24 return NDR_ERR_SUCCESS;
27 static enum ndr_err_code ndr_pull_SERVICE_LOCK_STATUS(struct ndr_pull *ndr, int ndr_flags, struct SERVICE_LOCK_STATUS *r)
29 uint32_t _ptr_lock_owner;
30 TALLOC_CTX *_mem_save_lock_owner_0;
31 if (ndr_flags & NDR_SCALARS) {
32 NDR_CHECK(ndr_pull_align(ndr, 4));
33 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->is_locked));
34 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_lock_owner));
35 if (_ptr_lock_owner) {
36 NDR_PULL_ALLOC(ndr, r->lock_owner);
40 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->lock_duration));
42 if (ndr_flags & NDR_BUFFERS) {
44 _mem_save_lock_owner_0 = NDR_PULL_GET_MEM_CTX(ndr);
45 NDR_PULL_SET_MEM_CTX(ndr, r->lock_owner, 0);
46 NDR_CHECK(ndr_pull_array_size(ndr, &r->lock_owner));
47 NDR_CHECK(ndr_pull_array_length(ndr, &r->lock_owner));
48 if (ndr_get_array_length(ndr, &r->lock_owner) > ndr_get_array_size(ndr, &r->lock_owner)) {
49 return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->lock_owner), ndr_get_array_length(ndr, &r->lock_owner));
51 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->lock_owner), sizeof(uint16_t)));
52 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->lock_owner, ndr_get_array_length(ndr, &r->lock_owner), sizeof(uint16_t), CH_UTF16));
53 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_lock_owner_0, 0);
56 return NDR_ERR_SUCCESS;
59 _PUBLIC_ void ndr_print_SERVICE_LOCK_STATUS(struct ndr_print *ndr, const char *name, const struct SERVICE_LOCK_STATUS *r)
61 ndr_print_struct(ndr, name, "SERVICE_LOCK_STATUS");
63 ndr_print_uint32(ndr, "is_locked", r->is_locked);
64 ndr_print_ptr(ndr, "lock_owner", r->lock_owner);
67 ndr_print_string(ndr, "lock_owner", r->lock_owner);
70 ndr_print_uint32(ndr, "lock_duration", r->lock_duration);
74 static enum ndr_err_code ndr_push_svcctl_ServiceStatus(struct ndr_push *ndr, int ndr_flags, enum svcctl_ServiceStatus r)
76 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r));
77 return NDR_ERR_SUCCESS;
80 static enum ndr_err_code ndr_pull_svcctl_ServiceStatus(struct ndr_pull *ndr, int ndr_flags, enum svcctl_ServiceStatus *r)
83 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &v));
85 return NDR_ERR_SUCCESS;
88 _PUBLIC_ void ndr_print_svcctl_ServiceStatus(struct ndr_print *ndr, const char *name, enum svcctl_ServiceStatus r)
90 const char *val = NULL;
93 case SVCCTL_STATE_UNKNOWN: val = "SVCCTL_STATE_UNKNOWN"; break;
94 case SVCCTL_STOPPED: val = "SVCCTL_STOPPED"; break;
95 case SVCCTL_START_PENDING: val = "SVCCTL_START_PENDING"; break;
96 case SVCCTL_STOP_PENDING: val = "SVCCTL_STOP_PENDING"; break;
97 case SVCCTL_RUNNING: val = "SVCCTL_RUNNING"; break;
98 case SVCCTL_CONTINUE_PENDING: val = "SVCCTL_CONTINUE_PENDING"; break;
99 case SVCCTL_PAUSE_PENDING: val = "SVCCTL_PAUSE_PENDING"; break;
100 case SVCCTL_PAUSED: val = "SVCCTL_PAUSED"; break;
102 ndr_print_enum(ndr, name, "ENUM", val, r);
105 static enum ndr_err_code ndr_push_svcctl_ControlsAccepted(struct ndr_push *ndr, int ndr_flags, uint32_t r)
107 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r));
108 return NDR_ERR_SUCCESS;
111 static enum ndr_err_code ndr_pull_svcctl_ControlsAccepted(struct ndr_pull *ndr, int ndr_flags, uint32_t *r)
114 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &v));
116 return NDR_ERR_SUCCESS;
119 _PUBLIC_ void ndr_print_svcctl_ControlsAccepted(struct ndr_print *ndr, const char *name, uint32_t r)
121 ndr_print_uint32(ndr, name, r);
123 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SVCCTL_ACCEPT_NONE", SVCCTL_ACCEPT_NONE, r);
124 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SVCCTL_ACCEPT_STOP", SVCCTL_ACCEPT_STOP, r);
125 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SVCCTL_ACCEPT_PAUSE_CONTINUE", SVCCTL_ACCEPT_PAUSE_CONTINUE, r);
126 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SVCCTL_ACCEPT_SHUTDOWN", SVCCTL_ACCEPT_SHUTDOWN, r);
127 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SVCCTL_ACCEPT_PARAMCHANGE", SVCCTL_ACCEPT_PARAMCHANGE, r);
128 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SVCCTL_ACCEPT_NETBINDCHANGE", SVCCTL_ACCEPT_NETBINDCHANGE, r);
129 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SVCCTL_ACCEPT_HARDWAREPROFILECHANGE", SVCCTL_ACCEPT_HARDWAREPROFILECHANGE, r);
130 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SVCCTL_ACCEPT_POWEREVENT", SVCCTL_ACCEPT_POWEREVENT, r);
134 static enum ndr_err_code ndr_push_SERVICE_STATUS(struct ndr_push *ndr, int ndr_flags, const struct SERVICE_STATUS *r)
136 if (ndr_flags & NDR_SCALARS) {
137 NDR_CHECK(ndr_push_align(ndr, 4));
138 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->type));
139 NDR_CHECK(ndr_push_svcctl_ServiceStatus(ndr, NDR_SCALARS, r->state));
140 NDR_CHECK(ndr_push_svcctl_ControlsAccepted(ndr, NDR_SCALARS, r->controls_accepted));
141 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->win32_exit_code));
142 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->service_exit_code));
143 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->check_point));
144 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->wait_hint));
146 if (ndr_flags & NDR_BUFFERS) {
148 return NDR_ERR_SUCCESS;
151 static enum ndr_err_code ndr_pull_SERVICE_STATUS(struct ndr_pull *ndr, int ndr_flags, struct SERVICE_STATUS *r)
153 if (ndr_flags & NDR_SCALARS) {
154 NDR_CHECK(ndr_pull_align(ndr, 4));
155 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->type));
156 NDR_CHECK(ndr_pull_svcctl_ServiceStatus(ndr, NDR_SCALARS, &r->state));
157 NDR_CHECK(ndr_pull_svcctl_ControlsAccepted(ndr, NDR_SCALARS, &r->controls_accepted));
158 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->win32_exit_code));
159 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->service_exit_code));
160 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->check_point));
161 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->wait_hint));
163 if (ndr_flags & NDR_BUFFERS) {
165 return NDR_ERR_SUCCESS;
168 _PUBLIC_ void ndr_print_SERVICE_STATUS(struct ndr_print *ndr, const char *name, const struct SERVICE_STATUS *r)
170 ndr_print_struct(ndr, name, "SERVICE_STATUS");
172 ndr_print_uint32(ndr, "type", r->type);
173 ndr_print_svcctl_ServiceStatus(ndr, "state", r->state);
174 ndr_print_svcctl_ControlsAccepted(ndr, "controls_accepted", r->controls_accepted);
175 ndr_print_WERROR(ndr, "win32_exit_code", r->win32_exit_code);
176 ndr_print_uint32(ndr, "service_exit_code", r->service_exit_code);
177 ndr_print_uint32(ndr, "check_point", r->check_point);
178 ndr_print_uint32(ndr, "wait_hint", r->wait_hint);
182 _PUBLIC_ enum ndr_err_code ndr_push_SERVICE_STATUS_PROCESS(struct ndr_push *ndr, int ndr_flags, const struct SERVICE_STATUS_PROCESS *r)
184 if (ndr_flags & NDR_SCALARS) {
185 NDR_CHECK(ndr_push_align(ndr, 4));
186 NDR_CHECK(ndr_push_SERVICE_STATUS(ndr, NDR_SCALARS, &r->status));
187 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->process_id));
188 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->service_flags));
190 if (ndr_flags & NDR_BUFFERS) {
192 return NDR_ERR_SUCCESS;
195 _PUBLIC_ enum ndr_err_code ndr_pull_SERVICE_STATUS_PROCESS(struct ndr_pull *ndr, int ndr_flags, struct SERVICE_STATUS_PROCESS *r)
197 if (ndr_flags & NDR_SCALARS) {
198 NDR_CHECK(ndr_pull_align(ndr, 4));
199 NDR_CHECK(ndr_pull_SERVICE_STATUS(ndr, NDR_SCALARS, &r->status));
200 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->process_id));
201 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->service_flags));
203 if (ndr_flags & NDR_BUFFERS) {
205 return NDR_ERR_SUCCESS;
208 _PUBLIC_ void ndr_print_SERVICE_STATUS_PROCESS(struct ndr_print *ndr, const char *name, const struct SERVICE_STATUS_PROCESS *r)
210 ndr_print_struct(ndr, name, "SERVICE_STATUS_PROCESS");
212 ndr_print_SERVICE_STATUS(ndr, "status", &r->status);
213 ndr_print_uint32(ndr, "process_id", r->process_id);
214 ndr_print_uint32(ndr, "service_flags", r->service_flags);
218 _PUBLIC_ enum ndr_err_code ndr_push_ENUM_SERVICE_STATUSW(struct ndr_push *ndr, int ndr_flags, const struct ENUM_SERVICE_STATUSW *r)
220 if (ndr_flags & NDR_SCALARS) {
221 NDR_CHECK(ndr_push_align(ndr, 4));
223 uint32_t _flags_save_string = ndr->flags;
224 ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
225 NDR_CHECK(ndr_push_relative_ptr1(ndr, r->service_name));
226 ndr->flags = _flags_save_string;
229 uint32_t _flags_save_string = ndr->flags;
230 ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
231 NDR_CHECK(ndr_push_relative_ptr1(ndr, r->display_name));
232 ndr->flags = _flags_save_string;
234 NDR_CHECK(ndr_push_SERVICE_STATUS(ndr, NDR_SCALARS, &r->status));
236 if (ndr_flags & NDR_BUFFERS) {
238 uint32_t _flags_save_string = ndr->flags;
239 ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
240 if (r->service_name) {
241 NDR_CHECK(ndr_push_relative_ptr2(ndr, r->service_name));
242 NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->service_name));
244 ndr->flags = _flags_save_string;
247 uint32_t _flags_save_string = ndr->flags;
248 ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
249 if (r->display_name) {
250 NDR_CHECK(ndr_push_relative_ptr2(ndr, r->display_name));
251 NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->display_name));
253 ndr->flags = _flags_save_string;
256 return NDR_ERR_SUCCESS;
259 _PUBLIC_ enum ndr_err_code ndr_pull_ENUM_SERVICE_STATUSW(struct ndr_pull *ndr, int ndr_flags, struct ENUM_SERVICE_STATUSW *r)
261 uint32_t _ptr_service_name;
262 TALLOC_CTX *_mem_save_service_name_0;
263 uint32_t _ptr_display_name;
264 TALLOC_CTX *_mem_save_display_name_0;
265 if (ndr_flags & NDR_SCALARS) {
266 NDR_CHECK(ndr_pull_align(ndr, 4));
268 uint32_t _flags_save_string = ndr->flags;
269 ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
270 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_service_name));
271 if (_ptr_service_name) {
272 NDR_PULL_ALLOC(ndr, r->service_name);
273 NDR_CHECK(ndr_pull_relative_ptr1(ndr, r->service_name, _ptr_service_name));
275 r->service_name = NULL;
277 ndr->flags = _flags_save_string;
280 uint32_t _flags_save_string = ndr->flags;
281 ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
282 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_display_name));
283 if (_ptr_display_name) {
284 NDR_PULL_ALLOC(ndr, r->display_name);
285 NDR_CHECK(ndr_pull_relative_ptr1(ndr, r->display_name, _ptr_display_name));
287 r->display_name = NULL;
289 ndr->flags = _flags_save_string;
291 NDR_CHECK(ndr_pull_SERVICE_STATUS(ndr, NDR_SCALARS, &r->status));
293 if (ndr_flags & NDR_BUFFERS) {
295 uint32_t _flags_save_string = ndr->flags;
296 ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
297 if (r->service_name) {
298 uint32_t _relative_save_offset;
299 _relative_save_offset = ndr->offset;
300 NDR_CHECK(ndr_pull_relative_ptr2(ndr, r->service_name));
301 _mem_save_service_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
302 NDR_PULL_SET_MEM_CTX(ndr, r->service_name, 0);
303 NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->service_name));
304 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_service_name_0, 0);
305 ndr->offset = _relative_save_offset;
307 ndr->flags = _flags_save_string;
310 uint32_t _flags_save_string = ndr->flags;
311 ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
312 if (r->display_name) {
313 uint32_t _relative_save_offset;
314 _relative_save_offset = ndr->offset;
315 NDR_CHECK(ndr_pull_relative_ptr2(ndr, r->display_name));
316 _mem_save_display_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
317 NDR_PULL_SET_MEM_CTX(ndr, r->display_name, 0);
318 NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->display_name));
319 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_display_name_0, 0);
320 ndr->offset = _relative_save_offset;
322 ndr->flags = _flags_save_string;
325 return NDR_ERR_SUCCESS;
328 _PUBLIC_ void ndr_print_ENUM_SERVICE_STATUSW(struct ndr_print *ndr, const char *name, const struct ENUM_SERVICE_STATUSW *r)
330 ndr_print_struct(ndr, name, "ENUM_SERVICE_STATUSW");
332 ndr_print_ptr(ndr, "service_name", r->service_name);
334 if (r->service_name) {
335 ndr_print_string(ndr, "service_name", r->service_name);
338 ndr_print_ptr(ndr, "display_name", r->display_name);
340 if (r->display_name) {
341 ndr_print_string(ndr, "display_name", r->display_name);
344 ndr_print_SERVICE_STATUS(ndr, "status", &r->status);
348 _PUBLIC_ size_t ndr_size_ENUM_SERVICE_STATUSW(const struct ENUM_SERVICE_STATUSW *r, struct smb_iconv_convenience *ic, int flags)
350 return ndr_size_struct(r, flags, (ndr_push_flags_fn_t)ndr_push_ENUM_SERVICE_STATUSW, ic);
353 _PUBLIC_ enum ndr_err_code ndr_push_ENUM_SERVICE_STATUSA(struct ndr_push *ndr, int ndr_flags, const struct ENUM_SERVICE_STATUSA *r)
355 if (ndr_flags & NDR_SCALARS) {
356 NDR_CHECK(ndr_push_align(ndr, 4));
358 uint32_t _flags_save_string = ndr->flags;
359 ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_ASCII|LIBNDR_FLAG_STR_NULLTERM);
360 NDR_CHECK(ndr_push_relative_ptr1(ndr, r->service_name));
361 ndr->flags = _flags_save_string;
364 uint32_t _flags_save_string = ndr->flags;
365 ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_ASCII|LIBNDR_FLAG_STR_NULLTERM);
366 NDR_CHECK(ndr_push_relative_ptr1(ndr, r->display_name));
367 ndr->flags = _flags_save_string;
369 NDR_CHECK(ndr_push_SERVICE_STATUS(ndr, NDR_SCALARS, &r->status));
371 if (ndr_flags & NDR_BUFFERS) {
373 uint32_t _flags_save_string = ndr->flags;
374 ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_ASCII|LIBNDR_FLAG_STR_NULLTERM);
375 if (r->service_name) {
376 NDR_CHECK(ndr_push_relative_ptr2(ndr, r->service_name));
377 NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->service_name));
379 ndr->flags = _flags_save_string;
382 uint32_t _flags_save_string = ndr->flags;
383 ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_ASCII|LIBNDR_FLAG_STR_NULLTERM);
384 if (r->display_name) {
385 NDR_CHECK(ndr_push_relative_ptr2(ndr, r->display_name));
386 NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->display_name));
388 ndr->flags = _flags_save_string;
391 return NDR_ERR_SUCCESS;
394 _PUBLIC_ enum ndr_err_code ndr_pull_ENUM_SERVICE_STATUSA(struct ndr_pull *ndr, int ndr_flags, struct ENUM_SERVICE_STATUSA *r)
396 uint32_t _ptr_service_name;
397 TALLOC_CTX *_mem_save_service_name_0;
398 uint32_t _ptr_display_name;
399 TALLOC_CTX *_mem_save_display_name_0;
400 if (ndr_flags & NDR_SCALARS) {
401 NDR_CHECK(ndr_pull_align(ndr, 4));
403 uint32_t _flags_save_string = ndr->flags;
404 ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_ASCII|LIBNDR_FLAG_STR_NULLTERM);
405 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_service_name));
406 if (_ptr_service_name) {
407 NDR_PULL_ALLOC(ndr, r->service_name);
408 NDR_CHECK(ndr_pull_relative_ptr1(ndr, r->service_name, _ptr_service_name));
410 r->service_name = NULL;
412 ndr->flags = _flags_save_string;
415 uint32_t _flags_save_string = ndr->flags;
416 ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_ASCII|LIBNDR_FLAG_STR_NULLTERM);
417 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_display_name));
418 if (_ptr_display_name) {
419 NDR_PULL_ALLOC(ndr, r->display_name);
420 NDR_CHECK(ndr_pull_relative_ptr1(ndr, r->display_name, _ptr_display_name));
422 r->display_name = NULL;
424 ndr->flags = _flags_save_string;
426 NDR_CHECK(ndr_pull_SERVICE_STATUS(ndr, NDR_SCALARS, &r->status));
428 if (ndr_flags & NDR_BUFFERS) {
430 uint32_t _flags_save_string = ndr->flags;
431 ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_ASCII|LIBNDR_FLAG_STR_NULLTERM);
432 if (r->service_name) {
433 uint32_t _relative_save_offset;
434 _relative_save_offset = ndr->offset;
435 NDR_CHECK(ndr_pull_relative_ptr2(ndr, r->service_name));
436 _mem_save_service_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
437 NDR_PULL_SET_MEM_CTX(ndr, r->service_name, 0);
438 NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->service_name));
439 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_service_name_0, 0);
440 ndr->offset = _relative_save_offset;
442 ndr->flags = _flags_save_string;
445 uint32_t _flags_save_string = ndr->flags;
446 ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_ASCII|LIBNDR_FLAG_STR_NULLTERM);
447 if (r->display_name) {
448 uint32_t _relative_save_offset;
449 _relative_save_offset = ndr->offset;
450 NDR_CHECK(ndr_pull_relative_ptr2(ndr, r->display_name));
451 _mem_save_display_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
452 NDR_PULL_SET_MEM_CTX(ndr, r->display_name, 0);
453 NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->display_name));
454 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_display_name_0, 0);
455 ndr->offset = _relative_save_offset;
457 ndr->flags = _flags_save_string;
460 return NDR_ERR_SUCCESS;
463 _PUBLIC_ void ndr_print_ENUM_SERVICE_STATUSA(struct ndr_print *ndr, const char *name, const struct ENUM_SERVICE_STATUSA *r)
465 ndr_print_struct(ndr, name, "ENUM_SERVICE_STATUSA");
467 ndr_print_ptr(ndr, "service_name", r->service_name);
469 if (r->service_name) {
470 ndr_print_string(ndr, "service_name", r->service_name);
473 ndr_print_ptr(ndr, "display_name", r->display_name);
475 if (r->display_name) {
476 ndr_print_string(ndr, "display_name", r->display_name);
479 ndr_print_SERVICE_STATUS(ndr, "status", &r->status);
483 _PUBLIC_ size_t ndr_size_ENUM_SERVICE_STATUSA(const struct ENUM_SERVICE_STATUSA *r, struct smb_iconv_convenience *ic, int flags)
485 return ndr_size_struct(r, flags, (ndr_push_flags_fn_t)ndr_push_ENUM_SERVICE_STATUSA, ic);
488 _PUBLIC_ enum ndr_err_code ndr_push_svcctl_ServerType(struct ndr_push *ndr, int ndr_flags, uint32_t r)
490 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r));
491 return NDR_ERR_SUCCESS;
494 _PUBLIC_ enum ndr_err_code ndr_pull_svcctl_ServerType(struct ndr_pull *ndr, int ndr_flags, uint32_t *r)
497 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &v));
499 return NDR_ERR_SUCCESS;
502 _PUBLIC_ void ndr_print_svcctl_ServerType(struct ndr_print *ndr, const char *name, uint32_t r)
504 ndr_print_uint32(ndr, name, r);
506 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_WORKSTATION", SV_TYPE_WORKSTATION, r);
507 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_SERVER", SV_TYPE_SERVER, r);
508 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_SQLSERVER", SV_TYPE_SQLSERVER, r);
509 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_DOMAIN_CTRL", SV_TYPE_DOMAIN_CTRL, r);
510 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_DOMAIN_BAKCTRL", SV_TYPE_DOMAIN_BAKCTRL, r);
511 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_TIME_SOURCE", SV_TYPE_TIME_SOURCE, r);
512 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_AFP", SV_TYPE_AFP, r);
513 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_NOVELL", SV_TYPE_NOVELL, r);
514 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_DOMAIN_MEMBER", SV_TYPE_DOMAIN_MEMBER, r);
515 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_PRINTQ_SERVER", SV_TYPE_PRINTQ_SERVER, r);
516 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_DIALIN_SERVER", SV_TYPE_DIALIN_SERVER, r);
517 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_SERVER_UNIX", SV_TYPE_SERVER_UNIX, r);
518 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_NT", SV_TYPE_NT, r);
519 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_WFW", SV_TYPE_WFW, r);
520 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_SERVER_MFPN", SV_TYPE_SERVER_MFPN, r);
521 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_SERVER_NT", SV_TYPE_SERVER_NT, r);
522 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_POTENTIAL_BROWSER", SV_TYPE_POTENTIAL_BROWSER, r);
523 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_BACKUP_BROWSER", SV_TYPE_BACKUP_BROWSER, r);
524 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_MASTER_BROWSER", SV_TYPE_MASTER_BROWSER, r);
525 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_DOMAIN_MASTER", SV_TYPE_DOMAIN_MASTER, r);
526 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_SERVER_OSF", SV_TYPE_SERVER_OSF, r);
527 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_SERVER_VMS", SV_TYPE_SERVER_VMS, r);
528 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_WIN95_PLUS", SV_TYPE_WIN95_PLUS, r);
529 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_DFS_SERVER", SV_TYPE_DFS_SERVER, r);
530 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_ALTERNATE_XPORT", SV_TYPE_ALTERNATE_XPORT, r);
531 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_LOCAL_LIST_ONLY", SV_TYPE_LOCAL_LIST_ONLY, r);
532 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_DOMAIN_ENUM", SV_TYPE_DOMAIN_ENUM, r);
536 static enum ndr_err_code ndr_push_SERVICE_CONTROL(struct ndr_push *ndr, int ndr_flags, enum SERVICE_CONTROL r)
538 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r));
539 return NDR_ERR_SUCCESS;
542 static enum ndr_err_code ndr_pull_SERVICE_CONTROL(struct ndr_pull *ndr, int ndr_flags, enum SERVICE_CONTROL *r)
545 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &v));
547 return NDR_ERR_SUCCESS;
550 _PUBLIC_ void ndr_print_SERVICE_CONTROL(struct ndr_print *ndr, const char *name, enum SERVICE_CONTROL r)
552 const char *val = NULL;
555 case SVCCTL_CONTROL_STOP: val = "SVCCTL_CONTROL_STOP"; break;
556 case SVCCTL_CONTROL_PAUSE: val = "SVCCTL_CONTROL_PAUSE"; break;
557 case SVCCTL_CONTROL_CONTINUE: val = "SVCCTL_CONTROL_CONTINUE"; break;
558 case SVCCTL_CONTROL_INTERROGATE: val = "SVCCTL_CONTROL_INTERROGATE"; break;
559 case SVCCTL_CONTROL_SHUTDOWN: val = "SVCCTL_CONTROL_SHUTDOWN"; break;
561 ndr_print_enum(ndr, name, "ENUM", val, r);
564 static enum ndr_err_code ndr_push_svcctl_ErrorControl(struct ndr_push *ndr, int ndr_flags, enum svcctl_ErrorControl r)
566 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r));
567 return NDR_ERR_SUCCESS;
570 static enum ndr_err_code ndr_pull_svcctl_ErrorControl(struct ndr_pull *ndr, int ndr_flags, enum svcctl_ErrorControl *r)
573 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &v));
575 return NDR_ERR_SUCCESS;
578 _PUBLIC_ void ndr_print_svcctl_ErrorControl(struct ndr_print *ndr, const char *name, enum svcctl_ErrorControl r)
580 const char *val = NULL;
583 case SVCCTL_SVC_ERROR_IGNORE: val = "SVCCTL_SVC_ERROR_IGNORE"; break;
584 case SVCCTL_SVC_ERROR_NORMAL: val = "SVCCTL_SVC_ERROR_NORMAL"; break;
585 case SVCCTL_SVC_ERROR_CRITICAL: val = "SVCCTL_SVC_ERROR_CRITICAL"; break;
586 case SVCCTL_SVC_ERROR_SEVERE: val = "SVCCTL_SVC_ERROR_SEVERE"; break;
588 ndr_print_enum(ndr, name, "ENUM", val, r);
591 static enum ndr_err_code ndr_push_svcctl_StartType(struct ndr_push *ndr, int ndr_flags, enum svcctl_StartType r)
593 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r));
594 return NDR_ERR_SUCCESS;
597 static enum ndr_err_code ndr_pull_svcctl_StartType(struct ndr_pull *ndr, int ndr_flags, enum svcctl_StartType *r)
600 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &v));
602 return NDR_ERR_SUCCESS;
605 _PUBLIC_ void ndr_print_svcctl_StartType(struct ndr_print *ndr, const char *name, enum svcctl_StartType r)
607 const char *val = NULL;
610 case SVCCTL_BOOT_START: val = "SVCCTL_BOOT_START"; break;
611 case SVCCTL_SYSTEM_START: val = "SVCCTL_SYSTEM_START"; break;
612 case SVCCTL_AUTO_START: val = "SVCCTL_AUTO_START"; break;
613 case SVCCTL_DEMAND_START: val = "SVCCTL_DEMAND_START"; break;
614 case SVCCTL_DISABLED: val = "SVCCTL_DISABLED"; break;
616 ndr_print_enum(ndr, name, "ENUM", val, r);
619 static enum ndr_err_code ndr_push_svcctl_ServiceState(struct ndr_push *ndr, int ndr_flags, enum svcctl_ServiceState r)
621 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r));
622 return NDR_ERR_SUCCESS;
625 static enum ndr_err_code ndr_pull_svcctl_ServiceState(struct ndr_pull *ndr, int ndr_flags, enum svcctl_ServiceState *r)
628 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &v));
630 return NDR_ERR_SUCCESS;
633 _PUBLIC_ void ndr_print_svcctl_ServiceState(struct ndr_print *ndr, const char *name, enum svcctl_ServiceState r)
635 const char *val = NULL;
638 case SERVICE_STATE_ACTIVE: val = "SERVICE_STATE_ACTIVE"; break;
639 case SERVICE_STATE_INACTIVE: val = "SERVICE_STATE_INACTIVE"; break;
640 case SERVICE_STATE_ALL: val = "SERVICE_STATE_ALL"; break;
642 ndr_print_enum(ndr, name, "ENUM", val, r);
645 static enum ndr_err_code ndr_push_svcctl_MgrAccessMask(struct ndr_push *ndr, int ndr_flags, uint32_t r)
647 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r));
648 return NDR_ERR_SUCCESS;
651 static enum ndr_err_code ndr_pull_svcctl_MgrAccessMask(struct ndr_pull *ndr, int ndr_flags, uint32_t *r)
654 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &v));
656 return NDR_ERR_SUCCESS;
659 _PUBLIC_ void ndr_print_svcctl_MgrAccessMask(struct ndr_print *ndr, const char *name, uint32_t r)
661 ndr_print_uint32(ndr, name, r);
663 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SC_RIGHT_MGR_CONNECT", SC_RIGHT_MGR_CONNECT, r);
664 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SC_RIGHT_MGR_CREATE_SERVICE", SC_RIGHT_MGR_CREATE_SERVICE, r);
665 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SC_RIGHT_MGR_ENUMERATE_SERVICE", SC_RIGHT_MGR_ENUMERATE_SERVICE, r);
666 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SC_RIGHT_MGR_LOCK", SC_RIGHT_MGR_LOCK, r);
667 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SC_RIGHT_MGR_QUERY_LOCK_STATUS", SC_RIGHT_MGR_QUERY_LOCK_STATUS, r);
668 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SC_RIGHT_MGR_MODIFY_BOOT_CONFIG", SC_RIGHT_MGR_MODIFY_BOOT_CONFIG, r);
672 static enum ndr_err_code ndr_push_svcctl_ServiceAccessMask(struct ndr_push *ndr, int ndr_flags, uint32_t r)
674 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r));
675 return NDR_ERR_SUCCESS;
678 static enum ndr_err_code ndr_pull_svcctl_ServiceAccessMask(struct ndr_pull *ndr, int ndr_flags, uint32_t *r)
681 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &v));
683 return NDR_ERR_SUCCESS;
686 _PUBLIC_ void ndr_print_svcctl_ServiceAccessMask(struct ndr_print *ndr, const char *name, uint32_t r)
688 ndr_print_uint32(ndr, name, r);
690 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SC_RIGHT_SVC_QUERY_CONFIG", SC_RIGHT_SVC_QUERY_CONFIG, r);
691 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SC_RIGHT_SVC_CHANGE_CONFIG", SC_RIGHT_SVC_CHANGE_CONFIG, r);
692 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SC_RIGHT_SVC_QUERY_STATUS", SC_RIGHT_SVC_QUERY_STATUS, r);
693 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SC_RIGHT_SVC_ENUMERATE_DEPENDENTS", SC_RIGHT_SVC_ENUMERATE_DEPENDENTS, r);
694 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SC_RIGHT_SVC_START", SC_RIGHT_SVC_START, r);
695 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SC_RIGHT_SVC_STOP", SC_RIGHT_SVC_STOP, r);
696 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SC_RIGHT_SVC_PAUSE_CONTINUE", SC_RIGHT_SVC_PAUSE_CONTINUE, r);
697 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SC_RIGHT_SVC_INTERROGATE", SC_RIGHT_SVC_INTERROGATE, r);
698 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SC_RIGHT_SVC_USER_DEFINED_CONTROL", SC_RIGHT_SVC_USER_DEFINED_CONTROL, r);
702 _PUBLIC_ enum ndr_err_code ndr_push_QUERY_SERVICE_CONFIG(struct ndr_push *ndr, int ndr_flags, const struct QUERY_SERVICE_CONFIG *r)
704 if (ndr_flags & NDR_SCALARS) {
705 NDR_CHECK(ndr_push_align(ndr, 4));
706 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->service_type));
707 NDR_CHECK(ndr_push_svcctl_StartType(ndr, NDR_SCALARS, r->start_type));
708 NDR_CHECK(ndr_push_svcctl_ErrorControl(ndr, NDR_SCALARS, r->error_control));
709 NDR_CHECK(ndr_push_unique_ptr(ndr, r->executablepath));
710 NDR_CHECK(ndr_push_unique_ptr(ndr, r->loadordergroup));
711 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->tag_id));
712 NDR_CHECK(ndr_push_unique_ptr(ndr, r->dependencies));
713 NDR_CHECK(ndr_push_unique_ptr(ndr, r->startname));
714 NDR_CHECK(ndr_push_unique_ptr(ndr, r->displayname));
716 if (ndr_flags & NDR_BUFFERS) {
717 if (r->executablepath) {
718 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->executablepath, CH_UTF16)));
719 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
720 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->executablepath, CH_UTF16)));
721 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->executablepath, ndr_charset_length(r->executablepath, CH_UTF16), sizeof(uint16_t), CH_UTF16));
723 if (r->loadordergroup) {
724 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->loadordergroup, CH_UTF16)));
725 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
726 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->loadordergroup, CH_UTF16)));
727 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->loadordergroup, ndr_charset_length(r->loadordergroup, CH_UTF16), sizeof(uint16_t), CH_UTF16));
729 if (r->dependencies) {
730 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->dependencies, CH_UTF16)));
731 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
732 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->dependencies, CH_UTF16)));
733 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->dependencies, ndr_charset_length(r->dependencies, CH_UTF16), sizeof(uint16_t), CH_UTF16));
736 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->startname, CH_UTF16)));
737 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
738 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->startname, CH_UTF16)));
739 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->startname, ndr_charset_length(r->startname, CH_UTF16), sizeof(uint16_t), CH_UTF16));
741 if (r->displayname) {
742 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->displayname, CH_UTF16)));
743 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
744 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->displayname, CH_UTF16)));
745 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->displayname, ndr_charset_length(r->displayname, CH_UTF16), sizeof(uint16_t), CH_UTF16));
748 return NDR_ERR_SUCCESS;
751 _PUBLIC_ enum ndr_err_code ndr_pull_QUERY_SERVICE_CONFIG(struct ndr_pull *ndr, int ndr_flags, struct QUERY_SERVICE_CONFIG *r)
753 uint32_t _ptr_executablepath;
754 TALLOC_CTX *_mem_save_executablepath_0;
755 uint32_t _ptr_loadordergroup;
756 TALLOC_CTX *_mem_save_loadordergroup_0;
757 uint32_t _ptr_dependencies;
758 TALLOC_CTX *_mem_save_dependencies_0;
759 uint32_t _ptr_startname;
760 TALLOC_CTX *_mem_save_startname_0;
761 uint32_t _ptr_displayname;
762 TALLOC_CTX *_mem_save_displayname_0;
763 if (ndr_flags & NDR_SCALARS) {
764 NDR_CHECK(ndr_pull_align(ndr, 4));
765 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->service_type));
766 NDR_CHECK(ndr_pull_svcctl_StartType(ndr, NDR_SCALARS, &r->start_type));
767 NDR_CHECK(ndr_pull_svcctl_ErrorControl(ndr, NDR_SCALARS, &r->error_control));
768 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_executablepath));
769 if (_ptr_executablepath) {
770 NDR_PULL_ALLOC(ndr, r->executablepath);
772 r->executablepath = NULL;
774 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_loadordergroup));
775 if (_ptr_loadordergroup) {
776 NDR_PULL_ALLOC(ndr, r->loadordergroup);
778 r->loadordergroup = NULL;
780 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->tag_id));
781 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_dependencies));
782 if (_ptr_dependencies) {
783 NDR_PULL_ALLOC(ndr, r->dependencies);
785 r->dependencies = NULL;
787 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_startname));
788 if (_ptr_startname) {
789 NDR_PULL_ALLOC(ndr, r->startname);
793 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_displayname));
794 if (_ptr_displayname) {
795 NDR_PULL_ALLOC(ndr, r->displayname);
797 r->displayname = NULL;
800 if (ndr_flags & NDR_BUFFERS) {
801 if (r->executablepath) {
802 _mem_save_executablepath_0 = NDR_PULL_GET_MEM_CTX(ndr);
803 NDR_PULL_SET_MEM_CTX(ndr, r->executablepath, 0);
804 NDR_CHECK(ndr_pull_array_size(ndr, &r->executablepath));
805 NDR_CHECK(ndr_pull_array_length(ndr, &r->executablepath));
806 if (ndr_get_array_length(ndr, &r->executablepath) > ndr_get_array_size(ndr, &r->executablepath)) {
807 return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->executablepath), ndr_get_array_length(ndr, &r->executablepath));
809 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->executablepath), sizeof(uint16_t)));
810 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->executablepath, ndr_get_array_length(ndr, &r->executablepath), sizeof(uint16_t), CH_UTF16));
811 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_executablepath_0, 0);
813 if (r->loadordergroup) {
814 _mem_save_loadordergroup_0 = NDR_PULL_GET_MEM_CTX(ndr);
815 NDR_PULL_SET_MEM_CTX(ndr, r->loadordergroup, 0);
816 NDR_CHECK(ndr_pull_array_size(ndr, &r->loadordergroup));
817 NDR_CHECK(ndr_pull_array_length(ndr, &r->loadordergroup));
818 if (ndr_get_array_length(ndr, &r->loadordergroup) > ndr_get_array_size(ndr, &r->loadordergroup)) {
819 return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->loadordergroup), ndr_get_array_length(ndr, &r->loadordergroup));
821 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->loadordergroup), sizeof(uint16_t)));
822 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->loadordergroup, ndr_get_array_length(ndr, &r->loadordergroup), sizeof(uint16_t), CH_UTF16));
823 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_loadordergroup_0, 0);
825 if (r->dependencies) {
826 _mem_save_dependencies_0 = NDR_PULL_GET_MEM_CTX(ndr);
827 NDR_PULL_SET_MEM_CTX(ndr, r->dependencies, 0);
828 NDR_CHECK(ndr_pull_array_size(ndr, &r->dependencies));
829 NDR_CHECK(ndr_pull_array_length(ndr, &r->dependencies));
830 if (ndr_get_array_length(ndr, &r->dependencies) > ndr_get_array_size(ndr, &r->dependencies)) {
831 return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->dependencies), ndr_get_array_length(ndr, &r->dependencies));
833 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->dependencies), sizeof(uint16_t)));
834 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->dependencies, ndr_get_array_length(ndr, &r->dependencies), sizeof(uint16_t), CH_UTF16));
835 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_dependencies_0, 0);
838 _mem_save_startname_0 = NDR_PULL_GET_MEM_CTX(ndr);
839 NDR_PULL_SET_MEM_CTX(ndr, r->startname, 0);
840 NDR_CHECK(ndr_pull_array_size(ndr, &r->startname));
841 NDR_CHECK(ndr_pull_array_length(ndr, &r->startname));
842 if (ndr_get_array_length(ndr, &r->startname) > ndr_get_array_size(ndr, &r->startname)) {
843 return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->startname), ndr_get_array_length(ndr, &r->startname));
845 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->startname), sizeof(uint16_t)));
846 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->startname, ndr_get_array_length(ndr, &r->startname), sizeof(uint16_t), CH_UTF16));
847 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_startname_0, 0);
849 if (r->displayname) {
850 _mem_save_displayname_0 = NDR_PULL_GET_MEM_CTX(ndr);
851 NDR_PULL_SET_MEM_CTX(ndr, r->displayname, 0);
852 NDR_CHECK(ndr_pull_array_size(ndr, &r->displayname));
853 NDR_CHECK(ndr_pull_array_length(ndr, &r->displayname));
854 if (ndr_get_array_length(ndr, &r->displayname) > ndr_get_array_size(ndr, &r->displayname)) {
855 return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->displayname), ndr_get_array_length(ndr, &r->displayname));
857 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->displayname), sizeof(uint16_t)));
858 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->displayname, ndr_get_array_length(ndr, &r->displayname), sizeof(uint16_t), CH_UTF16));
859 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_displayname_0, 0);
862 return NDR_ERR_SUCCESS;
865 _PUBLIC_ void ndr_print_QUERY_SERVICE_CONFIG(struct ndr_print *ndr, const char *name, const struct QUERY_SERVICE_CONFIG *r)
867 ndr_print_struct(ndr, name, "QUERY_SERVICE_CONFIG");
869 ndr_print_uint32(ndr, "service_type", r->service_type);
870 ndr_print_svcctl_StartType(ndr, "start_type", r->start_type);
871 ndr_print_svcctl_ErrorControl(ndr, "error_control", r->error_control);
872 ndr_print_ptr(ndr, "executablepath", r->executablepath);
874 if (r->executablepath) {
875 ndr_print_string(ndr, "executablepath", r->executablepath);
878 ndr_print_ptr(ndr, "loadordergroup", r->loadordergroup);
880 if (r->loadordergroup) {
881 ndr_print_string(ndr, "loadordergroup", r->loadordergroup);
884 ndr_print_uint32(ndr, "tag_id", r->tag_id);
885 ndr_print_ptr(ndr, "dependencies", r->dependencies);
887 if (r->dependencies) {
888 ndr_print_string(ndr, "dependencies", r->dependencies);
891 ndr_print_ptr(ndr, "startname", r->startname);
894 ndr_print_string(ndr, "startname", r->startname);
897 ndr_print_ptr(ndr, "displayname", r->displayname);
899 if (r->displayname) {
900 ndr_print_string(ndr, "displayname", r->displayname);
906 _PUBLIC_ size_t ndr_size_QUERY_SERVICE_CONFIG(const struct QUERY_SERVICE_CONFIG *r, struct smb_iconv_convenience *ic, int flags)
908 return ndr_size_struct(r, flags, (ndr_push_flags_fn_t)ndr_push_QUERY_SERVICE_CONFIG, ic);
911 static enum ndr_err_code ndr_push_svcctl_ConfigLevel(struct ndr_push *ndr, int ndr_flags, enum svcctl_ConfigLevel r)
913 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r));
914 return NDR_ERR_SUCCESS;
917 static enum ndr_err_code ndr_pull_svcctl_ConfigLevel(struct ndr_pull *ndr, int ndr_flags, enum svcctl_ConfigLevel *r)
920 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &v));
922 return NDR_ERR_SUCCESS;
925 _PUBLIC_ void ndr_print_svcctl_ConfigLevel(struct ndr_print *ndr, const char *name, enum svcctl_ConfigLevel r)
927 const char *val = NULL;
930 case SERVICE_CONFIG_DESCRIPTION: val = "SERVICE_CONFIG_DESCRIPTION"; break;
931 case SERVICE_CONFIG_FAILURE_ACTIONS: val = "SERVICE_CONFIG_FAILURE_ACTIONS"; break;
933 ndr_print_enum(ndr, name, "ENUM", val, r);
936 _PUBLIC_ enum ndr_err_code ndr_push_SERVICE_DESCRIPTION(struct ndr_push *ndr, int ndr_flags, const struct SERVICE_DESCRIPTION *r)
938 if (ndr_flags & NDR_SCALARS) {
939 NDR_CHECK(ndr_push_align(ndr, 4));
941 uint32_t _flags_save_string = ndr->flags;
942 ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
943 NDR_CHECK(ndr_push_relative_ptr1(ndr, r->description));
944 ndr->flags = _flags_save_string;
947 if (ndr_flags & NDR_BUFFERS) {
949 uint32_t _flags_save_string = ndr->flags;
950 ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
951 if (r->description) {
952 NDR_CHECK(ndr_push_relative_ptr2(ndr, r->description));
953 NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->description));
955 ndr->flags = _flags_save_string;
958 return NDR_ERR_SUCCESS;
961 _PUBLIC_ enum ndr_err_code ndr_pull_SERVICE_DESCRIPTION(struct ndr_pull *ndr, int ndr_flags, struct SERVICE_DESCRIPTION *r)
963 uint32_t _ptr_description;
964 TALLOC_CTX *_mem_save_description_0;
965 if (ndr_flags & NDR_SCALARS) {
966 NDR_CHECK(ndr_pull_align(ndr, 4));
968 uint32_t _flags_save_string = ndr->flags;
969 ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
970 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_description));
971 if (_ptr_description) {
972 NDR_PULL_ALLOC(ndr, r->description);
973 NDR_CHECK(ndr_pull_relative_ptr1(ndr, r->description, _ptr_description));
975 r->description = NULL;
977 ndr->flags = _flags_save_string;
980 if (ndr_flags & NDR_BUFFERS) {
982 uint32_t _flags_save_string = ndr->flags;
983 ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
984 if (r->description) {
985 uint32_t _relative_save_offset;
986 _relative_save_offset = ndr->offset;
987 NDR_CHECK(ndr_pull_relative_ptr2(ndr, r->description));
988 _mem_save_description_0 = NDR_PULL_GET_MEM_CTX(ndr);
989 NDR_PULL_SET_MEM_CTX(ndr, r->description, 0);
990 NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->description));
991 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_description_0, 0);
992 ndr->offset = _relative_save_offset;
994 ndr->flags = _flags_save_string;
997 return NDR_ERR_SUCCESS;
1000 _PUBLIC_ void ndr_print_SERVICE_DESCRIPTION(struct ndr_print *ndr, const char *name, const struct SERVICE_DESCRIPTION *r)
1002 ndr_print_struct(ndr, name, "SERVICE_DESCRIPTION");
1004 ndr_print_ptr(ndr, "description", r->description);
1006 if (r->description) {
1007 ndr_print_string(ndr, "description", r->description);
1013 _PUBLIC_ size_t ndr_size_SERVICE_DESCRIPTION(const struct SERVICE_DESCRIPTION *r, struct smb_iconv_convenience *ic, int flags)
1015 return ndr_size_struct(r, flags, (ndr_push_flags_fn_t)ndr_push_SERVICE_DESCRIPTION, ic);
1018 static enum ndr_err_code ndr_push_SC_ACTION_TYPE(struct ndr_push *ndr, int ndr_flags, enum SC_ACTION_TYPE r)
1020 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r));
1021 return NDR_ERR_SUCCESS;
1024 static enum ndr_err_code ndr_pull_SC_ACTION_TYPE(struct ndr_pull *ndr, int ndr_flags, enum SC_ACTION_TYPE *r)
1027 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &v));
1029 return NDR_ERR_SUCCESS;
1032 _PUBLIC_ void ndr_print_SC_ACTION_TYPE(struct ndr_print *ndr, const char *name, enum SC_ACTION_TYPE r)
1034 const char *val = NULL;
1037 case SC_ACTION_NONE: val = "SC_ACTION_NONE"; break;
1038 case SC_ACTION_RESTART: val = "SC_ACTION_RESTART"; break;
1039 case SC_ACTION_REBOOT: val = "SC_ACTION_REBOOT"; break;
1040 case SC_ACTION_RUN_COMMAND: val = "SC_ACTION_RUN_COMMAND"; break;
1042 ndr_print_enum(ndr, name, "ENUM", val, r);
1045 static enum ndr_err_code ndr_push_SC_ACTION(struct ndr_push *ndr, int ndr_flags, const struct SC_ACTION *r)
1047 if (ndr_flags & NDR_SCALARS) {
1048 NDR_CHECK(ndr_push_align(ndr, 4));
1049 NDR_CHECK(ndr_push_SC_ACTION_TYPE(ndr, NDR_SCALARS, r->type));
1050 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->delay));
1052 if (ndr_flags & NDR_BUFFERS) {
1054 return NDR_ERR_SUCCESS;
1057 static enum ndr_err_code ndr_pull_SC_ACTION(struct ndr_pull *ndr, int ndr_flags, struct SC_ACTION *r)
1059 if (ndr_flags & NDR_SCALARS) {
1060 NDR_CHECK(ndr_pull_align(ndr, 4));
1061 NDR_CHECK(ndr_pull_SC_ACTION_TYPE(ndr, NDR_SCALARS, &r->type));
1062 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->delay));
1064 if (ndr_flags & NDR_BUFFERS) {
1066 return NDR_ERR_SUCCESS;
1069 _PUBLIC_ void ndr_print_SC_ACTION(struct ndr_print *ndr, const char *name, const struct SC_ACTION *r)
1071 ndr_print_struct(ndr, name, "SC_ACTION");
1073 ndr_print_SC_ACTION_TYPE(ndr, "type", r->type);
1074 ndr_print_uint32(ndr, "delay", r->delay);
1078 _PUBLIC_ enum ndr_err_code ndr_push_SERVICE_FAILURE_ACTIONS(struct ndr_push *ndr, int ndr_flags, const struct SERVICE_FAILURE_ACTIONS *r)
1080 uint32_t cntr_actions_1;
1081 if (ndr_flags & NDR_SCALARS) {
1082 NDR_CHECK(ndr_push_align(ndr, 4));
1083 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->reset_period));
1085 uint32_t _flags_save_string = ndr->flags;
1086 ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
1087 NDR_CHECK(ndr_push_relative_ptr1(ndr, r->rebootmsg));
1088 ndr->flags = _flags_save_string;
1091 uint32_t _flags_save_string = ndr->flags;
1092 ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
1093 NDR_CHECK(ndr_push_relative_ptr1(ndr, r->command));
1094 ndr->flags = _flags_save_string;
1096 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->num_actions));
1097 NDR_CHECK(ndr_push_relative_ptr1(ndr, r->actions));
1099 if (ndr_flags & NDR_BUFFERS) {
1101 uint32_t _flags_save_string = ndr->flags;
1102 ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
1104 NDR_CHECK(ndr_push_relative_ptr2(ndr, r->rebootmsg));
1105 NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->rebootmsg));
1107 ndr->flags = _flags_save_string;
1110 uint32_t _flags_save_string = ndr->flags;
1111 ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
1113 NDR_CHECK(ndr_push_relative_ptr2(ndr, r->command));
1114 NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->command));
1116 ndr->flags = _flags_save_string;
1119 NDR_CHECK(ndr_push_relative_ptr2(ndr, r->actions));
1120 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->num_actions));
1121 for (cntr_actions_1 = 0; cntr_actions_1 < r->num_actions; cntr_actions_1++) {
1122 NDR_CHECK(ndr_push_SC_ACTION(ndr, NDR_SCALARS, &r->actions[cntr_actions_1]));
1126 return NDR_ERR_SUCCESS;
1129 _PUBLIC_ enum ndr_err_code ndr_pull_SERVICE_FAILURE_ACTIONS(struct ndr_pull *ndr, int ndr_flags, struct SERVICE_FAILURE_ACTIONS *r)
1131 uint32_t _ptr_rebootmsg;
1132 TALLOC_CTX *_mem_save_rebootmsg_0;
1133 uint32_t _ptr_command;
1134 TALLOC_CTX *_mem_save_command_0;
1135 uint32_t _ptr_actions;
1136 uint32_t cntr_actions_1;
1137 TALLOC_CTX *_mem_save_actions_0;
1138 TALLOC_CTX *_mem_save_actions_1;
1139 if (ndr_flags & NDR_SCALARS) {
1140 NDR_CHECK(ndr_pull_align(ndr, 4));
1141 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->reset_period));
1143 uint32_t _flags_save_string = ndr->flags;
1144 ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
1145 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_rebootmsg));
1146 if (_ptr_rebootmsg) {
1147 NDR_PULL_ALLOC(ndr, r->rebootmsg);
1148 NDR_CHECK(ndr_pull_relative_ptr1(ndr, r->rebootmsg, _ptr_rebootmsg));
1150 r->rebootmsg = NULL;
1152 ndr->flags = _flags_save_string;
1155 uint32_t _flags_save_string = ndr->flags;
1156 ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
1157 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_command));
1159 NDR_PULL_ALLOC(ndr, r->command);
1160 NDR_CHECK(ndr_pull_relative_ptr1(ndr, r->command, _ptr_command));
1164 ndr->flags = _flags_save_string;
1166 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->num_actions));
1167 if (r->num_actions > 1024) {
1168 return ndr_pull_error(ndr, NDR_ERR_RANGE, "value out of range");
1170 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_actions));
1172 NDR_PULL_ALLOC(ndr, r->actions);
1173 NDR_CHECK(ndr_pull_relative_ptr1(ndr, r->actions, _ptr_actions));
1178 if (ndr_flags & NDR_BUFFERS) {
1180 uint32_t _flags_save_string = ndr->flags;
1181 ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
1183 uint32_t _relative_save_offset;
1184 _relative_save_offset = ndr->offset;
1185 NDR_CHECK(ndr_pull_relative_ptr2(ndr, r->rebootmsg));
1186 _mem_save_rebootmsg_0 = NDR_PULL_GET_MEM_CTX(ndr);
1187 NDR_PULL_SET_MEM_CTX(ndr, r->rebootmsg, 0);
1188 NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->rebootmsg));
1189 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_rebootmsg_0, 0);
1190 ndr->offset = _relative_save_offset;
1192 ndr->flags = _flags_save_string;
1195 uint32_t _flags_save_string = ndr->flags;
1196 ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
1198 uint32_t _relative_save_offset;
1199 _relative_save_offset = ndr->offset;
1200 NDR_CHECK(ndr_pull_relative_ptr2(ndr, r->command));
1201 _mem_save_command_0 = NDR_PULL_GET_MEM_CTX(ndr);
1202 NDR_PULL_SET_MEM_CTX(ndr, r->command, 0);
1203 NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->command));
1204 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_command_0, 0);
1205 ndr->offset = _relative_save_offset;
1207 ndr->flags = _flags_save_string;
1210 uint32_t _relative_save_offset;
1211 _relative_save_offset = ndr->offset;
1212 NDR_CHECK(ndr_pull_relative_ptr2(ndr, r->actions));
1213 _mem_save_actions_0 = NDR_PULL_GET_MEM_CTX(ndr);
1214 NDR_PULL_SET_MEM_CTX(ndr, r->actions, 0);
1215 NDR_CHECK(ndr_pull_array_size(ndr, &r->actions));
1216 NDR_PULL_ALLOC_N(ndr, r->actions, ndr_get_array_size(ndr, &r->actions));
1217 _mem_save_actions_1 = NDR_PULL_GET_MEM_CTX(ndr);
1218 NDR_PULL_SET_MEM_CTX(ndr, r->actions, 0);
1219 for (cntr_actions_1 = 0; cntr_actions_1 < r->num_actions; cntr_actions_1++) {
1220 NDR_CHECK(ndr_pull_SC_ACTION(ndr, NDR_SCALARS, &r->actions[cntr_actions_1]));
1222 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_actions_1, 0);
1223 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_actions_0, 0);
1224 ndr->offset = _relative_save_offset;
1227 NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->actions, r->num_actions));
1230 return NDR_ERR_SUCCESS;
1233 _PUBLIC_ void ndr_print_SERVICE_FAILURE_ACTIONS(struct ndr_print *ndr, const char *name, const struct SERVICE_FAILURE_ACTIONS *r)
1235 uint32_t cntr_actions_1;
1236 ndr_print_struct(ndr, name, "SERVICE_FAILURE_ACTIONS");
1238 ndr_print_uint32(ndr, "reset_period", r->reset_period);
1239 ndr_print_ptr(ndr, "rebootmsg", r->rebootmsg);
1242 ndr_print_string(ndr, "rebootmsg", r->rebootmsg);
1245 ndr_print_ptr(ndr, "command", r->command);
1248 ndr_print_string(ndr, "command", r->command);
1251 ndr_print_uint32(ndr, "num_actions", r->num_actions);
1252 ndr_print_ptr(ndr, "actions", r->actions);
1255 ndr->print(ndr, "%s: ARRAY(%d)", "actions", (int)r->num_actions);
1257 for (cntr_actions_1=0;cntr_actions_1<r->num_actions;cntr_actions_1++) {
1259 if (asprintf(&idx_1, "[%d]", cntr_actions_1) != -1) {
1260 ndr_print_SC_ACTION(ndr, "actions", &r->actions[cntr_actions_1]);
1270 _PUBLIC_ size_t ndr_size_SERVICE_FAILURE_ACTIONS(const struct SERVICE_FAILURE_ACTIONS *r, struct smb_iconv_convenience *ic, int flags)
1272 return ndr_size_struct(r, flags, (ndr_push_flags_fn_t)ndr_push_SERVICE_FAILURE_ACTIONS, ic);
1275 static enum ndr_err_code ndr_push_svcctl_StatusLevel(struct ndr_push *ndr, int ndr_flags, enum svcctl_StatusLevel r)
1277 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r));
1278 return NDR_ERR_SUCCESS;
1281 static enum ndr_err_code ndr_pull_svcctl_StatusLevel(struct ndr_pull *ndr, int ndr_flags, enum svcctl_StatusLevel *r)
1284 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &v));
1286 return NDR_ERR_SUCCESS;
1289 _PUBLIC_ void ndr_print_svcctl_StatusLevel(struct ndr_print *ndr, const char *name, enum svcctl_StatusLevel r)
1291 const char *val = NULL;
1294 case SVC_STATUS_PROCESS_INFO: val = "SVC_STATUS_PROCESS_INFO"; break;
1296 ndr_print_enum(ndr, name, "ENUM", val, r);
1299 static enum ndr_err_code ndr_push_svcctl_CloseServiceHandle(struct ndr_push *ndr, int flags, const struct svcctl_CloseServiceHandle *r)
1301 if (flags & NDR_IN) {
1302 if (r->in.handle == NULL) {
1303 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
1305 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
1307 if (flags & NDR_OUT) {
1308 if (r->out.handle == NULL) {
1309 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
1311 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->out.handle));
1312 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
1314 return NDR_ERR_SUCCESS;
1317 static enum ndr_err_code ndr_pull_svcctl_CloseServiceHandle(struct ndr_pull *ndr, int flags, struct svcctl_CloseServiceHandle *r)
1319 TALLOC_CTX *_mem_save_handle_0;
1320 if (flags & NDR_IN) {
1321 ZERO_STRUCT(r->out);
1323 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
1324 NDR_PULL_ALLOC(ndr, r->in.handle);
1326 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
1327 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
1328 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
1329 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
1330 NDR_PULL_ALLOC(ndr, r->out.handle);
1331 *r->out.handle = *r->in.handle;
1333 if (flags & NDR_OUT) {
1334 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
1335 NDR_PULL_ALLOC(ndr, r->out.handle);
1337 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
1338 NDR_PULL_SET_MEM_CTX(ndr, r->out.handle, LIBNDR_FLAG_REF_ALLOC);
1339 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->out.handle));
1340 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
1341 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
1343 return NDR_ERR_SUCCESS;
1346 _PUBLIC_ void ndr_print_svcctl_CloseServiceHandle(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_CloseServiceHandle *r)
1348 ndr_print_struct(ndr, name, "svcctl_CloseServiceHandle");
1350 if (flags & NDR_SET_VALUES) {
1351 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
1353 if (flags & NDR_IN) {
1354 ndr_print_struct(ndr, "in", "svcctl_CloseServiceHandle");
1356 ndr_print_ptr(ndr, "handle", r->in.handle);
1358 ndr_print_policy_handle(ndr, "handle", r->in.handle);
1362 if (flags & NDR_OUT) {
1363 ndr_print_struct(ndr, "out", "svcctl_CloseServiceHandle");
1365 ndr_print_ptr(ndr, "handle", r->out.handle);
1367 ndr_print_policy_handle(ndr, "handle", r->out.handle);
1369 ndr_print_WERROR(ndr, "result", r->out.result);
1375 static enum ndr_err_code ndr_push_svcctl_ControlService(struct ndr_push *ndr, int flags, const struct svcctl_ControlService *r)
1377 if (flags & NDR_IN) {
1378 if (r->in.handle == NULL) {
1379 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
1381 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
1382 NDR_CHECK(ndr_push_SERVICE_CONTROL(ndr, NDR_SCALARS, r->in.control));
1384 if (flags & NDR_OUT) {
1385 if (r->out.service_status == NULL) {
1386 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
1388 NDR_CHECK(ndr_push_SERVICE_STATUS(ndr, NDR_SCALARS, r->out.service_status));
1389 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
1391 return NDR_ERR_SUCCESS;
1394 static enum ndr_err_code ndr_pull_svcctl_ControlService(struct ndr_pull *ndr, int flags, struct svcctl_ControlService *r)
1396 TALLOC_CTX *_mem_save_handle_0;
1397 TALLOC_CTX *_mem_save_service_status_0;
1398 if (flags & NDR_IN) {
1399 ZERO_STRUCT(r->out);
1401 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
1402 NDR_PULL_ALLOC(ndr, r->in.handle);
1404 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
1405 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
1406 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
1407 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
1408 NDR_CHECK(ndr_pull_SERVICE_CONTROL(ndr, NDR_SCALARS, &r->in.control));
1409 NDR_PULL_ALLOC(ndr, r->out.service_status);
1410 ZERO_STRUCTP(r->out.service_status);
1412 if (flags & NDR_OUT) {
1413 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
1414 NDR_PULL_ALLOC(ndr, r->out.service_status);
1416 _mem_save_service_status_0 = NDR_PULL_GET_MEM_CTX(ndr);
1417 NDR_PULL_SET_MEM_CTX(ndr, r->out.service_status, LIBNDR_FLAG_REF_ALLOC);
1418 NDR_CHECK(ndr_pull_SERVICE_STATUS(ndr, NDR_SCALARS, r->out.service_status));
1419 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_service_status_0, LIBNDR_FLAG_REF_ALLOC);
1420 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
1422 return NDR_ERR_SUCCESS;
1425 _PUBLIC_ void ndr_print_svcctl_ControlService(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_ControlService *r)
1427 ndr_print_struct(ndr, name, "svcctl_ControlService");
1429 if (flags & NDR_SET_VALUES) {
1430 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
1432 if (flags & NDR_IN) {
1433 ndr_print_struct(ndr, "in", "svcctl_ControlService");
1435 ndr_print_ptr(ndr, "handle", r->in.handle);
1437 ndr_print_policy_handle(ndr, "handle", r->in.handle);
1439 ndr_print_SERVICE_CONTROL(ndr, "control", r->in.control);
1442 if (flags & NDR_OUT) {
1443 ndr_print_struct(ndr, "out", "svcctl_ControlService");
1445 ndr_print_ptr(ndr, "service_status", r->out.service_status);
1447 ndr_print_SERVICE_STATUS(ndr, "service_status", r->out.service_status);
1449 ndr_print_WERROR(ndr, "result", r->out.result);
1455 static enum ndr_err_code ndr_push_svcctl_DeleteService(struct ndr_push *ndr, int flags, const struct svcctl_DeleteService *r)
1457 if (flags & NDR_IN) {
1458 if (r->in.handle == NULL) {
1459 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
1461 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
1463 if (flags & NDR_OUT) {
1464 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
1466 return NDR_ERR_SUCCESS;
1469 static enum ndr_err_code ndr_pull_svcctl_DeleteService(struct ndr_pull *ndr, int flags, struct svcctl_DeleteService *r)
1471 TALLOC_CTX *_mem_save_handle_0;
1472 if (flags & NDR_IN) {
1473 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
1474 NDR_PULL_ALLOC(ndr, r->in.handle);
1476 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
1477 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
1478 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
1479 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
1481 if (flags & NDR_OUT) {
1482 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
1484 return NDR_ERR_SUCCESS;
1487 _PUBLIC_ void ndr_print_svcctl_DeleteService(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_DeleteService *r)
1489 ndr_print_struct(ndr, name, "svcctl_DeleteService");
1491 if (flags & NDR_SET_VALUES) {
1492 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
1494 if (flags & NDR_IN) {
1495 ndr_print_struct(ndr, "in", "svcctl_DeleteService");
1497 ndr_print_ptr(ndr, "handle", r->in.handle);
1499 ndr_print_policy_handle(ndr, "handle", r->in.handle);
1503 if (flags & NDR_OUT) {
1504 ndr_print_struct(ndr, "out", "svcctl_DeleteService");
1506 ndr_print_WERROR(ndr, "result", r->out.result);
1512 static enum ndr_err_code ndr_push_svcctl_LockServiceDatabase(struct ndr_push *ndr, int flags, const struct svcctl_LockServiceDatabase *r)
1514 if (flags & NDR_IN) {
1515 if (r->in.handle == NULL) {
1516 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
1518 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
1520 if (flags & NDR_OUT) {
1521 if (r->out.lock == NULL) {
1522 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
1524 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->out.lock));
1525 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
1527 return NDR_ERR_SUCCESS;
1530 static enum ndr_err_code ndr_pull_svcctl_LockServiceDatabase(struct ndr_pull *ndr, int flags, struct svcctl_LockServiceDatabase *r)
1532 TALLOC_CTX *_mem_save_handle_0;
1533 TALLOC_CTX *_mem_save_lock_0;
1534 if (flags & NDR_IN) {
1535 ZERO_STRUCT(r->out);
1537 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
1538 NDR_PULL_ALLOC(ndr, r->in.handle);
1540 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
1541 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
1542 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
1543 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
1544 NDR_PULL_ALLOC(ndr, r->out.lock);
1545 ZERO_STRUCTP(r->out.lock);
1547 if (flags & NDR_OUT) {
1548 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
1549 NDR_PULL_ALLOC(ndr, r->out.lock);
1551 _mem_save_lock_0 = NDR_PULL_GET_MEM_CTX(ndr);
1552 NDR_PULL_SET_MEM_CTX(ndr, r->out.lock, LIBNDR_FLAG_REF_ALLOC);
1553 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->out.lock));
1554 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_lock_0, LIBNDR_FLAG_REF_ALLOC);
1555 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
1557 return NDR_ERR_SUCCESS;
1560 _PUBLIC_ void ndr_print_svcctl_LockServiceDatabase(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_LockServiceDatabase *r)
1562 ndr_print_struct(ndr, name, "svcctl_LockServiceDatabase");
1564 if (flags & NDR_SET_VALUES) {
1565 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
1567 if (flags & NDR_IN) {
1568 ndr_print_struct(ndr, "in", "svcctl_LockServiceDatabase");
1570 ndr_print_ptr(ndr, "handle", r->in.handle);
1572 ndr_print_policy_handle(ndr, "handle", r->in.handle);
1576 if (flags & NDR_OUT) {
1577 ndr_print_struct(ndr, "out", "svcctl_LockServiceDatabase");
1579 ndr_print_ptr(ndr, "lock", r->out.lock);
1581 ndr_print_policy_handle(ndr, "lock", r->out.lock);
1583 ndr_print_WERROR(ndr, "result", r->out.result);
1589 static enum ndr_err_code ndr_push_svcctl_QueryServiceObjectSecurity(struct ndr_push *ndr, int flags, const struct svcctl_QueryServiceObjectSecurity *r)
1591 if (flags & NDR_IN) {
1592 if (r->in.handle == NULL) {
1593 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
1595 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
1596 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.security_flags));
1597 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.buffer_size));
1599 if (flags & NDR_OUT) {
1600 if (r->out.buffer == NULL) {
1601 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
1603 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.buffer_size));
1604 NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->out.buffer, r->in.buffer_size));
1605 if (r->out.needed == NULL) {
1606 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
1608 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.needed));
1609 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
1611 return NDR_ERR_SUCCESS;
1614 static enum ndr_err_code ndr_pull_svcctl_QueryServiceObjectSecurity(struct ndr_pull *ndr, int flags, struct svcctl_QueryServiceObjectSecurity *r)
1616 TALLOC_CTX *_mem_save_handle_0;
1617 TALLOC_CTX *_mem_save_needed_0;
1618 if (flags & NDR_IN) {
1619 ZERO_STRUCT(r->out);
1621 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
1622 NDR_PULL_ALLOC(ndr, r->in.handle);
1624 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
1625 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
1626 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
1627 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
1628 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.security_flags));
1629 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.buffer_size));
1630 if (r->in.buffer_size > 0x40000) {
1631 return ndr_pull_error(ndr, NDR_ERR_RANGE, "value out of range");
1633 NDR_PULL_ALLOC_N(ndr, r->out.buffer, r->in.buffer_size);
1634 memset(CONST_DISCARD(struct svcctl_QueryServiceObjectSecurity *,r->out.buffer), 0, (r->in.buffer_size) * sizeof(*r->out.buffer));
1635 NDR_PULL_ALLOC(ndr, r->out.needed);
1636 ZERO_STRUCTP(r->out.needed);
1638 if (flags & NDR_OUT) {
1639 NDR_CHECK(ndr_pull_array_size(ndr, &r->out.buffer));
1640 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
1641 NDR_PULL_ALLOC_N(ndr, r->out.buffer, ndr_get_array_size(ndr, &r->out.buffer));
1643 NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->out.buffer, ndr_get_array_size(ndr, &r->out.buffer)));
1644 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
1645 NDR_PULL_ALLOC(ndr, r->out.needed);
1647 _mem_save_needed_0 = NDR_PULL_GET_MEM_CTX(ndr);
1648 NDR_PULL_SET_MEM_CTX(ndr, r->out.needed, LIBNDR_FLAG_REF_ALLOC);
1649 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.needed));
1650 if (*r->out.needed > 0x40000) {
1651 return ndr_pull_error(ndr, NDR_ERR_RANGE, "value out of range");
1653 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_needed_0, LIBNDR_FLAG_REF_ALLOC);
1654 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
1655 if (r->out.buffer) {
1656 NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->out.buffer, r->in.buffer_size));
1659 return NDR_ERR_SUCCESS;
1662 _PUBLIC_ void ndr_print_svcctl_QueryServiceObjectSecurity(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_QueryServiceObjectSecurity *r)
1664 ndr_print_struct(ndr, name, "svcctl_QueryServiceObjectSecurity");
1666 if (flags & NDR_SET_VALUES) {
1667 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
1669 if (flags & NDR_IN) {
1670 ndr_print_struct(ndr, "in", "svcctl_QueryServiceObjectSecurity");
1672 ndr_print_ptr(ndr, "handle", r->in.handle);
1674 ndr_print_policy_handle(ndr, "handle", r->in.handle);
1676 ndr_print_uint32(ndr, "security_flags", r->in.security_flags);
1677 ndr_print_uint32(ndr, "buffer_size", r->in.buffer_size);
1680 if (flags & NDR_OUT) {
1681 ndr_print_struct(ndr, "out", "svcctl_QueryServiceObjectSecurity");
1683 ndr_print_ptr(ndr, "buffer", r->out.buffer);
1685 ndr_print_array_uint8(ndr, "buffer", r->out.buffer, r->in.buffer_size);
1687 ndr_print_ptr(ndr, "needed", r->out.needed);
1689 ndr_print_uint32(ndr, "needed", *r->out.needed);
1691 ndr_print_WERROR(ndr, "result", r->out.result);
1697 static enum ndr_err_code ndr_push_svcctl_SetServiceObjectSecurity(struct ndr_push *ndr, int flags, const struct svcctl_SetServiceObjectSecurity *r)
1699 if (flags & NDR_IN) {
1700 if (r->in.handle == NULL) {
1701 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
1703 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
1704 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.security_flags));
1705 if (r->in.buffer == NULL) {
1706 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
1708 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.buffer_size));
1709 NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->in.buffer, r->in.buffer_size));
1710 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.buffer_size));
1712 if (flags & NDR_OUT) {
1713 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
1715 return NDR_ERR_SUCCESS;
1718 static enum ndr_err_code ndr_pull_svcctl_SetServiceObjectSecurity(struct ndr_pull *ndr, int flags, struct svcctl_SetServiceObjectSecurity *r)
1720 TALLOC_CTX *_mem_save_handle_0;
1721 if (flags & NDR_IN) {
1722 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
1723 NDR_PULL_ALLOC(ndr, r->in.handle);
1725 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
1726 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
1727 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
1728 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
1729 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.security_flags));
1730 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.buffer));
1731 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
1732 NDR_PULL_ALLOC_N(ndr, r->in.buffer, ndr_get_array_size(ndr, &r->in.buffer));
1734 NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->in.buffer, ndr_get_array_size(ndr, &r->in.buffer)));
1735 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.buffer_size));
1737 NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->in.buffer, r->in.buffer_size));
1740 if (flags & NDR_OUT) {
1741 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
1743 return NDR_ERR_SUCCESS;
1746 _PUBLIC_ void ndr_print_svcctl_SetServiceObjectSecurity(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_SetServiceObjectSecurity *r)
1748 ndr_print_struct(ndr, name, "svcctl_SetServiceObjectSecurity");
1750 if (flags & NDR_SET_VALUES) {
1751 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
1753 if (flags & NDR_IN) {
1754 ndr_print_struct(ndr, "in", "svcctl_SetServiceObjectSecurity");
1756 ndr_print_ptr(ndr, "handle", r->in.handle);
1758 ndr_print_policy_handle(ndr, "handle", r->in.handle);
1760 ndr_print_uint32(ndr, "security_flags", r->in.security_flags);
1761 ndr_print_ptr(ndr, "buffer", r->in.buffer);
1763 ndr_print_array_uint8(ndr, "buffer", r->in.buffer, r->in.buffer_size);
1765 ndr_print_uint32(ndr, "buffer_size", r->in.buffer_size);
1768 if (flags & NDR_OUT) {
1769 ndr_print_struct(ndr, "out", "svcctl_SetServiceObjectSecurity");
1771 ndr_print_WERROR(ndr, "result", r->out.result);
1777 static enum ndr_err_code ndr_push_svcctl_QueryServiceStatus(struct ndr_push *ndr, int flags, const struct svcctl_QueryServiceStatus *r)
1779 if (flags & NDR_IN) {
1780 if (r->in.handle == NULL) {
1781 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
1783 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
1785 if (flags & NDR_OUT) {
1786 if (r->out.service_status == NULL) {
1787 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
1789 NDR_CHECK(ndr_push_SERVICE_STATUS(ndr, NDR_SCALARS, r->out.service_status));
1790 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
1792 return NDR_ERR_SUCCESS;
1795 static enum ndr_err_code ndr_pull_svcctl_QueryServiceStatus(struct ndr_pull *ndr, int flags, struct svcctl_QueryServiceStatus *r)
1797 TALLOC_CTX *_mem_save_handle_0;
1798 TALLOC_CTX *_mem_save_service_status_0;
1799 if (flags & NDR_IN) {
1800 ZERO_STRUCT(r->out);
1802 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
1803 NDR_PULL_ALLOC(ndr, r->in.handle);
1805 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
1806 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
1807 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
1808 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
1809 NDR_PULL_ALLOC(ndr, r->out.service_status);
1810 ZERO_STRUCTP(r->out.service_status);
1812 if (flags & NDR_OUT) {
1813 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
1814 NDR_PULL_ALLOC(ndr, r->out.service_status);
1816 _mem_save_service_status_0 = NDR_PULL_GET_MEM_CTX(ndr);
1817 NDR_PULL_SET_MEM_CTX(ndr, r->out.service_status, LIBNDR_FLAG_REF_ALLOC);
1818 NDR_CHECK(ndr_pull_SERVICE_STATUS(ndr, NDR_SCALARS, r->out.service_status));
1819 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_service_status_0, LIBNDR_FLAG_REF_ALLOC);
1820 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
1822 return NDR_ERR_SUCCESS;
1825 _PUBLIC_ void ndr_print_svcctl_QueryServiceStatus(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_QueryServiceStatus *r)
1827 ndr_print_struct(ndr, name, "svcctl_QueryServiceStatus");
1829 if (flags & NDR_SET_VALUES) {
1830 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
1832 if (flags & NDR_IN) {
1833 ndr_print_struct(ndr, "in", "svcctl_QueryServiceStatus");
1835 ndr_print_ptr(ndr, "handle", r->in.handle);
1837 ndr_print_policy_handle(ndr, "handle", r->in.handle);
1841 if (flags & NDR_OUT) {
1842 ndr_print_struct(ndr, "out", "svcctl_QueryServiceStatus");
1844 ndr_print_ptr(ndr, "service_status", r->out.service_status);
1846 ndr_print_SERVICE_STATUS(ndr, "service_status", r->out.service_status);
1848 ndr_print_WERROR(ndr, "result", r->out.result);
1854 static enum ndr_err_code ndr_push_svcctl_SetServiceStatus(struct ndr_push *ndr, int flags, const struct svcctl_SetServiceStatus *r)
1856 if (flags & NDR_IN) {
1858 if (flags & NDR_OUT) {
1859 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
1861 return NDR_ERR_SUCCESS;
1864 static enum ndr_err_code ndr_pull_svcctl_SetServiceStatus(struct ndr_pull *ndr, int flags, struct svcctl_SetServiceStatus *r)
1866 if (flags & NDR_IN) {
1868 if (flags & NDR_OUT) {
1869 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
1871 return NDR_ERR_SUCCESS;
1874 _PUBLIC_ void ndr_print_svcctl_SetServiceStatus(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_SetServiceStatus *r)
1876 ndr_print_struct(ndr, name, "svcctl_SetServiceStatus");
1878 if (flags & NDR_SET_VALUES) {
1879 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
1881 if (flags & NDR_IN) {
1882 ndr_print_struct(ndr, "in", "svcctl_SetServiceStatus");
1886 if (flags & NDR_OUT) {
1887 ndr_print_struct(ndr, "out", "svcctl_SetServiceStatus");
1889 ndr_print_WERROR(ndr, "result", r->out.result);
1895 static enum ndr_err_code ndr_push_svcctl_UnlockServiceDatabase(struct ndr_push *ndr, int flags, const struct svcctl_UnlockServiceDatabase *r)
1897 if (flags & NDR_IN) {
1898 if (r->in.lock == NULL) {
1899 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
1901 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.lock));
1903 if (flags & NDR_OUT) {
1904 if (r->out.lock == NULL) {
1905 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
1907 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->out.lock));
1908 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
1910 return NDR_ERR_SUCCESS;
1913 static enum ndr_err_code ndr_pull_svcctl_UnlockServiceDatabase(struct ndr_pull *ndr, int flags, struct svcctl_UnlockServiceDatabase *r)
1915 TALLOC_CTX *_mem_save_lock_0;
1916 if (flags & NDR_IN) {
1917 ZERO_STRUCT(r->out);
1919 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
1920 NDR_PULL_ALLOC(ndr, r->in.lock);
1922 _mem_save_lock_0 = NDR_PULL_GET_MEM_CTX(ndr);
1923 NDR_PULL_SET_MEM_CTX(ndr, r->in.lock, LIBNDR_FLAG_REF_ALLOC);
1924 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.lock));
1925 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_lock_0, LIBNDR_FLAG_REF_ALLOC);
1926 NDR_PULL_ALLOC(ndr, r->out.lock);
1927 *r->out.lock = *r->in.lock;
1929 if (flags & NDR_OUT) {
1930 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
1931 NDR_PULL_ALLOC(ndr, r->out.lock);
1933 _mem_save_lock_0 = NDR_PULL_GET_MEM_CTX(ndr);
1934 NDR_PULL_SET_MEM_CTX(ndr, r->out.lock, LIBNDR_FLAG_REF_ALLOC);
1935 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->out.lock));
1936 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_lock_0, LIBNDR_FLAG_REF_ALLOC);
1937 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
1939 return NDR_ERR_SUCCESS;
1942 _PUBLIC_ void ndr_print_svcctl_UnlockServiceDatabase(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_UnlockServiceDatabase *r)
1944 ndr_print_struct(ndr, name, "svcctl_UnlockServiceDatabase");
1946 if (flags & NDR_SET_VALUES) {
1947 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
1949 if (flags & NDR_IN) {
1950 ndr_print_struct(ndr, "in", "svcctl_UnlockServiceDatabase");
1952 ndr_print_ptr(ndr, "lock", r->in.lock);
1954 ndr_print_policy_handle(ndr, "lock", r->in.lock);
1958 if (flags & NDR_OUT) {
1959 ndr_print_struct(ndr, "out", "svcctl_UnlockServiceDatabase");
1961 ndr_print_ptr(ndr, "lock", r->out.lock);
1963 ndr_print_policy_handle(ndr, "lock", r->out.lock);
1965 ndr_print_WERROR(ndr, "result", r->out.result);
1971 static enum ndr_err_code ndr_push_svcctl_NotifyBootConfigStatus(struct ndr_push *ndr, int flags, const struct svcctl_NotifyBootConfigStatus *r)
1973 if (flags & NDR_IN) {
1975 if (flags & NDR_OUT) {
1976 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
1978 return NDR_ERR_SUCCESS;
1981 static enum ndr_err_code ndr_pull_svcctl_NotifyBootConfigStatus(struct ndr_pull *ndr, int flags, struct svcctl_NotifyBootConfigStatus *r)
1983 if (flags & NDR_IN) {
1985 if (flags & NDR_OUT) {
1986 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
1988 return NDR_ERR_SUCCESS;
1991 _PUBLIC_ void ndr_print_svcctl_NotifyBootConfigStatus(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_NotifyBootConfigStatus *r)
1993 ndr_print_struct(ndr, name, "svcctl_NotifyBootConfigStatus");
1995 if (flags & NDR_SET_VALUES) {
1996 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
1998 if (flags & NDR_IN) {
1999 ndr_print_struct(ndr, "in", "svcctl_NotifyBootConfigStatus");
2003 if (flags & NDR_OUT) {
2004 ndr_print_struct(ndr, "out", "svcctl_NotifyBootConfigStatus");
2006 ndr_print_WERROR(ndr, "result", r->out.result);
2012 static enum ndr_err_code ndr_push_svcctl_SCSetServiceBitsW(struct ndr_push *ndr, int flags, const struct svcctl_SCSetServiceBitsW *r)
2014 if (flags & NDR_IN) {
2015 if (r->in.handle == NULL) {
2016 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
2018 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
2019 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.bits));
2020 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.bitson));
2021 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.immediate));
2023 if (flags & NDR_OUT) {
2024 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
2026 return NDR_ERR_SUCCESS;
2029 static enum ndr_err_code ndr_pull_svcctl_SCSetServiceBitsW(struct ndr_pull *ndr, int flags, struct svcctl_SCSetServiceBitsW *r)
2031 TALLOC_CTX *_mem_save_handle_0;
2032 if (flags & NDR_IN) {
2033 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
2034 NDR_PULL_ALLOC(ndr, r->in.handle);
2036 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
2037 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
2038 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
2039 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
2040 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.bits));
2041 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.bitson));
2042 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.immediate));
2044 if (flags & NDR_OUT) {
2045 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
2047 return NDR_ERR_SUCCESS;
2050 _PUBLIC_ void ndr_print_svcctl_SCSetServiceBitsW(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_SCSetServiceBitsW *r)
2052 ndr_print_struct(ndr, name, "svcctl_SCSetServiceBitsW");
2054 if (flags & NDR_SET_VALUES) {
2055 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
2057 if (flags & NDR_IN) {
2058 ndr_print_struct(ndr, "in", "svcctl_SCSetServiceBitsW");
2060 ndr_print_ptr(ndr, "handle", r->in.handle);
2062 ndr_print_policy_handle(ndr, "handle", r->in.handle);
2064 ndr_print_uint32(ndr, "bits", r->in.bits);
2065 ndr_print_uint32(ndr, "bitson", r->in.bitson);
2066 ndr_print_uint32(ndr, "immediate", r->in.immediate);
2069 if (flags & NDR_OUT) {
2070 ndr_print_struct(ndr, "out", "svcctl_SCSetServiceBitsW");
2072 ndr_print_WERROR(ndr, "result", r->out.result);
2078 static enum ndr_err_code ndr_push_svcctl_ChangeServiceConfigW(struct ndr_push *ndr, int flags, const struct svcctl_ChangeServiceConfigW *r)
2080 if (flags & NDR_IN) {
2081 if (r->in.handle == NULL) {
2082 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
2084 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
2085 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.type));
2086 NDR_CHECK(ndr_push_svcctl_StartType(ndr, NDR_SCALARS, r->in.start_type));
2087 NDR_CHECK(ndr_push_svcctl_ErrorControl(ndr, NDR_SCALARS, r->in.error_control));
2088 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.binary_path));
2089 if (r->in.binary_path) {
2090 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.binary_path, CH_UTF16)));
2091 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
2092 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.binary_path, CH_UTF16)));
2093 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.binary_path, ndr_charset_length(r->in.binary_path, CH_UTF16), sizeof(uint16_t), CH_UTF16));
2095 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.load_order_group));
2096 if (r->in.load_order_group) {
2097 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.load_order_group, CH_UTF16)));
2098 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
2099 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.load_order_group, CH_UTF16)));
2100 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.load_order_group, ndr_charset_length(r->in.load_order_group, CH_UTF16), sizeof(uint16_t), CH_UTF16));
2102 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.dependencies));
2103 if (r->in.dependencies) {
2104 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.dependencies, CH_UTF16)));
2105 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
2106 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.dependencies, CH_UTF16)));
2107 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.dependencies, ndr_charset_length(r->in.dependencies, CH_UTF16), sizeof(uint16_t), CH_UTF16));
2109 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.service_start_name));
2110 if (r->in.service_start_name) {
2111 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.service_start_name, CH_UTF16)));
2112 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
2113 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.service_start_name, CH_UTF16)));
2114 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.service_start_name, ndr_charset_length(r->in.service_start_name, CH_UTF16), sizeof(uint16_t), CH_UTF16));
2116 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.password));
2117 if (r->in.password) {
2118 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.password, CH_UTF16)));
2119 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
2120 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.password, CH_UTF16)));
2121 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.password, ndr_charset_length(r->in.password, CH_UTF16), sizeof(uint16_t), CH_UTF16));
2123 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.display_name));
2124 if (r->in.display_name) {
2125 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.display_name, CH_UTF16)));
2126 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
2127 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.display_name, CH_UTF16)));
2128 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.display_name, ndr_charset_length(r->in.display_name, CH_UTF16), sizeof(uint16_t), CH_UTF16));
2131 if (flags & NDR_OUT) {
2132 if (r->out.tag_id == NULL) {
2133 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
2135 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.tag_id));
2136 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
2138 return NDR_ERR_SUCCESS;
2141 static enum ndr_err_code ndr_pull_svcctl_ChangeServiceConfigW(struct ndr_pull *ndr, int flags, struct svcctl_ChangeServiceConfigW *r)
2143 uint32_t _ptr_binary_path;
2144 uint32_t _ptr_load_order_group;
2145 uint32_t _ptr_dependencies;
2146 uint32_t _ptr_service_start_name;
2147 uint32_t _ptr_password;
2148 uint32_t _ptr_display_name;
2149 TALLOC_CTX *_mem_save_handle_0;
2150 TALLOC_CTX *_mem_save_binary_path_0;
2151 TALLOC_CTX *_mem_save_load_order_group_0;
2152 TALLOC_CTX *_mem_save_tag_id_0;
2153 TALLOC_CTX *_mem_save_dependencies_0;
2154 TALLOC_CTX *_mem_save_service_start_name_0;
2155 TALLOC_CTX *_mem_save_password_0;
2156 TALLOC_CTX *_mem_save_display_name_0;
2157 if (flags & NDR_IN) {
2158 ZERO_STRUCT(r->out);
2160 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
2161 NDR_PULL_ALLOC(ndr, r->in.handle);
2163 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
2164 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
2165 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
2166 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
2167 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.type));
2168 NDR_CHECK(ndr_pull_svcctl_StartType(ndr, NDR_SCALARS, &r->in.start_type));
2169 NDR_CHECK(ndr_pull_svcctl_ErrorControl(ndr, NDR_SCALARS, &r->in.error_control));
2170 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_binary_path));
2171 if (_ptr_binary_path) {
2172 NDR_PULL_ALLOC(ndr, r->in.binary_path);
2174 r->in.binary_path = NULL;
2176 if (r->in.binary_path) {
2177 _mem_save_binary_path_0 = NDR_PULL_GET_MEM_CTX(ndr);
2178 NDR_PULL_SET_MEM_CTX(ndr, r->in.binary_path, 0);
2179 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.binary_path));
2180 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.binary_path));
2181 if (ndr_get_array_length(ndr, &r->in.binary_path) > ndr_get_array_size(ndr, &r->in.binary_path)) {
2182 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.binary_path), ndr_get_array_length(ndr, &r->in.binary_path));
2184 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.binary_path), sizeof(uint16_t)));
2185 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.binary_path, ndr_get_array_length(ndr, &r->in.binary_path), sizeof(uint16_t), CH_UTF16));
2186 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_binary_path_0, 0);
2188 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_load_order_group));
2189 if (_ptr_load_order_group) {
2190 NDR_PULL_ALLOC(ndr, r->in.load_order_group);
2192 r->in.load_order_group = NULL;
2194 if (r->in.load_order_group) {
2195 _mem_save_load_order_group_0 = NDR_PULL_GET_MEM_CTX(ndr);
2196 NDR_PULL_SET_MEM_CTX(ndr, r->in.load_order_group, 0);
2197 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.load_order_group));
2198 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.load_order_group));
2199 if (ndr_get_array_length(ndr, &r->in.load_order_group) > ndr_get_array_size(ndr, &r->in.load_order_group)) {
2200 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.load_order_group), ndr_get_array_length(ndr, &r->in.load_order_group));
2202 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.load_order_group), sizeof(uint16_t)));
2203 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.load_order_group, ndr_get_array_length(ndr, &r->in.load_order_group), sizeof(uint16_t), CH_UTF16));
2204 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_load_order_group_0, 0);
2206 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_dependencies));
2207 if (_ptr_dependencies) {
2208 NDR_PULL_ALLOC(ndr, r->in.dependencies);
2210 r->in.dependencies = NULL;
2212 if (r->in.dependencies) {
2213 _mem_save_dependencies_0 = NDR_PULL_GET_MEM_CTX(ndr);
2214 NDR_PULL_SET_MEM_CTX(ndr, r->in.dependencies, 0);
2215 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.dependencies));
2216 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.dependencies));
2217 if (ndr_get_array_length(ndr, &r->in.dependencies) > ndr_get_array_size(ndr, &r->in.dependencies)) {
2218 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.dependencies), ndr_get_array_length(ndr, &r->in.dependencies));
2220 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.dependencies), sizeof(uint16_t)));
2221 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.dependencies, ndr_get_array_length(ndr, &r->in.dependencies), sizeof(uint16_t), CH_UTF16));
2222 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_dependencies_0, 0);
2224 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_service_start_name));
2225 if (_ptr_service_start_name) {
2226 NDR_PULL_ALLOC(ndr, r->in.service_start_name);
2228 r->in.service_start_name = NULL;
2230 if (r->in.service_start_name) {
2231 _mem_save_service_start_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
2232 NDR_PULL_SET_MEM_CTX(ndr, r->in.service_start_name, 0);
2233 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.service_start_name));
2234 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.service_start_name));
2235 if (ndr_get_array_length(ndr, &r->in.service_start_name) > ndr_get_array_size(ndr, &r->in.service_start_name)) {
2236 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.service_start_name), ndr_get_array_length(ndr, &r->in.service_start_name));
2238 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.service_start_name), sizeof(uint16_t)));
2239 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.service_start_name, ndr_get_array_length(ndr, &r->in.service_start_name), sizeof(uint16_t), CH_UTF16));
2240 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_service_start_name_0, 0);
2242 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_password));
2243 if (_ptr_password) {
2244 NDR_PULL_ALLOC(ndr, r->in.password);
2246 r->in.password = NULL;
2248 if (r->in.password) {
2249 _mem_save_password_0 = NDR_PULL_GET_MEM_CTX(ndr);
2250 NDR_PULL_SET_MEM_CTX(ndr, r->in.password, 0);
2251 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.password));
2252 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.password));
2253 if (ndr_get_array_length(ndr, &r->in.password) > ndr_get_array_size(ndr, &r->in.password)) {
2254 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.password), ndr_get_array_length(ndr, &r->in.password));
2256 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.password), sizeof(uint16_t)));
2257 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.password, ndr_get_array_length(ndr, &r->in.password), sizeof(uint16_t), CH_UTF16));
2258 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_password_0, 0);
2260 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_display_name));
2261 if (_ptr_display_name) {
2262 NDR_PULL_ALLOC(ndr, r->in.display_name);
2264 r->in.display_name = NULL;
2266 if (r->in.display_name) {
2267 _mem_save_display_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
2268 NDR_PULL_SET_MEM_CTX(ndr, r->in.display_name, 0);
2269 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.display_name));
2270 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.display_name));
2271 if (ndr_get_array_length(ndr, &r->in.display_name) > ndr_get_array_size(ndr, &r->in.display_name)) {
2272 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.display_name), ndr_get_array_length(ndr, &r->in.display_name));
2274 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.display_name), sizeof(uint16_t)));
2275 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.display_name, ndr_get_array_length(ndr, &r->in.display_name), sizeof(uint16_t), CH_UTF16));
2276 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_display_name_0, 0);
2278 NDR_PULL_ALLOC(ndr, r->out.tag_id);
2279 ZERO_STRUCTP(r->out.tag_id);
2281 if (flags & NDR_OUT) {
2282 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
2283 NDR_PULL_ALLOC(ndr, r->out.tag_id);
2285 _mem_save_tag_id_0 = NDR_PULL_GET_MEM_CTX(ndr);
2286 NDR_PULL_SET_MEM_CTX(ndr, r->out.tag_id, LIBNDR_FLAG_REF_ALLOC);
2287 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.tag_id));
2288 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_tag_id_0, LIBNDR_FLAG_REF_ALLOC);
2289 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
2291 return NDR_ERR_SUCCESS;
2294 _PUBLIC_ void ndr_print_svcctl_ChangeServiceConfigW(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_ChangeServiceConfigW *r)
2296 ndr_print_struct(ndr, name, "svcctl_ChangeServiceConfigW");
2298 if (flags & NDR_SET_VALUES) {
2299 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
2301 if (flags & NDR_IN) {
2302 ndr_print_struct(ndr, "in", "svcctl_ChangeServiceConfigW");
2304 ndr_print_ptr(ndr, "handle", r->in.handle);
2306 ndr_print_policy_handle(ndr, "handle", r->in.handle);
2308 ndr_print_uint32(ndr, "type", r->in.type);
2309 ndr_print_svcctl_StartType(ndr, "start_type", r->in.start_type);
2310 ndr_print_svcctl_ErrorControl(ndr, "error_control", r->in.error_control);
2311 ndr_print_ptr(ndr, "binary_path", r->in.binary_path);
2313 if (r->in.binary_path) {
2314 ndr_print_string(ndr, "binary_path", r->in.binary_path);
2317 ndr_print_ptr(ndr, "load_order_group", r->in.load_order_group);
2319 if (r->in.load_order_group) {
2320 ndr_print_string(ndr, "load_order_group", r->in.load_order_group);
2323 ndr_print_ptr(ndr, "dependencies", r->in.dependencies);
2325 if (r->in.dependencies) {
2326 ndr_print_string(ndr, "dependencies", r->in.dependencies);
2329 ndr_print_ptr(ndr, "service_start_name", r->in.service_start_name);
2331 if (r->in.service_start_name) {
2332 ndr_print_string(ndr, "service_start_name", r->in.service_start_name);
2335 ndr_print_ptr(ndr, "password", r->in.password);
2337 if (r->in.password) {
2338 ndr_print_string(ndr, "password", r->in.password);
2341 ndr_print_ptr(ndr, "display_name", r->in.display_name);
2343 if (r->in.display_name) {
2344 ndr_print_string(ndr, "display_name", r->in.display_name);
2349 if (flags & NDR_OUT) {
2350 ndr_print_struct(ndr, "out", "svcctl_ChangeServiceConfigW");
2352 ndr_print_ptr(ndr, "tag_id", r->out.tag_id);
2354 ndr_print_uint32(ndr, "tag_id", *r->out.tag_id);
2356 ndr_print_WERROR(ndr, "result", r->out.result);
2362 static enum ndr_err_code ndr_push_svcctl_CreateServiceW(struct ndr_push *ndr, int flags, const struct svcctl_CreateServiceW *r)
2364 if (flags & NDR_IN) {
2365 if (r->in.scmanager_handle == NULL) {
2366 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
2368 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.scmanager_handle));
2369 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.ServiceName, CH_UTF16)));
2370 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
2371 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.ServiceName, CH_UTF16)));
2372 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.ServiceName, ndr_charset_length(r->in.ServiceName, CH_UTF16), sizeof(uint16_t), CH_UTF16));
2373 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.DisplayName));
2374 if (r->in.DisplayName) {
2375 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.DisplayName, CH_UTF16)));
2376 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
2377 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.DisplayName, CH_UTF16)));
2378 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.DisplayName, ndr_charset_length(r->in.DisplayName, CH_UTF16), sizeof(uint16_t), CH_UTF16));
2380 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.desired_access));
2381 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.type));
2382 NDR_CHECK(ndr_push_svcctl_StartType(ndr, NDR_SCALARS, r->in.start_type));
2383 NDR_CHECK(ndr_push_svcctl_ErrorControl(ndr, NDR_SCALARS, r->in.error_control));
2384 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.binary_path, CH_UTF16)));
2385 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
2386 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.binary_path, CH_UTF16)));
2387 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.binary_path, ndr_charset_length(r->in.binary_path, CH_UTF16), sizeof(uint16_t), CH_UTF16));
2388 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.LoadOrderGroupKey));
2389 if (r->in.LoadOrderGroupKey) {
2390 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.LoadOrderGroupKey, CH_UTF16)));
2391 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
2392 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.LoadOrderGroupKey, CH_UTF16)));
2393 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.LoadOrderGroupKey, ndr_charset_length(r->in.LoadOrderGroupKey, CH_UTF16), sizeof(uint16_t), CH_UTF16));
2395 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.TagId));
2397 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->in.TagId));
2399 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.dependencies));
2400 if (r->in.dependencies) {
2401 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.dependencies_size));
2402 NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->in.dependencies, r->in.dependencies_size));
2404 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.dependencies_size));
2405 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.service_start_name));
2406 if (r->in.service_start_name) {
2407 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.service_start_name, CH_UTF16)));
2408 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
2409 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.service_start_name, CH_UTF16)));
2410 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.service_start_name, ndr_charset_length(r->in.service_start_name, CH_UTF16), sizeof(uint16_t), CH_UTF16));
2412 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.password));
2413 if (r->in.password) {
2414 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.password_size));
2415 NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->in.password, r->in.password_size));
2417 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.password_size));
2419 if (flags & NDR_OUT) {
2420 NDR_CHECK(ndr_push_unique_ptr(ndr, r->out.TagId));
2422 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.TagId));
2424 if (r->out.handle == NULL) {
2425 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
2427 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->out.handle));
2428 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
2430 return NDR_ERR_SUCCESS;
2433 static enum ndr_err_code ndr_pull_svcctl_CreateServiceW(struct ndr_pull *ndr, int flags, struct svcctl_CreateServiceW *r)
2435 uint32_t _ptr_DisplayName;
2436 uint32_t _ptr_LoadOrderGroupKey;
2437 uint32_t _ptr_TagId;
2438 uint32_t _ptr_dependencies;
2439 uint32_t _ptr_service_start_name;
2440 uint32_t _ptr_password;
2441 TALLOC_CTX *_mem_save_scmanager_handle_0;
2442 TALLOC_CTX *_mem_save_DisplayName_0;
2443 TALLOC_CTX *_mem_save_LoadOrderGroupKey_0;
2444 TALLOC_CTX *_mem_save_TagId_0;
2445 TALLOC_CTX *_mem_save_dependencies_0;
2446 TALLOC_CTX *_mem_save_service_start_name_0;
2447 TALLOC_CTX *_mem_save_password_0;
2448 TALLOC_CTX *_mem_save_handle_0;
2449 if (flags & NDR_IN) {
2450 ZERO_STRUCT(r->out);
2452 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
2453 NDR_PULL_ALLOC(ndr, r->in.scmanager_handle);
2455 _mem_save_scmanager_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
2456 NDR_PULL_SET_MEM_CTX(ndr, r->in.scmanager_handle, LIBNDR_FLAG_REF_ALLOC);
2457 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.scmanager_handle));
2458 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_scmanager_handle_0, LIBNDR_FLAG_REF_ALLOC);
2459 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.ServiceName));
2460 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.ServiceName));
2461 if (ndr_get_array_length(ndr, &r->in.ServiceName) > ndr_get_array_size(ndr, &r->in.ServiceName)) {
2462 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.ServiceName), ndr_get_array_length(ndr, &r->in.ServiceName));
2464 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.ServiceName), sizeof(uint16_t)));
2465 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.ServiceName, ndr_get_array_length(ndr, &r->in.ServiceName), sizeof(uint16_t), CH_UTF16));
2466 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_DisplayName));
2467 if (_ptr_DisplayName) {
2468 NDR_PULL_ALLOC(ndr, r->in.DisplayName);
2470 r->in.DisplayName = NULL;
2472 if (r->in.DisplayName) {
2473 _mem_save_DisplayName_0 = NDR_PULL_GET_MEM_CTX(ndr);
2474 NDR_PULL_SET_MEM_CTX(ndr, r->in.DisplayName, 0);
2475 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.DisplayName));
2476 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.DisplayName));
2477 if (ndr_get_array_length(ndr, &r->in.DisplayName) > ndr_get_array_size(ndr, &r->in.DisplayName)) {
2478 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.DisplayName), ndr_get_array_length(ndr, &r->in.DisplayName));
2480 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.DisplayName), sizeof(uint16_t)));
2481 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.DisplayName, ndr_get_array_length(ndr, &r->in.DisplayName), sizeof(uint16_t), CH_UTF16));
2482 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_DisplayName_0, 0);
2484 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.desired_access));
2485 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.type));
2486 NDR_CHECK(ndr_pull_svcctl_StartType(ndr, NDR_SCALARS, &r->in.start_type));
2487 NDR_CHECK(ndr_pull_svcctl_ErrorControl(ndr, NDR_SCALARS, &r->in.error_control));
2488 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.binary_path));
2489 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.binary_path));
2490 if (ndr_get_array_length(ndr, &r->in.binary_path) > ndr_get_array_size(ndr, &r->in.binary_path)) {
2491 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.binary_path), ndr_get_array_length(ndr, &r->in.binary_path));
2493 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.binary_path), sizeof(uint16_t)));
2494 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.binary_path, ndr_get_array_length(ndr, &r->in.binary_path), sizeof(uint16_t), CH_UTF16));
2495 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_LoadOrderGroupKey));
2496 if (_ptr_LoadOrderGroupKey) {
2497 NDR_PULL_ALLOC(ndr, r->in.LoadOrderGroupKey);
2499 r->in.LoadOrderGroupKey = NULL;
2501 if (r->in.LoadOrderGroupKey) {
2502 _mem_save_LoadOrderGroupKey_0 = NDR_PULL_GET_MEM_CTX(ndr);
2503 NDR_PULL_SET_MEM_CTX(ndr, r->in.LoadOrderGroupKey, 0);
2504 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.LoadOrderGroupKey));
2505 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.LoadOrderGroupKey));
2506 if (ndr_get_array_length(ndr, &r->in.LoadOrderGroupKey) > ndr_get_array_size(ndr, &r->in.LoadOrderGroupKey)) {
2507 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.LoadOrderGroupKey), ndr_get_array_length(ndr, &r->in.LoadOrderGroupKey));
2509 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.LoadOrderGroupKey), sizeof(uint16_t)));
2510 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.LoadOrderGroupKey, ndr_get_array_length(ndr, &r->in.LoadOrderGroupKey), sizeof(uint16_t), CH_UTF16));
2511 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_LoadOrderGroupKey_0, 0);
2513 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_TagId));
2515 NDR_PULL_ALLOC(ndr, r->in.TagId);
2520 _mem_save_TagId_0 = NDR_PULL_GET_MEM_CTX(ndr);
2521 NDR_PULL_SET_MEM_CTX(ndr, r->in.TagId, 0);
2522 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->in.TagId));
2523 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_TagId_0, 0);
2525 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_dependencies));
2526 if (_ptr_dependencies) {
2527 NDR_PULL_ALLOC(ndr, r->in.dependencies);
2529 r->in.dependencies = NULL;
2531 if (r->in.dependencies) {
2532 _mem_save_dependencies_0 = NDR_PULL_GET_MEM_CTX(ndr);
2533 NDR_PULL_SET_MEM_CTX(ndr, r->in.dependencies, 0);
2534 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.dependencies));
2535 NDR_PULL_ALLOC_N(ndr, r->in.dependencies, ndr_get_array_size(ndr, &r->in.dependencies));
2536 NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->in.dependencies, ndr_get_array_size(ndr, &r->in.dependencies)));
2537 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_dependencies_0, 0);
2539 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.dependencies_size));
2540 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_service_start_name));
2541 if (_ptr_service_start_name) {
2542 NDR_PULL_ALLOC(ndr, r->in.service_start_name);
2544 r->in.service_start_name = NULL;
2546 if (r->in.service_start_name) {
2547 _mem_save_service_start_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
2548 NDR_PULL_SET_MEM_CTX(ndr, r->in.service_start_name, 0);
2549 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.service_start_name));
2550 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.service_start_name));
2551 if (ndr_get_array_length(ndr, &r->in.service_start_name) > ndr_get_array_size(ndr, &r->in.service_start_name)) {
2552 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.service_start_name), ndr_get_array_length(ndr, &r->in.service_start_name));
2554 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.service_start_name), sizeof(uint16_t)));
2555 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.service_start_name, ndr_get_array_length(ndr, &r->in.service_start_name), sizeof(uint16_t), CH_UTF16));
2556 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_service_start_name_0, 0);
2558 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_password));
2559 if (_ptr_password) {
2560 NDR_PULL_ALLOC(ndr, r->in.password);
2562 r->in.password = NULL;
2564 if (r->in.password) {
2565 _mem_save_password_0 = NDR_PULL_GET_MEM_CTX(ndr);
2566 NDR_PULL_SET_MEM_CTX(ndr, r->in.password, 0);
2567 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.password));
2568 NDR_PULL_ALLOC_N(ndr, r->in.password, ndr_get_array_size(ndr, &r->in.password));
2569 NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->in.password, ndr_get_array_size(ndr, &r->in.password)));
2570 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_password_0, 0);
2572 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.password_size));
2573 NDR_PULL_ALLOC(ndr, r->out.handle);
2574 ZERO_STRUCTP(r->out.handle);
2575 if (r->in.dependencies) {
2576 NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->in.dependencies, r->in.dependencies_size));
2578 if (r->in.password) {
2579 NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->in.password, r->in.password_size));
2582 if (flags & NDR_OUT) {
2583 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_TagId));
2585 NDR_PULL_ALLOC(ndr, r->out.TagId);
2587 r->out.TagId = NULL;
2590 _mem_save_TagId_0 = NDR_PULL_GET_MEM_CTX(ndr);
2591 NDR_PULL_SET_MEM_CTX(ndr, r->out.TagId, 0);
2592 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.TagId));
2593 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_TagId_0, 0);
2595 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
2596 NDR_PULL_ALLOC(ndr, r->out.handle);
2598 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
2599 NDR_PULL_SET_MEM_CTX(ndr, r->out.handle, LIBNDR_FLAG_REF_ALLOC);
2600 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->out.handle));
2601 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
2602 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
2604 return NDR_ERR_SUCCESS;
2607 _PUBLIC_ void ndr_print_svcctl_CreateServiceW(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_CreateServiceW *r)
2609 ndr_print_struct(ndr, name, "svcctl_CreateServiceW");
2611 if (flags & NDR_SET_VALUES) {
2612 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
2614 if (flags & NDR_IN) {
2615 ndr_print_struct(ndr, "in", "svcctl_CreateServiceW");
2617 ndr_print_ptr(ndr, "scmanager_handle", r->in.scmanager_handle);
2619 ndr_print_policy_handle(ndr, "scmanager_handle", r->in.scmanager_handle);
2621 ndr_print_string(ndr, "ServiceName", r->in.ServiceName);
2622 ndr_print_ptr(ndr, "DisplayName", r->in.DisplayName);
2624 if (r->in.DisplayName) {
2625 ndr_print_string(ndr, "DisplayName", r->in.DisplayName);
2628 ndr_print_uint32(ndr, "desired_access", r->in.desired_access);
2629 ndr_print_uint32(ndr, "type", r->in.type);
2630 ndr_print_svcctl_StartType(ndr, "start_type", r->in.start_type);
2631 ndr_print_svcctl_ErrorControl(ndr, "error_control", r->in.error_control);
2632 ndr_print_string(ndr, "binary_path", r->in.binary_path);
2633 ndr_print_ptr(ndr, "LoadOrderGroupKey", r->in.LoadOrderGroupKey);
2635 if (r->in.LoadOrderGroupKey) {
2636 ndr_print_string(ndr, "LoadOrderGroupKey", r->in.LoadOrderGroupKey);
2639 ndr_print_ptr(ndr, "TagId", r->in.TagId);
2642 ndr_print_uint32(ndr, "TagId", *r->in.TagId);
2645 ndr_print_ptr(ndr, "dependencies", r->in.dependencies);
2647 if (r->in.dependencies) {
2648 ndr_print_array_uint8(ndr, "dependencies", r->in.dependencies, r->in.dependencies_size);
2651 ndr_print_uint32(ndr, "dependencies_size", r->in.dependencies_size);
2652 ndr_print_ptr(ndr, "service_start_name", r->in.service_start_name);
2654 if (r->in.service_start_name) {
2655 ndr_print_string(ndr, "service_start_name", r->in.service_start_name);
2658 ndr_print_ptr(ndr, "password", r->in.password);
2660 if (r->in.password) {
2661 ndr_print_array_uint8(ndr, "password", r->in.password, r->in.password_size);
2664 ndr_print_uint32(ndr, "password_size", r->in.password_size);
2667 if (flags & NDR_OUT) {
2668 ndr_print_struct(ndr, "out", "svcctl_CreateServiceW");
2670 ndr_print_ptr(ndr, "TagId", r->out.TagId);
2673 ndr_print_uint32(ndr, "TagId", *r->out.TagId);
2676 ndr_print_ptr(ndr, "handle", r->out.handle);
2678 ndr_print_policy_handle(ndr, "handle", r->out.handle);
2680 ndr_print_WERROR(ndr, "result", r->out.result);
2686 static enum ndr_err_code ndr_push_svcctl_EnumDependentServicesW(struct ndr_push *ndr, int flags, const struct svcctl_EnumDependentServicesW *r)
2688 if (flags & NDR_IN) {
2689 if (r->in.service == NULL) {
2690 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
2692 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.service));
2693 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.state));
2694 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.buf_size));
2696 if (flags & NDR_OUT) {
2697 if (r->out.service_status == NULL) {
2698 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
2700 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.buf_size));
2701 NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->out.service_status, r->in.buf_size));
2702 if (r->out.bytes_needed == NULL) {
2703 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
2705 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.bytes_needed));
2706 if (r->out.services_returned == NULL) {
2707 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
2709 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.services_returned));
2710 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
2712 return NDR_ERR_SUCCESS;
2715 static enum ndr_err_code ndr_pull_svcctl_EnumDependentServicesW(struct ndr_pull *ndr, int flags, struct svcctl_EnumDependentServicesW *r)
2717 TALLOC_CTX *_mem_save_service_0;
2718 TALLOC_CTX *_mem_save_bytes_needed_0;
2719 TALLOC_CTX *_mem_save_services_returned_0;
2720 if (flags & NDR_IN) {
2721 ZERO_STRUCT(r->out);
2723 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
2724 NDR_PULL_ALLOC(ndr, r->in.service);
2726 _mem_save_service_0 = NDR_PULL_GET_MEM_CTX(ndr);
2727 NDR_PULL_SET_MEM_CTX(ndr, r->in.service, LIBNDR_FLAG_REF_ALLOC);
2728 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.service));
2729 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_service_0, LIBNDR_FLAG_REF_ALLOC);
2730 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.state));
2731 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.buf_size));
2732 if (r->in.buf_size > 0x40000) {
2733 return ndr_pull_error(ndr, NDR_ERR_RANGE, "value out of range");
2735 NDR_PULL_ALLOC_N(ndr, r->out.service_status, r->in.buf_size);
2736 memset(CONST_DISCARD(struct svcctl_EnumDependentServicesW *,r->out.service_status), 0, (r->in.buf_size) * sizeof(*r->out.service_status));
2737 NDR_PULL_ALLOC(ndr, r->out.bytes_needed);
2738 ZERO_STRUCTP(r->out.bytes_needed);
2739 NDR_PULL_ALLOC(ndr, r->out.services_returned);
2740 ZERO_STRUCTP(r->out.services_returned);
2742 if (flags & NDR_OUT) {
2743 NDR_CHECK(ndr_pull_array_size(ndr, &r->out.service_status));
2744 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
2745 NDR_PULL_ALLOC_N(ndr, r->out.service_status, ndr_get_array_size(ndr, &r->out.service_status));
2747 NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->out.service_status, ndr_get_array_size(ndr, &r->out.service_status)));
2748 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
2749 NDR_PULL_ALLOC(ndr, r->out.bytes_needed);
2751 _mem_save_bytes_needed_0 = NDR_PULL_GET_MEM_CTX(ndr);
2752 NDR_PULL_SET_MEM_CTX(ndr, r->out.bytes_needed, LIBNDR_FLAG_REF_ALLOC);
2753 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.bytes_needed));
2754 if (*r->out.bytes_needed > 0x40000) {
2755 return ndr_pull_error(ndr, NDR_ERR_RANGE, "value out of range");
2757 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_bytes_needed_0, LIBNDR_FLAG_REF_ALLOC);
2758 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
2759 NDR_PULL_ALLOC(ndr, r->out.services_returned);
2761 _mem_save_services_returned_0 = NDR_PULL_GET_MEM_CTX(ndr);
2762 NDR_PULL_SET_MEM_CTX(ndr, r->out.services_returned, LIBNDR_FLAG_REF_ALLOC);
2763 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.services_returned));
2764 if (*r->out.services_returned > 0x40000) {
2765 return ndr_pull_error(ndr, NDR_ERR_RANGE, "value out of range");
2767 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_services_returned_0, LIBNDR_FLAG_REF_ALLOC);
2768 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
2769 if (r->out.service_status) {
2770 NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->out.service_status, r->in.buf_size));
2773 return NDR_ERR_SUCCESS;
2776 _PUBLIC_ void ndr_print_svcctl_EnumDependentServicesW(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_EnumDependentServicesW *r)
2778 ndr_print_struct(ndr, name, "svcctl_EnumDependentServicesW");
2780 if (flags & NDR_SET_VALUES) {
2781 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
2783 if (flags & NDR_IN) {
2784 ndr_print_struct(ndr, "in", "svcctl_EnumDependentServicesW");
2786 ndr_print_ptr(ndr, "service", r->in.service);
2788 ndr_print_policy_handle(ndr, "service", r->in.service);
2790 ndr_print_uint32(ndr, "state", r->in.state);
2791 ndr_print_uint32(ndr, "buf_size", r->in.buf_size);
2794 if (flags & NDR_OUT) {
2795 ndr_print_struct(ndr, "out", "svcctl_EnumDependentServicesW");
2797 ndr_print_ptr(ndr, "service_status", r->out.service_status);
2799 ndr_print_array_uint8(ndr, "service_status", r->out.service_status, r->in.buf_size);
2801 ndr_print_ptr(ndr, "bytes_needed", r->out.bytes_needed);
2803 ndr_print_uint32(ndr, "bytes_needed", *r->out.bytes_needed);
2805 ndr_print_ptr(ndr, "services_returned", r->out.services_returned);
2807 ndr_print_uint32(ndr, "services_returned", *r->out.services_returned);
2809 ndr_print_WERROR(ndr, "result", r->out.result);
2815 static enum ndr_err_code ndr_push_svcctl_EnumServicesStatusW(struct ndr_push *ndr, int flags, const struct svcctl_EnumServicesStatusW *r)
2817 if (flags & NDR_IN) {
2818 if (r->in.handle == NULL) {
2819 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
2821 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
2822 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.type));
2823 NDR_CHECK(ndr_push_svcctl_ServiceState(ndr, NDR_SCALARS, r->in.state));
2824 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.buf_size));
2825 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.resume_handle));
2826 if (r->in.resume_handle) {
2827 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->in.resume_handle));
2830 if (flags & NDR_OUT) {
2831 if (r->out.service == NULL) {
2832 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
2834 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.buf_size));
2835 NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->out.service, r->in.buf_size));
2836 if (r->out.bytes_needed == NULL) {
2837 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
2839 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.bytes_needed));
2840 if (r->out.services_returned == NULL) {
2841 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
2843 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.services_returned));
2844 NDR_CHECK(ndr_push_unique_ptr(ndr, r->out.resume_handle));
2845 if (r->out.resume_handle) {
2846 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.resume_handle));
2848 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
2850 return NDR_ERR_SUCCESS;
2853 static enum ndr_err_code ndr_pull_svcctl_EnumServicesStatusW(struct ndr_pull *ndr, int flags, struct svcctl_EnumServicesStatusW *r)
2855 uint32_t _ptr_resume_handle;
2856 TALLOC_CTX *_mem_save_handle_0;
2857 TALLOC_CTX *_mem_save_bytes_needed_0;
2858 TALLOC_CTX *_mem_save_services_returned_0;
2859 TALLOC_CTX *_mem_save_resume_handle_0;
2860 if (flags & NDR_IN) {
2861 ZERO_STRUCT(r->out);
2863 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
2864 NDR_PULL_ALLOC(ndr, r->in.handle);
2866 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
2867 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
2868 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
2869 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
2870 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.type));
2871 NDR_CHECK(ndr_pull_svcctl_ServiceState(ndr, NDR_SCALARS, &r->in.state));
2872 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.buf_size));
2873 if (r->in.buf_size > 0x40000) {
2874 return ndr_pull_error(ndr, NDR_ERR_RANGE, "value out of range");
2876 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_resume_handle));
2877 if (_ptr_resume_handle) {
2878 NDR_PULL_ALLOC(ndr, r->in.resume_handle);
2880 r->in.resume_handle = NULL;
2882 if (r->in.resume_handle) {
2883 _mem_save_resume_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
2884 NDR_PULL_SET_MEM_CTX(ndr, r->in.resume_handle, 0);
2885 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->in.resume_handle));
2886 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_resume_handle_0, 0);
2888 NDR_PULL_ALLOC_N(ndr, r->out.service, r->in.buf_size);
2889 memset(CONST_DISCARD(struct svcctl_EnumServicesStatusW *,r->out.service), 0, (r->in.buf_size) * sizeof(*r->out.service));
2890 NDR_PULL_ALLOC(ndr, r->out.bytes_needed);
2891 ZERO_STRUCTP(r->out.bytes_needed);
2892 NDR_PULL_ALLOC(ndr, r->out.services_returned);
2893 ZERO_STRUCTP(r->out.services_returned);
2895 if (flags & NDR_OUT) {
2896 NDR_CHECK(ndr_pull_array_size(ndr, &r->out.service));
2897 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
2898 NDR_PULL_ALLOC_N(ndr, r->out.service, ndr_get_array_size(ndr, &r->out.service));
2900 NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->out.service, ndr_get_array_size(ndr, &r->out.service)));
2901 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
2902 NDR_PULL_ALLOC(ndr, r->out.bytes_needed);
2904 _mem_save_bytes_needed_0 = NDR_PULL_GET_MEM_CTX(ndr);
2905 NDR_PULL_SET_MEM_CTX(ndr, r->out.bytes_needed, LIBNDR_FLAG_REF_ALLOC);
2906 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.bytes_needed));
2907 if (*r->out.bytes_needed > 0x40000) {
2908 return ndr_pull_error(ndr, NDR_ERR_RANGE, "value out of range");
2910 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_bytes_needed_0, LIBNDR_FLAG_REF_ALLOC);
2911 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
2912 NDR_PULL_ALLOC(ndr, r->out.services_returned);
2914 _mem_save_services_returned_0 = NDR_PULL_GET_MEM_CTX(ndr);
2915 NDR_PULL_SET_MEM_CTX(ndr, r->out.services_returned, LIBNDR_FLAG_REF_ALLOC);
2916 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.services_returned));
2917 if (*r->out.services_returned > 0x40000) {
2918 return ndr_pull_error(ndr, NDR_ERR_RANGE, "value out of range");
2920 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_services_returned_0, LIBNDR_FLAG_REF_ALLOC);
2921 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_resume_handle));
2922 if (_ptr_resume_handle) {
2923 NDR_PULL_ALLOC(ndr, r->out.resume_handle);
2925 r->out.resume_handle = NULL;
2927 if (r->out.resume_handle) {
2928 _mem_save_resume_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
2929 NDR_PULL_SET_MEM_CTX(ndr, r->out.resume_handle, 0);
2930 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.resume_handle));
2931 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_resume_handle_0, 0);
2933 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
2934 if (r->out.service) {
2935 NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->out.service, r->in.buf_size));
2938 return NDR_ERR_SUCCESS;
2941 _PUBLIC_ void ndr_print_svcctl_EnumServicesStatusW(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_EnumServicesStatusW *r)
2943 ndr_print_struct(ndr, name, "svcctl_EnumServicesStatusW");
2945 if (flags & NDR_SET_VALUES) {
2946 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
2948 if (flags & NDR_IN) {
2949 ndr_print_struct(ndr, "in", "svcctl_EnumServicesStatusW");
2951 ndr_print_ptr(ndr, "handle", r->in.handle);
2953 ndr_print_policy_handle(ndr, "handle", r->in.handle);
2955 ndr_print_uint32(ndr, "type", r->in.type);
2956 ndr_print_svcctl_ServiceState(ndr, "state", r->in.state);
2957 ndr_print_uint32(ndr, "buf_size", r->in.buf_size);
2958 ndr_print_ptr(ndr, "resume_handle", r->in.resume_handle);
2960 if (r->in.resume_handle) {
2961 ndr_print_uint32(ndr, "resume_handle", *r->in.resume_handle);
2966 if (flags & NDR_OUT) {
2967 ndr_print_struct(ndr, "out", "svcctl_EnumServicesStatusW");
2969 ndr_print_ptr(ndr, "service", r->out.service);
2971 ndr_print_array_uint8(ndr, "service", r->out.service, r->in.buf_size);
2973 ndr_print_ptr(ndr, "bytes_needed", r->out.bytes_needed);
2975 ndr_print_uint32(ndr, "bytes_needed", *r->out.bytes_needed);
2977 ndr_print_ptr(ndr, "services_returned", r->out.services_returned);
2979 ndr_print_uint32(ndr, "services_returned", *r->out.services_returned);
2981 ndr_print_ptr(ndr, "resume_handle", r->out.resume_handle);
2983 if (r->out.resume_handle) {
2984 ndr_print_uint32(ndr, "resume_handle", *r->out.resume_handle);
2987 ndr_print_WERROR(ndr, "result", r->out.result);
2993 static enum ndr_err_code ndr_push_svcctl_OpenSCManagerW(struct ndr_push *ndr, int flags, const struct svcctl_OpenSCManagerW *r)
2995 if (flags & NDR_IN) {
2996 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.MachineName));
2997 if (r->in.MachineName) {
2998 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.MachineName, CH_UTF16)));
2999 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
3000 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.MachineName, CH_UTF16)));
3001 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.MachineName, ndr_charset_length(r->in.MachineName, CH_UTF16), sizeof(uint16_t), CH_UTF16));
3003 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.DatabaseName));
3004 if (r->in.DatabaseName) {
3005 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.DatabaseName, CH_UTF16)));
3006 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
3007 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.DatabaseName, CH_UTF16)));
3008 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.DatabaseName, ndr_charset_length(r->in.DatabaseName, CH_UTF16), sizeof(uint16_t), CH_UTF16));
3010 NDR_CHECK(ndr_push_svcctl_MgrAccessMask(ndr, NDR_SCALARS, r->in.access_mask));
3012 if (flags & NDR_OUT) {
3013 if (r->out.handle == NULL) {
3014 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
3016 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->out.handle));
3017 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
3019 return NDR_ERR_SUCCESS;
3022 static enum ndr_err_code ndr_pull_svcctl_OpenSCManagerW(struct ndr_pull *ndr, int flags, struct svcctl_OpenSCManagerW *r)
3024 uint32_t _ptr_MachineName;
3025 uint32_t _ptr_DatabaseName;
3026 TALLOC_CTX *_mem_save_MachineName_0;
3027 TALLOC_CTX *_mem_save_DatabaseName_0;
3028 TALLOC_CTX *_mem_save_handle_0;
3029 if (flags & NDR_IN) {
3030 ZERO_STRUCT(r->out);
3032 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_MachineName));
3033 if (_ptr_MachineName) {
3034 NDR_PULL_ALLOC(ndr, r->in.MachineName);
3036 r->in.MachineName = NULL;
3038 if (r->in.MachineName) {
3039 _mem_save_MachineName_0 = NDR_PULL_GET_MEM_CTX(ndr);
3040 NDR_PULL_SET_MEM_CTX(ndr, r->in.MachineName, 0);
3041 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.MachineName));
3042 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.MachineName));
3043 if (ndr_get_array_length(ndr, &r->in.MachineName) > ndr_get_array_size(ndr, &r->in.MachineName)) {
3044 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.MachineName), ndr_get_array_length(ndr, &r->in.MachineName));
3046 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.MachineName), sizeof(uint16_t)));
3047 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.MachineName, ndr_get_array_length(ndr, &r->in.MachineName), sizeof(uint16_t), CH_UTF16));
3048 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_MachineName_0, 0);
3050 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_DatabaseName));
3051 if (_ptr_DatabaseName) {
3052 NDR_PULL_ALLOC(ndr, r->in.DatabaseName);
3054 r->in.DatabaseName = NULL;
3056 if (r->in.DatabaseName) {
3057 _mem_save_DatabaseName_0 = NDR_PULL_GET_MEM_CTX(ndr);
3058 NDR_PULL_SET_MEM_CTX(ndr, r->in.DatabaseName, 0);
3059 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.DatabaseName));
3060 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.DatabaseName));
3061 if (ndr_get_array_length(ndr, &r->in.DatabaseName) > ndr_get_array_size(ndr, &r->in.DatabaseName)) {
3062 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.DatabaseName), ndr_get_array_length(ndr, &r->in.DatabaseName));
3064 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.DatabaseName), sizeof(uint16_t)));
3065 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.DatabaseName, ndr_get_array_length(ndr, &r->in.DatabaseName), sizeof(uint16_t), CH_UTF16));
3066 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_DatabaseName_0, 0);
3068 NDR_CHECK(ndr_pull_svcctl_MgrAccessMask(ndr, NDR_SCALARS, &r->in.access_mask));
3069 NDR_PULL_ALLOC(ndr, r->out.handle);
3070 ZERO_STRUCTP(r->out.handle);
3072 if (flags & NDR_OUT) {
3073 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
3074 NDR_PULL_ALLOC(ndr, r->out.handle);
3076 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
3077 NDR_PULL_SET_MEM_CTX(ndr, r->out.handle, LIBNDR_FLAG_REF_ALLOC);
3078 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->out.handle));
3079 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
3080 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
3082 return NDR_ERR_SUCCESS;
3085 _PUBLIC_ void ndr_print_svcctl_OpenSCManagerW(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_OpenSCManagerW *r)
3087 ndr_print_struct(ndr, name, "svcctl_OpenSCManagerW");
3089 if (flags & NDR_SET_VALUES) {
3090 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
3092 if (flags & NDR_IN) {
3093 ndr_print_struct(ndr, "in", "svcctl_OpenSCManagerW");
3095 ndr_print_ptr(ndr, "MachineName", r->in.MachineName);
3097 if (r->in.MachineName) {
3098 ndr_print_string(ndr, "MachineName", r->in.MachineName);
3101 ndr_print_ptr(ndr, "DatabaseName", r->in.DatabaseName);
3103 if (r->in.DatabaseName) {
3104 ndr_print_string(ndr, "DatabaseName", r->in.DatabaseName);
3107 ndr_print_svcctl_MgrAccessMask(ndr, "access_mask", r->in.access_mask);
3110 if (flags & NDR_OUT) {
3111 ndr_print_struct(ndr, "out", "svcctl_OpenSCManagerW");
3113 ndr_print_ptr(ndr, "handle", r->out.handle);
3115 ndr_print_policy_handle(ndr, "handle", r->out.handle);
3117 ndr_print_WERROR(ndr, "result", r->out.result);
3123 static enum ndr_err_code ndr_push_svcctl_OpenServiceW(struct ndr_push *ndr, int flags, const struct svcctl_OpenServiceW *r)
3125 if (flags & NDR_IN) {
3126 if (r->in.scmanager_handle == NULL) {
3127 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
3129 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.scmanager_handle));
3130 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.ServiceName, CH_UTF16)));
3131 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
3132 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.ServiceName, CH_UTF16)));
3133 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.ServiceName, ndr_charset_length(r->in.ServiceName, CH_UTF16), sizeof(uint16_t), CH_UTF16));
3134 NDR_CHECK(ndr_push_svcctl_ServiceAccessMask(ndr, NDR_SCALARS, r->in.access_mask));
3136 if (flags & NDR_OUT) {
3137 if (r->out.handle == NULL) {
3138 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
3140 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->out.handle));
3141 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
3143 return NDR_ERR_SUCCESS;
3146 static enum ndr_err_code ndr_pull_svcctl_OpenServiceW(struct ndr_pull *ndr, int flags, struct svcctl_OpenServiceW *r)
3148 TALLOC_CTX *_mem_save_scmanager_handle_0;
3149 TALLOC_CTX *_mem_save_handle_0;
3150 if (flags & NDR_IN) {
3151 ZERO_STRUCT(r->out);
3153 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
3154 NDR_PULL_ALLOC(ndr, r->in.scmanager_handle);
3156 _mem_save_scmanager_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
3157 NDR_PULL_SET_MEM_CTX(ndr, r->in.scmanager_handle, LIBNDR_FLAG_REF_ALLOC);
3158 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.scmanager_handle));
3159 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_scmanager_handle_0, LIBNDR_FLAG_REF_ALLOC);
3160 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.ServiceName));
3161 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.ServiceName));
3162 if (ndr_get_array_length(ndr, &r->in.ServiceName) > ndr_get_array_size(ndr, &r->in.ServiceName)) {
3163 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.ServiceName), ndr_get_array_length(ndr, &r->in.ServiceName));
3165 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.ServiceName), sizeof(uint16_t)));
3166 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.ServiceName, ndr_get_array_length(ndr, &r->in.ServiceName), sizeof(uint16_t), CH_UTF16));
3167 NDR_CHECK(ndr_pull_svcctl_ServiceAccessMask(ndr, NDR_SCALARS, &r->in.access_mask));
3168 NDR_PULL_ALLOC(ndr, r->out.handle);
3169 ZERO_STRUCTP(r->out.handle);
3171 if (flags & NDR_OUT) {
3172 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
3173 NDR_PULL_ALLOC(ndr, r->out.handle);
3175 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
3176 NDR_PULL_SET_MEM_CTX(ndr, r->out.handle, LIBNDR_FLAG_REF_ALLOC);
3177 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->out.handle));
3178 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
3179 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
3181 return NDR_ERR_SUCCESS;
3184 _PUBLIC_ void ndr_print_svcctl_OpenServiceW(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_OpenServiceW *r)
3186 ndr_print_struct(ndr, name, "svcctl_OpenServiceW");
3188 if (flags & NDR_SET_VALUES) {
3189 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
3191 if (flags & NDR_IN) {
3192 ndr_print_struct(ndr, "in", "svcctl_OpenServiceW");
3194 ndr_print_ptr(ndr, "scmanager_handle", r->in.scmanager_handle);
3196 ndr_print_policy_handle(ndr, "scmanager_handle", r->in.scmanager_handle);
3198 ndr_print_string(ndr, "ServiceName", r->in.ServiceName);
3199 ndr_print_svcctl_ServiceAccessMask(ndr, "access_mask", r->in.access_mask);
3202 if (flags & NDR_OUT) {
3203 ndr_print_struct(ndr, "out", "svcctl_OpenServiceW");
3205 ndr_print_ptr(ndr, "handle", r->out.handle);
3207 ndr_print_policy_handle(ndr, "handle", r->out.handle);
3209 ndr_print_WERROR(ndr, "result", r->out.result);
3215 static enum ndr_err_code ndr_push_svcctl_QueryServiceConfigW(struct ndr_push *ndr, int flags, const struct svcctl_QueryServiceConfigW *r)
3217 if (flags & NDR_IN) {
3218 if (r->in.handle == NULL) {
3219 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
3221 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
3222 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.buf_size));
3224 if (flags & NDR_OUT) {
3225 if (r->out.query == NULL) {
3226 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
3228 NDR_CHECK(ndr_push_QUERY_SERVICE_CONFIG(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.query));
3229 if (r->out.bytes_needed == NULL) {
3230 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
3232 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.bytes_needed));
3233 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
3235 return NDR_ERR_SUCCESS;
3238 static enum ndr_err_code ndr_pull_svcctl_QueryServiceConfigW(struct ndr_pull *ndr, int flags, struct svcctl_QueryServiceConfigW *r)
3240 TALLOC_CTX *_mem_save_handle_0;
3241 TALLOC_CTX *_mem_save_query_0;
3242 TALLOC_CTX *_mem_save_bytes_needed_0;
3243 if (flags & NDR_IN) {
3244 ZERO_STRUCT(r->out);
3246 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
3247 NDR_PULL_ALLOC(ndr, r->in.handle);
3249 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
3250 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
3251 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
3252 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
3253 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.buf_size));
3254 if (r->in.buf_size > 8192) {
3255 return ndr_pull_error(ndr, NDR_ERR_RANGE, "value out of range");
3257 NDR_PULL_ALLOC(ndr, r->out.query);
3258 ZERO_STRUCTP(r->out.query);
3259 NDR_PULL_ALLOC(ndr, r->out.bytes_needed);
3260 ZERO_STRUCTP(r->out.bytes_needed);
3262 if (flags & NDR_OUT) {
3263 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
3264 NDR_PULL_ALLOC(ndr, r->out.query);
3266 _mem_save_query_0 = NDR_PULL_GET_MEM_CTX(ndr);
3267 NDR_PULL_SET_MEM_CTX(ndr, r->out.query, LIBNDR_FLAG_REF_ALLOC);
3268 NDR_CHECK(ndr_pull_QUERY_SERVICE_CONFIG(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.query));
3269 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_query_0, LIBNDR_FLAG_REF_ALLOC);
3270 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
3271 NDR_PULL_ALLOC(ndr, r->out.bytes_needed);
3273 _mem_save_bytes_needed_0 = NDR_PULL_GET_MEM_CTX(ndr);
3274 NDR_PULL_SET_MEM_CTX(ndr, r->out.bytes_needed, LIBNDR_FLAG_REF_ALLOC);
3275 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.bytes_needed));
3276 if (*r->out.bytes_needed > 8192) {
3277 return ndr_pull_error(ndr, NDR_ERR_RANGE, "value out of range");
3279 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_bytes_needed_0, LIBNDR_FLAG_REF_ALLOC);
3280 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
3282 return NDR_ERR_SUCCESS;
3285 _PUBLIC_ void ndr_print_svcctl_QueryServiceConfigW(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_QueryServiceConfigW *r)
3287 ndr_print_struct(ndr, name, "svcctl_QueryServiceConfigW");
3289 if (flags & NDR_SET_VALUES) {
3290 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
3292 if (flags & NDR_IN) {
3293 ndr_print_struct(ndr, "in", "svcctl_QueryServiceConfigW");
3295 ndr_print_ptr(ndr, "handle", r->in.handle);
3297 ndr_print_policy_handle(ndr, "handle", r->in.handle);
3299 ndr_print_uint32(ndr, "buf_size", r->in.buf_size);
3302 if (flags & NDR_OUT) {
3303 ndr_print_struct(ndr, "out", "svcctl_QueryServiceConfigW");
3305 ndr_print_ptr(ndr, "query", r->out.query);
3307 ndr_print_QUERY_SERVICE_CONFIG(ndr, "query", r->out.query);
3309 ndr_print_ptr(ndr, "bytes_needed", r->out.bytes_needed);
3311 ndr_print_uint32(ndr, "bytes_needed", *r->out.bytes_needed);
3313 ndr_print_WERROR(ndr, "result", r->out.result);
3319 static enum ndr_err_code ndr_push_svcctl_QueryServiceLockStatusW(struct ndr_push *ndr, int flags, const struct svcctl_QueryServiceLockStatusW *r)
3321 if (flags & NDR_IN) {
3322 if (r->in.handle == NULL) {
3323 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
3325 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
3326 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.buf_size));
3328 if (flags & NDR_OUT) {
3329 if (r->out.lock_status == NULL) {
3330 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
3332 NDR_CHECK(ndr_push_SERVICE_LOCK_STATUS(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.lock_status));
3333 if (r->out.required_buf_size == NULL) {
3334 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
3336 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.required_buf_size));
3337 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
3339 return NDR_ERR_SUCCESS;
3342 static enum ndr_err_code ndr_pull_svcctl_QueryServiceLockStatusW(struct ndr_pull *ndr, int flags, struct svcctl_QueryServiceLockStatusW *r)
3344 TALLOC_CTX *_mem_save_handle_0;
3345 TALLOC_CTX *_mem_save_lock_status_0;
3346 TALLOC_CTX *_mem_save_required_buf_size_0;
3347 if (flags & NDR_IN) {
3348 ZERO_STRUCT(r->out);
3350 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
3351 NDR_PULL_ALLOC(ndr, r->in.handle);
3353 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
3354 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
3355 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
3356 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
3357 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.buf_size));
3358 NDR_PULL_ALLOC(ndr, r->out.lock_status);
3359 ZERO_STRUCTP(r->out.lock_status);
3360 NDR_PULL_ALLOC(ndr, r->out.required_buf_size);
3361 ZERO_STRUCTP(r->out.required_buf_size);
3363 if (flags & NDR_OUT) {
3364 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
3365 NDR_PULL_ALLOC(ndr, r->out.lock_status);
3367 _mem_save_lock_status_0 = NDR_PULL_GET_MEM_CTX(ndr);
3368 NDR_PULL_SET_MEM_CTX(ndr, r->out.lock_status, LIBNDR_FLAG_REF_ALLOC);
3369 NDR_CHECK(ndr_pull_SERVICE_LOCK_STATUS(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.lock_status));
3370 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_lock_status_0, LIBNDR_FLAG_REF_ALLOC);
3371 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
3372 NDR_PULL_ALLOC(ndr, r->out.required_buf_size);
3374 _mem_save_required_buf_size_0 = NDR_PULL_GET_MEM_CTX(ndr);
3375 NDR_PULL_SET_MEM_CTX(ndr, r->out.required_buf_size, LIBNDR_FLAG_REF_ALLOC);
3376 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.required_buf_size));
3377 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_required_buf_size_0, LIBNDR_FLAG_REF_ALLOC);
3378 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
3380 return NDR_ERR_SUCCESS;
3383 _PUBLIC_ void ndr_print_svcctl_QueryServiceLockStatusW(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_QueryServiceLockStatusW *r)
3385 ndr_print_struct(ndr, name, "svcctl_QueryServiceLockStatusW");
3387 if (flags & NDR_SET_VALUES) {
3388 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
3390 if (flags & NDR_IN) {
3391 ndr_print_struct(ndr, "in", "svcctl_QueryServiceLockStatusW");
3393 ndr_print_ptr(ndr, "handle", r->in.handle);
3395 ndr_print_policy_handle(ndr, "handle", r->in.handle);
3397 ndr_print_uint32(ndr, "buf_size", r->in.buf_size);
3400 if (flags & NDR_OUT) {
3401 ndr_print_struct(ndr, "out", "svcctl_QueryServiceLockStatusW");
3403 ndr_print_ptr(ndr, "lock_status", r->out.lock_status);
3405 ndr_print_SERVICE_LOCK_STATUS(ndr, "lock_status", r->out.lock_status);
3407 ndr_print_ptr(ndr, "required_buf_size", r->out.required_buf_size);
3409 ndr_print_uint32(ndr, "required_buf_size", *r->out.required_buf_size);
3411 ndr_print_WERROR(ndr, "result", r->out.result);
3417 static enum ndr_err_code ndr_push_svcctl_StartServiceW(struct ndr_push *ndr, int flags, const struct svcctl_StartServiceW *r)
3419 if (flags & NDR_IN) {
3420 if (r->in.handle == NULL) {
3421 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
3423 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
3424 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.NumArgs));
3425 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.Arguments));
3426 if (r->in.Arguments) {
3427 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.Arguments, CH_UTF16)));
3428 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
3429 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.Arguments, CH_UTF16)));
3430 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.Arguments, ndr_charset_length(r->in.Arguments, CH_UTF16), sizeof(uint16_t), CH_UTF16));
3433 if (flags & NDR_OUT) {
3434 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
3436 return NDR_ERR_SUCCESS;
3439 static enum ndr_err_code ndr_pull_svcctl_StartServiceW(struct ndr_pull *ndr, int flags, struct svcctl_StartServiceW *r)
3441 uint32_t _ptr_Arguments;
3442 TALLOC_CTX *_mem_save_handle_0;
3443 TALLOC_CTX *_mem_save_Arguments_0;
3444 if (flags & NDR_IN) {
3445 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
3446 NDR_PULL_ALLOC(ndr, r->in.handle);
3448 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
3449 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
3450 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
3451 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
3452 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.NumArgs));
3453 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_Arguments));
3454 if (_ptr_Arguments) {
3455 NDR_PULL_ALLOC(ndr, r->in.Arguments);
3457 r->in.Arguments = NULL;
3459 if (r->in.Arguments) {
3460 _mem_save_Arguments_0 = NDR_PULL_GET_MEM_CTX(ndr);
3461 NDR_PULL_SET_MEM_CTX(ndr, r->in.Arguments, 0);
3462 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.Arguments));
3463 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.Arguments));
3464 if (ndr_get_array_length(ndr, &r->in.Arguments) > ndr_get_array_size(ndr, &r->in.Arguments)) {
3465 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.Arguments), ndr_get_array_length(ndr, &r->in.Arguments));
3467 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.Arguments), sizeof(uint16_t)));
3468 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.Arguments, ndr_get_array_length(ndr, &r->in.Arguments), sizeof(uint16_t), CH_UTF16));
3469 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_Arguments_0, 0);
3472 if (flags & NDR_OUT) {
3473 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
3475 return NDR_ERR_SUCCESS;
3478 _PUBLIC_ void ndr_print_svcctl_StartServiceW(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_StartServiceW *r)
3480 ndr_print_struct(ndr, name, "svcctl_StartServiceW");
3482 if (flags & NDR_SET_VALUES) {
3483 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
3485 if (flags & NDR_IN) {
3486 ndr_print_struct(ndr, "in", "svcctl_StartServiceW");
3488 ndr_print_ptr(ndr, "handle", r->in.handle);
3490 ndr_print_policy_handle(ndr, "handle", r->in.handle);
3492 ndr_print_uint32(ndr, "NumArgs", r->in.NumArgs);
3493 ndr_print_ptr(ndr, "Arguments", r->in.Arguments);
3495 if (r->in.Arguments) {
3496 ndr_print_string(ndr, "Arguments", r->in.Arguments);
3501 if (flags & NDR_OUT) {
3502 ndr_print_struct(ndr, "out", "svcctl_StartServiceW");
3504 ndr_print_WERROR(ndr, "result", r->out.result);
3510 static enum ndr_err_code ndr_push_svcctl_GetServiceDisplayNameW(struct ndr_push *ndr, int flags, const struct svcctl_GetServiceDisplayNameW *r)
3512 if (flags & NDR_IN) {
3513 if (r->in.handle == NULL) {
3514 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
3516 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
3517 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.service_name));
3518 if (r->in.service_name) {
3519 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.service_name, CH_UTF16)));
3520 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
3521 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.service_name, CH_UTF16)));
3522 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.service_name, ndr_charset_length(r->in.service_name, CH_UTF16), sizeof(uint16_t), CH_UTF16));
3524 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.display_name_length));
3525 if (r->in.display_name_length) {
3526 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->in.display_name_length));
3529 if (flags & NDR_OUT) {
3530 if (r->out.display_name == NULL) {
3531 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
3533 NDR_CHECK(ndr_push_unique_ptr(ndr, *r->out.display_name));
3534 if (*r->out.display_name) {
3535 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(*r->out.display_name, CH_UTF16)));
3536 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
3537 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(*r->out.display_name, CH_UTF16)));
3538 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, *r->out.display_name, ndr_charset_length(*r->out.display_name, CH_UTF16), sizeof(uint16_t), CH_UTF16));
3540 NDR_CHECK(ndr_push_unique_ptr(ndr, r->out.display_name_length));
3541 if (r->out.display_name_length) {
3542 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.display_name_length));
3544 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
3546 return NDR_ERR_SUCCESS;
3549 static enum ndr_err_code ndr_pull_svcctl_GetServiceDisplayNameW(struct ndr_pull *ndr, int flags, struct svcctl_GetServiceDisplayNameW *r)
3551 uint32_t _ptr_service_name;
3552 uint32_t _ptr_display_name;
3553 uint32_t _ptr_display_name_length;
3554 TALLOC_CTX *_mem_save_handle_0;
3555 TALLOC_CTX *_mem_save_service_name_0;
3556 TALLOC_CTX *_mem_save_display_name_0;
3557 TALLOC_CTX *_mem_save_display_name_1;
3558 TALLOC_CTX *_mem_save_display_name_length_0;
3559 if (flags & NDR_IN) {
3560 ZERO_STRUCT(r->out);
3562 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
3563 NDR_PULL_ALLOC(ndr, r->in.handle);
3565 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
3566 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
3567 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
3568 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
3569 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_service_name));
3570 if (_ptr_service_name) {
3571 NDR_PULL_ALLOC(ndr, r->in.service_name);
3573 r->in.service_name = NULL;
3575 if (r->in.service_name) {
3576 _mem_save_service_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
3577 NDR_PULL_SET_MEM_CTX(ndr, r->in.service_name, 0);
3578 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.service_name));
3579 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.service_name));
3580 if (ndr_get_array_length(ndr, &r->in.service_name) > ndr_get_array_size(ndr, &r->in.service_name)) {
3581 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.service_name), ndr_get_array_length(ndr, &r->in.service_name));
3583 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.service_name), sizeof(uint16_t)));
3584 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.service_name, ndr_get_array_length(ndr, &r->in.service_name), sizeof(uint16_t), CH_UTF16));
3585 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_service_name_0, 0);
3587 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_display_name_length));
3588 if (_ptr_display_name_length) {
3589 NDR_PULL_ALLOC(ndr, r->in.display_name_length);
3591 r->in.display_name_length = NULL;
3593 if (r->in.display_name_length) {
3594 _mem_save_display_name_length_0 = NDR_PULL_GET_MEM_CTX(ndr);
3595 NDR_PULL_SET_MEM_CTX(ndr, r->in.display_name_length, 0);
3596 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->in.display_name_length));
3597 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_display_name_length_0, 0);
3599 NDR_PULL_ALLOC(ndr, r->out.display_name);
3600 ZERO_STRUCTP(r->out.display_name);
3602 if (flags & NDR_OUT) {
3603 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
3604 NDR_PULL_ALLOC(ndr, r->out.display_name);
3606 _mem_save_display_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
3607 NDR_PULL_SET_MEM_CTX(ndr, r->out.display_name, LIBNDR_FLAG_REF_ALLOC);
3608 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_display_name));
3609 if (_ptr_display_name) {
3610 NDR_PULL_ALLOC(ndr, *r->out.display_name);
3612 *r->out.display_name = NULL;
3614 if (*r->out.display_name) {
3615 _mem_save_display_name_1 = NDR_PULL_GET_MEM_CTX(ndr);
3616 NDR_PULL_SET_MEM_CTX(ndr, *r->out.display_name, 0);
3617 NDR_CHECK(ndr_pull_array_size(ndr, r->out.display_name));
3618 NDR_CHECK(ndr_pull_array_length(ndr, r->out.display_name));
3619 if (ndr_get_array_length(ndr, r->out.display_name) > ndr_get_array_size(ndr, r->out.display_name)) {
3620 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.display_name), ndr_get_array_length(ndr, r->out.display_name));
3622 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, r->out.display_name), sizeof(uint16_t)));
3623 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, r->out.display_name, ndr_get_array_length(ndr, r->out.display_name), sizeof(uint16_t), CH_UTF16));
3624 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_display_name_1, 0);
3626 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_display_name_0, LIBNDR_FLAG_REF_ALLOC);
3627 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_display_name_length));
3628 if (_ptr_display_name_length) {
3629 NDR_PULL_ALLOC(ndr, r->out.display_name_length);
3631 r->out.display_name_length = NULL;
3633 if (r->out.display_name_length) {
3634 _mem_save_display_name_length_0 = NDR_PULL_GET_MEM_CTX(ndr);
3635 NDR_PULL_SET_MEM_CTX(ndr, r->out.display_name_length, 0);
3636 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.display_name_length));
3637 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_display_name_length_0, 0);
3639 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
3641 return NDR_ERR_SUCCESS;
3644 _PUBLIC_ void ndr_print_svcctl_GetServiceDisplayNameW(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_GetServiceDisplayNameW *r)
3646 ndr_print_struct(ndr, name, "svcctl_GetServiceDisplayNameW");
3648 if (flags & NDR_SET_VALUES) {
3649 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
3651 if (flags & NDR_IN) {
3652 ndr_print_struct(ndr, "in", "svcctl_GetServiceDisplayNameW");
3654 ndr_print_ptr(ndr, "handle", r->in.handle);
3656 ndr_print_policy_handle(ndr, "handle", r->in.handle);
3658 ndr_print_ptr(ndr, "service_name", r->in.service_name);
3660 if (r->in.service_name) {
3661 ndr_print_string(ndr, "service_name", r->in.service_name);
3664 ndr_print_ptr(ndr, "display_name_length", r->in.display_name_length);
3666 if (r->in.display_name_length) {
3667 ndr_print_uint32(ndr, "display_name_length", *r->in.display_name_length);
3672 if (flags & NDR_OUT) {
3673 ndr_print_struct(ndr, "out", "svcctl_GetServiceDisplayNameW");
3675 ndr_print_ptr(ndr, "display_name", r->out.display_name);
3677 ndr_print_ptr(ndr, "display_name", *r->out.display_name);
3679 if (*r->out.display_name) {
3680 ndr_print_string(ndr, "display_name", *r->out.display_name);
3684 ndr_print_ptr(ndr, "display_name_length", r->out.display_name_length);
3686 if (r->out.display_name_length) {
3687 ndr_print_uint32(ndr, "display_name_length", *r->out.display_name_length);
3690 ndr_print_WERROR(ndr, "result", r->out.result);
3696 static enum ndr_err_code ndr_push_svcctl_GetServiceKeyNameW(struct ndr_push *ndr, int flags, const struct svcctl_GetServiceKeyNameW *r)
3698 if (flags & NDR_IN) {
3699 if (r->in.handle == NULL) {
3700 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
3702 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
3703 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.service_name));
3704 if (r->in.service_name) {
3705 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.service_name, CH_UTF16)));
3706 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
3707 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.service_name, CH_UTF16)));
3708 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.service_name, ndr_charset_length(r->in.service_name, CH_UTF16), sizeof(uint16_t), CH_UTF16));
3710 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.display_name_length));
3711 if (r->in.display_name_length) {
3712 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->in.display_name_length));
3715 if (flags & NDR_OUT) {
3716 if (r->out.key_name == NULL) {
3717 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
3719 NDR_CHECK(ndr_push_unique_ptr(ndr, *r->out.key_name));
3720 if (*r->out.key_name) {
3721 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(*r->out.key_name, CH_UTF16)));
3722 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
3723 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(*r->out.key_name, CH_UTF16)));
3724 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, *r->out.key_name, ndr_charset_length(*r->out.key_name, CH_UTF16), sizeof(uint16_t), CH_UTF16));
3726 NDR_CHECK(ndr_push_unique_ptr(ndr, r->out.display_name_length));
3727 if (r->out.display_name_length) {
3728 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.display_name_length));
3730 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
3732 return NDR_ERR_SUCCESS;
3735 static enum ndr_err_code ndr_pull_svcctl_GetServiceKeyNameW(struct ndr_pull *ndr, int flags, struct svcctl_GetServiceKeyNameW *r)
3737 uint32_t _ptr_service_name;
3738 uint32_t _ptr_key_name;
3739 uint32_t _ptr_display_name_length;
3740 TALLOC_CTX *_mem_save_handle_0;
3741 TALLOC_CTX *_mem_save_service_name_0;
3742 TALLOC_CTX *_mem_save_key_name_0;
3743 TALLOC_CTX *_mem_save_key_name_1;
3744 TALLOC_CTX *_mem_save_display_name_length_0;
3745 if (flags & NDR_IN) {
3746 ZERO_STRUCT(r->out);
3748 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
3749 NDR_PULL_ALLOC(ndr, r->in.handle);
3751 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
3752 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
3753 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
3754 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
3755 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_service_name));
3756 if (_ptr_service_name) {
3757 NDR_PULL_ALLOC(ndr, r->in.service_name);
3759 r->in.service_name = NULL;
3761 if (r->in.service_name) {
3762 _mem_save_service_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
3763 NDR_PULL_SET_MEM_CTX(ndr, r->in.service_name, 0);
3764 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.service_name));
3765 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.service_name));
3766 if (ndr_get_array_length(ndr, &r->in.service_name) > ndr_get_array_size(ndr, &r->in.service_name)) {
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->in.service_name), ndr_get_array_length(ndr, &r->in.service_name));
3769 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.service_name), sizeof(uint16_t)));
3770 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.service_name, ndr_get_array_length(ndr, &r->in.service_name), sizeof(uint16_t), CH_UTF16));
3771 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_service_name_0, 0);
3773 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_display_name_length));
3774 if (_ptr_display_name_length) {
3775 NDR_PULL_ALLOC(ndr, r->in.display_name_length);
3777 r->in.display_name_length = NULL;
3779 if (r->in.display_name_length) {
3780 _mem_save_display_name_length_0 = NDR_PULL_GET_MEM_CTX(ndr);
3781 NDR_PULL_SET_MEM_CTX(ndr, r->in.display_name_length, 0);
3782 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->in.display_name_length));
3783 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_display_name_length_0, 0);
3785 NDR_PULL_ALLOC(ndr, r->out.key_name);
3786 ZERO_STRUCTP(r->out.key_name);
3788 if (flags & NDR_OUT) {
3789 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
3790 NDR_PULL_ALLOC(ndr, r->out.key_name);
3792 _mem_save_key_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
3793 NDR_PULL_SET_MEM_CTX(ndr, r->out.key_name, LIBNDR_FLAG_REF_ALLOC);
3794 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_key_name));
3795 if (_ptr_key_name) {
3796 NDR_PULL_ALLOC(ndr, *r->out.key_name);
3798 *r->out.key_name = NULL;
3800 if (*r->out.key_name) {
3801 _mem_save_key_name_1 = NDR_PULL_GET_MEM_CTX(ndr);
3802 NDR_PULL_SET_MEM_CTX(ndr, *r->out.key_name, 0);
3803 NDR_CHECK(ndr_pull_array_size(ndr, r->out.key_name));
3804 NDR_CHECK(ndr_pull_array_length(ndr, r->out.key_name));
3805 if (ndr_get_array_length(ndr, r->out.key_name) > ndr_get_array_size(ndr, r->out.key_name)) {
3806 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.key_name), ndr_get_array_length(ndr, r->out.key_name));
3808 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, r->out.key_name), sizeof(uint16_t)));
3809 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, r->out.key_name, ndr_get_array_length(ndr, r->out.key_name), sizeof(uint16_t), CH_UTF16));
3810 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_key_name_1, 0);
3812 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_key_name_0, LIBNDR_FLAG_REF_ALLOC);
3813 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_display_name_length));
3814 if (_ptr_display_name_length) {
3815 NDR_PULL_ALLOC(ndr, r->out.display_name_length);
3817 r->out.display_name_length = NULL;
3819 if (r->out.display_name_length) {
3820 _mem_save_display_name_length_0 = NDR_PULL_GET_MEM_CTX(ndr);
3821 NDR_PULL_SET_MEM_CTX(ndr, r->out.display_name_length, 0);
3822 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.display_name_length));
3823 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_display_name_length_0, 0);
3825 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
3827 return NDR_ERR_SUCCESS;
3830 _PUBLIC_ void ndr_print_svcctl_GetServiceKeyNameW(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_GetServiceKeyNameW *r)
3832 ndr_print_struct(ndr, name, "svcctl_GetServiceKeyNameW");
3834 if (flags & NDR_SET_VALUES) {
3835 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
3837 if (flags & NDR_IN) {
3838 ndr_print_struct(ndr, "in", "svcctl_GetServiceKeyNameW");
3840 ndr_print_ptr(ndr, "handle", r->in.handle);
3842 ndr_print_policy_handle(ndr, "handle", r->in.handle);
3844 ndr_print_ptr(ndr, "service_name", r->in.service_name);
3846 if (r->in.service_name) {
3847 ndr_print_string(ndr, "service_name", r->in.service_name);
3850 ndr_print_ptr(ndr, "display_name_length", r->in.display_name_length);
3852 if (r->in.display_name_length) {
3853 ndr_print_uint32(ndr, "display_name_length", *r->in.display_name_length);
3858 if (flags & NDR_OUT) {
3859 ndr_print_struct(ndr, "out", "svcctl_GetServiceKeyNameW");
3861 ndr_print_ptr(ndr, "key_name", r->out.key_name);
3863 ndr_print_ptr(ndr, "key_name", *r->out.key_name);
3865 if (*r->out.key_name) {
3866 ndr_print_string(ndr, "key_name", *r->out.key_name);
3870 ndr_print_ptr(ndr, "display_name_length", r->out.display_name_length);
3872 if (r->out.display_name_length) {
3873 ndr_print_uint32(ndr, "display_name_length", *r->out.display_name_length);
3876 ndr_print_WERROR(ndr, "result", r->out.result);
3882 static enum ndr_err_code ndr_push_svcctl_SCSetServiceBitsA(struct ndr_push *ndr, int flags, const struct svcctl_SCSetServiceBitsA *r)
3884 if (flags & NDR_IN) {
3885 if (r->in.handle == NULL) {
3886 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
3888 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
3889 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.bits));
3890 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.bitson));
3891 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.immediate));
3893 if (flags & NDR_OUT) {
3894 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
3896 return NDR_ERR_SUCCESS;
3899 static enum ndr_err_code ndr_pull_svcctl_SCSetServiceBitsA(struct ndr_pull *ndr, int flags, struct svcctl_SCSetServiceBitsA *r)
3901 TALLOC_CTX *_mem_save_handle_0;
3902 if (flags & NDR_IN) {
3903 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
3904 NDR_PULL_ALLOC(ndr, r->in.handle);
3906 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
3907 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
3908 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
3909 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
3910 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.bits));
3911 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.bitson));
3912 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.immediate));
3914 if (flags & NDR_OUT) {
3915 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
3917 return NDR_ERR_SUCCESS;
3920 _PUBLIC_ void ndr_print_svcctl_SCSetServiceBitsA(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_SCSetServiceBitsA *r)
3922 ndr_print_struct(ndr, name, "svcctl_SCSetServiceBitsA");
3924 if (flags & NDR_SET_VALUES) {
3925 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
3927 if (flags & NDR_IN) {
3928 ndr_print_struct(ndr, "in", "svcctl_SCSetServiceBitsA");
3930 ndr_print_ptr(ndr, "handle", r->in.handle);
3932 ndr_print_policy_handle(ndr, "handle", r->in.handle);
3934 ndr_print_uint32(ndr, "bits", r->in.bits);
3935 ndr_print_uint32(ndr, "bitson", r->in.bitson);
3936 ndr_print_uint32(ndr, "immediate", r->in.immediate);
3939 if (flags & NDR_OUT) {
3940 ndr_print_struct(ndr, "out", "svcctl_SCSetServiceBitsA");
3942 ndr_print_WERROR(ndr, "result", r->out.result);
3948 static enum ndr_err_code ndr_push_svcctl_ChangeServiceConfigA(struct ndr_push *ndr, int flags, const struct svcctl_ChangeServiceConfigA *r)
3950 if (flags & NDR_IN) {
3951 if (r->in.handle == NULL) {
3952 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
3954 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
3955 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.type));
3956 NDR_CHECK(ndr_push_svcctl_StartType(ndr, NDR_SCALARS, r->in.start_type));
3957 NDR_CHECK(ndr_push_svcctl_ErrorControl(ndr, NDR_SCALARS, r->in.error_control));
3958 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.binary_path));
3959 if (r->in.binary_path) {
3960 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.binary_path, CH_UTF16)));
3961 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
3962 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.binary_path, CH_UTF16)));
3963 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.binary_path, ndr_charset_length(r->in.binary_path, CH_UTF16), sizeof(uint16_t), CH_UTF16));
3965 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.load_order_group));
3966 if (r->in.load_order_group) {
3967 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.load_order_group, CH_UTF16)));
3968 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
3969 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.load_order_group, CH_UTF16)));
3970 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.load_order_group, ndr_charset_length(r->in.load_order_group, CH_UTF16), sizeof(uint16_t), CH_UTF16));
3972 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.dependencies));
3973 if (r->in.dependencies) {
3974 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.dependencies, CH_UTF16)));
3975 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
3976 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.dependencies, CH_UTF16)));
3977 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.dependencies, ndr_charset_length(r->in.dependencies, CH_UTF16), sizeof(uint16_t), CH_UTF16));
3979 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.service_start_name));
3980 if (r->in.service_start_name) {
3981 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.service_start_name, CH_UTF16)));
3982 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
3983 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.service_start_name, CH_UTF16)));
3984 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.service_start_name, ndr_charset_length(r->in.service_start_name, CH_UTF16), sizeof(uint16_t), CH_UTF16));
3986 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.password));
3987 if (r->in.password) {
3988 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.password, CH_UTF16)));
3989 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
3990 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.password, CH_UTF16)));
3991 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.password, ndr_charset_length(r->in.password, CH_UTF16), sizeof(uint16_t), CH_UTF16));
3993 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.display_name));
3994 if (r->in.display_name) {
3995 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.display_name, CH_UTF16)));
3996 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
3997 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.display_name, CH_UTF16)));
3998 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.display_name, ndr_charset_length(r->in.display_name, CH_UTF16), sizeof(uint16_t), CH_UTF16));
4001 if (flags & NDR_OUT) {
4002 if (r->out.tag_id == NULL) {
4003 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
4005 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.tag_id));
4006 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
4008 return NDR_ERR_SUCCESS;
4011 static enum ndr_err_code ndr_pull_svcctl_ChangeServiceConfigA(struct ndr_pull *ndr, int flags, struct svcctl_ChangeServiceConfigA *r)
4013 uint32_t _ptr_binary_path;
4014 uint32_t _ptr_load_order_group;
4015 uint32_t _ptr_dependencies;
4016 uint32_t _ptr_service_start_name;
4017 uint32_t _ptr_password;
4018 uint32_t _ptr_display_name;
4019 TALLOC_CTX *_mem_save_handle_0;
4020 TALLOC_CTX *_mem_save_binary_path_0;
4021 TALLOC_CTX *_mem_save_load_order_group_0;
4022 TALLOC_CTX *_mem_save_tag_id_0;
4023 TALLOC_CTX *_mem_save_dependencies_0;
4024 TALLOC_CTX *_mem_save_service_start_name_0;
4025 TALLOC_CTX *_mem_save_password_0;
4026 TALLOC_CTX *_mem_save_display_name_0;
4027 if (flags & NDR_IN) {
4028 ZERO_STRUCT(r->out);
4030 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
4031 NDR_PULL_ALLOC(ndr, r->in.handle);
4033 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
4034 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
4035 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
4036 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
4037 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.type));
4038 NDR_CHECK(ndr_pull_svcctl_StartType(ndr, NDR_SCALARS, &r->in.start_type));
4039 NDR_CHECK(ndr_pull_svcctl_ErrorControl(ndr, NDR_SCALARS, &r->in.error_control));
4040 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_binary_path));
4041 if (_ptr_binary_path) {
4042 NDR_PULL_ALLOC(ndr, r->in.binary_path);
4044 r->in.binary_path = NULL;
4046 if (r->in.binary_path) {
4047 _mem_save_binary_path_0 = NDR_PULL_GET_MEM_CTX(ndr);
4048 NDR_PULL_SET_MEM_CTX(ndr, r->in.binary_path, 0);
4049 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.binary_path));
4050 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.binary_path));
4051 if (ndr_get_array_length(ndr, &r->in.binary_path) > ndr_get_array_size(ndr, &r->in.binary_path)) {
4052 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.binary_path), ndr_get_array_length(ndr, &r->in.binary_path));
4054 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.binary_path), sizeof(uint16_t)));
4055 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.binary_path, ndr_get_array_length(ndr, &r->in.binary_path), sizeof(uint16_t), CH_UTF16));
4056 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_binary_path_0, 0);
4058 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_load_order_group));
4059 if (_ptr_load_order_group) {
4060 NDR_PULL_ALLOC(ndr, r->in.load_order_group);
4062 r->in.load_order_group = NULL;
4064 if (r->in.load_order_group) {
4065 _mem_save_load_order_group_0 = NDR_PULL_GET_MEM_CTX(ndr);
4066 NDR_PULL_SET_MEM_CTX(ndr, r->in.load_order_group, 0);
4067 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.load_order_group));
4068 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.load_order_group));
4069 if (ndr_get_array_length(ndr, &r->in.load_order_group) > ndr_get_array_size(ndr, &r->in.load_order_group)) {
4070 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.load_order_group), ndr_get_array_length(ndr, &r->in.load_order_group));
4072 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.load_order_group), sizeof(uint16_t)));
4073 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.load_order_group, ndr_get_array_length(ndr, &r->in.load_order_group), sizeof(uint16_t), CH_UTF16));
4074 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_load_order_group_0, 0);
4076 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_dependencies));
4077 if (_ptr_dependencies) {
4078 NDR_PULL_ALLOC(ndr, r->in.dependencies);
4080 r->in.dependencies = NULL;
4082 if (r->in.dependencies) {
4083 _mem_save_dependencies_0 = NDR_PULL_GET_MEM_CTX(ndr);
4084 NDR_PULL_SET_MEM_CTX(ndr, r->in.dependencies, 0);
4085 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.dependencies));
4086 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.dependencies));
4087 if (ndr_get_array_length(ndr, &r->in.dependencies) > ndr_get_array_size(ndr, &r->in.dependencies)) {
4088 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.dependencies), ndr_get_array_length(ndr, &r->in.dependencies));
4090 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.dependencies), sizeof(uint16_t)));
4091 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.dependencies, ndr_get_array_length(ndr, &r->in.dependencies), sizeof(uint16_t), CH_UTF16));
4092 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_dependencies_0, 0);
4094 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_service_start_name));
4095 if (_ptr_service_start_name) {
4096 NDR_PULL_ALLOC(ndr, r->in.service_start_name);
4098 r->in.service_start_name = NULL;
4100 if (r->in.service_start_name) {
4101 _mem_save_service_start_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
4102 NDR_PULL_SET_MEM_CTX(ndr, r->in.service_start_name, 0);
4103 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.service_start_name));
4104 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.service_start_name));
4105 if (ndr_get_array_length(ndr, &r->in.service_start_name) > ndr_get_array_size(ndr, &r->in.service_start_name)) {
4106 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.service_start_name), ndr_get_array_length(ndr, &r->in.service_start_name));
4108 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.service_start_name), sizeof(uint16_t)));
4109 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.service_start_name, ndr_get_array_length(ndr, &r->in.service_start_name), sizeof(uint16_t), CH_UTF16));
4110 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_service_start_name_0, 0);
4112 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_password));
4113 if (_ptr_password) {
4114 NDR_PULL_ALLOC(ndr, r->in.password);
4116 r->in.password = NULL;
4118 if (r->in.password) {
4119 _mem_save_password_0 = NDR_PULL_GET_MEM_CTX(ndr);
4120 NDR_PULL_SET_MEM_CTX(ndr, r->in.password, 0);
4121 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.password));
4122 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.password));
4123 if (ndr_get_array_length(ndr, &r->in.password) > ndr_get_array_size(ndr, &r->in.password)) {
4124 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.password), ndr_get_array_length(ndr, &r->in.password));
4126 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.password), sizeof(uint16_t)));
4127 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.password, ndr_get_array_length(ndr, &r->in.password), sizeof(uint16_t), CH_UTF16));
4128 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_password_0, 0);
4130 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_display_name));
4131 if (_ptr_display_name) {
4132 NDR_PULL_ALLOC(ndr, r->in.display_name);
4134 r->in.display_name = NULL;
4136 if (r->in.display_name) {
4137 _mem_save_display_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
4138 NDR_PULL_SET_MEM_CTX(ndr, r->in.display_name, 0);
4139 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.display_name));
4140 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.display_name));
4141 if (ndr_get_array_length(ndr, &r->in.display_name) > ndr_get_array_size(ndr, &r->in.display_name)) {
4142 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.display_name), ndr_get_array_length(ndr, &r->in.display_name));
4144 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.display_name), sizeof(uint16_t)));
4145 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.display_name, ndr_get_array_length(ndr, &r->in.display_name), sizeof(uint16_t), CH_UTF16));
4146 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_display_name_0, 0);
4148 NDR_PULL_ALLOC(ndr, r->out.tag_id);
4149 ZERO_STRUCTP(r->out.tag_id);
4151 if (flags & NDR_OUT) {
4152 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
4153 NDR_PULL_ALLOC(ndr, r->out.tag_id);
4155 _mem_save_tag_id_0 = NDR_PULL_GET_MEM_CTX(ndr);
4156 NDR_PULL_SET_MEM_CTX(ndr, r->out.tag_id, LIBNDR_FLAG_REF_ALLOC);
4157 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.tag_id));
4158 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_tag_id_0, LIBNDR_FLAG_REF_ALLOC);
4159 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
4161 return NDR_ERR_SUCCESS;
4164 _PUBLIC_ void ndr_print_svcctl_ChangeServiceConfigA(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_ChangeServiceConfigA *r)
4166 ndr_print_struct(ndr, name, "svcctl_ChangeServiceConfigA");
4168 if (flags & NDR_SET_VALUES) {
4169 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
4171 if (flags & NDR_IN) {
4172 ndr_print_struct(ndr, "in", "svcctl_ChangeServiceConfigA");
4174 ndr_print_ptr(ndr, "handle", r->in.handle);
4176 ndr_print_policy_handle(ndr, "handle", r->in.handle);
4178 ndr_print_uint32(ndr, "type", r->in.type);
4179 ndr_print_svcctl_StartType(ndr, "start_type", r->in.start_type);
4180 ndr_print_svcctl_ErrorControl(ndr, "error_control", r->in.error_control);
4181 ndr_print_ptr(ndr, "binary_path", r->in.binary_path);
4183 if (r->in.binary_path) {
4184 ndr_print_string(ndr, "binary_path", r->in.binary_path);
4187 ndr_print_ptr(ndr, "load_order_group", r->in.load_order_group);
4189 if (r->in.load_order_group) {
4190 ndr_print_string(ndr, "load_order_group", r->in.load_order_group);
4193 ndr_print_ptr(ndr, "dependencies", r->in.dependencies);
4195 if (r->in.dependencies) {
4196 ndr_print_string(ndr, "dependencies", r->in.dependencies);
4199 ndr_print_ptr(ndr, "service_start_name", r->in.service_start_name);
4201 if (r->in.service_start_name) {
4202 ndr_print_string(ndr, "service_start_name", r->in.service_start_name);
4205 ndr_print_ptr(ndr, "password", r->in.password);
4207 if (r->in.password) {
4208 ndr_print_string(ndr, "password", r->in.password);
4211 ndr_print_ptr(ndr, "display_name", r->in.display_name);
4213 if (r->in.display_name) {
4214 ndr_print_string(ndr, "display_name", r->in.display_name);
4219 if (flags & NDR_OUT) {
4220 ndr_print_struct(ndr, "out", "svcctl_ChangeServiceConfigA");
4222 ndr_print_ptr(ndr, "tag_id", r->out.tag_id);
4224 ndr_print_uint32(ndr, "tag_id", *r->out.tag_id);
4226 ndr_print_WERROR(ndr, "result", r->out.result);
4232 static enum ndr_err_code ndr_push_svcctl_CreateServiceA(struct ndr_push *ndr, int flags, const struct svcctl_CreateServiceA *r)
4234 if (flags & NDR_IN) {
4235 if (r->in.handle == NULL) {
4236 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
4238 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
4239 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.ServiceName));
4240 if (r->in.ServiceName) {
4241 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.ServiceName, CH_UTF16)));
4242 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
4243 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.ServiceName, CH_UTF16)));
4244 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.ServiceName, ndr_charset_length(r->in.ServiceName, CH_UTF16), sizeof(uint16_t), CH_UTF16));
4246 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.DisplayName));
4247 if (r->in.DisplayName) {
4248 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.DisplayName, CH_UTF16)));
4249 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
4250 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.DisplayName, CH_UTF16)));
4251 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.DisplayName, ndr_charset_length(r->in.DisplayName, CH_UTF16), sizeof(uint16_t), CH_UTF16));
4253 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.desired_access));
4254 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.type));
4255 NDR_CHECK(ndr_push_svcctl_StartType(ndr, NDR_SCALARS, r->in.start_type));
4256 NDR_CHECK(ndr_push_svcctl_ErrorControl(ndr, NDR_SCALARS, r->in.error_control));
4257 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.binary_path));
4258 if (r->in.binary_path) {
4259 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.binary_path, CH_UTF16)));
4260 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
4261 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.binary_path, CH_UTF16)));
4262 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.binary_path, ndr_charset_length(r->in.binary_path, CH_UTF16), sizeof(uint16_t), CH_UTF16));
4264 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.LoadOrderGroupKey));
4265 if (r->in.LoadOrderGroupKey) {
4266 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.LoadOrderGroupKey, CH_UTF16)));
4267 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
4268 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.LoadOrderGroupKey, CH_UTF16)));
4269 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.LoadOrderGroupKey, ndr_charset_length(r->in.LoadOrderGroupKey, CH_UTF16), sizeof(uint16_t), CH_UTF16));
4271 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.dependencies));
4272 if (r->in.dependencies) {
4273 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.dependencies, CH_UTF16)));
4274 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
4275 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.dependencies, CH_UTF16)));
4276 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.dependencies, ndr_charset_length(r->in.dependencies, CH_UTF16), sizeof(uint16_t), CH_UTF16));
4278 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.service_start_name));
4279 if (r->in.service_start_name) {
4280 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.service_start_name, CH_UTF16)));
4281 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
4282 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.service_start_name, CH_UTF16)));
4283 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.service_start_name, ndr_charset_length(r->in.service_start_name, CH_UTF16), sizeof(uint16_t), CH_UTF16));
4285 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.password));
4286 if (r->in.password) {
4287 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.password, CH_UTF16)));
4288 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
4289 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.password, CH_UTF16)));
4290 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.password, ndr_charset_length(r->in.password, CH_UTF16), sizeof(uint16_t), CH_UTF16));
4293 if (flags & NDR_OUT) {
4294 NDR_CHECK(ndr_push_unique_ptr(ndr, r->out.TagId));
4296 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.TagId));
4298 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
4300 return NDR_ERR_SUCCESS;
4303 static enum ndr_err_code ndr_pull_svcctl_CreateServiceA(struct ndr_pull *ndr, int flags, struct svcctl_CreateServiceA *r)
4305 uint32_t _ptr_ServiceName;
4306 uint32_t _ptr_DisplayName;
4307 uint32_t _ptr_binary_path;
4308 uint32_t _ptr_LoadOrderGroupKey;
4309 uint32_t _ptr_TagId;
4310 uint32_t _ptr_dependencies;
4311 uint32_t _ptr_service_start_name;
4312 uint32_t _ptr_password;
4313 TALLOC_CTX *_mem_save_handle_0;
4314 TALLOC_CTX *_mem_save_ServiceName_0;
4315 TALLOC_CTX *_mem_save_DisplayName_0;
4316 TALLOC_CTX *_mem_save_binary_path_0;
4317 TALLOC_CTX *_mem_save_LoadOrderGroupKey_0;
4318 TALLOC_CTX *_mem_save_TagId_0;
4319 TALLOC_CTX *_mem_save_dependencies_0;
4320 TALLOC_CTX *_mem_save_service_start_name_0;
4321 TALLOC_CTX *_mem_save_password_0;
4322 if (flags & NDR_IN) {
4323 ZERO_STRUCT(r->out);
4325 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
4326 NDR_PULL_ALLOC(ndr, r->in.handle);
4328 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
4329 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
4330 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
4331 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
4332 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_ServiceName));
4333 if (_ptr_ServiceName) {
4334 NDR_PULL_ALLOC(ndr, r->in.ServiceName);
4336 r->in.ServiceName = NULL;
4338 if (r->in.ServiceName) {
4339 _mem_save_ServiceName_0 = NDR_PULL_GET_MEM_CTX(ndr);
4340 NDR_PULL_SET_MEM_CTX(ndr, r->in.ServiceName, 0);
4341 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.ServiceName));
4342 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.ServiceName));
4343 if (ndr_get_array_length(ndr, &r->in.ServiceName) > ndr_get_array_size(ndr, &r->in.ServiceName)) {
4344 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.ServiceName), ndr_get_array_length(ndr, &r->in.ServiceName));
4346 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.ServiceName), sizeof(uint16_t)));
4347 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.ServiceName, ndr_get_array_length(ndr, &r->in.ServiceName), sizeof(uint16_t), CH_UTF16));
4348 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_ServiceName_0, 0);
4350 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_DisplayName));
4351 if (_ptr_DisplayName) {
4352 NDR_PULL_ALLOC(ndr, r->in.DisplayName);
4354 r->in.DisplayName = NULL;
4356 if (r->in.DisplayName) {
4357 _mem_save_DisplayName_0 = NDR_PULL_GET_MEM_CTX(ndr);
4358 NDR_PULL_SET_MEM_CTX(ndr, r->in.DisplayName, 0);
4359 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.DisplayName));
4360 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.DisplayName));
4361 if (ndr_get_array_length(ndr, &r->in.DisplayName) > ndr_get_array_size(ndr, &r->in.DisplayName)) {
4362 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.DisplayName), ndr_get_array_length(ndr, &r->in.DisplayName));
4364 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.DisplayName), sizeof(uint16_t)));
4365 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.DisplayName, ndr_get_array_length(ndr, &r->in.DisplayName), sizeof(uint16_t), CH_UTF16));
4366 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_DisplayName_0, 0);
4368 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.desired_access));
4369 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.type));
4370 NDR_CHECK(ndr_pull_svcctl_StartType(ndr, NDR_SCALARS, &r->in.start_type));
4371 NDR_CHECK(ndr_pull_svcctl_ErrorControl(ndr, NDR_SCALARS, &r->in.error_control));
4372 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_binary_path));
4373 if (_ptr_binary_path) {
4374 NDR_PULL_ALLOC(ndr, r->in.binary_path);
4376 r->in.binary_path = NULL;
4378 if (r->in.binary_path) {
4379 _mem_save_binary_path_0 = NDR_PULL_GET_MEM_CTX(ndr);
4380 NDR_PULL_SET_MEM_CTX(ndr, r->in.binary_path, 0);
4381 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.binary_path));
4382 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.binary_path));
4383 if (ndr_get_array_length(ndr, &r->in.binary_path) > ndr_get_array_size(ndr, &r->in.binary_path)) {
4384 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.binary_path), ndr_get_array_length(ndr, &r->in.binary_path));
4386 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.binary_path), sizeof(uint16_t)));
4387 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.binary_path, ndr_get_array_length(ndr, &r->in.binary_path), sizeof(uint16_t), CH_UTF16));
4388 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_binary_path_0, 0);
4390 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_LoadOrderGroupKey));
4391 if (_ptr_LoadOrderGroupKey) {
4392 NDR_PULL_ALLOC(ndr, r->in.LoadOrderGroupKey);
4394 r->in.LoadOrderGroupKey = NULL;
4396 if (r->in.LoadOrderGroupKey) {
4397 _mem_save_LoadOrderGroupKey_0 = NDR_PULL_GET_MEM_CTX(ndr);
4398 NDR_PULL_SET_MEM_CTX(ndr, r->in.LoadOrderGroupKey, 0);
4399 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.LoadOrderGroupKey));
4400 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.LoadOrderGroupKey));
4401 if (ndr_get_array_length(ndr, &r->in.LoadOrderGroupKey) > ndr_get_array_size(ndr, &r->in.LoadOrderGroupKey)) {
4402 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.LoadOrderGroupKey), ndr_get_array_length(ndr, &r->in.LoadOrderGroupKey));
4404 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.LoadOrderGroupKey), sizeof(uint16_t)));
4405 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.LoadOrderGroupKey, ndr_get_array_length(ndr, &r->in.LoadOrderGroupKey), sizeof(uint16_t), CH_UTF16));
4406 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_LoadOrderGroupKey_0, 0);
4408 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_dependencies));
4409 if (_ptr_dependencies) {
4410 NDR_PULL_ALLOC(ndr, r->in.dependencies);
4412 r->in.dependencies = NULL;
4414 if (r->in.dependencies) {
4415 _mem_save_dependencies_0 = NDR_PULL_GET_MEM_CTX(ndr);
4416 NDR_PULL_SET_MEM_CTX(ndr, r->in.dependencies, 0);
4417 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.dependencies));
4418 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.dependencies));
4419 if (ndr_get_array_length(ndr, &r->in.dependencies) > ndr_get_array_size(ndr, &r->in.dependencies)) {
4420 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.dependencies), ndr_get_array_length(ndr, &r->in.dependencies));
4422 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.dependencies), sizeof(uint16_t)));
4423 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.dependencies, ndr_get_array_length(ndr, &r->in.dependencies), sizeof(uint16_t), CH_UTF16));
4424 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_dependencies_0, 0);
4426 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_service_start_name));
4427 if (_ptr_service_start_name) {
4428 NDR_PULL_ALLOC(ndr, r->in.service_start_name);
4430 r->in.service_start_name = NULL;
4432 if (r->in.service_start_name) {
4433 _mem_save_service_start_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
4434 NDR_PULL_SET_MEM_CTX(ndr, r->in.service_start_name, 0);
4435 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.service_start_name));
4436 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.service_start_name));
4437 if (ndr_get_array_length(ndr, &r->in.service_start_name) > ndr_get_array_size(ndr, &r->in.service_start_name)) {
4438 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.service_start_name), ndr_get_array_length(ndr, &r->in.service_start_name));
4440 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.service_start_name), sizeof(uint16_t)));
4441 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.service_start_name, ndr_get_array_length(ndr, &r->in.service_start_name), sizeof(uint16_t), CH_UTF16));
4442 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_service_start_name_0, 0);
4444 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_password));
4445 if (_ptr_password) {
4446 NDR_PULL_ALLOC(ndr, r->in.password);
4448 r->in.password = NULL;
4450 if (r->in.password) {
4451 _mem_save_password_0 = NDR_PULL_GET_MEM_CTX(ndr);
4452 NDR_PULL_SET_MEM_CTX(ndr, r->in.password, 0);
4453 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.password));
4454 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.password));
4455 if (ndr_get_array_length(ndr, &r->in.password) > ndr_get_array_size(ndr, &r->in.password)) {
4456 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.password), ndr_get_array_length(ndr, &r->in.password));
4458 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.password), sizeof(uint16_t)));
4459 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.password, ndr_get_array_length(ndr, &r->in.password), sizeof(uint16_t), CH_UTF16));
4460 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_password_0, 0);
4463 if (flags & NDR_OUT) {
4464 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_TagId));
4466 NDR_PULL_ALLOC(ndr, r->out.TagId);
4468 r->out.TagId = NULL;
4471 _mem_save_TagId_0 = NDR_PULL_GET_MEM_CTX(ndr);
4472 NDR_PULL_SET_MEM_CTX(ndr, r->out.TagId, 0);
4473 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.TagId));
4474 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_TagId_0, 0);
4476 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
4478 return NDR_ERR_SUCCESS;
4481 _PUBLIC_ void ndr_print_svcctl_CreateServiceA(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_CreateServiceA *r)
4483 ndr_print_struct(ndr, name, "svcctl_CreateServiceA");
4485 if (flags & NDR_SET_VALUES) {
4486 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
4488 if (flags & NDR_IN) {
4489 ndr_print_struct(ndr, "in", "svcctl_CreateServiceA");
4491 ndr_print_ptr(ndr, "handle", r->in.handle);
4493 ndr_print_policy_handle(ndr, "handle", r->in.handle);
4495 ndr_print_ptr(ndr, "ServiceName", r->in.ServiceName);
4497 if (r->in.ServiceName) {
4498 ndr_print_string(ndr, "ServiceName", r->in.ServiceName);
4501 ndr_print_ptr(ndr, "DisplayName", r->in.DisplayName);
4503 if (r->in.DisplayName) {
4504 ndr_print_string(ndr, "DisplayName", r->in.DisplayName);
4507 ndr_print_uint32(ndr, "desired_access", r->in.desired_access);
4508 ndr_print_uint32(ndr, "type", r->in.type);
4509 ndr_print_svcctl_StartType(ndr, "start_type", r->in.start_type);
4510 ndr_print_svcctl_ErrorControl(ndr, "error_control", r->in.error_control);
4511 ndr_print_ptr(ndr, "binary_path", r->in.binary_path);
4513 if (r->in.binary_path) {
4514 ndr_print_string(ndr, "binary_path", r->in.binary_path);
4517 ndr_print_ptr(ndr, "LoadOrderGroupKey", r->in.LoadOrderGroupKey);
4519 if (r->in.LoadOrderGroupKey) {
4520 ndr_print_string(ndr, "LoadOrderGroupKey", r->in.LoadOrderGroupKey);
4523 ndr_print_ptr(ndr, "dependencies", r->in.dependencies);
4525 if (r->in.dependencies) {
4526 ndr_print_string(ndr, "dependencies", r->in.dependencies);
4529 ndr_print_ptr(ndr, "service_start_name", r->in.service_start_name);
4531 if (r->in.service_start_name) {
4532 ndr_print_string(ndr, "service_start_name", r->in.service_start_name);
4535 ndr_print_ptr(ndr, "password", r->in.password);
4537 if (r->in.password) {
4538 ndr_print_string(ndr, "password", r->in.password);
4543 if (flags & NDR_OUT) {
4544 ndr_print_struct(ndr, "out", "svcctl_CreateServiceA");
4546 ndr_print_ptr(ndr, "TagId", r->out.TagId);
4549 ndr_print_uint32(ndr, "TagId", *r->out.TagId);
4552 ndr_print_WERROR(ndr, "result", r->out.result);
4558 static enum ndr_err_code ndr_push_svcctl_EnumDependentServicesA(struct ndr_push *ndr, int flags, const struct svcctl_EnumDependentServicesA *r)
4560 if (flags & NDR_IN) {
4561 if (r->in.service == NULL) {
4562 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
4564 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.service));
4565 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.state));
4566 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.buf_size));
4568 if (flags & NDR_OUT) {
4569 NDR_CHECK(ndr_push_unique_ptr(ndr, r->out.service_status));
4570 if (r->out.service_status) {
4571 NDR_CHECK(ndr_push_ENUM_SERVICE_STATUSA(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.service_status));
4573 if (r->out.bytes_needed == NULL) {
4574 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
4576 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.bytes_needed));
4577 if (r->out.services_returned == NULL) {
4578 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
4580 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.services_returned));
4581 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
4583 return NDR_ERR_SUCCESS;
4586 static enum ndr_err_code ndr_pull_svcctl_EnumDependentServicesA(struct ndr_pull *ndr, int flags, struct svcctl_EnumDependentServicesA *r)
4588 uint32_t _ptr_service_status;
4589 TALLOC_CTX *_mem_save_service_0;
4590 TALLOC_CTX *_mem_save_service_status_0;
4591 TALLOC_CTX *_mem_save_bytes_needed_0;
4592 TALLOC_CTX *_mem_save_services_returned_0;
4593 if (flags & NDR_IN) {
4594 ZERO_STRUCT(r->out);
4596 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
4597 NDR_PULL_ALLOC(ndr, r->in.service);
4599 _mem_save_service_0 = NDR_PULL_GET_MEM_CTX(ndr);
4600 NDR_PULL_SET_MEM_CTX(ndr, r->in.service, LIBNDR_FLAG_REF_ALLOC);
4601 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.service));
4602 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_service_0, LIBNDR_FLAG_REF_ALLOC);
4603 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.state));
4604 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.buf_size));
4605 NDR_PULL_ALLOC(ndr, r->out.bytes_needed);
4606 ZERO_STRUCTP(r->out.bytes_needed);
4607 NDR_PULL_ALLOC(ndr, r->out.services_returned);
4608 ZERO_STRUCTP(r->out.services_returned);
4610 if (flags & NDR_OUT) {
4611 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_service_status));
4612 if (_ptr_service_status) {
4613 NDR_PULL_ALLOC(ndr, r->out.service_status);
4615 r->out.service_status = NULL;
4617 if (r->out.service_status) {
4618 _mem_save_service_status_0 = NDR_PULL_GET_MEM_CTX(ndr);
4619 NDR_PULL_SET_MEM_CTX(ndr, r->out.service_status, 0);
4620 NDR_CHECK(ndr_pull_ENUM_SERVICE_STATUSA(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.service_status));
4621 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_service_status_0, 0);
4623 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
4624 NDR_PULL_ALLOC(ndr, r->out.bytes_needed);
4626 _mem_save_bytes_needed_0 = NDR_PULL_GET_MEM_CTX(ndr);
4627 NDR_PULL_SET_MEM_CTX(ndr, r->out.bytes_needed, LIBNDR_FLAG_REF_ALLOC);
4628 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.bytes_needed));
4629 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_bytes_needed_0, LIBNDR_FLAG_REF_ALLOC);
4630 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
4631 NDR_PULL_ALLOC(ndr, r->out.services_returned);
4633 _mem_save_services_returned_0 = NDR_PULL_GET_MEM_CTX(ndr);
4634 NDR_PULL_SET_MEM_CTX(ndr, r->out.services_returned, LIBNDR_FLAG_REF_ALLOC);
4635 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.services_returned));
4636 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_services_returned_0, LIBNDR_FLAG_REF_ALLOC);
4637 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
4639 return NDR_ERR_SUCCESS;
4642 _PUBLIC_ void ndr_print_svcctl_EnumDependentServicesA(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_EnumDependentServicesA *r)
4644 ndr_print_struct(ndr, name, "svcctl_EnumDependentServicesA");
4646 if (flags & NDR_SET_VALUES) {
4647 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
4649 if (flags & NDR_IN) {
4650 ndr_print_struct(ndr, "in", "svcctl_EnumDependentServicesA");
4652 ndr_print_ptr(ndr, "service", r->in.service);
4654 ndr_print_policy_handle(ndr, "service", r->in.service);
4656 ndr_print_uint32(ndr, "state", r->in.state);
4657 ndr_print_uint32(ndr, "buf_size", r->in.buf_size);
4660 if (flags & NDR_OUT) {
4661 ndr_print_struct(ndr, "out", "svcctl_EnumDependentServicesA");
4663 ndr_print_ptr(ndr, "service_status", r->out.service_status);
4665 if (r->out.service_status) {
4666 ndr_print_ENUM_SERVICE_STATUSA(ndr, "service_status", r->out.service_status);
4669 ndr_print_ptr(ndr, "bytes_needed", r->out.bytes_needed);
4671 ndr_print_uint32(ndr, "bytes_needed", *r->out.bytes_needed);
4673 ndr_print_ptr(ndr, "services_returned", r->out.services_returned);
4675 ndr_print_uint32(ndr, "services_returned", *r->out.services_returned);
4677 ndr_print_WERROR(ndr, "result", r->out.result);
4683 static enum ndr_err_code ndr_push_svcctl_EnumServicesStatusA(struct ndr_push *ndr, int flags, const struct svcctl_EnumServicesStatusA *r)
4685 if (flags & NDR_IN) {
4686 if (r->in.handle == NULL) {
4687 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
4689 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
4690 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.type));
4691 NDR_CHECK(ndr_push_svcctl_ServiceState(ndr, NDR_SCALARS, r->in.state));
4692 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.buf_size));
4693 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.resume_handle));
4694 if (r->in.resume_handle) {
4695 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->in.resume_handle));
4698 if (flags & NDR_OUT) {
4699 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.buf_size));
4700 NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->out.service, r->in.buf_size));
4701 if (r->out.bytes_needed == NULL) {
4702 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
4704 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.bytes_needed));
4705 if (r->out.services_returned == NULL) {
4706 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
4708 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.services_returned));
4709 NDR_CHECK(ndr_push_unique_ptr(ndr, r->out.resume_handle));
4710 if (r->out.resume_handle) {
4711 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.resume_handle));
4713 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
4715 return NDR_ERR_SUCCESS;
4718 static enum ndr_err_code ndr_pull_svcctl_EnumServicesStatusA(struct ndr_pull *ndr, int flags, struct svcctl_EnumServicesStatusA *r)
4720 uint32_t _ptr_resume_handle;
4721 TALLOC_CTX *_mem_save_handle_0;
4722 TALLOC_CTX *_mem_save_bytes_needed_0;
4723 TALLOC_CTX *_mem_save_services_returned_0;
4724 TALLOC_CTX *_mem_save_resume_handle_0;
4725 if (flags & NDR_IN) {
4726 ZERO_STRUCT(r->out);
4728 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
4729 NDR_PULL_ALLOC(ndr, r->in.handle);
4731 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
4732 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
4733 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
4734 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
4735 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.type));
4736 NDR_CHECK(ndr_pull_svcctl_ServiceState(ndr, NDR_SCALARS, &r->in.state));
4737 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.buf_size));
4738 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_resume_handle));
4739 if (_ptr_resume_handle) {
4740 NDR_PULL_ALLOC(ndr, r->in.resume_handle);
4742 r->in.resume_handle = NULL;
4744 if (r->in.resume_handle) {
4745 _mem_save_resume_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
4746 NDR_PULL_SET_MEM_CTX(ndr, r->in.resume_handle, 0);
4747 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->in.resume_handle));
4748 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_resume_handle_0, 0);
4750 NDR_PULL_ALLOC(ndr, r->out.bytes_needed);
4751 ZERO_STRUCTP(r->out.bytes_needed);
4752 NDR_PULL_ALLOC(ndr, r->out.services_returned);
4753 ZERO_STRUCTP(r->out.services_returned);
4755 if (flags & NDR_OUT) {
4756 NDR_CHECK(ndr_pull_array_size(ndr, &r->out.service));
4757 NDR_PULL_ALLOC_N(ndr, r->out.service, ndr_get_array_size(ndr, &r->out.service));
4758 NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->out.service, ndr_get_array_size(ndr, &r->out.service)));
4759 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
4760 NDR_PULL_ALLOC(ndr, r->out.bytes_needed);
4762 _mem_save_bytes_needed_0 = NDR_PULL_GET_MEM_CTX(ndr);
4763 NDR_PULL_SET_MEM_CTX(ndr, r->out.bytes_needed, LIBNDR_FLAG_REF_ALLOC);
4764 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.bytes_needed));
4765 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_bytes_needed_0, LIBNDR_FLAG_REF_ALLOC);
4766 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
4767 NDR_PULL_ALLOC(ndr, r->out.services_returned);
4769 _mem_save_services_returned_0 = NDR_PULL_GET_MEM_CTX(ndr);
4770 NDR_PULL_SET_MEM_CTX(ndr, r->out.services_returned, LIBNDR_FLAG_REF_ALLOC);
4771 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.services_returned));
4772 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_services_returned_0, LIBNDR_FLAG_REF_ALLOC);
4773 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_resume_handle));
4774 if (_ptr_resume_handle) {
4775 NDR_PULL_ALLOC(ndr, r->out.resume_handle);
4777 r->out.resume_handle = NULL;
4779 if (r->out.resume_handle) {
4780 _mem_save_resume_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
4781 NDR_PULL_SET_MEM_CTX(ndr, r->out.resume_handle, 0);
4782 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.resume_handle));
4783 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_resume_handle_0, 0);
4785 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
4786 if (r->out.service) {
4787 NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->out.service, r->in.buf_size));
4790 return NDR_ERR_SUCCESS;
4793 _PUBLIC_ void ndr_print_svcctl_EnumServicesStatusA(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_EnumServicesStatusA *r)
4795 ndr_print_struct(ndr, name, "svcctl_EnumServicesStatusA");
4797 if (flags & NDR_SET_VALUES) {
4798 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
4800 if (flags & NDR_IN) {
4801 ndr_print_struct(ndr, "in", "svcctl_EnumServicesStatusA");
4803 ndr_print_ptr(ndr, "handle", r->in.handle);
4805 ndr_print_policy_handle(ndr, "handle", r->in.handle);
4807 ndr_print_uint32(ndr, "type", r->in.type);
4808 ndr_print_svcctl_ServiceState(ndr, "state", r->in.state);
4809 ndr_print_uint32(ndr, "buf_size", r->in.buf_size);
4810 ndr_print_ptr(ndr, "resume_handle", r->in.resume_handle);
4812 if (r->in.resume_handle) {
4813 ndr_print_uint32(ndr, "resume_handle", *r->in.resume_handle);
4818 if (flags & NDR_OUT) {
4819 ndr_print_struct(ndr, "out", "svcctl_EnumServicesStatusA");
4821 ndr_print_array_uint8(ndr, "service", r->out.service, r->in.buf_size);
4822 ndr_print_ptr(ndr, "bytes_needed", r->out.bytes_needed);
4824 ndr_print_uint32(ndr, "bytes_needed", *r->out.bytes_needed);
4826 ndr_print_ptr(ndr, "services_returned", r->out.services_returned);
4828 ndr_print_uint32(ndr, "services_returned", *r->out.services_returned);
4830 ndr_print_ptr(ndr, "resume_handle", r->out.resume_handle);
4832 if (r->out.resume_handle) {
4833 ndr_print_uint32(ndr, "resume_handle", *r->out.resume_handle);
4836 ndr_print_WERROR(ndr, "result", r->out.result);
4842 static enum ndr_err_code ndr_push_svcctl_OpenSCManagerA(struct ndr_push *ndr, int flags, const struct svcctl_OpenSCManagerA *r)
4844 if (flags & NDR_IN) {
4845 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.MachineName));
4846 if (r->in.MachineName) {
4847 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.MachineName, CH_UTF16)));
4848 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
4849 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.MachineName, CH_UTF16)));
4850 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.MachineName, ndr_charset_length(r->in.MachineName, CH_UTF16), sizeof(uint16_t), CH_UTF16));
4852 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.DatabaseName));
4853 if (r->in.DatabaseName) {
4854 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.DatabaseName, CH_UTF16)));
4855 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
4856 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.DatabaseName, CH_UTF16)));
4857 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.DatabaseName, ndr_charset_length(r->in.DatabaseName, CH_UTF16), sizeof(uint16_t), CH_UTF16));
4859 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.access_mask));
4861 if (flags & NDR_OUT) {
4862 if (r->out.handle == NULL) {
4863 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
4865 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->out.handle));
4866 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
4868 return NDR_ERR_SUCCESS;
4871 static enum ndr_err_code ndr_pull_svcctl_OpenSCManagerA(struct ndr_pull *ndr, int flags, struct svcctl_OpenSCManagerA *r)
4873 uint32_t _ptr_MachineName;
4874 uint32_t _ptr_DatabaseName;
4875 TALLOC_CTX *_mem_save_MachineName_0;
4876 TALLOC_CTX *_mem_save_DatabaseName_0;
4877 TALLOC_CTX *_mem_save_handle_0;
4878 if (flags & NDR_IN) {
4879 ZERO_STRUCT(r->out);
4881 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_MachineName));
4882 if (_ptr_MachineName) {
4883 NDR_PULL_ALLOC(ndr, r->in.MachineName);
4885 r->in.MachineName = NULL;
4887 if (r->in.MachineName) {
4888 _mem_save_MachineName_0 = NDR_PULL_GET_MEM_CTX(ndr);
4889 NDR_PULL_SET_MEM_CTX(ndr, r->in.MachineName, 0);
4890 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.MachineName));
4891 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.MachineName));
4892 if (ndr_get_array_length(ndr, &r->in.MachineName) > ndr_get_array_size(ndr, &r->in.MachineName)) {
4893 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.MachineName), ndr_get_array_length(ndr, &r->in.MachineName));
4895 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.MachineName), sizeof(uint16_t)));
4896 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.MachineName, ndr_get_array_length(ndr, &r->in.MachineName), sizeof(uint16_t), CH_UTF16));
4897 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_MachineName_0, 0);
4899 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_DatabaseName));
4900 if (_ptr_DatabaseName) {
4901 NDR_PULL_ALLOC(ndr, r->in.DatabaseName);
4903 r->in.DatabaseName = NULL;
4905 if (r->in.DatabaseName) {
4906 _mem_save_DatabaseName_0 = NDR_PULL_GET_MEM_CTX(ndr);
4907 NDR_PULL_SET_MEM_CTX(ndr, r->in.DatabaseName, 0);
4908 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.DatabaseName));
4909 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.DatabaseName));
4910 if (ndr_get_array_length(ndr, &r->in.DatabaseName) > ndr_get_array_size(ndr, &r->in.DatabaseName)) {
4911 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.DatabaseName), ndr_get_array_length(ndr, &r->in.DatabaseName));
4913 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.DatabaseName), sizeof(uint16_t)));
4914 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.DatabaseName, ndr_get_array_length(ndr, &r->in.DatabaseName), sizeof(uint16_t), CH_UTF16));
4915 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_DatabaseName_0, 0);
4917 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.access_mask));
4918 NDR_PULL_ALLOC(ndr, r->out.handle);
4919 ZERO_STRUCTP(r->out.handle);
4921 if (flags & NDR_OUT) {
4922 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
4923 NDR_PULL_ALLOC(ndr, r->out.handle);
4925 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
4926 NDR_PULL_SET_MEM_CTX(ndr, r->out.handle, LIBNDR_FLAG_REF_ALLOC);
4927 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->out.handle));
4928 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
4929 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
4931 return NDR_ERR_SUCCESS;
4934 _PUBLIC_ void ndr_print_svcctl_OpenSCManagerA(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_OpenSCManagerA *r)
4936 ndr_print_struct(ndr, name, "svcctl_OpenSCManagerA");
4938 if (flags & NDR_SET_VALUES) {
4939 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
4941 if (flags & NDR_IN) {
4942 ndr_print_struct(ndr, "in", "svcctl_OpenSCManagerA");
4944 ndr_print_ptr(ndr, "MachineName", r->in.MachineName);
4946 if (r->in.MachineName) {
4947 ndr_print_string(ndr, "MachineName", r->in.MachineName);
4950 ndr_print_ptr(ndr, "DatabaseName", r->in.DatabaseName);
4952 if (r->in.DatabaseName) {
4953 ndr_print_string(ndr, "DatabaseName", r->in.DatabaseName);
4956 ndr_print_uint32(ndr, "access_mask", r->in.access_mask);
4959 if (flags & NDR_OUT) {
4960 ndr_print_struct(ndr, "out", "svcctl_OpenSCManagerA");
4962 ndr_print_ptr(ndr, "handle", r->out.handle);
4964 ndr_print_policy_handle(ndr, "handle", r->out.handle);
4966 ndr_print_WERROR(ndr, "result", r->out.result);
4972 static enum ndr_err_code ndr_push_svcctl_OpenServiceA(struct ndr_push *ndr, int flags, const struct svcctl_OpenServiceA *r)
4974 if (flags & NDR_IN) {
4975 if (r->in.scmanager_handle == NULL) {
4976 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
4978 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.scmanager_handle));
4979 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.ServiceName));
4980 if (r->in.ServiceName) {
4981 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.ServiceName, CH_UTF16)));
4982 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
4983 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.ServiceName, CH_UTF16)));
4984 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.ServiceName, ndr_charset_length(r->in.ServiceName, CH_UTF16), sizeof(uint16_t), CH_UTF16));
4986 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.access_mask));
4988 if (flags & NDR_OUT) {
4989 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
4991 return NDR_ERR_SUCCESS;
4994 static enum ndr_err_code ndr_pull_svcctl_OpenServiceA(struct ndr_pull *ndr, int flags, struct svcctl_OpenServiceA *r)
4996 uint32_t _ptr_ServiceName;
4997 TALLOC_CTX *_mem_save_scmanager_handle_0;
4998 TALLOC_CTX *_mem_save_ServiceName_0;
4999 if (flags & NDR_IN) {
5000 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
5001 NDR_PULL_ALLOC(ndr, r->in.scmanager_handle);
5003 _mem_save_scmanager_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
5004 NDR_PULL_SET_MEM_CTX(ndr, r->in.scmanager_handle, LIBNDR_FLAG_REF_ALLOC);
5005 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.scmanager_handle));
5006 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_scmanager_handle_0, LIBNDR_FLAG_REF_ALLOC);
5007 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_ServiceName));
5008 if (_ptr_ServiceName) {
5009 NDR_PULL_ALLOC(ndr, r->in.ServiceName);
5011 r->in.ServiceName = NULL;
5013 if (r->in.ServiceName) {
5014 _mem_save_ServiceName_0 = NDR_PULL_GET_MEM_CTX(ndr);
5015 NDR_PULL_SET_MEM_CTX(ndr, r->in.ServiceName, 0);
5016 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.ServiceName));
5017 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.ServiceName));
5018 if (ndr_get_array_length(ndr, &r->in.ServiceName) > ndr_get_array_size(ndr, &r->in.ServiceName)) {
5019 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.ServiceName), ndr_get_array_length(ndr, &r->in.ServiceName));
5021 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.ServiceName), sizeof(uint16_t)));
5022 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.ServiceName, ndr_get_array_length(ndr, &r->in.ServiceName), sizeof(uint16_t), CH_UTF16));
5023 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_ServiceName_0, 0);
5025 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.access_mask));
5027 if (flags & NDR_OUT) {
5028 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
5030 return NDR_ERR_SUCCESS;
5033 _PUBLIC_ void ndr_print_svcctl_OpenServiceA(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_OpenServiceA *r)
5035 ndr_print_struct(ndr, name, "svcctl_OpenServiceA");
5037 if (flags & NDR_SET_VALUES) {
5038 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
5040 if (flags & NDR_IN) {
5041 ndr_print_struct(ndr, "in", "svcctl_OpenServiceA");
5043 ndr_print_ptr(ndr, "scmanager_handle", r->in.scmanager_handle);
5045 ndr_print_policy_handle(ndr, "scmanager_handle", r->in.scmanager_handle);
5047 ndr_print_ptr(ndr, "ServiceName", r->in.ServiceName);
5049 if (r->in.ServiceName) {
5050 ndr_print_string(ndr, "ServiceName", r->in.ServiceName);
5053 ndr_print_uint32(ndr, "access_mask", r->in.access_mask);
5056 if (flags & NDR_OUT) {
5057 ndr_print_struct(ndr, "out", "svcctl_OpenServiceA");
5059 ndr_print_WERROR(ndr, "result", r->out.result);
5065 static enum ndr_err_code ndr_push_svcctl_QueryServiceConfigA(struct ndr_push *ndr, int flags, const struct svcctl_QueryServiceConfigA *r)
5067 if (flags & NDR_IN) {
5068 if (r->in.handle == NULL) {
5069 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
5071 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
5072 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.buf_size));
5074 if (flags & NDR_OUT) {
5075 NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->out.query, r->in.buf_size));
5076 if (r->out.bytes_needed == NULL) {
5077 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
5079 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.bytes_needed));
5080 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
5082 return NDR_ERR_SUCCESS;
5085 static enum ndr_err_code ndr_pull_svcctl_QueryServiceConfigA(struct ndr_pull *ndr, int flags, struct svcctl_QueryServiceConfigA *r)
5087 TALLOC_CTX *_mem_save_handle_0;
5088 TALLOC_CTX *_mem_save_bytes_needed_0;
5089 if (flags & NDR_IN) {
5090 ZERO_STRUCT(r->out);
5092 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
5093 NDR_PULL_ALLOC(ndr, r->in.handle);
5095 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
5096 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
5097 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
5098 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
5099 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.buf_size));
5100 NDR_PULL_ALLOC(ndr, r->out.bytes_needed);
5101 ZERO_STRUCTP(r->out.bytes_needed);
5103 if (flags & NDR_OUT) {
5104 NDR_PULL_ALLOC_N(ndr, r->out.query, r->in.buf_size);
5105 NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->out.query, r->in.buf_size));
5106 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
5107 NDR_PULL_ALLOC(ndr, r->out.bytes_needed);
5109 _mem_save_bytes_needed_0 = NDR_PULL_GET_MEM_CTX(ndr);
5110 NDR_PULL_SET_MEM_CTX(ndr, r->out.bytes_needed, LIBNDR_FLAG_REF_ALLOC);
5111 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.bytes_needed));
5112 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_bytes_needed_0, LIBNDR_FLAG_REF_ALLOC);
5113 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
5115 return NDR_ERR_SUCCESS;
5118 _PUBLIC_ void ndr_print_svcctl_QueryServiceConfigA(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_QueryServiceConfigA *r)
5120 ndr_print_struct(ndr, name, "svcctl_QueryServiceConfigA");
5122 if (flags & NDR_SET_VALUES) {
5123 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
5125 if (flags & NDR_IN) {
5126 ndr_print_struct(ndr, "in", "svcctl_QueryServiceConfigA");
5128 ndr_print_ptr(ndr, "handle", r->in.handle);
5130 ndr_print_policy_handle(ndr, "handle", r->in.handle);
5132 ndr_print_uint32(ndr, "buf_size", r->in.buf_size);
5135 if (flags & NDR_OUT) {
5136 ndr_print_struct(ndr, "out", "svcctl_QueryServiceConfigA");
5138 ndr_print_array_uint8(ndr, "query", r->out.query, r->in.buf_size);
5139 ndr_print_ptr(ndr, "bytes_needed", r->out.bytes_needed);
5141 ndr_print_uint32(ndr, "bytes_needed", *r->out.bytes_needed);
5143 ndr_print_WERROR(ndr, "result", r->out.result);
5149 static enum ndr_err_code ndr_push_svcctl_QueryServiceLockStatusA(struct ndr_push *ndr, int flags, const struct svcctl_QueryServiceLockStatusA *r)
5151 if (flags & NDR_IN) {
5152 if (r->in.handle == NULL) {
5153 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
5155 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
5156 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.buf_size));
5158 if (flags & NDR_OUT) {
5159 if (r->out.lock_status == NULL) {
5160 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
5162 NDR_CHECK(ndr_push_SERVICE_LOCK_STATUS(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.lock_status));
5163 if (r->out.required_buf_size == NULL) {
5164 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
5166 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.required_buf_size));
5167 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
5169 return NDR_ERR_SUCCESS;
5172 static enum ndr_err_code ndr_pull_svcctl_QueryServiceLockStatusA(struct ndr_pull *ndr, int flags, struct svcctl_QueryServiceLockStatusA *r)
5174 TALLOC_CTX *_mem_save_handle_0;
5175 TALLOC_CTX *_mem_save_lock_status_0;
5176 TALLOC_CTX *_mem_save_required_buf_size_0;
5177 if (flags & NDR_IN) {
5178 ZERO_STRUCT(r->out);
5180 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
5181 NDR_PULL_ALLOC(ndr, r->in.handle);
5183 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
5184 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
5185 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
5186 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
5187 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.buf_size));
5188 NDR_PULL_ALLOC(ndr, r->out.lock_status);
5189 ZERO_STRUCTP(r->out.lock_status);
5190 NDR_PULL_ALLOC(ndr, r->out.required_buf_size);
5191 ZERO_STRUCTP(r->out.required_buf_size);
5193 if (flags & NDR_OUT) {
5194 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
5195 NDR_PULL_ALLOC(ndr, r->out.lock_status);
5197 _mem_save_lock_status_0 = NDR_PULL_GET_MEM_CTX(ndr);
5198 NDR_PULL_SET_MEM_CTX(ndr, r->out.lock_status, LIBNDR_FLAG_REF_ALLOC);
5199 NDR_CHECK(ndr_pull_SERVICE_LOCK_STATUS(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.lock_status));
5200 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_lock_status_0, LIBNDR_FLAG_REF_ALLOC);
5201 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
5202 NDR_PULL_ALLOC(ndr, r->out.required_buf_size);
5204 _mem_save_required_buf_size_0 = NDR_PULL_GET_MEM_CTX(ndr);
5205 NDR_PULL_SET_MEM_CTX(ndr, r->out.required_buf_size, LIBNDR_FLAG_REF_ALLOC);
5206 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.required_buf_size));
5207 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_required_buf_size_0, LIBNDR_FLAG_REF_ALLOC);
5208 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
5210 return NDR_ERR_SUCCESS;
5213 _PUBLIC_ void ndr_print_svcctl_QueryServiceLockStatusA(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_QueryServiceLockStatusA *r)
5215 ndr_print_struct(ndr, name, "svcctl_QueryServiceLockStatusA");
5217 if (flags & NDR_SET_VALUES) {
5218 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
5220 if (flags & NDR_IN) {
5221 ndr_print_struct(ndr, "in", "svcctl_QueryServiceLockStatusA");
5223 ndr_print_ptr(ndr, "handle", r->in.handle);
5225 ndr_print_policy_handle(ndr, "handle", r->in.handle);
5227 ndr_print_uint32(ndr, "buf_size", r->in.buf_size);
5230 if (flags & NDR_OUT) {
5231 ndr_print_struct(ndr, "out", "svcctl_QueryServiceLockStatusA");
5233 ndr_print_ptr(ndr, "lock_status", r->out.lock_status);
5235 ndr_print_SERVICE_LOCK_STATUS(ndr, "lock_status", r->out.lock_status);
5237 ndr_print_ptr(ndr, "required_buf_size", r->out.required_buf_size);
5239 ndr_print_uint32(ndr, "required_buf_size", *r->out.required_buf_size);
5241 ndr_print_WERROR(ndr, "result", r->out.result);
5247 static enum ndr_err_code ndr_push_svcctl_StartServiceA(struct ndr_push *ndr, int flags, const struct svcctl_StartServiceA *r)
5249 if (flags & NDR_IN) {
5250 if (r->in.handle == NULL) {
5251 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
5253 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
5254 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.NumArgs));
5255 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.Arguments));
5256 if (r->in.Arguments) {
5257 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.Arguments, CH_UTF16)));
5258 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
5259 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.Arguments, CH_UTF16)));
5260 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.Arguments, ndr_charset_length(r->in.Arguments, CH_UTF16), sizeof(uint16_t), CH_UTF16));
5263 if (flags & NDR_OUT) {
5264 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
5266 return NDR_ERR_SUCCESS;
5269 static enum ndr_err_code ndr_pull_svcctl_StartServiceA(struct ndr_pull *ndr, int flags, struct svcctl_StartServiceA *r)
5271 uint32_t _ptr_Arguments;
5272 TALLOC_CTX *_mem_save_handle_0;
5273 TALLOC_CTX *_mem_save_Arguments_0;
5274 if (flags & NDR_IN) {
5275 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
5276 NDR_PULL_ALLOC(ndr, r->in.handle);
5278 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
5279 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
5280 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
5281 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
5282 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.NumArgs));
5283 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_Arguments));
5284 if (_ptr_Arguments) {
5285 NDR_PULL_ALLOC(ndr, r->in.Arguments);
5287 r->in.Arguments = NULL;
5289 if (r->in.Arguments) {
5290 _mem_save_Arguments_0 = NDR_PULL_GET_MEM_CTX(ndr);
5291 NDR_PULL_SET_MEM_CTX(ndr, r->in.Arguments, 0);
5292 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.Arguments));
5293 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.Arguments));
5294 if (ndr_get_array_length(ndr, &r->in.Arguments) > ndr_get_array_size(ndr, &r->in.Arguments)) {
5295 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.Arguments), ndr_get_array_length(ndr, &r->in.Arguments));
5297 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.Arguments), sizeof(uint16_t)));
5298 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.Arguments, ndr_get_array_length(ndr, &r->in.Arguments), sizeof(uint16_t), CH_UTF16));
5299 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_Arguments_0, 0);
5302 if (flags & NDR_OUT) {
5303 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
5305 return NDR_ERR_SUCCESS;
5308 _PUBLIC_ void ndr_print_svcctl_StartServiceA(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_StartServiceA *r)
5310 ndr_print_struct(ndr, name, "svcctl_StartServiceA");
5312 if (flags & NDR_SET_VALUES) {
5313 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
5315 if (flags & NDR_IN) {
5316 ndr_print_struct(ndr, "in", "svcctl_StartServiceA");
5318 ndr_print_ptr(ndr, "handle", r->in.handle);
5320 ndr_print_policy_handle(ndr, "handle", r->in.handle);
5322 ndr_print_uint32(ndr, "NumArgs", r->in.NumArgs);
5323 ndr_print_ptr(ndr, "Arguments", r->in.Arguments);
5325 if (r->in.Arguments) {
5326 ndr_print_string(ndr, "Arguments", r->in.Arguments);
5331 if (flags & NDR_OUT) {
5332 ndr_print_struct(ndr, "out", "svcctl_StartServiceA");
5334 ndr_print_WERROR(ndr, "result", r->out.result);
5340 static enum ndr_err_code ndr_push_svcctl_GetServiceDisplayNameA(struct ndr_push *ndr, int flags, const struct svcctl_GetServiceDisplayNameA *r)
5342 if (flags & NDR_IN) {
5343 if (r->in.handle == NULL) {
5344 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
5346 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
5347 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.service_name));
5348 if (r->in.service_name) {
5349 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.service_name, CH_UTF16)));
5350 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
5351 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.service_name, CH_UTF16)));
5352 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.service_name, ndr_charset_length(r->in.service_name, CH_UTF16), sizeof(uint16_t), CH_UTF16));
5354 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.display_name_length));
5355 if (r->in.display_name_length) {
5356 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->in.display_name_length));
5359 if (flags & NDR_OUT) {
5360 if (r->out.display_name == NULL) {
5361 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
5363 NDR_CHECK(ndr_push_unique_ptr(ndr, *r->out.display_name));
5364 if (*r->out.display_name) {
5365 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(*r->out.display_name, CH_UTF16)));
5366 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
5367 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(*r->out.display_name, CH_UTF16)));
5368 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, *r->out.display_name, ndr_charset_length(*r->out.display_name, CH_UTF16), sizeof(uint16_t), CH_UTF16));
5370 NDR_CHECK(ndr_push_unique_ptr(ndr, r->out.display_name_length));
5371 if (r->out.display_name_length) {
5372 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.display_name_length));
5374 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
5376 return NDR_ERR_SUCCESS;
5379 static enum ndr_err_code ndr_pull_svcctl_GetServiceDisplayNameA(struct ndr_pull *ndr, int flags, struct svcctl_GetServiceDisplayNameA *r)
5381 uint32_t _ptr_service_name;
5382 uint32_t _ptr_display_name;
5383 uint32_t _ptr_display_name_length;
5384 TALLOC_CTX *_mem_save_handle_0;
5385 TALLOC_CTX *_mem_save_service_name_0;
5386 TALLOC_CTX *_mem_save_display_name_0;
5387 TALLOC_CTX *_mem_save_display_name_1;
5388 TALLOC_CTX *_mem_save_display_name_length_0;
5389 if (flags & NDR_IN) {
5390 ZERO_STRUCT(r->out);
5392 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
5393 NDR_PULL_ALLOC(ndr, r->in.handle);
5395 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
5396 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
5397 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
5398 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
5399 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_service_name));
5400 if (_ptr_service_name) {
5401 NDR_PULL_ALLOC(ndr, r->in.service_name);
5403 r->in.service_name = NULL;
5405 if (r->in.service_name) {
5406 _mem_save_service_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
5407 NDR_PULL_SET_MEM_CTX(ndr, r->in.service_name, 0);
5408 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.service_name));
5409 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.service_name));
5410 if (ndr_get_array_length(ndr, &r->in.service_name) > ndr_get_array_size(ndr, &r->in.service_name)) {
5411 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.service_name), ndr_get_array_length(ndr, &r->in.service_name));
5413 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.service_name), sizeof(uint16_t)));
5414 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.service_name, ndr_get_array_length(ndr, &r->in.service_name), sizeof(uint16_t), CH_UTF16));
5415 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_service_name_0, 0);
5417 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_display_name_length));
5418 if (_ptr_display_name_length) {
5419 NDR_PULL_ALLOC(ndr, r->in.display_name_length);
5421 r->in.display_name_length = NULL;
5423 if (r->in.display_name_length) {
5424 _mem_save_display_name_length_0 = NDR_PULL_GET_MEM_CTX(ndr);
5425 NDR_PULL_SET_MEM_CTX(ndr, r->in.display_name_length, 0);
5426 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->in.display_name_length));
5427 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_display_name_length_0, 0);
5429 NDR_PULL_ALLOC(ndr, r->out.display_name);
5430 ZERO_STRUCTP(r->out.display_name);
5432 if (flags & NDR_OUT) {
5433 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
5434 NDR_PULL_ALLOC(ndr, r->out.display_name);
5436 _mem_save_display_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
5437 NDR_PULL_SET_MEM_CTX(ndr, r->out.display_name, LIBNDR_FLAG_REF_ALLOC);
5438 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_display_name));
5439 if (_ptr_display_name) {
5440 NDR_PULL_ALLOC(ndr, *r->out.display_name);
5442 *r->out.display_name = NULL;
5444 if (*r->out.display_name) {
5445 _mem_save_display_name_1 = NDR_PULL_GET_MEM_CTX(ndr);
5446 NDR_PULL_SET_MEM_CTX(ndr, *r->out.display_name, 0);
5447 NDR_CHECK(ndr_pull_array_size(ndr, r->out.display_name));
5448 NDR_CHECK(ndr_pull_array_length(ndr, r->out.display_name));
5449 if (ndr_get_array_length(ndr, r->out.display_name) > ndr_get_array_size(ndr, r->out.display_name)) {
5450 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.display_name), ndr_get_array_length(ndr, r->out.display_name));
5452 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, r->out.display_name), sizeof(uint16_t)));
5453 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, r->out.display_name, ndr_get_array_length(ndr, r->out.display_name), sizeof(uint16_t), CH_UTF16));
5454 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_display_name_1, 0);
5456 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_display_name_0, LIBNDR_FLAG_REF_ALLOC);
5457 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_display_name_length));
5458 if (_ptr_display_name_length) {
5459 NDR_PULL_ALLOC(ndr, r->out.display_name_length);
5461 r->out.display_name_length = NULL;
5463 if (r->out.display_name_length) {
5464 _mem_save_display_name_length_0 = NDR_PULL_GET_MEM_CTX(ndr);
5465 NDR_PULL_SET_MEM_CTX(ndr, r->out.display_name_length, 0);
5466 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.display_name_length));
5467 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_display_name_length_0, 0);
5469 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
5471 return NDR_ERR_SUCCESS;
5474 _PUBLIC_ void ndr_print_svcctl_GetServiceDisplayNameA(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_GetServiceDisplayNameA *r)
5476 ndr_print_struct(ndr, name, "svcctl_GetServiceDisplayNameA");
5478 if (flags & NDR_SET_VALUES) {
5479 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
5481 if (flags & NDR_IN) {
5482 ndr_print_struct(ndr, "in", "svcctl_GetServiceDisplayNameA");
5484 ndr_print_ptr(ndr, "handle", r->in.handle);
5486 ndr_print_policy_handle(ndr, "handle", r->in.handle);
5488 ndr_print_ptr(ndr, "service_name", r->in.service_name);
5490 if (r->in.service_name) {
5491 ndr_print_string(ndr, "service_name", r->in.service_name);
5494 ndr_print_ptr(ndr, "display_name_length", r->in.display_name_length);
5496 if (r->in.display_name_length) {
5497 ndr_print_uint32(ndr, "display_name_length", *r->in.display_name_length);
5502 if (flags & NDR_OUT) {
5503 ndr_print_struct(ndr, "out", "svcctl_GetServiceDisplayNameA");
5505 ndr_print_ptr(ndr, "display_name", r->out.display_name);
5507 ndr_print_ptr(ndr, "display_name", *r->out.display_name);
5509 if (*r->out.display_name) {
5510 ndr_print_string(ndr, "display_name", *r->out.display_name);
5514 ndr_print_ptr(ndr, "display_name_length", r->out.display_name_length);
5516 if (r->out.display_name_length) {
5517 ndr_print_uint32(ndr, "display_name_length", *r->out.display_name_length);
5520 ndr_print_WERROR(ndr, "result", r->out.result);
5526 static enum ndr_err_code ndr_push_svcctl_GetServiceKeyNameA(struct ndr_push *ndr, int flags, const struct svcctl_GetServiceKeyNameA *r)
5528 if (flags & NDR_IN) {
5529 if (r->in.handle == NULL) {
5530 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
5532 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
5533 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.service_name));
5534 if (r->in.service_name) {
5535 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.service_name, CH_UTF16)));
5536 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
5537 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.service_name, CH_UTF16)));
5538 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.service_name, ndr_charset_length(r->in.service_name, CH_UTF16), sizeof(uint16_t), CH_UTF16));
5540 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.display_name_length));
5541 if (r->in.display_name_length) {
5542 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->in.display_name_length));
5545 if (flags & NDR_OUT) {
5546 if (r->out.key_name == NULL) {
5547 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
5549 NDR_CHECK(ndr_push_unique_ptr(ndr, *r->out.key_name));
5550 if (*r->out.key_name) {
5551 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(*r->out.key_name, CH_UTF16)));
5552 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
5553 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(*r->out.key_name, CH_UTF16)));
5554 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, *r->out.key_name, ndr_charset_length(*r->out.key_name, CH_UTF16), sizeof(uint16_t), CH_UTF16));
5556 NDR_CHECK(ndr_push_unique_ptr(ndr, r->out.display_name_length));
5557 if (r->out.display_name_length) {
5558 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.display_name_length));
5560 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
5562 return NDR_ERR_SUCCESS;
5565 static enum ndr_err_code ndr_pull_svcctl_GetServiceKeyNameA(struct ndr_pull *ndr, int flags, struct svcctl_GetServiceKeyNameA *r)
5567 uint32_t _ptr_service_name;
5568 uint32_t _ptr_key_name;
5569 uint32_t _ptr_display_name_length;
5570 TALLOC_CTX *_mem_save_handle_0;
5571 TALLOC_CTX *_mem_save_service_name_0;
5572 TALLOC_CTX *_mem_save_key_name_0;
5573 TALLOC_CTX *_mem_save_key_name_1;
5574 TALLOC_CTX *_mem_save_display_name_length_0;
5575 if (flags & NDR_IN) {
5576 ZERO_STRUCT(r->out);
5578 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
5579 NDR_PULL_ALLOC(ndr, r->in.handle);
5581 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
5582 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
5583 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
5584 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
5585 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_service_name));
5586 if (_ptr_service_name) {
5587 NDR_PULL_ALLOC(ndr, r->in.service_name);
5589 r->in.service_name = NULL;
5591 if (r->in.service_name) {
5592 _mem_save_service_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
5593 NDR_PULL_SET_MEM_CTX(ndr, r->in.service_name, 0);
5594 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.service_name));
5595 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.service_name));
5596 if (ndr_get_array_length(ndr, &r->in.service_name) > ndr_get_array_size(ndr, &r->in.service_name)) {
5597 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.service_name), ndr_get_array_length(ndr, &r->in.service_name));
5599 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.service_name), sizeof(uint16_t)));
5600 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.service_name, ndr_get_array_length(ndr, &r->in.service_name), sizeof(uint16_t), CH_UTF16));
5601 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_service_name_0, 0);
5603 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_display_name_length));
5604 if (_ptr_display_name_length) {
5605 NDR_PULL_ALLOC(ndr, r->in.display_name_length);
5607 r->in.display_name_length = NULL;
5609 if (r->in.display_name_length) {
5610 _mem_save_display_name_length_0 = NDR_PULL_GET_MEM_CTX(ndr);
5611 NDR_PULL_SET_MEM_CTX(ndr, r->in.display_name_length, 0);
5612 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->in.display_name_length));
5613 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_display_name_length_0, 0);
5615 NDR_PULL_ALLOC(ndr, r->out.key_name);
5616 ZERO_STRUCTP(r->out.key_name);
5618 if (flags & NDR_OUT) {
5619 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
5620 NDR_PULL_ALLOC(ndr, r->out.key_name);
5622 _mem_save_key_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
5623 NDR_PULL_SET_MEM_CTX(ndr, r->out.key_name, LIBNDR_FLAG_REF_ALLOC);
5624 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_key_name));
5625 if (_ptr_key_name) {
5626 NDR_PULL_ALLOC(ndr, *r->out.key_name);
5628 *r->out.key_name = NULL;
5630 if (*r->out.key_name) {
5631 _mem_save_key_name_1 = NDR_PULL_GET_MEM_CTX(ndr);
5632 NDR_PULL_SET_MEM_CTX(ndr, *r->out.key_name, 0);
5633 NDR_CHECK(ndr_pull_array_size(ndr, r->out.key_name));
5634 NDR_CHECK(ndr_pull_array_length(ndr, r->out.key_name));
5635 if (ndr_get_array_length(ndr, r->out.key_name) > ndr_get_array_size(ndr, r->out.key_name)) {
5636 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.key_name), ndr_get_array_length(ndr, r->out.key_name));
5638 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, r->out.key_name), sizeof(uint16_t)));
5639 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, r->out.key_name, ndr_get_array_length(ndr, r->out.key_name), sizeof(uint16_t), CH_UTF16));
5640 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_key_name_1, 0);
5642 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_key_name_0, LIBNDR_FLAG_REF_ALLOC);
5643 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_display_name_length));
5644 if (_ptr_display_name_length) {
5645 NDR_PULL_ALLOC(ndr, r->out.display_name_length);
5647 r->out.display_name_length = NULL;
5649 if (r->out.display_name_length) {
5650 _mem_save_display_name_length_0 = NDR_PULL_GET_MEM_CTX(ndr);
5651 NDR_PULL_SET_MEM_CTX(ndr, r->out.display_name_length, 0);
5652 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.display_name_length));
5653 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_display_name_length_0, 0);
5655 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
5657 return NDR_ERR_SUCCESS;
5660 _PUBLIC_ void ndr_print_svcctl_GetServiceKeyNameA(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_GetServiceKeyNameA *r)
5662 ndr_print_struct(ndr, name, "svcctl_GetServiceKeyNameA");
5664 if (flags & NDR_SET_VALUES) {
5665 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
5667 if (flags & NDR_IN) {
5668 ndr_print_struct(ndr, "in", "svcctl_GetServiceKeyNameA");
5670 ndr_print_ptr(ndr, "handle", r->in.handle);
5672 ndr_print_policy_handle(ndr, "handle", r->in.handle);
5674 ndr_print_ptr(ndr, "service_name", r->in.service_name);
5676 if (r->in.service_name) {
5677 ndr_print_string(ndr, "service_name", r->in.service_name);
5680 ndr_print_ptr(ndr, "display_name_length", r->in.display_name_length);
5682 if (r->in.display_name_length) {
5683 ndr_print_uint32(ndr, "display_name_length", *r->in.display_name_length);
5688 if (flags & NDR_OUT) {
5689 ndr_print_struct(ndr, "out", "svcctl_GetServiceKeyNameA");
5691 ndr_print_ptr(ndr, "key_name", r->out.key_name);
5693 ndr_print_ptr(ndr, "key_name", *r->out.key_name);
5695 if (*r->out.key_name) {
5696 ndr_print_string(ndr, "key_name", *r->out.key_name);
5700 ndr_print_ptr(ndr, "display_name_length", r->out.display_name_length);
5702 if (r->out.display_name_length) {
5703 ndr_print_uint32(ndr, "display_name_length", *r->out.display_name_length);
5706 ndr_print_WERROR(ndr, "result", r->out.result);
5712 static enum ndr_err_code ndr_push_svcctl_GetCurrentGroupeStateW(struct ndr_push *ndr, int flags, const struct svcctl_GetCurrentGroupeStateW *r)
5714 if (flags & NDR_IN) {
5716 if (flags & NDR_OUT) {
5717 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
5719 return NDR_ERR_SUCCESS;
5722 static enum ndr_err_code ndr_pull_svcctl_GetCurrentGroupeStateW(struct ndr_pull *ndr, int flags, struct svcctl_GetCurrentGroupeStateW *r)
5724 if (flags & NDR_IN) {
5726 if (flags & NDR_OUT) {
5727 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
5729 return NDR_ERR_SUCCESS;
5732 _PUBLIC_ void ndr_print_svcctl_GetCurrentGroupeStateW(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_GetCurrentGroupeStateW *r)
5734 ndr_print_struct(ndr, name, "svcctl_GetCurrentGroupeStateW");
5736 if (flags & NDR_SET_VALUES) {
5737 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
5739 if (flags & NDR_IN) {
5740 ndr_print_struct(ndr, "in", "svcctl_GetCurrentGroupeStateW");
5744 if (flags & NDR_OUT) {
5745 ndr_print_struct(ndr, "out", "svcctl_GetCurrentGroupeStateW");
5747 ndr_print_WERROR(ndr, "result", r->out.result);
5753 static enum ndr_err_code ndr_push_svcctl_EnumServiceGroupW(struct ndr_push *ndr, int flags, const struct svcctl_EnumServiceGroupW *r)
5755 if (flags & NDR_IN) {
5757 if (flags & NDR_OUT) {
5758 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
5760 return NDR_ERR_SUCCESS;
5763 static enum ndr_err_code ndr_pull_svcctl_EnumServiceGroupW(struct ndr_pull *ndr, int flags, struct svcctl_EnumServiceGroupW *r)
5765 if (flags & NDR_IN) {
5767 if (flags & NDR_OUT) {
5768 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
5770 return NDR_ERR_SUCCESS;
5773 _PUBLIC_ void ndr_print_svcctl_EnumServiceGroupW(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_EnumServiceGroupW *r)
5775 ndr_print_struct(ndr, name, "svcctl_EnumServiceGroupW");
5777 if (flags & NDR_SET_VALUES) {
5778 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
5780 if (flags & NDR_IN) {
5781 ndr_print_struct(ndr, "in", "svcctl_EnumServiceGroupW");
5785 if (flags & NDR_OUT) {
5786 ndr_print_struct(ndr, "out", "svcctl_EnumServiceGroupW");
5788 ndr_print_WERROR(ndr, "result", r->out.result);
5794 static enum ndr_err_code ndr_push_svcctl_ChangeServiceConfig2A(struct ndr_push *ndr, int flags, const struct svcctl_ChangeServiceConfig2A *r)
5796 if (flags & NDR_IN) {
5797 if (r->in.handle == NULL) {
5798 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
5800 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
5801 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.info_level));
5802 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.info));
5804 NDR_CHECK(ndr_push_uint8(ndr, NDR_SCALARS, *r->in.info));
5807 if (flags & NDR_OUT) {
5808 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
5810 return NDR_ERR_SUCCESS;
5813 static enum ndr_err_code ndr_pull_svcctl_ChangeServiceConfig2A(struct ndr_pull *ndr, int flags, struct svcctl_ChangeServiceConfig2A *r)
5816 TALLOC_CTX *_mem_save_handle_0;
5817 TALLOC_CTX *_mem_save_info_0;
5818 if (flags & NDR_IN) {
5819 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
5820 NDR_PULL_ALLOC(ndr, r->in.handle);
5822 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
5823 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
5824 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
5825 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
5826 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.info_level));
5827 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_info));
5829 NDR_PULL_ALLOC(ndr, r->in.info);
5834 _mem_save_info_0 = NDR_PULL_GET_MEM_CTX(ndr);
5835 NDR_PULL_SET_MEM_CTX(ndr, r->in.info, 0);
5836 NDR_CHECK(ndr_pull_uint8(ndr, NDR_SCALARS, r->in.info));
5837 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_info_0, 0);
5840 if (flags & NDR_OUT) {
5841 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
5843 return NDR_ERR_SUCCESS;
5846 _PUBLIC_ void ndr_print_svcctl_ChangeServiceConfig2A(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_ChangeServiceConfig2A *r)
5848 ndr_print_struct(ndr, name, "svcctl_ChangeServiceConfig2A");
5850 if (flags & NDR_SET_VALUES) {
5851 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
5853 if (flags & NDR_IN) {
5854 ndr_print_struct(ndr, "in", "svcctl_ChangeServiceConfig2A");
5856 ndr_print_ptr(ndr, "handle", r->in.handle);
5858 ndr_print_policy_handle(ndr, "handle", r->in.handle);
5860 ndr_print_uint32(ndr, "info_level", r->in.info_level);
5861 ndr_print_ptr(ndr, "info", r->in.info);
5864 ndr_print_uint8(ndr, "info", *r->in.info);
5869 if (flags & NDR_OUT) {
5870 ndr_print_struct(ndr, "out", "svcctl_ChangeServiceConfig2A");
5872 ndr_print_WERROR(ndr, "result", r->out.result);
5878 static enum ndr_err_code ndr_push_svcctl_ChangeServiceConfig2W(struct ndr_push *ndr, int flags, const struct svcctl_ChangeServiceConfig2W *r)
5880 if (flags & NDR_IN) {
5881 if (r->in.handle == NULL) {
5882 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
5884 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
5885 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.info_level));
5886 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.info));
5888 NDR_CHECK(ndr_push_uint8(ndr, NDR_SCALARS, *r->in.info));
5891 if (flags & NDR_OUT) {
5892 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
5894 return NDR_ERR_SUCCESS;
5897 static enum ndr_err_code ndr_pull_svcctl_ChangeServiceConfig2W(struct ndr_pull *ndr, int flags, struct svcctl_ChangeServiceConfig2W *r)
5900 TALLOC_CTX *_mem_save_handle_0;
5901 TALLOC_CTX *_mem_save_info_0;
5902 if (flags & NDR_IN) {
5903 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
5904 NDR_PULL_ALLOC(ndr, r->in.handle);
5906 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
5907 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
5908 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
5909 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
5910 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.info_level));
5911 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_info));
5913 NDR_PULL_ALLOC(ndr, r->in.info);
5918 _mem_save_info_0 = NDR_PULL_GET_MEM_CTX(ndr);
5919 NDR_PULL_SET_MEM_CTX(ndr, r->in.info, 0);
5920 NDR_CHECK(ndr_pull_uint8(ndr, NDR_SCALARS, r->in.info));
5921 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_info_0, 0);
5924 if (flags & NDR_OUT) {
5925 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
5927 return NDR_ERR_SUCCESS;
5930 _PUBLIC_ void ndr_print_svcctl_ChangeServiceConfig2W(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_ChangeServiceConfig2W *r)
5932 ndr_print_struct(ndr, name, "svcctl_ChangeServiceConfig2W");
5934 if (flags & NDR_SET_VALUES) {
5935 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
5937 if (flags & NDR_IN) {
5938 ndr_print_struct(ndr, "in", "svcctl_ChangeServiceConfig2W");
5940 ndr_print_ptr(ndr, "handle", r->in.handle);
5942 ndr_print_policy_handle(ndr, "handle", r->in.handle);
5944 ndr_print_uint32(ndr, "info_level", r->in.info_level);
5945 ndr_print_ptr(ndr, "info", r->in.info);
5948 ndr_print_uint8(ndr, "info", *r->in.info);
5953 if (flags & NDR_OUT) {
5954 ndr_print_struct(ndr, "out", "svcctl_ChangeServiceConfig2W");
5956 ndr_print_WERROR(ndr, "result", r->out.result);
5962 static enum ndr_err_code ndr_push_svcctl_QueryServiceConfig2A(struct ndr_push *ndr, int flags, const struct svcctl_QueryServiceConfig2A *r)
5964 if (flags & NDR_IN) {
5965 if (r->in.handle == NULL) {
5966 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
5968 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
5969 NDR_CHECK(ndr_push_svcctl_ConfigLevel(ndr, NDR_SCALARS, r->in.info_level));
5970 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.buf_size));
5972 if (flags & NDR_OUT) {
5973 NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->out.buffer, r->in.buf_size));
5974 if (r->out.bytes_needed == NULL) {
5975 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
5977 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.bytes_needed));
5978 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
5980 return NDR_ERR_SUCCESS;
5983 static enum ndr_err_code ndr_pull_svcctl_QueryServiceConfig2A(struct ndr_pull *ndr, int flags, struct svcctl_QueryServiceConfig2A *r)
5985 TALLOC_CTX *_mem_save_handle_0;
5986 TALLOC_CTX *_mem_save_bytes_needed_0;
5987 if (flags & NDR_IN) {
5988 ZERO_STRUCT(r->out);
5990 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
5991 NDR_PULL_ALLOC(ndr, r->in.handle);
5993 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
5994 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
5995 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
5996 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
5997 NDR_CHECK(ndr_pull_svcctl_ConfigLevel(ndr, NDR_SCALARS, &r->in.info_level));
5998 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.buf_size));
5999 NDR_PULL_ALLOC(ndr, r->out.bytes_needed);
6000 ZERO_STRUCTP(r->out.bytes_needed);
6002 if (flags & NDR_OUT) {
6003 NDR_PULL_ALLOC_N(ndr, r->out.buffer, r->in.buf_size);
6004 NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->out.buffer, r->in.buf_size));
6005 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
6006 NDR_PULL_ALLOC(ndr, r->out.bytes_needed);
6008 _mem_save_bytes_needed_0 = NDR_PULL_GET_MEM_CTX(ndr);
6009 NDR_PULL_SET_MEM_CTX(ndr, r->out.bytes_needed, LIBNDR_FLAG_REF_ALLOC);
6010 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.bytes_needed));
6011 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_bytes_needed_0, LIBNDR_FLAG_REF_ALLOC);
6012 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
6014 return NDR_ERR_SUCCESS;
6017 _PUBLIC_ void ndr_print_svcctl_QueryServiceConfig2A(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_QueryServiceConfig2A *r)
6019 ndr_print_struct(ndr, name, "svcctl_QueryServiceConfig2A");
6021 if (flags & NDR_SET_VALUES) {
6022 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
6024 if (flags & NDR_IN) {
6025 ndr_print_struct(ndr, "in", "svcctl_QueryServiceConfig2A");
6027 ndr_print_ptr(ndr, "handle", r->in.handle);
6029 ndr_print_policy_handle(ndr, "handle", r->in.handle);
6031 ndr_print_svcctl_ConfigLevel(ndr, "info_level", r->in.info_level);
6032 ndr_print_uint32(ndr, "buf_size", r->in.buf_size);
6035 if (flags & NDR_OUT) {
6036 ndr_print_struct(ndr, "out", "svcctl_QueryServiceConfig2A");
6038 ndr_print_array_uint8(ndr, "buffer", r->out.buffer, r->in.buf_size);
6039 ndr_print_ptr(ndr, "bytes_needed", r->out.bytes_needed);
6041 ndr_print_uint32(ndr, "bytes_needed", *r->out.bytes_needed);
6043 ndr_print_WERROR(ndr, "result", r->out.result);
6049 static enum ndr_err_code ndr_push_svcctl_QueryServiceConfig2W(struct ndr_push *ndr, int flags, const struct svcctl_QueryServiceConfig2W *r)
6051 if (flags & NDR_IN) {
6052 if (r->in.handle == NULL) {
6053 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
6055 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
6056 NDR_CHECK(ndr_push_svcctl_ConfigLevel(ndr, NDR_SCALARS, r->in.info_level));
6057 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.buf_size));
6059 if (flags & NDR_OUT) {
6060 if (r->out.buffer == NULL) {
6061 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
6063 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.buf_size));
6064 NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->out.buffer, r->in.buf_size));
6065 if (r->out.bytes_needed == NULL) {
6066 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
6068 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.bytes_needed));
6069 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
6071 return NDR_ERR_SUCCESS;
6074 static enum ndr_err_code ndr_pull_svcctl_QueryServiceConfig2W(struct ndr_pull *ndr, int flags, struct svcctl_QueryServiceConfig2W *r)
6076 TALLOC_CTX *_mem_save_handle_0;
6077 TALLOC_CTX *_mem_save_bytes_needed_0;
6078 if (flags & NDR_IN) {
6079 ZERO_STRUCT(r->out);
6081 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
6082 NDR_PULL_ALLOC(ndr, r->in.handle);
6084 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
6085 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
6086 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
6087 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
6088 NDR_CHECK(ndr_pull_svcctl_ConfigLevel(ndr, NDR_SCALARS, &r->in.info_level));
6089 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.buf_size));
6090 if (r->in.buf_size > 8192) {
6091 return ndr_pull_error(ndr, NDR_ERR_RANGE, "value out of range");
6093 NDR_PULL_ALLOC_N(ndr, r->out.buffer, r->in.buf_size);
6094 memset(CONST_DISCARD(struct svcctl_QueryServiceConfig2W *,r->out.buffer), 0, (r->in.buf_size) * sizeof(*r->out.buffer));
6095 NDR_PULL_ALLOC(ndr, r->out.bytes_needed);
6096 ZERO_STRUCTP(r->out.bytes_needed);
6098 if (flags & NDR_OUT) {
6099 NDR_CHECK(ndr_pull_array_size(ndr, &r->out.buffer));
6100 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
6101 NDR_PULL_ALLOC_N(ndr, r->out.buffer, ndr_get_array_size(ndr, &r->out.buffer));
6103 NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->out.buffer, ndr_get_array_size(ndr, &r->out.buffer)));
6104 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
6105 NDR_PULL_ALLOC(ndr, r->out.bytes_needed);
6107 _mem_save_bytes_needed_0 = NDR_PULL_GET_MEM_CTX(ndr);
6108 NDR_PULL_SET_MEM_CTX(ndr, r->out.bytes_needed, LIBNDR_FLAG_REF_ALLOC);
6109 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.bytes_needed));
6110 if (*r->out.bytes_needed > 8192) {
6111 return ndr_pull_error(ndr, NDR_ERR_RANGE, "value out of range");
6113 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_bytes_needed_0, LIBNDR_FLAG_REF_ALLOC);
6114 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
6115 if (r->out.buffer) {
6116 NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->out.buffer, r->in.buf_size));
6119 return NDR_ERR_SUCCESS;
6122 _PUBLIC_ void ndr_print_svcctl_QueryServiceConfig2W(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_QueryServiceConfig2W *r)
6124 ndr_print_struct(ndr, name, "svcctl_QueryServiceConfig2W");
6126 if (flags & NDR_SET_VALUES) {
6127 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
6129 if (flags & NDR_IN) {
6130 ndr_print_struct(ndr, "in", "svcctl_QueryServiceConfig2W");
6132 ndr_print_ptr(ndr, "handle", r->in.handle);
6134 ndr_print_policy_handle(ndr, "handle", r->in.handle);
6136 ndr_print_svcctl_ConfigLevel(ndr, "info_level", r->in.info_level);
6137 ndr_print_uint32(ndr, "buf_size", r->in.buf_size);
6140 if (flags & NDR_OUT) {
6141 ndr_print_struct(ndr, "out", "svcctl_QueryServiceConfig2W");
6143 ndr_print_ptr(ndr, "buffer", r->out.buffer);
6145 ndr_print_array_uint8(ndr, "buffer", r->out.buffer, r->in.buf_size);
6147 ndr_print_ptr(ndr, "bytes_needed", r->out.bytes_needed);
6149 ndr_print_uint32(ndr, "bytes_needed", *r->out.bytes_needed);
6151 ndr_print_WERROR(ndr, "result", r->out.result);
6157 static enum ndr_err_code ndr_push_svcctl_QueryServiceStatusEx(struct ndr_push *ndr, int flags, const struct svcctl_QueryServiceStatusEx *r)
6159 if (flags & NDR_IN) {
6160 if (r->in.handle == NULL) {
6161 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
6163 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
6164 NDR_CHECK(ndr_push_svcctl_StatusLevel(ndr, NDR_SCALARS, r->in.info_level));
6165 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.buf_size));
6167 if (flags & NDR_OUT) {
6168 if (r->out.buffer == NULL) {
6169 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
6171 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.buf_size));
6172 NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->out.buffer, r->in.buf_size));
6173 if (r->out.bytes_needed == NULL) {
6174 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
6176 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.bytes_needed));
6177 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
6179 return NDR_ERR_SUCCESS;
6182 static enum ndr_err_code ndr_pull_svcctl_QueryServiceStatusEx(struct ndr_pull *ndr, int flags, struct svcctl_QueryServiceStatusEx *r)
6184 TALLOC_CTX *_mem_save_handle_0;
6185 TALLOC_CTX *_mem_save_bytes_needed_0;
6186 if (flags & NDR_IN) {
6187 ZERO_STRUCT(r->out);
6189 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
6190 NDR_PULL_ALLOC(ndr, r->in.handle);
6192 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
6193 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
6194 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
6195 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
6196 NDR_CHECK(ndr_pull_svcctl_StatusLevel(ndr, NDR_SCALARS, &r->in.info_level));
6197 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.buf_size));
6198 if (r->in.buf_size > 8192) {
6199 return ndr_pull_error(ndr, NDR_ERR_RANGE, "value out of range");
6201 NDR_PULL_ALLOC_N(ndr, r->out.buffer, r->in.buf_size);
6202 memset(CONST_DISCARD(struct svcctl_QueryServiceStatusEx *,r->out.buffer), 0, (r->in.buf_size) * sizeof(*r->out.buffer));
6203 NDR_PULL_ALLOC(ndr, r->out.bytes_needed);
6204 ZERO_STRUCTP(r->out.bytes_needed);
6206 if (flags & NDR_OUT) {
6207 NDR_CHECK(ndr_pull_array_size(ndr, &r->out.buffer));
6208 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
6209 NDR_PULL_ALLOC_N(ndr, r->out.buffer, ndr_get_array_size(ndr, &r->out.buffer));
6211 NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->out.buffer, ndr_get_array_size(ndr, &r->out.buffer)));
6212 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
6213 NDR_PULL_ALLOC(ndr, r->out.bytes_needed);
6215 _mem_save_bytes_needed_0 = NDR_PULL_GET_MEM_CTX(ndr);
6216 NDR_PULL_SET_MEM_CTX(ndr, r->out.bytes_needed, LIBNDR_FLAG_REF_ALLOC);
6217 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.bytes_needed));
6218 if (*r->out.bytes_needed > 8192) {
6219 return ndr_pull_error(ndr, NDR_ERR_RANGE, "value out of range");
6221 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_bytes_needed_0, LIBNDR_FLAG_REF_ALLOC);
6222 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
6223 if (r->out.buffer) {
6224 NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->out.buffer, r->in.buf_size));
6227 return NDR_ERR_SUCCESS;
6230 _PUBLIC_ void ndr_print_svcctl_QueryServiceStatusEx(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_QueryServiceStatusEx *r)
6232 ndr_print_struct(ndr, name, "svcctl_QueryServiceStatusEx");
6234 if (flags & NDR_SET_VALUES) {
6235 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
6237 if (flags & NDR_IN) {
6238 ndr_print_struct(ndr, "in", "svcctl_QueryServiceStatusEx");
6240 ndr_print_ptr(ndr, "handle", r->in.handle);
6242 ndr_print_policy_handle(ndr, "handle", r->in.handle);
6244 ndr_print_svcctl_StatusLevel(ndr, "info_level", r->in.info_level);
6245 ndr_print_uint32(ndr, "buf_size", r->in.buf_size);
6248 if (flags & NDR_OUT) {
6249 ndr_print_struct(ndr, "out", "svcctl_QueryServiceStatusEx");
6251 ndr_print_ptr(ndr, "buffer", r->out.buffer);
6253 ndr_print_array_uint8(ndr, "buffer", r->out.buffer, r->in.buf_size);
6255 ndr_print_ptr(ndr, "bytes_needed", r->out.bytes_needed);
6257 ndr_print_uint32(ndr, "bytes_needed", *r->out.bytes_needed);
6259 ndr_print_WERROR(ndr, "result", r->out.result);
6265 static enum ndr_err_code ndr_push_EnumServicesStatusExA(struct ndr_push *ndr, int flags, const struct EnumServicesStatusExA *r)
6267 if (flags & NDR_IN) {
6268 if (r->in.scmanager == NULL) {
6269 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
6271 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.scmanager));
6272 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.info_level));
6273 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.type));
6274 NDR_CHECK(ndr_push_svcctl_ServiceState(ndr, NDR_SCALARS, r->in.state));
6275 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.buf_size));
6276 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.resume_handle));
6277 if (r->in.resume_handle) {
6278 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->in.resume_handle));
6281 if (flags & NDR_OUT) {
6282 NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->out.services, r->in.buf_size));
6283 if (r->out.bytes_needed == NULL) {
6284 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
6286 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.bytes_needed));
6287 if (r->out.service_returned == NULL) {
6288 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
6290 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.service_returned));
6291 NDR_CHECK(ndr_push_unique_ptr(ndr, r->out.resume_handle));
6292 if (r->out.resume_handle) {
6293 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.resume_handle));
6295 if (r->out.group_name == NULL) {
6296 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
6298 NDR_CHECK(ndr_push_unique_ptr(ndr, *r->out.group_name));
6299 if (*r->out.group_name) {
6300 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(*r->out.group_name, CH_UTF16)));
6301 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
6302 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(*r->out.group_name, CH_UTF16)));
6303 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, *r->out.group_name, ndr_charset_length(*r->out.group_name, CH_UTF16), sizeof(uint16_t), CH_UTF16));
6305 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
6307 return NDR_ERR_SUCCESS;
6310 static enum ndr_err_code ndr_pull_EnumServicesStatusExA(struct ndr_pull *ndr, int flags, struct EnumServicesStatusExA *r)
6312 uint32_t _ptr_resume_handle;
6313 uint32_t _ptr_group_name;
6314 TALLOC_CTX *_mem_save_scmanager_0;
6315 TALLOC_CTX *_mem_save_bytes_needed_0;
6316 TALLOC_CTX *_mem_save_service_returned_0;
6317 TALLOC_CTX *_mem_save_resume_handle_0;
6318 TALLOC_CTX *_mem_save_group_name_0;
6319 TALLOC_CTX *_mem_save_group_name_1;
6320 if (flags & NDR_IN) {
6321 ZERO_STRUCT(r->out);
6323 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
6324 NDR_PULL_ALLOC(ndr, r->in.scmanager);
6326 _mem_save_scmanager_0 = NDR_PULL_GET_MEM_CTX(ndr);
6327 NDR_PULL_SET_MEM_CTX(ndr, r->in.scmanager, LIBNDR_FLAG_REF_ALLOC);
6328 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.scmanager));
6329 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_scmanager_0, LIBNDR_FLAG_REF_ALLOC);
6330 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.info_level));
6331 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.type));
6332 NDR_CHECK(ndr_pull_svcctl_ServiceState(ndr, NDR_SCALARS, &r->in.state));
6333 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.buf_size));
6334 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_resume_handle));
6335 if (_ptr_resume_handle) {
6336 NDR_PULL_ALLOC(ndr, r->in.resume_handle);
6338 r->in.resume_handle = NULL;
6340 if (r->in.resume_handle) {
6341 _mem_save_resume_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
6342 NDR_PULL_SET_MEM_CTX(ndr, r->in.resume_handle, 0);
6343 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->in.resume_handle));
6344 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_resume_handle_0, 0);
6346 NDR_PULL_ALLOC(ndr, r->out.bytes_needed);
6347 ZERO_STRUCTP(r->out.bytes_needed);
6348 NDR_PULL_ALLOC(ndr, r->out.service_returned);
6349 ZERO_STRUCTP(r->out.service_returned);
6350 NDR_PULL_ALLOC(ndr, r->out.group_name);
6351 ZERO_STRUCTP(r->out.group_name);
6353 if (flags & NDR_OUT) {
6354 NDR_PULL_ALLOC_N(ndr, r->out.services, r->in.buf_size);
6355 NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->out.services, r->in.buf_size));
6356 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
6357 NDR_PULL_ALLOC(ndr, r->out.bytes_needed);
6359 _mem_save_bytes_needed_0 = NDR_PULL_GET_MEM_CTX(ndr);
6360 NDR_PULL_SET_MEM_CTX(ndr, r->out.bytes_needed, LIBNDR_FLAG_REF_ALLOC);
6361 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.bytes_needed));
6362 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_bytes_needed_0, LIBNDR_FLAG_REF_ALLOC);
6363 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
6364 NDR_PULL_ALLOC(ndr, r->out.service_returned);
6366 _mem_save_service_returned_0 = NDR_PULL_GET_MEM_CTX(ndr);
6367 NDR_PULL_SET_MEM_CTX(ndr, r->out.service_returned, LIBNDR_FLAG_REF_ALLOC);
6368 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.service_returned));
6369 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_service_returned_0, LIBNDR_FLAG_REF_ALLOC);
6370 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_resume_handle));
6371 if (_ptr_resume_handle) {
6372 NDR_PULL_ALLOC(ndr, r->out.resume_handle);
6374 r->out.resume_handle = NULL;
6376 if (r->out.resume_handle) {
6377 _mem_save_resume_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
6378 NDR_PULL_SET_MEM_CTX(ndr, r->out.resume_handle, 0);
6379 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.resume_handle));
6380 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_resume_handle_0, 0);
6382 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
6383 NDR_PULL_ALLOC(ndr, r->out.group_name);
6385 _mem_save_group_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
6386 NDR_PULL_SET_MEM_CTX(ndr, r->out.group_name, LIBNDR_FLAG_REF_ALLOC);
6387 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_group_name));
6388 if (_ptr_group_name) {
6389 NDR_PULL_ALLOC(ndr, *r->out.group_name);
6391 *r->out.group_name = NULL;
6393 if (*r->out.group_name) {
6394 _mem_save_group_name_1 = NDR_PULL_GET_MEM_CTX(ndr);
6395 NDR_PULL_SET_MEM_CTX(ndr, *r->out.group_name, 0);
6396 NDR_CHECK(ndr_pull_array_size(ndr, r->out.group_name));
6397 NDR_CHECK(ndr_pull_array_length(ndr, r->out.group_name));
6398 if (ndr_get_array_length(ndr, r->out.group_name) > ndr_get_array_size(ndr, r->out.group_name)) {
6399 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.group_name), ndr_get_array_length(ndr, r->out.group_name));
6401 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, r->out.group_name), sizeof(uint16_t)));
6402 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, r->out.group_name, ndr_get_array_length(ndr, r->out.group_name), sizeof(uint16_t), CH_UTF16));
6403 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_group_name_1, 0);
6405 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_group_name_0, LIBNDR_FLAG_REF_ALLOC);
6406 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
6408 return NDR_ERR_SUCCESS;
6411 _PUBLIC_ void ndr_print_EnumServicesStatusExA(struct ndr_print *ndr, const char *name, int flags, const struct EnumServicesStatusExA *r)
6413 ndr_print_struct(ndr, name, "EnumServicesStatusExA");
6415 if (flags & NDR_SET_VALUES) {
6416 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
6418 if (flags & NDR_IN) {
6419 ndr_print_struct(ndr, "in", "EnumServicesStatusExA");
6421 ndr_print_ptr(ndr, "scmanager", r->in.scmanager);
6423 ndr_print_policy_handle(ndr, "scmanager", r->in.scmanager);
6425 ndr_print_uint32(ndr, "info_level", r->in.info_level);
6426 ndr_print_uint32(ndr, "type", r->in.type);
6427 ndr_print_svcctl_ServiceState(ndr, "state", r->in.state);
6428 ndr_print_uint32(ndr, "buf_size", r->in.buf_size);
6429 ndr_print_ptr(ndr, "resume_handle", r->in.resume_handle);
6431 if (r->in.resume_handle) {
6432 ndr_print_uint32(ndr, "resume_handle", *r->in.resume_handle);
6437 if (flags & NDR_OUT) {
6438 ndr_print_struct(ndr, "out", "EnumServicesStatusExA");
6440 ndr_print_array_uint8(ndr, "services", r->out.services, r->in.buf_size);
6441 ndr_print_ptr(ndr, "bytes_needed", r->out.bytes_needed);
6443 ndr_print_uint32(ndr, "bytes_needed", *r->out.bytes_needed);
6445 ndr_print_ptr(ndr, "service_returned", r->out.service_returned);
6447 ndr_print_uint32(ndr, "service_returned", *r->out.service_returned);
6449 ndr_print_ptr(ndr, "resume_handle", r->out.resume_handle);
6451 if (r->out.resume_handle) {
6452 ndr_print_uint32(ndr, "resume_handle", *r->out.resume_handle);
6455 ndr_print_ptr(ndr, "group_name", r->out.group_name);
6457 ndr_print_ptr(ndr, "group_name", *r->out.group_name);
6459 if (*r->out.group_name) {
6460 ndr_print_string(ndr, "group_name", *r->out.group_name);
6464 ndr_print_WERROR(ndr, "result", r->out.result);
6470 static enum ndr_err_code ndr_push_EnumServicesStatusExW(struct ndr_push *ndr, int flags, const struct EnumServicesStatusExW *r)
6472 if (flags & NDR_IN) {
6473 if (r->in.scmanager == NULL) {
6474 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
6476 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.scmanager));
6477 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.info_level));
6478 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.type));
6479 NDR_CHECK(ndr_push_svcctl_ServiceState(ndr, NDR_SCALARS, r->in.state));
6480 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.buf_size));
6481 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.resume_handle));
6482 if (r->in.resume_handle) {
6483 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->in.resume_handle));
6485 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.group_name));
6486 if (r->in.group_name) {
6487 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.group_name, CH_UTF16)));
6488 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
6489 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.group_name, CH_UTF16)));
6490 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.group_name, ndr_charset_length(r->in.group_name, CH_UTF16), sizeof(uint16_t), CH_UTF16));
6493 if (flags & NDR_OUT) {
6494 if (r->out.services == NULL) {
6495 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
6497 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.buf_size));
6498 NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->out.services, r->in.buf_size));
6499 if (r->out.bytes_needed == NULL) {
6500 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
6502 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.bytes_needed));
6503 if (r->out.service_returned == NULL) {
6504 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
6506 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.service_returned));
6507 NDR_CHECK(ndr_push_unique_ptr(ndr, r->out.resume_handle));
6508 if (r->out.resume_handle) {
6509 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.resume_handle));
6511 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
6513 return NDR_ERR_SUCCESS;
6516 static enum ndr_err_code ndr_pull_EnumServicesStatusExW(struct ndr_pull *ndr, int flags, struct EnumServicesStatusExW *r)
6518 uint32_t _ptr_resume_handle;
6519 uint32_t _ptr_group_name;
6520 TALLOC_CTX *_mem_save_scmanager_0;
6521 TALLOC_CTX *_mem_save_bytes_needed_0;
6522 TALLOC_CTX *_mem_save_service_returned_0;
6523 TALLOC_CTX *_mem_save_resume_handle_0;
6524 TALLOC_CTX *_mem_save_group_name_0;
6525 if (flags & NDR_IN) {
6526 ZERO_STRUCT(r->out);
6528 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
6529 NDR_PULL_ALLOC(ndr, r->in.scmanager);
6531 _mem_save_scmanager_0 = NDR_PULL_GET_MEM_CTX(ndr);
6532 NDR_PULL_SET_MEM_CTX(ndr, r->in.scmanager, LIBNDR_FLAG_REF_ALLOC);
6533 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.scmanager));
6534 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_scmanager_0, LIBNDR_FLAG_REF_ALLOC);
6535 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.info_level));
6536 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.type));
6537 NDR_CHECK(ndr_pull_svcctl_ServiceState(ndr, NDR_SCALARS, &r->in.state));
6538 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.buf_size));
6539 if (r->in.buf_size > 0x40000) {
6540 return ndr_pull_error(ndr, NDR_ERR_RANGE, "value out of range");
6542 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_resume_handle));
6543 if (_ptr_resume_handle) {
6544 NDR_PULL_ALLOC(ndr, r->in.resume_handle);
6546 r->in.resume_handle = NULL;
6548 if (r->in.resume_handle) {
6549 _mem_save_resume_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
6550 NDR_PULL_SET_MEM_CTX(ndr, r->in.resume_handle, 0);
6551 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->in.resume_handle));
6552 if (*r->in.resume_handle > 0x40000) {
6553 return ndr_pull_error(ndr, NDR_ERR_RANGE, "value out of range");
6555 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_resume_handle_0, 0);
6557 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_group_name));
6558 if (_ptr_group_name) {
6559 NDR_PULL_ALLOC(ndr, r->in.group_name);
6561 r->in.group_name = NULL;
6563 if (r->in.group_name) {
6564 _mem_save_group_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
6565 NDR_PULL_SET_MEM_CTX(ndr, r->in.group_name, 0);
6566 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.group_name));
6567 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.group_name));
6568 if (ndr_get_array_length(ndr, &r->in.group_name) > ndr_get_array_size(ndr, &r->in.group_name)) {
6569 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.group_name), ndr_get_array_length(ndr, &r->in.group_name));
6571 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.group_name), sizeof(uint16_t)));
6572 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.group_name, ndr_get_array_length(ndr, &r->in.group_name), sizeof(uint16_t), CH_UTF16));
6573 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_group_name_0, 0);
6575 NDR_PULL_ALLOC_N(ndr, r->out.services, r->in.buf_size);
6576 memset(CONST_DISCARD(struct EnumServicesStatusExW *,r->out.services), 0, (r->in.buf_size) * sizeof(*r->out.services));
6577 NDR_PULL_ALLOC(ndr, r->out.bytes_needed);
6578 ZERO_STRUCTP(r->out.bytes_needed);
6579 NDR_PULL_ALLOC(ndr, r->out.service_returned);
6580 ZERO_STRUCTP(r->out.service_returned);
6582 if (flags & NDR_OUT) {
6583 NDR_CHECK(ndr_pull_array_size(ndr, &r->out.services));
6584 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
6585 NDR_PULL_ALLOC_N(ndr, r->out.services, ndr_get_array_size(ndr, &r->out.services));
6587 NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->out.services, ndr_get_array_size(ndr, &r->out.services)));
6588 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
6589 NDR_PULL_ALLOC(ndr, r->out.bytes_needed);
6591 _mem_save_bytes_needed_0 = NDR_PULL_GET_MEM_CTX(ndr);
6592 NDR_PULL_SET_MEM_CTX(ndr, r->out.bytes_needed, LIBNDR_FLAG_REF_ALLOC);
6593 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.bytes_needed));
6594 if (*r->out.bytes_needed > 0x40000) {
6595 return ndr_pull_error(ndr, NDR_ERR_RANGE, "value out of range");
6597 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_bytes_needed_0, LIBNDR_FLAG_REF_ALLOC);
6598 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
6599 NDR_PULL_ALLOC(ndr, r->out.service_returned);
6601 _mem_save_service_returned_0 = NDR_PULL_GET_MEM_CTX(ndr);
6602 NDR_PULL_SET_MEM_CTX(ndr, r->out.service_returned, LIBNDR_FLAG_REF_ALLOC);
6603 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.service_returned));
6604 if (*r->out.service_returned > 0x40000) {
6605 return ndr_pull_error(ndr, NDR_ERR_RANGE, "value out of range");
6607 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_service_returned_0, LIBNDR_FLAG_REF_ALLOC);
6608 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_resume_handle));
6609 if (_ptr_resume_handle) {
6610 NDR_PULL_ALLOC(ndr, r->out.resume_handle);
6612 r->out.resume_handle = NULL;
6614 if (r->out.resume_handle) {
6615 _mem_save_resume_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
6616 NDR_PULL_SET_MEM_CTX(ndr, r->out.resume_handle, 0);
6617 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.resume_handle));
6618 if (*r->out.resume_handle > 0x40000) {
6619 return ndr_pull_error(ndr, NDR_ERR_RANGE, "value out of range");
6621 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_resume_handle_0, 0);
6623 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
6624 if (r->out.services) {
6625 NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->out.services, r->in.buf_size));
6628 return NDR_ERR_SUCCESS;
6631 _PUBLIC_ void ndr_print_EnumServicesStatusExW(struct ndr_print *ndr, const char *name, int flags, const struct EnumServicesStatusExW *r)
6633 ndr_print_struct(ndr, name, "EnumServicesStatusExW");
6635 if (flags & NDR_SET_VALUES) {
6636 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
6638 if (flags & NDR_IN) {
6639 ndr_print_struct(ndr, "in", "EnumServicesStatusExW");
6641 ndr_print_ptr(ndr, "scmanager", r->in.scmanager);
6643 ndr_print_policy_handle(ndr, "scmanager", r->in.scmanager);
6645 ndr_print_uint32(ndr, "info_level", r->in.info_level);
6646 ndr_print_uint32(ndr, "type", r->in.type);
6647 ndr_print_svcctl_ServiceState(ndr, "state", r->in.state);
6648 ndr_print_uint32(ndr, "buf_size", r->in.buf_size);
6649 ndr_print_ptr(ndr, "resume_handle", r->in.resume_handle);
6651 if (r->in.resume_handle) {
6652 ndr_print_uint32(ndr, "resume_handle", *r->in.resume_handle);
6655 ndr_print_ptr(ndr, "group_name", r->in.group_name);
6657 if (r->in.group_name) {
6658 ndr_print_string(ndr, "group_name", r->in.group_name);
6663 if (flags & NDR_OUT) {
6664 ndr_print_struct(ndr, "out", "EnumServicesStatusExW");
6666 ndr_print_ptr(ndr, "services", r->out.services);
6668 ndr_print_array_uint8(ndr, "services", r->out.services, r->in.buf_size);
6670 ndr_print_ptr(ndr, "bytes_needed", r->out.bytes_needed);
6672 ndr_print_uint32(ndr, "bytes_needed", *r->out.bytes_needed);
6674 ndr_print_ptr(ndr, "service_returned", r->out.service_returned);
6676 ndr_print_uint32(ndr, "service_returned", *r->out.service_returned);
6678 ndr_print_ptr(ndr, "resume_handle", r->out.resume_handle);
6680 if (r->out.resume_handle) {
6681 ndr_print_uint32(ndr, "resume_handle", *r->out.resume_handle);
6684 ndr_print_WERROR(ndr, "result", r->out.result);
6690 static enum ndr_err_code ndr_push_svcctl_SCSendTSMessage(struct ndr_push *ndr, int flags, const struct svcctl_SCSendTSMessage *r)
6692 if (flags & NDR_IN) {
6694 if (flags & NDR_OUT) {
6695 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
6697 return NDR_ERR_SUCCESS;
6700 static enum ndr_err_code ndr_pull_svcctl_SCSendTSMessage(struct ndr_pull *ndr, int flags, struct svcctl_SCSendTSMessage *r)
6702 if (flags & NDR_IN) {
6704 if (flags & NDR_OUT) {
6705 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
6707 return NDR_ERR_SUCCESS;
6710 _PUBLIC_ void ndr_print_svcctl_SCSendTSMessage(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_SCSendTSMessage *r)
6712 ndr_print_struct(ndr, name, "svcctl_SCSendTSMessage");
6714 if (flags & NDR_SET_VALUES) {
6715 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
6717 if (flags & NDR_IN) {
6718 ndr_print_struct(ndr, "in", "svcctl_SCSendTSMessage");
6722 if (flags & NDR_OUT) {
6723 ndr_print_struct(ndr, "out", "svcctl_SCSendTSMessage");
6725 ndr_print_WERROR(ndr, "result", r->out.result);
6731 static const struct ndr_interface_call svcctl_calls[] = {
6733 "svcctl_CloseServiceHandle",
6734 sizeof(struct svcctl_CloseServiceHandle),
6735 (ndr_push_flags_fn_t) ndr_push_svcctl_CloseServiceHandle,
6736 (ndr_pull_flags_fn_t) ndr_pull_svcctl_CloseServiceHandle,
6737 (ndr_print_function_t) ndr_print_svcctl_CloseServiceHandle,
6741 "svcctl_ControlService",
6742 sizeof(struct svcctl_ControlService),
6743 (ndr_push_flags_fn_t) ndr_push_svcctl_ControlService,
6744 (ndr_pull_flags_fn_t) ndr_pull_svcctl_ControlService,
6745 (ndr_print_function_t) ndr_print_svcctl_ControlService,
6749 "svcctl_DeleteService",
6750 sizeof(struct svcctl_DeleteService),
6751 (ndr_push_flags_fn_t) ndr_push_svcctl_DeleteService,
6752 (ndr_pull_flags_fn_t) ndr_pull_svcctl_DeleteService,
6753 (ndr_print_function_t) ndr_print_svcctl_DeleteService,
6757 "svcctl_LockServiceDatabase",
6758 sizeof(struct svcctl_LockServiceDatabase),
6759 (ndr_push_flags_fn_t) ndr_push_svcctl_LockServiceDatabase,
6760 (ndr_pull_flags_fn_t) ndr_pull_svcctl_LockServiceDatabase,
6761 (ndr_print_function_t) ndr_print_svcctl_LockServiceDatabase,
6765 "svcctl_QueryServiceObjectSecurity",
6766 sizeof(struct svcctl_QueryServiceObjectSecurity),
6767 (ndr_push_flags_fn_t) ndr_push_svcctl_QueryServiceObjectSecurity,
6768 (ndr_pull_flags_fn_t) ndr_pull_svcctl_QueryServiceObjectSecurity,
6769 (ndr_print_function_t) ndr_print_svcctl_QueryServiceObjectSecurity,
6773 "svcctl_SetServiceObjectSecurity",
6774 sizeof(struct svcctl_SetServiceObjectSecurity),
6775 (ndr_push_flags_fn_t) ndr_push_svcctl_SetServiceObjectSecurity,
6776 (ndr_pull_flags_fn_t) ndr_pull_svcctl_SetServiceObjectSecurity,
6777 (ndr_print_function_t) ndr_print_svcctl_SetServiceObjectSecurity,
6781 "svcctl_QueryServiceStatus",
6782 sizeof(struct svcctl_QueryServiceStatus),
6783 (ndr_push_flags_fn_t) ndr_push_svcctl_QueryServiceStatus,
6784 (ndr_pull_flags_fn_t) ndr_pull_svcctl_QueryServiceStatus,
6785 (ndr_print_function_t) ndr_print_svcctl_QueryServiceStatus,
6789 "svcctl_SetServiceStatus",
6790 sizeof(struct svcctl_SetServiceStatus),
6791 (ndr_push_flags_fn_t) ndr_push_svcctl_SetServiceStatus,
6792 (ndr_pull_flags_fn_t) ndr_pull_svcctl_SetServiceStatus,
6793 (ndr_print_function_t) ndr_print_svcctl_SetServiceStatus,
6797 "svcctl_UnlockServiceDatabase",
6798 sizeof(struct svcctl_UnlockServiceDatabase),
6799 (ndr_push_flags_fn_t) ndr_push_svcctl_UnlockServiceDatabase,
6800 (ndr_pull_flags_fn_t) ndr_pull_svcctl_UnlockServiceDatabase,
6801 (ndr_print_function_t) ndr_print_svcctl_UnlockServiceDatabase,
6805 "svcctl_NotifyBootConfigStatus",
6806 sizeof(struct svcctl_NotifyBootConfigStatus),
6807 (ndr_push_flags_fn_t) ndr_push_svcctl_NotifyBootConfigStatus,
6808 (ndr_pull_flags_fn_t) ndr_pull_svcctl_NotifyBootConfigStatus,
6809 (ndr_print_function_t) ndr_print_svcctl_NotifyBootConfigStatus,
6813 "svcctl_SCSetServiceBitsW",
6814 sizeof(struct svcctl_SCSetServiceBitsW),
6815 (ndr_push_flags_fn_t) ndr_push_svcctl_SCSetServiceBitsW,
6816 (ndr_pull_flags_fn_t) ndr_pull_svcctl_SCSetServiceBitsW,
6817 (ndr_print_function_t) ndr_print_svcctl_SCSetServiceBitsW,
6821 "svcctl_ChangeServiceConfigW",
6822 sizeof(struct svcctl_ChangeServiceConfigW),
6823 (ndr_push_flags_fn_t) ndr_push_svcctl_ChangeServiceConfigW,
6824 (ndr_pull_flags_fn_t) ndr_pull_svcctl_ChangeServiceConfigW,
6825 (ndr_print_function_t) ndr_print_svcctl_ChangeServiceConfigW,
6829 "svcctl_CreateServiceW",
6830 sizeof(struct svcctl_CreateServiceW),
6831 (ndr_push_flags_fn_t) ndr_push_svcctl_CreateServiceW,
6832 (ndr_pull_flags_fn_t) ndr_pull_svcctl_CreateServiceW,
6833 (ndr_print_function_t) ndr_print_svcctl_CreateServiceW,
6837 "svcctl_EnumDependentServicesW",
6838 sizeof(struct svcctl_EnumDependentServicesW),
6839 (ndr_push_flags_fn_t) ndr_push_svcctl_EnumDependentServicesW,
6840 (ndr_pull_flags_fn_t) ndr_pull_svcctl_EnumDependentServicesW,
6841 (ndr_print_function_t) ndr_print_svcctl_EnumDependentServicesW,
6845 "svcctl_EnumServicesStatusW",
6846 sizeof(struct svcctl_EnumServicesStatusW),
6847 (ndr_push_flags_fn_t) ndr_push_svcctl_EnumServicesStatusW,
6848 (ndr_pull_flags_fn_t) ndr_pull_svcctl_EnumServicesStatusW,
6849 (ndr_print_function_t) ndr_print_svcctl_EnumServicesStatusW,
6853 "svcctl_OpenSCManagerW",
6854 sizeof(struct svcctl_OpenSCManagerW),
6855 (ndr_push_flags_fn_t) ndr_push_svcctl_OpenSCManagerW,
6856 (ndr_pull_flags_fn_t) ndr_pull_svcctl_OpenSCManagerW,
6857 (ndr_print_function_t) ndr_print_svcctl_OpenSCManagerW,
6861 "svcctl_OpenServiceW",
6862 sizeof(struct svcctl_OpenServiceW),
6863 (ndr_push_flags_fn_t) ndr_push_svcctl_OpenServiceW,
6864 (ndr_pull_flags_fn_t) ndr_pull_svcctl_OpenServiceW,
6865 (ndr_print_function_t) ndr_print_svcctl_OpenServiceW,
6869 "svcctl_QueryServiceConfigW",
6870 sizeof(struct svcctl_QueryServiceConfigW),
6871 (ndr_push_flags_fn_t) ndr_push_svcctl_QueryServiceConfigW,
6872 (ndr_pull_flags_fn_t) ndr_pull_svcctl_QueryServiceConfigW,
6873 (ndr_print_function_t) ndr_print_svcctl_QueryServiceConfigW,
6877 "svcctl_QueryServiceLockStatusW",
6878 sizeof(struct svcctl_QueryServiceLockStatusW),
6879 (ndr_push_flags_fn_t) ndr_push_svcctl_QueryServiceLockStatusW,
6880 (ndr_pull_flags_fn_t) ndr_pull_svcctl_QueryServiceLockStatusW,
6881 (ndr_print_function_t) ndr_print_svcctl_QueryServiceLockStatusW,
6885 "svcctl_StartServiceW",
6886 sizeof(struct svcctl_StartServiceW),
6887 (ndr_push_flags_fn_t) ndr_push_svcctl_StartServiceW,
6888 (ndr_pull_flags_fn_t) ndr_pull_svcctl_StartServiceW,
6889 (ndr_print_function_t) ndr_print_svcctl_StartServiceW,
6893 "svcctl_GetServiceDisplayNameW",
6894 sizeof(struct svcctl_GetServiceDisplayNameW),
6895 (ndr_push_flags_fn_t) ndr_push_svcctl_GetServiceDisplayNameW,
6896 (ndr_pull_flags_fn_t) ndr_pull_svcctl_GetServiceDisplayNameW,
6897 (ndr_print_function_t) ndr_print_svcctl_GetServiceDisplayNameW,
6901 "svcctl_GetServiceKeyNameW",
6902 sizeof(struct svcctl_GetServiceKeyNameW),
6903 (ndr_push_flags_fn_t) ndr_push_svcctl_GetServiceKeyNameW,
6904 (ndr_pull_flags_fn_t) ndr_pull_svcctl_GetServiceKeyNameW,
6905 (ndr_print_function_t) ndr_print_svcctl_GetServiceKeyNameW,
6909 "svcctl_SCSetServiceBitsA",
6910 sizeof(struct svcctl_SCSetServiceBitsA),
6911 (ndr_push_flags_fn_t) ndr_push_svcctl_SCSetServiceBitsA,
6912 (ndr_pull_flags_fn_t) ndr_pull_svcctl_SCSetServiceBitsA,
6913 (ndr_print_function_t) ndr_print_svcctl_SCSetServiceBitsA,
6917 "svcctl_ChangeServiceConfigA",
6918 sizeof(struct svcctl_ChangeServiceConfigA),
6919 (ndr_push_flags_fn_t) ndr_push_svcctl_ChangeServiceConfigA,
6920 (ndr_pull_flags_fn_t) ndr_pull_svcctl_ChangeServiceConfigA,
6921 (ndr_print_function_t) ndr_print_svcctl_ChangeServiceConfigA,
6925 "svcctl_CreateServiceA",
6926 sizeof(struct svcctl_CreateServiceA),
6927 (ndr_push_flags_fn_t) ndr_push_svcctl_CreateServiceA,
6928 (ndr_pull_flags_fn_t) ndr_pull_svcctl_CreateServiceA,
6929 (ndr_print_function_t) ndr_print_svcctl_CreateServiceA,
6933 "svcctl_EnumDependentServicesA",
6934 sizeof(struct svcctl_EnumDependentServicesA),
6935 (ndr_push_flags_fn_t) ndr_push_svcctl_EnumDependentServicesA,
6936 (ndr_pull_flags_fn_t) ndr_pull_svcctl_EnumDependentServicesA,
6937 (ndr_print_function_t) ndr_print_svcctl_EnumDependentServicesA,
6941 "svcctl_EnumServicesStatusA",
6942 sizeof(struct svcctl_EnumServicesStatusA),
6943 (ndr_push_flags_fn_t) ndr_push_svcctl_EnumServicesStatusA,
6944 (ndr_pull_flags_fn_t) ndr_pull_svcctl_EnumServicesStatusA,
6945 (ndr_print_function_t) ndr_print_svcctl_EnumServicesStatusA,
6949 "svcctl_OpenSCManagerA",
6950 sizeof(struct svcctl_OpenSCManagerA),
6951 (ndr_push_flags_fn_t) ndr_push_svcctl_OpenSCManagerA,
6952 (ndr_pull_flags_fn_t) ndr_pull_svcctl_OpenSCManagerA,
6953 (ndr_print_function_t) ndr_print_svcctl_OpenSCManagerA,
6957 "svcctl_OpenServiceA",
6958 sizeof(struct svcctl_OpenServiceA),
6959 (ndr_push_flags_fn_t) ndr_push_svcctl_OpenServiceA,
6960 (ndr_pull_flags_fn_t) ndr_pull_svcctl_OpenServiceA,
6961 (ndr_print_function_t) ndr_print_svcctl_OpenServiceA,
6965 "svcctl_QueryServiceConfigA",
6966 sizeof(struct svcctl_QueryServiceConfigA),
6967 (ndr_push_flags_fn_t) ndr_push_svcctl_QueryServiceConfigA,
6968 (ndr_pull_flags_fn_t) ndr_pull_svcctl_QueryServiceConfigA,
6969 (ndr_print_function_t) ndr_print_svcctl_QueryServiceConfigA,
6973 "svcctl_QueryServiceLockStatusA",
6974 sizeof(struct svcctl_QueryServiceLockStatusA),
6975 (ndr_push_flags_fn_t) ndr_push_svcctl_QueryServiceLockStatusA,
6976 (ndr_pull_flags_fn_t) ndr_pull_svcctl_QueryServiceLockStatusA,
6977 (ndr_print_function_t) ndr_print_svcctl_QueryServiceLockStatusA,
6981 "svcctl_StartServiceA",
6982 sizeof(struct svcctl_StartServiceA),
6983 (ndr_push_flags_fn_t) ndr_push_svcctl_StartServiceA,
6984 (ndr_pull_flags_fn_t) ndr_pull_svcctl_StartServiceA,
6985 (ndr_print_function_t) ndr_print_svcctl_StartServiceA,
6989 "svcctl_GetServiceDisplayNameA",
6990 sizeof(struct svcctl_GetServiceDisplayNameA),
6991 (ndr_push_flags_fn_t) ndr_push_svcctl_GetServiceDisplayNameA,
6992 (ndr_pull_flags_fn_t) ndr_pull_svcctl_GetServiceDisplayNameA,
6993 (ndr_print_function_t) ndr_print_svcctl_GetServiceDisplayNameA,
6997 "svcctl_GetServiceKeyNameA",
6998 sizeof(struct svcctl_GetServiceKeyNameA),
6999 (ndr_push_flags_fn_t) ndr_push_svcctl_GetServiceKeyNameA,
7000 (ndr_pull_flags_fn_t) ndr_pull_svcctl_GetServiceKeyNameA,
7001 (ndr_print_function_t) ndr_print_svcctl_GetServiceKeyNameA,
7005 "svcctl_GetCurrentGroupeStateW",
7006 sizeof(struct svcctl_GetCurrentGroupeStateW),
7007 (ndr_push_flags_fn_t) ndr_push_svcctl_GetCurrentGroupeStateW,
7008 (ndr_pull_flags_fn_t) ndr_pull_svcctl_GetCurrentGroupeStateW,
7009 (ndr_print_function_t) ndr_print_svcctl_GetCurrentGroupeStateW,
7013 "svcctl_EnumServiceGroupW",
7014 sizeof(struct svcctl_EnumServiceGroupW),
7015 (ndr_push_flags_fn_t) ndr_push_svcctl_EnumServiceGroupW,
7016 (ndr_pull_flags_fn_t) ndr_pull_svcctl_EnumServiceGroupW,
7017 (ndr_print_function_t) ndr_print_svcctl_EnumServiceGroupW,
7021 "svcctl_ChangeServiceConfig2A",
7022 sizeof(struct svcctl_ChangeServiceConfig2A),
7023 (ndr_push_flags_fn_t) ndr_push_svcctl_ChangeServiceConfig2A,
7024 (ndr_pull_flags_fn_t) ndr_pull_svcctl_ChangeServiceConfig2A,
7025 (ndr_print_function_t) ndr_print_svcctl_ChangeServiceConfig2A,
7029 "svcctl_ChangeServiceConfig2W",
7030 sizeof(struct svcctl_ChangeServiceConfig2W),
7031 (ndr_push_flags_fn_t) ndr_push_svcctl_ChangeServiceConfig2W,
7032 (ndr_pull_flags_fn_t) ndr_pull_svcctl_ChangeServiceConfig2W,
7033 (ndr_print_function_t) ndr_print_svcctl_ChangeServiceConfig2W,
7037 "svcctl_QueryServiceConfig2A",
7038 sizeof(struct svcctl_QueryServiceConfig2A),
7039 (ndr_push_flags_fn_t) ndr_push_svcctl_QueryServiceConfig2A,
7040 (ndr_pull_flags_fn_t) ndr_pull_svcctl_QueryServiceConfig2A,
7041 (ndr_print_function_t) ndr_print_svcctl_QueryServiceConfig2A,
7045 "svcctl_QueryServiceConfig2W",
7046 sizeof(struct svcctl_QueryServiceConfig2W),
7047 (ndr_push_flags_fn_t) ndr_push_svcctl_QueryServiceConfig2W,
7048 (ndr_pull_flags_fn_t) ndr_pull_svcctl_QueryServiceConfig2W,
7049 (ndr_print_function_t) ndr_print_svcctl_QueryServiceConfig2W,
7053 "svcctl_QueryServiceStatusEx",
7054 sizeof(struct svcctl_QueryServiceStatusEx),
7055 (ndr_push_flags_fn_t) ndr_push_svcctl_QueryServiceStatusEx,
7056 (ndr_pull_flags_fn_t) ndr_pull_svcctl_QueryServiceStatusEx,
7057 (ndr_print_function_t) ndr_print_svcctl_QueryServiceStatusEx,
7061 "EnumServicesStatusExA",
7062 sizeof(struct EnumServicesStatusExA),
7063 (ndr_push_flags_fn_t) ndr_push_EnumServicesStatusExA,
7064 (ndr_pull_flags_fn_t) ndr_pull_EnumServicesStatusExA,
7065 (ndr_print_function_t) ndr_print_EnumServicesStatusExA,
7069 "EnumServicesStatusExW",
7070 sizeof(struct EnumServicesStatusExW),
7071 (ndr_push_flags_fn_t) ndr_push_EnumServicesStatusExW,
7072 (ndr_pull_flags_fn_t) ndr_pull_EnumServicesStatusExW,
7073 (ndr_print_function_t) ndr_print_EnumServicesStatusExW,
7077 "svcctl_SCSendTSMessage",
7078 sizeof(struct svcctl_SCSendTSMessage),
7079 (ndr_push_flags_fn_t) ndr_push_svcctl_SCSendTSMessage,
7080 (ndr_pull_flags_fn_t) ndr_pull_svcctl_SCSendTSMessage,
7081 (ndr_print_function_t) ndr_print_svcctl_SCSendTSMessage,
7084 { NULL, 0, NULL, NULL, NULL, false }
7087 static const char * const svcctl_endpoint_strings[] = {
7088 "ncacn_np:[\\pipe\\svcctl]",
7092 static const struct ndr_interface_string_array svcctl_endpoints = {
7094 .names = svcctl_endpoint_strings
7097 static const char * const svcctl_authservice_strings[] = {
7101 static const struct ndr_interface_string_array svcctl_authservices = {
7103 .names = svcctl_authservice_strings
7107 const struct ndr_interface_table ndr_table_svcctl = {
7110 {0x367abb81,0x9844,0x35f1,{0xad,0x32},{0x98,0xf0,0x38,0x00,0x10,0x03}},
7113 .helpstring = NDR_SVCCTL_HELPSTRING,
7115 .calls = svcctl_calls,
7116 .endpoints = &svcctl_endpoints,
7117 .authservices = &svcctl_authservices