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 static enum ndr_err_code ndr_push_ENUM_SERVICE_STATUS(struct ndr_push *ndr, int ndr_flags, const struct ENUM_SERVICE_STATUS *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_ASCII|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_ASCII|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_ASCII|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_ASCII|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 static enum ndr_err_code ndr_pull_ENUM_SERVICE_STATUS(struct ndr_pull *ndr, int ndr_flags, struct ENUM_SERVICE_STATUS *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_ASCII|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_ASCII|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_ASCII|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_ASCII|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_STATUS(struct ndr_print *ndr, const char *name, const struct ENUM_SERVICE_STATUS *r)
330 ndr_print_struct(ndr, name, "ENUM_SERVICE_STATUS");
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_ enum ndr_err_code ndr_push_svcctl_ServerType(struct ndr_push *ndr, int ndr_flags, uint32_t r)
350 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r));
351 return NDR_ERR_SUCCESS;
354 _PUBLIC_ enum ndr_err_code ndr_pull_svcctl_ServerType(struct ndr_pull *ndr, int ndr_flags, uint32_t *r)
357 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &v));
359 return NDR_ERR_SUCCESS;
362 _PUBLIC_ void ndr_print_svcctl_ServerType(struct ndr_print *ndr, const char *name, uint32_t r)
364 ndr_print_uint32(ndr, name, r);
366 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_WORKSTATION", SV_TYPE_WORKSTATION, r);
367 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_SERVER", SV_TYPE_SERVER, r);
368 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_SQLSERVER", SV_TYPE_SQLSERVER, r);
369 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_DOMAIN_CTRL", SV_TYPE_DOMAIN_CTRL, r);
370 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_DOMAIN_BAKCTRL", SV_TYPE_DOMAIN_BAKCTRL, r);
371 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_TIME_SOURCE", SV_TYPE_TIME_SOURCE, r);
372 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_AFP", SV_TYPE_AFP, r);
373 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_NOVELL", SV_TYPE_NOVELL, r);
374 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_DOMAIN_MEMBER", SV_TYPE_DOMAIN_MEMBER, r);
375 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_PRINTQ_SERVER", SV_TYPE_PRINTQ_SERVER, r);
376 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_DIALIN_SERVER", SV_TYPE_DIALIN_SERVER, r);
377 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_SERVER_UNIX", SV_TYPE_SERVER_UNIX, r);
378 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_NT", SV_TYPE_NT, r);
379 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_WFW", SV_TYPE_WFW, r);
380 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_SERVER_MFPN", SV_TYPE_SERVER_MFPN, r);
381 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_SERVER_NT", SV_TYPE_SERVER_NT, r);
382 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_POTENTIAL_BROWSER", SV_TYPE_POTENTIAL_BROWSER, r);
383 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_BACKUP_BROWSER", SV_TYPE_BACKUP_BROWSER, r);
384 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_MASTER_BROWSER", SV_TYPE_MASTER_BROWSER, r);
385 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_DOMAIN_MASTER", SV_TYPE_DOMAIN_MASTER, r);
386 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_SERVER_OSF", SV_TYPE_SERVER_OSF, r);
387 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_SERVER_VMS", SV_TYPE_SERVER_VMS, r);
388 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_WIN95_PLUS", SV_TYPE_WIN95_PLUS, r);
389 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_DFS_SERVER", SV_TYPE_DFS_SERVER, r);
390 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_ALTERNATE_XPORT", SV_TYPE_ALTERNATE_XPORT, r);
391 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_LOCAL_LIST_ONLY", SV_TYPE_LOCAL_LIST_ONLY, r);
392 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_DOMAIN_ENUM", SV_TYPE_DOMAIN_ENUM, r);
396 static enum ndr_err_code ndr_push_SERVICE_CONTROL(struct ndr_push *ndr, int ndr_flags, enum SERVICE_CONTROL r)
398 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r));
399 return NDR_ERR_SUCCESS;
402 static enum ndr_err_code ndr_pull_SERVICE_CONTROL(struct ndr_pull *ndr, int ndr_flags, enum SERVICE_CONTROL *r)
405 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &v));
407 return NDR_ERR_SUCCESS;
410 _PUBLIC_ void ndr_print_SERVICE_CONTROL(struct ndr_print *ndr, const char *name, enum SERVICE_CONTROL r)
412 const char *val = NULL;
415 case SVCCTL_CONTROL_STOP: val = "SVCCTL_CONTROL_STOP"; break;
416 case SVCCTL_CONTROL_PAUSE: val = "SVCCTL_CONTROL_PAUSE"; break;
417 case SVCCTL_CONTROL_CONTINUE: val = "SVCCTL_CONTROL_CONTINUE"; break;
418 case SVCCTL_CONTROL_INTERROGATE: val = "SVCCTL_CONTROL_INTERROGATE"; break;
419 case SVCCTL_CONTROL_SHUTDOWN: val = "SVCCTL_CONTROL_SHUTDOWN"; break;
421 ndr_print_enum(ndr, name, "ENUM", val, r);
424 static enum ndr_err_code ndr_push_svcctl_ErrorControl(struct ndr_push *ndr, int ndr_flags, enum svcctl_ErrorControl r)
426 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r));
427 return NDR_ERR_SUCCESS;
430 static enum ndr_err_code ndr_pull_svcctl_ErrorControl(struct ndr_pull *ndr, int ndr_flags, enum svcctl_ErrorControl *r)
433 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &v));
435 return NDR_ERR_SUCCESS;
438 _PUBLIC_ void ndr_print_svcctl_ErrorControl(struct ndr_print *ndr, const char *name, enum svcctl_ErrorControl r)
440 const char *val = NULL;
443 case SVCCTL_SVC_ERROR_IGNORE: val = "SVCCTL_SVC_ERROR_IGNORE"; break;
444 case SVCCTL_SVC_ERROR_NORMAL: val = "SVCCTL_SVC_ERROR_NORMAL"; break;
445 case SVCCTL_SVC_ERROR_CRITICAL: val = "SVCCTL_SVC_ERROR_CRITICAL"; break;
446 case SVCCTL_SVC_ERROR_SEVERE: val = "SVCCTL_SVC_ERROR_SEVERE"; break;
448 ndr_print_enum(ndr, name, "ENUM", val, r);
451 static enum ndr_err_code ndr_push_svcctl_StartType(struct ndr_push *ndr, int ndr_flags, enum svcctl_StartType r)
453 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r));
454 return NDR_ERR_SUCCESS;
457 static enum ndr_err_code ndr_pull_svcctl_StartType(struct ndr_pull *ndr, int ndr_flags, enum svcctl_StartType *r)
460 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &v));
462 return NDR_ERR_SUCCESS;
465 _PUBLIC_ void ndr_print_svcctl_StartType(struct ndr_print *ndr, const char *name, enum svcctl_StartType r)
467 const char *val = NULL;
470 case SVCCTL_BOOT_START: val = "SVCCTL_BOOT_START"; break;
471 case SVCCTL_SYSTEM_START: val = "SVCCTL_SYSTEM_START"; break;
472 case SVCCTL_AUTO_START: val = "SVCCTL_AUTO_START"; break;
473 case SVCCTL_DEMAND_START: val = "SVCCTL_DEMAND_START"; break;
474 case SVCCTL_DISABLED: val = "SVCCTL_DISABLED"; break;
476 ndr_print_enum(ndr, name, "ENUM", val, r);
479 static enum ndr_err_code ndr_push_svcctl_ServiceState(struct ndr_push *ndr, int ndr_flags, enum svcctl_ServiceState r)
481 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r));
482 return NDR_ERR_SUCCESS;
485 static enum ndr_err_code ndr_pull_svcctl_ServiceState(struct ndr_pull *ndr, int ndr_flags, enum svcctl_ServiceState *r)
488 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &v));
490 return NDR_ERR_SUCCESS;
493 _PUBLIC_ void ndr_print_svcctl_ServiceState(struct ndr_print *ndr, const char *name, enum svcctl_ServiceState r)
495 const char *val = NULL;
498 case SVCCTL_STATE_ACTIVE: val = "SVCCTL_STATE_ACTIVE"; break;
499 case SVCCTL_STATE_INACTIVE: val = "SVCCTL_STATE_INACTIVE"; break;
500 case SVCCTL_STATE_ALL: val = "SVCCTL_STATE_ALL"; break;
502 ndr_print_enum(ndr, name, "ENUM", val, r);
505 static enum ndr_err_code ndr_push_svcctl_MgrAccessMask(struct ndr_push *ndr, int ndr_flags, uint32_t r)
507 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r));
508 return NDR_ERR_SUCCESS;
511 static enum ndr_err_code ndr_pull_svcctl_MgrAccessMask(struct ndr_pull *ndr, int ndr_flags, uint32_t *r)
514 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &v));
516 return NDR_ERR_SUCCESS;
519 _PUBLIC_ void ndr_print_svcctl_MgrAccessMask(struct ndr_print *ndr, const char *name, uint32_t r)
521 ndr_print_uint32(ndr, name, r);
523 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SC_RIGHT_MGR_CONNECT", SC_RIGHT_MGR_CONNECT, r);
524 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SC_RIGHT_MGR_CREATE_SERVICE", SC_RIGHT_MGR_CREATE_SERVICE, r);
525 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SC_RIGHT_MGR_ENUMERATE_SERVICE", SC_RIGHT_MGR_ENUMERATE_SERVICE, r);
526 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SC_RIGHT_MGR_LOCK", SC_RIGHT_MGR_LOCK, r);
527 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SC_RIGHT_MGR_QUERY_LOCK_STATUS", SC_RIGHT_MGR_QUERY_LOCK_STATUS, r);
528 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SC_RIGHT_MGR_MODIFY_BOOT_CONFIG", SC_RIGHT_MGR_MODIFY_BOOT_CONFIG, r);
532 static enum ndr_err_code ndr_push_svcctl_ServiceAccessMask(struct ndr_push *ndr, int ndr_flags, uint32_t r)
534 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r));
535 return NDR_ERR_SUCCESS;
538 static enum ndr_err_code ndr_pull_svcctl_ServiceAccessMask(struct ndr_pull *ndr, int ndr_flags, uint32_t *r)
541 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &v));
543 return NDR_ERR_SUCCESS;
546 _PUBLIC_ void ndr_print_svcctl_ServiceAccessMask(struct ndr_print *ndr, const char *name, uint32_t r)
548 ndr_print_uint32(ndr, name, r);
550 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SC_RIGHT_SVC_QUERY_CONFIG", SC_RIGHT_SVC_QUERY_CONFIG, r);
551 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SC_RIGHT_SVC_CHANGE_CONFIG", SC_RIGHT_SVC_CHANGE_CONFIG, r);
552 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SC_RIGHT_SVC_QUERY_STATUS", SC_RIGHT_SVC_QUERY_STATUS, r);
553 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SC_RIGHT_SVC_ENUMERATE_DEPENDENTS", SC_RIGHT_SVC_ENUMERATE_DEPENDENTS, r);
554 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SC_RIGHT_SVC_START", SC_RIGHT_SVC_START, r);
555 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SC_RIGHT_SVC_STOP", SC_RIGHT_SVC_STOP, r);
556 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SC_RIGHT_SVC_PAUSE_CONTINUE", SC_RIGHT_SVC_PAUSE_CONTINUE, r);
557 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SC_RIGHT_SVC_INTERROGATE", SC_RIGHT_SVC_INTERROGATE, r);
558 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SC_RIGHT_SVC_USER_DEFINED_CONTROL", SC_RIGHT_SVC_USER_DEFINED_CONTROL, r);
562 _PUBLIC_ enum ndr_err_code ndr_push_QUERY_SERVICE_CONFIG(struct ndr_push *ndr, int ndr_flags, const struct QUERY_SERVICE_CONFIG *r)
564 if (ndr_flags & NDR_SCALARS) {
565 NDR_CHECK(ndr_push_align(ndr, 4));
566 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->service_type));
567 NDR_CHECK(ndr_push_svcctl_StartType(ndr, NDR_SCALARS, r->start_type));
568 NDR_CHECK(ndr_push_svcctl_ErrorControl(ndr, NDR_SCALARS, r->error_control));
569 NDR_CHECK(ndr_push_unique_ptr(ndr, r->executablepath));
570 NDR_CHECK(ndr_push_unique_ptr(ndr, r->loadordergroup));
571 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->tag_id));
572 NDR_CHECK(ndr_push_unique_ptr(ndr, r->dependencies));
573 NDR_CHECK(ndr_push_unique_ptr(ndr, r->startname));
574 NDR_CHECK(ndr_push_unique_ptr(ndr, r->displayname));
576 if (ndr_flags & NDR_BUFFERS) {
577 if (r->executablepath) {
578 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->executablepath, CH_UTF16)));
579 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
580 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->executablepath, CH_UTF16)));
581 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->executablepath, ndr_charset_length(r->executablepath, CH_UTF16), sizeof(uint16_t), CH_UTF16));
583 if (r->loadordergroup) {
584 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->loadordergroup, CH_UTF16)));
585 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
586 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->loadordergroup, CH_UTF16)));
587 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->loadordergroup, ndr_charset_length(r->loadordergroup, CH_UTF16), sizeof(uint16_t), CH_UTF16));
589 if (r->dependencies) {
590 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->dependencies, CH_UTF16)));
591 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
592 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->dependencies, CH_UTF16)));
593 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->dependencies, ndr_charset_length(r->dependencies, CH_UTF16), sizeof(uint16_t), CH_UTF16));
596 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->startname, CH_UTF16)));
597 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
598 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->startname, CH_UTF16)));
599 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->startname, ndr_charset_length(r->startname, CH_UTF16), sizeof(uint16_t), CH_UTF16));
601 if (r->displayname) {
602 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->displayname, CH_UTF16)));
603 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
604 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->displayname, CH_UTF16)));
605 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->displayname, ndr_charset_length(r->displayname, CH_UTF16), sizeof(uint16_t), CH_UTF16));
608 return NDR_ERR_SUCCESS;
611 _PUBLIC_ enum ndr_err_code ndr_pull_QUERY_SERVICE_CONFIG(struct ndr_pull *ndr, int ndr_flags, struct QUERY_SERVICE_CONFIG *r)
613 uint32_t _ptr_executablepath;
614 TALLOC_CTX *_mem_save_executablepath_0;
615 uint32_t _ptr_loadordergroup;
616 TALLOC_CTX *_mem_save_loadordergroup_0;
617 uint32_t _ptr_dependencies;
618 TALLOC_CTX *_mem_save_dependencies_0;
619 uint32_t _ptr_startname;
620 TALLOC_CTX *_mem_save_startname_0;
621 uint32_t _ptr_displayname;
622 TALLOC_CTX *_mem_save_displayname_0;
623 if (ndr_flags & NDR_SCALARS) {
624 NDR_CHECK(ndr_pull_align(ndr, 4));
625 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->service_type));
626 NDR_CHECK(ndr_pull_svcctl_StartType(ndr, NDR_SCALARS, &r->start_type));
627 NDR_CHECK(ndr_pull_svcctl_ErrorControl(ndr, NDR_SCALARS, &r->error_control));
628 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_executablepath));
629 if (_ptr_executablepath) {
630 NDR_PULL_ALLOC(ndr, r->executablepath);
632 r->executablepath = NULL;
634 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_loadordergroup));
635 if (_ptr_loadordergroup) {
636 NDR_PULL_ALLOC(ndr, r->loadordergroup);
638 r->loadordergroup = NULL;
640 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->tag_id));
641 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_dependencies));
642 if (_ptr_dependencies) {
643 NDR_PULL_ALLOC(ndr, r->dependencies);
645 r->dependencies = NULL;
647 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_startname));
648 if (_ptr_startname) {
649 NDR_PULL_ALLOC(ndr, r->startname);
653 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_displayname));
654 if (_ptr_displayname) {
655 NDR_PULL_ALLOC(ndr, r->displayname);
657 r->displayname = NULL;
660 if (ndr_flags & NDR_BUFFERS) {
661 if (r->executablepath) {
662 _mem_save_executablepath_0 = NDR_PULL_GET_MEM_CTX(ndr);
663 NDR_PULL_SET_MEM_CTX(ndr, r->executablepath, 0);
664 NDR_CHECK(ndr_pull_array_size(ndr, &r->executablepath));
665 NDR_CHECK(ndr_pull_array_length(ndr, &r->executablepath));
666 if (ndr_get_array_length(ndr, &r->executablepath) > ndr_get_array_size(ndr, &r->executablepath)) {
667 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));
669 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->executablepath), sizeof(uint16_t)));
670 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->executablepath, ndr_get_array_length(ndr, &r->executablepath), sizeof(uint16_t), CH_UTF16));
671 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_executablepath_0, 0);
673 if (r->loadordergroup) {
674 _mem_save_loadordergroup_0 = NDR_PULL_GET_MEM_CTX(ndr);
675 NDR_PULL_SET_MEM_CTX(ndr, r->loadordergroup, 0);
676 NDR_CHECK(ndr_pull_array_size(ndr, &r->loadordergroup));
677 NDR_CHECK(ndr_pull_array_length(ndr, &r->loadordergroup));
678 if (ndr_get_array_length(ndr, &r->loadordergroup) > ndr_get_array_size(ndr, &r->loadordergroup)) {
679 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));
681 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->loadordergroup), sizeof(uint16_t)));
682 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->loadordergroup, ndr_get_array_length(ndr, &r->loadordergroup), sizeof(uint16_t), CH_UTF16));
683 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_loadordergroup_0, 0);
685 if (r->dependencies) {
686 _mem_save_dependencies_0 = NDR_PULL_GET_MEM_CTX(ndr);
687 NDR_PULL_SET_MEM_CTX(ndr, r->dependencies, 0);
688 NDR_CHECK(ndr_pull_array_size(ndr, &r->dependencies));
689 NDR_CHECK(ndr_pull_array_length(ndr, &r->dependencies));
690 if (ndr_get_array_length(ndr, &r->dependencies) > ndr_get_array_size(ndr, &r->dependencies)) {
691 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));
693 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->dependencies), sizeof(uint16_t)));
694 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->dependencies, ndr_get_array_length(ndr, &r->dependencies), sizeof(uint16_t), CH_UTF16));
695 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_dependencies_0, 0);
698 _mem_save_startname_0 = NDR_PULL_GET_MEM_CTX(ndr);
699 NDR_PULL_SET_MEM_CTX(ndr, r->startname, 0);
700 NDR_CHECK(ndr_pull_array_size(ndr, &r->startname));
701 NDR_CHECK(ndr_pull_array_length(ndr, &r->startname));
702 if (ndr_get_array_length(ndr, &r->startname) > ndr_get_array_size(ndr, &r->startname)) {
703 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));
705 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->startname), sizeof(uint16_t)));
706 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->startname, ndr_get_array_length(ndr, &r->startname), sizeof(uint16_t), CH_UTF16));
707 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_startname_0, 0);
709 if (r->displayname) {
710 _mem_save_displayname_0 = NDR_PULL_GET_MEM_CTX(ndr);
711 NDR_PULL_SET_MEM_CTX(ndr, r->displayname, 0);
712 NDR_CHECK(ndr_pull_array_size(ndr, &r->displayname));
713 NDR_CHECK(ndr_pull_array_length(ndr, &r->displayname));
714 if (ndr_get_array_length(ndr, &r->displayname) > ndr_get_array_size(ndr, &r->displayname)) {
715 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));
717 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->displayname), sizeof(uint16_t)));
718 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->displayname, ndr_get_array_length(ndr, &r->displayname), sizeof(uint16_t), CH_UTF16));
719 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_displayname_0, 0);
722 return NDR_ERR_SUCCESS;
725 _PUBLIC_ void ndr_print_QUERY_SERVICE_CONFIG(struct ndr_print *ndr, const char *name, const struct QUERY_SERVICE_CONFIG *r)
727 ndr_print_struct(ndr, name, "QUERY_SERVICE_CONFIG");
729 ndr_print_uint32(ndr, "service_type", r->service_type);
730 ndr_print_svcctl_StartType(ndr, "start_type", r->start_type);
731 ndr_print_svcctl_ErrorControl(ndr, "error_control", r->error_control);
732 ndr_print_ptr(ndr, "executablepath", r->executablepath);
734 if (r->executablepath) {
735 ndr_print_string(ndr, "executablepath", r->executablepath);
738 ndr_print_ptr(ndr, "loadordergroup", r->loadordergroup);
740 if (r->loadordergroup) {
741 ndr_print_string(ndr, "loadordergroup", r->loadordergroup);
744 ndr_print_uint32(ndr, "tag_id", r->tag_id);
745 ndr_print_ptr(ndr, "dependencies", r->dependencies);
747 if (r->dependencies) {
748 ndr_print_string(ndr, "dependencies", r->dependencies);
751 ndr_print_ptr(ndr, "startname", r->startname);
754 ndr_print_string(ndr, "startname", r->startname);
757 ndr_print_ptr(ndr, "displayname", r->displayname);
759 if (r->displayname) {
760 ndr_print_string(ndr, "displayname", r->displayname);
766 _PUBLIC_ size_t ndr_size_QUERY_SERVICE_CONFIG(const struct QUERY_SERVICE_CONFIG *r, struct smb_iconv_convenience *ic, int flags)
768 return ndr_size_struct(r, flags, (ndr_push_flags_fn_t)ndr_push_QUERY_SERVICE_CONFIG, ic);
771 static enum ndr_err_code ndr_push_svcctl_ConfigLevel(struct ndr_push *ndr, int ndr_flags, enum svcctl_ConfigLevel r)
773 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r));
774 return NDR_ERR_SUCCESS;
777 static enum ndr_err_code ndr_pull_svcctl_ConfigLevel(struct ndr_pull *ndr, int ndr_flags, enum svcctl_ConfigLevel *r)
780 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &v));
782 return NDR_ERR_SUCCESS;
785 _PUBLIC_ void ndr_print_svcctl_ConfigLevel(struct ndr_print *ndr, const char *name, enum svcctl_ConfigLevel r)
787 const char *val = NULL;
790 case SERVICE_CONFIG_DESCRIPTION: val = "SERVICE_CONFIG_DESCRIPTION"; break;
791 case SERVICE_CONFIG_FAILURE_ACTIONS: val = "SERVICE_CONFIG_FAILURE_ACTIONS"; break;
793 ndr_print_enum(ndr, name, "ENUM", val, r);
796 _PUBLIC_ enum ndr_err_code ndr_push_SERVICE_DESCRIPTION(struct ndr_push *ndr, int ndr_flags, const struct SERVICE_DESCRIPTION *r)
798 if (ndr_flags & NDR_SCALARS) {
799 NDR_CHECK(ndr_push_align(ndr, 4));
801 uint32_t _flags_save_string = ndr->flags;
802 ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
803 NDR_CHECK(ndr_push_relative_ptr1(ndr, r->description));
804 ndr->flags = _flags_save_string;
807 if (ndr_flags & NDR_BUFFERS) {
809 uint32_t _flags_save_string = ndr->flags;
810 ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
811 if (r->description) {
812 NDR_CHECK(ndr_push_relative_ptr2(ndr, r->description));
813 NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->description));
815 ndr->flags = _flags_save_string;
818 return NDR_ERR_SUCCESS;
821 _PUBLIC_ enum ndr_err_code ndr_pull_SERVICE_DESCRIPTION(struct ndr_pull *ndr, int ndr_flags, struct SERVICE_DESCRIPTION *r)
823 uint32_t _ptr_description;
824 TALLOC_CTX *_mem_save_description_0;
825 if (ndr_flags & NDR_SCALARS) {
826 NDR_CHECK(ndr_pull_align(ndr, 4));
828 uint32_t _flags_save_string = ndr->flags;
829 ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
830 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_description));
831 if (_ptr_description) {
832 NDR_PULL_ALLOC(ndr, r->description);
833 NDR_CHECK(ndr_pull_relative_ptr1(ndr, r->description, _ptr_description));
835 r->description = NULL;
837 ndr->flags = _flags_save_string;
840 if (ndr_flags & NDR_BUFFERS) {
842 uint32_t _flags_save_string = ndr->flags;
843 ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
844 if (r->description) {
845 uint32_t _relative_save_offset;
846 _relative_save_offset = ndr->offset;
847 NDR_CHECK(ndr_pull_relative_ptr2(ndr, r->description));
848 _mem_save_description_0 = NDR_PULL_GET_MEM_CTX(ndr);
849 NDR_PULL_SET_MEM_CTX(ndr, r->description, 0);
850 NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->description));
851 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_description_0, 0);
852 ndr->offset = _relative_save_offset;
854 ndr->flags = _flags_save_string;
857 return NDR_ERR_SUCCESS;
860 _PUBLIC_ void ndr_print_SERVICE_DESCRIPTION(struct ndr_print *ndr, const char *name, const struct SERVICE_DESCRIPTION *r)
862 ndr_print_struct(ndr, name, "SERVICE_DESCRIPTION");
864 ndr_print_ptr(ndr, "description", r->description);
866 if (r->description) {
867 ndr_print_string(ndr, "description", r->description);
873 _PUBLIC_ size_t ndr_size_SERVICE_DESCRIPTION(const struct SERVICE_DESCRIPTION *r, struct smb_iconv_convenience *ic, int flags)
875 return ndr_size_struct(r, flags, (ndr_push_flags_fn_t)ndr_push_SERVICE_DESCRIPTION, ic);
878 static enum ndr_err_code ndr_push_SC_ACTION_TYPE(struct ndr_push *ndr, int ndr_flags, enum SC_ACTION_TYPE r)
880 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r));
881 return NDR_ERR_SUCCESS;
884 static enum ndr_err_code ndr_pull_SC_ACTION_TYPE(struct ndr_pull *ndr, int ndr_flags, enum SC_ACTION_TYPE *r)
887 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &v));
889 return NDR_ERR_SUCCESS;
892 _PUBLIC_ void ndr_print_SC_ACTION_TYPE(struct ndr_print *ndr, const char *name, enum SC_ACTION_TYPE r)
894 const char *val = NULL;
897 case SC_ACTION_NONE: val = "SC_ACTION_NONE"; break;
898 case SC_ACTION_RESTART: val = "SC_ACTION_RESTART"; break;
899 case SC_ACTION_REBOOT: val = "SC_ACTION_REBOOT"; break;
900 case SC_ACTION_RUN_COMMAND: val = "SC_ACTION_RUN_COMMAND"; break;
902 ndr_print_enum(ndr, name, "ENUM", val, r);
905 static enum ndr_err_code ndr_push_SC_ACTION(struct ndr_push *ndr, int ndr_flags, const struct SC_ACTION *r)
907 if (ndr_flags & NDR_SCALARS) {
908 NDR_CHECK(ndr_push_align(ndr, 4));
909 NDR_CHECK(ndr_push_SC_ACTION_TYPE(ndr, NDR_SCALARS, r->type));
910 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->delay));
912 if (ndr_flags & NDR_BUFFERS) {
914 return NDR_ERR_SUCCESS;
917 static enum ndr_err_code ndr_pull_SC_ACTION(struct ndr_pull *ndr, int ndr_flags, struct SC_ACTION *r)
919 if (ndr_flags & NDR_SCALARS) {
920 NDR_CHECK(ndr_pull_align(ndr, 4));
921 NDR_CHECK(ndr_pull_SC_ACTION_TYPE(ndr, NDR_SCALARS, &r->type));
922 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->delay));
924 if (ndr_flags & NDR_BUFFERS) {
926 return NDR_ERR_SUCCESS;
929 _PUBLIC_ void ndr_print_SC_ACTION(struct ndr_print *ndr, const char *name, const struct SC_ACTION *r)
931 ndr_print_struct(ndr, name, "SC_ACTION");
933 ndr_print_SC_ACTION_TYPE(ndr, "type", r->type);
934 ndr_print_uint32(ndr, "delay", r->delay);
938 _PUBLIC_ enum ndr_err_code ndr_push_SERVICE_FAILURE_ACTIONS(struct ndr_push *ndr, int ndr_flags, const struct SERVICE_FAILURE_ACTIONS *r)
940 uint32_t cntr_actions_1;
941 if (ndr_flags & NDR_SCALARS) {
942 NDR_CHECK(ndr_push_align(ndr, 4));
943 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->reset_period));
945 uint32_t _flags_save_string = ndr->flags;
946 ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
947 NDR_CHECK(ndr_push_relative_ptr1(ndr, r->rebootmsg));
948 ndr->flags = _flags_save_string;
951 uint32_t _flags_save_string = ndr->flags;
952 ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
953 NDR_CHECK(ndr_push_relative_ptr1(ndr, r->command));
954 ndr->flags = _flags_save_string;
956 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->num_actions));
957 NDR_CHECK(ndr_push_relative_ptr1(ndr, r->actions));
959 if (ndr_flags & NDR_BUFFERS) {
961 uint32_t _flags_save_string = ndr->flags;
962 ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
964 NDR_CHECK(ndr_push_relative_ptr2(ndr, r->rebootmsg));
965 NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->rebootmsg));
967 ndr->flags = _flags_save_string;
970 uint32_t _flags_save_string = ndr->flags;
971 ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
973 NDR_CHECK(ndr_push_relative_ptr2(ndr, r->command));
974 NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->command));
976 ndr->flags = _flags_save_string;
979 NDR_CHECK(ndr_push_relative_ptr2(ndr, r->actions));
980 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->num_actions));
981 for (cntr_actions_1 = 0; cntr_actions_1 < r->num_actions; cntr_actions_1++) {
982 NDR_CHECK(ndr_push_SC_ACTION(ndr, NDR_SCALARS, &r->actions[cntr_actions_1]));
986 return NDR_ERR_SUCCESS;
989 _PUBLIC_ enum ndr_err_code ndr_pull_SERVICE_FAILURE_ACTIONS(struct ndr_pull *ndr, int ndr_flags, struct SERVICE_FAILURE_ACTIONS *r)
991 uint32_t _ptr_rebootmsg;
992 TALLOC_CTX *_mem_save_rebootmsg_0;
993 uint32_t _ptr_command;
994 TALLOC_CTX *_mem_save_command_0;
995 uint32_t _ptr_actions;
996 uint32_t cntr_actions_1;
997 TALLOC_CTX *_mem_save_actions_0;
998 TALLOC_CTX *_mem_save_actions_1;
999 if (ndr_flags & NDR_SCALARS) {
1000 NDR_CHECK(ndr_pull_align(ndr, 4));
1001 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->reset_period));
1003 uint32_t _flags_save_string = ndr->flags;
1004 ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
1005 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_rebootmsg));
1006 if (_ptr_rebootmsg) {
1007 NDR_PULL_ALLOC(ndr, r->rebootmsg);
1008 NDR_CHECK(ndr_pull_relative_ptr1(ndr, r->rebootmsg, _ptr_rebootmsg));
1010 r->rebootmsg = NULL;
1012 ndr->flags = _flags_save_string;
1015 uint32_t _flags_save_string = ndr->flags;
1016 ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
1017 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_command));
1019 NDR_PULL_ALLOC(ndr, r->command);
1020 NDR_CHECK(ndr_pull_relative_ptr1(ndr, r->command, _ptr_command));
1024 ndr->flags = _flags_save_string;
1026 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->num_actions));
1027 if (r->num_actions < 0 || r->num_actions > 1024) {
1028 return ndr_pull_error(ndr, NDR_ERR_RANGE, "value out of range");
1030 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_actions));
1032 NDR_PULL_ALLOC(ndr, r->actions);
1033 NDR_CHECK(ndr_pull_relative_ptr1(ndr, r->actions, _ptr_actions));
1038 if (ndr_flags & NDR_BUFFERS) {
1040 uint32_t _flags_save_string = ndr->flags;
1041 ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
1043 uint32_t _relative_save_offset;
1044 _relative_save_offset = ndr->offset;
1045 NDR_CHECK(ndr_pull_relative_ptr2(ndr, r->rebootmsg));
1046 _mem_save_rebootmsg_0 = NDR_PULL_GET_MEM_CTX(ndr);
1047 NDR_PULL_SET_MEM_CTX(ndr, r->rebootmsg, 0);
1048 NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->rebootmsg));
1049 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_rebootmsg_0, 0);
1050 ndr->offset = _relative_save_offset;
1052 ndr->flags = _flags_save_string;
1055 uint32_t _flags_save_string = ndr->flags;
1056 ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
1058 uint32_t _relative_save_offset;
1059 _relative_save_offset = ndr->offset;
1060 NDR_CHECK(ndr_pull_relative_ptr2(ndr, r->command));
1061 _mem_save_command_0 = NDR_PULL_GET_MEM_CTX(ndr);
1062 NDR_PULL_SET_MEM_CTX(ndr, r->command, 0);
1063 NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->command));
1064 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_command_0, 0);
1065 ndr->offset = _relative_save_offset;
1067 ndr->flags = _flags_save_string;
1070 uint32_t _relative_save_offset;
1071 _relative_save_offset = ndr->offset;
1072 NDR_CHECK(ndr_pull_relative_ptr2(ndr, r->actions));
1073 _mem_save_actions_0 = NDR_PULL_GET_MEM_CTX(ndr);
1074 NDR_PULL_SET_MEM_CTX(ndr, r->actions, 0);
1075 NDR_CHECK(ndr_pull_array_size(ndr, &r->actions));
1076 NDR_PULL_ALLOC_N(ndr, r->actions, ndr_get_array_size(ndr, &r->actions));
1077 _mem_save_actions_1 = NDR_PULL_GET_MEM_CTX(ndr);
1078 NDR_PULL_SET_MEM_CTX(ndr, r->actions, 0);
1079 for (cntr_actions_1 = 0; cntr_actions_1 < r->num_actions; cntr_actions_1++) {
1080 NDR_CHECK(ndr_pull_SC_ACTION(ndr, NDR_SCALARS, &r->actions[cntr_actions_1]));
1082 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_actions_1, 0);
1083 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_actions_0, 0);
1084 ndr->offset = _relative_save_offset;
1087 NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->actions, r->num_actions));
1090 return NDR_ERR_SUCCESS;
1093 _PUBLIC_ void ndr_print_SERVICE_FAILURE_ACTIONS(struct ndr_print *ndr, const char *name, const struct SERVICE_FAILURE_ACTIONS *r)
1095 uint32_t cntr_actions_1;
1096 ndr_print_struct(ndr, name, "SERVICE_FAILURE_ACTIONS");
1098 ndr_print_uint32(ndr, "reset_period", r->reset_period);
1099 ndr_print_ptr(ndr, "rebootmsg", r->rebootmsg);
1102 ndr_print_string(ndr, "rebootmsg", r->rebootmsg);
1105 ndr_print_ptr(ndr, "command", r->command);
1108 ndr_print_string(ndr, "command", r->command);
1111 ndr_print_uint32(ndr, "num_actions", r->num_actions);
1112 ndr_print_ptr(ndr, "actions", r->actions);
1115 ndr->print(ndr, "%s: ARRAY(%d)", "actions", (int)r->num_actions);
1117 for (cntr_actions_1=0;cntr_actions_1<r->num_actions;cntr_actions_1++) {
1119 if (asprintf(&idx_1, "[%d]", cntr_actions_1) != -1) {
1120 ndr_print_SC_ACTION(ndr, "actions", &r->actions[cntr_actions_1]);
1130 _PUBLIC_ size_t ndr_size_SERVICE_FAILURE_ACTIONS(const struct SERVICE_FAILURE_ACTIONS *r, struct smb_iconv_convenience *ic, int flags)
1132 return ndr_size_struct(r, flags, (ndr_push_flags_fn_t)ndr_push_SERVICE_FAILURE_ACTIONS, ic);
1135 static enum ndr_err_code ndr_push_svcctl_StatusLevel(struct ndr_push *ndr, int ndr_flags, enum svcctl_StatusLevel r)
1137 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r));
1138 return NDR_ERR_SUCCESS;
1141 static enum ndr_err_code ndr_pull_svcctl_StatusLevel(struct ndr_pull *ndr, int ndr_flags, enum svcctl_StatusLevel *r)
1144 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &v));
1146 return NDR_ERR_SUCCESS;
1149 _PUBLIC_ void ndr_print_svcctl_StatusLevel(struct ndr_print *ndr, const char *name, enum svcctl_StatusLevel r)
1151 const char *val = NULL;
1154 case SVC_STATUS_PROCESS_INFO: val = "SVC_STATUS_PROCESS_INFO"; break;
1156 ndr_print_enum(ndr, name, "ENUM", val, r);
1159 static enum ndr_err_code ndr_push_svcctl_CloseServiceHandle(struct ndr_push *ndr, int flags, const struct svcctl_CloseServiceHandle *r)
1161 if (flags & NDR_IN) {
1162 if (r->in.handle == NULL) {
1163 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
1165 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
1167 if (flags & NDR_OUT) {
1168 if (r->out.handle == NULL) {
1169 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
1171 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->out.handle));
1172 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
1174 return NDR_ERR_SUCCESS;
1177 static enum ndr_err_code ndr_pull_svcctl_CloseServiceHandle(struct ndr_pull *ndr, int flags, struct svcctl_CloseServiceHandle *r)
1179 TALLOC_CTX *_mem_save_handle_0;
1180 if (flags & NDR_IN) {
1181 ZERO_STRUCT(r->out);
1183 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
1184 NDR_PULL_ALLOC(ndr, r->in.handle);
1186 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
1187 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
1188 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
1189 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
1190 NDR_PULL_ALLOC(ndr, r->out.handle);
1191 *r->out.handle = *r->in.handle;
1193 if (flags & NDR_OUT) {
1194 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
1195 NDR_PULL_ALLOC(ndr, r->out.handle);
1197 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
1198 NDR_PULL_SET_MEM_CTX(ndr, r->out.handle, LIBNDR_FLAG_REF_ALLOC);
1199 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->out.handle));
1200 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
1201 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
1203 return NDR_ERR_SUCCESS;
1206 _PUBLIC_ void ndr_print_svcctl_CloseServiceHandle(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_CloseServiceHandle *r)
1208 ndr_print_struct(ndr, name, "svcctl_CloseServiceHandle");
1210 if (flags & NDR_SET_VALUES) {
1211 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
1213 if (flags & NDR_IN) {
1214 ndr_print_struct(ndr, "in", "svcctl_CloseServiceHandle");
1216 ndr_print_ptr(ndr, "handle", r->in.handle);
1218 ndr_print_policy_handle(ndr, "handle", r->in.handle);
1222 if (flags & NDR_OUT) {
1223 ndr_print_struct(ndr, "out", "svcctl_CloseServiceHandle");
1225 ndr_print_ptr(ndr, "handle", r->out.handle);
1227 ndr_print_policy_handle(ndr, "handle", r->out.handle);
1229 ndr_print_WERROR(ndr, "result", r->out.result);
1235 static enum ndr_err_code ndr_push_svcctl_ControlService(struct ndr_push *ndr, int flags, const struct svcctl_ControlService *r)
1237 if (flags & NDR_IN) {
1238 if (r->in.handle == NULL) {
1239 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
1241 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
1242 NDR_CHECK(ndr_push_SERVICE_CONTROL(ndr, NDR_SCALARS, r->in.control));
1244 if (flags & NDR_OUT) {
1245 if (r->out.service_status == NULL) {
1246 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
1248 NDR_CHECK(ndr_push_SERVICE_STATUS(ndr, NDR_SCALARS, r->out.service_status));
1249 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
1251 return NDR_ERR_SUCCESS;
1254 static enum ndr_err_code ndr_pull_svcctl_ControlService(struct ndr_pull *ndr, int flags, struct svcctl_ControlService *r)
1256 TALLOC_CTX *_mem_save_handle_0;
1257 TALLOC_CTX *_mem_save_service_status_0;
1258 if (flags & NDR_IN) {
1259 ZERO_STRUCT(r->out);
1261 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
1262 NDR_PULL_ALLOC(ndr, r->in.handle);
1264 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
1265 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
1266 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
1267 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
1268 NDR_CHECK(ndr_pull_SERVICE_CONTROL(ndr, NDR_SCALARS, &r->in.control));
1269 NDR_PULL_ALLOC(ndr, r->out.service_status);
1270 ZERO_STRUCTP(r->out.service_status);
1272 if (flags & NDR_OUT) {
1273 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
1274 NDR_PULL_ALLOC(ndr, r->out.service_status);
1276 _mem_save_service_status_0 = NDR_PULL_GET_MEM_CTX(ndr);
1277 NDR_PULL_SET_MEM_CTX(ndr, r->out.service_status, LIBNDR_FLAG_REF_ALLOC);
1278 NDR_CHECK(ndr_pull_SERVICE_STATUS(ndr, NDR_SCALARS, r->out.service_status));
1279 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_service_status_0, LIBNDR_FLAG_REF_ALLOC);
1280 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
1282 return NDR_ERR_SUCCESS;
1285 _PUBLIC_ void ndr_print_svcctl_ControlService(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_ControlService *r)
1287 ndr_print_struct(ndr, name, "svcctl_ControlService");
1289 if (flags & NDR_SET_VALUES) {
1290 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
1292 if (flags & NDR_IN) {
1293 ndr_print_struct(ndr, "in", "svcctl_ControlService");
1295 ndr_print_ptr(ndr, "handle", r->in.handle);
1297 ndr_print_policy_handle(ndr, "handle", r->in.handle);
1299 ndr_print_SERVICE_CONTROL(ndr, "control", r->in.control);
1302 if (flags & NDR_OUT) {
1303 ndr_print_struct(ndr, "out", "svcctl_ControlService");
1305 ndr_print_ptr(ndr, "service_status", r->out.service_status);
1307 ndr_print_SERVICE_STATUS(ndr, "service_status", r->out.service_status);
1309 ndr_print_WERROR(ndr, "result", r->out.result);
1315 static enum ndr_err_code ndr_push_svcctl_DeleteService(struct ndr_push *ndr, int flags, const struct svcctl_DeleteService *r)
1317 if (flags & NDR_IN) {
1318 if (r->in.handle == NULL) {
1319 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
1321 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
1323 if (flags & NDR_OUT) {
1324 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
1326 return NDR_ERR_SUCCESS;
1329 static enum ndr_err_code ndr_pull_svcctl_DeleteService(struct ndr_pull *ndr, int flags, struct svcctl_DeleteService *r)
1331 TALLOC_CTX *_mem_save_handle_0;
1332 if (flags & NDR_IN) {
1333 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
1334 NDR_PULL_ALLOC(ndr, r->in.handle);
1336 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
1337 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
1338 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
1339 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
1341 if (flags & NDR_OUT) {
1342 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
1344 return NDR_ERR_SUCCESS;
1347 _PUBLIC_ void ndr_print_svcctl_DeleteService(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_DeleteService *r)
1349 ndr_print_struct(ndr, name, "svcctl_DeleteService");
1351 if (flags & NDR_SET_VALUES) {
1352 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
1354 if (flags & NDR_IN) {
1355 ndr_print_struct(ndr, "in", "svcctl_DeleteService");
1357 ndr_print_ptr(ndr, "handle", r->in.handle);
1359 ndr_print_policy_handle(ndr, "handle", r->in.handle);
1363 if (flags & NDR_OUT) {
1364 ndr_print_struct(ndr, "out", "svcctl_DeleteService");
1366 ndr_print_WERROR(ndr, "result", r->out.result);
1372 static enum ndr_err_code ndr_push_svcctl_LockServiceDatabase(struct ndr_push *ndr, int flags, const struct svcctl_LockServiceDatabase *r)
1374 if (flags & NDR_IN) {
1375 if (r->in.handle == NULL) {
1376 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
1378 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
1380 if (flags & NDR_OUT) {
1381 if (r->out.lock == NULL) {
1382 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
1384 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->out.lock));
1385 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
1387 return NDR_ERR_SUCCESS;
1390 static enum ndr_err_code ndr_pull_svcctl_LockServiceDatabase(struct ndr_pull *ndr, int flags, struct svcctl_LockServiceDatabase *r)
1392 TALLOC_CTX *_mem_save_handle_0;
1393 TALLOC_CTX *_mem_save_lock_0;
1394 if (flags & NDR_IN) {
1395 ZERO_STRUCT(r->out);
1397 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
1398 NDR_PULL_ALLOC(ndr, r->in.handle);
1400 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
1401 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
1402 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
1403 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
1404 NDR_PULL_ALLOC(ndr, r->out.lock);
1405 ZERO_STRUCTP(r->out.lock);
1407 if (flags & NDR_OUT) {
1408 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
1409 NDR_PULL_ALLOC(ndr, r->out.lock);
1411 _mem_save_lock_0 = NDR_PULL_GET_MEM_CTX(ndr);
1412 NDR_PULL_SET_MEM_CTX(ndr, r->out.lock, LIBNDR_FLAG_REF_ALLOC);
1413 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->out.lock));
1414 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_lock_0, LIBNDR_FLAG_REF_ALLOC);
1415 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
1417 return NDR_ERR_SUCCESS;
1420 _PUBLIC_ void ndr_print_svcctl_LockServiceDatabase(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_LockServiceDatabase *r)
1422 ndr_print_struct(ndr, name, "svcctl_LockServiceDatabase");
1424 if (flags & NDR_SET_VALUES) {
1425 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
1427 if (flags & NDR_IN) {
1428 ndr_print_struct(ndr, "in", "svcctl_LockServiceDatabase");
1430 ndr_print_ptr(ndr, "handle", r->in.handle);
1432 ndr_print_policy_handle(ndr, "handle", r->in.handle);
1436 if (flags & NDR_OUT) {
1437 ndr_print_struct(ndr, "out", "svcctl_LockServiceDatabase");
1439 ndr_print_ptr(ndr, "lock", r->out.lock);
1441 ndr_print_policy_handle(ndr, "lock", r->out.lock);
1443 ndr_print_WERROR(ndr, "result", r->out.result);
1449 static enum ndr_err_code ndr_push_svcctl_QueryServiceObjectSecurity(struct ndr_push *ndr, int flags, const struct svcctl_QueryServiceObjectSecurity *r)
1451 if (flags & NDR_IN) {
1452 if (r->in.handle == NULL) {
1453 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
1455 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
1456 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.security_flags));
1457 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.buffer_size));
1459 if (flags & NDR_OUT) {
1460 if (r->out.buffer == NULL) {
1461 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
1463 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.buffer_size));
1464 NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->out.buffer, r->in.buffer_size));
1465 if (r->out.needed == NULL) {
1466 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
1468 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.needed));
1469 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
1471 return NDR_ERR_SUCCESS;
1474 static enum ndr_err_code ndr_pull_svcctl_QueryServiceObjectSecurity(struct ndr_pull *ndr, int flags, struct svcctl_QueryServiceObjectSecurity *r)
1476 TALLOC_CTX *_mem_save_handle_0;
1477 TALLOC_CTX *_mem_save_needed_0;
1478 if (flags & NDR_IN) {
1479 ZERO_STRUCT(r->out);
1481 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
1482 NDR_PULL_ALLOC(ndr, r->in.handle);
1484 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
1485 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
1486 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
1487 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
1488 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.security_flags));
1489 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.buffer_size));
1490 if (r->in.buffer_size < 0 || r->in.buffer_size > 0x40000) {
1491 return ndr_pull_error(ndr, NDR_ERR_RANGE, "value out of range");
1493 NDR_PULL_ALLOC_N(ndr, r->out.buffer, r->in.buffer_size);
1494 memset(CONST_DISCARD(struct svcctl_QueryServiceObjectSecurity *,r->out.buffer), 0, (r->in.buffer_size) * sizeof(*r->out.buffer));
1495 NDR_PULL_ALLOC(ndr, r->out.needed);
1496 ZERO_STRUCTP(r->out.needed);
1498 if (flags & NDR_OUT) {
1499 NDR_CHECK(ndr_pull_array_size(ndr, &r->out.buffer));
1500 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
1501 NDR_PULL_ALLOC_N(ndr, r->out.buffer, ndr_get_array_size(ndr, &r->out.buffer));
1503 NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->out.buffer, ndr_get_array_size(ndr, &r->out.buffer)));
1504 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
1505 NDR_PULL_ALLOC(ndr, r->out.needed);
1507 _mem_save_needed_0 = NDR_PULL_GET_MEM_CTX(ndr);
1508 NDR_PULL_SET_MEM_CTX(ndr, r->out.needed, LIBNDR_FLAG_REF_ALLOC);
1509 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.needed));
1510 if (*r->out.needed < 0 || *r->out.needed > 0x40000) {
1511 return ndr_pull_error(ndr, NDR_ERR_RANGE, "value out of range");
1513 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_needed_0, LIBNDR_FLAG_REF_ALLOC);
1514 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
1515 if (r->out.buffer) {
1516 NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->out.buffer, r->in.buffer_size));
1519 return NDR_ERR_SUCCESS;
1522 _PUBLIC_ void ndr_print_svcctl_QueryServiceObjectSecurity(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_QueryServiceObjectSecurity *r)
1524 ndr_print_struct(ndr, name, "svcctl_QueryServiceObjectSecurity");
1526 if (flags & NDR_SET_VALUES) {
1527 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
1529 if (flags & NDR_IN) {
1530 ndr_print_struct(ndr, "in", "svcctl_QueryServiceObjectSecurity");
1532 ndr_print_ptr(ndr, "handle", r->in.handle);
1534 ndr_print_policy_handle(ndr, "handle", r->in.handle);
1536 ndr_print_uint32(ndr, "security_flags", r->in.security_flags);
1537 ndr_print_uint32(ndr, "buffer_size", r->in.buffer_size);
1540 if (flags & NDR_OUT) {
1541 ndr_print_struct(ndr, "out", "svcctl_QueryServiceObjectSecurity");
1543 ndr_print_ptr(ndr, "buffer", r->out.buffer);
1545 ndr_print_array_uint8(ndr, "buffer", r->out.buffer, r->in.buffer_size);
1547 ndr_print_ptr(ndr, "needed", r->out.needed);
1549 ndr_print_uint32(ndr, "needed", *r->out.needed);
1551 ndr_print_WERROR(ndr, "result", r->out.result);
1557 static enum ndr_err_code ndr_push_svcctl_SetServiceObjectSecurity(struct ndr_push *ndr, int flags, const struct svcctl_SetServiceObjectSecurity *r)
1559 if (flags & NDR_IN) {
1560 if (r->in.handle == NULL) {
1561 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
1563 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
1564 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.security_flags));
1565 if (r->in.buffer == NULL) {
1566 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
1568 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.buffer_size));
1569 NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->in.buffer, r->in.buffer_size));
1570 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.buffer_size));
1572 if (flags & NDR_OUT) {
1573 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
1575 return NDR_ERR_SUCCESS;
1578 static enum ndr_err_code ndr_pull_svcctl_SetServiceObjectSecurity(struct ndr_pull *ndr, int flags, struct svcctl_SetServiceObjectSecurity *r)
1580 TALLOC_CTX *_mem_save_handle_0;
1581 if (flags & NDR_IN) {
1582 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
1583 NDR_PULL_ALLOC(ndr, r->in.handle);
1585 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
1586 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
1587 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
1588 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
1589 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.security_flags));
1590 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.buffer));
1591 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
1592 NDR_PULL_ALLOC_N(ndr, r->in.buffer, ndr_get_array_size(ndr, &r->in.buffer));
1594 NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->in.buffer, ndr_get_array_size(ndr, &r->in.buffer)));
1595 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.buffer_size));
1597 NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->in.buffer, r->in.buffer_size));
1600 if (flags & NDR_OUT) {
1601 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
1603 return NDR_ERR_SUCCESS;
1606 _PUBLIC_ void ndr_print_svcctl_SetServiceObjectSecurity(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_SetServiceObjectSecurity *r)
1608 ndr_print_struct(ndr, name, "svcctl_SetServiceObjectSecurity");
1610 if (flags & NDR_SET_VALUES) {
1611 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
1613 if (flags & NDR_IN) {
1614 ndr_print_struct(ndr, "in", "svcctl_SetServiceObjectSecurity");
1616 ndr_print_ptr(ndr, "handle", r->in.handle);
1618 ndr_print_policy_handle(ndr, "handle", r->in.handle);
1620 ndr_print_uint32(ndr, "security_flags", r->in.security_flags);
1621 ndr_print_ptr(ndr, "buffer", r->in.buffer);
1623 ndr_print_array_uint8(ndr, "buffer", r->in.buffer, r->in.buffer_size);
1625 ndr_print_uint32(ndr, "buffer_size", r->in.buffer_size);
1628 if (flags & NDR_OUT) {
1629 ndr_print_struct(ndr, "out", "svcctl_SetServiceObjectSecurity");
1631 ndr_print_WERROR(ndr, "result", r->out.result);
1637 static enum ndr_err_code ndr_push_svcctl_QueryServiceStatus(struct ndr_push *ndr, int flags, const struct svcctl_QueryServiceStatus *r)
1639 if (flags & NDR_IN) {
1640 if (r->in.handle == NULL) {
1641 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
1643 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
1645 if (flags & NDR_OUT) {
1646 if (r->out.service_status == NULL) {
1647 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
1649 NDR_CHECK(ndr_push_SERVICE_STATUS(ndr, NDR_SCALARS, r->out.service_status));
1650 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
1652 return NDR_ERR_SUCCESS;
1655 static enum ndr_err_code ndr_pull_svcctl_QueryServiceStatus(struct ndr_pull *ndr, int flags, struct svcctl_QueryServiceStatus *r)
1657 TALLOC_CTX *_mem_save_handle_0;
1658 TALLOC_CTX *_mem_save_service_status_0;
1659 if (flags & NDR_IN) {
1660 ZERO_STRUCT(r->out);
1662 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
1663 NDR_PULL_ALLOC(ndr, r->in.handle);
1665 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
1666 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
1667 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
1668 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
1669 NDR_PULL_ALLOC(ndr, r->out.service_status);
1670 ZERO_STRUCTP(r->out.service_status);
1672 if (flags & NDR_OUT) {
1673 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
1674 NDR_PULL_ALLOC(ndr, r->out.service_status);
1676 _mem_save_service_status_0 = NDR_PULL_GET_MEM_CTX(ndr);
1677 NDR_PULL_SET_MEM_CTX(ndr, r->out.service_status, LIBNDR_FLAG_REF_ALLOC);
1678 NDR_CHECK(ndr_pull_SERVICE_STATUS(ndr, NDR_SCALARS, r->out.service_status));
1679 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_service_status_0, LIBNDR_FLAG_REF_ALLOC);
1680 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
1682 return NDR_ERR_SUCCESS;
1685 _PUBLIC_ void ndr_print_svcctl_QueryServiceStatus(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_QueryServiceStatus *r)
1687 ndr_print_struct(ndr, name, "svcctl_QueryServiceStatus");
1689 if (flags & NDR_SET_VALUES) {
1690 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
1692 if (flags & NDR_IN) {
1693 ndr_print_struct(ndr, "in", "svcctl_QueryServiceStatus");
1695 ndr_print_ptr(ndr, "handle", r->in.handle);
1697 ndr_print_policy_handle(ndr, "handle", r->in.handle);
1701 if (flags & NDR_OUT) {
1702 ndr_print_struct(ndr, "out", "svcctl_QueryServiceStatus");
1704 ndr_print_ptr(ndr, "service_status", r->out.service_status);
1706 ndr_print_SERVICE_STATUS(ndr, "service_status", r->out.service_status);
1708 ndr_print_WERROR(ndr, "result", r->out.result);
1714 static enum ndr_err_code ndr_push_svcctl_SetServiceStatus(struct ndr_push *ndr, int flags, const struct svcctl_SetServiceStatus *r)
1716 if (flags & NDR_IN) {
1718 if (flags & NDR_OUT) {
1719 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
1721 return NDR_ERR_SUCCESS;
1724 static enum ndr_err_code ndr_pull_svcctl_SetServiceStatus(struct ndr_pull *ndr, int flags, struct svcctl_SetServiceStatus *r)
1726 if (flags & NDR_IN) {
1728 if (flags & NDR_OUT) {
1729 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
1731 return NDR_ERR_SUCCESS;
1734 _PUBLIC_ void ndr_print_svcctl_SetServiceStatus(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_SetServiceStatus *r)
1736 ndr_print_struct(ndr, name, "svcctl_SetServiceStatus");
1738 if (flags & NDR_SET_VALUES) {
1739 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
1741 if (flags & NDR_IN) {
1742 ndr_print_struct(ndr, "in", "svcctl_SetServiceStatus");
1746 if (flags & NDR_OUT) {
1747 ndr_print_struct(ndr, "out", "svcctl_SetServiceStatus");
1749 ndr_print_WERROR(ndr, "result", r->out.result);
1755 static enum ndr_err_code ndr_push_svcctl_UnlockServiceDatabase(struct ndr_push *ndr, int flags, const struct svcctl_UnlockServiceDatabase *r)
1757 if (flags & NDR_IN) {
1758 if (r->in.lock == NULL) {
1759 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
1761 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.lock));
1763 if (flags & NDR_OUT) {
1764 if (r->out.lock == NULL) {
1765 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
1767 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->out.lock));
1768 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
1770 return NDR_ERR_SUCCESS;
1773 static enum ndr_err_code ndr_pull_svcctl_UnlockServiceDatabase(struct ndr_pull *ndr, int flags, struct svcctl_UnlockServiceDatabase *r)
1775 TALLOC_CTX *_mem_save_lock_0;
1776 if (flags & NDR_IN) {
1777 ZERO_STRUCT(r->out);
1779 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
1780 NDR_PULL_ALLOC(ndr, r->in.lock);
1782 _mem_save_lock_0 = NDR_PULL_GET_MEM_CTX(ndr);
1783 NDR_PULL_SET_MEM_CTX(ndr, r->in.lock, LIBNDR_FLAG_REF_ALLOC);
1784 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.lock));
1785 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_lock_0, LIBNDR_FLAG_REF_ALLOC);
1786 NDR_PULL_ALLOC(ndr, r->out.lock);
1787 *r->out.lock = *r->in.lock;
1789 if (flags & NDR_OUT) {
1790 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
1791 NDR_PULL_ALLOC(ndr, r->out.lock);
1793 _mem_save_lock_0 = NDR_PULL_GET_MEM_CTX(ndr);
1794 NDR_PULL_SET_MEM_CTX(ndr, r->out.lock, LIBNDR_FLAG_REF_ALLOC);
1795 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->out.lock));
1796 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_lock_0, LIBNDR_FLAG_REF_ALLOC);
1797 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
1799 return NDR_ERR_SUCCESS;
1802 _PUBLIC_ void ndr_print_svcctl_UnlockServiceDatabase(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_UnlockServiceDatabase *r)
1804 ndr_print_struct(ndr, name, "svcctl_UnlockServiceDatabase");
1806 if (flags & NDR_SET_VALUES) {
1807 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
1809 if (flags & NDR_IN) {
1810 ndr_print_struct(ndr, "in", "svcctl_UnlockServiceDatabase");
1812 ndr_print_ptr(ndr, "lock", r->in.lock);
1814 ndr_print_policy_handle(ndr, "lock", r->in.lock);
1818 if (flags & NDR_OUT) {
1819 ndr_print_struct(ndr, "out", "svcctl_UnlockServiceDatabase");
1821 ndr_print_ptr(ndr, "lock", r->out.lock);
1823 ndr_print_policy_handle(ndr, "lock", r->out.lock);
1825 ndr_print_WERROR(ndr, "result", r->out.result);
1831 static enum ndr_err_code ndr_push_svcctl_NotifyBootConfigStatus(struct ndr_push *ndr, int flags, const struct svcctl_NotifyBootConfigStatus *r)
1833 if (flags & NDR_IN) {
1835 if (flags & NDR_OUT) {
1836 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
1838 return NDR_ERR_SUCCESS;
1841 static enum ndr_err_code ndr_pull_svcctl_NotifyBootConfigStatus(struct ndr_pull *ndr, int flags, struct svcctl_NotifyBootConfigStatus *r)
1843 if (flags & NDR_IN) {
1845 if (flags & NDR_OUT) {
1846 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
1848 return NDR_ERR_SUCCESS;
1851 _PUBLIC_ void ndr_print_svcctl_NotifyBootConfigStatus(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_NotifyBootConfigStatus *r)
1853 ndr_print_struct(ndr, name, "svcctl_NotifyBootConfigStatus");
1855 if (flags & NDR_SET_VALUES) {
1856 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
1858 if (flags & NDR_IN) {
1859 ndr_print_struct(ndr, "in", "svcctl_NotifyBootConfigStatus");
1863 if (flags & NDR_OUT) {
1864 ndr_print_struct(ndr, "out", "svcctl_NotifyBootConfigStatus");
1866 ndr_print_WERROR(ndr, "result", r->out.result);
1872 static enum ndr_err_code ndr_push_svcctl_SCSetServiceBitsW(struct ndr_push *ndr, int flags, const struct svcctl_SCSetServiceBitsW *r)
1874 if (flags & NDR_IN) {
1875 if (r->in.handle == NULL) {
1876 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
1878 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
1879 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.bits));
1880 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.bitson));
1881 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.immediate));
1883 if (flags & NDR_OUT) {
1884 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
1886 return NDR_ERR_SUCCESS;
1889 static enum ndr_err_code ndr_pull_svcctl_SCSetServiceBitsW(struct ndr_pull *ndr, int flags, struct svcctl_SCSetServiceBitsW *r)
1891 TALLOC_CTX *_mem_save_handle_0;
1892 if (flags & NDR_IN) {
1893 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
1894 NDR_PULL_ALLOC(ndr, r->in.handle);
1896 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
1897 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
1898 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
1899 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
1900 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.bits));
1901 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.bitson));
1902 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.immediate));
1904 if (flags & NDR_OUT) {
1905 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
1907 return NDR_ERR_SUCCESS;
1910 _PUBLIC_ void ndr_print_svcctl_SCSetServiceBitsW(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_SCSetServiceBitsW *r)
1912 ndr_print_struct(ndr, name, "svcctl_SCSetServiceBitsW");
1914 if (flags & NDR_SET_VALUES) {
1915 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
1917 if (flags & NDR_IN) {
1918 ndr_print_struct(ndr, "in", "svcctl_SCSetServiceBitsW");
1920 ndr_print_ptr(ndr, "handle", r->in.handle);
1922 ndr_print_policy_handle(ndr, "handle", r->in.handle);
1924 ndr_print_uint32(ndr, "bits", r->in.bits);
1925 ndr_print_uint32(ndr, "bitson", r->in.bitson);
1926 ndr_print_uint32(ndr, "immediate", r->in.immediate);
1929 if (flags & NDR_OUT) {
1930 ndr_print_struct(ndr, "out", "svcctl_SCSetServiceBitsW");
1932 ndr_print_WERROR(ndr, "result", r->out.result);
1938 static enum ndr_err_code ndr_push_svcctl_ChangeServiceConfigW(struct ndr_push *ndr, int flags, const struct svcctl_ChangeServiceConfigW *r)
1940 if (flags & NDR_IN) {
1941 if (r->in.handle == NULL) {
1942 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
1944 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
1945 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.type));
1946 NDR_CHECK(ndr_push_svcctl_StartType(ndr, NDR_SCALARS, r->in.start_type));
1947 NDR_CHECK(ndr_push_svcctl_ErrorControl(ndr, NDR_SCALARS, r->in.error_control));
1948 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.binary_path));
1949 if (r->in.binary_path) {
1950 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.binary_path, CH_UTF16)));
1951 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
1952 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.binary_path, CH_UTF16)));
1953 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));
1955 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.load_order_group));
1956 if (r->in.load_order_group) {
1957 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.load_order_group, CH_UTF16)));
1958 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
1959 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.load_order_group, CH_UTF16)));
1960 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));
1962 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.dependencies));
1963 if (r->in.dependencies) {
1964 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.dependencies, CH_UTF16)));
1965 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
1966 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.dependencies, CH_UTF16)));
1967 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.dependencies, ndr_charset_length(r->in.dependencies, CH_UTF16), sizeof(uint16_t), CH_UTF16));
1969 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.service_start_name));
1970 if (r->in.service_start_name) {
1971 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.service_start_name, CH_UTF16)));
1972 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
1973 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.service_start_name, CH_UTF16)));
1974 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));
1976 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.password));
1977 if (r->in.password) {
1978 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.password, CH_UTF16)));
1979 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
1980 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.password, CH_UTF16)));
1981 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.password, ndr_charset_length(r->in.password, CH_UTF16), sizeof(uint16_t), CH_UTF16));
1983 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.display_name));
1984 if (r->in.display_name) {
1985 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.display_name, CH_UTF16)));
1986 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
1987 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.display_name, CH_UTF16)));
1988 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));
1991 if (flags & NDR_OUT) {
1992 if (r->out.tag_id == NULL) {
1993 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
1995 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.tag_id));
1996 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
1998 return NDR_ERR_SUCCESS;
2001 static enum ndr_err_code ndr_pull_svcctl_ChangeServiceConfigW(struct ndr_pull *ndr, int flags, struct svcctl_ChangeServiceConfigW *r)
2003 uint32_t _ptr_binary_path;
2004 uint32_t _ptr_load_order_group;
2005 uint32_t _ptr_dependencies;
2006 uint32_t _ptr_service_start_name;
2007 uint32_t _ptr_password;
2008 uint32_t _ptr_display_name;
2009 TALLOC_CTX *_mem_save_handle_0;
2010 TALLOC_CTX *_mem_save_binary_path_0;
2011 TALLOC_CTX *_mem_save_load_order_group_0;
2012 TALLOC_CTX *_mem_save_tag_id_0;
2013 TALLOC_CTX *_mem_save_dependencies_0;
2014 TALLOC_CTX *_mem_save_service_start_name_0;
2015 TALLOC_CTX *_mem_save_password_0;
2016 TALLOC_CTX *_mem_save_display_name_0;
2017 if (flags & NDR_IN) {
2018 ZERO_STRUCT(r->out);
2020 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
2021 NDR_PULL_ALLOC(ndr, r->in.handle);
2023 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
2024 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
2025 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
2026 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
2027 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.type));
2028 NDR_CHECK(ndr_pull_svcctl_StartType(ndr, NDR_SCALARS, &r->in.start_type));
2029 NDR_CHECK(ndr_pull_svcctl_ErrorControl(ndr, NDR_SCALARS, &r->in.error_control));
2030 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_binary_path));
2031 if (_ptr_binary_path) {
2032 NDR_PULL_ALLOC(ndr, r->in.binary_path);
2034 r->in.binary_path = NULL;
2036 if (r->in.binary_path) {
2037 _mem_save_binary_path_0 = NDR_PULL_GET_MEM_CTX(ndr);
2038 NDR_PULL_SET_MEM_CTX(ndr, r->in.binary_path, 0);
2039 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.binary_path));
2040 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.binary_path));
2041 if (ndr_get_array_length(ndr, &r->in.binary_path) > ndr_get_array_size(ndr, &r->in.binary_path)) {
2042 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));
2044 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.binary_path), sizeof(uint16_t)));
2045 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));
2046 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_binary_path_0, 0);
2048 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_load_order_group));
2049 if (_ptr_load_order_group) {
2050 NDR_PULL_ALLOC(ndr, r->in.load_order_group);
2052 r->in.load_order_group = NULL;
2054 if (r->in.load_order_group) {
2055 _mem_save_load_order_group_0 = NDR_PULL_GET_MEM_CTX(ndr);
2056 NDR_PULL_SET_MEM_CTX(ndr, r->in.load_order_group, 0);
2057 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.load_order_group));
2058 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.load_order_group));
2059 if (ndr_get_array_length(ndr, &r->in.load_order_group) > ndr_get_array_size(ndr, &r->in.load_order_group)) {
2060 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));
2062 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.load_order_group), sizeof(uint16_t)));
2063 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));
2064 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_load_order_group_0, 0);
2066 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_dependencies));
2067 if (_ptr_dependencies) {
2068 NDR_PULL_ALLOC(ndr, r->in.dependencies);
2070 r->in.dependencies = NULL;
2072 if (r->in.dependencies) {
2073 _mem_save_dependencies_0 = NDR_PULL_GET_MEM_CTX(ndr);
2074 NDR_PULL_SET_MEM_CTX(ndr, r->in.dependencies, 0);
2075 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.dependencies));
2076 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.dependencies));
2077 if (ndr_get_array_length(ndr, &r->in.dependencies) > ndr_get_array_size(ndr, &r->in.dependencies)) {
2078 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));
2080 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.dependencies), sizeof(uint16_t)));
2081 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.dependencies, ndr_get_array_length(ndr, &r->in.dependencies), sizeof(uint16_t), CH_UTF16));
2082 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_dependencies_0, 0);
2084 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_service_start_name));
2085 if (_ptr_service_start_name) {
2086 NDR_PULL_ALLOC(ndr, r->in.service_start_name);
2088 r->in.service_start_name = NULL;
2090 if (r->in.service_start_name) {
2091 _mem_save_service_start_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
2092 NDR_PULL_SET_MEM_CTX(ndr, r->in.service_start_name, 0);
2093 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.service_start_name));
2094 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.service_start_name));
2095 if (ndr_get_array_length(ndr, &r->in.service_start_name) > ndr_get_array_size(ndr, &r->in.service_start_name)) {
2096 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));
2098 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.service_start_name), sizeof(uint16_t)));
2099 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));
2100 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_service_start_name_0, 0);
2102 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_password));
2103 if (_ptr_password) {
2104 NDR_PULL_ALLOC(ndr, r->in.password);
2106 r->in.password = NULL;
2108 if (r->in.password) {
2109 _mem_save_password_0 = NDR_PULL_GET_MEM_CTX(ndr);
2110 NDR_PULL_SET_MEM_CTX(ndr, r->in.password, 0);
2111 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.password));
2112 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.password));
2113 if (ndr_get_array_length(ndr, &r->in.password) > ndr_get_array_size(ndr, &r->in.password)) {
2114 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));
2116 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.password), sizeof(uint16_t)));
2117 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.password, ndr_get_array_length(ndr, &r->in.password), sizeof(uint16_t), CH_UTF16));
2118 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_password_0, 0);
2120 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_display_name));
2121 if (_ptr_display_name) {
2122 NDR_PULL_ALLOC(ndr, r->in.display_name);
2124 r->in.display_name = NULL;
2126 if (r->in.display_name) {
2127 _mem_save_display_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
2128 NDR_PULL_SET_MEM_CTX(ndr, r->in.display_name, 0);
2129 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.display_name));
2130 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.display_name));
2131 if (ndr_get_array_length(ndr, &r->in.display_name) > ndr_get_array_size(ndr, &r->in.display_name)) {
2132 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));
2134 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.display_name), sizeof(uint16_t)));
2135 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));
2136 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_display_name_0, 0);
2138 NDR_PULL_ALLOC(ndr, r->out.tag_id);
2139 ZERO_STRUCTP(r->out.tag_id);
2141 if (flags & NDR_OUT) {
2142 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
2143 NDR_PULL_ALLOC(ndr, r->out.tag_id);
2145 _mem_save_tag_id_0 = NDR_PULL_GET_MEM_CTX(ndr);
2146 NDR_PULL_SET_MEM_CTX(ndr, r->out.tag_id, LIBNDR_FLAG_REF_ALLOC);
2147 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.tag_id));
2148 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_tag_id_0, LIBNDR_FLAG_REF_ALLOC);
2149 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
2151 return NDR_ERR_SUCCESS;
2154 _PUBLIC_ void ndr_print_svcctl_ChangeServiceConfigW(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_ChangeServiceConfigW *r)
2156 ndr_print_struct(ndr, name, "svcctl_ChangeServiceConfigW");
2158 if (flags & NDR_SET_VALUES) {
2159 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
2161 if (flags & NDR_IN) {
2162 ndr_print_struct(ndr, "in", "svcctl_ChangeServiceConfigW");
2164 ndr_print_ptr(ndr, "handle", r->in.handle);
2166 ndr_print_policy_handle(ndr, "handle", r->in.handle);
2168 ndr_print_uint32(ndr, "type", r->in.type);
2169 ndr_print_svcctl_StartType(ndr, "start_type", r->in.start_type);
2170 ndr_print_svcctl_ErrorControl(ndr, "error_control", r->in.error_control);
2171 ndr_print_ptr(ndr, "binary_path", r->in.binary_path);
2173 if (r->in.binary_path) {
2174 ndr_print_string(ndr, "binary_path", r->in.binary_path);
2177 ndr_print_ptr(ndr, "load_order_group", r->in.load_order_group);
2179 if (r->in.load_order_group) {
2180 ndr_print_string(ndr, "load_order_group", r->in.load_order_group);
2183 ndr_print_ptr(ndr, "dependencies", r->in.dependencies);
2185 if (r->in.dependencies) {
2186 ndr_print_string(ndr, "dependencies", r->in.dependencies);
2189 ndr_print_ptr(ndr, "service_start_name", r->in.service_start_name);
2191 if (r->in.service_start_name) {
2192 ndr_print_string(ndr, "service_start_name", r->in.service_start_name);
2195 ndr_print_ptr(ndr, "password", r->in.password);
2197 if (r->in.password) {
2198 ndr_print_string(ndr, "password", r->in.password);
2201 ndr_print_ptr(ndr, "display_name", r->in.display_name);
2203 if (r->in.display_name) {
2204 ndr_print_string(ndr, "display_name", r->in.display_name);
2209 if (flags & NDR_OUT) {
2210 ndr_print_struct(ndr, "out", "svcctl_ChangeServiceConfigW");
2212 ndr_print_ptr(ndr, "tag_id", r->out.tag_id);
2214 ndr_print_uint32(ndr, "tag_id", *r->out.tag_id);
2216 ndr_print_WERROR(ndr, "result", r->out.result);
2222 static enum ndr_err_code ndr_push_svcctl_CreateServiceW(struct ndr_push *ndr, int flags, const struct svcctl_CreateServiceW *r)
2224 if (flags & NDR_IN) {
2225 if (r->in.scmanager_handle == NULL) {
2226 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
2228 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.scmanager_handle));
2229 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.ServiceName, CH_UTF16)));
2230 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
2231 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.ServiceName, CH_UTF16)));
2232 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.ServiceName, ndr_charset_length(r->in.ServiceName, CH_UTF16), sizeof(uint16_t), CH_UTF16));
2233 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.DisplayName));
2234 if (r->in.DisplayName) {
2235 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.DisplayName, CH_UTF16)));
2236 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
2237 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.DisplayName, CH_UTF16)));
2238 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.DisplayName, ndr_charset_length(r->in.DisplayName, CH_UTF16), sizeof(uint16_t), CH_UTF16));
2240 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.desired_access));
2241 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.type));
2242 NDR_CHECK(ndr_push_svcctl_StartType(ndr, NDR_SCALARS, r->in.start_type));
2243 NDR_CHECK(ndr_push_svcctl_ErrorControl(ndr, NDR_SCALARS, r->in.error_control));
2244 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.binary_path, CH_UTF16)));
2245 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
2246 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.binary_path, CH_UTF16)));
2247 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));
2248 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.LoadOrderGroupKey));
2249 if (r->in.LoadOrderGroupKey) {
2250 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.LoadOrderGroupKey, CH_UTF16)));
2251 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
2252 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.LoadOrderGroupKey, CH_UTF16)));
2253 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.LoadOrderGroupKey, ndr_charset_length(r->in.LoadOrderGroupKey, CH_UTF16), sizeof(uint16_t), CH_UTF16));
2255 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.TagId));
2257 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->in.TagId));
2259 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.dependencies));
2260 if (r->in.dependencies) {
2261 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.dependencies_size));
2262 NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->in.dependencies, r->in.dependencies_size));
2264 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.dependencies_size));
2265 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.service_start_name));
2266 if (r->in.service_start_name) {
2267 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.service_start_name, CH_UTF16)));
2268 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
2269 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.service_start_name, CH_UTF16)));
2270 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));
2272 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.password));
2273 if (r->in.password) {
2274 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.password_size));
2275 NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->in.password, r->in.password_size));
2277 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.password_size));
2279 if (flags & NDR_OUT) {
2280 NDR_CHECK(ndr_push_unique_ptr(ndr, r->out.TagId));
2282 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.TagId));
2284 if (r->out.handle == NULL) {
2285 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
2287 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->out.handle));
2288 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
2290 return NDR_ERR_SUCCESS;
2293 static enum ndr_err_code ndr_pull_svcctl_CreateServiceW(struct ndr_pull *ndr, int flags, struct svcctl_CreateServiceW *r)
2295 uint32_t _ptr_DisplayName;
2296 uint32_t _ptr_LoadOrderGroupKey;
2297 uint32_t _ptr_TagId;
2298 uint32_t _ptr_dependencies;
2299 uint32_t _ptr_service_start_name;
2300 uint32_t _ptr_password;
2301 TALLOC_CTX *_mem_save_scmanager_handle_0;
2302 TALLOC_CTX *_mem_save_DisplayName_0;
2303 TALLOC_CTX *_mem_save_LoadOrderGroupKey_0;
2304 TALLOC_CTX *_mem_save_TagId_0;
2305 TALLOC_CTX *_mem_save_dependencies_0;
2306 TALLOC_CTX *_mem_save_service_start_name_0;
2307 TALLOC_CTX *_mem_save_password_0;
2308 TALLOC_CTX *_mem_save_handle_0;
2309 if (flags & NDR_IN) {
2310 ZERO_STRUCT(r->out);
2312 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
2313 NDR_PULL_ALLOC(ndr, r->in.scmanager_handle);
2315 _mem_save_scmanager_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
2316 NDR_PULL_SET_MEM_CTX(ndr, r->in.scmanager_handle, LIBNDR_FLAG_REF_ALLOC);
2317 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.scmanager_handle));
2318 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_scmanager_handle_0, LIBNDR_FLAG_REF_ALLOC);
2319 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.ServiceName));
2320 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.ServiceName));
2321 if (ndr_get_array_length(ndr, &r->in.ServiceName) > ndr_get_array_size(ndr, &r->in.ServiceName)) {
2322 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));
2324 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.ServiceName), sizeof(uint16_t)));
2325 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.ServiceName, ndr_get_array_length(ndr, &r->in.ServiceName), sizeof(uint16_t), CH_UTF16));
2326 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_DisplayName));
2327 if (_ptr_DisplayName) {
2328 NDR_PULL_ALLOC(ndr, r->in.DisplayName);
2330 r->in.DisplayName = NULL;
2332 if (r->in.DisplayName) {
2333 _mem_save_DisplayName_0 = NDR_PULL_GET_MEM_CTX(ndr);
2334 NDR_PULL_SET_MEM_CTX(ndr, r->in.DisplayName, 0);
2335 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.DisplayName));
2336 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.DisplayName));
2337 if (ndr_get_array_length(ndr, &r->in.DisplayName) > ndr_get_array_size(ndr, &r->in.DisplayName)) {
2338 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));
2340 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.DisplayName), sizeof(uint16_t)));
2341 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.DisplayName, ndr_get_array_length(ndr, &r->in.DisplayName), sizeof(uint16_t), CH_UTF16));
2342 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_DisplayName_0, 0);
2344 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.desired_access));
2345 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.type));
2346 NDR_CHECK(ndr_pull_svcctl_StartType(ndr, NDR_SCALARS, &r->in.start_type));
2347 NDR_CHECK(ndr_pull_svcctl_ErrorControl(ndr, NDR_SCALARS, &r->in.error_control));
2348 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.binary_path));
2349 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.binary_path));
2350 if (ndr_get_array_length(ndr, &r->in.binary_path) > ndr_get_array_size(ndr, &r->in.binary_path)) {
2351 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));
2353 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.binary_path), sizeof(uint16_t)));
2354 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));
2355 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_LoadOrderGroupKey));
2356 if (_ptr_LoadOrderGroupKey) {
2357 NDR_PULL_ALLOC(ndr, r->in.LoadOrderGroupKey);
2359 r->in.LoadOrderGroupKey = NULL;
2361 if (r->in.LoadOrderGroupKey) {
2362 _mem_save_LoadOrderGroupKey_0 = NDR_PULL_GET_MEM_CTX(ndr);
2363 NDR_PULL_SET_MEM_CTX(ndr, r->in.LoadOrderGroupKey, 0);
2364 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.LoadOrderGroupKey));
2365 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.LoadOrderGroupKey));
2366 if (ndr_get_array_length(ndr, &r->in.LoadOrderGroupKey) > ndr_get_array_size(ndr, &r->in.LoadOrderGroupKey)) {
2367 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));
2369 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.LoadOrderGroupKey), sizeof(uint16_t)));
2370 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.LoadOrderGroupKey, ndr_get_array_length(ndr, &r->in.LoadOrderGroupKey), sizeof(uint16_t), CH_UTF16));
2371 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_LoadOrderGroupKey_0, 0);
2373 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_TagId));
2375 NDR_PULL_ALLOC(ndr, r->in.TagId);
2380 _mem_save_TagId_0 = NDR_PULL_GET_MEM_CTX(ndr);
2381 NDR_PULL_SET_MEM_CTX(ndr, r->in.TagId, 0);
2382 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->in.TagId));
2383 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_TagId_0, 0);
2385 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_dependencies));
2386 if (_ptr_dependencies) {
2387 NDR_PULL_ALLOC(ndr, r->in.dependencies);
2389 r->in.dependencies = NULL;
2391 if (r->in.dependencies) {
2392 _mem_save_dependencies_0 = NDR_PULL_GET_MEM_CTX(ndr);
2393 NDR_PULL_SET_MEM_CTX(ndr, r->in.dependencies, 0);
2394 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.dependencies));
2395 NDR_PULL_ALLOC_N(ndr, r->in.dependencies, ndr_get_array_size(ndr, &r->in.dependencies));
2396 NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->in.dependencies, ndr_get_array_size(ndr, &r->in.dependencies)));
2397 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_dependencies_0, 0);
2399 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.dependencies_size));
2400 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_service_start_name));
2401 if (_ptr_service_start_name) {
2402 NDR_PULL_ALLOC(ndr, r->in.service_start_name);
2404 r->in.service_start_name = NULL;
2406 if (r->in.service_start_name) {
2407 _mem_save_service_start_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
2408 NDR_PULL_SET_MEM_CTX(ndr, r->in.service_start_name, 0);
2409 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.service_start_name));
2410 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.service_start_name));
2411 if (ndr_get_array_length(ndr, &r->in.service_start_name) > ndr_get_array_size(ndr, &r->in.service_start_name)) {
2412 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));
2414 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.service_start_name), sizeof(uint16_t)));
2415 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));
2416 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_service_start_name_0, 0);
2418 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_password));
2419 if (_ptr_password) {
2420 NDR_PULL_ALLOC(ndr, r->in.password);
2422 r->in.password = NULL;
2424 if (r->in.password) {
2425 _mem_save_password_0 = NDR_PULL_GET_MEM_CTX(ndr);
2426 NDR_PULL_SET_MEM_CTX(ndr, r->in.password, 0);
2427 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.password));
2428 NDR_PULL_ALLOC_N(ndr, r->in.password, ndr_get_array_size(ndr, &r->in.password));
2429 NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->in.password, ndr_get_array_size(ndr, &r->in.password)));
2430 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_password_0, 0);
2432 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.password_size));
2433 NDR_PULL_ALLOC(ndr, r->out.handle);
2434 ZERO_STRUCTP(r->out.handle);
2435 if (r->in.dependencies) {
2436 NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->in.dependencies, r->in.dependencies_size));
2438 if (r->in.password) {
2439 NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->in.password, r->in.password_size));
2442 if (flags & NDR_OUT) {
2443 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_TagId));
2445 NDR_PULL_ALLOC(ndr, r->out.TagId);
2447 r->out.TagId = NULL;
2450 _mem_save_TagId_0 = NDR_PULL_GET_MEM_CTX(ndr);
2451 NDR_PULL_SET_MEM_CTX(ndr, r->out.TagId, 0);
2452 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.TagId));
2453 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_TagId_0, 0);
2455 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
2456 NDR_PULL_ALLOC(ndr, r->out.handle);
2458 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
2459 NDR_PULL_SET_MEM_CTX(ndr, r->out.handle, LIBNDR_FLAG_REF_ALLOC);
2460 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->out.handle));
2461 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
2462 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
2464 return NDR_ERR_SUCCESS;
2467 _PUBLIC_ void ndr_print_svcctl_CreateServiceW(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_CreateServiceW *r)
2469 ndr_print_struct(ndr, name, "svcctl_CreateServiceW");
2471 if (flags & NDR_SET_VALUES) {
2472 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
2474 if (flags & NDR_IN) {
2475 ndr_print_struct(ndr, "in", "svcctl_CreateServiceW");
2477 ndr_print_ptr(ndr, "scmanager_handle", r->in.scmanager_handle);
2479 ndr_print_policy_handle(ndr, "scmanager_handle", r->in.scmanager_handle);
2481 ndr_print_string(ndr, "ServiceName", r->in.ServiceName);
2482 ndr_print_ptr(ndr, "DisplayName", r->in.DisplayName);
2484 if (r->in.DisplayName) {
2485 ndr_print_string(ndr, "DisplayName", r->in.DisplayName);
2488 ndr_print_uint32(ndr, "desired_access", r->in.desired_access);
2489 ndr_print_uint32(ndr, "type", r->in.type);
2490 ndr_print_svcctl_StartType(ndr, "start_type", r->in.start_type);
2491 ndr_print_svcctl_ErrorControl(ndr, "error_control", r->in.error_control);
2492 ndr_print_string(ndr, "binary_path", r->in.binary_path);
2493 ndr_print_ptr(ndr, "LoadOrderGroupKey", r->in.LoadOrderGroupKey);
2495 if (r->in.LoadOrderGroupKey) {
2496 ndr_print_string(ndr, "LoadOrderGroupKey", r->in.LoadOrderGroupKey);
2499 ndr_print_ptr(ndr, "TagId", r->in.TagId);
2502 ndr_print_uint32(ndr, "TagId", *r->in.TagId);
2505 ndr_print_ptr(ndr, "dependencies", r->in.dependencies);
2507 if (r->in.dependencies) {
2508 ndr_print_array_uint8(ndr, "dependencies", r->in.dependencies, r->in.dependencies_size);
2511 ndr_print_uint32(ndr, "dependencies_size", r->in.dependencies_size);
2512 ndr_print_ptr(ndr, "service_start_name", r->in.service_start_name);
2514 if (r->in.service_start_name) {
2515 ndr_print_string(ndr, "service_start_name", r->in.service_start_name);
2518 ndr_print_ptr(ndr, "password", r->in.password);
2520 if (r->in.password) {
2521 ndr_print_array_uint8(ndr, "password", r->in.password, r->in.password_size);
2524 ndr_print_uint32(ndr, "password_size", r->in.password_size);
2527 if (flags & NDR_OUT) {
2528 ndr_print_struct(ndr, "out", "svcctl_CreateServiceW");
2530 ndr_print_ptr(ndr, "TagId", r->out.TagId);
2533 ndr_print_uint32(ndr, "TagId", *r->out.TagId);
2536 ndr_print_ptr(ndr, "handle", r->out.handle);
2538 ndr_print_policy_handle(ndr, "handle", r->out.handle);
2540 ndr_print_WERROR(ndr, "result", r->out.result);
2546 static enum ndr_err_code ndr_push_svcctl_EnumDependentServicesW(struct ndr_push *ndr, int flags, const struct svcctl_EnumDependentServicesW *r)
2548 if (flags & NDR_IN) {
2549 if (r->in.service == NULL) {
2550 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
2552 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.service));
2553 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.state));
2554 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.buf_size));
2556 if (flags & NDR_OUT) {
2557 if (r->out.service_status == NULL) {
2558 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
2560 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.buf_size));
2561 NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->out.service_status, r->in.buf_size));
2562 if (r->out.bytes_needed == NULL) {
2563 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
2565 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.bytes_needed));
2566 if (r->out.services_returned == NULL) {
2567 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
2569 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.services_returned));
2570 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
2572 return NDR_ERR_SUCCESS;
2575 static enum ndr_err_code ndr_pull_svcctl_EnumDependentServicesW(struct ndr_pull *ndr, int flags, struct svcctl_EnumDependentServicesW *r)
2577 TALLOC_CTX *_mem_save_service_0;
2578 TALLOC_CTX *_mem_save_bytes_needed_0;
2579 TALLOC_CTX *_mem_save_services_returned_0;
2580 if (flags & NDR_IN) {
2581 ZERO_STRUCT(r->out);
2583 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
2584 NDR_PULL_ALLOC(ndr, r->in.service);
2586 _mem_save_service_0 = NDR_PULL_GET_MEM_CTX(ndr);
2587 NDR_PULL_SET_MEM_CTX(ndr, r->in.service, LIBNDR_FLAG_REF_ALLOC);
2588 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.service));
2589 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_service_0, LIBNDR_FLAG_REF_ALLOC);
2590 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.state));
2591 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.buf_size));
2592 if (r->in.buf_size < 0 || r->in.buf_size > 0x40000) {
2593 return ndr_pull_error(ndr, NDR_ERR_RANGE, "value out of range");
2595 NDR_PULL_ALLOC_N(ndr, r->out.service_status, r->in.buf_size);
2596 memset(CONST_DISCARD(struct svcctl_EnumDependentServicesW *,r->out.service_status), 0, (r->in.buf_size) * sizeof(*r->out.service_status));
2597 NDR_PULL_ALLOC(ndr, r->out.bytes_needed);
2598 ZERO_STRUCTP(r->out.bytes_needed);
2599 NDR_PULL_ALLOC(ndr, r->out.services_returned);
2600 ZERO_STRUCTP(r->out.services_returned);
2602 if (flags & NDR_OUT) {
2603 NDR_CHECK(ndr_pull_array_size(ndr, &r->out.service_status));
2604 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
2605 NDR_PULL_ALLOC_N(ndr, r->out.service_status, ndr_get_array_size(ndr, &r->out.service_status));
2607 NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->out.service_status, ndr_get_array_size(ndr, &r->out.service_status)));
2608 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
2609 NDR_PULL_ALLOC(ndr, r->out.bytes_needed);
2611 _mem_save_bytes_needed_0 = NDR_PULL_GET_MEM_CTX(ndr);
2612 NDR_PULL_SET_MEM_CTX(ndr, r->out.bytes_needed, LIBNDR_FLAG_REF_ALLOC);
2613 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.bytes_needed));
2614 if (*r->out.bytes_needed < 0 || *r->out.bytes_needed > 0x40000) {
2615 return ndr_pull_error(ndr, NDR_ERR_RANGE, "value out of range");
2617 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_bytes_needed_0, LIBNDR_FLAG_REF_ALLOC);
2618 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
2619 NDR_PULL_ALLOC(ndr, r->out.services_returned);
2621 _mem_save_services_returned_0 = NDR_PULL_GET_MEM_CTX(ndr);
2622 NDR_PULL_SET_MEM_CTX(ndr, r->out.services_returned, LIBNDR_FLAG_REF_ALLOC);
2623 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.services_returned));
2624 if (*r->out.services_returned < 0 || *r->out.services_returned > 0x40000) {
2625 return ndr_pull_error(ndr, NDR_ERR_RANGE, "value out of range");
2627 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_services_returned_0, LIBNDR_FLAG_REF_ALLOC);
2628 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
2629 if (r->out.service_status) {
2630 NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->out.service_status, r->in.buf_size));
2633 return NDR_ERR_SUCCESS;
2636 _PUBLIC_ void ndr_print_svcctl_EnumDependentServicesW(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_EnumDependentServicesW *r)
2638 ndr_print_struct(ndr, name, "svcctl_EnumDependentServicesW");
2640 if (flags & NDR_SET_VALUES) {
2641 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
2643 if (flags & NDR_IN) {
2644 ndr_print_struct(ndr, "in", "svcctl_EnumDependentServicesW");
2646 ndr_print_ptr(ndr, "service", r->in.service);
2648 ndr_print_policy_handle(ndr, "service", r->in.service);
2650 ndr_print_uint32(ndr, "state", r->in.state);
2651 ndr_print_uint32(ndr, "buf_size", r->in.buf_size);
2654 if (flags & NDR_OUT) {
2655 ndr_print_struct(ndr, "out", "svcctl_EnumDependentServicesW");
2657 ndr_print_ptr(ndr, "service_status", r->out.service_status);
2659 ndr_print_array_uint8(ndr, "service_status", r->out.service_status, r->in.buf_size);
2661 ndr_print_ptr(ndr, "bytes_needed", r->out.bytes_needed);
2663 ndr_print_uint32(ndr, "bytes_needed", *r->out.bytes_needed);
2665 ndr_print_ptr(ndr, "services_returned", r->out.services_returned);
2667 ndr_print_uint32(ndr, "services_returned", *r->out.services_returned);
2669 ndr_print_WERROR(ndr, "result", r->out.result);
2675 static enum ndr_err_code ndr_push_svcctl_EnumServicesStatusW(struct ndr_push *ndr, int flags, const struct svcctl_EnumServicesStatusW *r)
2677 if (flags & NDR_IN) {
2678 if (r->in.handle == NULL) {
2679 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
2681 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
2682 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.type));
2683 NDR_CHECK(ndr_push_svcctl_ServiceState(ndr, NDR_SCALARS, r->in.state));
2684 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.buf_size));
2685 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.resume_handle));
2686 if (r->in.resume_handle) {
2687 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->in.resume_handle));
2690 if (flags & NDR_OUT) {
2691 if (r->out.service == NULL) {
2692 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
2694 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.buf_size));
2695 NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->out.service, r->in.buf_size));
2696 if (r->out.bytes_needed == NULL) {
2697 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
2699 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.bytes_needed));
2700 if (r->out.services_returned == NULL) {
2701 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
2703 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.services_returned));
2704 NDR_CHECK(ndr_push_unique_ptr(ndr, r->out.resume_handle));
2705 if (r->out.resume_handle) {
2706 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.resume_handle));
2708 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
2710 return NDR_ERR_SUCCESS;
2713 static enum ndr_err_code ndr_pull_svcctl_EnumServicesStatusW(struct ndr_pull *ndr, int flags, struct svcctl_EnumServicesStatusW *r)
2715 uint32_t _ptr_resume_handle;
2716 TALLOC_CTX *_mem_save_handle_0;
2717 TALLOC_CTX *_mem_save_bytes_needed_0;
2718 TALLOC_CTX *_mem_save_services_returned_0;
2719 TALLOC_CTX *_mem_save_resume_handle_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.handle);
2726 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
2727 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
2728 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
2729 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
2730 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.type));
2731 NDR_CHECK(ndr_pull_svcctl_ServiceState(ndr, NDR_SCALARS, &r->in.state));
2732 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.buf_size));
2733 if (r->in.buf_size < 0 || r->in.buf_size > 262144) {
2734 return ndr_pull_error(ndr, NDR_ERR_RANGE, "value out of range");
2736 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_resume_handle));
2737 if (_ptr_resume_handle) {
2738 NDR_PULL_ALLOC(ndr, r->in.resume_handle);
2740 r->in.resume_handle = NULL;
2742 if (r->in.resume_handle) {
2743 _mem_save_resume_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
2744 NDR_PULL_SET_MEM_CTX(ndr, r->in.resume_handle, 0);
2745 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->in.resume_handle));
2746 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_resume_handle_0, 0);
2748 NDR_PULL_ALLOC_N(ndr, r->out.service, r->in.buf_size);
2749 memset(CONST_DISCARD(struct svcctl_EnumServicesStatusW *,r->out.service), 0, (r->in.buf_size) * sizeof(*r->out.service));
2750 NDR_PULL_ALLOC(ndr, r->out.bytes_needed);
2751 ZERO_STRUCTP(r->out.bytes_needed);
2752 NDR_PULL_ALLOC(ndr, r->out.services_returned);
2753 ZERO_STRUCTP(r->out.services_returned);
2755 if (flags & NDR_OUT) {
2756 NDR_CHECK(ndr_pull_array_size(ndr, &r->out.service));
2757 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
2758 NDR_PULL_ALLOC_N(ndr, r->out.service, ndr_get_array_size(ndr, &r->out.service));
2760 NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->out.service, ndr_get_array_size(ndr, &r->out.service)));
2761 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
2762 NDR_PULL_ALLOC(ndr, r->out.bytes_needed);
2764 _mem_save_bytes_needed_0 = NDR_PULL_GET_MEM_CTX(ndr);
2765 NDR_PULL_SET_MEM_CTX(ndr, r->out.bytes_needed, LIBNDR_FLAG_REF_ALLOC);
2766 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.bytes_needed));
2767 if (*r->out.bytes_needed < 0 || *r->out.bytes_needed > 262144) {
2768 return ndr_pull_error(ndr, NDR_ERR_RANGE, "value out of range");
2770 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_bytes_needed_0, LIBNDR_FLAG_REF_ALLOC);
2771 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
2772 NDR_PULL_ALLOC(ndr, r->out.services_returned);
2774 _mem_save_services_returned_0 = NDR_PULL_GET_MEM_CTX(ndr);
2775 NDR_PULL_SET_MEM_CTX(ndr, r->out.services_returned, LIBNDR_FLAG_REF_ALLOC);
2776 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.services_returned));
2777 if (*r->out.services_returned < 0 || *r->out.services_returned > 262144) {
2778 return ndr_pull_error(ndr, NDR_ERR_RANGE, "value out of range");
2780 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_services_returned_0, LIBNDR_FLAG_REF_ALLOC);
2781 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_resume_handle));
2782 if (_ptr_resume_handle) {
2783 NDR_PULL_ALLOC(ndr, r->out.resume_handle);
2785 r->out.resume_handle = NULL;
2787 if (r->out.resume_handle) {
2788 _mem_save_resume_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
2789 NDR_PULL_SET_MEM_CTX(ndr, r->out.resume_handle, 0);
2790 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.resume_handle));
2791 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_resume_handle_0, 0);
2793 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
2794 if (r->out.service) {
2795 NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->out.service, r->in.buf_size));
2798 return NDR_ERR_SUCCESS;
2801 _PUBLIC_ void ndr_print_svcctl_EnumServicesStatusW(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_EnumServicesStatusW *r)
2803 ndr_print_struct(ndr, name, "svcctl_EnumServicesStatusW");
2805 if (flags & NDR_SET_VALUES) {
2806 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
2808 if (flags & NDR_IN) {
2809 ndr_print_struct(ndr, "in", "svcctl_EnumServicesStatusW");
2811 ndr_print_ptr(ndr, "handle", r->in.handle);
2813 ndr_print_policy_handle(ndr, "handle", r->in.handle);
2815 ndr_print_uint32(ndr, "type", r->in.type);
2816 ndr_print_svcctl_ServiceState(ndr, "state", r->in.state);
2817 ndr_print_uint32(ndr, "buf_size", r->in.buf_size);
2818 ndr_print_ptr(ndr, "resume_handle", r->in.resume_handle);
2820 if (r->in.resume_handle) {
2821 ndr_print_uint32(ndr, "resume_handle", *r->in.resume_handle);
2826 if (flags & NDR_OUT) {
2827 ndr_print_struct(ndr, "out", "svcctl_EnumServicesStatusW");
2829 ndr_print_ptr(ndr, "service", r->out.service);
2831 ndr_print_array_uint8(ndr, "service", r->out.service, r->in.buf_size);
2833 ndr_print_ptr(ndr, "bytes_needed", r->out.bytes_needed);
2835 ndr_print_uint32(ndr, "bytes_needed", *r->out.bytes_needed);
2837 ndr_print_ptr(ndr, "services_returned", r->out.services_returned);
2839 ndr_print_uint32(ndr, "services_returned", *r->out.services_returned);
2841 ndr_print_ptr(ndr, "resume_handle", r->out.resume_handle);
2843 if (r->out.resume_handle) {
2844 ndr_print_uint32(ndr, "resume_handle", *r->out.resume_handle);
2847 ndr_print_WERROR(ndr, "result", r->out.result);
2853 static enum ndr_err_code ndr_push_svcctl_OpenSCManagerW(struct ndr_push *ndr, int flags, const struct svcctl_OpenSCManagerW *r)
2855 if (flags & NDR_IN) {
2856 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.MachineName));
2857 if (r->in.MachineName) {
2858 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.MachineName, CH_UTF16)));
2859 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
2860 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.MachineName, CH_UTF16)));
2861 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.MachineName, ndr_charset_length(r->in.MachineName, CH_UTF16), sizeof(uint16_t), CH_UTF16));
2863 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.DatabaseName));
2864 if (r->in.DatabaseName) {
2865 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.DatabaseName, CH_UTF16)));
2866 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
2867 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.DatabaseName, CH_UTF16)));
2868 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.DatabaseName, ndr_charset_length(r->in.DatabaseName, CH_UTF16), sizeof(uint16_t), CH_UTF16));
2870 NDR_CHECK(ndr_push_svcctl_MgrAccessMask(ndr, NDR_SCALARS, r->in.access_mask));
2872 if (flags & NDR_OUT) {
2873 if (r->out.handle == NULL) {
2874 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
2876 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->out.handle));
2877 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
2879 return NDR_ERR_SUCCESS;
2882 static enum ndr_err_code ndr_pull_svcctl_OpenSCManagerW(struct ndr_pull *ndr, int flags, struct svcctl_OpenSCManagerW *r)
2884 uint32_t _ptr_MachineName;
2885 uint32_t _ptr_DatabaseName;
2886 TALLOC_CTX *_mem_save_MachineName_0;
2887 TALLOC_CTX *_mem_save_DatabaseName_0;
2888 TALLOC_CTX *_mem_save_handle_0;
2889 if (flags & NDR_IN) {
2890 ZERO_STRUCT(r->out);
2892 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_MachineName));
2893 if (_ptr_MachineName) {
2894 NDR_PULL_ALLOC(ndr, r->in.MachineName);
2896 r->in.MachineName = NULL;
2898 if (r->in.MachineName) {
2899 _mem_save_MachineName_0 = NDR_PULL_GET_MEM_CTX(ndr);
2900 NDR_PULL_SET_MEM_CTX(ndr, r->in.MachineName, 0);
2901 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.MachineName));
2902 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.MachineName));
2903 if (ndr_get_array_length(ndr, &r->in.MachineName) > ndr_get_array_size(ndr, &r->in.MachineName)) {
2904 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));
2906 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.MachineName), sizeof(uint16_t)));
2907 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.MachineName, ndr_get_array_length(ndr, &r->in.MachineName), sizeof(uint16_t), CH_UTF16));
2908 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_MachineName_0, 0);
2910 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_DatabaseName));
2911 if (_ptr_DatabaseName) {
2912 NDR_PULL_ALLOC(ndr, r->in.DatabaseName);
2914 r->in.DatabaseName = NULL;
2916 if (r->in.DatabaseName) {
2917 _mem_save_DatabaseName_0 = NDR_PULL_GET_MEM_CTX(ndr);
2918 NDR_PULL_SET_MEM_CTX(ndr, r->in.DatabaseName, 0);
2919 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.DatabaseName));
2920 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.DatabaseName));
2921 if (ndr_get_array_length(ndr, &r->in.DatabaseName) > ndr_get_array_size(ndr, &r->in.DatabaseName)) {
2922 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));
2924 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.DatabaseName), sizeof(uint16_t)));
2925 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.DatabaseName, ndr_get_array_length(ndr, &r->in.DatabaseName), sizeof(uint16_t), CH_UTF16));
2926 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_DatabaseName_0, 0);
2928 NDR_CHECK(ndr_pull_svcctl_MgrAccessMask(ndr, NDR_SCALARS, &r->in.access_mask));
2929 NDR_PULL_ALLOC(ndr, r->out.handle);
2930 ZERO_STRUCTP(r->out.handle);
2932 if (flags & NDR_OUT) {
2933 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
2934 NDR_PULL_ALLOC(ndr, r->out.handle);
2936 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
2937 NDR_PULL_SET_MEM_CTX(ndr, r->out.handle, LIBNDR_FLAG_REF_ALLOC);
2938 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->out.handle));
2939 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
2940 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
2942 return NDR_ERR_SUCCESS;
2945 _PUBLIC_ void ndr_print_svcctl_OpenSCManagerW(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_OpenSCManagerW *r)
2947 ndr_print_struct(ndr, name, "svcctl_OpenSCManagerW");
2949 if (flags & NDR_SET_VALUES) {
2950 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
2952 if (flags & NDR_IN) {
2953 ndr_print_struct(ndr, "in", "svcctl_OpenSCManagerW");
2955 ndr_print_ptr(ndr, "MachineName", r->in.MachineName);
2957 if (r->in.MachineName) {
2958 ndr_print_string(ndr, "MachineName", r->in.MachineName);
2961 ndr_print_ptr(ndr, "DatabaseName", r->in.DatabaseName);
2963 if (r->in.DatabaseName) {
2964 ndr_print_string(ndr, "DatabaseName", r->in.DatabaseName);
2967 ndr_print_svcctl_MgrAccessMask(ndr, "access_mask", r->in.access_mask);
2970 if (flags & NDR_OUT) {
2971 ndr_print_struct(ndr, "out", "svcctl_OpenSCManagerW");
2973 ndr_print_ptr(ndr, "handle", r->out.handle);
2975 ndr_print_policy_handle(ndr, "handle", r->out.handle);
2977 ndr_print_WERROR(ndr, "result", r->out.result);
2983 static enum ndr_err_code ndr_push_svcctl_OpenServiceW(struct ndr_push *ndr, int flags, const struct svcctl_OpenServiceW *r)
2985 if (flags & NDR_IN) {
2986 if (r->in.scmanager_handle == NULL) {
2987 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
2989 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.scmanager_handle));
2990 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.ServiceName, CH_UTF16)));
2991 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
2992 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.ServiceName, CH_UTF16)));
2993 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.ServiceName, ndr_charset_length(r->in.ServiceName, CH_UTF16), sizeof(uint16_t), CH_UTF16));
2994 NDR_CHECK(ndr_push_svcctl_ServiceAccessMask(ndr, NDR_SCALARS, r->in.access_mask));
2996 if (flags & NDR_OUT) {
2997 if (r->out.handle == NULL) {
2998 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
3000 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->out.handle));
3001 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
3003 return NDR_ERR_SUCCESS;
3006 static enum ndr_err_code ndr_pull_svcctl_OpenServiceW(struct ndr_pull *ndr, int flags, struct svcctl_OpenServiceW *r)
3008 TALLOC_CTX *_mem_save_scmanager_handle_0;
3009 TALLOC_CTX *_mem_save_handle_0;
3010 if (flags & NDR_IN) {
3011 ZERO_STRUCT(r->out);
3013 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
3014 NDR_PULL_ALLOC(ndr, r->in.scmanager_handle);
3016 _mem_save_scmanager_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
3017 NDR_PULL_SET_MEM_CTX(ndr, r->in.scmanager_handle, LIBNDR_FLAG_REF_ALLOC);
3018 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.scmanager_handle));
3019 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_scmanager_handle_0, LIBNDR_FLAG_REF_ALLOC);
3020 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.ServiceName));
3021 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.ServiceName));
3022 if (ndr_get_array_length(ndr, &r->in.ServiceName) > ndr_get_array_size(ndr, &r->in.ServiceName)) {
3023 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));
3025 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.ServiceName), sizeof(uint16_t)));
3026 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.ServiceName, ndr_get_array_length(ndr, &r->in.ServiceName), sizeof(uint16_t), CH_UTF16));
3027 NDR_CHECK(ndr_pull_svcctl_ServiceAccessMask(ndr, NDR_SCALARS, &r->in.access_mask));
3028 NDR_PULL_ALLOC(ndr, r->out.handle);
3029 ZERO_STRUCTP(r->out.handle);
3031 if (flags & NDR_OUT) {
3032 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
3033 NDR_PULL_ALLOC(ndr, r->out.handle);
3035 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
3036 NDR_PULL_SET_MEM_CTX(ndr, r->out.handle, LIBNDR_FLAG_REF_ALLOC);
3037 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->out.handle));
3038 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
3039 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
3041 return NDR_ERR_SUCCESS;
3044 _PUBLIC_ void ndr_print_svcctl_OpenServiceW(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_OpenServiceW *r)
3046 ndr_print_struct(ndr, name, "svcctl_OpenServiceW");
3048 if (flags & NDR_SET_VALUES) {
3049 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
3051 if (flags & NDR_IN) {
3052 ndr_print_struct(ndr, "in", "svcctl_OpenServiceW");
3054 ndr_print_ptr(ndr, "scmanager_handle", r->in.scmanager_handle);
3056 ndr_print_policy_handle(ndr, "scmanager_handle", r->in.scmanager_handle);
3058 ndr_print_string(ndr, "ServiceName", r->in.ServiceName);
3059 ndr_print_svcctl_ServiceAccessMask(ndr, "access_mask", r->in.access_mask);
3062 if (flags & NDR_OUT) {
3063 ndr_print_struct(ndr, "out", "svcctl_OpenServiceW");
3065 ndr_print_ptr(ndr, "handle", r->out.handle);
3067 ndr_print_policy_handle(ndr, "handle", r->out.handle);
3069 ndr_print_WERROR(ndr, "result", r->out.result);
3075 static enum ndr_err_code ndr_push_svcctl_QueryServiceConfigW(struct ndr_push *ndr, int flags, const struct svcctl_QueryServiceConfigW *r)
3077 if (flags & NDR_IN) {
3078 if (r->in.handle == NULL) {
3079 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
3081 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
3082 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.buf_size));
3084 if (flags & NDR_OUT) {
3085 if (r->out.query == NULL) {
3086 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
3088 NDR_CHECK(ndr_push_QUERY_SERVICE_CONFIG(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.query));
3089 if (r->out.bytes_needed == NULL) {
3090 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
3092 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.bytes_needed));
3093 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
3095 return NDR_ERR_SUCCESS;
3098 static enum ndr_err_code ndr_pull_svcctl_QueryServiceConfigW(struct ndr_pull *ndr, int flags, struct svcctl_QueryServiceConfigW *r)
3100 TALLOC_CTX *_mem_save_handle_0;
3101 TALLOC_CTX *_mem_save_query_0;
3102 TALLOC_CTX *_mem_save_bytes_needed_0;
3103 if (flags & NDR_IN) {
3104 ZERO_STRUCT(r->out);
3106 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
3107 NDR_PULL_ALLOC(ndr, r->in.handle);
3109 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
3110 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
3111 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
3112 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
3113 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.buf_size));
3114 if (r->in.buf_size < 0 || r->in.buf_size > 8192) {
3115 return ndr_pull_error(ndr, NDR_ERR_RANGE, "value out of range");
3117 NDR_PULL_ALLOC(ndr, r->out.query);
3118 ZERO_STRUCTP(r->out.query);
3119 NDR_PULL_ALLOC(ndr, r->out.bytes_needed);
3120 ZERO_STRUCTP(r->out.bytes_needed);
3122 if (flags & NDR_OUT) {
3123 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
3124 NDR_PULL_ALLOC(ndr, r->out.query);
3126 _mem_save_query_0 = NDR_PULL_GET_MEM_CTX(ndr);
3127 NDR_PULL_SET_MEM_CTX(ndr, r->out.query, LIBNDR_FLAG_REF_ALLOC);
3128 NDR_CHECK(ndr_pull_QUERY_SERVICE_CONFIG(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.query));
3129 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_query_0, LIBNDR_FLAG_REF_ALLOC);
3130 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
3131 NDR_PULL_ALLOC(ndr, r->out.bytes_needed);
3133 _mem_save_bytes_needed_0 = NDR_PULL_GET_MEM_CTX(ndr);
3134 NDR_PULL_SET_MEM_CTX(ndr, r->out.bytes_needed, LIBNDR_FLAG_REF_ALLOC);
3135 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.bytes_needed));
3136 if (*r->out.bytes_needed < 0 || *r->out.bytes_needed > 8192) {
3137 return ndr_pull_error(ndr, NDR_ERR_RANGE, "value out of range");
3139 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_bytes_needed_0, LIBNDR_FLAG_REF_ALLOC);
3140 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
3142 return NDR_ERR_SUCCESS;
3145 _PUBLIC_ void ndr_print_svcctl_QueryServiceConfigW(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_QueryServiceConfigW *r)
3147 ndr_print_struct(ndr, name, "svcctl_QueryServiceConfigW");
3149 if (flags & NDR_SET_VALUES) {
3150 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
3152 if (flags & NDR_IN) {
3153 ndr_print_struct(ndr, "in", "svcctl_QueryServiceConfigW");
3155 ndr_print_ptr(ndr, "handle", r->in.handle);
3157 ndr_print_policy_handle(ndr, "handle", r->in.handle);
3159 ndr_print_uint32(ndr, "buf_size", r->in.buf_size);
3162 if (flags & NDR_OUT) {
3163 ndr_print_struct(ndr, "out", "svcctl_QueryServiceConfigW");
3165 ndr_print_ptr(ndr, "query", r->out.query);
3167 ndr_print_QUERY_SERVICE_CONFIG(ndr, "query", r->out.query);
3169 ndr_print_ptr(ndr, "bytes_needed", r->out.bytes_needed);
3171 ndr_print_uint32(ndr, "bytes_needed", *r->out.bytes_needed);
3173 ndr_print_WERROR(ndr, "result", r->out.result);
3179 static enum ndr_err_code ndr_push_svcctl_QueryServiceLockStatusW(struct ndr_push *ndr, int flags, const struct svcctl_QueryServiceLockStatusW *r)
3181 if (flags & NDR_IN) {
3182 if (r->in.handle == NULL) {
3183 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
3185 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
3186 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.buf_size));
3188 if (flags & NDR_OUT) {
3189 if (r->out.lock_status == NULL) {
3190 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
3192 NDR_CHECK(ndr_push_SERVICE_LOCK_STATUS(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.lock_status));
3193 if (r->out.required_buf_size == NULL) {
3194 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
3196 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.required_buf_size));
3197 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
3199 return NDR_ERR_SUCCESS;
3202 static enum ndr_err_code ndr_pull_svcctl_QueryServiceLockStatusW(struct ndr_pull *ndr, int flags, struct svcctl_QueryServiceLockStatusW *r)
3204 TALLOC_CTX *_mem_save_handle_0;
3205 TALLOC_CTX *_mem_save_lock_status_0;
3206 TALLOC_CTX *_mem_save_required_buf_size_0;
3207 if (flags & NDR_IN) {
3208 ZERO_STRUCT(r->out);
3210 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
3211 NDR_PULL_ALLOC(ndr, r->in.handle);
3213 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
3214 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
3215 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
3216 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
3217 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.buf_size));
3218 NDR_PULL_ALLOC(ndr, r->out.lock_status);
3219 ZERO_STRUCTP(r->out.lock_status);
3220 NDR_PULL_ALLOC(ndr, r->out.required_buf_size);
3221 ZERO_STRUCTP(r->out.required_buf_size);
3223 if (flags & NDR_OUT) {
3224 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
3225 NDR_PULL_ALLOC(ndr, r->out.lock_status);
3227 _mem_save_lock_status_0 = NDR_PULL_GET_MEM_CTX(ndr);
3228 NDR_PULL_SET_MEM_CTX(ndr, r->out.lock_status, LIBNDR_FLAG_REF_ALLOC);
3229 NDR_CHECK(ndr_pull_SERVICE_LOCK_STATUS(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.lock_status));
3230 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_lock_status_0, LIBNDR_FLAG_REF_ALLOC);
3231 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
3232 NDR_PULL_ALLOC(ndr, r->out.required_buf_size);
3234 _mem_save_required_buf_size_0 = NDR_PULL_GET_MEM_CTX(ndr);
3235 NDR_PULL_SET_MEM_CTX(ndr, r->out.required_buf_size, LIBNDR_FLAG_REF_ALLOC);
3236 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.required_buf_size));
3237 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_required_buf_size_0, LIBNDR_FLAG_REF_ALLOC);
3238 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
3240 return NDR_ERR_SUCCESS;
3243 _PUBLIC_ void ndr_print_svcctl_QueryServiceLockStatusW(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_QueryServiceLockStatusW *r)
3245 ndr_print_struct(ndr, name, "svcctl_QueryServiceLockStatusW");
3247 if (flags & NDR_SET_VALUES) {
3248 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
3250 if (flags & NDR_IN) {
3251 ndr_print_struct(ndr, "in", "svcctl_QueryServiceLockStatusW");
3253 ndr_print_ptr(ndr, "handle", r->in.handle);
3255 ndr_print_policy_handle(ndr, "handle", r->in.handle);
3257 ndr_print_uint32(ndr, "buf_size", r->in.buf_size);
3260 if (flags & NDR_OUT) {
3261 ndr_print_struct(ndr, "out", "svcctl_QueryServiceLockStatusW");
3263 ndr_print_ptr(ndr, "lock_status", r->out.lock_status);
3265 ndr_print_SERVICE_LOCK_STATUS(ndr, "lock_status", r->out.lock_status);
3267 ndr_print_ptr(ndr, "required_buf_size", r->out.required_buf_size);
3269 ndr_print_uint32(ndr, "required_buf_size", *r->out.required_buf_size);
3271 ndr_print_WERROR(ndr, "result", r->out.result);
3277 static enum ndr_err_code ndr_push_svcctl_StartServiceW(struct ndr_push *ndr, int flags, const struct svcctl_StartServiceW *r)
3279 if (flags & NDR_IN) {
3280 if (r->in.handle == NULL) {
3281 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
3283 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
3284 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.NumArgs));
3285 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.Arguments));
3286 if (r->in.Arguments) {
3287 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.Arguments, CH_UTF16)));
3288 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
3289 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.Arguments, CH_UTF16)));
3290 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.Arguments, ndr_charset_length(r->in.Arguments, CH_UTF16), sizeof(uint16_t), CH_UTF16));
3293 if (flags & NDR_OUT) {
3294 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
3296 return NDR_ERR_SUCCESS;
3299 static enum ndr_err_code ndr_pull_svcctl_StartServiceW(struct ndr_pull *ndr, int flags, struct svcctl_StartServiceW *r)
3301 uint32_t _ptr_Arguments;
3302 TALLOC_CTX *_mem_save_handle_0;
3303 TALLOC_CTX *_mem_save_Arguments_0;
3304 if (flags & NDR_IN) {
3305 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
3306 NDR_PULL_ALLOC(ndr, r->in.handle);
3308 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
3309 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
3310 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
3311 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
3312 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.NumArgs));
3313 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_Arguments));
3314 if (_ptr_Arguments) {
3315 NDR_PULL_ALLOC(ndr, r->in.Arguments);
3317 r->in.Arguments = NULL;
3319 if (r->in.Arguments) {
3320 _mem_save_Arguments_0 = NDR_PULL_GET_MEM_CTX(ndr);
3321 NDR_PULL_SET_MEM_CTX(ndr, r->in.Arguments, 0);
3322 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.Arguments));
3323 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.Arguments));
3324 if (ndr_get_array_length(ndr, &r->in.Arguments) > ndr_get_array_size(ndr, &r->in.Arguments)) {
3325 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));
3327 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.Arguments), sizeof(uint16_t)));
3328 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.Arguments, ndr_get_array_length(ndr, &r->in.Arguments), sizeof(uint16_t), CH_UTF16));
3329 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_Arguments_0, 0);
3332 if (flags & NDR_OUT) {
3333 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
3335 return NDR_ERR_SUCCESS;
3338 _PUBLIC_ void ndr_print_svcctl_StartServiceW(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_StartServiceW *r)
3340 ndr_print_struct(ndr, name, "svcctl_StartServiceW");
3342 if (flags & NDR_SET_VALUES) {
3343 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
3345 if (flags & NDR_IN) {
3346 ndr_print_struct(ndr, "in", "svcctl_StartServiceW");
3348 ndr_print_ptr(ndr, "handle", r->in.handle);
3350 ndr_print_policy_handle(ndr, "handle", r->in.handle);
3352 ndr_print_uint32(ndr, "NumArgs", r->in.NumArgs);
3353 ndr_print_ptr(ndr, "Arguments", r->in.Arguments);
3355 if (r->in.Arguments) {
3356 ndr_print_string(ndr, "Arguments", r->in.Arguments);
3361 if (flags & NDR_OUT) {
3362 ndr_print_struct(ndr, "out", "svcctl_StartServiceW");
3364 ndr_print_WERROR(ndr, "result", r->out.result);
3370 static enum ndr_err_code ndr_push_svcctl_GetServiceDisplayNameW(struct ndr_push *ndr, int flags, const struct svcctl_GetServiceDisplayNameW *r)
3372 if (flags & NDR_IN) {
3373 if (r->in.handle == NULL) {
3374 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
3376 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
3377 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.service_name));
3378 if (r->in.service_name) {
3379 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.service_name, CH_UTF16)));
3380 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
3381 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.service_name, CH_UTF16)));
3382 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));
3384 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.display_name_length));
3385 if (r->in.display_name_length) {
3386 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->in.display_name_length));
3389 if (flags & NDR_OUT) {
3390 if (r->out.display_name == NULL) {
3391 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
3393 NDR_CHECK(ndr_push_unique_ptr(ndr, *r->out.display_name));
3394 if (*r->out.display_name) {
3395 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(*r->out.display_name, CH_UTF16)));
3396 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
3397 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(*r->out.display_name, CH_UTF16)));
3398 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));
3400 NDR_CHECK(ndr_push_unique_ptr(ndr, r->out.display_name_length));
3401 if (r->out.display_name_length) {
3402 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.display_name_length));
3404 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
3406 return NDR_ERR_SUCCESS;
3409 static enum ndr_err_code ndr_pull_svcctl_GetServiceDisplayNameW(struct ndr_pull *ndr, int flags, struct svcctl_GetServiceDisplayNameW *r)
3411 uint32_t _ptr_service_name;
3412 uint32_t _ptr_display_name;
3413 uint32_t _ptr_display_name_length;
3414 TALLOC_CTX *_mem_save_handle_0;
3415 TALLOC_CTX *_mem_save_service_name_0;
3416 TALLOC_CTX *_mem_save_display_name_0;
3417 TALLOC_CTX *_mem_save_display_name_1;
3418 TALLOC_CTX *_mem_save_display_name_length_0;
3419 if (flags & NDR_IN) {
3420 ZERO_STRUCT(r->out);
3422 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
3423 NDR_PULL_ALLOC(ndr, r->in.handle);
3425 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
3426 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
3427 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
3428 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
3429 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_service_name));
3430 if (_ptr_service_name) {
3431 NDR_PULL_ALLOC(ndr, r->in.service_name);
3433 r->in.service_name = NULL;
3435 if (r->in.service_name) {
3436 _mem_save_service_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
3437 NDR_PULL_SET_MEM_CTX(ndr, r->in.service_name, 0);
3438 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.service_name));
3439 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.service_name));
3440 if (ndr_get_array_length(ndr, &r->in.service_name) > ndr_get_array_size(ndr, &r->in.service_name)) {
3441 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));
3443 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.service_name), sizeof(uint16_t)));
3444 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));
3445 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_service_name_0, 0);
3447 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_display_name_length));
3448 if (_ptr_display_name_length) {
3449 NDR_PULL_ALLOC(ndr, r->in.display_name_length);
3451 r->in.display_name_length = NULL;
3453 if (r->in.display_name_length) {
3454 _mem_save_display_name_length_0 = NDR_PULL_GET_MEM_CTX(ndr);
3455 NDR_PULL_SET_MEM_CTX(ndr, r->in.display_name_length, 0);
3456 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->in.display_name_length));
3457 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_display_name_length_0, 0);
3459 NDR_PULL_ALLOC(ndr, r->out.display_name);
3460 ZERO_STRUCTP(r->out.display_name);
3462 if (flags & NDR_OUT) {
3463 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
3464 NDR_PULL_ALLOC(ndr, r->out.display_name);
3466 _mem_save_display_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
3467 NDR_PULL_SET_MEM_CTX(ndr, r->out.display_name, LIBNDR_FLAG_REF_ALLOC);
3468 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_display_name));
3469 if (_ptr_display_name) {
3470 NDR_PULL_ALLOC(ndr, *r->out.display_name);
3472 *r->out.display_name = NULL;
3474 if (*r->out.display_name) {
3475 _mem_save_display_name_1 = NDR_PULL_GET_MEM_CTX(ndr);
3476 NDR_PULL_SET_MEM_CTX(ndr, *r->out.display_name, 0);
3477 NDR_CHECK(ndr_pull_array_size(ndr, r->out.display_name));
3478 NDR_CHECK(ndr_pull_array_length(ndr, r->out.display_name));
3479 if (ndr_get_array_length(ndr, r->out.display_name) > ndr_get_array_size(ndr, r->out.display_name)) {
3480 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));
3482 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, r->out.display_name), sizeof(uint16_t)));
3483 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));
3484 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_display_name_1, 0);
3486 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_display_name_0, LIBNDR_FLAG_REF_ALLOC);
3487 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_display_name_length));
3488 if (_ptr_display_name_length) {
3489 NDR_PULL_ALLOC(ndr, r->out.display_name_length);
3491 r->out.display_name_length = NULL;
3493 if (r->out.display_name_length) {
3494 _mem_save_display_name_length_0 = NDR_PULL_GET_MEM_CTX(ndr);
3495 NDR_PULL_SET_MEM_CTX(ndr, r->out.display_name_length, 0);
3496 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.display_name_length));
3497 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_display_name_length_0, 0);
3499 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
3501 return NDR_ERR_SUCCESS;
3504 _PUBLIC_ void ndr_print_svcctl_GetServiceDisplayNameW(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_GetServiceDisplayNameW *r)
3506 ndr_print_struct(ndr, name, "svcctl_GetServiceDisplayNameW");
3508 if (flags & NDR_SET_VALUES) {
3509 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
3511 if (flags & NDR_IN) {
3512 ndr_print_struct(ndr, "in", "svcctl_GetServiceDisplayNameW");
3514 ndr_print_ptr(ndr, "handle", r->in.handle);
3516 ndr_print_policy_handle(ndr, "handle", r->in.handle);
3518 ndr_print_ptr(ndr, "service_name", r->in.service_name);
3520 if (r->in.service_name) {
3521 ndr_print_string(ndr, "service_name", r->in.service_name);
3524 ndr_print_ptr(ndr, "display_name_length", r->in.display_name_length);
3526 if (r->in.display_name_length) {
3527 ndr_print_uint32(ndr, "display_name_length", *r->in.display_name_length);
3532 if (flags & NDR_OUT) {
3533 ndr_print_struct(ndr, "out", "svcctl_GetServiceDisplayNameW");
3535 ndr_print_ptr(ndr, "display_name", r->out.display_name);
3537 ndr_print_ptr(ndr, "display_name", *r->out.display_name);
3539 if (*r->out.display_name) {
3540 ndr_print_string(ndr, "display_name", *r->out.display_name);
3544 ndr_print_ptr(ndr, "display_name_length", r->out.display_name_length);
3546 if (r->out.display_name_length) {
3547 ndr_print_uint32(ndr, "display_name_length", *r->out.display_name_length);
3550 ndr_print_WERROR(ndr, "result", r->out.result);
3556 static enum ndr_err_code ndr_push_svcctl_GetServiceKeyNameW(struct ndr_push *ndr, int flags, const struct svcctl_GetServiceKeyNameW *r)
3558 if (flags & NDR_IN) {
3559 if (r->in.handle == NULL) {
3560 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
3562 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
3563 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.service_name));
3564 if (r->in.service_name) {
3565 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.service_name, CH_UTF16)));
3566 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
3567 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.service_name, CH_UTF16)));
3568 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));
3570 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.display_name_length));
3571 if (r->in.display_name_length) {
3572 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->in.display_name_length));
3575 if (flags & NDR_OUT) {
3576 if (r->out.key_name == NULL) {
3577 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
3579 NDR_CHECK(ndr_push_unique_ptr(ndr, *r->out.key_name));
3580 if (*r->out.key_name) {
3581 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(*r->out.key_name, CH_UTF16)));
3582 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
3583 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(*r->out.key_name, CH_UTF16)));
3584 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));
3586 NDR_CHECK(ndr_push_unique_ptr(ndr, r->out.display_name_length));
3587 if (r->out.display_name_length) {
3588 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.display_name_length));
3590 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
3592 return NDR_ERR_SUCCESS;
3595 static enum ndr_err_code ndr_pull_svcctl_GetServiceKeyNameW(struct ndr_pull *ndr, int flags, struct svcctl_GetServiceKeyNameW *r)
3597 uint32_t _ptr_service_name;
3598 uint32_t _ptr_key_name;
3599 uint32_t _ptr_display_name_length;
3600 TALLOC_CTX *_mem_save_handle_0;
3601 TALLOC_CTX *_mem_save_service_name_0;
3602 TALLOC_CTX *_mem_save_key_name_0;
3603 TALLOC_CTX *_mem_save_key_name_1;
3604 TALLOC_CTX *_mem_save_display_name_length_0;
3605 if (flags & NDR_IN) {
3606 ZERO_STRUCT(r->out);
3608 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
3609 NDR_PULL_ALLOC(ndr, r->in.handle);
3611 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
3612 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
3613 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
3614 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
3615 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_service_name));
3616 if (_ptr_service_name) {
3617 NDR_PULL_ALLOC(ndr, r->in.service_name);
3619 r->in.service_name = NULL;
3621 if (r->in.service_name) {
3622 _mem_save_service_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
3623 NDR_PULL_SET_MEM_CTX(ndr, r->in.service_name, 0);
3624 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.service_name));
3625 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.service_name));
3626 if (ndr_get_array_length(ndr, &r->in.service_name) > ndr_get_array_size(ndr, &r->in.service_name)) {
3627 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));
3629 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.service_name), sizeof(uint16_t)));
3630 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));
3631 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_service_name_0, 0);
3633 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_display_name_length));
3634 if (_ptr_display_name_length) {
3635 NDR_PULL_ALLOC(ndr, r->in.display_name_length);
3637 r->in.display_name_length = NULL;
3639 if (r->in.display_name_length) {
3640 _mem_save_display_name_length_0 = NDR_PULL_GET_MEM_CTX(ndr);
3641 NDR_PULL_SET_MEM_CTX(ndr, r->in.display_name_length, 0);
3642 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->in.display_name_length));
3643 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_display_name_length_0, 0);
3645 NDR_PULL_ALLOC(ndr, r->out.key_name);
3646 ZERO_STRUCTP(r->out.key_name);
3648 if (flags & NDR_OUT) {
3649 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
3650 NDR_PULL_ALLOC(ndr, r->out.key_name);
3652 _mem_save_key_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
3653 NDR_PULL_SET_MEM_CTX(ndr, r->out.key_name, LIBNDR_FLAG_REF_ALLOC);
3654 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_key_name));
3655 if (_ptr_key_name) {
3656 NDR_PULL_ALLOC(ndr, *r->out.key_name);
3658 *r->out.key_name = NULL;
3660 if (*r->out.key_name) {
3661 _mem_save_key_name_1 = NDR_PULL_GET_MEM_CTX(ndr);
3662 NDR_PULL_SET_MEM_CTX(ndr, *r->out.key_name, 0);
3663 NDR_CHECK(ndr_pull_array_size(ndr, r->out.key_name));
3664 NDR_CHECK(ndr_pull_array_length(ndr, r->out.key_name));
3665 if (ndr_get_array_length(ndr, r->out.key_name) > ndr_get_array_size(ndr, r->out.key_name)) {
3666 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));
3668 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, r->out.key_name), sizeof(uint16_t)));
3669 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));
3670 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_key_name_1, 0);
3672 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_key_name_0, LIBNDR_FLAG_REF_ALLOC);
3673 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_display_name_length));
3674 if (_ptr_display_name_length) {
3675 NDR_PULL_ALLOC(ndr, r->out.display_name_length);
3677 r->out.display_name_length = NULL;
3679 if (r->out.display_name_length) {
3680 _mem_save_display_name_length_0 = NDR_PULL_GET_MEM_CTX(ndr);
3681 NDR_PULL_SET_MEM_CTX(ndr, r->out.display_name_length, 0);
3682 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.display_name_length));
3683 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_display_name_length_0, 0);
3685 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
3687 return NDR_ERR_SUCCESS;
3690 _PUBLIC_ void ndr_print_svcctl_GetServiceKeyNameW(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_GetServiceKeyNameW *r)
3692 ndr_print_struct(ndr, name, "svcctl_GetServiceKeyNameW");
3694 if (flags & NDR_SET_VALUES) {
3695 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
3697 if (flags & NDR_IN) {
3698 ndr_print_struct(ndr, "in", "svcctl_GetServiceKeyNameW");
3700 ndr_print_ptr(ndr, "handle", r->in.handle);
3702 ndr_print_policy_handle(ndr, "handle", r->in.handle);
3704 ndr_print_ptr(ndr, "service_name", r->in.service_name);
3706 if (r->in.service_name) {
3707 ndr_print_string(ndr, "service_name", r->in.service_name);
3710 ndr_print_ptr(ndr, "display_name_length", r->in.display_name_length);
3712 if (r->in.display_name_length) {
3713 ndr_print_uint32(ndr, "display_name_length", *r->in.display_name_length);
3718 if (flags & NDR_OUT) {
3719 ndr_print_struct(ndr, "out", "svcctl_GetServiceKeyNameW");
3721 ndr_print_ptr(ndr, "key_name", r->out.key_name);
3723 ndr_print_ptr(ndr, "key_name", *r->out.key_name);
3725 if (*r->out.key_name) {
3726 ndr_print_string(ndr, "key_name", *r->out.key_name);
3730 ndr_print_ptr(ndr, "display_name_length", r->out.display_name_length);
3732 if (r->out.display_name_length) {
3733 ndr_print_uint32(ndr, "display_name_length", *r->out.display_name_length);
3736 ndr_print_WERROR(ndr, "result", r->out.result);
3742 static enum ndr_err_code ndr_push_svcctl_SCSetServiceBitsA(struct ndr_push *ndr, int flags, const struct svcctl_SCSetServiceBitsA *r)
3744 if (flags & NDR_IN) {
3745 if (r->in.handle == NULL) {
3746 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
3748 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
3749 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.bits));
3750 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.bitson));
3751 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.immediate));
3753 if (flags & NDR_OUT) {
3754 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
3756 return NDR_ERR_SUCCESS;
3759 static enum ndr_err_code ndr_pull_svcctl_SCSetServiceBitsA(struct ndr_pull *ndr, int flags, struct svcctl_SCSetServiceBitsA *r)
3761 TALLOC_CTX *_mem_save_handle_0;
3762 if (flags & NDR_IN) {
3763 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
3764 NDR_PULL_ALLOC(ndr, r->in.handle);
3766 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
3767 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
3768 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
3769 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
3770 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.bits));
3771 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.bitson));
3772 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.immediate));
3774 if (flags & NDR_OUT) {
3775 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
3777 return NDR_ERR_SUCCESS;
3780 _PUBLIC_ void ndr_print_svcctl_SCSetServiceBitsA(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_SCSetServiceBitsA *r)
3782 ndr_print_struct(ndr, name, "svcctl_SCSetServiceBitsA");
3784 if (flags & NDR_SET_VALUES) {
3785 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
3787 if (flags & NDR_IN) {
3788 ndr_print_struct(ndr, "in", "svcctl_SCSetServiceBitsA");
3790 ndr_print_ptr(ndr, "handle", r->in.handle);
3792 ndr_print_policy_handle(ndr, "handle", r->in.handle);
3794 ndr_print_uint32(ndr, "bits", r->in.bits);
3795 ndr_print_uint32(ndr, "bitson", r->in.bitson);
3796 ndr_print_uint32(ndr, "immediate", r->in.immediate);
3799 if (flags & NDR_OUT) {
3800 ndr_print_struct(ndr, "out", "svcctl_SCSetServiceBitsA");
3802 ndr_print_WERROR(ndr, "result", r->out.result);
3808 static enum ndr_err_code ndr_push_svcctl_ChangeServiceConfigA(struct ndr_push *ndr, int flags, const struct svcctl_ChangeServiceConfigA *r)
3810 if (flags & NDR_IN) {
3811 if (r->in.handle == NULL) {
3812 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
3814 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
3815 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.type));
3816 NDR_CHECK(ndr_push_svcctl_StartType(ndr, NDR_SCALARS, r->in.start_type));
3817 NDR_CHECK(ndr_push_svcctl_ErrorControl(ndr, NDR_SCALARS, r->in.error_control));
3818 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.binary_path));
3819 if (r->in.binary_path) {
3820 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.binary_path, CH_UTF16)));
3821 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
3822 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.binary_path, CH_UTF16)));
3823 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));
3825 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.load_order_group));
3826 if (r->in.load_order_group) {
3827 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.load_order_group, CH_UTF16)));
3828 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
3829 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.load_order_group, CH_UTF16)));
3830 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));
3832 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.dependencies));
3833 if (r->in.dependencies) {
3834 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.dependencies, CH_UTF16)));
3835 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
3836 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.dependencies, CH_UTF16)));
3837 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.dependencies, ndr_charset_length(r->in.dependencies, CH_UTF16), sizeof(uint16_t), CH_UTF16));
3839 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.service_start_name));
3840 if (r->in.service_start_name) {
3841 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.service_start_name, CH_UTF16)));
3842 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
3843 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.service_start_name, CH_UTF16)));
3844 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));
3846 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.password));
3847 if (r->in.password) {
3848 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.password, CH_UTF16)));
3849 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
3850 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.password, CH_UTF16)));
3851 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.password, ndr_charset_length(r->in.password, CH_UTF16), sizeof(uint16_t), CH_UTF16));
3853 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.display_name));
3854 if (r->in.display_name) {
3855 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.display_name, CH_UTF16)));
3856 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
3857 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.display_name, CH_UTF16)));
3858 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));
3861 if (flags & NDR_OUT) {
3862 if (r->out.tag_id == NULL) {
3863 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
3865 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.tag_id));
3866 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
3868 return NDR_ERR_SUCCESS;
3871 static enum ndr_err_code ndr_pull_svcctl_ChangeServiceConfigA(struct ndr_pull *ndr, int flags, struct svcctl_ChangeServiceConfigA *r)
3873 uint32_t _ptr_binary_path;
3874 uint32_t _ptr_load_order_group;
3875 uint32_t _ptr_dependencies;
3876 uint32_t _ptr_service_start_name;
3877 uint32_t _ptr_password;
3878 uint32_t _ptr_display_name;
3879 TALLOC_CTX *_mem_save_handle_0;
3880 TALLOC_CTX *_mem_save_binary_path_0;
3881 TALLOC_CTX *_mem_save_load_order_group_0;
3882 TALLOC_CTX *_mem_save_tag_id_0;
3883 TALLOC_CTX *_mem_save_dependencies_0;
3884 TALLOC_CTX *_mem_save_service_start_name_0;
3885 TALLOC_CTX *_mem_save_password_0;
3886 TALLOC_CTX *_mem_save_display_name_0;
3887 if (flags & NDR_IN) {
3888 ZERO_STRUCT(r->out);
3890 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
3891 NDR_PULL_ALLOC(ndr, r->in.handle);
3893 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
3894 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
3895 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
3896 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
3897 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.type));
3898 NDR_CHECK(ndr_pull_svcctl_StartType(ndr, NDR_SCALARS, &r->in.start_type));
3899 NDR_CHECK(ndr_pull_svcctl_ErrorControl(ndr, NDR_SCALARS, &r->in.error_control));
3900 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_binary_path));
3901 if (_ptr_binary_path) {
3902 NDR_PULL_ALLOC(ndr, r->in.binary_path);
3904 r->in.binary_path = NULL;
3906 if (r->in.binary_path) {
3907 _mem_save_binary_path_0 = NDR_PULL_GET_MEM_CTX(ndr);
3908 NDR_PULL_SET_MEM_CTX(ndr, r->in.binary_path, 0);
3909 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.binary_path));
3910 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.binary_path));
3911 if (ndr_get_array_length(ndr, &r->in.binary_path) > ndr_get_array_size(ndr, &r->in.binary_path)) {
3912 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));
3914 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.binary_path), sizeof(uint16_t)));
3915 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));
3916 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_binary_path_0, 0);
3918 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_load_order_group));
3919 if (_ptr_load_order_group) {
3920 NDR_PULL_ALLOC(ndr, r->in.load_order_group);
3922 r->in.load_order_group = NULL;
3924 if (r->in.load_order_group) {
3925 _mem_save_load_order_group_0 = NDR_PULL_GET_MEM_CTX(ndr);
3926 NDR_PULL_SET_MEM_CTX(ndr, r->in.load_order_group, 0);
3927 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.load_order_group));
3928 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.load_order_group));
3929 if (ndr_get_array_length(ndr, &r->in.load_order_group) > ndr_get_array_size(ndr, &r->in.load_order_group)) {
3930 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));
3932 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.load_order_group), sizeof(uint16_t)));
3933 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));
3934 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_load_order_group_0, 0);
3936 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_dependencies));
3937 if (_ptr_dependencies) {
3938 NDR_PULL_ALLOC(ndr, r->in.dependencies);
3940 r->in.dependencies = NULL;
3942 if (r->in.dependencies) {
3943 _mem_save_dependencies_0 = NDR_PULL_GET_MEM_CTX(ndr);
3944 NDR_PULL_SET_MEM_CTX(ndr, r->in.dependencies, 0);
3945 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.dependencies));
3946 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.dependencies));
3947 if (ndr_get_array_length(ndr, &r->in.dependencies) > ndr_get_array_size(ndr, &r->in.dependencies)) {
3948 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));
3950 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.dependencies), sizeof(uint16_t)));
3951 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.dependencies, ndr_get_array_length(ndr, &r->in.dependencies), sizeof(uint16_t), CH_UTF16));
3952 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_dependencies_0, 0);
3954 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_service_start_name));
3955 if (_ptr_service_start_name) {
3956 NDR_PULL_ALLOC(ndr, r->in.service_start_name);
3958 r->in.service_start_name = NULL;
3960 if (r->in.service_start_name) {
3961 _mem_save_service_start_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
3962 NDR_PULL_SET_MEM_CTX(ndr, r->in.service_start_name, 0);
3963 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.service_start_name));
3964 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.service_start_name));
3965 if (ndr_get_array_length(ndr, &r->in.service_start_name) > ndr_get_array_size(ndr, &r->in.service_start_name)) {
3966 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));
3968 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.service_start_name), sizeof(uint16_t)));
3969 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));
3970 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_service_start_name_0, 0);
3972 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_password));
3973 if (_ptr_password) {
3974 NDR_PULL_ALLOC(ndr, r->in.password);
3976 r->in.password = NULL;
3978 if (r->in.password) {
3979 _mem_save_password_0 = NDR_PULL_GET_MEM_CTX(ndr);
3980 NDR_PULL_SET_MEM_CTX(ndr, r->in.password, 0);
3981 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.password));
3982 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.password));
3983 if (ndr_get_array_length(ndr, &r->in.password) > ndr_get_array_size(ndr, &r->in.password)) {
3984 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));
3986 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.password), sizeof(uint16_t)));
3987 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.password, ndr_get_array_length(ndr, &r->in.password), sizeof(uint16_t), CH_UTF16));
3988 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_password_0, 0);
3990 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_display_name));
3991 if (_ptr_display_name) {
3992 NDR_PULL_ALLOC(ndr, r->in.display_name);
3994 r->in.display_name = NULL;
3996 if (r->in.display_name) {
3997 _mem_save_display_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
3998 NDR_PULL_SET_MEM_CTX(ndr, r->in.display_name, 0);
3999 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.display_name));
4000 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.display_name));
4001 if (ndr_get_array_length(ndr, &r->in.display_name) > ndr_get_array_size(ndr, &r->in.display_name)) {
4002 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));
4004 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.display_name), sizeof(uint16_t)));
4005 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));
4006 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_display_name_0, 0);
4008 NDR_PULL_ALLOC(ndr, r->out.tag_id);
4009 ZERO_STRUCTP(r->out.tag_id);
4011 if (flags & NDR_OUT) {
4012 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
4013 NDR_PULL_ALLOC(ndr, r->out.tag_id);
4015 _mem_save_tag_id_0 = NDR_PULL_GET_MEM_CTX(ndr);
4016 NDR_PULL_SET_MEM_CTX(ndr, r->out.tag_id, LIBNDR_FLAG_REF_ALLOC);
4017 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.tag_id));
4018 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_tag_id_0, LIBNDR_FLAG_REF_ALLOC);
4019 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
4021 return NDR_ERR_SUCCESS;
4024 _PUBLIC_ void ndr_print_svcctl_ChangeServiceConfigA(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_ChangeServiceConfigA *r)
4026 ndr_print_struct(ndr, name, "svcctl_ChangeServiceConfigA");
4028 if (flags & NDR_SET_VALUES) {
4029 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
4031 if (flags & NDR_IN) {
4032 ndr_print_struct(ndr, "in", "svcctl_ChangeServiceConfigA");
4034 ndr_print_ptr(ndr, "handle", r->in.handle);
4036 ndr_print_policy_handle(ndr, "handle", r->in.handle);
4038 ndr_print_uint32(ndr, "type", r->in.type);
4039 ndr_print_svcctl_StartType(ndr, "start_type", r->in.start_type);
4040 ndr_print_svcctl_ErrorControl(ndr, "error_control", r->in.error_control);
4041 ndr_print_ptr(ndr, "binary_path", r->in.binary_path);
4043 if (r->in.binary_path) {
4044 ndr_print_string(ndr, "binary_path", r->in.binary_path);
4047 ndr_print_ptr(ndr, "load_order_group", r->in.load_order_group);
4049 if (r->in.load_order_group) {
4050 ndr_print_string(ndr, "load_order_group", r->in.load_order_group);
4053 ndr_print_ptr(ndr, "dependencies", r->in.dependencies);
4055 if (r->in.dependencies) {
4056 ndr_print_string(ndr, "dependencies", r->in.dependencies);
4059 ndr_print_ptr(ndr, "service_start_name", r->in.service_start_name);
4061 if (r->in.service_start_name) {
4062 ndr_print_string(ndr, "service_start_name", r->in.service_start_name);
4065 ndr_print_ptr(ndr, "password", r->in.password);
4067 if (r->in.password) {
4068 ndr_print_string(ndr, "password", r->in.password);
4071 ndr_print_ptr(ndr, "display_name", r->in.display_name);
4073 if (r->in.display_name) {
4074 ndr_print_string(ndr, "display_name", r->in.display_name);
4079 if (flags & NDR_OUT) {
4080 ndr_print_struct(ndr, "out", "svcctl_ChangeServiceConfigA");
4082 ndr_print_ptr(ndr, "tag_id", r->out.tag_id);
4084 ndr_print_uint32(ndr, "tag_id", *r->out.tag_id);
4086 ndr_print_WERROR(ndr, "result", r->out.result);
4092 static enum ndr_err_code ndr_push_svcctl_CreateServiceA(struct ndr_push *ndr, int flags, const struct svcctl_CreateServiceA *r)
4094 if (flags & NDR_IN) {
4095 if (r->in.handle == NULL) {
4096 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
4098 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
4099 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.ServiceName));
4100 if (r->in.ServiceName) {
4101 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.ServiceName, CH_UTF16)));
4102 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
4103 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.ServiceName, CH_UTF16)));
4104 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.ServiceName, ndr_charset_length(r->in.ServiceName, CH_UTF16), sizeof(uint16_t), CH_UTF16));
4106 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.DisplayName));
4107 if (r->in.DisplayName) {
4108 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.DisplayName, CH_UTF16)));
4109 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
4110 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.DisplayName, CH_UTF16)));
4111 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.DisplayName, ndr_charset_length(r->in.DisplayName, CH_UTF16), sizeof(uint16_t), CH_UTF16));
4113 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.desired_access));
4114 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.type));
4115 NDR_CHECK(ndr_push_svcctl_StartType(ndr, NDR_SCALARS, r->in.start_type));
4116 NDR_CHECK(ndr_push_svcctl_ErrorControl(ndr, NDR_SCALARS, r->in.error_control));
4117 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.binary_path));
4118 if (r->in.binary_path) {
4119 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.binary_path, CH_UTF16)));
4120 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
4121 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.binary_path, CH_UTF16)));
4122 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));
4124 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.LoadOrderGroupKey));
4125 if (r->in.LoadOrderGroupKey) {
4126 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.LoadOrderGroupKey, CH_UTF16)));
4127 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
4128 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.LoadOrderGroupKey, CH_UTF16)));
4129 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.LoadOrderGroupKey, ndr_charset_length(r->in.LoadOrderGroupKey, CH_UTF16), sizeof(uint16_t), CH_UTF16));
4131 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.dependencies));
4132 if (r->in.dependencies) {
4133 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.dependencies, CH_UTF16)));
4134 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
4135 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.dependencies, CH_UTF16)));
4136 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.dependencies, ndr_charset_length(r->in.dependencies, CH_UTF16), sizeof(uint16_t), CH_UTF16));
4138 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.service_start_name));
4139 if (r->in.service_start_name) {
4140 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.service_start_name, CH_UTF16)));
4141 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
4142 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.service_start_name, CH_UTF16)));
4143 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));
4145 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.password));
4146 if (r->in.password) {
4147 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.password, CH_UTF16)));
4148 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
4149 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.password, CH_UTF16)));
4150 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.password, ndr_charset_length(r->in.password, CH_UTF16), sizeof(uint16_t), CH_UTF16));
4153 if (flags & NDR_OUT) {
4154 NDR_CHECK(ndr_push_unique_ptr(ndr, r->out.TagId));
4156 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.TagId));
4158 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
4160 return NDR_ERR_SUCCESS;
4163 static enum ndr_err_code ndr_pull_svcctl_CreateServiceA(struct ndr_pull *ndr, int flags, struct svcctl_CreateServiceA *r)
4165 uint32_t _ptr_ServiceName;
4166 uint32_t _ptr_DisplayName;
4167 uint32_t _ptr_binary_path;
4168 uint32_t _ptr_LoadOrderGroupKey;
4169 uint32_t _ptr_TagId;
4170 uint32_t _ptr_dependencies;
4171 uint32_t _ptr_service_start_name;
4172 uint32_t _ptr_password;
4173 TALLOC_CTX *_mem_save_handle_0;
4174 TALLOC_CTX *_mem_save_ServiceName_0;
4175 TALLOC_CTX *_mem_save_DisplayName_0;
4176 TALLOC_CTX *_mem_save_binary_path_0;
4177 TALLOC_CTX *_mem_save_LoadOrderGroupKey_0;
4178 TALLOC_CTX *_mem_save_TagId_0;
4179 TALLOC_CTX *_mem_save_dependencies_0;
4180 TALLOC_CTX *_mem_save_service_start_name_0;
4181 TALLOC_CTX *_mem_save_password_0;
4182 if (flags & NDR_IN) {
4183 ZERO_STRUCT(r->out);
4185 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
4186 NDR_PULL_ALLOC(ndr, r->in.handle);
4188 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
4189 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
4190 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
4191 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
4192 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_ServiceName));
4193 if (_ptr_ServiceName) {
4194 NDR_PULL_ALLOC(ndr, r->in.ServiceName);
4196 r->in.ServiceName = NULL;
4198 if (r->in.ServiceName) {
4199 _mem_save_ServiceName_0 = NDR_PULL_GET_MEM_CTX(ndr);
4200 NDR_PULL_SET_MEM_CTX(ndr, r->in.ServiceName, 0);
4201 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.ServiceName));
4202 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.ServiceName));
4203 if (ndr_get_array_length(ndr, &r->in.ServiceName) > ndr_get_array_size(ndr, &r->in.ServiceName)) {
4204 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));
4206 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.ServiceName), sizeof(uint16_t)));
4207 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.ServiceName, ndr_get_array_length(ndr, &r->in.ServiceName), sizeof(uint16_t), CH_UTF16));
4208 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_ServiceName_0, 0);
4210 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_DisplayName));
4211 if (_ptr_DisplayName) {
4212 NDR_PULL_ALLOC(ndr, r->in.DisplayName);
4214 r->in.DisplayName = NULL;
4216 if (r->in.DisplayName) {
4217 _mem_save_DisplayName_0 = NDR_PULL_GET_MEM_CTX(ndr);
4218 NDR_PULL_SET_MEM_CTX(ndr, r->in.DisplayName, 0);
4219 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.DisplayName));
4220 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.DisplayName));
4221 if (ndr_get_array_length(ndr, &r->in.DisplayName) > ndr_get_array_size(ndr, &r->in.DisplayName)) {
4222 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));
4224 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.DisplayName), sizeof(uint16_t)));
4225 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.DisplayName, ndr_get_array_length(ndr, &r->in.DisplayName), sizeof(uint16_t), CH_UTF16));
4226 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_DisplayName_0, 0);
4228 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.desired_access));
4229 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.type));
4230 NDR_CHECK(ndr_pull_svcctl_StartType(ndr, NDR_SCALARS, &r->in.start_type));
4231 NDR_CHECK(ndr_pull_svcctl_ErrorControl(ndr, NDR_SCALARS, &r->in.error_control));
4232 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_binary_path));
4233 if (_ptr_binary_path) {
4234 NDR_PULL_ALLOC(ndr, r->in.binary_path);
4236 r->in.binary_path = NULL;
4238 if (r->in.binary_path) {
4239 _mem_save_binary_path_0 = NDR_PULL_GET_MEM_CTX(ndr);
4240 NDR_PULL_SET_MEM_CTX(ndr, r->in.binary_path, 0);
4241 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.binary_path));
4242 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.binary_path));
4243 if (ndr_get_array_length(ndr, &r->in.binary_path) > ndr_get_array_size(ndr, &r->in.binary_path)) {
4244 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));
4246 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.binary_path), sizeof(uint16_t)));
4247 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));
4248 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_binary_path_0, 0);
4250 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_LoadOrderGroupKey));
4251 if (_ptr_LoadOrderGroupKey) {
4252 NDR_PULL_ALLOC(ndr, r->in.LoadOrderGroupKey);
4254 r->in.LoadOrderGroupKey = NULL;
4256 if (r->in.LoadOrderGroupKey) {
4257 _mem_save_LoadOrderGroupKey_0 = NDR_PULL_GET_MEM_CTX(ndr);
4258 NDR_PULL_SET_MEM_CTX(ndr, r->in.LoadOrderGroupKey, 0);
4259 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.LoadOrderGroupKey));
4260 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.LoadOrderGroupKey));
4261 if (ndr_get_array_length(ndr, &r->in.LoadOrderGroupKey) > ndr_get_array_size(ndr, &r->in.LoadOrderGroupKey)) {
4262 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));
4264 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.LoadOrderGroupKey), sizeof(uint16_t)));
4265 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.LoadOrderGroupKey, ndr_get_array_length(ndr, &r->in.LoadOrderGroupKey), sizeof(uint16_t), CH_UTF16));
4266 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_LoadOrderGroupKey_0, 0);
4268 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_dependencies));
4269 if (_ptr_dependencies) {
4270 NDR_PULL_ALLOC(ndr, r->in.dependencies);
4272 r->in.dependencies = NULL;
4274 if (r->in.dependencies) {
4275 _mem_save_dependencies_0 = NDR_PULL_GET_MEM_CTX(ndr);
4276 NDR_PULL_SET_MEM_CTX(ndr, r->in.dependencies, 0);
4277 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.dependencies));
4278 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.dependencies));
4279 if (ndr_get_array_length(ndr, &r->in.dependencies) > ndr_get_array_size(ndr, &r->in.dependencies)) {
4280 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));
4282 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.dependencies), sizeof(uint16_t)));
4283 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.dependencies, ndr_get_array_length(ndr, &r->in.dependencies), sizeof(uint16_t), CH_UTF16));
4284 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_dependencies_0, 0);
4286 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_service_start_name));
4287 if (_ptr_service_start_name) {
4288 NDR_PULL_ALLOC(ndr, r->in.service_start_name);
4290 r->in.service_start_name = NULL;
4292 if (r->in.service_start_name) {
4293 _mem_save_service_start_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
4294 NDR_PULL_SET_MEM_CTX(ndr, r->in.service_start_name, 0);
4295 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.service_start_name));
4296 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.service_start_name));
4297 if (ndr_get_array_length(ndr, &r->in.service_start_name) > ndr_get_array_size(ndr, &r->in.service_start_name)) {
4298 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));
4300 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.service_start_name), sizeof(uint16_t)));
4301 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));
4302 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_service_start_name_0, 0);
4304 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_password));
4305 if (_ptr_password) {
4306 NDR_PULL_ALLOC(ndr, r->in.password);
4308 r->in.password = NULL;
4310 if (r->in.password) {
4311 _mem_save_password_0 = NDR_PULL_GET_MEM_CTX(ndr);
4312 NDR_PULL_SET_MEM_CTX(ndr, r->in.password, 0);
4313 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.password));
4314 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.password));
4315 if (ndr_get_array_length(ndr, &r->in.password) > ndr_get_array_size(ndr, &r->in.password)) {
4316 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));
4318 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.password), sizeof(uint16_t)));
4319 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.password, ndr_get_array_length(ndr, &r->in.password), sizeof(uint16_t), CH_UTF16));
4320 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_password_0, 0);
4323 if (flags & NDR_OUT) {
4324 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_TagId));
4326 NDR_PULL_ALLOC(ndr, r->out.TagId);
4328 r->out.TagId = NULL;
4331 _mem_save_TagId_0 = NDR_PULL_GET_MEM_CTX(ndr);
4332 NDR_PULL_SET_MEM_CTX(ndr, r->out.TagId, 0);
4333 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.TagId));
4334 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_TagId_0, 0);
4336 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
4338 return NDR_ERR_SUCCESS;
4341 _PUBLIC_ void ndr_print_svcctl_CreateServiceA(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_CreateServiceA *r)
4343 ndr_print_struct(ndr, name, "svcctl_CreateServiceA");
4345 if (flags & NDR_SET_VALUES) {
4346 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
4348 if (flags & NDR_IN) {
4349 ndr_print_struct(ndr, "in", "svcctl_CreateServiceA");
4351 ndr_print_ptr(ndr, "handle", r->in.handle);
4353 ndr_print_policy_handle(ndr, "handle", r->in.handle);
4355 ndr_print_ptr(ndr, "ServiceName", r->in.ServiceName);
4357 if (r->in.ServiceName) {
4358 ndr_print_string(ndr, "ServiceName", r->in.ServiceName);
4361 ndr_print_ptr(ndr, "DisplayName", r->in.DisplayName);
4363 if (r->in.DisplayName) {
4364 ndr_print_string(ndr, "DisplayName", r->in.DisplayName);
4367 ndr_print_uint32(ndr, "desired_access", r->in.desired_access);
4368 ndr_print_uint32(ndr, "type", r->in.type);
4369 ndr_print_svcctl_StartType(ndr, "start_type", r->in.start_type);
4370 ndr_print_svcctl_ErrorControl(ndr, "error_control", r->in.error_control);
4371 ndr_print_ptr(ndr, "binary_path", r->in.binary_path);
4373 if (r->in.binary_path) {
4374 ndr_print_string(ndr, "binary_path", r->in.binary_path);
4377 ndr_print_ptr(ndr, "LoadOrderGroupKey", r->in.LoadOrderGroupKey);
4379 if (r->in.LoadOrderGroupKey) {
4380 ndr_print_string(ndr, "LoadOrderGroupKey", r->in.LoadOrderGroupKey);
4383 ndr_print_ptr(ndr, "dependencies", r->in.dependencies);
4385 if (r->in.dependencies) {
4386 ndr_print_string(ndr, "dependencies", r->in.dependencies);
4389 ndr_print_ptr(ndr, "service_start_name", r->in.service_start_name);
4391 if (r->in.service_start_name) {
4392 ndr_print_string(ndr, "service_start_name", r->in.service_start_name);
4395 ndr_print_ptr(ndr, "password", r->in.password);
4397 if (r->in.password) {
4398 ndr_print_string(ndr, "password", r->in.password);
4403 if (flags & NDR_OUT) {
4404 ndr_print_struct(ndr, "out", "svcctl_CreateServiceA");
4406 ndr_print_ptr(ndr, "TagId", r->out.TagId);
4409 ndr_print_uint32(ndr, "TagId", *r->out.TagId);
4412 ndr_print_WERROR(ndr, "result", r->out.result);
4418 static enum ndr_err_code ndr_push_svcctl_EnumDependentServicesA(struct ndr_push *ndr, int flags, const struct svcctl_EnumDependentServicesA *r)
4420 if (flags & NDR_IN) {
4421 if (r->in.service == NULL) {
4422 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
4424 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.service));
4425 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.state));
4426 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.buf_size));
4428 if (flags & NDR_OUT) {
4429 NDR_CHECK(ndr_push_unique_ptr(ndr, r->out.service_status));
4430 if (r->out.service_status) {
4431 NDR_CHECK(ndr_push_ENUM_SERVICE_STATUS(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.service_status));
4433 if (r->out.bytes_needed == NULL) {
4434 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
4436 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.bytes_needed));
4437 if (r->out.services_returned == NULL) {
4438 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
4440 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.services_returned));
4441 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
4443 return NDR_ERR_SUCCESS;
4446 static enum ndr_err_code ndr_pull_svcctl_EnumDependentServicesA(struct ndr_pull *ndr, int flags, struct svcctl_EnumDependentServicesA *r)
4448 uint32_t _ptr_service_status;
4449 TALLOC_CTX *_mem_save_service_0;
4450 TALLOC_CTX *_mem_save_service_status_0;
4451 TALLOC_CTX *_mem_save_bytes_needed_0;
4452 TALLOC_CTX *_mem_save_services_returned_0;
4453 if (flags & NDR_IN) {
4454 ZERO_STRUCT(r->out);
4456 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
4457 NDR_PULL_ALLOC(ndr, r->in.service);
4459 _mem_save_service_0 = NDR_PULL_GET_MEM_CTX(ndr);
4460 NDR_PULL_SET_MEM_CTX(ndr, r->in.service, LIBNDR_FLAG_REF_ALLOC);
4461 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.service));
4462 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_service_0, LIBNDR_FLAG_REF_ALLOC);
4463 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.state));
4464 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.buf_size));
4465 NDR_PULL_ALLOC(ndr, r->out.bytes_needed);
4466 ZERO_STRUCTP(r->out.bytes_needed);
4467 NDR_PULL_ALLOC(ndr, r->out.services_returned);
4468 ZERO_STRUCTP(r->out.services_returned);
4470 if (flags & NDR_OUT) {
4471 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_service_status));
4472 if (_ptr_service_status) {
4473 NDR_PULL_ALLOC(ndr, r->out.service_status);
4475 r->out.service_status = NULL;
4477 if (r->out.service_status) {
4478 _mem_save_service_status_0 = NDR_PULL_GET_MEM_CTX(ndr);
4479 NDR_PULL_SET_MEM_CTX(ndr, r->out.service_status, 0);
4480 NDR_CHECK(ndr_pull_ENUM_SERVICE_STATUS(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.service_status));
4481 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_service_status_0, 0);
4483 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
4484 NDR_PULL_ALLOC(ndr, r->out.bytes_needed);
4486 _mem_save_bytes_needed_0 = NDR_PULL_GET_MEM_CTX(ndr);
4487 NDR_PULL_SET_MEM_CTX(ndr, r->out.bytes_needed, LIBNDR_FLAG_REF_ALLOC);
4488 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.bytes_needed));
4489 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_bytes_needed_0, LIBNDR_FLAG_REF_ALLOC);
4490 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
4491 NDR_PULL_ALLOC(ndr, r->out.services_returned);
4493 _mem_save_services_returned_0 = NDR_PULL_GET_MEM_CTX(ndr);
4494 NDR_PULL_SET_MEM_CTX(ndr, r->out.services_returned, LIBNDR_FLAG_REF_ALLOC);
4495 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.services_returned));
4496 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_services_returned_0, LIBNDR_FLAG_REF_ALLOC);
4497 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
4499 return NDR_ERR_SUCCESS;
4502 _PUBLIC_ void ndr_print_svcctl_EnumDependentServicesA(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_EnumDependentServicesA *r)
4504 ndr_print_struct(ndr, name, "svcctl_EnumDependentServicesA");
4506 if (flags & NDR_SET_VALUES) {
4507 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
4509 if (flags & NDR_IN) {
4510 ndr_print_struct(ndr, "in", "svcctl_EnumDependentServicesA");
4512 ndr_print_ptr(ndr, "service", r->in.service);
4514 ndr_print_policy_handle(ndr, "service", r->in.service);
4516 ndr_print_uint32(ndr, "state", r->in.state);
4517 ndr_print_uint32(ndr, "buf_size", r->in.buf_size);
4520 if (flags & NDR_OUT) {
4521 ndr_print_struct(ndr, "out", "svcctl_EnumDependentServicesA");
4523 ndr_print_ptr(ndr, "service_status", r->out.service_status);
4525 if (r->out.service_status) {
4526 ndr_print_ENUM_SERVICE_STATUS(ndr, "service_status", r->out.service_status);
4529 ndr_print_ptr(ndr, "bytes_needed", r->out.bytes_needed);
4531 ndr_print_uint32(ndr, "bytes_needed", *r->out.bytes_needed);
4533 ndr_print_ptr(ndr, "services_returned", r->out.services_returned);
4535 ndr_print_uint32(ndr, "services_returned", *r->out.services_returned);
4537 ndr_print_WERROR(ndr, "result", r->out.result);
4543 static enum ndr_err_code ndr_push_svcctl_EnumServicesStatusA(struct ndr_push *ndr, int flags, const struct svcctl_EnumServicesStatusA *r)
4545 if (flags & NDR_IN) {
4546 if (r->in.handle == NULL) {
4547 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
4549 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
4550 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.type));
4551 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.state));
4552 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.buf_size));
4553 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.resume_handle));
4554 if (r->in.resume_handle) {
4555 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->in.resume_handle));
4558 if (flags & NDR_OUT) {
4559 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.buf_size));
4560 NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->out.service, r->in.buf_size));
4561 if (r->out.bytes_needed == NULL) {
4562 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
4564 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.bytes_needed));
4565 if (r->out.services_returned == NULL) {
4566 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
4568 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.services_returned));
4569 NDR_CHECK(ndr_push_unique_ptr(ndr, r->out.resume_handle));
4570 if (r->out.resume_handle) {
4571 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.resume_handle));
4573 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
4575 return NDR_ERR_SUCCESS;
4578 static enum ndr_err_code ndr_pull_svcctl_EnumServicesStatusA(struct ndr_pull *ndr, int flags, struct svcctl_EnumServicesStatusA *r)
4580 uint32_t _ptr_resume_handle;
4581 TALLOC_CTX *_mem_save_handle_0;
4582 TALLOC_CTX *_mem_save_bytes_needed_0;
4583 TALLOC_CTX *_mem_save_services_returned_0;
4584 TALLOC_CTX *_mem_save_resume_handle_0;
4585 if (flags & NDR_IN) {
4586 ZERO_STRUCT(r->out);
4588 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
4589 NDR_PULL_ALLOC(ndr, r->in.handle);
4591 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
4592 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
4593 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
4594 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
4595 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.type));
4596 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.state));
4597 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.buf_size));
4598 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_resume_handle));
4599 if (_ptr_resume_handle) {
4600 NDR_PULL_ALLOC(ndr, r->in.resume_handle);
4602 r->in.resume_handle = NULL;
4604 if (r->in.resume_handle) {
4605 _mem_save_resume_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
4606 NDR_PULL_SET_MEM_CTX(ndr, r->in.resume_handle, 0);
4607 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->in.resume_handle));
4608 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_resume_handle_0, 0);
4610 NDR_PULL_ALLOC(ndr, r->out.bytes_needed);
4611 ZERO_STRUCTP(r->out.bytes_needed);
4612 NDR_PULL_ALLOC(ndr, r->out.services_returned);
4613 ZERO_STRUCTP(r->out.services_returned);
4615 if (flags & NDR_OUT) {
4616 NDR_CHECK(ndr_pull_array_size(ndr, &r->out.service));
4617 NDR_PULL_ALLOC_N(ndr, r->out.service, ndr_get_array_size(ndr, &r->out.service));
4618 NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->out.service, ndr_get_array_size(ndr, &r->out.service)));
4619 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
4620 NDR_PULL_ALLOC(ndr, r->out.bytes_needed);
4622 _mem_save_bytes_needed_0 = NDR_PULL_GET_MEM_CTX(ndr);
4623 NDR_PULL_SET_MEM_CTX(ndr, r->out.bytes_needed, LIBNDR_FLAG_REF_ALLOC);
4624 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.bytes_needed));
4625 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_bytes_needed_0, LIBNDR_FLAG_REF_ALLOC);
4626 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
4627 NDR_PULL_ALLOC(ndr, r->out.services_returned);
4629 _mem_save_services_returned_0 = NDR_PULL_GET_MEM_CTX(ndr);
4630 NDR_PULL_SET_MEM_CTX(ndr, r->out.services_returned, LIBNDR_FLAG_REF_ALLOC);
4631 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.services_returned));
4632 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_services_returned_0, LIBNDR_FLAG_REF_ALLOC);
4633 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_resume_handle));
4634 if (_ptr_resume_handle) {
4635 NDR_PULL_ALLOC(ndr, r->out.resume_handle);
4637 r->out.resume_handle = NULL;
4639 if (r->out.resume_handle) {
4640 _mem_save_resume_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
4641 NDR_PULL_SET_MEM_CTX(ndr, r->out.resume_handle, 0);
4642 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.resume_handle));
4643 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_resume_handle_0, 0);
4645 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
4646 if (r->out.service) {
4647 NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->out.service, r->in.buf_size));
4650 return NDR_ERR_SUCCESS;
4653 _PUBLIC_ void ndr_print_svcctl_EnumServicesStatusA(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_EnumServicesStatusA *r)
4655 ndr_print_struct(ndr, name, "svcctl_EnumServicesStatusA");
4657 if (flags & NDR_SET_VALUES) {
4658 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
4660 if (flags & NDR_IN) {
4661 ndr_print_struct(ndr, "in", "svcctl_EnumServicesStatusA");
4663 ndr_print_ptr(ndr, "handle", r->in.handle);
4665 ndr_print_policy_handle(ndr, "handle", r->in.handle);
4667 ndr_print_uint32(ndr, "type", r->in.type);
4668 ndr_print_uint32(ndr, "state", r->in.state);
4669 ndr_print_uint32(ndr, "buf_size", r->in.buf_size);
4670 ndr_print_ptr(ndr, "resume_handle", r->in.resume_handle);
4672 if (r->in.resume_handle) {
4673 ndr_print_uint32(ndr, "resume_handle", *r->in.resume_handle);
4678 if (flags & NDR_OUT) {
4679 ndr_print_struct(ndr, "out", "svcctl_EnumServicesStatusA");
4681 ndr_print_array_uint8(ndr, "service", r->out.service, r->in.buf_size);
4682 ndr_print_ptr(ndr, "bytes_needed", r->out.bytes_needed);
4684 ndr_print_uint32(ndr, "bytes_needed", *r->out.bytes_needed);
4686 ndr_print_ptr(ndr, "services_returned", r->out.services_returned);
4688 ndr_print_uint32(ndr, "services_returned", *r->out.services_returned);
4690 ndr_print_ptr(ndr, "resume_handle", r->out.resume_handle);
4692 if (r->out.resume_handle) {
4693 ndr_print_uint32(ndr, "resume_handle", *r->out.resume_handle);
4696 ndr_print_WERROR(ndr, "result", r->out.result);
4702 static enum ndr_err_code ndr_push_svcctl_OpenSCManagerA(struct ndr_push *ndr, int flags, const struct svcctl_OpenSCManagerA *r)
4704 if (flags & NDR_IN) {
4705 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.MachineName));
4706 if (r->in.MachineName) {
4707 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.MachineName, CH_UTF16)));
4708 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
4709 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.MachineName, CH_UTF16)));
4710 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.MachineName, ndr_charset_length(r->in.MachineName, CH_UTF16), sizeof(uint16_t), CH_UTF16));
4712 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.DatabaseName));
4713 if (r->in.DatabaseName) {
4714 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.DatabaseName, CH_UTF16)));
4715 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
4716 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.DatabaseName, CH_UTF16)));
4717 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.DatabaseName, ndr_charset_length(r->in.DatabaseName, CH_UTF16), sizeof(uint16_t), CH_UTF16));
4719 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.access_mask));
4721 if (flags & NDR_OUT) {
4722 if (r->out.handle == NULL) {
4723 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
4725 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->out.handle));
4726 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
4728 return NDR_ERR_SUCCESS;
4731 static enum ndr_err_code ndr_pull_svcctl_OpenSCManagerA(struct ndr_pull *ndr, int flags, struct svcctl_OpenSCManagerA *r)
4733 uint32_t _ptr_MachineName;
4734 uint32_t _ptr_DatabaseName;
4735 TALLOC_CTX *_mem_save_MachineName_0;
4736 TALLOC_CTX *_mem_save_DatabaseName_0;
4737 TALLOC_CTX *_mem_save_handle_0;
4738 if (flags & NDR_IN) {
4739 ZERO_STRUCT(r->out);
4741 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_MachineName));
4742 if (_ptr_MachineName) {
4743 NDR_PULL_ALLOC(ndr, r->in.MachineName);
4745 r->in.MachineName = NULL;
4747 if (r->in.MachineName) {
4748 _mem_save_MachineName_0 = NDR_PULL_GET_MEM_CTX(ndr);
4749 NDR_PULL_SET_MEM_CTX(ndr, r->in.MachineName, 0);
4750 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.MachineName));
4751 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.MachineName));
4752 if (ndr_get_array_length(ndr, &r->in.MachineName) > ndr_get_array_size(ndr, &r->in.MachineName)) {
4753 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));
4755 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.MachineName), sizeof(uint16_t)));
4756 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.MachineName, ndr_get_array_length(ndr, &r->in.MachineName), sizeof(uint16_t), CH_UTF16));
4757 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_MachineName_0, 0);
4759 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_DatabaseName));
4760 if (_ptr_DatabaseName) {
4761 NDR_PULL_ALLOC(ndr, r->in.DatabaseName);
4763 r->in.DatabaseName = NULL;
4765 if (r->in.DatabaseName) {
4766 _mem_save_DatabaseName_0 = NDR_PULL_GET_MEM_CTX(ndr);
4767 NDR_PULL_SET_MEM_CTX(ndr, r->in.DatabaseName, 0);
4768 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.DatabaseName));
4769 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.DatabaseName));
4770 if (ndr_get_array_length(ndr, &r->in.DatabaseName) > ndr_get_array_size(ndr, &r->in.DatabaseName)) {
4771 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));
4773 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.DatabaseName), sizeof(uint16_t)));
4774 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.DatabaseName, ndr_get_array_length(ndr, &r->in.DatabaseName), sizeof(uint16_t), CH_UTF16));
4775 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_DatabaseName_0, 0);
4777 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.access_mask));
4778 NDR_PULL_ALLOC(ndr, r->out.handle);
4779 ZERO_STRUCTP(r->out.handle);
4781 if (flags & NDR_OUT) {
4782 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
4783 NDR_PULL_ALLOC(ndr, r->out.handle);
4785 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
4786 NDR_PULL_SET_MEM_CTX(ndr, r->out.handle, LIBNDR_FLAG_REF_ALLOC);
4787 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->out.handle));
4788 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
4789 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
4791 return NDR_ERR_SUCCESS;
4794 _PUBLIC_ void ndr_print_svcctl_OpenSCManagerA(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_OpenSCManagerA *r)
4796 ndr_print_struct(ndr, name, "svcctl_OpenSCManagerA");
4798 if (flags & NDR_SET_VALUES) {
4799 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
4801 if (flags & NDR_IN) {
4802 ndr_print_struct(ndr, "in", "svcctl_OpenSCManagerA");
4804 ndr_print_ptr(ndr, "MachineName", r->in.MachineName);
4806 if (r->in.MachineName) {
4807 ndr_print_string(ndr, "MachineName", r->in.MachineName);
4810 ndr_print_ptr(ndr, "DatabaseName", r->in.DatabaseName);
4812 if (r->in.DatabaseName) {
4813 ndr_print_string(ndr, "DatabaseName", r->in.DatabaseName);
4816 ndr_print_uint32(ndr, "access_mask", r->in.access_mask);
4819 if (flags & NDR_OUT) {
4820 ndr_print_struct(ndr, "out", "svcctl_OpenSCManagerA");
4822 ndr_print_ptr(ndr, "handle", r->out.handle);
4824 ndr_print_policy_handle(ndr, "handle", r->out.handle);
4826 ndr_print_WERROR(ndr, "result", r->out.result);
4832 static enum ndr_err_code ndr_push_svcctl_OpenServiceA(struct ndr_push *ndr, int flags, const struct svcctl_OpenServiceA *r)
4834 if (flags & NDR_IN) {
4835 if (r->in.scmanager_handle == NULL) {
4836 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
4838 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.scmanager_handle));
4839 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.ServiceName));
4840 if (r->in.ServiceName) {
4841 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.ServiceName, CH_UTF16)));
4842 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
4843 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.ServiceName, CH_UTF16)));
4844 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.ServiceName, ndr_charset_length(r->in.ServiceName, CH_UTF16), sizeof(uint16_t), CH_UTF16));
4846 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.access_mask));
4848 if (flags & NDR_OUT) {
4849 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
4851 return NDR_ERR_SUCCESS;
4854 static enum ndr_err_code ndr_pull_svcctl_OpenServiceA(struct ndr_pull *ndr, int flags, struct svcctl_OpenServiceA *r)
4856 uint32_t _ptr_ServiceName;
4857 TALLOC_CTX *_mem_save_scmanager_handle_0;
4858 TALLOC_CTX *_mem_save_ServiceName_0;
4859 if (flags & NDR_IN) {
4860 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
4861 NDR_PULL_ALLOC(ndr, r->in.scmanager_handle);
4863 _mem_save_scmanager_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
4864 NDR_PULL_SET_MEM_CTX(ndr, r->in.scmanager_handle, LIBNDR_FLAG_REF_ALLOC);
4865 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.scmanager_handle));
4866 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_scmanager_handle_0, LIBNDR_FLAG_REF_ALLOC);
4867 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_ServiceName));
4868 if (_ptr_ServiceName) {
4869 NDR_PULL_ALLOC(ndr, r->in.ServiceName);
4871 r->in.ServiceName = NULL;
4873 if (r->in.ServiceName) {
4874 _mem_save_ServiceName_0 = NDR_PULL_GET_MEM_CTX(ndr);
4875 NDR_PULL_SET_MEM_CTX(ndr, r->in.ServiceName, 0);
4876 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.ServiceName));
4877 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.ServiceName));
4878 if (ndr_get_array_length(ndr, &r->in.ServiceName) > ndr_get_array_size(ndr, &r->in.ServiceName)) {
4879 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));
4881 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.ServiceName), sizeof(uint16_t)));
4882 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.ServiceName, ndr_get_array_length(ndr, &r->in.ServiceName), sizeof(uint16_t), CH_UTF16));
4883 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_ServiceName_0, 0);
4885 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.access_mask));
4887 if (flags & NDR_OUT) {
4888 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
4890 return NDR_ERR_SUCCESS;
4893 _PUBLIC_ void ndr_print_svcctl_OpenServiceA(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_OpenServiceA *r)
4895 ndr_print_struct(ndr, name, "svcctl_OpenServiceA");
4897 if (flags & NDR_SET_VALUES) {
4898 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
4900 if (flags & NDR_IN) {
4901 ndr_print_struct(ndr, "in", "svcctl_OpenServiceA");
4903 ndr_print_ptr(ndr, "scmanager_handle", r->in.scmanager_handle);
4905 ndr_print_policy_handle(ndr, "scmanager_handle", r->in.scmanager_handle);
4907 ndr_print_ptr(ndr, "ServiceName", r->in.ServiceName);
4909 if (r->in.ServiceName) {
4910 ndr_print_string(ndr, "ServiceName", r->in.ServiceName);
4913 ndr_print_uint32(ndr, "access_mask", r->in.access_mask);
4916 if (flags & NDR_OUT) {
4917 ndr_print_struct(ndr, "out", "svcctl_OpenServiceA");
4919 ndr_print_WERROR(ndr, "result", r->out.result);
4925 static enum ndr_err_code ndr_push_svcctl_QueryServiceConfigA(struct ndr_push *ndr, int flags, const struct svcctl_QueryServiceConfigA *r)
4927 if (flags & NDR_IN) {
4928 if (r->in.handle == NULL) {
4929 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
4931 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
4932 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.buf_size));
4934 if (flags & NDR_OUT) {
4935 NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->out.query, r->in.buf_size));
4936 if (r->out.bytes_needed == NULL) {
4937 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
4939 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.bytes_needed));
4940 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
4942 return NDR_ERR_SUCCESS;
4945 static enum ndr_err_code ndr_pull_svcctl_QueryServiceConfigA(struct ndr_pull *ndr, int flags, struct svcctl_QueryServiceConfigA *r)
4947 TALLOC_CTX *_mem_save_handle_0;
4948 TALLOC_CTX *_mem_save_bytes_needed_0;
4949 if (flags & NDR_IN) {
4950 ZERO_STRUCT(r->out);
4952 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
4953 NDR_PULL_ALLOC(ndr, r->in.handle);
4955 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
4956 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
4957 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
4958 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
4959 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.buf_size));
4960 NDR_PULL_ALLOC(ndr, r->out.bytes_needed);
4961 ZERO_STRUCTP(r->out.bytes_needed);
4963 if (flags & NDR_OUT) {
4964 NDR_PULL_ALLOC_N(ndr, r->out.query, r->in.buf_size);
4965 NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->out.query, r->in.buf_size));
4966 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
4967 NDR_PULL_ALLOC(ndr, r->out.bytes_needed);
4969 _mem_save_bytes_needed_0 = NDR_PULL_GET_MEM_CTX(ndr);
4970 NDR_PULL_SET_MEM_CTX(ndr, r->out.bytes_needed, LIBNDR_FLAG_REF_ALLOC);
4971 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.bytes_needed));
4972 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_bytes_needed_0, LIBNDR_FLAG_REF_ALLOC);
4973 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
4975 return NDR_ERR_SUCCESS;
4978 _PUBLIC_ void ndr_print_svcctl_QueryServiceConfigA(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_QueryServiceConfigA *r)
4980 ndr_print_struct(ndr, name, "svcctl_QueryServiceConfigA");
4982 if (flags & NDR_SET_VALUES) {
4983 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
4985 if (flags & NDR_IN) {
4986 ndr_print_struct(ndr, "in", "svcctl_QueryServiceConfigA");
4988 ndr_print_ptr(ndr, "handle", r->in.handle);
4990 ndr_print_policy_handle(ndr, "handle", r->in.handle);
4992 ndr_print_uint32(ndr, "buf_size", r->in.buf_size);
4995 if (flags & NDR_OUT) {
4996 ndr_print_struct(ndr, "out", "svcctl_QueryServiceConfigA");
4998 ndr_print_array_uint8(ndr, "query", r->out.query, r->in.buf_size);
4999 ndr_print_ptr(ndr, "bytes_needed", r->out.bytes_needed);
5001 ndr_print_uint32(ndr, "bytes_needed", *r->out.bytes_needed);
5003 ndr_print_WERROR(ndr, "result", r->out.result);
5009 static enum ndr_err_code ndr_push_svcctl_QueryServiceLockStatusA(struct ndr_push *ndr, int flags, const struct svcctl_QueryServiceLockStatusA *r)
5011 if (flags & NDR_IN) {
5012 if (r->in.handle == NULL) {
5013 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
5015 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
5016 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.buf_size));
5018 if (flags & NDR_OUT) {
5019 if (r->out.lock_status == NULL) {
5020 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
5022 NDR_CHECK(ndr_push_SERVICE_LOCK_STATUS(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.lock_status));
5023 if (r->out.required_buf_size == NULL) {
5024 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
5026 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.required_buf_size));
5027 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
5029 return NDR_ERR_SUCCESS;
5032 static enum ndr_err_code ndr_pull_svcctl_QueryServiceLockStatusA(struct ndr_pull *ndr, int flags, struct svcctl_QueryServiceLockStatusA *r)
5034 TALLOC_CTX *_mem_save_handle_0;
5035 TALLOC_CTX *_mem_save_lock_status_0;
5036 TALLOC_CTX *_mem_save_required_buf_size_0;
5037 if (flags & NDR_IN) {
5038 ZERO_STRUCT(r->out);
5040 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
5041 NDR_PULL_ALLOC(ndr, r->in.handle);
5043 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
5044 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
5045 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
5046 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
5047 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.buf_size));
5048 NDR_PULL_ALLOC(ndr, r->out.lock_status);
5049 ZERO_STRUCTP(r->out.lock_status);
5050 NDR_PULL_ALLOC(ndr, r->out.required_buf_size);
5051 ZERO_STRUCTP(r->out.required_buf_size);
5053 if (flags & NDR_OUT) {
5054 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
5055 NDR_PULL_ALLOC(ndr, r->out.lock_status);
5057 _mem_save_lock_status_0 = NDR_PULL_GET_MEM_CTX(ndr);
5058 NDR_PULL_SET_MEM_CTX(ndr, r->out.lock_status, LIBNDR_FLAG_REF_ALLOC);
5059 NDR_CHECK(ndr_pull_SERVICE_LOCK_STATUS(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.lock_status));
5060 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_lock_status_0, LIBNDR_FLAG_REF_ALLOC);
5061 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
5062 NDR_PULL_ALLOC(ndr, r->out.required_buf_size);
5064 _mem_save_required_buf_size_0 = NDR_PULL_GET_MEM_CTX(ndr);
5065 NDR_PULL_SET_MEM_CTX(ndr, r->out.required_buf_size, LIBNDR_FLAG_REF_ALLOC);
5066 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.required_buf_size));
5067 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_required_buf_size_0, LIBNDR_FLAG_REF_ALLOC);
5068 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
5070 return NDR_ERR_SUCCESS;
5073 _PUBLIC_ void ndr_print_svcctl_QueryServiceLockStatusA(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_QueryServiceLockStatusA *r)
5075 ndr_print_struct(ndr, name, "svcctl_QueryServiceLockStatusA");
5077 if (flags & NDR_SET_VALUES) {
5078 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
5080 if (flags & NDR_IN) {
5081 ndr_print_struct(ndr, "in", "svcctl_QueryServiceLockStatusA");
5083 ndr_print_ptr(ndr, "handle", r->in.handle);
5085 ndr_print_policy_handle(ndr, "handle", r->in.handle);
5087 ndr_print_uint32(ndr, "buf_size", r->in.buf_size);
5090 if (flags & NDR_OUT) {
5091 ndr_print_struct(ndr, "out", "svcctl_QueryServiceLockStatusA");
5093 ndr_print_ptr(ndr, "lock_status", r->out.lock_status);
5095 ndr_print_SERVICE_LOCK_STATUS(ndr, "lock_status", r->out.lock_status);
5097 ndr_print_ptr(ndr, "required_buf_size", r->out.required_buf_size);
5099 ndr_print_uint32(ndr, "required_buf_size", *r->out.required_buf_size);
5101 ndr_print_WERROR(ndr, "result", r->out.result);
5107 static enum ndr_err_code ndr_push_svcctl_StartServiceA(struct ndr_push *ndr, int flags, const struct svcctl_StartServiceA *r)
5109 if (flags & NDR_IN) {
5110 if (r->in.handle == NULL) {
5111 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
5113 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
5114 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.NumArgs));
5115 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.Arguments));
5116 if (r->in.Arguments) {
5117 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.Arguments, CH_UTF16)));
5118 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
5119 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.Arguments, CH_UTF16)));
5120 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.Arguments, ndr_charset_length(r->in.Arguments, CH_UTF16), sizeof(uint16_t), CH_UTF16));
5123 if (flags & NDR_OUT) {
5124 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
5126 return NDR_ERR_SUCCESS;
5129 static enum ndr_err_code ndr_pull_svcctl_StartServiceA(struct ndr_pull *ndr, int flags, struct svcctl_StartServiceA *r)
5131 uint32_t _ptr_Arguments;
5132 TALLOC_CTX *_mem_save_handle_0;
5133 TALLOC_CTX *_mem_save_Arguments_0;
5134 if (flags & NDR_IN) {
5135 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
5136 NDR_PULL_ALLOC(ndr, r->in.handle);
5138 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
5139 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
5140 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
5141 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
5142 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.NumArgs));
5143 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_Arguments));
5144 if (_ptr_Arguments) {
5145 NDR_PULL_ALLOC(ndr, r->in.Arguments);
5147 r->in.Arguments = NULL;
5149 if (r->in.Arguments) {
5150 _mem_save_Arguments_0 = NDR_PULL_GET_MEM_CTX(ndr);
5151 NDR_PULL_SET_MEM_CTX(ndr, r->in.Arguments, 0);
5152 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.Arguments));
5153 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.Arguments));
5154 if (ndr_get_array_length(ndr, &r->in.Arguments) > ndr_get_array_size(ndr, &r->in.Arguments)) {
5155 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));
5157 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.Arguments), sizeof(uint16_t)));
5158 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.Arguments, ndr_get_array_length(ndr, &r->in.Arguments), sizeof(uint16_t), CH_UTF16));
5159 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_Arguments_0, 0);
5162 if (flags & NDR_OUT) {
5163 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
5165 return NDR_ERR_SUCCESS;
5168 _PUBLIC_ void ndr_print_svcctl_StartServiceA(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_StartServiceA *r)
5170 ndr_print_struct(ndr, name, "svcctl_StartServiceA");
5172 if (flags & NDR_SET_VALUES) {
5173 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
5175 if (flags & NDR_IN) {
5176 ndr_print_struct(ndr, "in", "svcctl_StartServiceA");
5178 ndr_print_ptr(ndr, "handle", r->in.handle);
5180 ndr_print_policy_handle(ndr, "handle", r->in.handle);
5182 ndr_print_uint32(ndr, "NumArgs", r->in.NumArgs);
5183 ndr_print_ptr(ndr, "Arguments", r->in.Arguments);
5185 if (r->in.Arguments) {
5186 ndr_print_string(ndr, "Arguments", r->in.Arguments);
5191 if (flags & NDR_OUT) {
5192 ndr_print_struct(ndr, "out", "svcctl_StartServiceA");
5194 ndr_print_WERROR(ndr, "result", r->out.result);
5200 static enum ndr_err_code ndr_push_svcctl_GetServiceDisplayNameA(struct ndr_push *ndr, int flags, const struct svcctl_GetServiceDisplayNameA *r)
5202 if (flags & NDR_IN) {
5203 if (r->in.handle == NULL) {
5204 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
5206 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
5207 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.service_name));
5208 if (r->in.service_name) {
5209 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.service_name, CH_UTF16)));
5210 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
5211 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.service_name, CH_UTF16)));
5212 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));
5214 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.display_name_length));
5215 if (r->in.display_name_length) {
5216 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->in.display_name_length));
5219 if (flags & NDR_OUT) {
5220 if (r->out.display_name == NULL) {
5221 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
5223 NDR_CHECK(ndr_push_unique_ptr(ndr, *r->out.display_name));
5224 if (*r->out.display_name) {
5225 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(*r->out.display_name, CH_UTF16)));
5226 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
5227 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(*r->out.display_name, CH_UTF16)));
5228 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));
5230 NDR_CHECK(ndr_push_unique_ptr(ndr, r->out.display_name_length));
5231 if (r->out.display_name_length) {
5232 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.display_name_length));
5234 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
5236 return NDR_ERR_SUCCESS;
5239 static enum ndr_err_code ndr_pull_svcctl_GetServiceDisplayNameA(struct ndr_pull *ndr, int flags, struct svcctl_GetServiceDisplayNameA *r)
5241 uint32_t _ptr_service_name;
5242 uint32_t _ptr_display_name;
5243 uint32_t _ptr_display_name_length;
5244 TALLOC_CTX *_mem_save_handle_0;
5245 TALLOC_CTX *_mem_save_service_name_0;
5246 TALLOC_CTX *_mem_save_display_name_0;
5247 TALLOC_CTX *_mem_save_display_name_1;
5248 TALLOC_CTX *_mem_save_display_name_length_0;
5249 if (flags & NDR_IN) {
5250 ZERO_STRUCT(r->out);
5252 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
5253 NDR_PULL_ALLOC(ndr, r->in.handle);
5255 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
5256 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
5257 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
5258 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
5259 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_service_name));
5260 if (_ptr_service_name) {
5261 NDR_PULL_ALLOC(ndr, r->in.service_name);
5263 r->in.service_name = NULL;
5265 if (r->in.service_name) {
5266 _mem_save_service_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
5267 NDR_PULL_SET_MEM_CTX(ndr, r->in.service_name, 0);
5268 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.service_name));
5269 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.service_name));
5270 if (ndr_get_array_length(ndr, &r->in.service_name) > ndr_get_array_size(ndr, &r->in.service_name)) {
5271 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));
5273 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.service_name), sizeof(uint16_t)));
5274 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));
5275 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_service_name_0, 0);
5277 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_display_name_length));
5278 if (_ptr_display_name_length) {
5279 NDR_PULL_ALLOC(ndr, r->in.display_name_length);
5281 r->in.display_name_length = NULL;
5283 if (r->in.display_name_length) {
5284 _mem_save_display_name_length_0 = NDR_PULL_GET_MEM_CTX(ndr);
5285 NDR_PULL_SET_MEM_CTX(ndr, r->in.display_name_length, 0);
5286 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->in.display_name_length));
5287 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_display_name_length_0, 0);
5289 NDR_PULL_ALLOC(ndr, r->out.display_name);
5290 ZERO_STRUCTP(r->out.display_name);
5292 if (flags & NDR_OUT) {
5293 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
5294 NDR_PULL_ALLOC(ndr, r->out.display_name);
5296 _mem_save_display_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
5297 NDR_PULL_SET_MEM_CTX(ndr, r->out.display_name, LIBNDR_FLAG_REF_ALLOC);
5298 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_display_name));
5299 if (_ptr_display_name) {
5300 NDR_PULL_ALLOC(ndr, *r->out.display_name);
5302 *r->out.display_name = NULL;
5304 if (*r->out.display_name) {
5305 _mem_save_display_name_1 = NDR_PULL_GET_MEM_CTX(ndr);
5306 NDR_PULL_SET_MEM_CTX(ndr, *r->out.display_name, 0);
5307 NDR_CHECK(ndr_pull_array_size(ndr, r->out.display_name));
5308 NDR_CHECK(ndr_pull_array_length(ndr, r->out.display_name));
5309 if (ndr_get_array_length(ndr, r->out.display_name) > ndr_get_array_size(ndr, r->out.display_name)) {
5310 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));
5312 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, r->out.display_name), sizeof(uint16_t)));
5313 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));
5314 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_display_name_1, 0);
5316 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_display_name_0, LIBNDR_FLAG_REF_ALLOC);
5317 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_display_name_length));
5318 if (_ptr_display_name_length) {
5319 NDR_PULL_ALLOC(ndr, r->out.display_name_length);
5321 r->out.display_name_length = NULL;
5323 if (r->out.display_name_length) {
5324 _mem_save_display_name_length_0 = NDR_PULL_GET_MEM_CTX(ndr);
5325 NDR_PULL_SET_MEM_CTX(ndr, r->out.display_name_length, 0);
5326 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.display_name_length));
5327 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_display_name_length_0, 0);
5329 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
5331 return NDR_ERR_SUCCESS;
5334 _PUBLIC_ void ndr_print_svcctl_GetServiceDisplayNameA(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_GetServiceDisplayNameA *r)
5336 ndr_print_struct(ndr, name, "svcctl_GetServiceDisplayNameA");
5338 if (flags & NDR_SET_VALUES) {
5339 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
5341 if (flags & NDR_IN) {
5342 ndr_print_struct(ndr, "in", "svcctl_GetServiceDisplayNameA");
5344 ndr_print_ptr(ndr, "handle", r->in.handle);
5346 ndr_print_policy_handle(ndr, "handle", r->in.handle);
5348 ndr_print_ptr(ndr, "service_name", r->in.service_name);
5350 if (r->in.service_name) {
5351 ndr_print_string(ndr, "service_name", r->in.service_name);
5354 ndr_print_ptr(ndr, "display_name_length", r->in.display_name_length);
5356 if (r->in.display_name_length) {
5357 ndr_print_uint32(ndr, "display_name_length", *r->in.display_name_length);
5362 if (flags & NDR_OUT) {
5363 ndr_print_struct(ndr, "out", "svcctl_GetServiceDisplayNameA");
5365 ndr_print_ptr(ndr, "display_name", r->out.display_name);
5367 ndr_print_ptr(ndr, "display_name", *r->out.display_name);
5369 if (*r->out.display_name) {
5370 ndr_print_string(ndr, "display_name", *r->out.display_name);
5374 ndr_print_ptr(ndr, "display_name_length", r->out.display_name_length);
5376 if (r->out.display_name_length) {
5377 ndr_print_uint32(ndr, "display_name_length", *r->out.display_name_length);
5380 ndr_print_WERROR(ndr, "result", r->out.result);
5386 static enum ndr_err_code ndr_push_svcctl_GetServiceKeyNameA(struct ndr_push *ndr, int flags, const struct svcctl_GetServiceKeyNameA *r)
5388 if (flags & NDR_IN) {
5389 if (r->in.handle == NULL) {
5390 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
5392 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
5393 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.service_name));
5394 if (r->in.service_name) {
5395 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.service_name, CH_UTF16)));
5396 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
5397 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.service_name, CH_UTF16)));
5398 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));
5400 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.display_name_length));
5401 if (r->in.display_name_length) {
5402 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->in.display_name_length));
5405 if (flags & NDR_OUT) {
5406 if (r->out.key_name == NULL) {
5407 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
5409 NDR_CHECK(ndr_push_unique_ptr(ndr, *r->out.key_name));
5410 if (*r->out.key_name) {
5411 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(*r->out.key_name, CH_UTF16)));
5412 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
5413 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(*r->out.key_name, CH_UTF16)));
5414 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));
5416 NDR_CHECK(ndr_push_unique_ptr(ndr, r->out.display_name_length));
5417 if (r->out.display_name_length) {
5418 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.display_name_length));
5420 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
5422 return NDR_ERR_SUCCESS;
5425 static enum ndr_err_code ndr_pull_svcctl_GetServiceKeyNameA(struct ndr_pull *ndr, int flags, struct svcctl_GetServiceKeyNameA *r)
5427 uint32_t _ptr_service_name;
5428 uint32_t _ptr_key_name;
5429 uint32_t _ptr_display_name_length;
5430 TALLOC_CTX *_mem_save_handle_0;
5431 TALLOC_CTX *_mem_save_service_name_0;
5432 TALLOC_CTX *_mem_save_key_name_0;
5433 TALLOC_CTX *_mem_save_key_name_1;
5434 TALLOC_CTX *_mem_save_display_name_length_0;
5435 if (flags & NDR_IN) {
5436 ZERO_STRUCT(r->out);
5438 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
5439 NDR_PULL_ALLOC(ndr, r->in.handle);
5441 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
5442 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
5443 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
5444 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
5445 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_service_name));
5446 if (_ptr_service_name) {
5447 NDR_PULL_ALLOC(ndr, r->in.service_name);
5449 r->in.service_name = NULL;
5451 if (r->in.service_name) {
5452 _mem_save_service_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
5453 NDR_PULL_SET_MEM_CTX(ndr, r->in.service_name, 0);
5454 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.service_name));
5455 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.service_name));
5456 if (ndr_get_array_length(ndr, &r->in.service_name) > ndr_get_array_size(ndr, &r->in.service_name)) {
5457 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));
5459 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.service_name), sizeof(uint16_t)));
5460 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));
5461 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_service_name_0, 0);
5463 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_display_name_length));
5464 if (_ptr_display_name_length) {
5465 NDR_PULL_ALLOC(ndr, r->in.display_name_length);
5467 r->in.display_name_length = NULL;
5469 if (r->in.display_name_length) {
5470 _mem_save_display_name_length_0 = NDR_PULL_GET_MEM_CTX(ndr);
5471 NDR_PULL_SET_MEM_CTX(ndr, r->in.display_name_length, 0);
5472 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->in.display_name_length));
5473 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_display_name_length_0, 0);
5475 NDR_PULL_ALLOC(ndr, r->out.key_name);
5476 ZERO_STRUCTP(r->out.key_name);
5478 if (flags & NDR_OUT) {
5479 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
5480 NDR_PULL_ALLOC(ndr, r->out.key_name);
5482 _mem_save_key_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
5483 NDR_PULL_SET_MEM_CTX(ndr, r->out.key_name, LIBNDR_FLAG_REF_ALLOC);
5484 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_key_name));
5485 if (_ptr_key_name) {
5486 NDR_PULL_ALLOC(ndr, *r->out.key_name);
5488 *r->out.key_name = NULL;
5490 if (*r->out.key_name) {
5491 _mem_save_key_name_1 = NDR_PULL_GET_MEM_CTX(ndr);
5492 NDR_PULL_SET_MEM_CTX(ndr, *r->out.key_name, 0);
5493 NDR_CHECK(ndr_pull_array_size(ndr, r->out.key_name));
5494 NDR_CHECK(ndr_pull_array_length(ndr, r->out.key_name));
5495 if (ndr_get_array_length(ndr, r->out.key_name) > ndr_get_array_size(ndr, r->out.key_name)) {
5496 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));
5498 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, r->out.key_name), sizeof(uint16_t)));
5499 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));
5500 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_key_name_1, 0);
5502 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_key_name_0, LIBNDR_FLAG_REF_ALLOC);
5503 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_display_name_length));
5504 if (_ptr_display_name_length) {
5505 NDR_PULL_ALLOC(ndr, r->out.display_name_length);
5507 r->out.display_name_length = NULL;
5509 if (r->out.display_name_length) {
5510 _mem_save_display_name_length_0 = NDR_PULL_GET_MEM_CTX(ndr);
5511 NDR_PULL_SET_MEM_CTX(ndr, r->out.display_name_length, 0);
5512 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.display_name_length));
5513 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_display_name_length_0, 0);
5515 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
5517 return NDR_ERR_SUCCESS;
5520 _PUBLIC_ void ndr_print_svcctl_GetServiceKeyNameA(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_GetServiceKeyNameA *r)
5522 ndr_print_struct(ndr, name, "svcctl_GetServiceKeyNameA");
5524 if (flags & NDR_SET_VALUES) {
5525 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
5527 if (flags & NDR_IN) {
5528 ndr_print_struct(ndr, "in", "svcctl_GetServiceKeyNameA");
5530 ndr_print_ptr(ndr, "handle", r->in.handle);
5532 ndr_print_policy_handle(ndr, "handle", r->in.handle);
5534 ndr_print_ptr(ndr, "service_name", r->in.service_name);
5536 if (r->in.service_name) {
5537 ndr_print_string(ndr, "service_name", r->in.service_name);
5540 ndr_print_ptr(ndr, "display_name_length", r->in.display_name_length);
5542 if (r->in.display_name_length) {
5543 ndr_print_uint32(ndr, "display_name_length", *r->in.display_name_length);
5548 if (flags & NDR_OUT) {
5549 ndr_print_struct(ndr, "out", "svcctl_GetServiceKeyNameA");
5551 ndr_print_ptr(ndr, "key_name", r->out.key_name);
5553 ndr_print_ptr(ndr, "key_name", *r->out.key_name);
5555 if (*r->out.key_name) {
5556 ndr_print_string(ndr, "key_name", *r->out.key_name);
5560 ndr_print_ptr(ndr, "display_name_length", r->out.display_name_length);
5562 if (r->out.display_name_length) {
5563 ndr_print_uint32(ndr, "display_name_length", *r->out.display_name_length);
5566 ndr_print_WERROR(ndr, "result", r->out.result);
5572 static enum ndr_err_code ndr_push_svcctl_GetCurrentGroupeStateW(struct ndr_push *ndr, int flags, const struct svcctl_GetCurrentGroupeStateW *r)
5574 if (flags & NDR_IN) {
5576 if (flags & NDR_OUT) {
5577 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
5579 return NDR_ERR_SUCCESS;
5582 static enum ndr_err_code ndr_pull_svcctl_GetCurrentGroupeStateW(struct ndr_pull *ndr, int flags, struct svcctl_GetCurrentGroupeStateW *r)
5584 if (flags & NDR_IN) {
5586 if (flags & NDR_OUT) {
5587 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
5589 return NDR_ERR_SUCCESS;
5592 _PUBLIC_ void ndr_print_svcctl_GetCurrentGroupeStateW(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_GetCurrentGroupeStateW *r)
5594 ndr_print_struct(ndr, name, "svcctl_GetCurrentGroupeStateW");
5596 if (flags & NDR_SET_VALUES) {
5597 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
5599 if (flags & NDR_IN) {
5600 ndr_print_struct(ndr, "in", "svcctl_GetCurrentGroupeStateW");
5604 if (flags & NDR_OUT) {
5605 ndr_print_struct(ndr, "out", "svcctl_GetCurrentGroupeStateW");
5607 ndr_print_WERROR(ndr, "result", r->out.result);
5613 static enum ndr_err_code ndr_push_svcctl_EnumServiceGroupW(struct ndr_push *ndr, int flags, const struct svcctl_EnumServiceGroupW *r)
5615 if (flags & NDR_IN) {
5617 if (flags & NDR_OUT) {
5618 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
5620 return NDR_ERR_SUCCESS;
5623 static enum ndr_err_code ndr_pull_svcctl_EnumServiceGroupW(struct ndr_pull *ndr, int flags, struct svcctl_EnumServiceGroupW *r)
5625 if (flags & NDR_IN) {
5627 if (flags & NDR_OUT) {
5628 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
5630 return NDR_ERR_SUCCESS;
5633 _PUBLIC_ void ndr_print_svcctl_EnumServiceGroupW(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_EnumServiceGroupW *r)
5635 ndr_print_struct(ndr, name, "svcctl_EnumServiceGroupW");
5637 if (flags & NDR_SET_VALUES) {
5638 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
5640 if (flags & NDR_IN) {
5641 ndr_print_struct(ndr, "in", "svcctl_EnumServiceGroupW");
5645 if (flags & NDR_OUT) {
5646 ndr_print_struct(ndr, "out", "svcctl_EnumServiceGroupW");
5648 ndr_print_WERROR(ndr, "result", r->out.result);
5654 static enum ndr_err_code ndr_push_svcctl_ChangeServiceConfig2A(struct ndr_push *ndr, int flags, const struct svcctl_ChangeServiceConfig2A *r)
5656 if (flags & NDR_IN) {
5657 if (r->in.handle == NULL) {
5658 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
5660 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
5661 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.info_level));
5662 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.info));
5664 NDR_CHECK(ndr_push_uint8(ndr, NDR_SCALARS, *r->in.info));
5667 if (flags & NDR_OUT) {
5668 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
5670 return NDR_ERR_SUCCESS;
5673 static enum ndr_err_code ndr_pull_svcctl_ChangeServiceConfig2A(struct ndr_pull *ndr, int flags, struct svcctl_ChangeServiceConfig2A *r)
5676 TALLOC_CTX *_mem_save_handle_0;
5677 TALLOC_CTX *_mem_save_info_0;
5678 if (flags & NDR_IN) {
5679 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
5680 NDR_PULL_ALLOC(ndr, r->in.handle);
5682 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
5683 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
5684 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
5685 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
5686 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.info_level));
5687 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_info));
5689 NDR_PULL_ALLOC(ndr, r->in.info);
5694 _mem_save_info_0 = NDR_PULL_GET_MEM_CTX(ndr);
5695 NDR_PULL_SET_MEM_CTX(ndr, r->in.info, 0);
5696 NDR_CHECK(ndr_pull_uint8(ndr, NDR_SCALARS, r->in.info));
5697 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_info_0, 0);
5700 if (flags & NDR_OUT) {
5701 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
5703 return NDR_ERR_SUCCESS;
5706 _PUBLIC_ void ndr_print_svcctl_ChangeServiceConfig2A(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_ChangeServiceConfig2A *r)
5708 ndr_print_struct(ndr, name, "svcctl_ChangeServiceConfig2A");
5710 if (flags & NDR_SET_VALUES) {
5711 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
5713 if (flags & NDR_IN) {
5714 ndr_print_struct(ndr, "in", "svcctl_ChangeServiceConfig2A");
5716 ndr_print_ptr(ndr, "handle", r->in.handle);
5718 ndr_print_policy_handle(ndr, "handle", r->in.handle);
5720 ndr_print_uint32(ndr, "info_level", r->in.info_level);
5721 ndr_print_ptr(ndr, "info", r->in.info);
5724 ndr_print_uint8(ndr, "info", *r->in.info);
5729 if (flags & NDR_OUT) {
5730 ndr_print_struct(ndr, "out", "svcctl_ChangeServiceConfig2A");
5732 ndr_print_WERROR(ndr, "result", r->out.result);
5738 static enum ndr_err_code ndr_push_svcctl_ChangeServiceConfig2W(struct ndr_push *ndr, int flags, const struct svcctl_ChangeServiceConfig2W *r)
5740 if (flags & NDR_IN) {
5741 if (r->in.handle == NULL) {
5742 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
5744 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
5745 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.info_level));
5746 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.info));
5748 NDR_CHECK(ndr_push_uint8(ndr, NDR_SCALARS, *r->in.info));
5751 if (flags & NDR_OUT) {
5752 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
5754 return NDR_ERR_SUCCESS;
5757 static enum ndr_err_code ndr_pull_svcctl_ChangeServiceConfig2W(struct ndr_pull *ndr, int flags, struct svcctl_ChangeServiceConfig2W *r)
5760 TALLOC_CTX *_mem_save_handle_0;
5761 TALLOC_CTX *_mem_save_info_0;
5762 if (flags & NDR_IN) {
5763 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
5764 NDR_PULL_ALLOC(ndr, r->in.handle);
5766 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
5767 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
5768 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
5769 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
5770 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.info_level));
5771 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_info));
5773 NDR_PULL_ALLOC(ndr, r->in.info);
5778 _mem_save_info_0 = NDR_PULL_GET_MEM_CTX(ndr);
5779 NDR_PULL_SET_MEM_CTX(ndr, r->in.info, 0);
5780 NDR_CHECK(ndr_pull_uint8(ndr, NDR_SCALARS, r->in.info));
5781 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_info_0, 0);
5784 if (flags & NDR_OUT) {
5785 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
5787 return NDR_ERR_SUCCESS;
5790 _PUBLIC_ void ndr_print_svcctl_ChangeServiceConfig2W(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_ChangeServiceConfig2W *r)
5792 ndr_print_struct(ndr, name, "svcctl_ChangeServiceConfig2W");
5794 if (flags & NDR_SET_VALUES) {
5795 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
5797 if (flags & NDR_IN) {
5798 ndr_print_struct(ndr, "in", "svcctl_ChangeServiceConfig2W");
5800 ndr_print_ptr(ndr, "handle", r->in.handle);
5802 ndr_print_policy_handle(ndr, "handle", r->in.handle);
5804 ndr_print_uint32(ndr, "info_level", r->in.info_level);
5805 ndr_print_ptr(ndr, "info", r->in.info);
5808 ndr_print_uint8(ndr, "info", *r->in.info);
5813 if (flags & NDR_OUT) {
5814 ndr_print_struct(ndr, "out", "svcctl_ChangeServiceConfig2W");
5816 ndr_print_WERROR(ndr, "result", r->out.result);
5822 static enum ndr_err_code ndr_push_svcctl_QueryServiceConfig2A(struct ndr_push *ndr, int flags, const struct svcctl_QueryServiceConfig2A *r)
5824 if (flags & NDR_IN) {
5825 if (r->in.handle == NULL) {
5826 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
5828 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
5829 NDR_CHECK(ndr_push_svcctl_ConfigLevel(ndr, NDR_SCALARS, r->in.info_level));
5830 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.buf_size));
5832 if (flags & NDR_OUT) {
5833 NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->out.buffer, r->in.buf_size));
5834 if (r->out.bytes_needed == NULL) {
5835 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
5837 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.bytes_needed));
5838 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
5840 return NDR_ERR_SUCCESS;
5843 static enum ndr_err_code ndr_pull_svcctl_QueryServiceConfig2A(struct ndr_pull *ndr, int flags, struct svcctl_QueryServiceConfig2A *r)
5845 TALLOC_CTX *_mem_save_handle_0;
5846 TALLOC_CTX *_mem_save_bytes_needed_0;
5847 if (flags & NDR_IN) {
5848 ZERO_STRUCT(r->out);
5850 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
5851 NDR_PULL_ALLOC(ndr, r->in.handle);
5853 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
5854 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
5855 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
5856 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
5857 NDR_CHECK(ndr_pull_svcctl_ConfigLevel(ndr, NDR_SCALARS, &r->in.info_level));
5858 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.buf_size));
5859 NDR_PULL_ALLOC(ndr, r->out.bytes_needed);
5860 ZERO_STRUCTP(r->out.bytes_needed);
5862 if (flags & NDR_OUT) {
5863 NDR_PULL_ALLOC_N(ndr, r->out.buffer, r->in.buf_size);
5864 NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->out.buffer, r->in.buf_size));
5865 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
5866 NDR_PULL_ALLOC(ndr, r->out.bytes_needed);
5868 _mem_save_bytes_needed_0 = NDR_PULL_GET_MEM_CTX(ndr);
5869 NDR_PULL_SET_MEM_CTX(ndr, r->out.bytes_needed, LIBNDR_FLAG_REF_ALLOC);
5870 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.bytes_needed));
5871 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_bytes_needed_0, LIBNDR_FLAG_REF_ALLOC);
5872 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
5874 return NDR_ERR_SUCCESS;
5877 _PUBLIC_ void ndr_print_svcctl_QueryServiceConfig2A(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_QueryServiceConfig2A *r)
5879 ndr_print_struct(ndr, name, "svcctl_QueryServiceConfig2A");
5881 if (flags & NDR_SET_VALUES) {
5882 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
5884 if (flags & NDR_IN) {
5885 ndr_print_struct(ndr, "in", "svcctl_QueryServiceConfig2A");
5887 ndr_print_ptr(ndr, "handle", r->in.handle);
5889 ndr_print_policy_handle(ndr, "handle", r->in.handle);
5891 ndr_print_svcctl_ConfigLevel(ndr, "info_level", r->in.info_level);
5892 ndr_print_uint32(ndr, "buf_size", r->in.buf_size);
5895 if (flags & NDR_OUT) {
5896 ndr_print_struct(ndr, "out", "svcctl_QueryServiceConfig2A");
5898 ndr_print_array_uint8(ndr, "buffer", r->out.buffer, r->in.buf_size);
5899 ndr_print_ptr(ndr, "bytes_needed", r->out.bytes_needed);
5901 ndr_print_uint32(ndr, "bytes_needed", *r->out.bytes_needed);
5903 ndr_print_WERROR(ndr, "result", r->out.result);
5909 static enum ndr_err_code ndr_push_svcctl_QueryServiceConfig2W(struct ndr_push *ndr, int flags, const struct svcctl_QueryServiceConfig2W *r)
5911 if (flags & NDR_IN) {
5912 if (r->in.handle == NULL) {
5913 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
5915 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
5916 NDR_CHECK(ndr_push_svcctl_ConfigLevel(ndr, NDR_SCALARS, r->in.info_level));
5917 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.buf_size));
5919 if (flags & NDR_OUT) {
5920 if (r->out.buffer == NULL) {
5921 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
5923 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.buf_size));
5924 NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->out.buffer, r->in.buf_size));
5925 if (r->out.bytes_needed == NULL) {
5926 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
5928 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.bytes_needed));
5929 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
5931 return NDR_ERR_SUCCESS;
5934 static enum ndr_err_code ndr_pull_svcctl_QueryServiceConfig2W(struct ndr_pull *ndr, int flags, struct svcctl_QueryServiceConfig2W *r)
5936 TALLOC_CTX *_mem_save_handle_0;
5937 TALLOC_CTX *_mem_save_bytes_needed_0;
5938 if (flags & NDR_IN) {
5939 ZERO_STRUCT(r->out);
5941 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
5942 NDR_PULL_ALLOC(ndr, r->in.handle);
5944 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
5945 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
5946 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
5947 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
5948 NDR_CHECK(ndr_pull_svcctl_ConfigLevel(ndr, NDR_SCALARS, &r->in.info_level));
5949 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.buf_size));
5950 if (r->in.buf_size < 0 || r->in.buf_size > 8192) {
5951 return ndr_pull_error(ndr, NDR_ERR_RANGE, "value out of range");
5953 NDR_PULL_ALLOC_N(ndr, r->out.buffer, r->in.buf_size);
5954 memset(CONST_DISCARD(struct svcctl_QueryServiceConfig2W *,r->out.buffer), 0, (r->in.buf_size) * sizeof(*r->out.buffer));
5955 NDR_PULL_ALLOC(ndr, r->out.bytes_needed);
5956 ZERO_STRUCTP(r->out.bytes_needed);
5958 if (flags & NDR_OUT) {
5959 NDR_CHECK(ndr_pull_array_size(ndr, &r->out.buffer));
5960 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
5961 NDR_PULL_ALLOC_N(ndr, r->out.buffer, ndr_get_array_size(ndr, &r->out.buffer));
5963 NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->out.buffer, ndr_get_array_size(ndr, &r->out.buffer)));
5964 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
5965 NDR_PULL_ALLOC(ndr, r->out.bytes_needed);
5967 _mem_save_bytes_needed_0 = NDR_PULL_GET_MEM_CTX(ndr);
5968 NDR_PULL_SET_MEM_CTX(ndr, r->out.bytes_needed, LIBNDR_FLAG_REF_ALLOC);
5969 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.bytes_needed));
5970 if (*r->out.bytes_needed < 0 || *r->out.bytes_needed > 8192) {
5971 return ndr_pull_error(ndr, NDR_ERR_RANGE, "value out of range");
5973 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_bytes_needed_0, LIBNDR_FLAG_REF_ALLOC);
5974 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
5975 if (r->out.buffer) {
5976 NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->out.buffer, r->in.buf_size));
5979 return NDR_ERR_SUCCESS;
5982 _PUBLIC_ void ndr_print_svcctl_QueryServiceConfig2W(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_QueryServiceConfig2W *r)
5984 ndr_print_struct(ndr, name, "svcctl_QueryServiceConfig2W");
5986 if (flags & NDR_SET_VALUES) {
5987 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
5989 if (flags & NDR_IN) {
5990 ndr_print_struct(ndr, "in", "svcctl_QueryServiceConfig2W");
5992 ndr_print_ptr(ndr, "handle", r->in.handle);
5994 ndr_print_policy_handle(ndr, "handle", r->in.handle);
5996 ndr_print_svcctl_ConfigLevel(ndr, "info_level", r->in.info_level);
5997 ndr_print_uint32(ndr, "buf_size", r->in.buf_size);
6000 if (flags & NDR_OUT) {
6001 ndr_print_struct(ndr, "out", "svcctl_QueryServiceConfig2W");
6003 ndr_print_ptr(ndr, "buffer", r->out.buffer);
6005 ndr_print_array_uint8(ndr, "buffer", r->out.buffer, r->in.buf_size);
6007 ndr_print_ptr(ndr, "bytes_needed", r->out.bytes_needed);
6009 ndr_print_uint32(ndr, "bytes_needed", *r->out.bytes_needed);
6011 ndr_print_WERROR(ndr, "result", r->out.result);
6017 static enum ndr_err_code ndr_push_svcctl_QueryServiceStatusEx(struct ndr_push *ndr, int flags, const struct svcctl_QueryServiceStatusEx *r)
6019 if (flags & NDR_IN) {
6020 if (r->in.handle == NULL) {
6021 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
6023 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
6024 NDR_CHECK(ndr_push_svcctl_StatusLevel(ndr, NDR_SCALARS, r->in.info_level));
6025 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.buf_size));
6027 if (flags & NDR_OUT) {
6028 if (r->out.buffer == NULL) {
6029 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
6031 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.buf_size));
6032 NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->out.buffer, r->in.buf_size));
6033 if (r->out.bytes_needed == NULL) {
6034 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
6036 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.bytes_needed));
6037 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
6039 return NDR_ERR_SUCCESS;
6042 static enum ndr_err_code ndr_pull_svcctl_QueryServiceStatusEx(struct ndr_pull *ndr, int flags, struct svcctl_QueryServiceStatusEx *r)
6044 TALLOC_CTX *_mem_save_handle_0;
6045 TALLOC_CTX *_mem_save_bytes_needed_0;
6046 if (flags & NDR_IN) {
6047 ZERO_STRUCT(r->out);
6049 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
6050 NDR_PULL_ALLOC(ndr, r->in.handle);
6052 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
6053 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
6054 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
6055 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
6056 NDR_CHECK(ndr_pull_svcctl_StatusLevel(ndr, NDR_SCALARS, &r->in.info_level));
6057 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.buf_size));
6058 if (r->in.buf_size < 0 || r->in.buf_size > 8192) {
6059 return ndr_pull_error(ndr, NDR_ERR_RANGE, "value out of range");
6061 NDR_PULL_ALLOC_N(ndr, r->out.buffer, r->in.buf_size);
6062 memset(CONST_DISCARD(struct svcctl_QueryServiceStatusEx *,r->out.buffer), 0, (r->in.buf_size) * sizeof(*r->out.buffer));
6063 NDR_PULL_ALLOC(ndr, r->out.bytes_needed);
6064 ZERO_STRUCTP(r->out.bytes_needed);
6066 if (flags & NDR_OUT) {
6067 NDR_CHECK(ndr_pull_array_size(ndr, &r->out.buffer));
6068 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
6069 NDR_PULL_ALLOC_N(ndr, r->out.buffer, ndr_get_array_size(ndr, &r->out.buffer));
6071 NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->out.buffer, ndr_get_array_size(ndr, &r->out.buffer)));
6072 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
6073 NDR_PULL_ALLOC(ndr, r->out.bytes_needed);
6075 _mem_save_bytes_needed_0 = NDR_PULL_GET_MEM_CTX(ndr);
6076 NDR_PULL_SET_MEM_CTX(ndr, r->out.bytes_needed, LIBNDR_FLAG_REF_ALLOC);
6077 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.bytes_needed));
6078 if (*r->out.bytes_needed < 0 || *r->out.bytes_needed > 8192) {
6079 return ndr_pull_error(ndr, NDR_ERR_RANGE, "value out of range");
6081 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_bytes_needed_0, LIBNDR_FLAG_REF_ALLOC);
6082 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
6083 if (r->out.buffer) {
6084 NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->out.buffer, r->in.buf_size));
6087 return NDR_ERR_SUCCESS;
6090 _PUBLIC_ void ndr_print_svcctl_QueryServiceStatusEx(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_QueryServiceStatusEx *r)
6092 ndr_print_struct(ndr, name, "svcctl_QueryServiceStatusEx");
6094 if (flags & NDR_SET_VALUES) {
6095 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
6097 if (flags & NDR_IN) {
6098 ndr_print_struct(ndr, "in", "svcctl_QueryServiceStatusEx");
6100 ndr_print_ptr(ndr, "handle", r->in.handle);
6102 ndr_print_policy_handle(ndr, "handle", r->in.handle);
6104 ndr_print_svcctl_StatusLevel(ndr, "info_level", r->in.info_level);
6105 ndr_print_uint32(ndr, "buf_size", r->in.buf_size);
6108 if (flags & NDR_OUT) {
6109 ndr_print_struct(ndr, "out", "svcctl_QueryServiceStatusEx");
6111 ndr_print_ptr(ndr, "buffer", r->out.buffer);
6113 ndr_print_array_uint8(ndr, "buffer", r->out.buffer, r->in.buf_size);
6115 ndr_print_ptr(ndr, "bytes_needed", r->out.bytes_needed);
6117 ndr_print_uint32(ndr, "bytes_needed", *r->out.bytes_needed);
6119 ndr_print_WERROR(ndr, "result", r->out.result);
6125 static enum ndr_err_code ndr_push_EnumServicesStatusExA(struct ndr_push *ndr, int flags, const struct EnumServicesStatusExA *r)
6127 if (flags & NDR_IN) {
6128 if (r->in.scmanager == NULL) {
6129 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
6131 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.scmanager));
6132 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.info_level));
6133 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.type));
6134 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.state));
6135 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.buf_size));
6136 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.resume_handle));
6137 if (r->in.resume_handle) {
6138 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->in.resume_handle));
6141 if (flags & NDR_OUT) {
6142 NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->out.services, r->in.buf_size));
6143 if (r->out.bytes_needed == NULL) {
6144 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
6146 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.bytes_needed));
6147 if (r->out.service_returned == NULL) {
6148 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
6150 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.service_returned));
6151 NDR_CHECK(ndr_push_unique_ptr(ndr, r->out.resume_handle));
6152 if (r->out.resume_handle) {
6153 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.resume_handle));
6155 if (r->out.group_name == NULL) {
6156 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
6158 NDR_CHECK(ndr_push_unique_ptr(ndr, *r->out.group_name));
6159 if (*r->out.group_name) {
6160 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(*r->out.group_name, CH_UTF16)));
6161 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
6162 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(*r->out.group_name, CH_UTF16)));
6163 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));
6165 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
6167 return NDR_ERR_SUCCESS;
6170 static enum ndr_err_code ndr_pull_EnumServicesStatusExA(struct ndr_pull *ndr, int flags, struct EnumServicesStatusExA *r)
6172 uint32_t _ptr_resume_handle;
6173 uint32_t _ptr_group_name;
6174 TALLOC_CTX *_mem_save_scmanager_0;
6175 TALLOC_CTX *_mem_save_bytes_needed_0;
6176 TALLOC_CTX *_mem_save_service_returned_0;
6177 TALLOC_CTX *_mem_save_resume_handle_0;
6178 TALLOC_CTX *_mem_save_group_name_0;
6179 TALLOC_CTX *_mem_save_group_name_1;
6180 if (flags & NDR_IN) {
6181 ZERO_STRUCT(r->out);
6183 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
6184 NDR_PULL_ALLOC(ndr, r->in.scmanager);
6186 _mem_save_scmanager_0 = NDR_PULL_GET_MEM_CTX(ndr);
6187 NDR_PULL_SET_MEM_CTX(ndr, r->in.scmanager, LIBNDR_FLAG_REF_ALLOC);
6188 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.scmanager));
6189 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_scmanager_0, LIBNDR_FLAG_REF_ALLOC);
6190 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.info_level));
6191 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.type));
6192 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.state));
6193 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.buf_size));
6194 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_resume_handle));
6195 if (_ptr_resume_handle) {
6196 NDR_PULL_ALLOC(ndr, r->in.resume_handle);
6198 r->in.resume_handle = NULL;
6200 if (r->in.resume_handle) {
6201 _mem_save_resume_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
6202 NDR_PULL_SET_MEM_CTX(ndr, r->in.resume_handle, 0);
6203 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->in.resume_handle));
6204 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_resume_handle_0, 0);
6206 NDR_PULL_ALLOC(ndr, r->out.bytes_needed);
6207 ZERO_STRUCTP(r->out.bytes_needed);
6208 NDR_PULL_ALLOC(ndr, r->out.service_returned);
6209 ZERO_STRUCTP(r->out.service_returned);
6210 NDR_PULL_ALLOC(ndr, r->out.group_name);
6211 ZERO_STRUCTP(r->out.group_name);
6213 if (flags & NDR_OUT) {
6214 NDR_PULL_ALLOC_N(ndr, r->out.services, r->in.buf_size);
6215 NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->out.services, r->in.buf_size));
6216 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
6217 NDR_PULL_ALLOC(ndr, r->out.bytes_needed);
6219 _mem_save_bytes_needed_0 = NDR_PULL_GET_MEM_CTX(ndr);
6220 NDR_PULL_SET_MEM_CTX(ndr, r->out.bytes_needed, LIBNDR_FLAG_REF_ALLOC);
6221 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.bytes_needed));
6222 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_bytes_needed_0, LIBNDR_FLAG_REF_ALLOC);
6223 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
6224 NDR_PULL_ALLOC(ndr, r->out.service_returned);
6226 _mem_save_service_returned_0 = NDR_PULL_GET_MEM_CTX(ndr);
6227 NDR_PULL_SET_MEM_CTX(ndr, r->out.service_returned, LIBNDR_FLAG_REF_ALLOC);
6228 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.service_returned));
6229 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_service_returned_0, LIBNDR_FLAG_REF_ALLOC);
6230 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_resume_handle));
6231 if (_ptr_resume_handle) {
6232 NDR_PULL_ALLOC(ndr, r->out.resume_handle);
6234 r->out.resume_handle = NULL;
6236 if (r->out.resume_handle) {
6237 _mem_save_resume_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
6238 NDR_PULL_SET_MEM_CTX(ndr, r->out.resume_handle, 0);
6239 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.resume_handle));
6240 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_resume_handle_0, 0);
6242 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
6243 NDR_PULL_ALLOC(ndr, r->out.group_name);
6245 _mem_save_group_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
6246 NDR_PULL_SET_MEM_CTX(ndr, r->out.group_name, LIBNDR_FLAG_REF_ALLOC);
6247 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_group_name));
6248 if (_ptr_group_name) {
6249 NDR_PULL_ALLOC(ndr, *r->out.group_name);
6251 *r->out.group_name = NULL;
6253 if (*r->out.group_name) {
6254 _mem_save_group_name_1 = NDR_PULL_GET_MEM_CTX(ndr);
6255 NDR_PULL_SET_MEM_CTX(ndr, *r->out.group_name, 0);
6256 NDR_CHECK(ndr_pull_array_size(ndr, r->out.group_name));
6257 NDR_CHECK(ndr_pull_array_length(ndr, r->out.group_name));
6258 if (ndr_get_array_length(ndr, r->out.group_name) > ndr_get_array_size(ndr, r->out.group_name)) {
6259 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));
6261 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, r->out.group_name), sizeof(uint16_t)));
6262 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));
6263 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_group_name_1, 0);
6265 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_group_name_0, LIBNDR_FLAG_REF_ALLOC);
6266 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
6268 return NDR_ERR_SUCCESS;
6271 _PUBLIC_ void ndr_print_EnumServicesStatusExA(struct ndr_print *ndr, const char *name, int flags, const struct EnumServicesStatusExA *r)
6273 ndr_print_struct(ndr, name, "EnumServicesStatusExA");
6275 if (flags & NDR_SET_VALUES) {
6276 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
6278 if (flags & NDR_IN) {
6279 ndr_print_struct(ndr, "in", "EnumServicesStatusExA");
6281 ndr_print_ptr(ndr, "scmanager", r->in.scmanager);
6283 ndr_print_policy_handle(ndr, "scmanager", r->in.scmanager);
6285 ndr_print_uint32(ndr, "info_level", r->in.info_level);
6286 ndr_print_uint32(ndr, "type", r->in.type);
6287 ndr_print_uint32(ndr, "state", r->in.state);
6288 ndr_print_uint32(ndr, "buf_size", r->in.buf_size);
6289 ndr_print_ptr(ndr, "resume_handle", r->in.resume_handle);
6291 if (r->in.resume_handle) {
6292 ndr_print_uint32(ndr, "resume_handle", *r->in.resume_handle);
6297 if (flags & NDR_OUT) {
6298 ndr_print_struct(ndr, "out", "EnumServicesStatusExA");
6300 ndr_print_array_uint8(ndr, "services", r->out.services, r->in.buf_size);
6301 ndr_print_ptr(ndr, "bytes_needed", r->out.bytes_needed);
6303 ndr_print_uint32(ndr, "bytes_needed", *r->out.bytes_needed);
6305 ndr_print_ptr(ndr, "service_returned", r->out.service_returned);
6307 ndr_print_uint32(ndr, "service_returned", *r->out.service_returned);
6309 ndr_print_ptr(ndr, "resume_handle", r->out.resume_handle);
6311 if (r->out.resume_handle) {
6312 ndr_print_uint32(ndr, "resume_handle", *r->out.resume_handle);
6315 ndr_print_ptr(ndr, "group_name", r->out.group_name);
6317 ndr_print_ptr(ndr, "group_name", *r->out.group_name);
6319 if (*r->out.group_name) {
6320 ndr_print_string(ndr, "group_name", *r->out.group_name);
6324 ndr_print_WERROR(ndr, "result", r->out.result);
6330 static enum ndr_err_code ndr_push_EnumServicesStatusExW(struct ndr_push *ndr, int flags, const struct EnumServicesStatusExW *r)
6332 if (flags & NDR_IN) {
6333 if (r->in.scmanager == NULL) {
6334 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
6336 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.scmanager));
6337 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.info_level));
6338 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.type));
6339 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.state));
6340 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.buf_size));
6341 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.resume_handle));
6342 if (r->in.resume_handle) {
6343 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->in.resume_handle));
6345 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.group_name));
6346 if (r->in.group_name) {
6347 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.group_name, CH_UTF16)));
6348 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
6349 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.group_name, CH_UTF16)));
6350 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));
6353 if (flags & NDR_OUT) {
6354 if (r->out.services == NULL) {
6355 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
6357 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.buf_size));
6358 NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->out.services, r->in.buf_size));
6359 if (r->out.bytes_needed == NULL) {
6360 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
6362 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.bytes_needed));
6363 if (r->out.service_returned == NULL) {
6364 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
6366 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.service_returned));
6367 NDR_CHECK(ndr_push_unique_ptr(ndr, r->out.resume_handle));
6368 if (r->out.resume_handle) {
6369 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.resume_handle));
6371 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
6373 return NDR_ERR_SUCCESS;
6376 static enum ndr_err_code ndr_pull_EnumServicesStatusExW(struct ndr_pull *ndr, int flags, struct EnumServicesStatusExW *r)
6378 uint32_t _ptr_resume_handle;
6379 uint32_t _ptr_group_name;
6380 TALLOC_CTX *_mem_save_scmanager_0;
6381 TALLOC_CTX *_mem_save_bytes_needed_0;
6382 TALLOC_CTX *_mem_save_service_returned_0;
6383 TALLOC_CTX *_mem_save_resume_handle_0;
6384 TALLOC_CTX *_mem_save_group_name_0;
6385 if (flags & NDR_IN) {
6386 ZERO_STRUCT(r->out);
6388 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
6389 NDR_PULL_ALLOC(ndr, r->in.scmanager);
6391 _mem_save_scmanager_0 = NDR_PULL_GET_MEM_CTX(ndr);
6392 NDR_PULL_SET_MEM_CTX(ndr, r->in.scmanager, LIBNDR_FLAG_REF_ALLOC);
6393 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.scmanager));
6394 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_scmanager_0, LIBNDR_FLAG_REF_ALLOC);
6395 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.info_level));
6396 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.type));
6397 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.state));
6398 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.buf_size));
6399 if (r->in.buf_size < 0 || r->in.buf_size > 262144) {
6400 return ndr_pull_error(ndr, NDR_ERR_RANGE, "value out of range");
6402 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_resume_handle));
6403 if (_ptr_resume_handle) {
6404 NDR_PULL_ALLOC(ndr, r->in.resume_handle);
6406 r->in.resume_handle = NULL;
6408 if (r->in.resume_handle) {
6409 _mem_save_resume_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
6410 NDR_PULL_SET_MEM_CTX(ndr, r->in.resume_handle, 0);
6411 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->in.resume_handle));
6412 if (*r->in.resume_handle < 0 || *r->in.resume_handle > 262144) {
6413 return ndr_pull_error(ndr, NDR_ERR_RANGE, "value out of range");
6415 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_resume_handle_0, 0);
6417 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_group_name));
6418 if (_ptr_group_name) {
6419 NDR_PULL_ALLOC(ndr, r->in.group_name);
6421 r->in.group_name = NULL;
6423 if (r->in.group_name) {
6424 _mem_save_group_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
6425 NDR_PULL_SET_MEM_CTX(ndr, r->in.group_name, 0);
6426 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.group_name));
6427 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.group_name));
6428 if (ndr_get_array_length(ndr, &r->in.group_name) > ndr_get_array_size(ndr, &r->in.group_name)) {
6429 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));
6431 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.group_name), sizeof(uint16_t)));
6432 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));
6433 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_group_name_0, 0);
6435 NDR_PULL_ALLOC_N(ndr, r->out.services, r->in.buf_size);
6436 memset(CONST_DISCARD(struct EnumServicesStatusExW *,r->out.services), 0, (r->in.buf_size) * sizeof(*r->out.services));
6437 NDR_PULL_ALLOC(ndr, r->out.bytes_needed);
6438 ZERO_STRUCTP(r->out.bytes_needed);
6439 NDR_PULL_ALLOC(ndr, r->out.service_returned);
6440 ZERO_STRUCTP(r->out.service_returned);
6442 if (flags & NDR_OUT) {
6443 NDR_CHECK(ndr_pull_array_size(ndr, &r->out.services));
6444 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
6445 NDR_PULL_ALLOC_N(ndr, r->out.services, ndr_get_array_size(ndr, &r->out.services));
6447 NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->out.services, ndr_get_array_size(ndr, &r->out.services)));
6448 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
6449 NDR_PULL_ALLOC(ndr, r->out.bytes_needed);
6451 _mem_save_bytes_needed_0 = NDR_PULL_GET_MEM_CTX(ndr);
6452 NDR_PULL_SET_MEM_CTX(ndr, r->out.bytes_needed, LIBNDR_FLAG_REF_ALLOC);
6453 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.bytes_needed));
6454 if (*r->out.bytes_needed < 0 || *r->out.bytes_needed > 262144) {
6455 return ndr_pull_error(ndr, NDR_ERR_RANGE, "value out of range");
6457 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_bytes_needed_0, LIBNDR_FLAG_REF_ALLOC);
6458 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
6459 NDR_PULL_ALLOC(ndr, r->out.service_returned);
6461 _mem_save_service_returned_0 = NDR_PULL_GET_MEM_CTX(ndr);
6462 NDR_PULL_SET_MEM_CTX(ndr, r->out.service_returned, LIBNDR_FLAG_REF_ALLOC);
6463 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.service_returned));
6464 if (*r->out.service_returned < 0 || *r->out.service_returned > 262144) {
6465 return ndr_pull_error(ndr, NDR_ERR_RANGE, "value out of range");
6467 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_service_returned_0, LIBNDR_FLAG_REF_ALLOC);
6468 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_resume_handle));
6469 if (_ptr_resume_handle) {
6470 NDR_PULL_ALLOC(ndr, r->out.resume_handle);
6472 r->out.resume_handle = NULL;
6474 if (r->out.resume_handle) {
6475 _mem_save_resume_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
6476 NDR_PULL_SET_MEM_CTX(ndr, r->out.resume_handle, 0);
6477 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.resume_handle));
6478 if (*r->out.resume_handle < 0 || *r->out.resume_handle > 262144) {
6479 return ndr_pull_error(ndr, NDR_ERR_RANGE, "value out of range");
6481 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_resume_handle_0, 0);
6483 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
6484 if (r->out.services) {
6485 NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->out.services, r->in.buf_size));
6488 return NDR_ERR_SUCCESS;
6491 _PUBLIC_ void ndr_print_EnumServicesStatusExW(struct ndr_print *ndr, const char *name, int flags, const struct EnumServicesStatusExW *r)
6493 ndr_print_struct(ndr, name, "EnumServicesStatusExW");
6495 if (flags & NDR_SET_VALUES) {
6496 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
6498 if (flags & NDR_IN) {
6499 ndr_print_struct(ndr, "in", "EnumServicesStatusExW");
6501 ndr_print_ptr(ndr, "scmanager", r->in.scmanager);
6503 ndr_print_policy_handle(ndr, "scmanager", r->in.scmanager);
6505 ndr_print_uint32(ndr, "info_level", r->in.info_level);
6506 ndr_print_uint32(ndr, "type", r->in.type);
6507 ndr_print_uint32(ndr, "state", r->in.state);
6508 ndr_print_uint32(ndr, "buf_size", r->in.buf_size);
6509 ndr_print_ptr(ndr, "resume_handle", r->in.resume_handle);
6511 if (r->in.resume_handle) {
6512 ndr_print_uint32(ndr, "resume_handle", *r->in.resume_handle);
6515 ndr_print_ptr(ndr, "group_name", r->in.group_name);
6517 if (r->in.group_name) {
6518 ndr_print_string(ndr, "group_name", r->in.group_name);
6523 if (flags & NDR_OUT) {
6524 ndr_print_struct(ndr, "out", "EnumServicesStatusExW");
6526 ndr_print_ptr(ndr, "services", r->out.services);
6528 ndr_print_array_uint8(ndr, "services", r->out.services, r->in.buf_size);
6530 ndr_print_ptr(ndr, "bytes_needed", r->out.bytes_needed);
6532 ndr_print_uint32(ndr, "bytes_needed", *r->out.bytes_needed);
6534 ndr_print_ptr(ndr, "service_returned", r->out.service_returned);
6536 ndr_print_uint32(ndr, "service_returned", *r->out.service_returned);
6538 ndr_print_ptr(ndr, "resume_handle", r->out.resume_handle);
6540 if (r->out.resume_handle) {
6541 ndr_print_uint32(ndr, "resume_handle", *r->out.resume_handle);
6544 ndr_print_WERROR(ndr, "result", r->out.result);
6550 static enum ndr_err_code ndr_push_svcctl_SCSendTSMessage(struct ndr_push *ndr, int flags, const struct svcctl_SCSendTSMessage *r)
6552 if (flags & NDR_IN) {
6554 if (flags & NDR_OUT) {
6555 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
6557 return NDR_ERR_SUCCESS;
6560 static enum ndr_err_code ndr_pull_svcctl_SCSendTSMessage(struct ndr_pull *ndr, int flags, struct svcctl_SCSendTSMessage *r)
6562 if (flags & NDR_IN) {
6564 if (flags & NDR_OUT) {
6565 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
6567 return NDR_ERR_SUCCESS;
6570 _PUBLIC_ void ndr_print_svcctl_SCSendTSMessage(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_SCSendTSMessage *r)
6572 ndr_print_struct(ndr, name, "svcctl_SCSendTSMessage");
6574 if (flags & NDR_SET_VALUES) {
6575 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
6577 if (flags & NDR_IN) {
6578 ndr_print_struct(ndr, "in", "svcctl_SCSendTSMessage");
6582 if (flags & NDR_OUT) {
6583 ndr_print_struct(ndr, "out", "svcctl_SCSendTSMessage");
6585 ndr_print_WERROR(ndr, "result", r->out.result);
6591 static const struct ndr_interface_call svcctl_calls[] = {
6593 "svcctl_CloseServiceHandle",
6594 sizeof(struct svcctl_CloseServiceHandle),
6595 (ndr_push_flags_fn_t) ndr_push_svcctl_CloseServiceHandle,
6596 (ndr_pull_flags_fn_t) ndr_pull_svcctl_CloseServiceHandle,
6597 (ndr_print_function_t) ndr_print_svcctl_CloseServiceHandle,
6601 "svcctl_ControlService",
6602 sizeof(struct svcctl_ControlService),
6603 (ndr_push_flags_fn_t) ndr_push_svcctl_ControlService,
6604 (ndr_pull_flags_fn_t) ndr_pull_svcctl_ControlService,
6605 (ndr_print_function_t) ndr_print_svcctl_ControlService,
6609 "svcctl_DeleteService",
6610 sizeof(struct svcctl_DeleteService),
6611 (ndr_push_flags_fn_t) ndr_push_svcctl_DeleteService,
6612 (ndr_pull_flags_fn_t) ndr_pull_svcctl_DeleteService,
6613 (ndr_print_function_t) ndr_print_svcctl_DeleteService,
6617 "svcctl_LockServiceDatabase",
6618 sizeof(struct svcctl_LockServiceDatabase),
6619 (ndr_push_flags_fn_t) ndr_push_svcctl_LockServiceDatabase,
6620 (ndr_pull_flags_fn_t) ndr_pull_svcctl_LockServiceDatabase,
6621 (ndr_print_function_t) ndr_print_svcctl_LockServiceDatabase,
6625 "svcctl_QueryServiceObjectSecurity",
6626 sizeof(struct svcctl_QueryServiceObjectSecurity),
6627 (ndr_push_flags_fn_t) ndr_push_svcctl_QueryServiceObjectSecurity,
6628 (ndr_pull_flags_fn_t) ndr_pull_svcctl_QueryServiceObjectSecurity,
6629 (ndr_print_function_t) ndr_print_svcctl_QueryServiceObjectSecurity,
6633 "svcctl_SetServiceObjectSecurity",
6634 sizeof(struct svcctl_SetServiceObjectSecurity),
6635 (ndr_push_flags_fn_t) ndr_push_svcctl_SetServiceObjectSecurity,
6636 (ndr_pull_flags_fn_t) ndr_pull_svcctl_SetServiceObjectSecurity,
6637 (ndr_print_function_t) ndr_print_svcctl_SetServiceObjectSecurity,
6641 "svcctl_QueryServiceStatus",
6642 sizeof(struct svcctl_QueryServiceStatus),
6643 (ndr_push_flags_fn_t) ndr_push_svcctl_QueryServiceStatus,
6644 (ndr_pull_flags_fn_t) ndr_pull_svcctl_QueryServiceStatus,
6645 (ndr_print_function_t) ndr_print_svcctl_QueryServiceStatus,
6649 "svcctl_SetServiceStatus",
6650 sizeof(struct svcctl_SetServiceStatus),
6651 (ndr_push_flags_fn_t) ndr_push_svcctl_SetServiceStatus,
6652 (ndr_pull_flags_fn_t) ndr_pull_svcctl_SetServiceStatus,
6653 (ndr_print_function_t) ndr_print_svcctl_SetServiceStatus,
6657 "svcctl_UnlockServiceDatabase",
6658 sizeof(struct svcctl_UnlockServiceDatabase),
6659 (ndr_push_flags_fn_t) ndr_push_svcctl_UnlockServiceDatabase,
6660 (ndr_pull_flags_fn_t) ndr_pull_svcctl_UnlockServiceDatabase,
6661 (ndr_print_function_t) ndr_print_svcctl_UnlockServiceDatabase,
6665 "svcctl_NotifyBootConfigStatus",
6666 sizeof(struct svcctl_NotifyBootConfigStatus),
6667 (ndr_push_flags_fn_t) ndr_push_svcctl_NotifyBootConfigStatus,
6668 (ndr_pull_flags_fn_t) ndr_pull_svcctl_NotifyBootConfigStatus,
6669 (ndr_print_function_t) ndr_print_svcctl_NotifyBootConfigStatus,
6673 "svcctl_SCSetServiceBitsW",
6674 sizeof(struct svcctl_SCSetServiceBitsW),
6675 (ndr_push_flags_fn_t) ndr_push_svcctl_SCSetServiceBitsW,
6676 (ndr_pull_flags_fn_t) ndr_pull_svcctl_SCSetServiceBitsW,
6677 (ndr_print_function_t) ndr_print_svcctl_SCSetServiceBitsW,
6681 "svcctl_ChangeServiceConfigW",
6682 sizeof(struct svcctl_ChangeServiceConfigW),
6683 (ndr_push_flags_fn_t) ndr_push_svcctl_ChangeServiceConfigW,
6684 (ndr_pull_flags_fn_t) ndr_pull_svcctl_ChangeServiceConfigW,
6685 (ndr_print_function_t) ndr_print_svcctl_ChangeServiceConfigW,
6689 "svcctl_CreateServiceW",
6690 sizeof(struct svcctl_CreateServiceW),
6691 (ndr_push_flags_fn_t) ndr_push_svcctl_CreateServiceW,
6692 (ndr_pull_flags_fn_t) ndr_pull_svcctl_CreateServiceW,
6693 (ndr_print_function_t) ndr_print_svcctl_CreateServiceW,
6697 "svcctl_EnumDependentServicesW",
6698 sizeof(struct svcctl_EnumDependentServicesW),
6699 (ndr_push_flags_fn_t) ndr_push_svcctl_EnumDependentServicesW,
6700 (ndr_pull_flags_fn_t) ndr_pull_svcctl_EnumDependentServicesW,
6701 (ndr_print_function_t) ndr_print_svcctl_EnumDependentServicesW,
6705 "svcctl_EnumServicesStatusW",
6706 sizeof(struct svcctl_EnumServicesStatusW),
6707 (ndr_push_flags_fn_t) ndr_push_svcctl_EnumServicesStatusW,
6708 (ndr_pull_flags_fn_t) ndr_pull_svcctl_EnumServicesStatusW,
6709 (ndr_print_function_t) ndr_print_svcctl_EnumServicesStatusW,
6713 "svcctl_OpenSCManagerW",
6714 sizeof(struct svcctl_OpenSCManagerW),
6715 (ndr_push_flags_fn_t) ndr_push_svcctl_OpenSCManagerW,
6716 (ndr_pull_flags_fn_t) ndr_pull_svcctl_OpenSCManagerW,
6717 (ndr_print_function_t) ndr_print_svcctl_OpenSCManagerW,
6721 "svcctl_OpenServiceW",
6722 sizeof(struct svcctl_OpenServiceW),
6723 (ndr_push_flags_fn_t) ndr_push_svcctl_OpenServiceW,
6724 (ndr_pull_flags_fn_t) ndr_pull_svcctl_OpenServiceW,
6725 (ndr_print_function_t) ndr_print_svcctl_OpenServiceW,
6729 "svcctl_QueryServiceConfigW",
6730 sizeof(struct svcctl_QueryServiceConfigW),
6731 (ndr_push_flags_fn_t) ndr_push_svcctl_QueryServiceConfigW,
6732 (ndr_pull_flags_fn_t) ndr_pull_svcctl_QueryServiceConfigW,
6733 (ndr_print_function_t) ndr_print_svcctl_QueryServiceConfigW,
6737 "svcctl_QueryServiceLockStatusW",
6738 sizeof(struct svcctl_QueryServiceLockStatusW),
6739 (ndr_push_flags_fn_t) ndr_push_svcctl_QueryServiceLockStatusW,
6740 (ndr_pull_flags_fn_t) ndr_pull_svcctl_QueryServiceLockStatusW,
6741 (ndr_print_function_t) ndr_print_svcctl_QueryServiceLockStatusW,
6745 "svcctl_StartServiceW",
6746 sizeof(struct svcctl_StartServiceW),
6747 (ndr_push_flags_fn_t) ndr_push_svcctl_StartServiceW,
6748 (ndr_pull_flags_fn_t) ndr_pull_svcctl_StartServiceW,
6749 (ndr_print_function_t) ndr_print_svcctl_StartServiceW,
6753 "svcctl_GetServiceDisplayNameW",
6754 sizeof(struct svcctl_GetServiceDisplayNameW),
6755 (ndr_push_flags_fn_t) ndr_push_svcctl_GetServiceDisplayNameW,
6756 (ndr_pull_flags_fn_t) ndr_pull_svcctl_GetServiceDisplayNameW,
6757 (ndr_print_function_t) ndr_print_svcctl_GetServiceDisplayNameW,
6761 "svcctl_GetServiceKeyNameW",
6762 sizeof(struct svcctl_GetServiceKeyNameW),
6763 (ndr_push_flags_fn_t) ndr_push_svcctl_GetServiceKeyNameW,
6764 (ndr_pull_flags_fn_t) ndr_pull_svcctl_GetServiceKeyNameW,
6765 (ndr_print_function_t) ndr_print_svcctl_GetServiceKeyNameW,
6769 "svcctl_SCSetServiceBitsA",
6770 sizeof(struct svcctl_SCSetServiceBitsA),
6771 (ndr_push_flags_fn_t) ndr_push_svcctl_SCSetServiceBitsA,
6772 (ndr_pull_flags_fn_t) ndr_pull_svcctl_SCSetServiceBitsA,
6773 (ndr_print_function_t) ndr_print_svcctl_SCSetServiceBitsA,
6777 "svcctl_ChangeServiceConfigA",
6778 sizeof(struct svcctl_ChangeServiceConfigA),
6779 (ndr_push_flags_fn_t) ndr_push_svcctl_ChangeServiceConfigA,
6780 (ndr_pull_flags_fn_t) ndr_pull_svcctl_ChangeServiceConfigA,
6781 (ndr_print_function_t) ndr_print_svcctl_ChangeServiceConfigA,
6785 "svcctl_CreateServiceA",
6786 sizeof(struct svcctl_CreateServiceA),
6787 (ndr_push_flags_fn_t) ndr_push_svcctl_CreateServiceA,
6788 (ndr_pull_flags_fn_t) ndr_pull_svcctl_CreateServiceA,
6789 (ndr_print_function_t) ndr_print_svcctl_CreateServiceA,
6793 "svcctl_EnumDependentServicesA",
6794 sizeof(struct svcctl_EnumDependentServicesA),
6795 (ndr_push_flags_fn_t) ndr_push_svcctl_EnumDependentServicesA,
6796 (ndr_pull_flags_fn_t) ndr_pull_svcctl_EnumDependentServicesA,
6797 (ndr_print_function_t) ndr_print_svcctl_EnumDependentServicesA,
6801 "svcctl_EnumServicesStatusA",
6802 sizeof(struct svcctl_EnumServicesStatusA),
6803 (ndr_push_flags_fn_t) ndr_push_svcctl_EnumServicesStatusA,
6804 (ndr_pull_flags_fn_t) ndr_pull_svcctl_EnumServicesStatusA,
6805 (ndr_print_function_t) ndr_print_svcctl_EnumServicesStatusA,
6809 "svcctl_OpenSCManagerA",
6810 sizeof(struct svcctl_OpenSCManagerA),
6811 (ndr_push_flags_fn_t) ndr_push_svcctl_OpenSCManagerA,
6812 (ndr_pull_flags_fn_t) ndr_pull_svcctl_OpenSCManagerA,
6813 (ndr_print_function_t) ndr_print_svcctl_OpenSCManagerA,
6817 "svcctl_OpenServiceA",
6818 sizeof(struct svcctl_OpenServiceA),
6819 (ndr_push_flags_fn_t) ndr_push_svcctl_OpenServiceA,
6820 (ndr_pull_flags_fn_t) ndr_pull_svcctl_OpenServiceA,
6821 (ndr_print_function_t) ndr_print_svcctl_OpenServiceA,
6825 "svcctl_QueryServiceConfigA",
6826 sizeof(struct svcctl_QueryServiceConfigA),
6827 (ndr_push_flags_fn_t) ndr_push_svcctl_QueryServiceConfigA,
6828 (ndr_pull_flags_fn_t) ndr_pull_svcctl_QueryServiceConfigA,
6829 (ndr_print_function_t) ndr_print_svcctl_QueryServiceConfigA,
6833 "svcctl_QueryServiceLockStatusA",
6834 sizeof(struct svcctl_QueryServiceLockStatusA),
6835 (ndr_push_flags_fn_t) ndr_push_svcctl_QueryServiceLockStatusA,
6836 (ndr_pull_flags_fn_t) ndr_pull_svcctl_QueryServiceLockStatusA,
6837 (ndr_print_function_t) ndr_print_svcctl_QueryServiceLockStatusA,
6841 "svcctl_StartServiceA",
6842 sizeof(struct svcctl_StartServiceA),
6843 (ndr_push_flags_fn_t) ndr_push_svcctl_StartServiceA,
6844 (ndr_pull_flags_fn_t) ndr_pull_svcctl_StartServiceA,
6845 (ndr_print_function_t) ndr_print_svcctl_StartServiceA,
6849 "svcctl_GetServiceDisplayNameA",
6850 sizeof(struct svcctl_GetServiceDisplayNameA),
6851 (ndr_push_flags_fn_t) ndr_push_svcctl_GetServiceDisplayNameA,
6852 (ndr_pull_flags_fn_t) ndr_pull_svcctl_GetServiceDisplayNameA,
6853 (ndr_print_function_t) ndr_print_svcctl_GetServiceDisplayNameA,
6857 "svcctl_GetServiceKeyNameA",
6858 sizeof(struct svcctl_GetServiceKeyNameA),
6859 (ndr_push_flags_fn_t) ndr_push_svcctl_GetServiceKeyNameA,
6860 (ndr_pull_flags_fn_t) ndr_pull_svcctl_GetServiceKeyNameA,
6861 (ndr_print_function_t) ndr_print_svcctl_GetServiceKeyNameA,
6865 "svcctl_GetCurrentGroupeStateW",
6866 sizeof(struct svcctl_GetCurrentGroupeStateW),
6867 (ndr_push_flags_fn_t) ndr_push_svcctl_GetCurrentGroupeStateW,
6868 (ndr_pull_flags_fn_t) ndr_pull_svcctl_GetCurrentGroupeStateW,
6869 (ndr_print_function_t) ndr_print_svcctl_GetCurrentGroupeStateW,
6873 "svcctl_EnumServiceGroupW",
6874 sizeof(struct svcctl_EnumServiceGroupW),
6875 (ndr_push_flags_fn_t) ndr_push_svcctl_EnumServiceGroupW,
6876 (ndr_pull_flags_fn_t) ndr_pull_svcctl_EnumServiceGroupW,
6877 (ndr_print_function_t) ndr_print_svcctl_EnumServiceGroupW,
6881 "svcctl_ChangeServiceConfig2A",
6882 sizeof(struct svcctl_ChangeServiceConfig2A),
6883 (ndr_push_flags_fn_t) ndr_push_svcctl_ChangeServiceConfig2A,
6884 (ndr_pull_flags_fn_t) ndr_pull_svcctl_ChangeServiceConfig2A,
6885 (ndr_print_function_t) ndr_print_svcctl_ChangeServiceConfig2A,
6889 "svcctl_ChangeServiceConfig2W",
6890 sizeof(struct svcctl_ChangeServiceConfig2W),
6891 (ndr_push_flags_fn_t) ndr_push_svcctl_ChangeServiceConfig2W,
6892 (ndr_pull_flags_fn_t) ndr_pull_svcctl_ChangeServiceConfig2W,
6893 (ndr_print_function_t) ndr_print_svcctl_ChangeServiceConfig2W,
6897 "svcctl_QueryServiceConfig2A",
6898 sizeof(struct svcctl_QueryServiceConfig2A),
6899 (ndr_push_flags_fn_t) ndr_push_svcctl_QueryServiceConfig2A,
6900 (ndr_pull_flags_fn_t) ndr_pull_svcctl_QueryServiceConfig2A,
6901 (ndr_print_function_t) ndr_print_svcctl_QueryServiceConfig2A,
6905 "svcctl_QueryServiceConfig2W",
6906 sizeof(struct svcctl_QueryServiceConfig2W),
6907 (ndr_push_flags_fn_t) ndr_push_svcctl_QueryServiceConfig2W,
6908 (ndr_pull_flags_fn_t) ndr_pull_svcctl_QueryServiceConfig2W,
6909 (ndr_print_function_t) ndr_print_svcctl_QueryServiceConfig2W,
6913 "svcctl_QueryServiceStatusEx",
6914 sizeof(struct svcctl_QueryServiceStatusEx),
6915 (ndr_push_flags_fn_t) ndr_push_svcctl_QueryServiceStatusEx,
6916 (ndr_pull_flags_fn_t) ndr_pull_svcctl_QueryServiceStatusEx,
6917 (ndr_print_function_t) ndr_print_svcctl_QueryServiceStatusEx,
6921 "EnumServicesStatusExA",
6922 sizeof(struct EnumServicesStatusExA),
6923 (ndr_push_flags_fn_t) ndr_push_EnumServicesStatusExA,
6924 (ndr_pull_flags_fn_t) ndr_pull_EnumServicesStatusExA,
6925 (ndr_print_function_t) ndr_print_EnumServicesStatusExA,
6929 "EnumServicesStatusExW",
6930 sizeof(struct EnumServicesStatusExW),
6931 (ndr_push_flags_fn_t) ndr_push_EnumServicesStatusExW,
6932 (ndr_pull_flags_fn_t) ndr_pull_EnumServicesStatusExW,
6933 (ndr_print_function_t) ndr_print_EnumServicesStatusExW,
6937 "svcctl_SCSendTSMessage",
6938 sizeof(struct svcctl_SCSendTSMessage),
6939 (ndr_push_flags_fn_t) ndr_push_svcctl_SCSendTSMessage,
6940 (ndr_pull_flags_fn_t) ndr_pull_svcctl_SCSendTSMessage,
6941 (ndr_print_function_t) ndr_print_svcctl_SCSendTSMessage,
6944 { NULL, 0, NULL, NULL, NULL, false }
6947 static const char * const svcctl_endpoint_strings[] = {
6948 "ncacn_np:[\\pipe\\svcctl]",
6952 static const struct ndr_interface_string_array svcctl_endpoints = {
6954 .names = svcctl_endpoint_strings
6957 static const char * const svcctl_authservice_strings[] = {
6961 static const struct ndr_interface_string_array svcctl_authservices = {
6963 .names = svcctl_authservice_strings
6967 const struct ndr_interface_table ndr_table_svcctl = {
6970 {0x367abb81,0x9844,0x35f1,{0xad,0x32},{0x98,0xf0,0x38,0x00,0x10,0x03}},
6973 .helpstring = NDR_SVCCTL_HELPSTRING,
6975 .calls = svcctl_calls,
6976 .endpoints = &svcctl_endpoints,
6977 .authservices = &svcctl_authservices