1 /* parser auto-generated by pidl */
4 #include "librpc/gen_ndr/ndr_svcctl.h"
6 #include "librpc/gen_ndr/ndr_misc.h"
7 static enum ndr_err_code ndr_push_SERVICE_LOCK_STATUS(struct ndr_push *ndr, int ndr_flags, const struct SERVICE_LOCK_STATUS *r)
9 if (ndr_flags & NDR_SCALARS) {
10 NDR_CHECK(ndr_push_align(ndr, 4));
11 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->is_locked));
12 NDR_CHECK(ndr_push_unique_ptr(ndr, r->lock_owner));
13 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->lock_duration));
15 if (ndr_flags & NDR_BUFFERS) {
17 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->lock_owner, CH_UTF16)));
18 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
19 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->lock_owner, CH_UTF16)));
20 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->lock_owner, ndr_charset_length(r->lock_owner, CH_UTF16), sizeof(uint16_t), CH_UTF16));
23 return NDR_ERR_SUCCESS;
26 static enum ndr_err_code ndr_pull_SERVICE_LOCK_STATUS(struct ndr_pull *ndr, int ndr_flags, struct SERVICE_LOCK_STATUS *r)
28 uint32_t _ptr_lock_owner;
29 TALLOC_CTX *_mem_save_lock_owner_0;
30 if (ndr_flags & NDR_SCALARS) {
31 NDR_CHECK(ndr_pull_align(ndr, 4));
32 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->is_locked));
33 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_lock_owner));
34 if (_ptr_lock_owner) {
35 NDR_PULL_ALLOC(ndr, r->lock_owner);
39 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->lock_duration));
41 if (ndr_flags & NDR_BUFFERS) {
43 _mem_save_lock_owner_0 = NDR_PULL_GET_MEM_CTX(ndr);
44 NDR_PULL_SET_MEM_CTX(ndr, r->lock_owner, 0);
45 NDR_CHECK(ndr_pull_array_size(ndr, &r->lock_owner));
46 NDR_CHECK(ndr_pull_array_length(ndr, &r->lock_owner));
47 if (ndr_get_array_length(ndr, &r->lock_owner) > ndr_get_array_size(ndr, &r->lock_owner)) {
48 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));
50 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->lock_owner), sizeof(uint16_t)));
51 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->lock_owner, ndr_get_array_length(ndr, &r->lock_owner), sizeof(uint16_t), CH_UTF16));
52 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_lock_owner_0, 0);
55 return NDR_ERR_SUCCESS;
58 _PUBLIC_ void ndr_print_SERVICE_LOCK_STATUS(struct ndr_print *ndr, const char *name, const struct SERVICE_LOCK_STATUS *r)
60 ndr_print_struct(ndr, name, "SERVICE_LOCK_STATUS");
62 ndr_print_uint32(ndr, "is_locked", r->is_locked);
63 ndr_print_ptr(ndr, "lock_owner", r->lock_owner);
66 ndr_print_string(ndr, "lock_owner", r->lock_owner);
69 ndr_print_uint32(ndr, "lock_duration", r->lock_duration);
73 static enum ndr_err_code ndr_push_SERVICE_STATUS(struct ndr_push *ndr, int ndr_flags, const struct SERVICE_STATUS *r)
75 if (ndr_flags & NDR_SCALARS) {
76 NDR_CHECK(ndr_push_align(ndr, 4));
77 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->type));
78 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->state));
79 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->controls_accepted));
80 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->win32_exit_code));
81 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->service_exit_code));
82 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->check_point));
83 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->wait_hint));
85 if (ndr_flags & NDR_BUFFERS) {
87 return NDR_ERR_SUCCESS;
90 static enum ndr_err_code ndr_pull_SERVICE_STATUS(struct ndr_pull *ndr, int ndr_flags, struct SERVICE_STATUS *r)
92 if (ndr_flags & NDR_SCALARS) {
93 NDR_CHECK(ndr_pull_align(ndr, 4));
94 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->type));
95 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->state));
96 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->controls_accepted));
97 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->win32_exit_code));
98 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->service_exit_code));
99 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->check_point));
100 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->wait_hint));
102 if (ndr_flags & NDR_BUFFERS) {
104 return NDR_ERR_SUCCESS;
107 _PUBLIC_ void ndr_print_SERVICE_STATUS(struct ndr_print *ndr, const char *name, const struct SERVICE_STATUS *r)
109 ndr_print_struct(ndr, name, "SERVICE_STATUS");
111 ndr_print_uint32(ndr, "type", r->type);
112 ndr_print_uint32(ndr, "state", r->state);
113 ndr_print_uint32(ndr, "controls_accepted", r->controls_accepted);
114 ndr_print_WERROR(ndr, "win32_exit_code", r->win32_exit_code);
115 ndr_print_uint32(ndr, "service_exit_code", r->service_exit_code);
116 ndr_print_uint32(ndr, "check_point", r->check_point);
117 ndr_print_uint32(ndr, "wait_hint", r->wait_hint);
121 static enum ndr_err_code ndr_push_ENUM_SERVICE_STATUS(struct ndr_push *ndr, int ndr_flags, const struct ENUM_SERVICE_STATUS *r)
123 if (ndr_flags & NDR_SCALARS) {
124 NDR_CHECK(ndr_push_align(ndr, 4));
126 uint32_t _flags_save_string = ndr->flags;
127 ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_ASCII|LIBNDR_FLAG_STR_NULLTERM);
128 NDR_CHECK(ndr_push_relative_ptr1(ndr, r->service_name));
129 ndr->flags = _flags_save_string;
132 uint32_t _flags_save_string = ndr->flags;
133 ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_ASCII|LIBNDR_FLAG_STR_NULLTERM);
134 NDR_CHECK(ndr_push_relative_ptr1(ndr, r->display_name));
135 ndr->flags = _flags_save_string;
137 NDR_CHECK(ndr_push_SERVICE_STATUS(ndr, NDR_SCALARS, &r->status));
139 if (ndr_flags & NDR_BUFFERS) {
141 uint32_t _flags_save_string = ndr->flags;
142 ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_ASCII|LIBNDR_FLAG_STR_NULLTERM);
143 if (r->service_name) {
144 NDR_CHECK(ndr_push_relative_ptr2(ndr, r->service_name));
145 NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->service_name));
147 ndr->flags = _flags_save_string;
150 uint32_t _flags_save_string = ndr->flags;
151 ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_ASCII|LIBNDR_FLAG_STR_NULLTERM);
152 if (r->display_name) {
153 NDR_CHECK(ndr_push_relative_ptr2(ndr, r->display_name));
154 NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->display_name));
156 ndr->flags = _flags_save_string;
159 return NDR_ERR_SUCCESS;
162 static enum ndr_err_code ndr_pull_ENUM_SERVICE_STATUS(struct ndr_pull *ndr, int ndr_flags, struct ENUM_SERVICE_STATUS *r)
164 uint32_t _ptr_service_name;
165 TALLOC_CTX *_mem_save_service_name_0;
166 uint32_t _ptr_display_name;
167 TALLOC_CTX *_mem_save_display_name_0;
168 if (ndr_flags & NDR_SCALARS) {
169 NDR_CHECK(ndr_pull_align(ndr, 4));
171 uint32_t _flags_save_string = ndr->flags;
172 ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_ASCII|LIBNDR_FLAG_STR_NULLTERM);
173 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_service_name));
174 if (_ptr_service_name) {
175 NDR_PULL_ALLOC(ndr, r->service_name);
176 NDR_CHECK(ndr_pull_relative_ptr1(ndr, r->service_name, _ptr_service_name));
178 r->service_name = NULL;
180 ndr->flags = _flags_save_string;
183 uint32_t _flags_save_string = ndr->flags;
184 ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_ASCII|LIBNDR_FLAG_STR_NULLTERM);
185 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_display_name));
186 if (_ptr_display_name) {
187 NDR_PULL_ALLOC(ndr, r->display_name);
188 NDR_CHECK(ndr_pull_relative_ptr1(ndr, r->display_name, _ptr_display_name));
190 r->display_name = NULL;
192 ndr->flags = _flags_save_string;
194 NDR_CHECK(ndr_pull_SERVICE_STATUS(ndr, NDR_SCALARS, &r->status));
196 if (ndr_flags & NDR_BUFFERS) {
198 uint32_t _flags_save_string = ndr->flags;
199 ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_ASCII|LIBNDR_FLAG_STR_NULLTERM);
200 if (r->service_name) {
201 uint32_t _relative_save_offset;
202 _relative_save_offset = ndr->offset;
203 NDR_CHECK(ndr_pull_relative_ptr2(ndr, r->service_name));
204 _mem_save_service_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
205 NDR_PULL_SET_MEM_CTX(ndr, r->service_name, 0);
206 NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->service_name));
207 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_service_name_0, 0);
208 ndr->offset = _relative_save_offset;
210 ndr->flags = _flags_save_string;
213 uint32_t _flags_save_string = ndr->flags;
214 ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_ASCII|LIBNDR_FLAG_STR_NULLTERM);
215 if (r->display_name) {
216 uint32_t _relative_save_offset;
217 _relative_save_offset = ndr->offset;
218 NDR_CHECK(ndr_pull_relative_ptr2(ndr, r->display_name));
219 _mem_save_display_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
220 NDR_PULL_SET_MEM_CTX(ndr, r->display_name, 0);
221 NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->display_name));
222 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_display_name_0, 0);
223 ndr->offset = _relative_save_offset;
225 ndr->flags = _flags_save_string;
228 return NDR_ERR_SUCCESS;
231 _PUBLIC_ void ndr_print_ENUM_SERVICE_STATUS(struct ndr_print *ndr, const char *name, const struct ENUM_SERVICE_STATUS *r)
233 ndr_print_struct(ndr, name, "ENUM_SERVICE_STATUS");
235 ndr_print_ptr(ndr, "service_name", r->service_name);
237 if (r->service_name) {
238 ndr_print_string(ndr, "service_name", r->service_name);
241 ndr_print_ptr(ndr, "display_name", r->display_name);
243 if (r->display_name) {
244 ndr_print_string(ndr, "display_name", r->display_name);
247 ndr_print_SERVICE_STATUS(ndr, "status", &r->status);
251 _PUBLIC_ enum ndr_err_code ndr_push_svcctl_ServerType(struct ndr_push *ndr, int ndr_flags, uint32_t r)
253 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r));
254 return NDR_ERR_SUCCESS;
257 _PUBLIC_ enum ndr_err_code ndr_pull_svcctl_ServerType(struct ndr_pull *ndr, int ndr_flags, uint32_t *r)
260 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &v));
262 return NDR_ERR_SUCCESS;
265 _PUBLIC_ void ndr_print_svcctl_ServerType(struct ndr_print *ndr, const char *name, uint32_t r)
267 ndr_print_uint32(ndr, name, r);
269 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_WORKSTATION", SV_TYPE_WORKSTATION, r);
270 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_SERVER", SV_TYPE_SERVER, r);
271 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_SQLSERVER", SV_TYPE_SQLSERVER, r);
272 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_DOMAIN_CTRL", SV_TYPE_DOMAIN_CTRL, r);
273 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_DOMAIN_BAKCTRL", SV_TYPE_DOMAIN_BAKCTRL, r);
274 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_TIME_SOURCE", SV_TYPE_TIME_SOURCE, r);
275 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_AFP", SV_TYPE_AFP, r);
276 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_NOVELL", SV_TYPE_NOVELL, r);
277 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_DOMAIN_MEMBER", SV_TYPE_DOMAIN_MEMBER, r);
278 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_PRINTQ_SERVER", SV_TYPE_PRINTQ_SERVER, r);
279 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_DIALIN_SERVER", SV_TYPE_DIALIN_SERVER, r);
280 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_SERVER_UNIX", SV_TYPE_SERVER_UNIX, r);
281 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_NT", SV_TYPE_NT, r);
282 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_WFW", SV_TYPE_WFW, r);
283 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_SERVER_MFPN", SV_TYPE_SERVER_MFPN, r);
284 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_SERVER_NT", SV_TYPE_SERVER_NT, r);
285 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_POTENTIAL_BROWSER", SV_TYPE_POTENTIAL_BROWSER, r);
286 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_BACKUP_BROWSER", SV_TYPE_BACKUP_BROWSER, r);
287 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_MASTER_BROWSER", SV_TYPE_MASTER_BROWSER, r);
288 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_DOMAIN_MASTER", SV_TYPE_DOMAIN_MASTER, r);
289 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_SERVER_OSF", SV_TYPE_SERVER_OSF, r);
290 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_SERVER_VMS", SV_TYPE_SERVER_VMS, r);
291 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_WIN95_PLUS", SV_TYPE_WIN95_PLUS, r);
292 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_DFS_SERVER", SV_TYPE_DFS_SERVER, r);
293 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_ALTERNATE_XPORT", SV_TYPE_ALTERNATE_XPORT, r);
294 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_LOCAL_LIST_ONLY", SV_TYPE_LOCAL_LIST_ONLY, r);
295 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_DOMAIN_ENUM", SV_TYPE_DOMAIN_ENUM, r);
299 static enum ndr_err_code ndr_push_svcctl_MgrAccessMask(struct ndr_push *ndr, int ndr_flags, uint32_t r)
301 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r));
302 return NDR_ERR_SUCCESS;
305 static enum ndr_err_code ndr_pull_svcctl_MgrAccessMask(struct ndr_pull *ndr, int ndr_flags, uint32_t *r)
308 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &v));
310 return NDR_ERR_SUCCESS;
313 _PUBLIC_ void ndr_print_svcctl_MgrAccessMask(struct ndr_print *ndr, const char *name, uint32_t r)
315 ndr_print_uint32(ndr, name, r);
317 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SC_RIGHT_MGR_CONNECT", SC_RIGHT_MGR_CONNECT, r);
318 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SC_RIGHT_MGR_CREATE_SERVICE", SC_RIGHT_MGR_CREATE_SERVICE, r);
319 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SC_RIGHT_MGR_ENUMERATE_SERVICE", SC_RIGHT_MGR_ENUMERATE_SERVICE, r);
320 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SC_RIGHT_MGR_LOCK", SC_RIGHT_MGR_LOCK, r);
321 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SC_RIGHT_MGR_QUERY_LOCK_STATUS", SC_RIGHT_MGR_QUERY_LOCK_STATUS, r);
322 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SC_RIGHT_MGR_MODIFY_BOOT_CONFIG", SC_RIGHT_MGR_MODIFY_BOOT_CONFIG, r);
326 static enum ndr_err_code ndr_push_svcctl_ServiceAccessMask(struct ndr_push *ndr, int ndr_flags, uint32_t r)
328 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r));
329 return NDR_ERR_SUCCESS;
332 static enum ndr_err_code ndr_pull_svcctl_ServiceAccessMask(struct ndr_pull *ndr, int ndr_flags, uint32_t *r)
335 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &v));
337 return NDR_ERR_SUCCESS;
340 _PUBLIC_ void ndr_print_svcctl_ServiceAccessMask(struct ndr_print *ndr, const char *name, uint32_t r)
342 ndr_print_uint32(ndr, name, r);
344 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SC_RIGHT_SVC_QUERY_CONFIG", SC_RIGHT_SVC_QUERY_CONFIG, r);
345 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SC_RIGHT_SVC_CHANGE_CONFIG", SC_RIGHT_SVC_CHANGE_CONFIG, r);
346 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SC_RIGHT_SVC_QUERY_STATUS", SC_RIGHT_SVC_QUERY_STATUS, r);
347 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SC_RIGHT_SVC_ENUMERATE_DEPENDENTS", SC_RIGHT_SVC_ENUMERATE_DEPENDENTS, r);
348 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SC_RIGHT_SVC_START", SC_RIGHT_SVC_START, r);
349 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SC_RIGHT_SVC_STOP", SC_RIGHT_SVC_STOP, r);
350 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SC_RIGHT_SVC_PAUSE_CONTINUE", SC_RIGHT_SVC_PAUSE_CONTINUE, r);
351 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SC_RIGHT_SVC_INTERROGATE", SC_RIGHT_SVC_INTERROGATE, r);
352 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SC_RIGHT_SVC_USER_DEFINED_CONTROL", SC_RIGHT_SVC_USER_DEFINED_CONTROL, r);
356 static enum ndr_err_code ndr_push_svcctl_CloseServiceHandle(struct ndr_push *ndr, int flags, const struct svcctl_CloseServiceHandle *r)
358 if (flags & NDR_IN) {
359 if (r->in.handle == NULL) {
360 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
362 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
364 if (flags & NDR_OUT) {
365 if (r->out.handle == NULL) {
366 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
368 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->out.handle));
369 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
371 return NDR_ERR_SUCCESS;
374 static enum ndr_err_code ndr_pull_svcctl_CloseServiceHandle(struct ndr_pull *ndr, int flags, struct svcctl_CloseServiceHandle *r)
376 TALLOC_CTX *_mem_save_handle_0;
377 if (flags & NDR_IN) {
380 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
381 NDR_PULL_ALLOC(ndr, r->in.handle);
383 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
384 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
385 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
386 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
387 NDR_PULL_ALLOC(ndr, r->out.handle);
388 *r->out.handle = *r->in.handle;
390 if (flags & NDR_OUT) {
391 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
392 NDR_PULL_ALLOC(ndr, r->out.handle);
394 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
395 NDR_PULL_SET_MEM_CTX(ndr, r->out.handle, LIBNDR_FLAG_REF_ALLOC);
396 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->out.handle));
397 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
398 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
400 return NDR_ERR_SUCCESS;
403 _PUBLIC_ void ndr_print_svcctl_CloseServiceHandle(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_CloseServiceHandle *r)
405 ndr_print_struct(ndr, name, "svcctl_CloseServiceHandle");
407 if (flags & NDR_SET_VALUES) {
408 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
410 if (flags & NDR_IN) {
411 ndr_print_struct(ndr, "in", "svcctl_CloseServiceHandle");
413 ndr_print_ptr(ndr, "handle", r->in.handle);
415 ndr_print_policy_handle(ndr, "handle", r->in.handle);
419 if (flags & NDR_OUT) {
420 ndr_print_struct(ndr, "out", "svcctl_CloseServiceHandle");
422 ndr_print_ptr(ndr, "handle", r->out.handle);
424 ndr_print_policy_handle(ndr, "handle", r->out.handle);
426 ndr_print_WERROR(ndr, "result", r->out.result);
432 static enum ndr_err_code ndr_push_svcctl_ControlService(struct ndr_push *ndr, int flags, const struct svcctl_ControlService *r)
434 if (flags & NDR_IN) {
435 if (r->in.handle == NULL) {
436 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
438 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
439 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.control));
441 if (flags & NDR_OUT) {
442 if (r->out.service_status == NULL) {
443 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
445 NDR_CHECK(ndr_push_SERVICE_STATUS(ndr, NDR_SCALARS, r->out.service_status));
446 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
448 return NDR_ERR_SUCCESS;
451 static enum ndr_err_code ndr_pull_svcctl_ControlService(struct ndr_pull *ndr, int flags, struct svcctl_ControlService *r)
453 TALLOC_CTX *_mem_save_handle_0;
454 TALLOC_CTX *_mem_save_service_status_0;
455 if (flags & NDR_IN) {
458 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
459 NDR_PULL_ALLOC(ndr, r->in.handle);
461 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
462 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
463 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
464 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
465 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.control));
466 NDR_PULL_ALLOC(ndr, r->out.service_status);
467 ZERO_STRUCTP(r->out.service_status);
469 if (flags & NDR_OUT) {
470 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
471 NDR_PULL_ALLOC(ndr, r->out.service_status);
473 _mem_save_service_status_0 = NDR_PULL_GET_MEM_CTX(ndr);
474 NDR_PULL_SET_MEM_CTX(ndr, r->out.service_status, LIBNDR_FLAG_REF_ALLOC);
475 NDR_CHECK(ndr_pull_SERVICE_STATUS(ndr, NDR_SCALARS, r->out.service_status));
476 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_service_status_0, LIBNDR_FLAG_REF_ALLOC);
477 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
479 return NDR_ERR_SUCCESS;
482 _PUBLIC_ void ndr_print_svcctl_ControlService(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_ControlService *r)
484 ndr_print_struct(ndr, name, "svcctl_ControlService");
486 if (flags & NDR_SET_VALUES) {
487 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
489 if (flags & NDR_IN) {
490 ndr_print_struct(ndr, "in", "svcctl_ControlService");
492 ndr_print_ptr(ndr, "handle", r->in.handle);
494 ndr_print_policy_handle(ndr, "handle", r->in.handle);
496 ndr_print_uint32(ndr, "control", r->in.control);
499 if (flags & NDR_OUT) {
500 ndr_print_struct(ndr, "out", "svcctl_ControlService");
502 ndr_print_ptr(ndr, "service_status", r->out.service_status);
504 ndr_print_SERVICE_STATUS(ndr, "service_status", r->out.service_status);
506 ndr_print_WERROR(ndr, "result", r->out.result);
512 static enum ndr_err_code ndr_push_svcctl_DeleteService(struct ndr_push *ndr, int flags, const struct svcctl_DeleteService *r)
514 if (flags & NDR_IN) {
515 if (r->in.handle == NULL) {
516 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
518 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
520 if (flags & NDR_OUT) {
521 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
523 return NDR_ERR_SUCCESS;
526 static enum ndr_err_code ndr_pull_svcctl_DeleteService(struct ndr_pull *ndr, int flags, struct svcctl_DeleteService *r)
528 TALLOC_CTX *_mem_save_handle_0;
529 if (flags & NDR_IN) {
530 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
531 NDR_PULL_ALLOC(ndr, r->in.handle);
533 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
534 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
535 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
536 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
538 if (flags & NDR_OUT) {
539 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
541 return NDR_ERR_SUCCESS;
544 _PUBLIC_ void ndr_print_svcctl_DeleteService(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_DeleteService *r)
546 ndr_print_struct(ndr, name, "svcctl_DeleteService");
548 if (flags & NDR_SET_VALUES) {
549 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
551 if (flags & NDR_IN) {
552 ndr_print_struct(ndr, "in", "svcctl_DeleteService");
554 ndr_print_ptr(ndr, "handle", r->in.handle);
556 ndr_print_policy_handle(ndr, "handle", r->in.handle);
560 if (flags & NDR_OUT) {
561 ndr_print_struct(ndr, "out", "svcctl_DeleteService");
563 ndr_print_WERROR(ndr, "result", r->out.result);
569 static enum ndr_err_code ndr_push_svcctl_LockServiceDatabase(struct ndr_push *ndr, int flags, const struct svcctl_LockServiceDatabase *r)
571 if (flags & NDR_IN) {
572 if (r->in.handle == NULL) {
573 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
575 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
577 if (flags & NDR_OUT) {
578 if (r->out.lock == NULL) {
579 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
581 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->out.lock));
582 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
584 return NDR_ERR_SUCCESS;
587 static enum ndr_err_code ndr_pull_svcctl_LockServiceDatabase(struct ndr_pull *ndr, int flags, struct svcctl_LockServiceDatabase *r)
589 TALLOC_CTX *_mem_save_handle_0;
590 TALLOC_CTX *_mem_save_lock_0;
591 if (flags & NDR_IN) {
594 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
595 NDR_PULL_ALLOC(ndr, r->in.handle);
597 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
598 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
599 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
600 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
601 NDR_PULL_ALLOC(ndr, r->out.lock);
602 ZERO_STRUCTP(r->out.lock);
604 if (flags & NDR_OUT) {
605 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
606 NDR_PULL_ALLOC(ndr, r->out.lock);
608 _mem_save_lock_0 = NDR_PULL_GET_MEM_CTX(ndr);
609 NDR_PULL_SET_MEM_CTX(ndr, r->out.lock, LIBNDR_FLAG_REF_ALLOC);
610 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->out.lock));
611 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_lock_0, LIBNDR_FLAG_REF_ALLOC);
612 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
614 return NDR_ERR_SUCCESS;
617 _PUBLIC_ void ndr_print_svcctl_LockServiceDatabase(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_LockServiceDatabase *r)
619 ndr_print_struct(ndr, name, "svcctl_LockServiceDatabase");
621 if (flags & NDR_SET_VALUES) {
622 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
624 if (flags & NDR_IN) {
625 ndr_print_struct(ndr, "in", "svcctl_LockServiceDatabase");
627 ndr_print_ptr(ndr, "handle", r->in.handle);
629 ndr_print_policy_handle(ndr, "handle", r->in.handle);
633 if (flags & NDR_OUT) {
634 ndr_print_struct(ndr, "out", "svcctl_LockServiceDatabase");
636 ndr_print_ptr(ndr, "lock", r->out.lock);
638 ndr_print_policy_handle(ndr, "lock", r->out.lock);
640 ndr_print_WERROR(ndr, "result", r->out.result);
646 static enum ndr_err_code ndr_push_svcctl_QueryServiceObjectSecurity(struct ndr_push *ndr, int flags, const struct svcctl_QueryServiceObjectSecurity *r)
648 if (flags & NDR_IN) {
649 if (r->in.handle == NULL) {
650 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
652 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
653 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.security_flags));
654 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.buffer_size));
656 if (flags & NDR_OUT) {
657 if (r->out.buffer == NULL) {
658 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
660 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.buffer_size));
661 NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->out.buffer, r->in.buffer_size));
662 if (r->out.needed == NULL) {
663 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
665 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.needed));
666 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
668 return NDR_ERR_SUCCESS;
671 static enum ndr_err_code ndr_pull_svcctl_QueryServiceObjectSecurity(struct ndr_pull *ndr, int flags, struct svcctl_QueryServiceObjectSecurity *r)
673 TALLOC_CTX *_mem_save_handle_0;
674 TALLOC_CTX *_mem_save_needed_0;
675 if (flags & NDR_IN) {
678 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
679 NDR_PULL_ALLOC(ndr, r->in.handle);
681 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
682 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
683 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
684 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
685 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.security_flags));
686 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.buffer_size));
687 if (r->in.buffer_size < 0 || r->in.buffer_size > 0x40000) {
688 return ndr_pull_error(ndr, NDR_ERR_RANGE, "value out of range");
690 NDR_PULL_ALLOC_N(ndr, r->out.buffer, r->in.buffer_size);
691 memset(r->out.buffer, 0, (r->in.buffer_size) * sizeof(*r->out.buffer));
692 NDR_PULL_ALLOC(ndr, r->out.needed);
693 ZERO_STRUCTP(r->out.needed);
695 if (flags & NDR_OUT) {
696 NDR_CHECK(ndr_pull_array_size(ndr, &r->out.buffer));
697 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
698 NDR_PULL_ALLOC_N(ndr, r->out.buffer, ndr_get_array_size(ndr, &r->out.buffer));
700 NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->out.buffer, ndr_get_array_size(ndr, &r->out.buffer)));
701 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
702 NDR_PULL_ALLOC(ndr, r->out.needed);
704 _mem_save_needed_0 = NDR_PULL_GET_MEM_CTX(ndr);
705 NDR_PULL_SET_MEM_CTX(ndr, r->out.needed, LIBNDR_FLAG_REF_ALLOC);
706 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.needed));
707 if (*r->out.needed < 0 || *r->out.needed > 0x40000) {
708 return ndr_pull_error(ndr, NDR_ERR_RANGE, "value out of range");
710 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_needed_0, LIBNDR_FLAG_REF_ALLOC);
711 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
713 NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->out.buffer, r->in.buffer_size));
716 return NDR_ERR_SUCCESS;
719 _PUBLIC_ void ndr_print_svcctl_QueryServiceObjectSecurity(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_QueryServiceObjectSecurity *r)
721 ndr_print_struct(ndr, name, "svcctl_QueryServiceObjectSecurity");
723 if (flags & NDR_SET_VALUES) {
724 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
726 if (flags & NDR_IN) {
727 ndr_print_struct(ndr, "in", "svcctl_QueryServiceObjectSecurity");
729 ndr_print_ptr(ndr, "handle", r->in.handle);
731 ndr_print_policy_handle(ndr, "handle", r->in.handle);
733 ndr_print_uint32(ndr, "security_flags", r->in.security_flags);
734 ndr_print_uint32(ndr, "buffer_size", r->in.buffer_size);
737 if (flags & NDR_OUT) {
738 ndr_print_struct(ndr, "out", "svcctl_QueryServiceObjectSecurity");
740 ndr_print_ptr(ndr, "buffer", r->out.buffer);
742 ndr_print_array_uint8(ndr, "buffer", r->out.buffer, r->in.buffer_size);
744 ndr_print_ptr(ndr, "needed", r->out.needed);
746 ndr_print_uint32(ndr, "needed", *r->out.needed);
748 ndr_print_WERROR(ndr, "result", r->out.result);
754 static enum ndr_err_code ndr_push_svcctl_SetServiceObjectSecurity(struct ndr_push *ndr, int flags, const struct svcctl_SetServiceObjectSecurity *r)
756 if (flags & NDR_IN) {
757 if (r->in.handle == NULL) {
758 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
760 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
761 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.security_flags));
762 if (r->in.buffer == NULL) {
763 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
765 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.buffer_size));
766 NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->in.buffer, r->in.buffer_size));
767 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.buffer_size));
769 if (flags & NDR_OUT) {
770 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
772 return NDR_ERR_SUCCESS;
775 static enum ndr_err_code ndr_pull_svcctl_SetServiceObjectSecurity(struct ndr_pull *ndr, int flags, struct svcctl_SetServiceObjectSecurity *r)
777 TALLOC_CTX *_mem_save_handle_0;
778 if (flags & NDR_IN) {
779 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
780 NDR_PULL_ALLOC(ndr, r->in.handle);
782 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
783 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
784 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
785 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
786 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.security_flags));
787 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.buffer));
788 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
789 NDR_PULL_ALLOC_N(ndr, r->in.buffer, ndr_get_array_size(ndr, &r->in.buffer));
791 NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->in.buffer, ndr_get_array_size(ndr, &r->in.buffer)));
792 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.buffer_size));
794 NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->in.buffer, r->in.buffer_size));
797 if (flags & NDR_OUT) {
798 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
800 return NDR_ERR_SUCCESS;
803 _PUBLIC_ void ndr_print_svcctl_SetServiceObjectSecurity(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_SetServiceObjectSecurity *r)
805 ndr_print_struct(ndr, name, "svcctl_SetServiceObjectSecurity");
807 if (flags & NDR_SET_VALUES) {
808 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
810 if (flags & NDR_IN) {
811 ndr_print_struct(ndr, "in", "svcctl_SetServiceObjectSecurity");
813 ndr_print_ptr(ndr, "handle", r->in.handle);
815 ndr_print_policy_handle(ndr, "handle", r->in.handle);
817 ndr_print_uint32(ndr, "security_flags", r->in.security_flags);
818 ndr_print_ptr(ndr, "buffer", r->in.buffer);
820 ndr_print_array_uint8(ndr, "buffer", r->in.buffer, r->in.buffer_size);
822 ndr_print_uint32(ndr, "buffer_size", r->in.buffer_size);
825 if (flags & NDR_OUT) {
826 ndr_print_struct(ndr, "out", "svcctl_SetServiceObjectSecurity");
828 ndr_print_WERROR(ndr, "result", r->out.result);
834 static enum ndr_err_code ndr_push_svcctl_QueryServiceStatus(struct ndr_push *ndr, int flags, const struct svcctl_QueryServiceStatus *r)
836 if (flags & NDR_IN) {
837 if (r->in.handle == NULL) {
838 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
840 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
842 if (flags & NDR_OUT) {
843 if (r->out.service_status == NULL) {
844 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
846 NDR_CHECK(ndr_push_SERVICE_STATUS(ndr, NDR_SCALARS, r->out.service_status));
847 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
849 return NDR_ERR_SUCCESS;
852 static enum ndr_err_code ndr_pull_svcctl_QueryServiceStatus(struct ndr_pull *ndr, int flags, struct svcctl_QueryServiceStatus *r)
854 TALLOC_CTX *_mem_save_handle_0;
855 TALLOC_CTX *_mem_save_service_status_0;
856 if (flags & NDR_IN) {
859 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
860 NDR_PULL_ALLOC(ndr, r->in.handle);
862 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
863 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
864 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
865 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
866 NDR_PULL_ALLOC(ndr, r->out.service_status);
867 ZERO_STRUCTP(r->out.service_status);
869 if (flags & NDR_OUT) {
870 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
871 NDR_PULL_ALLOC(ndr, r->out.service_status);
873 _mem_save_service_status_0 = NDR_PULL_GET_MEM_CTX(ndr);
874 NDR_PULL_SET_MEM_CTX(ndr, r->out.service_status, LIBNDR_FLAG_REF_ALLOC);
875 NDR_CHECK(ndr_pull_SERVICE_STATUS(ndr, NDR_SCALARS, r->out.service_status));
876 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_service_status_0, LIBNDR_FLAG_REF_ALLOC);
877 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
879 return NDR_ERR_SUCCESS;
882 _PUBLIC_ void ndr_print_svcctl_QueryServiceStatus(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_QueryServiceStatus *r)
884 ndr_print_struct(ndr, name, "svcctl_QueryServiceStatus");
886 if (flags & NDR_SET_VALUES) {
887 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
889 if (flags & NDR_IN) {
890 ndr_print_struct(ndr, "in", "svcctl_QueryServiceStatus");
892 ndr_print_ptr(ndr, "handle", r->in.handle);
894 ndr_print_policy_handle(ndr, "handle", r->in.handle);
898 if (flags & NDR_OUT) {
899 ndr_print_struct(ndr, "out", "svcctl_QueryServiceStatus");
901 ndr_print_ptr(ndr, "service_status", r->out.service_status);
903 ndr_print_SERVICE_STATUS(ndr, "service_status", r->out.service_status);
905 ndr_print_WERROR(ndr, "result", r->out.result);
911 static enum ndr_err_code ndr_push_svcctl_SetServiceStatus(struct ndr_push *ndr, int flags, const struct svcctl_SetServiceStatus *r)
913 if (flags & NDR_IN) {
915 if (flags & NDR_OUT) {
916 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
918 return NDR_ERR_SUCCESS;
921 static enum ndr_err_code ndr_pull_svcctl_SetServiceStatus(struct ndr_pull *ndr, int flags, struct svcctl_SetServiceStatus *r)
923 if (flags & NDR_IN) {
925 if (flags & NDR_OUT) {
926 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
928 return NDR_ERR_SUCCESS;
931 _PUBLIC_ void ndr_print_svcctl_SetServiceStatus(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_SetServiceStatus *r)
933 ndr_print_struct(ndr, name, "svcctl_SetServiceStatus");
935 if (flags & NDR_SET_VALUES) {
936 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
938 if (flags & NDR_IN) {
939 ndr_print_struct(ndr, "in", "svcctl_SetServiceStatus");
943 if (flags & NDR_OUT) {
944 ndr_print_struct(ndr, "out", "svcctl_SetServiceStatus");
946 ndr_print_WERROR(ndr, "result", r->out.result);
952 static enum ndr_err_code ndr_push_svcctl_UnlockServiceDatabase(struct ndr_push *ndr, int flags, const struct svcctl_UnlockServiceDatabase *r)
954 if (flags & NDR_IN) {
955 if (r->in.lock == NULL) {
956 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
958 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.lock));
960 if (flags & NDR_OUT) {
961 if (r->out.lock == NULL) {
962 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
964 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->out.lock));
965 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
967 return NDR_ERR_SUCCESS;
970 static enum ndr_err_code ndr_pull_svcctl_UnlockServiceDatabase(struct ndr_pull *ndr, int flags, struct svcctl_UnlockServiceDatabase *r)
972 TALLOC_CTX *_mem_save_lock_0;
973 if (flags & NDR_IN) {
976 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
977 NDR_PULL_ALLOC(ndr, r->in.lock);
979 _mem_save_lock_0 = NDR_PULL_GET_MEM_CTX(ndr);
980 NDR_PULL_SET_MEM_CTX(ndr, r->in.lock, LIBNDR_FLAG_REF_ALLOC);
981 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.lock));
982 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_lock_0, LIBNDR_FLAG_REF_ALLOC);
983 NDR_PULL_ALLOC(ndr, r->out.lock);
984 *r->out.lock = *r->in.lock;
986 if (flags & NDR_OUT) {
987 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
988 NDR_PULL_ALLOC(ndr, r->out.lock);
990 _mem_save_lock_0 = NDR_PULL_GET_MEM_CTX(ndr);
991 NDR_PULL_SET_MEM_CTX(ndr, r->out.lock, LIBNDR_FLAG_REF_ALLOC);
992 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->out.lock));
993 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_lock_0, LIBNDR_FLAG_REF_ALLOC);
994 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
996 return NDR_ERR_SUCCESS;
999 _PUBLIC_ void ndr_print_svcctl_UnlockServiceDatabase(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_UnlockServiceDatabase *r)
1001 ndr_print_struct(ndr, name, "svcctl_UnlockServiceDatabase");
1003 if (flags & NDR_SET_VALUES) {
1004 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
1006 if (flags & NDR_IN) {
1007 ndr_print_struct(ndr, "in", "svcctl_UnlockServiceDatabase");
1009 ndr_print_ptr(ndr, "lock", r->in.lock);
1011 ndr_print_policy_handle(ndr, "lock", r->in.lock);
1015 if (flags & NDR_OUT) {
1016 ndr_print_struct(ndr, "out", "svcctl_UnlockServiceDatabase");
1018 ndr_print_ptr(ndr, "lock", r->out.lock);
1020 ndr_print_policy_handle(ndr, "lock", r->out.lock);
1022 ndr_print_WERROR(ndr, "result", r->out.result);
1028 static enum ndr_err_code ndr_push_svcctl_NotifyBootConfigStatus(struct ndr_push *ndr, int flags, const struct svcctl_NotifyBootConfigStatus *r)
1030 if (flags & NDR_IN) {
1032 if (flags & NDR_OUT) {
1033 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
1035 return NDR_ERR_SUCCESS;
1038 static enum ndr_err_code ndr_pull_svcctl_NotifyBootConfigStatus(struct ndr_pull *ndr, int flags, struct svcctl_NotifyBootConfigStatus *r)
1040 if (flags & NDR_IN) {
1042 if (flags & NDR_OUT) {
1043 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
1045 return NDR_ERR_SUCCESS;
1048 _PUBLIC_ void ndr_print_svcctl_NotifyBootConfigStatus(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_NotifyBootConfigStatus *r)
1050 ndr_print_struct(ndr, name, "svcctl_NotifyBootConfigStatus");
1052 if (flags & NDR_SET_VALUES) {
1053 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
1055 if (flags & NDR_IN) {
1056 ndr_print_struct(ndr, "in", "svcctl_NotifyBootConfigStatus");
1060 if (flags & NDR_OUT) {
1061 ndr_print_struct(ndr, "out", "svcctl_NotifyBootConfigStatus");
1063 ndr_print_WERROR(ndr, "result", r->out.result);
1069 static enum ndr_err_code ndr_push_svcctl_SCSetServiceBitsW(struct ndr_push *ndr, int flags, const struct svcctl_SCSetServiceBitsW *r)
1071 if (flags & NDR_IN) {
1072 if (r->in.handle == NULL) {
1073 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
1075 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
1076 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.bits));
1077 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.bitson));
1078 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.immediate));
1080 if (flags & NDR_OUT) {
1081 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
1083 return NDR_ERR_SUCCESS;
1086 static enum ndr_err_code ndr_pull_svcctl_SCSetServiceBitsW(struct ndr_pull *ndr, int flags, struct svcctl_SCSetServiceBitsW *r)
1088 TALLOC_CTX *_mem_save_handle_0;
1089 if (flags & NDR_IN) {
1090 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
1091 NDR_PULL_ALLOC(ndr, r->in.handle);
1093 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
1094 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
1095 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
1096 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
1097 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.bits));
1098 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.bitson));
1099 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.immediate));
1101 if (flags & NDR_OUT) {
1102 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
1104 return NDR_ERR_SUCCESS;
1107 _PUBLIC_ void ndr_print_svcctl_SCSetServiceBitsW(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_SCSetServiceBitsW *r)
1109 ndr_print_struct(ndr, name, "svcctl_SCSetServiceBitsW");
1111 if (flags & NDR_SET_VALUES) {
1112 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
1114 if (flags & NDR_IN) {
1115 ndr_print_struct(ndr, "in", "svcctl_SCSetServiceBitsW");
1117 ndr_print_ptr(ndr, "handle", r->in.handle);
1119 ndr_print_policy_handle(ndr, "handle", r->in.handle);
1121 ndr_print_uint32(ndr, "bits", r->in.bits);
1122 ndr_print_uint32(ndr, "bitson", r->in.bitson);
1123 ndr_print_uint32(ndr, "immediate", r->in.immediate);
1126 if (flags & NDR_OUT) {
1127 ndr_print_struct(ndr, "out", "svcctl_SCSetServiceBitsW");
1129 ndr_print_WERROR(ndr, "result", r->out.result);
1135 static enum ndr_err_code ndr_push_svcctl_ChangeServiceConfigW(struct ndr_push *ndr, int flags, const struct svcctl_ChangeServiceConfigW *r)
1137 if (flags & NDR_IN) {
1138 if (r->in.handle == NULL) {
1139 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
1141 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
1142 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.type));
1143 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.start));
1144 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.error));
1145 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.binary_path));
1146 if (r->in.binary_path) {
1147 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.binary_path, CH_UTF16)));
1148 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
1149 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.binary_path, CH_UTF16)));
1150 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));
1152 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.load_order_group));
1153 if (r->in.load_order_group) {
1154 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.load_order_group, CH_UTF16)));
1155 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
1156 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.load_order_group, CH_UTF16)));
1157 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));
1159 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.dependencies));
1160 if (r->in.dependencies) {
1161 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.dependencies, CH_UTF16)));
1162 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
1163 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.dependencies, CH_UTF16)));
1164 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.dependencies, ndr_charset_length(r->in.dependencies, CH_UTF16), sizeof(uint16_t), CH_UTF16));
1166 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.service_start_name));
1167 if (r->in.service_start_name) {
1168 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.service_start_name, CH_UTF16)));
1169 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
1170 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.service_start_name, CH_UTF16)));
1171 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));
1173 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.password));
1174 if (r->in.password) {
1175 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.password, CH_UTF16)));
1176 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
1177 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.password, CH_UTF16)));
1178 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.password, ndr_charset_length(r->in.password, CH_UTF16), sizeof(uint16_t), CH_UTF16));
1180 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.display_name));
1181 if (r->in.display_name) {
1182 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.display_name, CH_UTF16)));
1183 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
1184 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.display_name, CH_UTF16)));
1185 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));
1188 if (flags & NDR_OUT) {
1189 if (r->out.tag_id == NULL) {
1190 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
1192 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.tag_id));
1193 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
1195 return NDR_ERR_SUCCESS;
1198 static enum ndr_err_code ndr_pull_svcctl_ChangeServiceConfigW(struct ndr_pull *ndr, int flags, struct svcctl_ChangeServiceConfigW *r)
1200 uint32_t _ptr_binary_path;
1201 uint32_t _ptr_load_order_group;
1202 uint32_t _ptr_dependencies;
1203 uint32_t _ptr_service_start_name;
1204 uint32_t _ptr_password;
1205 uint32_t _ptr_display_name;
1206 TALLOC_CTX *_mem_save_handle_0;
1207 TALLOC_CTX *_mem_save_binary_path_0;
1208 TALLOC_CTX *_mem_save_load_order_group_0;
1209 TALLOC_CTX *_mem_save_tag_id_0;
1210 TALLOC_CTX *_mem_save_dependencies_0;
1211 TALLOC_CTX *_mem_save_service_start_name_0;
1212 TALLOC_CTX *_mem_save_password_0;
1213 TALLOC_CTX *_mem_save_display_name_0;
1214 if (flags & NDR_IN) {
1215 ZERO_STRUCT(r->out);
1217 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
1218 NDR_PULL_ALLOC(ndr, r->in.handle);
1220 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
1221 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
1222 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
1223 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
1224 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.type));
1225 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.start));
1226 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.error));
1227 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_binary_path));
1228 if (_ptr_binary_path) {
1229 NDR_PULL_ALLOC(ndr, r->in.binary_path);
1231 r->in.binary_path = NULL;
1233 if (r->in.binary_path) {
1234 _mem_save_binary_path_0 = NDR_PULL_GET_MEM_CTX(ndr);
1235 NDR_PULL_SET_MEM_CTX(ndr, r->in.binary_path, 0);
1236 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.binary_path));
1237 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.binary_path));
1238 if (ndr_get_array_length(ndr, &r->in.binary_path) > ndr_get_array_size(ndr, &r->in.binary_path)) {
1239 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));
1241 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.binary_path), sizeof(uint16_t)));
1242 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));
1243 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_binary_path_0, 0);
1245 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_load_order_group));
1246 if (_ptr_load_order_group) {
1247 NDR_PULL_ALLOC(ndr, r->in.load_order_group);
1249 r->in.load_order_group = NULL;
1251 if (r->in.load_order_group) {
1252 _mem_save_load_order_group_0 = NDR_PULL_GET_MEM_CTX(ndr);
1253 NDR_PULL_SET_MEM_CTX(ndr, r->in.load_order_group, 0);
1254 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.load_order_group));
1255 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.load_order_group));
1256 if (ndr_get_array_length(ndr, &r->in.load_order_group) > ndr_get_array_size(ndr, &r->in.load_order_group)) {
1257 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));
1259 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.load_order_group), sizeof(uint16_t)));
1260 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));
1261 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_load_order_group_0, 0);
1263 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_dependencies));
1264 if (_ptr_dependencies) {
1265 NDR_PULL_ALLOC(ndr, r->in.dependencies);
1267 r->in.dependencies = NULL;
1269 if (r->in.dependencies) {
1270 _mem_save_dependencies_0 = NDR_PULL_GET_MEM_CTX(ndr);
1271 NDR_PULL_SET_MEM_CTX(ndr, r->in.dependencies, 0);
1272 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.dependencies));
1273 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.dependencies));
1274 if (ndr_get_array_length(ndr, &r->in.dependencies) > ndr_get_array_size(ndr, &r->in.dependencies)) {
1275 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));
1277 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.dependencies), sizeof(uint16_t)));
1278 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.dependencies, ndr_get_array_length(ndr, &r->in.dependencies), sizeof(uint16_t), CH_UTF16));
1279 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_dependencies_0, 0);
1281 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_service_start_name));
1282 if (_ptr_service_start_name) {
1283 NDR_PULL_ALLOC(ndr, r->in.service_start_name);
1285 r->in.service_start_name = NULL;
1287 if (r->in.service_start_name) {
1288 _mem_save_service_start_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
1289 NDR_PULL_SET_MEM_CTX(ndr, r->in.service_start_name, 0);
1290 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.service_start_name));
1291 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.service_start_name));
1292 if (ndr_get_array_length(ndr, &r->in.service_start_name) > ndr_get_array_size(ndr, &r->in.service_start_name)) {
1293 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));
1295 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.service_start_name), sizeof(uint16_t)));
1296 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));
1297 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_service_start_name_0, 0);
1299 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_password));
1300 if (_ptr_password) {
1301 NDR_PULL_ALLOC(ndr, r->in.password);
1303 r->in.password = NULL;
1305 if (r->in.password) {
1306 _mem_save_password_0 = NDR_PULL_GET_MEM_CTX(ndr);
1307 NDR_PULL_SET_MEM_CTX(ndr, r->in.password, 0);
1308 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.password));
1309 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.password));
1310 if (ndr_get_array_length(ndr, &r->in.password) > ndr_get_array_size(ndr, &r->in.password)) {
1311 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));
1313 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.password), sizeof(uint16_t)));
1314 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.password, ndr_get_array_length(ndr, &r->in.password), sizeof(uint16_t), CH_UTF16));
1315 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_password_0, 0);
1317 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_display_name));
1318 if (_ptr_display_name) {
1319 NDR_PULL_ALLOC(ndr, r->in.display_name);
1321 r->in.display_name = NULL;
1323 if (r->in.display_name) {
1324 _mem_save_display_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
1325 NDR_PULL_SET_MEM_CTX(ndr, r->in.display_name, 0);
1326 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.display_name));
1327 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.display_name));
1328 if (ndr_get_array_length(ndr, &r->in.display_name) > ndr_get_array_size(ndr, &r->in.display_name)) {
1329 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));
1331 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.display_name), sizeof(uint16_t)));
1332 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));
1333 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_display_name_0, 0);
1335 NDR_PULL_ALLOC(ndr, r->out.tag_id);
1336 ZERO_STRUCTP(r->out.tag_id);
1338 if (flags & NDR_OUT) {
1339 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
1340 NDR_PULL_ALLOC(ndr, r->out.tag_id);
1342 _mem_save_tag_id_0 = NDR_PULL_GET_MEM_CTX(ndr);
1343 NDR_PULL_SET_MEM_CTX(ndr, r->out.tag_id, LIBNDR_FLAG_REF_ALLOC);
1344 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.tag_id));
1345 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_tag_id_0, LIBNDR_FLAG_REF_ALLOC);
1346 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
1348 return NDR_ERR_SUCCESS;
1351 _PUBLIC_ void ndr_print_svcctl_ChangeServiceConfigW(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_ChangeServiceConfigW *r)
1353 ndr_print_struct(ndr, name, "svcctl_ChangeServiceConfigW");
1355 if (flags & NDR_SET_VALUES) {
1356 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
1358 if (flags & NDR_IN) {
1359 ndr_print_struct(ndr, "in", "svcctl_ChangeServiceConfigW");
1361 ndr_print_ptr(ndr, "handle", r->in.handle);
1363 ndr_print_policy_handle(ndr, "handle", r->in.handle);
1365 ndr_print_uint32(ndr, "type", r->in.type);
1366 ndr_print_uint32(ndr, "start", r->in.start);
1367 ndr_print_uint32(ndr, "error", r->in.error);
1368 ndr_print_ptr(ndr, "binary_path", r->in.binary_path);
1370 if (r->in.binary_path) {
1371 ndr_print_string(ndr, "binary_path", r->in.binary_path);
1374 ndr_print_ptr(ndr, "load_order_group", r->in.load_order_group);
1376 if (r->in.load_order_group) {
1377 ndr_print_string(ndr, "load_order_group", r->in.load_order_group);
1380 ndr_print_ptr(ndr, "dependencies", r->in.dependencies);
1382 if (r->in.dependencies) {
1383 ndr_print_string(ndr, "dependencies", r->in.dependencies);
1386 ndr_print_ptr(ndr, "service_start_name", r->in.service_start_name);
1388 if (r->in.service_start_name) {
1389 ndr_print_string(ndr, "service_start_name", r->in.service_start_name);
1392 ndr_print_ptr(ndr, "password", r->in.password);
1394 if (r->in.password) {
1395 ndr_print_string(ndr, "password", r->in.password);
1398 ndr_print_ptr(ndr, "display_name", r->in.display_name);
1400 if (r->in.display_name) {
1401 ndr_print_string(ndr, "display_name", r->in.display_name);
1406 if (flags & NDR_OUT) {
1407 ndr_print_struct(ndr, "out", "svcctl_ChangeServiceConfigW");
1409 ndr_print_ptr(ndr, "tag_id", r->out.tag_id);
1411 ndr_print_uint32(ndr, "tag_id", *r->out.tag_id);
1413 ndr_print_WERROR(ndr, "result", r->out.result);
1419 static enum ndr_err_code ndr_push_svcctl_CreateServiceW(struct ndr_push *ndr, int flags, const struct svcctl_CreateServiceW *r)
1421 if (flags & NDR_IN) {
1422 if (r->in.scmanager_handle == NULL) {
1423 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
1425 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.scmanager_handle));
1426 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.ServiceName, CH_UTF16)));
1427 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
1428 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.ServiceName, CH_UTF16)));
1429 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.ServiceName, ndr_charset_length(r->in.ServiceName, CH_UTF16), sizeof(uint16_t), CH_UTF16));
1430 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.DisplayName));
1431 if (r->in.DisplayName) {
1432 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.DisplayName, CH_UTF16)));
1433 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
1434 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.DisplayName, CH_UTF16)));
1435 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.DisplayName, ndr_charset_length(r->in.DisplayName, CH_UTF16), sizeof(uint16_t), CH_UTF16));
1437 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.desired_access));
1438 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.type));
1439 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.start_type));
1440 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.error_control));
1441 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.binary_path, CH_UTF16)));
1442 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
1443 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.binary_path, CH_UTF16)));
1444 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));
1445 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.LoadOrderGroupKey));
1446 if (r->in.LoadOrderGroupKey) {
1447 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.LoadOrderGroupKey, CH_UTF16)));
1448 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
1449 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.LoadOrderGroupKey, CH_UTF16)));
1450 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.LoadOrderGroupKey, ndr_charset_length(r->in.LoadOrderGroupKey, CH_UTF16), sizeof(uint16_t), CH_UTF16));
1452 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.TagId));
1454 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->in.TagId));
1456 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.dependencies));
1457 if (r->in.dependencies) {
1458 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.dependencies_size));
1459 NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->in.dependencies, r->in.dependencies_size));
1461 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.dependencies_size));
1462 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.service_start_name));
1463 if (r->in.service_start_name) {
1464 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.service_start_name, CH_UTF16)));
1465 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
1466 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.service_start_name, CH_UTF16)));
1467 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));
1469 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.password));
1470 if (r->in.password) {
1471 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.password_size));
1472 NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->in.password, r->in.password_size));
1474 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.password_size));
1476 if (flags & NDR_OUT) {
1477 NDR_CHECK(ndr_push_unique_ptr(ndr, r->out.TagId));
1479 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.TagId));
1481 if (r->out.handle == NULL) {
1482 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
1484 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->out.handle));
1485 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
1487 return NDR_ERR_SUCCESS;
1490 static enum ndr_err_code ndr_pull_svcctl_CreateServiceW(struct ndr_pull *ndr, int flags, struct svcctl_CreateServiceW *r)
1492 uint32_t _ptr_DisplayName;
1493 uint32_t _ptr_LoadOrderGroupKey;
1494 uint32_t _ptr_TagId;
1495 uint32_t _ptr_dependencies;
1496 uint32_t _ptr_service_start_name;
1497 uint32_t _ptr_password;
1498 TALLOC_CTX *_mem_save_scmanager_handle_0;
1499 TALLOC_CTX *_mem_save_DisplayName_0;
1500 TALLOC_CTX *_mem_save_LoadOrderGroupKey_0;
1501 TALLOC_CTX *_mem_save_TagId_0;
1502 TALLOC_CTX *_mem_save_dependencies_0;
1503 TALLOC_CTX *_mem_save_service_start_name_0;
1504 TALLOC_CTX *_mem_save_password_0;
1505 TALLOC_CTX *_mem_save_handle_0;
1506 if (flags & NDR_IN) {
1507 ZERO_STRUCT(r->out);
1509 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
1510 NDR_PULL_ALLOC(ndr, r->in.scmanager_handle);
1512 _mem_save_scmanager_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
1513 NDR_PULL_SET_MEM_CTX(ndr, r->in.scmanager_handle, LIBNDR_FLAG_REF_ALLOC);
1514 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.scmanager_handle));
1515 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_scmanager_handle_0, LIBNDR_FLAG_REF_ALLOC);
1516 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.ServiceName));
1517 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.ServiceName));
1518 if (ndr_get_array_length(ndr, &r->in.ServiceName) > ndr_get_array_size(ndr, &r->in.ServiceName)) {
1519 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));
1521 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.ServiceName), sizeof(uint16_t)));
1522 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.ServiceName, ndr_get_array_length(ndr, &r->in.ServiceName), sizeof(uint16_t), CH_UTF16));
1523 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_DisplayName));
1524 if (_ptr_DisplayName) {
1525 NDR_PULL_ALLOC(ndr, r->in.DisplayName);
1527 r->in.DisplayName = NULL;
1529 if (r->in.DisplayName) {
1530 _mem_save_DisplayName_0 = NDR_PULL_GET_MEM_CTX(ndr);
1531 NDR_PULL_SET_MEM_CTX(ndr, r->in.DisplayName, 0);
1532 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.DisplayName));
1533 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.DisplayName));
1534 if (ndr_get_array_length(ndr, &r->in.DisplayName) > ndr_get_array_size(ndr, &r->in.DisplayName)) {
1535 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));
1537 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.DisplayName), sizeof(uint16_t)));
1538 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.DisplayName, ndr_get_array_length(ndr, &r->in.DisplayName), sizeof(uint16_t), CH_UTF16));
1539 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_DisplayName_0, 0);
1541 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.desired_access));
1542 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.type));
1543 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.start_type));
1544 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.error_control));
1545 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.binary_path));
1546 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.binary_path));
1547 if (ndr_get_array_length(ndr, &r->in.binary_path) > ndr_get_array_size(ndr, &r->in.binary_path)) {
1548 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));
1550 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.binary_path), sizeof(uint16_t)));
1551 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));
1552 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_LoadOrderGroupKey));
1553 if (_ptr_LoadOrderGroupKey) {
1554 NDR_PULL_ALLOC(ndr, r->in.LoadOrderGroupKey);
1556 r->in.LoadOrderGroupKey = NULL;
1558 if (r->in.LoadOrderGroupKey) {
1559 _mem_save_LoadOrderGroupKey_0 = NDR_PULL_GET_MEM_CTX(ndr);
1560 NDR_PULL_SET_MEM_CTX(ndr, r->in.LoadOrderGroupKey, 0);
1561 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.LoadOrderGroupKey));
1562 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.LoadOrderGroupKey));
1563 if (ndr_get_array_length(ndr, &r->in.LoadOrderGroupKey) > ndr_get_array_size(ndr, &r->in.LoadOrderGroupKey)) {
1564 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));
1566 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.LoadOrderGroupKey), sizeof(uint16_t)));
1567 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.LoadOrderGroupKey, ndr_get_array_length(ndr, &r->in.LoadOrderGroupKey), sizeof(uint16_t), CH_UTF16));
1568 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_LoadOrderGroupKey_0, 0);
1570 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_TagId));
1572 NDR_PULL_ALLOC(ndr, r->in.TagId);
1577 _mem_save_TagId_0 = NDR_PULL_GET_MEM_CTX(ndr);
1578 NDR_PULL_SET_MEM_CTX(ndr, r->in.TagId, 0);
1579 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->in.TagId));
1580 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_TagId_0, 0);
1582 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_dependencies));
1583 if (_ptr_dependencies) {
1584 NDR_PULL_ALLOC(ndr, r->in.dependencies);
1586 r->in.dependencies = NULL;
1588 if (r->in.dependencies) {
1589 _mem_save_dependencies_0 = NDR_PULL_GET_MEM_CTX(ndr);
1590 NDR_PULL_SET_MEM_CTX(ndr, r->in.dependencies, 0);
1591 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.dependencies));
1592 NDR_PULL_ALLOC_N(ndr, r->in.dependencies, ndr_get_array_size(ndr, &r->in.dependencies));
1593 NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->in.dependencies, ndr_get_array_size(ndr, &r->in.dependencies)));
1594 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_dependencies_0, 0);
1596 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.dependencies_size));
1597 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_service_start_name));
1598 if (_ptr_service_start_name) {
1599 NDR_PULL_ALLOC(ndr, r->in.service_start_name);
1601 r->in.service_start_name = NULL;
1603 if (r->in.service_start_name) {
1604 _mem_save_service_start_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
1605 NDR_PULL_SET_MEM_CTX(ndr, r->in.service_start_name, 0);
1606 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.service_start_name));
1607 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.service_start_name));
1608 if (ndr_get_array_length(ndr, &r->in.service_start_name) > ndr_get_array_size(ndr, &r->in.service_start_name)) {
1609 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));
1611 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.service_start_name), sizeof(uint16_t)));
1612 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));
1613 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_service_start_name_0, 0);
1615 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_password));
1616 if (_ptr_password) {
1617 NDR_PULL_ALLOC(ndr, r->in.password);
1619 r->in.password = NULL;
1621 if (r->in.password) {
1622 _mem_save_password_0 = NDR_PULL_GET_MEM_CTX(ndr);
1623 NDR_PULL_SET_MEM_CTX(ndr, r->in.password, 0);
1624 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.password));
1625 NDR_PULL_ALLOC_N(ndr, r->in.password, ndr_get_array_size(ndr, &r->in.password));
1626 NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->in.password, ndr_get_array_size(ndr, &r->in.password)));
1627 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_password_0, 0);
1629 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.password_size));
1630 NDR_PULL_ALLOC(ndr, r->out.handle);
1631 ZERO_STRUCTP(r->out.handle);
1632 if (r->in.dependencies) {
1633 NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->in.dependencies, r->in.dependencies_size));
1635 if (r->in.password) {
1636 NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->in.password, r->in.password_size));
1639 if (flags & NDR_OUT) {
1640 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_TagId));
1642 NDR_PULL_ALLOC(ndr, r->out.TagId);
1644 r->out.TagId = NULL;
1647 _mem_save_TagId_0 = NDR_PULL_GET_MEM_CTX(ndr);
1648 NDR_PULL_SET_MEM_CTX(ndr, r->out.TagId, 0);
1649 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.TagId));
1650 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_TagId_0, 0);
1652 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
1653 NDR_PULL_ALLOC(ndr, r->out.handle);
1655 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
1656 NDR_PULL_SET_MEM_CTX(ndr, r->out.handle, LIBNDR_FLAG_REF_ALLOC);
1657 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->out.handle));
1658 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
1659 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
1661 return NDR_ERR_SUCCESS;
1664 _PUBLIC_ void ndr_print_svcctl_CreateServiceW(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_CreateServiceW *r)
1666 ndr_print_struct(ndr, name, "svcctl_CreateServiceW");
1668 if (flags & NDR_SET_VALUES) {
1669 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
1671 if (flags & NDR_IN) {
1672 ndr_print_struct(ndr, "in", "svcctl_CreateServiceW");
1674 ndr_print_ptr(ndr, "scmanager_handle", r->in.scmanager_handle);
1676 ndr_print_policy_handle(ndr, "scmanager_handle", r->in.scmanager_handle);
1678 ndr_print_string(ndr, "ServiceName", r->in.ServiceName);
1679 ndr_print_ptr(ndr, "DisplayName", r->in.DisplayName);
1681 if (r->in.DisplayName) {
1682 ndr_print_string(ndr, "DisplayName", r->in.DisplayName);
1685 ndr_print_uint32(ndr, "desired_access", r->in.desired_access);
1686 ndr_print_uint32(ndr, "type", r->in.type);
1687 ndr_print_uint32(ndr, "start_type", r->in.start_type);
1688 ndr_print_uint32(ndr, "error_control", r->in.error_control);
1689 ndr_print_string(ndr, "binary_path", r->in.binary_path);
1690 ndr_print_ptr(ndr, "LoadOrderGroupKey", r->in.LoadOrderGroupKey);
1692 if (r->in.LoadOrderGroupKey) {
1693 ndr_print_string(ndr, "LoadOrderGroupKey", r->in.LoadOrderGroupKey);
1696 ndr_print_ptr(ndr, "TagId", r->in.TagId);
1699 ndr_print_uint32(ndr, "TagId", *r->in.TagId);
1702 ndr_print_ptr(ndr, "dependencies", r->in.dependencies);
1704 if (r->in.dependencies) {
1705 ndr_print_array_uint8(ndr, "dependencies", r->in.dependencies, r->in.dependencies_size);
1708 ndr_print_uint32(ndr, "dependencies_size", r->in.dependencies_size);
1709 ndr_print_ptr(ndr, "service_start_name", r->in.service_start_name);
1711 if (r->in.service_start_name) {
1712 ndr_print_string(ndr, "service_start_name", r->in.service_start_name);
1715 ndr_print_ptr(ndr, "password", r->in.password);
1717 if (r->in.password) {
1718 ndr_print_array_uint8(ndr, "password", r->in.password, r->in.password_size);
1721 ndr_print_uint32(ndr, "password_size", r->in.password_size);
1724 if (flags & NDR_OUT) {
1725 ndr_print_struct(ndr, "out", "svcctl_CreateServiceW");
1727 ndr_print_ptr(ndr, "TagId", r->out.TagId);
1730 ndr_print_uint32(ndr, "TagId", *r->out.TagId);
1733 ndr_print_ptr(ndr, "handle", r->out.handle);
1735 ndr_print_policy_handle(ndr, "handle", r->out.handle);
1737 ndr_print_WERROR(ndr, "result", r->out.result);
1743 static enum ndr_err_code ndr_push_svcctl_EnumDependentServicesW(struct ndr_push *ndr, int flags, const struct svcctl_EnumDependentServicesW *r)
1745 if (flags & NDR_IN) {
1746 if (r->in.service == NULL) {
1747 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
1749 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.service));
1750 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.state));
1751 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.buf_size));
1753 if (flags & NDR_OUT) {
1754 if (r->out.service_status == NULL) {
1755 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
1757 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.buf_size));
1758 NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->out.service_status, r->in.buf_size));
1759 if (r->out.bytes_needed == NULL) {
1760 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
1762 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.bytes_needed));
1763 if (r->out.services_returned == NULL) {
1764 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
1766 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.services_returned));
1767 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
1769 return NDR_ERR_SUCCESS;
1772 static enum ndr_err_code ndr_pull_svcctl_EnumDependentServicesW(struct ndr_pull *ndr, int flags, struct svcctl_EnumDependentServicesW *r)
1774 TALLOC_CTX *_mem_save_service_0;
1775 TALLOC_CTX *_mem_save_bytes_needed_0;
1776 TALLOC_CTX *_mem_save_services_returned_0;
1777 if (flags & NDR_IN) {
1778 ZERO_STRUCT(r->out);
1780 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
1781 NDR_PULL_ALLOC(ndr, r->in.service);
1783 _mem_save_service_0 = NDR_PULL_GET_MEM_CTX(ndr);
1784 NDR_PULL_SET_MEM_CTX(ndr, r->in.service, LIBNDR_FLAG_REF_ALLOC);
1785 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.service));
1786 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_service_0, LIBNDR_FLAG_REF_ALLOC);
1787 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.state));
1788 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.buf_size));
1789 if (r->in.buf_size < 0 || r->in.buf_size > 0x40000) {
1790 return ndr_pull_error(ndr, NDR_ERR_RANGE, "value out of range");
1792 NDR_PULL_ALLOC_N(ndr, r->out.service_status, r->in.buf_size);
1793 memset(r->out.service_status, 0, (r->in.buf_size) * sizeof(*r->out.service_status));
1794 NDR_PULL_ALLOC(ndr, r->out.bytes_needed);
1795 ZERO_STRUCTP(r->out.bytes_needed);
1796 NDR_PULL_ALLOC(ndr, r->out.services_returned);
1797 ZERO_STRUCTP(r->out.services_returned);
1799 if (flags & NDR_OUT) {
1800 NDR_CHECK(ndr_pull_array_size(ndr, &r->out.service_status));
1801 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
1802 NDR_PULL_ALLOC_N(ndr, r->out.service_status, ndr_get_array_size(ndr, &r->out.service_status));
1804 NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->out.service_status, ndr_get_array_size(ndr, &r->out.service_status)));
1805 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
1806 NDR_PULL_ALLOC(ndr, r->out.bytes_needed);
1808 _mem_save_bytes_needed_0 = NDR_PULL_GET_MEM_CTX(ndr);
1809 NDR_PULL_SET_MEM_CTX(ndr, r->out.bytes_needed, LIBNDR_FLAG_REF_ALLOC);
1810 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.bytes_needed));
1811 if (*r->out.bytes_needed < 0 || *r->out.bytes_needed > 0x40000) {
1812 return ndr_pull_error(ndr, NDR_ERR_RANGE, "value out of range");
1814 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_bytes_needed_0, LIBNDR_FLAG_REF_ALLOC);
1815 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
1816 NDR_PULL_ALLOC(ndr, r->out.services_returned);
1818 _mem_save_services_returned_0 = NDR_PULL_GET_MEM_CTX(ndr);
1819 NDR_PULL_SET_MEM_CTX(ndr, r->out.services_returned, LIBNDR_FLAG_REF_ALLOC);
1820 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.services_returned));
1821 if (*r->out.services_returned < 0 || *r->out.services_returned > 0x40000) {
1822 return ndr_pull_error(ndr, NDR_ERR_RANGE, "value out of range");
1824 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_services_returned_0, LIBNDR_FLAG_REF_ALLOC);
1825 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
1826 if (r->out.service_status) {
1827 NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->out.service_status, r->in.buf_size));
1830 return NDR_ERR_SUCCESS;
1833 _PUBLIC_ void ndr_print_svcctl_EnumDependentServicesW(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_EnumDependentServicesW *r)
1835 ndr_print_struct(ndr, name, "svcctl_EnumDependentServicesW");
1837 if (flags & NDR_SET_VALUES) {
1838 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
1840 if (flags & NDR_IN) {
1841 ndr_print_struct(ndr, "in", "svcctl_EnumDependentServicesW");
1843 ndr_print_ptr(ndr, "service", r->in.service);
1845 ndr_print_policy_handle(ndr, "service", r->in.service);
1847 ndr_print_uint32(ndr, "state", r->in.state);
1848 ndr_print_uint32(ndr, "buf_size", r->in.buf_size);
1851 if (flags & NDR_OUT) {
1852 ndr_print_struct(ndr, "out", "svcctl_EnumDependentServicesW");
1854 ndr_print_ptr(ndr, "service_status", r->out.service_status);
1856 ndr_print_array_uint8(ndr, "service_status", r->out.service_status, r->in.buf_size);
1858 ndr_print_ptr(ndr, "bytes_needed", r->out.bytes_needed);
1860 ndr_print_uint32(ndr, "bytes_needed", *r->out.bytes_needed);
1862 ndr_print_ptr(ndr, "services_returned", r->out.services_returned);
1864 ndr_print_uint32(ndr, "services_returned", *r->out.services_returned);
1866 ndr_print_WERROR(ndr, "result", r->out.result);
1872 static enum ndr_err_code ndr_push_svcctl_EnumServicesStatusW(struct ndr_push *ndr, int flags, const struct svcctl_EnumServicesStatusW *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.type));
1880 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.state));
1881 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.buf_size));
1882 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.resume_handle));
1883 if (r->in.resume_handle) {
1884 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->in.resume_handle));
1887 if (flags & NDR_OUT) {
1888 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.buf_size));
1889 NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->out.service, r->in.buf_size));
1890 if (r->out.bytes_needed == NULL) {
1891 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
1893 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.bytes_needed));
1894 if (r->out.services_returned == NULL) {
1895 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
1897 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.services_returned));
1898 NDR_CHECK(ndr_push_unique_ptr(ndr, r->out.resume_handle));
1899 if (r->out.resume_handle) {
1900 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.resume_handle));
1902 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
1904 return NDR_ERR_SUCCESS;
1907 static enum ndr_err_code ndr_pull_svcctl_EnumServicesStatusW(struct ndr_pull *ndr, int flags, struct svcctl_EnumServicesStatusW *r)
1909 uint32_t _ptr_resume_handle;
1910 TALLOC_CTX *_mem_save_handle_0;
1911 TALLOC_CTX *_mem_save_bytes_needed_0;
1912 TALLOC_CTX *_mem_save_services_returned_0;
1913 TALLOC_CTX *_mem_save_resume_handle_0;
1914 if (flags & NDR_IN) {
1915 ZERO_STRUCT(r->out);
1917 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
1918 NDR_PULL_ALLOC(ndr, r->in.handle);
1920 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
1921 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
1922 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
1923 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
1924 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.type));
1925 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.state));
1926 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.buf_size));
1927 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_resume_handle));
1928 if (_ptr_resume_handle) {
1929 NDR_PULL_ALLOC(ndr, r->in.resume_handle);
1931 r->in.resume_handle = NULL;
1933 if (r->in.resume_handle) {
1934 _mem_save_resume_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
1935 NDR_PULL_SET_MEM_CTX(ndr, r->in.resume_handle, 0);
1936 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->in.resume_handle));
1937 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_resume_handle_0, 0);
1939 NDR_PULL_ALLOC(ndr, r->out.bytes_needed);
1940 ZERO_STRUCTP(r->out.bytes_needed);
1941 NDR_PULL_ALLOC(ndr, r->out.services_returned);
1942 ZERO_STRUCTP(r->out.services_returned);
1944 if (flags & NDR_OUT) {
1945 NDR_CHECK(ndr_pull_array_size(ndr, &r->out.service));
1946 NDR_PULL_ALLOC_N(ndr, r->out.service, ndr_get_array_size(ndr, &r->out.service));
1947 NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->out.service, ndr_get_array_size(ndr, &r->out.service)));
1948 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
1949 NDR_PULL_ALLOC(ndr, r->out.bytes_needed);
1951 _mem_save_bytes_needed_0 = NDR_PULL_GET_MEM_CTX(ndr);
1952 NDR_PULL_SET_MEM_CTX(ndr, r->out.bytes_needed, LIBNDR_FLAG_REF_ALLOC);
1953 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.bytes_needed));
1954 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_bytes_needed_0, LIBNDR_FLAG_REF_ALLOC);
1955 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
1956 NDR_PULL_ALLOC(ndr, r->out.services_returned);
1958 _mem_save_services_returned_0 = NDR_PULL_GET_MEM_CTX(ndr);
1959 NDR_PULL_SET_MEM_CTX(ndr, r->out.services_returned, LIBNDR_FLAG_REF_ALLOC);
1960 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.services_returned));
1961 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_services_returned_0, LIBNDR_FLAG_REF_ALLOC);
1962 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_resume_handle));
1963 if (_ptr_resume_handle) {
1964 NDR_PULL_ALLOC(ndr, r->out.resume_handle);
1966 r->out.resume_handle = NULL;
1968 if (r->out.resume_handle) {
1969 _mem_save_resume_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
1970 NDR_PULL_SET_MEM_CTX(ndr, r->out.resume_handle, 0);
1971 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.resume_handle));
1972 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_resume_handle_0, 0);
1974 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
1975 if (r->out.service) {
1976 NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->out.service, r->in.buf_size));
1979 return NDR_ERR_SUCCESS;
1982 _PUBLIC_ void ndr_print_svcctl_EnumServicesStatusW(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_EnumServicesStatusW *r)
1984 ndr_print_struct(ndr, name, "svcctl_EnumServicesStatusW");
1986 if (flags & NDR_SET_VALUES) {
1987 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
1989 if (flags & NDR_IN) {
1990 ndr_print_struct(ndr, "in", "svcctl_EnumServicesStatusW");
1992 ndr_print_ptr(ndr, "handle", r->in.handle);
1994 ndr_print_policy_handle(ndr, "handle", r->in.handle);
1996 ndr_print_uint32(ndr, "type", r->in.type);
1997 ndr_print_uint32(ndr, "state", r->in.state);
1998 ndr_print_uint32(ndr, "buf_size", r->in.buf_size);
1999 ndr_print_ptr(ndr, "resume_handle", r->in.resume_handle);
2001 if (r->in.resume_handle) {
2002 ndr_print_uint32(ndr, "resume_handle", *r->in.resume_handle);
2007 if (flags & NDR_OUT) {
2008 ndr_print_struct(ndr, "out", "svcctl_EnumServicesStatusW");
2010 ndr_print_array_uint8(ndr, "service", r->out.service, r->in.buf_size);
2011 ndr_print_ptr(ndr, "bytes_needed", r->out.bytes_needed);
2013 ndr_print_uint32(ndr, "bytes_needed", *r->out.bytes_needed);
2015 ndr_print_ptr(ndr, "services_returned", r->out.services_returned);
2017 ndr_print_uint32(ndr, "services_returned", *r->out.services_returned);
2019 ndr_print_ptr(ndr, "resume_handle", r->out.resume_handle);
2021 if (r->out.resume_handle) {
2022 ndr_print_uint32(ndr, "resume_handle", *r->out.resume_handle);
2025 ndr_print_WERROR(ndr, "result", r->out.result);
2031 static enum ndr_err_code ndr_push_svcctl_OpenSCManagerW(struct ndr_push *ndr, int flags, const struct svcctl_OpenSCManagerW *r)
2033 if (flags & NDR_IN) {
2034 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.MachineName));
2035 if (r->in.MachineName) {
2036 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.MachineName, CH_UTF16)));
2037 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
2038 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.MachineName, CH_UTF16)));
2039 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.MachineName, ndr_charset_length(r->in.MachineName, CH_UTF16), sizeof(uint16_t), CH_UTF16));
2041 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.DatabaseName));
2042 if (r->in.DatabaseName) {
2043 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.DatabaseName, CH_UTF16)));
2044 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
2045 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.DatabaseName, CH_UTF16)));
2046 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.DatabaseName, ndr_charset_length(r->in.DatabaseName, CH_UTF16), sizeof(uint16_t), CH_UTF16));
2048 NDR_CHECK(ndr_push_svcctl_MgrAccessMask(ndr, NDR_SCALARS, r->in.access_mask));
2050 if (flags & NDR_OUT) {
2051 if (r->out.handle == NULL) {
2052 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
2054 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->out.handle));
2055 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
2057 return NDR_ERR_SUCCESS;
2060 static enum ndr_err_code ndr_pull_svcctl_OpenSCManagerW(struct ndr_pull *ndr, int flags, struct svcctl_OpenSCManagerW *r)
2062 uint32_t _ptr_MachineName;
2063 uint32_t _ptr_DatabaseName;
2064 TALLOC_CTX *_mem_save_MachineName_0;
2065 TALLOC_CTX *_mem_save_DatabaseName_0;
2066 TALLOC_CTX *_mem_save_handle_0;
2067 if (flags & NDR_IN) {
2068 ZERO_STRUCT(r->out);
2070 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_MachineName));
2071 if (_ptr_MachineName) {
2072 NDR_PULL_ALLOC(ndr, r->in.MachineName);
2074 r->in.MachineName = NULL;
2076 if (r->in.MachineName) {
2077 _mem_save_MachineName_0 = NDR_PULL_GET_MEM_CTX(ndr);
2078 NDR_PULL_SET_MEM_CTX(ndr, r->in.MachineName, 0);
2079 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.MachineName));
2080 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.MachineName));
2081 if (ndr_get_array_length(ndr, &r->in.MachineName) > ndr_get_array_size(ndr, &r->in.MachineName)) {
2082 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));
2084 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.MachineName), sizeof(uint16_t)));
2085 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.MachineName, ndr_get_array_length(ndr, &r->in.MachineName), sizeof(uint16_t), CH_UTF16));
2086 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_MachineName_0, 0);
2088 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_DatabaseName));
2089 if (_ptr_DatabaseName) {
2090 NDR_PULL_ALLOC(ndr, r->in.DatabaseName);
2092 r->in.DatabaseName = NULL;
2094 if (r->in.DatabaseName) {
2095 _mem_save_DatabaseName_0 = NDR_PULL_GET_MEM_CTX(ndr);
2096 NDR_PULL_SET_MEM_CTX(ndr, r->in.DatabaseName, 0);
2097 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.DatabaseName));
2098 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.DatabaseName));
2099 if (ndr_get_array_length(ndr, &r->in.DatabaseName) > ndr_get_array_size(ndr, &r->in.DatabaseName)) {
2100 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));
2102 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.DatabaseName), sizeof(uint16_t)));
2103 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.DatabaseName, ndr_get_array_length(ndr, &r->in.DatabaseName), sizeof(uint16_t), CH_UTF16));
2104 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_DatabaseName_0, 0);
2106 NDR_CHECK(ndr_pull_svcctl_MgrAccessMask(ndr, NDR_SCALARS, &r->in.access_mask));
2107 NDR_PULL_ALLOC(ndr, r->out.handle);
2108 ZERO_STRUCTP(r->out.handle);
2110 if (flags & NDR_OUT) {
2111 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
2112 NDR_PULL_ALLOC(ndr, r->out.handle);
2114 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
2115 NDR_PULL_SET_MEM_CTX(ndr, r->out.handle, LIBNDR_FLAG_REF_ALLOC);
2116 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->out.handle));
2117 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
2118 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
2120 return NDR_ERR_SUCCESS;
2123 _PUBLIC_ void ndr_print_svcctl_OpenSCManagerW(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_OpenSCManagerW *r)
2125 ndr_print_struct(ndr, name, "svcctl_OpenSCManagerW");
2127 if (flags & NDR_SET_VALUES) {
2128 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
2130 if (flags & NDR_IN) {
2131 ndr_print_struct(ndr, "in", "svcctl_OpenSCManagerW");
2133 ndr_print_ptr(ndr, "MachineName", r->in.MachineName);
2135 if (r->in.MachineName) {
2136 ndr_print_string(ndr, "MachineName", r->in.MachineName);
2139 ndr_print_ptr(ndr, "DatabaseName", r->in.DatabaseName);
2141 if (r->in.DatabaseName) {
2142 ndr_print_string(ndr, "DatabaseName", r->in.DatabaseName);
2145 ndr_print_svcctl_MgrAccessMask(ndr, "access_mask", r->in.access_mask);
2148 if (flags & NDR_OUT) {
2149 ndr_print_struct(ndr, "out", "svcctl_OpenSCManagerW");
2151 ndr_print_ptr(ndr, "handle", r->out.handle);
2153 ndr_print_policy_handle(ndr, "handle", r->out.handle);
2155 ndr_print_WERROR(ndr, "result", r->out.result);
2161 static enum ndr_err_code ndr_push_svcctl_OpenServiceW(struct ndr_push *ndr, int flags, const struct svcctl_OpenServiceW *r)
2163 if (flags & NDR_IN) {
2164 if (r->in.scmanager_handle == NULL) {
2165 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
2167 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.scmanager_handle));
2168 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.ServiceName, CH_UTF16)));
2169 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
2170 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.ServiceName, CH_UTF16)));
2171 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.ServiceName, ndr_charset_length(r->in.ServiceName, CH_UTF16), sizeof(uint16_t), CH_UTF16));
2172 NDR_CHECK(ndr_push_svcctl_ServiceAccessMask(ndr, NDR_SCALARS, r->in.access_mask));
2174 if (flags & NDR_OUT) {
2175 if (r->out.handle == NULL) {
2176 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
2178 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->out.handle));
2179 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
2181 return NDR_ERR_SUCCESS;
2184 static enum ndr_err_code ndr_pull_svcctl_OpenServiceW(struct ndr_pull *ndr, int flags, struct svcctl_OpenServiceW *r)
2186 TALLOC_CTX *_mem_save_scmanager_handle_0;
2187 TALLOC_CTX *_mem_save_handle_0;
2188 if (flags & NDR_IN) {
2189 ZERO_STRUCT(r->out);
2191 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
2192 NDR_PULL_ALLOC(ndr, r->in.scmanager_handle);
2194 _mem_save_scmanager_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
2195 NDR_PULL_SET_MEM_CTX(ndr, r->in.scmanager_handle, LIBNDR_FLAG_REF_ALLOC);
2196 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.scmanager_handle));
2197 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_scmanager_handle_0, LIBNDR_FLAG_REF_ALLOC);
2198 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.ServiceName));
2199 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.ServiceName));
2200 if (ndr_get_array_length(ndr, &r->in.ServiceName) > ndr_get_array_size(ndr, &r->in.ServiceName)) {
2201 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));
2203 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.ServiceName), sizeof(uint16_t)));
2204 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.ServiceName, ndr_get_array_length(ndr, &r->in.ServiceName), sizeof(uint16_t), CH_UTF16));
2205 NDR_CHECK(ndr_pull_svcctl_ServiceAccessMask(ndr, NDR_SCALARS, &r->in.access_mask));
2206 NDR_PULL_ALLOC(ndr, r->out.handle);
2207 ZERO_STRUCTP(r->out.handle);
2209 if (flags & NDR_OUT) {
2210 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
2211 NDR_PULL_ALLOC(ndr, r->out.handle);
2213 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
2214 NDR_PULL_SET_MEM_CTX(ndr, r->out.handle, LIBNDR_FLAG_REF_ALLOC);
2215 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->out.handle));
2216 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
2217 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
2219 return NDR_ERR_SUCCESS;
2222 _PUBLIC_ void ndr_print_svcctl_OpenServiceW(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_OpenServiceW *r)
2224 ndr_print_struct(ndr, name, "svcctl_OpenServiceW");
2226 if (flags & NDR_SET_VALUES) {
2227 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
2229 if (flags & NDR_IN) {
2230 ndr_print_struct(ndr, "in", "svcctl_OpenServiceW");
2232 ndr_print_ptr(ndr, "scmanager_handle", r->in.scmanager_handle);
2234 ndr_print_policy_handle(ndr, "scmanager_handle", r->in.scmanager_handle);
2236 ndr_print_string(ndr, "ServiceName", r->in.ServiceName);
2237 ndr_print_svcctl_ServiceAccessMask(ndr, "access_mask", r->in.access_mask);
2240 if (flags & NDR_OUT) {
2241 ndr_print_struct(ndr, "out", "svcctl_OpenServiceW");
2243 ndr_print_ptr(ndr, "handle", r->out.handle);
2245 ndr_print_policy_handle(ndr, "handle", r->out.handle);
2247 ndr_print_WERROR(ndr, "result", r->out.result);
2253 static enum ndr_err_code ndr_push_svcctl_QueryServiceConfigW(struct ndr_push *ndr, int flags, const struct svcctl_QueryServiceConfigW *r)
2255 if (flags & NDR_IN) {
2256 if (r->in.handle == NULL) {
2257 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
2259 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
2260 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.buf_size));
2262 if (flags & NDR_OUT) {
2263 NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->out.query, r->in.buf_size));
2264 if (r->out.bytes_needed == NULL) {
2265 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
2267 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.bytes_needed));
2268 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
2270 return NDR_ERR_SUCCESS;
2273 static enum ndr_err_code ndr_pull_svcctl_QueryServiceConfigW(struct ndr_pull *ndr, int flags, struct svcctl_QueryServiceConfigW *r)
2275 TALLOC_CTX *_mem_save_handle_0;
2276 TALLOC_CTX *_mem_save_bytes_needed_0;
2277 if (flags & NDR_IN) {
2278 ZERO_STRUCT(r->out);
2280 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
2281 NDR_PULL_ALLOC(ndr, r->in.handle);
2283 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
2284 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
2285 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
2286 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
2287 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.buf_size));
2288 NDR_PULL_ALLOC(ndr, r->out.bytes_needed);
2289 ZERO_STRUCTP(r->out.bytes_needed);
2291 if (flags & NDR_OUT) {
2292 NDR_PULL_ALLOC_N(ndr, r->out.query, r->in.buf_size);
2293 NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->out.query, r->in.buf_size));
2294 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
2295 NDR_PULL_ALLOC(ndr, r->out.bytes_needed);
2297 _mem_save_bytes_needed_0 = NDR_PULL_GET_MEM_CTX(ndr);
2298 NDR_PULL_SET_MEM_CTX(ndr, r->out.bytes_needed, LIBNDR_FLAG_REF_ALLOC);
2299 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.bytes_needed));
2300 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_bytes_needed_0, LIBNDR_FLAG_REF_ALLOC);
2301 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
2303 return NDR_ERR_SUCCESS;
2306 _PUBLIC_ void ndr_print_svcctl_QueryServiceConfigW(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_QueryServiceConfigW *r)
2308 ndr_print_struct(ndr, name, "svcctl_QueryServiceConfigW");
2310 if (flags & NDR_SET_VALUES) {
2311 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
2313 if (flags & NDR_IN) {
2314 ndr_print_struct(ndr, "in", "svcctl_QueryServiceConfigW");
2316 ndr_print_ptr(ndr, "handle", r->in.handle);
2318 ndr_print_policy_handle(ndr, "handle", r->in.handle);
2320 ndr_print_uint32(ndr, "buf_size", r->in.buf_size);
2323 if (flags & NDR_OUT) {
2324 ndr_print_struct(ndr, "out", "svcctl_QueryServiceConfigW");
2326 ndr_print_array_uint8(ndr, "query", r->out.query, r->in.buf_size);
2327 ndr_print_ptr(ndr, "bytes_needed", r->out.bytes_needed);
2329 ndr_print_uint32(ndr, "bytes_needed", *r->out.bytes_needed);
2331 ndr_print_WERROR(ndr, "result", r->out.result);
2337 static enum ndr_err_code ndr_push_svcctl_QueryServiceLockStatusW(struct ndr_push *ndr, int flags, const struct svcctl_QueryServiceLockStatusW *r)
2339 if (flags & NDR_IN) {
2340 if (r->in.handle == NULL) {
2341 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
2343 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
2344 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.buf_size));
2346 if (flags & NDR_OUT) {
2347 if (r->out.lock_status == NULL) {
2348 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
2350 NDR_CHECK(ndr_push_SERVICE_LOCK_STATUS(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.lock_status));
2351 if (r->out.required_buf_size == NULL) {
2352 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
2354 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.required_buf_size));
2355 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
2357 return NDR_ERR_SUCCESS;
2360 static enum ndr_err_code ndr_pull_svcctl_QueryServiceLockStatusW(struct ndr_pull *ndr, int flags, struct svcctl_QueryServiceLockStatusW *r)
2362 TALLOC_CTX *_mem_save_handle_0;
2363 TALLOC_CTX *_mem_save_lock_status_0;
2364 TALLOC_CTX *_mem_save_required_buf_size_0;
2365 if (flags & NDR_IN) {
2366 ZERO_STRUCT(r->out);
2368 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
2369 NDR_PULL_ALLOC(ndr, r->in.handle);
2371 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
2372 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
2373 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
2374 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
2375 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.buf_size));
2376 NDR_PULL_ALLOC(ndr, r->out.lock_status);
2377 ZERO_STRUCTP(r->out.lock_status);
2378 NDR_PULL_ALLOC(ndr, r->out.required_buf_size);
2379 ZERO_STRUCTP(r->out.required_buf_size);
2381 if (flags & NDR_OUT) {
2382 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
2383 NDR_PULL_ALLOC(ndr, r->out.lock_status);
2385 _mem_save_lock_status_0 = NDR_PULL_GET_MEM_CTX(ndr);
2386 NDR_PULL_SET_MEM_CTX(ndr, r->out.lock_status, LIBNDR_FLAG_REF_ALLOC);
2387 NDR_CHECK(ndr_pull_SERVICE_LOCK_STATUS(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.lock_status));
2388 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_lock_status_0, LIBNDR_FLAG_REF_ALLOC);
2389 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
2390 NDR_PULL_ALLOC(ndr, r->out.required_buf_size);
2392 _mem_save_required_buf_size_0 = NDR_PULL_GET_MEM_CTX(ndr);
2393 NDR_PULL_SET_MEM_CTX(ndr, r->out.required_buf_size, LIBNDR_FLAG_REF_ALLOC);
2394 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.required_buf_size));
2395 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_required_buf_size_0, LIBNDR_FLAG_REF_ALLOC);
2396 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
2398 return NDR_ERR_SUCCESS;
2401 _PUBLIC_ void ndr_print_svcctl_QueryServiceLockStatusW(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_QueryServiceLockStatusW *r)
2403 ndr_print_struct(ndr, name, "svcctl_QueryServiceLockStatusW");
2405 if (flags & NDR_SET_VALUES) {
2406 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
2408 if (flags & NDR_IN) {
2409 ndr_print_struct(ndr, "in", "svcctl_QueryServiceLockStatusW");
2411 ndr_print_ptr(ndr, "handle", r->in.handle);
2413 ndr_print_policy_handle(ndr, "handle", r->in.handle);
2415 ndr_print_uint32(ndr, "buf_size", r->in.buf_size);
2418 if (flags & NDR_OUT) {
2419 ndr_print_struct(ndr, "out", "svcctl_QueryServiceLockStatusW");
2421 ndr_print_ptr(ndr, "lock_status", r->out.lock_status);
2423 ndr_print_SERVICE_LOCK_STATUS(ndr, "lock_status", r->out.lock_status);
2425 ndr_print_ptr(ndr, "required_buf_size", r->out.required_buf_size);
2427 ndr_print_uint32(ndr, "required_buf_size", *r->out.required_buf_size);
2429 ndr_print_WERROR(ndr, "result", r->out.result);
2435 static enum ndr_err_code ndr_push_svcctl_StartServiceW(struct ndr_push *ndr, int flags, const struct svcctl_StartServiceW *r)
2437 if (flags & NDR_IN) {
2438 if (r->in.handle == NULL) {
2439 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
2441 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
2442 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.NumArgs));
2443 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.Arguments));
2444 if (r->in.Arguments) {
2445 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.Arguments, CH_UTF16)));
2446 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
2447 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.Arguments, CH_UTF16)));
2448 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.Arguments, ndr_charset_length(r->in.Arguments, CH_UTF16), sizeof(uint16_t), CH_UTF16));
2451 if (flags & NDR_OUT) {
2452 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
2454 return NDR_ERR_SUCCESS;
2457 static enum ndr_err_code ndr_pull_svcctl_StartServiceW(struct ndr_pull *ndr, int flags, struct svcctl_StartServiceW *r)
2459 uint32_t _ptr_Arguments;
2460 TALLOC_CTX *_mem_save_handle_0;
2461 TALLOC_CTX *_mem_save_Arguments_0;
2462 if (flags & NDR_IN) {
2463 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
2464 NDR_PULL_ALLOC(ndr, r->in.handle);
2466 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
2467 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
2468 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
2469 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
2470 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.NumArgs));
2471 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_Arguments));
2472 if (_ptr_Arguments) {
2473 NDR_PULL_ALLOC(ndr, r->in.Arguments);
2475 r->in.Arguments = NULL;
2477 if (r->in.Arguments) {
2478 _mem_save_Arguments_0 = NDR_PULL_GET_MEM_CTX(ndr);
2479 NDR_PULL_SET_MEM_CTX(ndr, r->in.Arguments, 0);
2480 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.Arguments));
2481 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.Arguments));
2482 if (ndr_get_array_length(ndr, &r->in.Arguments) > ndr_get_array_size(ndr, &r->in.Arguments)) {
2483 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));
2485 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.Arguments), sizeof(uint16_t)));
2486 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.Arguments, ndr_get_array_length(ndr, &r->in.Arguments), sizeof(uint16_t), CH_UTF16));
2487 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_Arguments_0, 0);
2490 if (flags & NDR_OUT) {
2491 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
2493 return NDR_ERR_SUCCESS;
2496 _PUBLIC_ void ndr_print_svcctl_StartServiceW(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_StartServiceW *r)
2498 ndr_print_struct(ndr, name, "svcctl_StartServiceW");
2500 if (flags & NDR_SET_VALUES) {
2501 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
2503 if (flags & NDR_IN) {
2504 ndr_print_struct(ndr, "in", "svcctl_StartServiceW");
2506 ndr_print_ptr(ndr, "handle", r->in.handle);
2508 ndr_print_policy_handle(ndr, "handle", r->in.handle);
2510 ndr_print_uint32(ndr, "NumArgs", r->in.NumArgs);
2511 ndr_print_ptr(ndr, "Arguments", r->in.Arguments);
2513 if (r->in.Arguments) {
2514 ndr_print_string(ndr, "Arguments", r->in.Arguments);
2519 if (flags & NDR_OUT) {
2520 ndr_print_struct(ndr, "out", "svcctl_StartServiceW");
2522 ndr_print_WERROR(ndr, "result", r->out.result);
2528 static enum ndr_err_code ndr_push_svcctl_GetServiceDisplayNameW(struct ndr_push *ndr, int flags, const struct svcctl_GetServiceDisplayNameW *r)
2530 if (flags & NDR_IN) {
2531 if (r->in.handle == NULL) {
2532 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
2534 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
2535 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.service_name));
2536 if (r->in.service_name) {
2537 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.service_name, CH_UTF16)));
2538 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
2539 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.service_name, CH_UTF16)));
2540 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));
2542 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.display_name_length));
2543 if (r->in.display_name_length) {
2544 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->in.display_name_length));
2547 if (flags & NDR_OUT) {
2548 if (r->out.display_name == NULL) {
2549 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
2551 NDR_CHECK(ndr_push_unique_ptr(ndr, *r->out.display_name));
2552 if (*r->out.display_name) {
2553 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(*r->out.display_name, CH_UTF16)));
2554 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
2555 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(*r->out.display_name, CH_UTF16)));
2556 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));
2558 NDR_CHECK(ndr_push_unique_ptr(ndr, r->out.display_name_length));
2559 if (r->out.display_name_length) {
2560 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.display_name_length));
2562 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
2564 return NDR_ERR_SUCCESS;
2567 static enum ndr_err_code ndr_pull_svcctl_GetServiceDisplayNameW(struct ndr_pull *ndr, int flags, struct svcctl_GetServiceDisplayNameW *r)
2569 uint32_t _ptr_service_name;
2570 uint32_t _ptr_display_name;
2571 uint32_t _ptr_display_name_length;
2572 TALLOC_CTX *_mem_save_handle_0;
2573 TALLOC_CTX *_mem_save_service_name_0;
2574 TALLOC_CTX *_mem_save_display_name_0;
2575 TALLOC_CTX *_mem_save_display_name_1;
2576 TALLOC_CTX *_mem_save_display_name_length_0;
2577 if (flags & NDR_IN) {
2578 ZERO_STRUCT(r->out);
2580 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
2581 NDR_PULL_ALLOC(ndr, r->in.handle);
2583 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
2584 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
2585 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
2586 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
2587 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_service_name));
2588 if (_ptr_service_name) {
2589 NDR_PULL_ALLOC(ndr, r->in.service_name);
2591 r->in.service_name = NULL;
2593 if (r->in.service_name) {
2594 _mem_save_service_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
2595 NDR_PULL_SET_MEM_CTX(ndr, r->in.service_name, 0);
2596 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.service_name));
2597 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.service_name));
2598 if (ndr_get_array_length(ndr, &r->in.service_name) > ndr_get_array_size(ndr, &r->in.service_name)) {
2599 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));
2601 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.service_name), sizeof(uint16_t)));
2602 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));
2603 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_service_name_0, 0);
2605 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_display_name_length));
2606 if (_ptr_display_name_length) {
2607 NDR_PULL_ALLOC(ndr, r->in.display_name_length);
2609 r->in.display_name_length = NULL;
2611 if (r->in.display_name_length) {
2612 _mem_save_display_name_length_0 = NDR_PULL_GET_MEM_CTX(ndr);
2613 NDR_PULL_SET_MEM_CTX(ndr, r->in.display_name_length, 0);
2614 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->in.display_name_length));
2615 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_display_name_length_0, 0);
2617 NDR_PULL_ALLOC(ndr, r->out.display_name);
2618 ZERO_STRUCTP(r->out.display_name);
2620 if (flags & NDR_OUT) {
2621 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
2622 NDR_PULL_ALLOC(ndr, r->out.display_name);
2624 _mem_save_display_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
2625 NDR_PULL_SET_MEM_CTX(ndr, r->out.display_name, LIBNDR_FLAG_REF_ALLOC);
2626 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_display_name));
2627 if (_ptr_display_name) {
2628 NDR_PULL_ALLOC(ndr, *r->out.display_name);
2630 *r->out.display_name = NULL;
2632 if (*r->out.display_name) {
2633 _mem_save_display_name_1 = NDR_PULL_GET_MEM_CTX(ndr);
2634 NDR_PULL_SET_MEM_CTX(ndr, *r->out.display_name, 0);
2635 NDR_CHECK(ndr_pull_array_size(ndr, r->out.display_name));
2636 NDR_CHECK(ndr_pull_array_length(ndr, r->out.display_name));
2637 if (ndr_get_array_length(ndr, r->out.display_name) > ndr_get_array_size(ndr, r->out.display_name)) {
2638 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));
2640 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, r->out.display_name), sizeof(uint16_t)));
2641 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));
2642 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_display_name_1, 0);
2644 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_display_name_0, LIBNDR_FLAG_REF_ALLOC);
2645 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_display_name_length));
2646 if (_ptr_display_name_length) {
2647 NDR_PULL_ALLOC(ndr, r->out.display_name_length);
2649 r->out.display_name_length = NULL;
2651 if (r->out.display_name_length) {
2652 _mem_save_display_name_length_0 = NDR_PULL_GET_MEM_CTX(ndr);
2653 NDR_PULL_SET_MEM_CTX(ndr, r->out.display_name_length, 0);
2654 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.display_name_length));
2655 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_display_name_length_0, 0);
2657 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
2659 return NDR_ERR_SUCCESS;
2662 _PUBLIC_ void ndr_print_svcctl_GetServiceDisplayNameW(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_GetServiceDisplayNameW *r)
2664 ndr_print_struct(ndr, name, "svcctl_GetServiceDisplayNameW");
2666 if (flags & NDR_SET_VALUES) {
2667 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
2669 if (flags & NDR_IN) {
2670 ndr_print_struct(ndr, "in", "svcctl_GetServiceDisplayNameW");
2672 ndr_print_ptr(ndr, "handle", r->in.handle);
2674 ndr_print_policy_handle(ndr, "handle", r->in.handle);
2676 ndr_print_ptr(ndr, "service_name", r->in.service_name);
2678 if (r->in.service_name) {
2679 ndr_print_string(ndr, "service_name", r->in.service_name);
2682 ndr_print_ptr(ndr, "display_name_length", r->in.display_name_length);
2684 if (r->in.display_name_length) {
2685 ndr_print_uint32(ndr, "display_name_length", *r->in.display_name_length);
2690 if (flags & NDR_OUT) {
2691 ndr_print_struct(ndr, "out", "svcctl_GetServiceDisplayNameW");
2693 ndr_print_ptr(ndr, "display_name", r->out.display_name);
2695 ndr_print_ptr(ndr, "display_name", *r->out.display_name);
2697 if (*r->out.display_name) {
2698 ndr_print_string(ndr, "display_name", *r->out.display_name);
2702 ndr_print_ptr(ndr, "display_name_length", r->out.display_name_length);
2704 if (r->out.display_name_length) {
2705 ndr_print_uint32(ndr, "display_name_length", *r->out.display_name_length);
2708 ndr_print_WERROR(ndr, "result", r->out.result);
2714 static enum ndr_err_code ndr_push_svcctl_GetServiceKeyNameW(struct ndr_push *ndr, int flags, const struct svcctl_GetServiceKeyNameW *r)
2716 if (flags & NDR_IN) {
2717 if (r->in.handle == NULL) {
2718 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
2720 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
2721 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.service_name));
2722 if (r->in.service_name) {
2723 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.service_name, CH_UTF16)));
2724 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
2725 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.service_name, CH_UTF16)));
2726 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));
2728 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.display_name_length));
2729 if (r->in.display_name_length) {
2730 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->in.display_name_length));
2733 if (flags & NDR_OUT) {
2734 if (r->out.key_name == NULL) {
2735 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
2737 NDR_CHECK(ndr_push_unique_ptr(ndr, *r->out.key_name));
2738 if (*r->out.key_name) {
2739 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(*r->out.key_name, CH_UTF16)));
2740 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
2741 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(*r->out.key_name, CH_UTF16)));
2742 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));
2744 NDR_CHECK(ndr_push_unique_ptr(ndr, r->out.display_name_length));
2745 if (r->out.display_name_length) {
2746 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.display_name_length));
2748 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
2750 return NDR_ERR_SUCCESS;
2753 static enum ndr_err_code ndr_pull_svcctl_GetServiceKeyNameW(struct ndr_pull *ndr, int flags, struct svcctl_GetServiceKeyNameW *r)
2755 uint32_t _ptr_service_name;
2756 uint32_t _ptr_key_name;
2757 uint32_t _ptr_display_name_length;
2758 TALLOC_CTX *_mem_save_handle_0;
2759 TALLOC_CTX *_mem_save_service_name_0;
2760 TALLOC_CTX *_mem_save_key_name_0;
2761 TALLOC_CTX *_mem_save_key_name_1;
2762 TALLOC_CTX *_mem_save_display_name_length_0;
2763 if (flags & NDR_IN) {
2764 ZERO_STRUCT(r->out);
2766 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
2767 NDR_PULL_ALLOC(ndr, r->in.handle);
2769 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
2770 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
2771 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
2772 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
2773 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_service_name));
2774 if (_ptr_service_name) {
2775 NDR_PULL_ALLOC(ndr, r->in.service_name);
2777 r->in.service_name = NULL;
2779 if (r->in.service_name) {
2780 _mem_save_service_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
2781 NDR_PULL_SET_MEM_CTX(ndr, r->in.service_name, 0);
2782 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.service_name));
2783 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.service_name));
2784 if (ndr_get_array_length(ndr, &r->in.service_name) > ndr_get_array_size(ndr, &r->in.service_name)) {
2785 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));
2787 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.service_name), sizeof(uint16_t)));
2788 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));
2789 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_service_name_0, 0);
2791 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_display_name_length));
2792 if (_ptr_display_name_length) {
2793 NDR_PULL_ALLOC(ndr, r->in.display_name_length);
2795 r->in.display_name_length = NULL;
2797 if (r->in.display_name_length) {
2798 _mem_save_display_name_length_0 = NDR_PULL_GET_MEM_CTX(ndr);
2799 NDR_PULL_SET_MEM_CTX(ndr, r->in.display_name_length, 0);
2800 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->in.display_name_length));
2801 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_display_name_length_0, 0);
2803 NDR_PULL_ALLOC(ndr, r->out.key_name);
2804 ZERO_STRUCTP(r->out.key_name);
2806 if (flags & NDR_OUT) {
2807 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
2808 NDR_PULL_ALLOC(ndr, r->out.key_name);
2810 _mem_save_key_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
2811 NDR_PULL_SET_MEM_CTX(ndr, r->out.key_name, LIBNDR_FLAG_REF_ALLOC);
2812 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_key_name));
2813 if (_ptr_key_name) {
2814 NDR_PULL_ALLOC(ndr, *r->out.key_name);
2816 *r->out.key_name = NULL;
2818 if (*r->out.key_name) {
2819 _mem_save_key_name_1 = NDR_PULL_GET_MEM_CTX(ndr);
2820 NDR_PULL_SET_MEM_CTX(ndr, *r->out.key_name, 0);
2821 NDR_CHECK(ndr_pull_array_size(ndr, r->out.key_name));
2822 NDR_CHECK(ndr_pull_array_length(ndr, r->out.key_name));
2823 if (ndr_get_array_length(ndr, r->out.key_name) > ndr_get_array_size(ndr, r->out.key_name)) {
2824 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));
2826 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, r->out.key_name), sizeof(uint16_t)));
2827 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));
2828 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_key_name_1, 0);
2830 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_key_name_0, LIBNDR_FLAG_REF_ALLOC);
2831 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_display_name_length));
2832 if (_ptr_display_name_length) {
2833 NDR_PULL_ALLOC(ndr, r->out.display_name_length);
2835 r->out.display_name_length = NULL;
2837 if (r->out.display_name_length) {
2838 _mem_save_display_name_length_0 = NDR_PULL_GET_MEM_CTX(ndr);
2839 NDR_PULL_SET_MEM_CTX(ndr, r->out.display_name_length, 0);
2840 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.display_name_length));
2841 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_display_name_length_0, 0);
2843 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
2845 return NDR_ERR_SUCCESS;
2848 _PUBLIC_ void ndr_print_svcctl_GetServiceKeyNameW(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_GetServiceKeyNameW *r)
2850 ndr_print_struct(ndr, name, "svcctl_GetServiceKeyNameW");
2852 if (flags & NDR_SET_VALUES) {
2853 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
2855 if (flags & NDR_IN) {
2856 ndr_print_struct(ndr, "in", "svcctl_GetServiceKeyNameW");
2858 ndr_print_ptr(ndr, "handle", r->in.handle);
2860 ndr_print_policy_handle(ndr, "handle", r->in.handle);
2862 ndr_print_ptr(ndr, "service_name", r->in.service_name);
2864 if (r->in.service_name) {
2865 ndr_print_string(ndr, "service_name", r->in.service_name);
2868 ndr_print_ptr(ndr, "display_name_length", r->in.display_name_length);
2870 if (r->in.display_name_length) {
2871 ndr_print_uint32(ndr, "display_name_length", *r->in.display_name_length);
2876 if (flags & NDR_OUT) {
2877 ndr_print_struct(ndr, "out", "svcctl_GetServiceKeyNameW");
2879 ndr_print_ptr(ndr, "key_name", r->out.key_name);
2881 ndr_print_ptr(ndr, "key_name", *r->out.key_name);
2883 if (*r->out.key_name) {
2884 ndr_print_string(ndr, "key_name", *r->out.key_name);
2888 ndr_print_ptr(ndr, "display_name_length", r->out.display_name_length);
2890 if (r->out.display_name_length) {
2891 ndr_print_uint32(ndr, "display_name_length", *r->out.display_name_length);
2894 ndr_print_WERROR(ndr, "result", r->out.result);
2900 static enum ndr_err_code ndr_push_svcctl_SCSetServiceBitsA(struct ndr_push *ndr, int flags, const struct svcctl_SCSetServiceBitsA *r)
2902 if (flags & NDR_IN) {
2903 if (r->in.handle == NULL) {
2904 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
2906 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
2907 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.bits));
2908 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.bitson));
2909 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.immediate));
2911 if (flags & NDR_OUT) {
2912 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
2914 return NDR_ERR_SUCCESS;
2917 static enum ndr_err_code ndr_pull_svcctl_SCSetServiceBitsA(struct ndr_pull *ndr, int flags, struct svcctl_SCSetServiceBitsA *r)
2919 TALLOC_CTX *_mem_save_handle_0;
2920 if (flags & NDR_IN) {
2921 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
2922 NDR_PULL_ALLOC(ndr, r->in.handle);
2924 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
2925 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
2926 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
2927 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
2928 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.bits));
2929 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.bitson));
2930 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.immediate));
2932 if (flags & NDR_OUT) {
2933 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
2935 return NDR_ERR_SUCCESS;
2938 _PUBLIC_ void ndr_print_svcctl_SCSetServiceBitsA(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_SCSetServiceBitsA *r)
2940 ndr_print_struct(ndr, name, "svcctl_SCSetServiceBitsA");
2942 if (flags & NDR_SET_VALUES) {
2943 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
2945 if (flags & NDR_IN) {
2946 ndr_print_struct(ndr, "in", "svcctl_SCSetServiceBitsA");
2948 ndr_print_ptr(ndr, "handle", r->in.handle);
2950 ndr_print_policy_handle(ndr, "handle", r->in.handle);
2952 ndr_print_uint32(ndr, "bits", r->in.bits);
2953 ndr_print_uint32(ndr, "bitson", r->in.bitson);
2954 ndr_print_uint32(ndr, "immediate", r->in.immediate);
2957 if (flags & NDR_OUT) {
2958 ndr_print_struct(ndr, "out", "svcctl_SCSetServiceBitsA");
2960 ndr_print_WERROR(ndr, "result", r->out.result);
2966 static enum ndr_err_code ndr_push_svcctl_ChangeServiceConfigA(struct ndr_push *ndr, int flags, const struct svcctl_ChangeServiceConfigA *r)
2968 if (flags & NDR_IN) {
2969 if (r->in.handle == NULL) {
2970 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
2972 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
2973 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.type));
2974 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.start));
2975 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.error));
2976 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.binary_path));
2977 if (r->in.binary_path) {
2978 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.binary_path, CH_UTF16)));
2979 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
2980 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.binary_path, CH_UTF16)));
2981 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));
2983 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.load_order_group));
2984 if (r->in.load_order_group) {
2985 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.load_order_group, CH_UTF16)));
2986 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
2987 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.load_order_group, CH_UTF16)));
2988 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));
2990 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.dependencies));
2991 if (r->in.dependencies) {
2992 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.dependencies, CH_UTF16)));
2993 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
2994 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.dependencies, CH_UTF16)));
2995 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.dependencies, ndr_charset_length(r->in.dependencies, CH_UTF16), sizeof(uint16_t), CH_UTF16));
2997 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.service_start_name));
2998 if (r->in.service_start_name) {
2999 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.service_start_name, CH_UTF16)));
3000 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
3001 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.service_start_name, CH_UTF16)));
3002 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));
3004 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.password));
3005 if (r->in.password) {
3006 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.password, CH_UTF16)));
3007 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
3008 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.password, CH_UTF16)));
3009 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.password, ndr_charset_length(r->in.password, CH_UTF16), sizeof(uint16_t), CH_UTF16));
3011 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.display_name));
3012 if (r->in.display_name) {
3013 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.display_name, CH_UTF16)));
3014 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
3015 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.display_name, CH_UTF16)));
3016 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));
3019 if (flags & NDR_OUT) {
3020 if (r->out.tag_id == NULL) {
3021 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
3023 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.tag_id));
3024 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
3026 return NDR_ERR_SUCCESS;
3029 static enum ndr_err_code ndr_pull_svcctl_ChangeServiceConfigA(struct ndr_pull *ndr, int flags, struct svcctl_ChangeServiceConfigA *r)
3031 uint32_t _ptr_binary_path;
3032 uint32_t _ptr_load_order_group;
3033 uint32_t _ptr_dependencies;
3034 uint32_t _ptr_service_start_name;
3035 uint32_t _ptr_password;
3036 uint32_t _ptr_display_name;
3037 TALLOC_CTX *_mem_save_handle_0;
3038 TALLOC_CTX *_mem_save_binary_path_0;
3039 TALLOC_CTX *_mem_save_load_order_group_0;
3040 TALLOC_CTX *_mem_save_tag_id_0;
3041 TALLOC_CTX *_mem_save_dependencies_0;
3042 TALLOC_CTX *_mem_save_service_start_name_0;
3043 TALLOC_CTX *_mem_save_password_0;
3044 TALLOC_CTX *_mem_save_display_name_0;
3045 if (flags & NDR_IN) {
3046 ZERO_STRUCT(r->out);
3048 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
3049 NDR_PULL_ALLOC(ndr, r->in.handle);
3051 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
3052 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
3053 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
3054 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
3055 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.type));
3056 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.start));
3057 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.error));
3058 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_binary_path));
3059 if (_ptr_binary_path) {
3060 NDR_PULL_ALLOC(ndr, r->in.binary_path);
3062 r->in.binary_path = NULL;
3064 if (r->in.binary_path) {
3065 _mem_save_binary_path_0 = NDR_PULL_GET_MEM_CTX(ndr);
3066 NDR_PULL_SET_MEM_CTX(ndr, r->in.binary_path, 0);
3067 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.binary_path));
3068 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.binary_path));
3069 if (ndr_get_array_length(ndr, &r->in.binary_path) > ndr_get_array_size(ndr, &r->in.binary_path)) {
3070 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));
3072 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.binary_path), sizeof(uint16_t)));
3073 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));
3074 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_binary_path_0, 0);
3076 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_load_order_group));
3077 if (_ptr_load_order_group) {
3078 NDR_PULL_ALLOC(ndr, r->in.load_order_group);
3080 r->in.load_order_group = NULL;
3082 if (r->in.load_order_group) {
3083 _mem_save_load_order_group_0 = NDR_PULL_GET_MEM_CTX(ndr);
3084 NDR_PULL_SET_MEM_CTX(ndr, r->in.load_order_group, 0);
3085 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.load_order_group));
3086 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.load_order_group));
3087 if (ndr_get_array_length(ndr, &r->in.load_order_group) > ndr_get_array_size(ndr, &r->in.load_order_group)) {
3088 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));
3090 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.load_order_group), sizeof(uint16_t)));
3091 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));
3092 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_load_order_group_0, 0);
3094 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_dependencies));
3095 if (_ptr_dependencies) {
3096 NDR_PULL_ALLOC(ndr, r->in.dependencies);
3098 r->in.dependencies = NULL;
3100 if (r->in.dependencies) {
3101 _mem_save_dependencies_0 = NDR_PULL_GET_MEM_CTX(ndr);
3102 NDR_PULL_SET_MEM_CTX(ndr, r->in.dependencies, 0);
3103 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.dependencies));
3104 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.dependencies));
3105 if (ndr_get_array_length(ndr, &r->in.dependencies) > ndr_get_array_size(ndr, &r->in.dependencies)) {
3106 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));
3108 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.dependencies), sizeof(uint16_t)));
3109 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.dependencies, ndr_get_array_length(ndr, &r->in.dependencies), sizeof(uint16_t), CH_UTF16));
3110 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_dependencies_0, 0);
3112 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_service_start_name));
3113 if (_ptr_service_start_name) {
3114 NDR_PULL_ALLOC(ndr, r->in.service_start_name);
3116 r->in.service_start_name = NULL;
3118 if (r->in.service_start_name) {
3119 _mem_save_service_start_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
3120 NDR_PULL_SET_MEM_CTX(ndr, r->in.service_start_name, 0);
3121 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.service_start_name));
3122 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.service_start_name));
3123 if (ndr_get_array_length(ndr, &r->in.service_start_name) > ndr_get_array_size(ndr, &r->in.service_start_name)) {
3124 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));
3126 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.service_start_name), sizeof(uint16_t)));
3127 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));
3128 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_service_start_name_0, 0);
3130 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_password));
3131 if (_ptr_password) {
3132 NDR_PULL_ALLOC(ndr, r->in.password);
3134 r->in.password = NULL;
3136 if (r->in.password) {
3137 _mem_save_password_0 = NDR_PULL_GET_MEM_CTX(ndr);
3138 NDR_PULL_SET_MEM_CTX(ndr, r->in.password, 0);
3139 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.password));
3140 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.password));
3141 if (ndr_get_array_length(ndr, &r->in.password) > ndr_get_array_size(ndr, &r->in.password)) {
3142 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));
3144 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.password), sizeof(uint16_t)));
3145 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.password, ndr_get_array_length(ndr, &r->in.password), sizeof(uint16_t), CH_UTF16));
3146 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_password_0, 0);
3148 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_display_name));
3149 if (_ptr_display_name) {
3150 NDR_PULL_ALLOC(ndr, r->in.display_name);
3152 r->in.display_name = NULL;
3154 if (r->in.display_name) {
3155 _mem_save_display_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
3156 NDR_PULL_SET_MEM_CTX(ndr, r->in.display_name, 0);
3157 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.display_name));
3158 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.display_name));
3159 if (ndr_get_array_length(ndr, &r->in.display_name) > ndr_get_array_size(ndr, &r->in.display_name)) {
3160 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));
3162 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.display_name), sizeof(uint16_t)));
3163 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));
3164 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_display_name_0, 0);
3166 NDR_PULL_ALLOC(ndr, r->out.tag_id);
3167 ZERO_STRUCTP(r->out.tag_id);
3169 if (flags & NDR_OUT) {
3170 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
3171 NDR_PULL_ALLOC(ndr, r->out.tag_id);
3173 _mem_save_tag_id_0 = NDR_PULL_GET_MEM_CTX(ndr);
3174 NDR_PULL_SET_MEM_CTX(ndr, r->out.tag_id, LIBNDR_FLAG_REF_ALLOC);
3175 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.tag_id));
3176 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_tag_id_0, LIBNDR_FLAG_REF_ALLOC);
3177 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
3179 return NDR_ERR_SUCCESS;
3182 _PUBLIC_ void ndr_print_svcctl_ChangeServiceConfigA(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_ChangeServiceConfigA *r)
3184 ndr_print_struct(ndr, name, "svcctl_ChangeServiceConfigA");
3186 if (flags & NDR_SET_VALUES) {
3187 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
3189 if (flags & NDR_IN) {
3190 ndr_print_struct(ndr, "in", "svcctl_ChangeServiceConfigA");
3192 ndr_print_ptr(ndr, "handle", r->in.handle);
3194 ndr_print_policy_handle(ndr, "handle", r->in.handle);
3196 ndr_print_uint32(ndr, "type", r->in.type);
3197 ndr_print_uint32(ndr, "start", r->in.start);
3198 ndr_print_uint32(ndr, "error", r->in.error);
3199 ndr_print_ptr(ndr, "binary_path", r->in.binary_path);
3201 if (r->in.binary_path) {
3202 ndr_print_string(ndr, "binary_path", r->in.binary_path);
3205 ndr_print_ptr(ndr, "load_order_group", r->in.load_order_group);
3207 if (r->in.load_order_group) {
3208 ndr_print_string(ndr, "load_order_group", r->in.load_order_group);
3211 ndr_print_ptr(ndr, "dependencies", r->in.dependencies);
3213 if (r->in.dependencies) {
3214 ndr_print_string(ndr, "dependencies", r->in.dependencies);
3217 ndr_print_ptr(ndr, "service_start_name", r->in.service_start_name);
3219 if (r->in.service_start_name) {
3220 ndr_print_string(ndr, "service_start_name", r->in.service_start_name);
3223 ndr_print_ptr(ndr, "password", r->in.password);
3225 if (r->in.password) {
3226 ndr_print_string(ndr, "password", r->in.password);
3229 ndr_print_ptr(ndr, "display_name", r->in.display_name);
3231 if (r->in.display_name) {
3232 ndr_print_string(ndr, "display_name", r->in.display_name);
3237 if (flags & NDR_OUT) {
3238 ndr_print_struct(ndr, "out", "svcctl_ChangeServiceConfigA");
3240 ndr_print_ptr(ndr, "tag_id", r->out.tag_id);
3242 ndr_print_uint32(ndr, "tag_id", *r->out.tag_id);
3244 ndr_print_WERROR(ndr, "result", r->out.result);
3250 static enum ndr_err_code ndr_push_svcctl_CreateServiceA(struct ndr_push *ndr, int flags, const struct svcctl_CreateServiceA *r)
3252 if (flags & NDR_IN) {
3253 if (r->in.handle == NULL) {
3254 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
3256 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
3257 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.ServiceName));
3258 if (r->in.ServiceName) {
3259 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.ServiceName, CH_UTF16)));
3260 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
3261 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.ServiceName, CH_UTF16)));
3262 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.ServiceName, ndr_charset_length(r->in.ServiceName, CH_UTF16), sizeof(uint16_t), CH_UTF16));
3264 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.DisplayName));
3265 if (r->in.DisplayName) {
3266 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.DisplayName, CH_UTF16)));
3267 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
3268 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.DisplayName, CH_UTF16)));
3269 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.DisplayName, ndr_charset_length(r->in.DisplayName, CH_UTF16), sizeof(uint16_t), CH_UTF16));
3271 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.desired_access));
3272 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.type));
3273 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.start_type));
3274 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.error_control));
3275 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.binary_path));
3276 if (r->in.binary_path) {
3277 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.binary_path, CH_UTF16)));
3278 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
3279 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.binary_path, CH_UTF16)));
3280 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));
3282 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.LoadOrderGroupKey));
3283 if (r->in.LoadOrderGroupKey) {
3284 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.LoadOrderGroupKey, CH_UTF16)));
3285 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
3286 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.LoadOrderGroupKey, CH_UTF16)));
3287 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.LoadOrderGroupKey, ndr_charset_length(r->in.LoadOrderGroupKey, CH_UTF16), sizeof(uint16_t), CH_UTF16));
3289 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.dependencies));
3290 if (r->in.dependencies) {
3291 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.dependencies, CH_UTF16)));
3292 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
3293 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.dependencies, CH_UTF16)));
3294 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.dependencies, ndr_charset_length(r->in.dependencies, CH_UTF16), sizeof(uint16_t), CH_UTF16));
3296 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.service_start_name));
3297 if (r->in.service_start_name) {
3298 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.service_start_name, CH_UTF16)));
3299 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
3300 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.service_start_name, CH_UTF16)));
3301 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));
3303 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.password));
3304 if (r->in.password) {
3305 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.password, CH_UTF16)));
3306 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
3307 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.password, CH_UTF16)));
3308 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.password, ndr_charset_length(r->in.password, CH_UTF16), sizeof(uint16_t), CH_UTF16));
3311 if (flags & NDR_OUT) {
3312 NDR_CHECK(ndr_push_unique_ptr(ndr, r->out.TagId));
3314 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.TagId));
3316 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
3318 return NDR_ERR_SUCCESS;
3321 static enum ndr_err_code ndr_pull_svcctl_CreateServiceA(struct ndr_pull *ndr, int flags, struct svcctl_CreateServiceA *r)
3323 uint32_t _ptr_ServiceName;
3324 uint32_t _ptr_DisplayName;
3325 uint32_t _ptr_binary_path;
3326 uint32_t _ptr_LoadOrderGroupKey;
3327 uint32_t _ptr_TagId;
3328 uint32_t _ptr_dependencies;
3329 uint32_t _ptr_service_start_name;
3330 uint32_t _ptr_password;
3331 TALLOC_CTX *_mem_save_handle_0;
3332 TALLOC_CTX *_mem_save_ServiceName_0;
3333 TALLOC_CTX *_mem_save_DisplayName_0;
3334 TALLOC_CTX *_mem_save_binary_path_0;
3335 TALLOC_CTX *_mem_save_LoadOrderGroupKey_0;
3336 TALLOC_CTX *_mem_save_TagId_0;
3337 TALLOC_CTX *_mem_save_dependencies_0;
3338 TALLOC_CTX *_mem_save_service_start_name_0;
3339 TALLOC_CTX *_mem_save_password_0;
3340 if (flags & NDR_IN) {
3341 ZERO_STRUCT(r->out);
3343 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
3344 NDR_PULL_ALLOC(ndr, r->in.handle);
3346 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
3347 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
3348 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
3349 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
3350 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_ServiceName));
3351 if (_ptr_ServiceName) {
3352 NDR_PULL_ALLOC(ndr, r->in.ServiceName);
3354 r->in.ServiceName = NULL;
3356 if (r->in.ServiceName) {
3357 _mem_save_ServiceName_0 = NDR_PULL_GET_MEM_CTX(ndr);
3358 NDR_PULL_SET_MEM_CTX(ndr, r->in.ServiceName, 0);
3359 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.ServiceName));
3360 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.ServiceName));
3361 if (ndr_get_array_length(ndr, &r->in.ServiceName) > ndr_get_array_size(ndr, &r->in.ServiceName)) {
3362 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));
3364 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.ServiceName), sizeof(uint16_t)));
3365 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.ServiceName, ndr_get_array_length(ndr, &r->in.ServiceName), sizeof(uint16_t), CH_UTF16));
3366 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_ServiceName_0, 0);
3368 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_DisplayName));
3369 if (_ptr_DisplayName) {
3370 NDR_PULL_ALLOC(ndr, r->in.DisplayName);
3372 r->in.DisplayName = NULL;
3374 if (r->in.DisplayName) {
3375 _mem_save_DisplayName_0 = NDR_PULL_GET_MEM_CTX(ndr);
3376 NDR_PULL_SET_MEM_CTX(ndr, r->in.DisplayName, 0);
3377 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.DisplayName));
3378 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.DisplayName));
3379 if (ndr_get_array_length(ndr, &r->in.DisplayName) > ndr_get_array_size(ndr, &r->in.DisplayName)) {
3380 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));
3382 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.DisplayName), sizeof(uint16_t)));
3383 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.DisplayName, ndr_get_array_length(ndr, &r->in.DisplayName), sizeof(uint16_t), CH_UTF16));
3384 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_DisplayName_0, 0);
3386 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.desired_access));
3387 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.type));
3388 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.start_type));
3389 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.error_control));
3390 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_binary_path));
3391 if (_ptr_binary_path) {
3392 NDR_PULL_ALLOC(ndr, r->in.binary_path);
3394 r->in.binary_path = NULL;
3396 if (r->in.binary_path) {
3397 _mem_save_binary_path_0 = NDR_PULL_GET_MEM_CTX(ndr);
3398 NDR_PULL_SET_MEM_CTX(ndr, r->in.binary_path, 0);
3399 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.binary_path));
3400 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.binary_path));
3401 if (ndr_get_array_length(ndr, &r->in.binary_path) > ndr_get_array_size(ndr, &r->in.binary_path)) {
3402 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));
3404 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.binary_path), sizeof(uint16_t)));
3405 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));
3406 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_binary_path_0, 0);
3408 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_LoadOrderGroupKey));
3409 if (_ptr_LoadOrderGroupKey) {
3410 NDR_PULL_ALLOC(ndr, r->in.LoadOrderGroupKey);
3412 r->in.LoadOrderGroupKey = NULL;
3414 if (r->in.LoadOrderGroupKey) {
3415 _mem_save_LoadOrderGroupKey_0 = NDR_PULL_GET_MEM_CTX(ndr);
3416 NDR_PULL_SET_MEM_CTX(ndr, r->in.LoadOrderGroupKey, 0);
3417 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.LoadOrderGroupKey));
3418 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.LoadOrderGroupKey));
3419 if (ndr_get_array_length(ndr, &r->in.LoadOrderGroupKey) > ndr_get_array_size(ndr, &r->in.LoadOrderGroupKey)) {
3420 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));
3422 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.LoadOrderGroupKey), sizeof(uint16_t)));
3423 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.LoadOrderGroupKey, ndr_get_array_length(ndr, &r->in.LoadOrderGroupKey), sizeof(uint16_t), CH_UTF16));
3424 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_LoadOrderGroupKey_0, 0);
3426 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_dependencies));
3427 if (_ptr_dependencies) {
3428 NDR_PULL_ALLOC(ndr, r->in.dependencies);
3430 r->in.dependencies = NULL;
3432 if (r->in.dependencies) {
3433 _mem_save_dependencies_0 = NDR_PULL_GET_MEM_CTX(ndr);
3434 NDR_PULL_SET_MEM_CTX(ndr, r->in.dependencies, 0);
3435 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.dependencies));
3436 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.dependencies));
3437 if (ndr_get_array_length(ndr, &r->in.dependencies) > ndr_get_array_size(ndr, &r->in.dependencies)) {
3438 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));
3440 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.dependencies), sizeof(uint16_t)));
3441 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.dependencies, ndr_get_array_length(ndr, &r->in.dependencies), sizeof(uint16_t), CH_UTF16));
3442 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_dependencies_0, 0);
3444 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_service_start_name));
3445 if (_ptr_service_start_name) {
3446 NDR_PULL_ALLOC(ndr, r->in.service_start_name);
3448 r->in.service_start_name = NULL;
3450 if (r->in.service_start_name) {
3451 _mem_save_service_start_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
3452 NDR_PULL_SET_MEM_CTX(ndr, r->in.service_start_name, 0);
3453 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.service_start_name));
3454 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.service_start_name));
3455 if (ndr_get_array_length(ndr, &r->in.service_start_name) > ndr_get_array_size(ndr, &r->in.service_start_name)) {
3456 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));
3458 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.service_start_name), sizeof(uint16_t)));
3459 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));
3460 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_service_start_name_0, 0);
3462 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_password));
3463 if (_ptr_password) {
3464 NDR_PULL_ALLOC(ndr, r->in.password);
3466 r->in.password = NULL;
3468 if (r->in.password) {
3469 _mem_save_password_0 = NDR_PULL_GET_MEM_CTX(ndr);
3470 NDR_PULL_SET_MEM_CTX(ndr, r->in.password, 0);
3471 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.password));
3472 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.password));
3473 if (ndr_get_array_length(ndr, &r->in.password) > ndr_get_array_size(ndr, &r->in.password)) {
3474 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));
3476 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.password), sizeof(uint16_t)));
3477 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.password, ndr_get_array_length(ndr, &r->in.password), sizeof(uint16_t), CH_UTF16));
3478 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_password_0, 0);
3481 if (flags & NDR_OUT) {
3482 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_TagId));
3484 NDR_PULL_ALLOC(ndr, r->out.TagId);
3486 r->out.TagId = NULL;
3489 _mem_save_TagId_0 = NDR_PULL_GET_MEM_CTX(ndr);
3490 NDR_PULL_SET_MEM_CTX(ndr, r->out.TagId, 0);
3491 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.TagId));
3492 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_TagId_0, 0);
3494 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
3496 return NDR_ERR_SUCCESS;
3499 _PUBLIC_ void ndr_print_svcctl_CreateServiceA(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_CreateServiceA *r)
3501 ndr_print_struct(ndr, name, "svcctl_CreateServiceA");
3503 if (flags & NDR_SET_VALUES) {
3504 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
3506 if (flags & NDR_IN) {
3507 ndr_print_struct(ndr, "in", "svcctl_CreateServiceA");
3509 ndr_print_ptr(ndr, "handle", r->in.handle);
3511 ndr_print_policy_handle(ndr, "handle", r->in.handle);
3513 ndr_print_ptr(ndr, "ServiceName", r->in.ServiceName);
3515 if (r->in.ServiceName) {
3516 ndr_print_string(ndr, "ServiceName", r->in.ServiceName);
3519 ndr_print_ptr(ndr, "DisplayName", r->in.DisplayName);
3521 if (r->in.DisplayName) {
3522 ndr_print_string(ndr, "DisplayName", r->in.DisplayName);
3525 ndr_print_uint32(ndr, "desired_access", r->in.desired_access);
3526 ndr_print_uint32(ndr, "type", r->in.type);
3527 ndr_print_uint32(ndr, "start_type", r->in.start_type);
3528 ndr_print_uint32(ndr, "error_control", r->in.error_control);
3529 ndr_print_ptr(ndr, "binary_path", r->in.binary_path);
3531 if (r->in.binary_path) {
3532 ndr_print_string(ndr, "binary_path", r->in.binary_path);
3535 ndr_print_ptr(ndr, "LoadOrderGroupKey", r->in.LoadOrderGroupKey);
3537 if (r->in.LoadOrderGroupKey) {
3538 ndr_print_string(ndr, "LoadOrderGroupKey", r->in.LoadOrderGroupKey);
3541 ndr_print_ptr(ndr, "dependencies", r->in.dependencies);
3543 if (r->in.dependencies) {
3544 ndr_print_string(ndr, "dependencies", r->in.dependencies);
3547 ndr_print_ptr(ndr, "service_start_name", r->in.service_start_name);
3549 if (r->in.service_start_name) {
3550 ndr_print_string(ndr, "service_start_name", r->in.service_start_name);
3553 ndr_print_ptr(ndr, "password", r->in.password);
3555 if (r->in.password) {
3556 ndr_print_string(ndr, "password", r->in.password);
3561 if (flags & NDR_OUT) {
3562 ndr_print_struct(ndr, "out", "svcctl_CreateServiceA");
3564 ndr_print_ptr(ndr, "TagId", r->out.TagId);
3567 ndr_print_uint32(ndr, "TagId", *r->out.TagId);
3570 ndr_print_WERROR(ndr, "result", r->out.result);
3576 static enum ndr_err_code ndr_push_svcctl_EnumDependentServicesA(struct ndr_push *ndr, int flags, const struct svcctl_EnumDependentServicesA *r)
3578 if (flags & NDR_IN) {
3579 if (r->in.service == NULL) {
3580 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
3582 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.service));
3583 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.state));
3584 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.buf_size));
3586 if (flags & NDR_OUT) {
3587 NDR_CHECK(ndr_push_unique_ptr(ndr, r->out.service_status));
3588 if (r->out.service_status) {
3589 NDR_CHECK(ndr_push_ENUM_SERVICE_STATUS(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.service_status));
3591 if (r->out.bytes_needed == NULL) {
3592 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
3594 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.bytes_needed));
3595 if (r->out.services_returned == NULL) {
3596 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
3598 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.services_returned));
3599 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
3601 return NDR_ERR_SUCCESS;
3604 static enum ndr_err_code ndr_pull_svcctl_EnumDependentServicesA(struct ndr_pull *ndr, int flags, struct svcctl_EnumDependentServicesA *r)
3606 uint32_t _ptr_service_status;
3607 TALLOC_CTX *_mem_save_service_0;
3608 TALLOC_CTX *_mem_save_service_status_0;
3609 TALLOC_CTX *_mem_save_bytes_needed_0;
3610 TALLOC_CTX *_mem_save_services_returned_0;
3611 if (flags & NDR_IN) {
3612 ZERO_STRUCT(r->out);
3614 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
3615 NDR_PULL_ALLOC(ndr, r->in.service);
3617 _mem_save_service_0 = NDR_PULL_GET_MEM_CTX(ndr);
3618 NDR_PULL_SET_MEM_CTX(ndr, r->in.service, LIBNDR_FLAG_REF_ALLOC);
3619 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.service));
3620 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_service_0, LIBNDR_FLAG_REF_ALLOC);
3621 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.state));
3622 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.buf_size));
3623 NDR_PULL_ALLOC(ndr, r->out.bytes_needed);
3624 ZERO_STRUCTP(r->out.bytes_needed);
3625 NDR_PULL_ALLOC(ndr, r->out.services_returned);
3626 ZERO_STRUCTP(r->out.services_returned);
3628 if (flags & NDR_OUT) {
3629 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_service_status));
3630 if (_ptr_service_status) {
3631 NDR_PULL_ALLOC(ndr, r->out.service_status);
3633 r->out.service_status = NULL;
3635 if (r->out.service_status) {
3636 _mem_save_service_status_0 = NDR_PULL_GET_MEM_CTX(ndr);
3637 NDR_PULL_SET_MEM_CTX(ndr, r->out.service_status, 0);
3638 NDR_CHECK(ndr_pull_ENUM_SERVICE_STATUS(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.service_status));
3639 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_service_status_0, 0);
3641 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
3642 NDR_PULL_ALLOC(ndr, r->out.bytes_needed);
3644 _mem_save_bytes_needed_0 = NDR_PULL_GET_MEM_CTX(ndr);
3645 NDR_PULL_SET_MEM_CTX(ndr, r->out.bytes_needed, LIBNDR_FLAG_REF_ALLOC);
3646 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.bytes_needed));
3647 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_bytes_needed_0, LIBNDR_FLAG_REF_ALLOC);
3648 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
3649 NDR_PULL_ALLOC(ndr, r->out.services_returned);
3651 _mem_save_services_returned_0 = NDR_PULL_GET_MEM_CTX(ndr);
3652 NDR_PULL_SET_MEM_CTX(ndr, r->out.services_returned, LIBNDR_FLAG_REF_ALLOC);
3653 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.services_returned));
3654 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_services_returned_0, LIBNDR_FLAG_REF_ALLOC);
3655 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
3657 return NDR_ERR_SUCCESS;
3660 _PUBLIC_ void ndr_print_svcctl_EnumDependentServicesA(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_EnumDependentServicesA *r)
3662 ndr_print_struct(ndr, name, "svcctl_EnumDependentServicesA");
3664 if (flags & NDR_SET_VALUES) {
3665 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
3667 if (flags & NDR_IN) {
3668 ndr_print_struct(ndr, "in", "svcctl_EnumDependentServicesA");
3670 ndr_print_ptr(ndr, "service", r->in.service);
3672 ndr_print_policy_handle(ndr, "service", r->in.service);
3674 ndr_print_uint32(ndr, "state", r->in.state);
3675 ndr_print_uint32(ndr, "buf_size", r->in.buf_size);
3678 if (flags & NDR_OUT) {
3679 ndr_print_struct(ndr, "out", "svcctl_EnumDependentServicesA");
3681 ndr_print_ptr(ndr, "service_status", r->out.service_status);
3683 if (r->out.service_status) {
3684 ndr_print_ENUM_SERVICE_STATUS(ndr, "service_status", r->out.service_status);
3687 ndr_print_ptr(ndr, "bytes_needed", r->out.bytes_needed);
3689 ndr_print_uint32(ndr, "bytes_needed", *r->out.bytes_needed);
3691 ndr_print_ptr(ndr, "services_returned", r->out.services_returned);
3693 ndr_print_uint32(ndr, "services_returned", *r->out.services_returned);
3695 ndr_print_WERROR(ndr, "result", r->out.result);
3701 static enum ndr_err_code ndr_push_svcctl_EnumServicesStatusA(struct ndr_push *ndr, int flags, const struct svcctl_EnumServicesStatusA *r)
3703 if (flags & NDR_IN) {
3704 if (r->in.handle == NULL) {
3705 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
3707 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
3708 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.type));
3709 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.state));
3710 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.buf_size));
3711 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.resume_handle));
3712 if (r->in.resume_handle) {
3713 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->in.resume_handle));
3716 if (flags & NDR_OUT) {
3717 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.buf_size));
3718 NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->out.service, r->in.buf_size));
3719 if (r->out.bytes_needed == NULL) {
3720 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
3722 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.bytes_needed));
3723 if (r->out.services_returned == NULL) {
3724 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
3726 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.services_returned));
3727 NDR_CHECK(ndr_push_unique_ptr(ndr, r->out.resume_handle));
3728 if (r->out.resume_handle) {
3729 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.resume_handle));
3731 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
3733 return NDR_ERR_SUCCESS;
3736 static enum ndr_err_code ndr_pull_svcctl_EnumServicesStatusA(struct ndr_pull *ndr, int flags, struct svcctl_EnumServicesStatusA *r)
3738 uint32_t _ptr_resume_handle;
3739 TALLOC_CTX *_mem_save_handle_0;
3740 TALLOC_CTX *_mem_save_bytes_needed_0;
3741 TALLOC_CTX *_mem_save_services_returned_0;
3742 TALLOC_CTX *_mem_save_resume_handle_0;
3743 if (flags & NDR_IN) {
3744 ZERO_STRUCT(r->out);
3746 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
3747 NDR_PULL_ALLOC(ndr, r->in.handle);
3749 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
3750 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
3751 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
3752 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
3753 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.type));
3754 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.state));
3755 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.buf_size));
3756 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_resume_handle));
3757 if (_ptr_resume_handle) {
3758 NDR_PULL_ALLOC(ndr, r->in.resume_handle);
3760 r->in.resume_handle = NULL;
3762 if (r->in.resume_handle) {
3763 _mem_save_resume_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
3764 NDR_PULL_SET_MEM_CTX(ndr, r->in.resume_handle, 0);
3765 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->in.resume_handle));
3766 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_resume_handle_0, 0);
3768 NDR_PULL_ALLOC(ndr, r->out.bytes_needed);
3769 ZERO_STRUCTP(r->out.bytes_needed);
3770 NDR_PULL_ALLOC(ndr, r->out.services_returned);
3771 ZERO_STRUCTP(r->out.services_returned);
3773 if (flags & NDR_OUT) {
3774 NDR_CHECK(ndr_pull_array_size(ndr, &r->out.service));
3775 NDR_PULL_ALLOC_N(ndr, r->out.service, ndr_get_array_size(ndr, &r->out.service));
3776 NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->out.service, ndr_get_array_size(ndr, &r->out.service)));
3777 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
3778 NDR_PULL_ALLOC(ndr, r->out.bytes_needed);
3780 _mem_save_bytes_needed_0 = NDR_PULL_GET_MEM_CTX(ndr);
3781 NDR_PULL_SET_MEM_CTX(ndr, r->out.bytes_needed, LIBNDR_FLAG_REF_ALLOC);
3782 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.bytes_needed));
3783 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_bytes_needed_0, LIBNDR_FLAG_REF_ALLOC);
3784 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
3785 NDR_PULL_ALLOC(ndr, r->out.services_returned);
3787 _mem_save_services_returned_0 = NDR_PULL_GET_MEM_CTX(ndr);
3788 NDR_PULL_SET_MEM_CTX(ndr, r->out.services_returned, LIBNDR_FLAG_REF_ALLOC);
3789 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.services_returned));
3790 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_services_returned_0, LIBNDR_FLAG_REF_ALLOC);
3791 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_resume_handle));
3792 if (_ptr_resume_handle) {
3793 NDR_PULL_ALLOC(ndr, r->out.resume_handle);
3795 r->out.resume_handle = NULL;
3797 if (r->out.resume_handle) {
3798 _mem_save_resume_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
3799 NDR_PULL_SET_MEM_CTX(ndr, r->out.resume_handle, 0);
3800 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.resume_handle));
3801 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_resume_handle_0, 0);
3803 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
3804 if (r->out.service) {
3805 NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->out.service, r->in.buf_size));
3808 return NDR_ERR_SUCCESS;
3811 _PUBLIC_ void ndr_print_svcctl_EnumServicesStatusA(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_EnumServicesStatusA *r)
3813 ndr_print_struct(ndr, name, "svcctl_EnumServicesStatusA");
3815 if (flags & NDR_SET_VALUES) {
3816 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
3818 if (flags & NDR_IN) {
3819 ndr_print_struct(ndr, "in", "svcctl_EnumServicesStatusA");
3821 ndr_print_ptr(ndr, "handle", r->in.handle);
3823 ndr_print_policy_handle(ndr, "handle", r->in.handle);
3825 ndr_print_uint32(ndr, "type", r->in.type);
3826 ndr_print_uint32(ndr, "state", r->in.state);
3827 ndr_print_uint32(ndr, "buf_size", r->in.buf_size);
3828 ndr_print_ptr(ndr, "resume_handle", r->in.resume_handle);
3830 if (r->in.resume_handle) {
3831 ndr_print_uint32(ndr, "resume_handle", *r->in.resume_handle);
3836 if (flags & NDR_OUT) {
3837 ndr_print_struct(ndr, "out", "svcctl_EnumServicesStatusA");
3839 ndr_print_array_uint8(ndr, "service", r->out.service, r->in.buf_size);
3840 ndr_print_ptr(ndr, "bytes_needed", r->out.bytes_needed);
3842 ndr_print_uint32(ndr, "bytes_needed", *r->out.bytes_needed);
3844 ndr_print_ptr(ndr, "services_returned", r->out.services_returned);
3846 ndr_print_uint32(ndr, "services_returned", *r->out.services_returned);
3848 ndr_print_ptr(ndr, "resume_handle", r->out.resume_handle);
3850 if (r->out.resume_handle) {
3851 ndr_print_uint32(ndr, "resume_handle", *r->out.resume_handle);
3854 ndr_print_WERROR(ndr, "result", r->out.result);
3860 static enum ndr_err_code ndr_push_svcctl_OpenSCManagerA(struct ndr_push *ndr, int flags, const struct svcctl_OpenSCManagerA *r)
3862 if (flags & NDR_IN) {
3863 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.MachineName));
3864 if (r->in.MachineName) {
3865 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.MachineName, CH_UTF16)));
3866 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
3867 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.MachineName, CH_UTF16)));
3868 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.MachineName, ndr_charset_length(r->in.MachineName, CH_UTF16), sizeof(uint16_t), CH_UTF16));
3870 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.DatabaseName));
3871 if (r->in.DatabaseName) {
3872 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.DatabaseName, CH_UTF16)));
3873 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
3874 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.DatabaseName, CH_UTF16)));
3875 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.DatabaseName, ndr_charset_length(r->in.DatabaseName, CH_UTF16), sizeof(uint16_t), CH_UTF16));
3877 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.access_mask));
3879 if (flags & NDR_OUT) {
3880 if (r->out.handle == NULL) {
3881 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
3883 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->out.handle));
3884 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
3886 return NDR_ERR_SUCCESS;
3889 static enum ndr_err_code ndr_pull_svcctl_OpenSCManagerA(struct ndr_pull *ndr, int flags, struct svcctl_OpenSCManagerA *r)
3891 uint32_t _ptr_MachineName;
3892 uint32_t _ptr_DatabaseName;
3893 TALLOC_CTX *_mem_save_MachineName_0;
3894 TALLOC_CTX *_mem_save_DatabaseName_0;
3895 TALLOC_CTX *_mem_save_handle_0;
3896 if (flags & NDR_IN) {
3897 ZERO_STRUCT(r->out);
3899 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_MachineName));
3900 if (_ptr_MachineName) {
3901 NDR_PULL_ALLOC(ndr, r->in.MachineName);
3903 r->in.MachineName = NULL;
3905 if (r->in.MachineName) {
3906 _mem_save_MachineName_0 = NDR_PULL_GET_MEM_CTX(ndr);
3907 NDR_PULL_SET_MEM_CTX(ndr, r->in.MachineName, 0);
3908 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.MachineName));
3909 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.MachineName));
3910 if (ndr_get_array_length(ndr, &r->in.MachineName) > ndr_get_array_size(ndr, &r->in.MachineName)) {
3911 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));
3913 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.MachineName), sizeof(uint16_t)));
3914 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.MachineName, ndr_get_array_length(ndr, &r->in.MachineName), sizeof(uint16_t), CH_UTF16));
3915 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_MachineName_0, 0);
3917 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_DatabaseName));
3918 if (_ptr_DatabaseName) {
3919 NDR_PULL_ALLOC(ndr, r->in.DatabaseName);
3921 r->in.DatabaseName = NULL;
3923 if (r->in.DatabaseName) {
3924 _mem_save_DatabaseName_0 = NDR_PULL_GET_MEM_CTX(ndr);
3925 NDR_PULL_SET_MEM_CTX(ndr, r->in.DatabaseName, 0);
3926 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.DatabaseName));
3927 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.DatabaseName));
3928 if (ndr_get_array_length(ndr, &r->in.DatabaseName) > ndr_get_array_size(ndr, &r->in.DatabaseName)) {
3929 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));
3931 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.DatabaseName), sizeof(uint16_t)));
3932 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.DatabaseName, ndr_get_array_length(ndr, &r->in.DatabaseName), sizeof(uint16_t), CH_UTF16));
3933 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_DatabaseName_0, 0);
3935 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.access_mask));
3936 NDR_PULL_ALLOC(ndr, r->out.handle);
3937 ZERO_STRUCTP(r->out.handle);
3939 if (flags & NDR_OUT) {
3940 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
3941 NDR_PULL_ALLOC(ndr, r->out.handle);
3943 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
3944 NDR_PULL_SET_MEM_CTX(ndr, r->out.handle, LIBNDR_FLAG_REF_ALLOC);
3945 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->out.handle));
3946 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
3947 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
3949 return NDR_ERR_SUCCESS;
3952 _PUBLIC_ void ndr_print_svcctl_OpenSCManagerA(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_OpenSCManagerA *r)
3954 ndr_print_struct(ndr, name, "svcctl_OpenSCManagerA");
3956 if (flags & NDR_SET_VALUES) {
3957 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
3959 if (flags & NDR_IN) {
3960 ndr_print_struct(ndr, "in", "svcctl_OpenSCManagerA");
3962 ndr_print_ptr(ndr, "MachineName", r->in.MachineName);
3964 if (r->in.MachineName) {
3965 ndr_print_string(ndr, "MachineName", r->in.MachineName);
3968 ndr_print_ptr(ndr, "DatabaseName", r->in.DatabaseName);
3970 if (r->in.DatabaseName) {
3971 ndr_print_string(ndr, "DatabaseName", r->in.DatabaseName);
3974 ndr_print_uint32(ndr, "access_mask", r->in.access_mask);
3977 if (flags & NDR_OUT) {
3978 ndr_print_struct(ndr, "out", "svcctl_OpenSCManagerA");
3980 ndr_print_ptr(ndr, "handle", r->out.handle);
3982 ndr_print_policy_handle(ndr, "handle", r->out.handle);
3984 ndr_print_WERROR(ndr, "result", r->out.result);
3990 static enum ndr_err_code ndr_push_svcctl_OpenServiceA(struct ndr_push *ndr, int flags, const struct svcctl_OpenServiceA *r)
3992 if (flags & NDR_IN) {
3993 if (r->in.scmanager_handle == NULL) {
3994 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
3996 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.scmanager_handle));
3997 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.ServiceName));
3998 if (r->in.ServiceName) {
3999 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.ServiceName, CH_UTF16)));
4000 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
4001 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.ServiceName, CH_UTF16)));
4002 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.ServiceName, ndr_charset_length(r->in.ServiceName, CH_UTF16), sizeof(uint16_t), CH_UTF16));
4004 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.access_mask));
4006 if (flags & NDR_OUT) {
4007 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
4009 return NDR_ERR_SUCCESS;
4012 static enum ndr_err_code ndr_pull_svcctl_OpenServiceA(struct ndr_pull *ndr, int flags, struct svcctl_OpenServiceA *r)
4014 uint32_t _ptr_ServiceName;
4015 TALLOC_CTX *_mem_save_scmanager_handle_0;
4016 TALLOC_CTX *_mem_save_ServiceName_0;
4017 if (flags & NDR_IN) {
4018 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
4019 NDR_PULL_ALLOC(ndr, r->in.scmanager_handle);
4021 _mem_save_scmanager_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
4022 NDR_PULL_SET_MEM_CTX(ndr, r->in.scmanager_handle, LIBNDR_FLAG_REF_ALLOC);
4023 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.scmanager_handle));
4024 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_scmanager_handle_0, LIBNDR_FLAG_REF_ALLOC);
4025 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_ServiceName));
4026 if (_ptr_ServiceName) {
4027 NDR_PULL_ALLOC(ndr, r->in.ServiceName);
4029 r->in.ServiceName = NULL;
4031 if (r->in.ServiceName) {
4032 _mem_save_ServiceName_0 = NDR_PULL_GET_MEM_CTX(ndr);
4033 NDR_PULL_SET_MEM_CTX(ndr, r->in.ServiceName, 0);
4034 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.ServiceName));
4035 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.ServiceName));
4036 if (ndr_get_array_length(ndr, &r->in.ServiceName) > ndr_get_array_size(ndr, &r->in.ServiceName)) {
4037 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));
4039 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.ServiceName), sizeof(uint16_t)));
4040 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.ServiceName, ndr_get_array_length(ndr, &r->in.ServiceName), sizeof(uint16_t), CH_UTF16));
4041 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_ServiceName_0, 0);
4043 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.access_mask));
4045 if (flags & NDR_OUT) {
4046 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
4048 return NDR_ERR_SUCCESS;
4051 _PUBLIC_ void ndr_print_svcctl_OpenServiceA(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_OpenServiceA *r)
4053 ndr_print_struct(ndr, name, "svcctl_OpenServiceA");
4055 if (flags & NDR_SET_VALUES) {
4056 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
4058 if (flags & NDR_IN) {
4059 ndr_print_struct(ndr, "in", "svcctl_OpenServiceA");
4061 ndr_print_ptr(ndr, "scmanager_handle", r->in.scmanager_handle);
4063 ndr_print_policy_handle(ndr, "scmanager_handle", r->in.scmanager_handle);
4065 ndr_print_ptr(ndr, "ServiceName", r->in.ServiceName);
4067 if (r->in.ServiceName) {
4068 ndr_print_string(ndr, "ServiceName", r->in.ServiceName);
4071 ndr_print_uint32(ndr, "access_mask", r->in.access_mask);
4074 if (flags & NDR_OUT) {
4075 ndr_print_struct(ndr, "out", "svcctl_OpenServiceA");
4077 ndr_print_WERROR(ndr, "result", r->out.result);
4083 static enum ndr_err_code ndr_push_svcctl_QueryServiceConfigA(struct ndr_push *ndr, int flags, const struct svcctl_QueryServiceConfigA *r)
4085 if (flags & NDR_IN) {
4086 if (r->in.handle == NULL) {
4087 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
4089 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
4090 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.buf_size));
4092 if (flags & NDR_OUT) {
4093 NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->out.query, r->in.buf_size));
4094 if (r->out.bytes_needed == NULL) {
4095 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
4097 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.bytes_needed));
4098 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
4100 return NDR_ERR_SUCCESS;
4103 static enum ndr_err_code ndr_pull_svcctl_QueryServiceConfigA(struct ndr_pull *ndr, int flags, struct svcctl_QueryServiceConfigA *r)
4105 TALLOC_CTX *_mem_save_handle_0;
4106 TALLOC_CTX *_mem_save_bytes_needed_0;
4107 if (flags & NDR_IN) {
4108 ZERO_STRUCT(r->out);
4110 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
4111 NDR_PULL_ALLOC(ndr, r->in.handle);
4113 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
4114 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
4115 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
4116 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
4117 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.buf_size));
4118 NDR_PULL_ALLOC(ndr, r->out.bytes_needed);
4119 ZERO_STRUCTP(r->out.bytes_needed);
4121 if (flags & NDR_OUT) {
4122 NDR_PULL_ALLOC_N(ndr, r->out.query, r->in.buf_size);
4123 NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->out.query, r->in.buf_size));
4124 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
4125 NDR_PULL_ALLOC(ndr, r->out.bytes_needed);
4127 _mem_save_bytes_needed_0 = NDR_PULL_GET_MEM_CTX(ndr);
4128 NDR_PULL_SET_MEM_CTX(ndr, r->out.bytes_needed, LIBNDR_FLAG_REF_ALLOC);
4129 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.bytes_needed));
4130 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_bytes_needed_0, LIBNDR_FLAG_REF_ALLOC);
4131 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
4133 return NDR_ERR_SUCCESS;
4136 _PUBLIC_ void ndr_print_svcctl_QueryServiceConfigA(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_QueryServiceConfigA *r)
4138 ndr_print_struct(ndr, name, "svcctl_QueryServiceConfigA");
4140 if (flags & NDR_SET_VALUES) {
4141 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
4143 if (flags & NDR_IN) {
4144 ndr_print_struct(ndr, "in", "svcctl_QueryServiceConfigA");
4146 ndr_print_ptr(ndr, "handle", r->in.handle);
4148 ndr_print_policy_handle(ndr, "handle", r->in.handle);
4150 ndr_print_uint32(ndr, "buf_size", r->in.buf_size);
4153 if (flags & NDR_OUT) {
4154 ndr_print_struct(ndr, "out", "svcctl_QueryServiceConfigA");
4156 ndr_print_array_uint8(ndr, "query", r->out.query, r->in.buf_size);
4157 ndr_print_ptr(ndr, "bytes_needed", r->out.bytes_needed);
4159 ndr_print_uint32(ndr, "bytes_needed", *r->out.bytes_needed);
4161 ndr_print_WERROR(ndr, "result", r->out.result);
4167 static enum ndr_err_code ndr_push_svcctl_QueryServiceLockStatusA(struct ndr_push *ndr, int flags, const struct svcctl_QueryServiceLockStatusA *r)
4169 if (flags & NDR_IN) {
4170 if (r->in.handle == NULL) {
4171 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
4173 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
4174 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.buf_size));
4176 if (flags & NDR_OUT) {
4177 if (r->out.lock_status == NULL) {
4178 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
4180 NDR_CHECK(ndr_push_SERVICE_LOCK_STATUS(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.lock_status));
4181 if (r->out.required_buf_size == NULL) {
4182 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
4184 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.required_buf_size));
4185 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
4187 return NDR_ERR_SUCCESS;
4190 static enum ndr_err_code ndr_pull_svcctl_QueryServiceLockStatusA(struct ndr_pull *ndr, int flags, struct svcctl_QueryServiceLockStatusA *r)
4192 TALLOC_CTX *_mem_save_handle_0;
4193 TALLOC_CTX *_mem_save_lock_status_0;
4194 TALLOC_CTX *_mem_save_required_buf_size_0;
4195 if (flags & NDR_IN) {
4196 ZERO_STRUCT(r->out);
4198 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
4199 NDR_PULL_ALLOC(ndr, r->in.handle);
4201 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
4202 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
4203 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
4204 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
4205 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.buf_size));
4206 NDR_PULL_ALLOC(ndr, r->out.lock_status);
4207 ZERO_STRUCTP(r->out.lock_status);
4208 NDR_PULL_ALLOC(ndr, r->out.required_buf_size);
4209 ZERO_STRUCTP(r->out.required_buf_size);
4211 if (flags & NDR_OUT) {
4212 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
4213 NDR_PULL_ALLOC(ndr, r->out.lock_status);
4215 _mem_save_lock_status_0 = NDR_PULL_GET_MEM_CTX(ndr);
4216 NDR_PULL_SET_MEM_CTX(ndr, r->out.lock_status, LIBNDR_FLAG_REF_ALLOC);
4217 NDR_CHECK(ndr_pull_SERVICE_LOCK_STATUS(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.lock_status));
4218 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_lock_status_0, LIBNDR_FLAG_REF_ALLOC);
4219 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
4220 NDR_PULL_ALLOC(ndr, r->out.required_buf_size);
4222 _mem_save_required_buf_size_0 = NDR_PULL_GET_MEM_CTX(ndr);
4223 NDR_PULL_SET_MEM_CTX(ndr, r->out.required_buf_size, LIBNDR_FLAG_REF_ALLOC);
4224 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.required_buf_size));
4225 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_required_buf_size_0, LIBNDR_FLAG_REF_ALLOC);
4226 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
4228 return NDR_ERR_SUCCESS;
4231 _PUBLIC_ void ndr_print_svcctl_QueryServiceLockStatusA(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_QueryServiceLockStatusA *r)
4233 ndr_print_struct(ndr, name, "svcctl_QueryServiceLockStatusA");
4235 if (flags & NDR_SET_VALUES) {
4236 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
4238 if (flags & NDR_IN) {
4239 ndr_print_struct(ndr, "in", "svcctl_QueryServiceLockStatusA");
4241 ndr_print_ptr(ndr, "handle", r->in.handle);
4243 ndr_print_policy_handle(ndr, "handle", r->in.handle);
4245 ndr_print_uint32(ndr, "buf_size", r->in.buf_size);
4248 if (flags & NDR_OUT) {
4249 ndr_print_struct(ndr, "out", "svcctl_QueryServiceLockStatusA");
4251 ndr_print_ptr(ndr, "lock_status", r->out.lock_status);
4253 ndr_print_SERVICE_LOCK_STATUS(ndr, "lock_status", r->out.lock_status);
4255 ndr_print_ptr(ndr, "required_buf_size", r->out.required_buf_size);
4257 ndr_print_uint32(ndr, "required_buf_size", *r->out.required_buf_size);
4259 ndr_print_WERROR(ndr, "result", r->out.result);
4265 static enum ndr_err_code ndr_push_svcctl_StartServiceA(struct ndr_push *ndr, int flags, const struct svcctl_StartServiceA *r)
4267 if (flags & NDR_IN) {
4268 if (r->in.handle == NULL) {
4269 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
4271 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
4272 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.NumArgs));
4273 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.Arguments));
4274 if (r->in.Arguments) {
4275 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.Arguments, CH_UTF16)));
4276 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
4277 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.Arguments, CH_UTF16)));
4278 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.Arguments, ndr_charset_length(r->in.Arguments, CH_UTF16), sizeof(uint16_t), CH_UTF16));
4281 if (flags & NDR_OUT) {
4282 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
4284 return NDR_ERR_SUCCESS;
4287 static enum ndr_err_code ndr_pull_svcctl_StartServiceA(struct ndr_pull *ndr, int flags, struct svcctl_StartServiceA *r)
4289 uint32_t _ptr_Arguments;
4290 TALLOC_CTX *_mem_save_handle_0;
4291 TALLOC_CTX *_mem_save_Arguments_0;
4292 if (flags & NDR_IN) {
4293 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
4294 NDR_PULL_ALLOC(ndr, r->in.handle);
4296 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
4297 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
4298 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
4299 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
4300 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.NumArgs));
4301 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_Arguments));
4302 if (_ptr_Arguments) {
4303 NDR_PULL_ALLOC(ndr, r->in.Arguments);
4305 r->in.Arguments = NULL;
4307 if (r->in.Arguments) {
4308 _mem_save_Arguments_0 = NDR_PULL_GET_MEM_CTX(ndr);
4309 NDR_PULL_SET_MEM_CTX(ndr, r->in.Arguments, 0);
4310 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.Arguments));
4311 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.Arguments));
4312 if (ndr_get_array_length(ndr, &r->in.Arguments) > ndr_get_array_size(ndr, &r->in.Arguments)) {
4313 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));
4315 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.Arguments), sizeof(uint16_t)));
4316 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.Arguments, ndr_get_array_length(ndr, &r->in.Arguments), sizeof(uint16_t), CH_UTF16));
4317 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_Arguments_0, 0);
4320 if (flags & NDR_OUT) {
4321 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
4323 return NDR_ERR_SUCCESS;
4326 _PUBLIC_ void ndr_print_svcctl_StartServiceA(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_StartServiceA *r)
4328 ndr_print_struct(ndr, name, "svcctl_StartServiceA");
4330 if (flags & NDR_SET_VALUES) {
4331 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
4333 if (flags & NDR_IN) {
4334 ndr_print_struct(ndr, "in", "svcctl_StartServiceA");
4336 ndr_print_ptr(ndr, "handle", r->in.handle);
4338 ndr_print_policy_handle(ndr, "handle", r->in.handle);
4340 ndr_print_uint32(ndr, "NumArgs", r->in.NumArgs);
4341 ndr_print_ptr(ndr, "Arguments", r->in.Arguments);
4343 if (r->in.Arguments) {
4344 ndr_print_string(ndr, "Arguments", r->in.Arguments);
4349 if (flags & NDR_OUT) {
4350 ndr_print_struct(ndr, "out", "svcctl_StartServiceA");
4352 ndr_print_WERROR(ndr, "result", r->out.result);
4358 static enum ndr_err_code ndr_push_svcctl_GetServiceDisplayNameA(struct ndr_push *ndr, int flags, const struct svcctl_GetServiceDisplayNameA *r)
4360 if (flags & NDR_IN) {
4361 if (r->in.handle == NULL) {
4362 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
4364 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
4365 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.service_name));
4366 if (r->in.service_name) {
4367 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.service_name, CH_UTF16)));
4368 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
4369 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.service_name, CH_UTF16)));
4370 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));
4372 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.display_name_length));
4373 if (r->in.display_name_length) {
4374 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->in.display_name_length));
4377 if (flags & NDR_OUT) {
4378 if (r->out.display_name == NULL) {
4379 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
4381 NDR_CHECK(ndr_push_unique_ptr(ndr, *r->out.display_name));
4382 if (*r->out.display_name) {
4383 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(*r->out.display_name, CH_UTF16)));
4384 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
4385 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(*r->out.display_name, CH_UTF16)));
4386 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));
4388 NDR_CHECK(ndr_push_unique_ptr(ndr, r->out.display_name_length));
4389 if (r->out.display_name_length) {
4390 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.display_name_length));
4392 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
4394 return NDR_ERR_SUCCESS;
4397 static enum ndr_err_code ndr_pull_svcctl_GetServiceDisplayNameA(struct ndr_pull *ndr, int flags, struct svcctl_GetServiceDisplayNameA *r)
4399 uint32_t _ptr_service_name;
4400 uint32_t _ptr_display_name;
4401 uint32_t _ptr_display_name_length;
4402 TALLOC_CTX *_mem_save_handle_0;
4403 TALLOC_CTX *_mem_save_service_name_0;
4404 TALLOC_CTX *_mem_save_display_name_0;
4405 TALLOC_CTX *_mem_save_display_name_1;
4406 TALLOC_CTX *_mem_save_display_name_length_0;
4407 if (flags & NDR_IN) {
4408 ZERO_STRUCT(r->out);
4410 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
4411 NDR_PULL_ALLOC(ndr, r->in.handle);
4413 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
4414 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
4415 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
4416 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
4417 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_service_name));
4418 if (_ptr_service_name) {
4419 NDR_PULL_ALLOC(ndr, r->in.service_name);
4421 r->in.service_name = NULL;
4423 if (r->in.service_name) {
4424 _mem_save_service_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
4425 NDR_PULL_SET_MEM_CTX(ndr, r->in.service_name, 0);
4426 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.service_name));
4427 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.service_name));
4428 if (ndr_get_array_length(ndr, &r->in.service_name) > ndr_get_array_size(ndr, &r->in.service_name)) {
4429 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));
4431 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.service_name), sizeof(uint16_t)));
4432 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));
4433 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_service_name_0, 0);
4435 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_display_name_length));
4436 if (_ptr_display_name_length) {
4437 NDR_PULL_ALLOC(ndr, r->in.display_name_length);
4439 r->in.display_name_length = NULL;
4441 if (r->in.display_name_length) {
4442 _mem_save_display_name_length_0 = NDR_PULL_GET_MEM_CTX(ndr);
4443 NDR_PULL_SET_MEM_CTX(ndr, r->in.display_name_length, 0);
4444 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->in.display_name_length));
4445 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_display_name_length_0, 0);
4447 NDR_PULL_ALLOC(ndr, r->out.display_name);
4448 ZERO_STRUCTP(r->out.display_name);
4450 if (flags & NDR_OUT) {
4451 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
4452 NDR_PULL_ALLOC(ndr, r->out.display_name);
4454 _mem_save_display_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
4455 NDR_PULL_SET_MEM_CTX(ndr, r->out.display_name, LIBNDR_FLAG_REF_ALLOC);
4456 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_display_name));
4457 if (_ptr_display_name) {
4458 NDR_PULL_ALLOC(ndr, *r->out.display_name);
4460 *r->out.display_name = NULL;
4462 if (*r->out.display_name) {
4463 _mem_save_display_name_1 = NDR_PULL_GET_MEM_CTX(ndr);
4464 NDR_PULL_SET_MEM_CTX(ndr, *r->out.display_name, 0);
4465 NDR_CHECK(ndr_pull_array_size(ndr, r->out.display_name));
4466 NDR_CHECK(ndr_pull_array_length(ndr, r->out.display_name));
4467 if (ndr_get_array_length(ndr, r->out.display_name) > ndr_get_array_size(ndr, r->out.display_name)) {
4468 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));
4470 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, r->out.display_name), sizeof(uint16_t)));
4471 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));
4472 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_display_name_1, 0);
4474 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_display_name_0, LIBNDR_FLAG_REF_ALLOC);
4475 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_display_name_length));
4476 if (_ptr_display_name_length) {
4477 NDR_PULL_ALLOC(ndr, r->out.display_name_length);
4479 r->out.display_name_length = NULL;
4481 if (r->out.display_name_length) {
4482 _mem_save_display_name_length_0 = NDR_PULL_GET_MEM_CTX(ndr);
4483 NDR_PULL_SET_MEM_CTX(ndr, r->out.display_name_length, 0);
4484 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.display_name_length));
4485 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_display_name_length_0, 0);
4487 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
4489 return NDR_ERR_SUCCESS;
4492 _PUBLIC_ void ndr_print_svcctl_GetServiceDisplayNameA(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_GetServiceDisplayNameA *r)
4494 ndr_print_struct(ndr, name, "svcctl_GetServiceDisplayNameA");
4496 if (flags & NDR_SET_VALUES) {
4497 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
4499 if (flags & NDR_IN) {
4500 ndr_print_struct(ndr, "in", "svcctl_GetServiceDisplayNameA");
4502 ndr_print_ptr(ndr, "handle", r->in.handle);
4504 ndr_print_policy_handle(ndr, "handle", r->in.handle);
4506 ndr_print_ptr(ndr, "service_name", r->in.service_name);
4508 if (r->in.service_name) {
4509 ndr_print_string(ndr, "service_name", r->in.service_name);
4512 ndr_print_ptr(ndr, "display_name_length", r->in.display_name_length);
4514 if (r->in.display_name_length) {
4515 ndr_print_uint32(ndr, "display_name_length", *r->in.display_name_length);
4520 if (flags & NDR_OUT) {
4521 ndr_print_struct(ndr, "out", "svcctl_GetServiceDisplayNameA");
4523 ndr_print_ptr(ndr, "display_name", r->out.display_name);
4525 ndr_print_ptr(ndr, "display_name", *r->out.display_name);
4527 if (*r->out.display_name) {
4528 ndr_print_string(ndr, "display_name", *r->out.display_name);
4532 ndr_print_ptr(ndr, "display_name_length", r->out.display_name_length);
4534 if (r->out.display_name_length) {
4535 ndr_print_uint32(ndr, "display_name_length", *r->out.display_name_length);
4538 ndr_print_WERROR(ndr, "result", r->out.result);
4544 static enum ndr_err_code ndr_push_svcctl_GetServiceKeyNameA(struct ndr_push *ndr, int flags, const struct svcctl_GetServiceKeyNameA *r)
4546 if (flags & NDR_IN) {
4547 if (r->in.handle == NULL) {
4548 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
4550 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
4551 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.service_name));
4552 if (r->in.service_name) {
4553 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.service_name, CH_UTF16)));
4554 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
4555 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.service_name, CH_UTF16)));
4556 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));
4558 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.display_name_length));
4559 if (r->in.display_name_length) {
4560 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->in.display_name_length));
4563 if (flags & NDR_OUT) {
4564 if (r->out.key_name == NULL) {
4565 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
4567 NDR_CHECK(ndr_push_unique_ptr(ndr, *r->out.key_name));
4568 if (*r->out.key_name) {
4569 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(*r->out.key_name, CH_UTF16)));
4570 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
4571 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(*r->out.key_name, CH_UTF16)));
4572 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));
4574 NDR_CHECK(ndr_push_unique_ptr(ndr, r->out.display_name_length));
4575 if (r->out.display_name_length) {
4576 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.display_name_length));
4578 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
4580 return NDR_ERR_SUCCESS;
4583 static enum ndr_err_code ndr_pull_svcctl_GetServiceKeyNameA(struct ndr_pull *ndr, int flags, struct svcctl_GetServiceKeyNameA *r)
4585 uint32_t _ptr_service_name;
4586 uint32_t _ptr_key_name;
4587 uint32_t _ptr_display_name_length;
4588 TALLOC_CTX *_mem_save_handle_0;
4589 TALLOC_CTX *_mem_save_service_name_0;
4590 TALLOC_CTX *_mem_save_key_name_0;
4591 TALLOC_CTX *_mem_save_key_name_1;
4592 TALLOC_CTX *_mem_save_display_name_length_0;
4593 if (flags & NDR_IN) {
4594 ZERO_STRUCT(r->out);
4596 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
4597 NDR_PULL_ALLOC(ndr, r->in.handle);
4599 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
4600 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
4601 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
4602 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
4603 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_service_name));
4604 if (_ptr_service_name) {
4605 NDR_PULL_ALLOC(ndr, r->in.service_name);
4607 r->in.service_name = NULL;
4609 if (r->in.service_name) {
4610 _mem_save_service_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
4611 NDR_PULL_SET_MEM_CTX(ndr, r->in.service_name, 0);
4612 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.service_name));
4613 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.service_name));
4614 if (ndr_get_array_length(ndr, &r->in.service_name) > ndr_get_array_size(ndr, &r->in.service_name)) {
4615 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));
4617 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.service_name), sizeof(uint16_t)));
4618 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));
4619 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_service_name_0, 0);
4621 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_display_name_length));
4622 if (_ptr_display_name_length) {
4623 NDR_PULL_ALLOC(ndr, r->in.display_name_length);
4625 r->in.display_name_length = NULL;
4627 if (r->in.display_name_length) {
4628 _mem_save_display_name_length_0 = NDR_PULL_GET_MEM_CTX(ndr);
4629 NDR_PULL_SET_MEM_CTX(ndr, r->in.display_name_length, 0);
4630 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->in.display_name_length));
4631 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_display_name_length_0, 0);
4633 NDR_PULL_ALLOC(ndr, r->out.key_name);
4634 ZERO_STRUCTP(r->out.key_name);
4636 if (flags & NDR_OUT) {
4637 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
4638 NDR_PULL_ALLOC(ndr, r->out.key_name);
4640 _mem_save_key_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
4641 NDR_PULL_SET_MEM_CTX(ndr, r->out.key_name, LIBNDR_FLAG_REF_ALLOC);
4642 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_key_name));
4643 if (_ptr_key_name) {
4644 NDR_PULL_ALLOC(ndr, *r->out.key_name);
4646 *r->out.key_name = NULL;
4648 if (*r->out.key_name) {
4649 _mem_save_key_name_1 = NDR_PULL_GET_MEM_CTX(ndr);
4650 NDR_PULL_SET_MEM_CTX(ndr, *r->out.key_name, 0);
4651 NDR_CHECK(ndr_pull_array_size(ndr, r->out.key_name));
4652 NDR_CHECK(ndr_pull_array_length(ndr, r->out.key_name));
4653 if (ndr_get_array_length(ndr, r->out.key_name) > ndr_get_array_size(ndr, r->out.key_name)) {
4654 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));
4656 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, r->out.key_name), sizeof(uint16_t)));
4657 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));
4658 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_key_name_1, 0);
4660 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_key_name_0, LIBNDR_FLAG_REF_ALLOC);
4661 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_display_name_length));
4662 if (_ptr_display_name_length) {
4663 NDR_PULL_ALLOC(ndr, r->out.display_name_length);
4665 r->out.display_name_length = NULL;
4667 if (r->out.display_name_length) {
4668 _mem_save_display_name_length_0 = NDR_PULL_GET_MEM_CTX(ndr);
4669 NDR_PULL_SET_MEM_CTX(ndr, r->out.display_name_length, 0);
4670 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.display_name_length));
4671 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_display_name_length_0, 0);
4673 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
4675 return NDR_ERR_SUCCESS;
4678 _PUBLIC_ void ndr_print_svcctl_GetServiceKeyNameA(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_GetServiceKeyNameA *r)
4680 ndr_print_struct(ndr, name, "svcctl_GetServiceKeyNameA");
4682 if (flags & NDR_SET_VALUES) {
4683 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
4685 if (flags & NDR_IN) {
4686 ndr_print_struct(ndr, "in", "svcctl_GetServiceKeyNameA");
4688 ndr_print_ptr(ndr, "handle", r->in.handle);
4690 ndr_print_policy_handle(ndr, "handle", r->in.handle);
4692 ndr_print_ptr(ndr, "service_name", r->in.service_name);
4694 if (r->in.service_name) {
4695 ndr_print_string(ndr, "service_name", r->in.service_name);
4698 ndr_print_ptr(ndr, "display_name_length", r->in.display_name_length);
4700 if (r->in.display_name_length) {
4701 ndr_print_uint32(ndr, "display_name_length", *r->in.display_name_length);
4706 if (flags & NDR_OUT) {
4707 ndr_print_struct(ndr, "out", "svcctl_GetServiceKeyNameA");
4709 ndr_print_ptr(ndr, "key_name", r->out.key_name);
4711 ndr_print_ptr(ndr, "key_name", *r->out.key_name);
4713 if (*r->out.key_name) {
4714 ndr_print_string(ndr, "key_name", *r->out.key_name);
4718 ndr_print_ptr(ndr, "display_name_length", r->out.display_name_length);
4720 if (r->out.display_name_length) {
4721 ndr_print_uint32(ndr, "display_name_length", *r->out.display_name_length);
4724 ndr_print_WERROR(ndr, "result", r->out.result);
4730 static enum ndr_err_code ndr_push_svcctl_GetCurrentGroupeStateW(struct ndr_push *ndr, int flags, const struct svcctl_GetCurrentGroupeStateW *r)
4732 if (flags & NDR_IN) {
4734 if (flags & NDR_OUT) {
4735 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
4737 return NDR_ERR_SUCCESS;
4740 static enum ndr_err_code ndr_pull_svcctl_GetCurrentGroupeStateW(struct ndr_pull *ndr, int flags, struct svcctl_GetCurrentGroupeStateW *r)
4742 if (flags & NDR_IN) {
4744 if (flags & NDR_OUT) {
4745 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
4747 return NDR_ERR_SUCCESS;
4750 _PUBLIC_ void ndr_print_svcctl_GetCurrentGroupeStateW(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_GetCurrentGroupeStateW *r)
4752 ndr_print_struct(ndr, name, "svcctl_GetCurrentGroupeStateW");
4754 if (flags & NDR_SET_VALUES) {
4755 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
4757 if (flags & NDR_IN) {
4758 ndr_print_struct(ndr, "in", "svcctl_GetCurrentGroupeStateW");
4762 if (flags & NDR_OUT) {
4763 ndr_print_struct(ndr, "out", "svcctl_GetCurrentGroupeStateW");
4765 ndr_print_WERROR(ndr, "result", r->out.result);
4771 static enum ndr_err_code ndr_push_svcctl_EnumServiceGroupW(struct ndr_push *ndr, int flags, const struct svcctl_EnumServiceGroupW *r)
4773 if (flags & NDR_IN) {
4775 if (flags & NDR_OUT) {
4776 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
4778 return NDR_ERR_SUCCESS;
4781 static enum ndr_err_code ndr_pull_svcctl_EnumServiceGroupW(struct ndr_pull *ndr, int flags, struct svcctl_EnumServiceGroupW *r)
4783 if (flags & NDR_IN) {
4785 if (flags & NDR_OUT) {
4786 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
4788 return NDR_ERR_SUCCESS;
4791 _PUBLIC_ void ndr_print_svcctl_EnumServiceGroupW(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_EnumServiceGroupW *r)
4793 ndr_print_struct(ndr, name, "svcctl_EnumServiceGroupW");
4795 if (flags & NDR_SET_VALUES) {
4796 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
4798 if (flags & NDR_IN) {
4799 ndr_print_struct(ndr, "in", "svcctl_EnumServiceGroupW");
4803 if (flags & NDR_OUT) {
4804 ndr_print_struct(ndr, "out", "svcctl_EnumServiceGroupW");
4806 ndr_print_WERROR(ndr, "result", r->out.result);
4812 static enum ndr_err_code ndr_push_svcctl_ChangeServiceConfig2A(struct ndr_push *ndr, int flags, const struct svcctl_ChangeServiceConfig2A *r)
4814 if (flags & NDR_IN) {
4815 if (r->in.handle == NULL) {
4816 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
4818 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
4819 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.info_level));
4820 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.info));
4822 NDR_CHECK(ndr_push_uint8(ndr, NDR_SCALARS, *r->in.info));
4825 if (flags & NDR_OUT) {
4826 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
4828 return NDR_ERR_SUCCESS;
4831 static enum ndr_err_code ndr_pull_svcctl_ChangeServiceConfig2A(struct ndr_pull *ndr, int flags, struct svcctl_ChangeServiceConfig2A *r)
4834 TALLOC_CTX *_mem_save_handle_0;
4835 TALLOC_CTX *_mem_save_info_0;
4836 if (flags & NDR_IN) {
4837 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
4838 NDR_PULL_ALLOC(ndr, r->in.handle);
4840 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
4841 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
4842 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
4843 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
4844 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.info_level));
4845 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_info));
4847 NDR_PULL_ALLOC(ndr, r->in.info);
4852 _mem_save_info_0 = NDR_PULL_GET_MEM_CTX(ndr);
4853 NDR_PULL_SET_MEM_CTX(ndr, r->in.info, 0);
4854 NDR_CHECK(ndr_pull_uint8(ndr, NDR_SCALARS, r->in.info));
4855 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_info_0, 0);
4858 if (flags & NDR_OUT) {
4859 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
4861 return NDR_ERR_SUCCESS;
4864 _PUBLIC_ void ndr_print_svcctl_ChangeServiceConfig2A(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_ChangeServiceConfig2A *r)
4866 ndr_print_struct(ndr, name, "svcctl_ChangeServiceConfig2A");
4868 if (flags & NDR_SET_VALUES) {
4869 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
4871 if (flags & NDR_IN) {
4872 ndr_print_struct(ndr, "in", "svcctl_ChangeServiceConfig2A");
4874 ndr_print_ptr(ndr, "handle", r->in.handle);
4876 ndr_print_policy_handle(ndr, "handle", r->in.handle);
4878 ndr_print_uint32(ndr, "info_level", r->in.info_level);
4879 ndr_print_ptr(ndr, "info", r->in.info);
4882 ndr_print_uint8(ndr, "info", *r->in.info);
4887 if (flags & NDR_OUT) {
4888 ndr_print_struct(ndr, "out", "svcctl_ChangeServiceConfig2A");
4890 ndr_print_WERROR(ndr, "result", r->out.result);
4896 static enum ndr_err_code ndr_push_svcctl_ChangeServiceConfig2W(struct ndr_push *ndr, int flags, const struct svcctl_ChangeServiceConfig2W *r)
4898 if (flags & NDR_IN) {
4899 if (r->in.handle == NULL) {
4900 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
4902 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
4903 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.info_level));
4904 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.info));
4906 NDR_CHECK(ndr_push_uint8(ndr, NDR_SCALARS, *r->in.info));
4909 if (flags & NDR_OUT) {
4910 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
4912 return NDR_ERR_SUCCESS;
4915 static enum ndr_err_code ndr_pull_svcctl_ChangeServiceConfig2W(struct ndr_pull *ndr, int flags, struct svcctl_ChangeServiceConfig2W *r)
4918 TALLOC_CTX *_mem_save_handle_0;
4919 TALLOC_CTX *_mem_save_info_0;
4920 if (flags & NDR_IN) {
4921 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
4922 NDR_PULL_ALLOC(ndr, r->in.handle);
4924 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
4925 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
4926 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
4927 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
4928 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.info_level));
4929 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_info));
4931 NDR_PULL_ALLOC(ndr, r->in.info);
4936 _mem_save_info_0 = NDR_PULL_GET_MEM_CTX(ndr);
4937 NDR_PULL_SET_MEM_CTX(ndr, r->in.info, 0);
4938 NDR_CHECK(ndr_pull_uint8(ndr, NDR_SCALARS, r->in.info));
4939 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_info_0, 0);
4942 if (flags & NDR_OUT) {
4943 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
4945 return NDR_ERR_SUCCESS;
4948 _PUBLIC_ void ndr_print_svcctl_ChangeServiceConfig2W(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_ChangeServiceConfig2W *r)
4950 ndr_print_struct(ndr, name, "svcctl_ChangeServiceConfig2W");
4952 if (flags & NDR_SET_VALUES) {
4953 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
4955 if (flags & NDR_IN) {
4956 ndr_print_struct(ndr, "in", "svcctl_ChangeServiceConfig2W");
4958 ndr_print_ptr(ndr, "handle", r->in.handle);
4960 ndr_print_policy_handle(ndr, "handle", r->in.handle);
4962 ndr_print_uint32(ndr, "info_level", r->in.info_level);
4963 ndr_print_ptr(ndr, "info", r->in.info);
4966 ndr_print_uint8(ndr, "info", *r->in.info);
4971 if (flags & NDR_OUT) {
4972 ndr_print_struct(ndr, "out", "svcctl_ChangeServiceConfig2W");
4974 ndr_print_WERROR(ndr, "result", r->out.result);
4980 static enum ndr_err_code ndr_push_svcctl_QueryServiceConfig2A(struct ndr_push *ndr, int flags, const struct svcctl_QueryServiceConfig2A *r)
4982 if (flags & NDR_IN) {
4983 if (r->in.handle == NULL) {
4984 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
4986 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
4987 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.info_level));
4988 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.buf_size));
4990 if (flags & NDR_OUT) {
4991 NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->out.buffer, r->in.buf_size));
4992 if (r->out.bytes_needed == NULL) {
4993 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
4995 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.bytes_needed));
4996 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
4998 return NDR_ERR_SUCCESS;
5001 static enum ndr_err_code ndr_pull_svcctl_QueryServiceConfig2A(struct ndr_pull *ndr, int flags, struct svcctl_QueryServiceConfig2A *r)
5003 TALLOC_CTX *_mem_save_handle_0;
5004 TALLOC_CTX *_mem_save_bytes_needed_0;
5005 if (flags & NDR_IN) {
5006 ZERO_STRUCT(r->out);
5008 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
5009 NDR_PULL_ALLOC(ndr, r->in.handle);
5011 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
5012 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
5013 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
5014 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
5015 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.info_level));
5016 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.buf_size));
5017 NDR_PULL_ALLOC(ndr, r->out.bytes_needed);
5018 ZERO_STRUCTP(r->out.bytes_needed);
5020 if (flags & NDR_OUT) {
5021 NDR_PULL_ALLOC_N(ndr, r->out.buffer, r->in.buf_size);
5022 NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->out.buffer, r->in.buf_size));
5023 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
5024 NDR_PULL_ALLOC(ndr, r->out.bytes_needed);
5026 _mem_save_bytes_needed_0 = NDR_PULL_GET_MEM_CTX(ndr);
5027 NDR_PULL_SET_MEM_CTX(ndr, r->out.bytes_needed, LIBNDR_FLAG_REF_ALLOC);
5028 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.bytes_needed));
5029 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_bytes_needed_0, LIBNDR_FLAG_REF_ALLOC);
5030 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
5032 return NDR_ERR_SUCCESS;
5035 _PUBLIC_ void ndr_print_svcctl_QueryServiceConfig2A(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_QueryServiceConfig2A *r)
5037 ndr_print_struct(ndr, name, "svcctl_QueryServiceConfig2A");
5039 if (flags & NDR_SET_VALUES) {
5040 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
5042 if (flags & NDR_IN) {
5043 ndr_print_struct(ndr, "in", "svcctl_QueryServiceConfig2A");
5045 ndr_print_ptr(ndr, "handle", r->in.handle);
5047 ndr_print_policy_handle(ndr, "handle", r->in.handle);
5049 ndr_print_uint32(ndr, "info_level", r->in.info_level);
5050 ndr_print_uint32(ndr, "buf_size", r->in.buf_size);
5053 if (flags & NDR_OUT) {
5054 ndr_print_struct(ndr, "out", "svcctl_QueryServiceConfig2A");
5056 ndr_print_array_uint8(ndr, "buffer", r->out.buffer, r->in.buf_size);
5057 ndr_print_ptr(ndr, "bytes_needed", r->out.bytes_needed);
5059 ndr_print_uint32(ndr, "bytes_needed", *r->out.bytes_needed);
5061 ndr_print_WERROR(ndr, "result", r->out.result);
5067 static enum ndr_err_code ndr_push_svcctl_QueryServiceConfig2W(struct ndr_push *ndr, int flags, const struct svcctl_QueryServiceConfig2W *r)
5069 if (flags & NDR_IN) {
5070 if (r->in.handle == NULL) {
5071 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
5073 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
5074 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.info_level));
5075 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.buf_size));
5077 if (flags & NDR_OUT) {
5078 NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->out.buffer, r->in.buf_size));
5079 if (r->out.bytes_needed == NULL) {
5080 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
5082 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.bytes_needed));
5083 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
5085 return NDR_ERR_SUCCESS;
5088 static enum ndr_err_code ndr_pull_svcctl_QueryServiceConfig2W(struct ndr_pull *ndr, int flags, struct svcctl_QueryServiceConfig2W *r)
5090 TALLOC_CTX *_mem_save_handle_0;
5091 TALLOC_CTX *_mem_save_bytes_needed_0;
5092 if (flags & NDR_IN) {
5093 ZERO_STRUCT(r->out);
5095 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
5096 NDR_PULL_ALLOC(ndr, r->in.handle);
5098 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
5099 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
5100 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
5101 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
5102 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.info_level));
5103 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.buf_size));
5104 NDR_PULL_ALLOC(ndr, r->out.bytes_needed);
5105 ZERO_STRUCTP(r->out.bytes_needed);
5107 if (flags & NDR_OUT) {
5108 NDR_PULL_ALLOC_N(ndr, r->out.buffer, r->in.buf_size);
5109 NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->out.buffer, r->in.buf_size));
5110 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
5111 NDR_PULL_ALLOC(ndr, r->out.bytes_needed);
5113 _mem_save_bytes_needed_0 = NDR_PULL_GET_MEM_CTX(ndr);
5114 NDR_PULL_SET_MEM_CTX(ndr, r->out.bytes_needed, LIBNDR_FLAG_REF_ALLOC);
5115 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.bytes_needed));
5116 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_bytes_needed_0, LIBNDR_FLAG_REF_ALLOC);
5117 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
5119 return NDR_ERR_SUCCESS;
5122 _PUBLIC_ void ndr_print_svcctl_QueryServiceConfig2W(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_QueryServiceConfig2W *r)
5124 ndr_print_struct(ndr, name, "svcctl_QueryServiceConfig2W");
5126 if (flags & NDR_SET_VALUES) {
5127 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
5129 if (flags & NDR_IN) {
5130 ndr_print_struct(ndr, "in", "svcctl_QueryServiceConfig2W");
5132 ndr_print_ptr(ndr, "handle", r->in.handle);
5134 ndr_print_policy_handle(ndr, "handle", r->in.handle);
5136 ndr_print_uint32(ndr, "info_level", r->in.info_level);
5137 ndr_print_uint32(ndr, "buf_size", r->in.buf_size);
5140 if (flags & NDR_OUT) {
5141 ndr_print_struct(ndr, "out", "svcctl_QueryServiceConfig2W");
5143 ndr_print_array_uint8(ndr, "buffer", r->out.buffer, r->in.buf_size);
5144 ndr_print_ptr(ndr, "bytes_needed", r->out.bytes_needed);
5146 ndr_print_uint32(ndr, "bytes_needed", *r->out.bytes_needed);
5148 ndr_print_WERROR(ndr, "result", r->out.result);
5154 static enum ndr_err_code ndr_push_svcctl_QueryServiceStatusEx(struct ndr_push *ndr, int flags, const struct svcctl_QueryServiceStatusEx *r)
5156 if (flags & NDR_IN) {
5157 if (r->in.handle == NULL) {
5158 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
5160 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
5161 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.info_level));
5162 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.buf_size));
5164 if (flags & NDR_OUT) {
5165 NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->out.buffer, r->in.buf_size));
5166 if (r->out.bytes_needed == NULL) {
5167 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
5169 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.bytes_needed));
5170 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
5172 return NDR_ERR_SUCCESS;
5175 static enum ndr_err_code ndr_pull_svcctl_QueryServiceStatusEx(struct ndr_pull *ndr, int flags, struct svcctl_QueryServiceStatusEx *r)
5177 TALLOC_CTX *_mem_save_handle_0;
5178 TALLOC_CTX *_mem_save_bytes_needed_0;
5179 if (flags & NDR_IN) {
5180 ZERO_STRUCT(r->out);
5182 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
5183 NDR_PULL_ALLOC(ndr, r->in.handle);
5185 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
5186 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
5187 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
5188 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
5189 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.info_level));
5190 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.buf_size));
5191 NDR_PULL_ALLOC(ndr, r->out.bytes_needed);
5192 ZERO_STRUCTP(r->out.bytes_needed);
5194 if (flags & NDR_OUT) {
5195 NDR_PULL_ALLOC_N(ndr, r->out.buffer, r->in.buf_size);
5196 NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->out.buffer, r->in.buf_size));
5197 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
5198 NDR_PULL_ALLOC(ndr, r->out.bytes_needed);
5200 _mem_save_bytes_needed_0 = NDR_PULL_GET_MEM_CTX(ndr);
5201 NDR_PULL_SET_MEM_CTX(ndr, r->out.bytes_needed, LIBNDR_FLAG_REF_ALLOC);
5202 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.bytes_needed));
5203 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_bytes_needed_0, LIBNDR_FLAG_REF_ALLOC);
5204 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
5206 return NDR_ERR_SUCCESS;
5209 _PUBLIC_ void ndr_print_svcctl_QueryServiceStatusEx(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_QueryServiceStatusEx *r)
5211 ndr_print_struct(ndr, name, "svcctl_QueryServiceStatusEx");
5213 if (flags & NDR_SET_VALUES) {
5214 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
5216 if (flags & NDR_IN) {
5217 ndr_print_struct(ndr, "in", "svcctl_QueryServiceStatusEx");
5219 ndr_print_ptr(ndr, "handle", r->in.handle);
5221 ndr_print_policy_handle(ndr, "handle", r->in.handle);
5223 ndr_print_uint32(ndr, "info_level", r->in.info_level);
5224 ndr_print_uint32(ndr, "buf_size", r->in.buf_size);
5227 if (flags & NDR_OUT) {
5228 ndr_print_struct(ndr, "out", "svcctl_QueryServiceStatusEx");
5230 ndr_print_array_uint8(ndr, "buffer", r->out.buffer, r->in.buf_size);
5231 ndr_print_ptr(ndr, "bytes_needed", r->out.bytes_needed);
5233 ndr_print_uint32(ndr, "bytes_needed", *r->out.bytes_needed);
5235 ndr_print_WERROR(ndr, "result", r->out.result);
5241 static enum ndr_err_code ndr_push_EnumServicesStatusExA(struct ndr_push *ndr, int flags, const struct EnumServicesStatusExA *r)
5243 if (flags & NDR_IN) {
5244 if (r->in.scmanager == NULL) {
5245 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
5247 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.scmanager));
5248 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.info_level));
5249 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.type));
5250 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.state));
5251 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.buf_size));
5252 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.resume_handle));
5253 if (r->in.resume_handle) {
5254 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->in.resume_handle));
5257 if (flags & NDR_OUT) {
5258 NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->out.services, r->in.buf_size));
5259 if (r->out.bytes_needed == NULL) {
5260 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
5262 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.bytes_needed));
5263 if (r->out.service_returned == NULL) {
5264 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
5266 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.service_returned));
5267 NDR_CHECK(ndr_push_unique_ptr(ndr, r->out.resume_handle));
5268 if (r->out.resume_handle) {
5269 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.resume_handle));
5271 if (r->out.group_name == NULL) {
5272 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
5274 NDR_CHECK(ndr_push_unique_ptr(ndr, *r->out.group_name));
5275 if (*r->out.group_name) {
5276 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(*r->out.group_name, CH_UTF16)));
5277 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
5278 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(*r->out.group_name, CH_UTF16)));
5279 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));
5281 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
5283 return NDR_ERR_SUCCESS;
5286 static enum ndr_err_code ndr_pull_EnumServicesStatusExA(struct ndr_pull *ndr, int flags, struct EnumServicesStatusExA *r)
5288 uint32_t _ptr_resume_handle;
5289 uint32_t _ptr_group_name;
5290 TALLOC_CTX *_mem_save_scmanager_0;
5291 TALLOC_CTX *_mem_save_bytes_needed_0;
5292 TALLOC_CTX *_mem_save_service_returned_0;
5293 TALLOC_CTX *_mem_save_resume_handle_0;
5294 TALLOC_CTX *_mem_save_group_name_0;
5295 TALLOC_CTX *_mem_save_group_name_1;
5296 if (flags & NDR_IN) {
5297 ZERO_STRUCT(r->out);
5299 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
5300 NDR_PULL_ALLOC(ndr, r->in.scmanager);
5302 _mem_save_scmanager_0 = NDR_PULL_GET_MEM_CTX(ndr);
5303 NDR_PULL_SET_MEM_CTX(ndr, r->in.scmanager, LIBNDR_FLAG_REF_ALLOC);
5304 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.scmanager));
5305 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_scmanager_0, LIBNDR_FLAG_REF_ALLOC);
5306 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.info_level));
5307 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.type));
5308 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.state));
5309 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.buf_size));
5310 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_resume_handle));
5311 if (_ptr_resume_handle) {
5312 NDR_PULL_ALLOC(ndr, r->in.resume_handle);
5314 r->in.resume_handle = NULL;
5316 if (r->in.resume_handle) {
5317 _mem_save_resume_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
5318 NDR_PULL_SET_MEM_CTX(ndr, r->in.resume_handle, 0);
5319 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->in.resume_handle));
5320 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_resume_handle_0, 0);
5322 NDR_PULL_ALLOC(ndr, r->out.bytes_needed);
5323 ZERO_STRUCTP(r->out.bytes_needed);
5324 NDR_PULL_ALLOC(ndr, r->out.service_returned);
5325 ZERO_STRUCTP(r->out.service_returned);
5326 NDR_PULL_ALLOC(ndr, r->out.group_name);
5327 ZERO_STRUCTP(r->out.group_name);
5329 if (flags & NDR_OUT) {
5330 NDR_PULL_ALLOC_N(ndr, r->out.services, r->in.buf_size);
5331 NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->out.services, r->in.buf_size));
5332 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
5333 NDR_PULL_ALLOC(ndr, r->out.bytes_needed);
5335 _mem_save_bytes_needed_0 = NDR_PULL_GET_MEM_CTX(ndr);
5336 NDR_PULL_SET_MEM_CTX(ndr, r->out.bytes_needed, LIBNDR_FLAG_REF_ALLOC);
5337 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.bytes_needed));
5338 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_bytes_needed_0, LIBNDR_FLAG_REF_ALLOC);
5339 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
5340 NDR_PULL_ALLOC(ndr, r->out.service_returned);
5342 _mem_save_service_returned_0 = NDR_PULL_GET_MEM_CTX(ndr);
5343 NDR_PULL_SET_MEM_CTX(ndr, r->out.service_returned, LIBNDR_FLAG_REF_ALLOC);
5344 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.service_returned));
5345 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_service_returned_0, LIBNDR_FLAG_REF_ALLOC);
5346 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_resume_handle));
5347 if (_ptr_resume_handle) {
5348 NDR_PULL_ALLOC(ndr, r->out.resume_handle);
5350 r->out.resume_handle = NULL;
5352 if (r->out.resume_handle) {
5353 _mem_save_resume_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
5354 NDR_PULL_SET_MEM_CTX(ndr, r->out.resume_handle, 0);
5355 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.resume_handle));
5356 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_resume_handle_0, 0);
5358 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
5359 NDR_PULL_ALLOC(ndr, r->out.group_name);
5361 _mem_save_group_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
5362 NDR_PULL_SET_MEM_CTX(ndr, r->out.group_name, LIBNDR_FLAG_REF_ALLOC);
5363 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_group_name));
5364 if (_ptr_group_name) {
5365 NDR_PULL_ALLOC(ndr, *r->out.group_name);
5367 *r->out.group_name = NULL;
5369 if (*r->out.group_name) {
5370 _mem_save_group_name_1 = NDR_PULL_GET_MEM_CTX(ndr);
5371 NDR_PULL_SET_MEM_CTX(ndr, *r->out.group_name, 0);
5372 NDR_CHECK(ndr_pull_array_size(ndr, r->out.group_name));
5373 NDR_CHECK(ndr_pull_array_length(ndr, r->out.group_name));
5374 if (ndr_get_array_length(ndr, r->out.group_name) > ndr_get_array_size(ndr, r->out.group_name)) {
5375 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));
5377 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, r->out.group_name), sizeof(uint16_t)));
5378 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));
5379 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_group_name_1, 0);
5381 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_group_name_0, LIBNDR_FLAG_REF_ALLOC);
5382 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
5384 return NDR_ERR_SUCCESS;
5387 _PUBLIC_ void ndr_print_EnumServicesStatusExA(struct ndr_print *ndr, const char *name, int flags, const struct EnumServicesStatusExA *r)
5389 ndr_print_struct(ndr, name, "EnumServicesStatusExA");
5391 if (flags & NDR_SET_VALUES) {
5392 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
5394 if (flags & NDR_IN) {
5395 ndr_print_struct(ndr, "in", "EnumServicesStatusExA");
5397 ndr_print_ptr(ndr, "scmanager", r->in.scmanager);
5399 ndr_print_policy_handle(ndr, "scmanager", r->in.scmanager);
5401 ndr_print_uint32(ndr, "info_level", r->in.info_level);
5402 ndr_print_uint32(ndr, "type", r->in.type);
5403 ndr_print_uint32(ndr, "state", r->in.state);
5404 ndr_print_uint32(ndr, "buf_size", r->in.buf_size);
5405 ndr_print_ptr(ndr, "resume_handle", r->in.resume_handle);
5407 if (r->in.resume_handle) {
5408 ndr_print_uint32(ndr, "resume_handle", *r->in.resume_handle);
5413 if (flags & NDR_OUT) {
5414 ndr_print_struct(ndr, "out", "EnumServicesStatusExA");
5416 ndr_print_array_uint8(ndr, "services", r->out.services, r->in.buf_size);
5417 ndr_print_ptr(ndr, "bytes_needed", r->out.bytes_needed);
5419 ndr_print_uint32(ndr, "bytes_needed", *r->out.bytes_needed);
5421 ndr_print_ptr(ndr, "service_returned", r->out.service_returned);
5423 ndr_print_uint32(ndr, "service_returned", *r->out.service_returned);
5425 ndr_print_ptr(ndr, "resume_handle", r->out.resume_handle);
5427 if (r->out.resume_handle) {
5428 ndr_print_uint32(ndr, "resume_handle", *r->out.resume_handle);
5431 ndr_print_ptr(ndr, "group_name", r->out.group_name);
5433 ndr_print_ptr(ndr, "group_name", *r->out.group_name);
5435 if (*r->out.group_name) {
5436 ndr_print_string(ndr, "group_name", *r->out.group_name);
5440 ndr_print_WERROR(ndr, "result", r->out.result);
5446 static enum ndr_err_code ndr_push_EnumServicesStatusExW(struct ndr_push *ndr, int flags, const struct EnumServicesStatusExW *r)
5448 if (flags & NDR_IN) {
5449 if (r->in.scmanager == NULL) {
5450 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
5452 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.scmanager));
5453 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.info_level));
5454 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.type));
5455 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.state));
5456 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.buf_size));
5457 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.resume_handle));
5458 if (r->in.resume_handle) {
5459 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->in.resume_handle));
5462 if (flags & NDR_OUT) {
5463 NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->out.services, r->in.buf_size));
5464 if (r->out.bytes_needed == NULL) {
5465 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
5467 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.bytes_needed));
5468 if (r->out.service_returned == NULL) {
5469 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
5471 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.service_returned));
5472 NDR_CHECK(ndr_push_unique_ptr(ndr, r->out.resume_handle));
5473 if (r->out.resume_handle) {
5474 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.resume_handle));
5476 if (r->out.group_name == NULL) {
5477 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
5479 NDR_CHECK(ndr_push_unique_ptr(ndr, *r->out.group_name));
5480 if (*r->out.group_name) {
5481 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(*r->out.group_name, CH_UTF16)));
5482 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
5483 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(*r->out.group_name, CH_UTF16)));
5484 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));
5486 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
5488 return NDR_ERR_SUCCESS;
5491 static enum ndr_err_code ndr_pull_EnumServicesStatusExW(struct ndr_pull *ndr, int flags, struct EnumServicesStatusExW *r)
5493 uint32_t _ptr_resume_handle;
5494 uint32_t _ptr_group_name;
5495 TALLOC_CTX *_mem_save_scmanager_0;
5496 TALLOC_CTX *_mem_save_bytes_needed_0;
5497 TALLOC_CTX *_mem_save_service_returned_0;
5498 TALLOC_CTX *_mem_save_resume_handle_0;
5499 TALLOC_CTX *_mem_save_group_name_0;
5500 TALLOC_CTX *_mem_save_group_name_1;
5501 if (flags & NDR_IN) {
5502 ZERO_STRUCT(r->out);
5504 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
5505 NDR_PULL_ALLOC(ndr, r->in.scmanager);
5507 _mem_save_scmanager_0 = NDR_PULL_GET_MEM_CTX(ndr);
5508 NDR_PULL_SET_MEM_CTX(ndr, r->in.scmanager, LIBNDR_FLAG_REF_ALLOC);
5509 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.scmanager));
5510 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_scmanager_0, LIBNDR_FLAG_REF_ALLOC);
5511 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.info_level));
5512 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.type));
5513 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.state));
5514 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.buf_size));
5515 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_resume_handle));
5516 if (_ptr_resume_handle) {
5517 NDR_PULL_ALLOC(ndr, r->in.resume_handle);
5519 r->in.resume_handle = NULL;
5521 if (r->in.resume_handle) {
5522 _mem_save_resume_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
5523 NDR_PULL_SET_MEM_CTX(ndr, r->in.resume_handle, 0);
5524 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->in.resume_handle));
5525 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_resume_handle_0, 0);
5527 NDR_PULL_ALLOC(ndr, r->out.bytes_needed);
5528 ZERO_STRUCTP(r->out.bytes_needed);
5529 NDR_PULL_ALLOC(ndr, r->out.service_returned);
5530 ZERO_STRUCTP(r->out.service_returned);
5531 NDR_PULL_ALLOC(ndr, r->out.group_name);
5532 ZERO_STRUCTP(r->out.group_name);
5534 if (flags & NDR_OUT) {
5535 NDR_PULL_ALLOC_N(ndr, r->out.services, r->in.buf_size);
5536 NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->out.services, r->in.buf_size));
5537 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
5538 NDR_PULL_ALLOC(ndr, r->out.bytes_needed);
5540 _mem_save_bytes_needed_0 = NDR_PULL_GET_MEM_CTX(ndr);
5541 NDR_PULL_SET_MEM_CTX(ndr, r->out.bytes_needed, LIBNDR_FLAG_REF_ALLOC);
5542 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.bytes_needed));
5543 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_bytes_needed_0, LIBNDR_FLAG_REF_ALLOC);
5544 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
5545 NDR_PULL_ALLOC(ndr, r->out.service_returned);
5547 _mem_save_service_returned_0 = NDR_PULL_GET_MEM_CTX(ndr);
5548 NDR_PULL_SET_MEM_CTX(ndr, r->out.service_returned, LIBNDR_FLAG_REF_ALLOC);
5549 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.service_returned));
5550 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_service_returned_0, LIBNDR_FLAG_REF_ALLOC);
5551 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_resume_handle));
5552 if (_ptr_resume_handle) {
5553 NDR_PULL_ALLOC(ndr, r->out.resume_handle);
5555 r->out.resume_handle = NULL;
5557 if (r->out.resume_handle) {
5558 _mem_save_resume_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
5559 NDR_PULL_SET_MEM_CTX(ndr, r->out.resume_handle, 0);
5560 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.resume_handle));
5561 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_resume_handle_0, 0);
5563 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
5564 NDR_PULL_ALLOC(ndr, r->out.group_name);
5566 _mem_save_group_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
5567 NDR_PULL_SET_MEM_CTX(ndr, r->out.group_name, LIBNDR_FLAG_REF_ALLOC);
5568 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_group_name));
5569 if (_ptr_group_name) {
5570 NDR_PULL_ALLOC(ndr, *r->out.group_name);
5572 *r->out.group_name = NULL;
5574 if (*r->out.group_name) {
5575 _mem_save_group_name_1 = NDR_PULL_GET_MEM_CTX(ndr);
5576 NDR_PULL_SET_MEM_CTX(ndr, *r->out.group_name, 0);
5577 NDR_CHECK(ndr_pull_array_size(ndr, r->out.group_name));
5578 NDR_CHECK(ndr_pull_array_length(ndr, r->out.group_name));
5579 if (ndr_get_array_length(ndr, r->out.group_name) > ndr_get_array_size(ndr, r->out.group_name)) {
5580 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));
5582 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, r->out.group_name), sizeof(uint16_t)));
5583 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));
5584 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_group_name_1, 0);
5586 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_group_name_0, LIBNDR_FLAG_REF_ALLOC);
5587 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
5589 return NDR_ERR_SUCCESS;
5592 _PUBLIC_ void ndr_print_EnumServicesStatusExW(struct ndr_print *ndr, const char *name, int flags, const struct EnumServicesStatusExW *r)
5594 ndr_print_struct(ndr, name, "EnumServicesStatusExW");
5596 if (flags & NDR_SET_VALUES) {
5597 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
5599 if (flags & NDR_IN) {
5600 ndr_print_struct(ndr, "in", "EnumServicesStatusExW");
5602 ndr_print_ptr(ndr, "scmanager", r->in.scmanager);
5604 ndr_print_policy_handle(ndr, "scmanager", r->in.scmanager);
5606 ndr_print_uint32(ndr, "info_level", r->in.info_level);
5607 ndr_print_uint32(ndr, "type", r->in.type);
5608 ndr_print_uint32(ndr, "state", r->in.state);
5609 ndr_print_uint32(ndr, "buf_size", r->in.buf_size);
5610 ndr_print_ptr(ndr, "resume_handle", r->in.resume_handle);
5612 if (r->in.resume_handle) {
5613 ndr_print_uint32(ndr, "resume_handle", *r->in.resume_handle);
5618 if (flags & NDR_OUT) {
5619 ndr_print_struct(ndr, "out", "EnumServicesStatusExW");
5621 ndr_print_array_uint8(ndr, "services", r->out.services, r->in.buf_size);
5622 ndr_print_ptr(ndr, "bytes_needed", r->out.bytes_needed);
5624 ndr_print_uint32(ndr, "bytes_needed", *r->out.bytes_needed);
5626 ndr_print_ptr(ndr, "service_returned", r->out.service_returned);
5628 ndr_print_uint32(ndr, "service_returned", *r->out.service_returned);
5630 ndr_print_ptr(ndr, "resume_handle", r->out.resume_handle);
5632 if (r->out.resume_handle) {
5633 ndr_print_uint32(ndr, "resume_handle", *r->out.resume_handle);
5636 ndr_print_ptr(ndr, "group_name", r->out.group_name);
5638 ndr_print_ptr(ndr, "group_name", *r->out.group_name);
5640 if (*r->out.group_name) {
5641 ndr_print_string(ndr, "group_name", *r->out.group_name);
5645 ndr_print_WERROR(ndr, "result", r->out.result);
5651 static enum ndr_err_code ndr_push_svcctl_SCSendTSMessage(struct ndr_push *ndr, int flags, const struct svcctl_SCSendTSMessage *r)
5653 if (flags & NDR_IN) {
5655 if (flags & NDR_OUT) {
5656 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
5658 return NDR_ERR_SUCCESS;
5661 static enum ndr_err_code ndr_pull_svcctl_SCSendTSMessage(struct ndr_pull *ndr, int flags, struct svcctl_SCSendTSMessage *r)
5663 if (flags & NDR_IN) {
5665 if (flags & NDR_OUT) {
5666 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
5668 return NDR_ERR_SUCCESS;
5671 _PUBLIC_ void ndr_print_svcctl_SCSendTSMessage(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_SCSendTSMessage *r)
5673 ndr_print_struct(ndr, name, "svcctl_SCSendTSMessage");
5675 if (flags & NDR_SET_VALUES) {
5676 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
5678 if (flags & NDR_IN) {
5679 ndr_print_struct(ndr, "in", "svcctl_SCSendTSMessage");
5683 if (flags & NDR_OUT) {
5684 ndr_print_struct(ndr, "out", "svcctl_SCSendTSMessage");
5686 ndr_print_WERROR(ndr, "result", r->out.result);
5692 static const struct ndr_interface_call svcctl_calls[] = {
5694 "svcctl_CloseServiceHandle",
5695 sizeof(struct svcctl_CloseServiceHandle),
5696 (ndr_push_flags_fn_t) ndr_push_svcctl_CloseServiceHandle,
5697 (ndr_pull_flags_fn_t) ndr_pull_svcctl_CloseServiceHandle,
5698 (ndr_print_function_t) ndr_print_svcctl_CloseServiceHandle,
5702 "svcctl_ControlService",
5703 sizeof(struct svcctl_ControlService),
5704 (ndr_push_flags_fn_t) ndr_push_svcctl_ControlService,
5705 (ndr_pull_flags_fn_t) ndr_pull_svcctl_ControlService,
5706 (ndr_print_function_t) ndr_print_svcctl_ControlService,
5710 "svcctl_DeleteService",
5711 sizeof(struct svcctl_DeleteService),
5712 (ndr_push_flags_fn_t) ndr_push_svcctl_DeleteService,
5713 (ndr_pull_flags_fn_t) ndr_pull_svcctl_DeleteService,
5714 (ndr_print_function_t) ndr_print_svcctl_DeleteService,
5718 "svcctl_LockServiceDatabase",
5719 sizeof(struct svcctl_LockServiceDatabase),
5720 (ndr_push_flags_fn_t) ndr_push_svcctl_LockServiceDatabase,
5721 (ndr_pull_flags_fn_t) ndr_pull_svcctl_LockServiceDatabase,
5722 (ndr_print_function_t) ndr_print_svcctl_LockServiceDatabase,
5726 "svcctl_QueryServiceObjectSecurity",
5727 sizeof(struct svcctl_QueryServiceObjectSecurity),
5728 (ndr_push_flags_fn_t) ndr_push_svcctl_QueryServiceObjectSecurity,
5729 (ndr_pull_flags_fn_t) ndr_pull_svcctl_QueryServiceObjectSecurity,
5730 (ndr_print_function_t) ndr_print_svcctl_QueryServiceObjectSecurity,
5734 "svcctl_SetServiceObjectSecurity",
5735 sizeof(struct svcctl_SetServiceObjectSecurity),
5736 (ndr_push_flags_fn_t) ndr_push_svcctl_SetServiceObjectSecurity,
5737 (ndr_pull_flags_fn_t) ndr_pull_svcctl_SetServiceObjectSecurity,
5738 (ndr_print_function_t) ndr_print_svcctl_SetServiceObjectSecurity,
5742 "svcctl_QueryServiceStatus",
5743 sizeof(struct svcctl_QueryServiceStatus),
5744 (ndr_push_flags_fn_t) ndr_push_svcctl_QueryServiceStatus,
5745 (ndr_pull_flags_fn_t) ndr_pull_svcctl_QueryServiceStatus,
5746 (ndr_print_function_t) ndr_print_svcctl_QueryServiceStatus,
5750 "svcctl_SetServiceStatus",
5751 sizeof(struct svcctl_SetServiceStatus),
5752 (ndr_push_flags_fn_t) ndr_push_svcctl_SetServiceStatus,
5753 (ndr_pull_flags_fn_t) ndr_pull_svcctl_SetServiceStatus,
5754 (ndr_print_function_t) ndr_print_svcctl_SetServiceStatus,
5758 "svcctl_UnlockServiceDatabase",
5759 sizeof(struct svcctl_UnlockServiceDatabase),
5760 (ndr_push_flags_fn_t) ndr_push_svcctl_UnlockServiceDatabase,
5761 (ndr_pull_flags_fn_t) ndr_pull_svcctl_UnlockServiceDatabase,
5762 (ndr_print_function_t) ndr_print_svcctl_UnlockServiceDatabase,
5766 "svcctl_NotifyBootConfigStatus",
5767 sizeof(struct svcctl_NotifyBootConfigStatus),
5768 (ndr_push_flags_fn_t) ndr_push_svcctl_NotifyBootConfigStatus,
5769 (ndr_pull_flags_fn_t) ndr_pull_svcctl_NotifyBootConfigStatus,
5770 (ndr_print_function_t) ndr_print_svcctl_NotifyBootConfigStatus,
5774 "svcctl_SCSetServiceBitsW",
5775 sizeof(struct svcctl_SCSetServiceBitsW),
5776 (ndr_push_flags_fn_t) ndr_push_svcctl_SCSetServiceBitsW,
5777 (ndr_pull_flags_fn_t) ndr_pull_svcctl_SCSetServiceBitsW,
5778 (ndr_print_function_t) ndr_print_svcctl_SCSetServiceBitsW,
5782 "svcctl_ChangeServiceConfigW",
5783 sizeof(struct svcctl_ChangeServiceConfigW),
5784 (ndr_push_flags_fn_t) ndr_push_svcctl_ChangeServiceConfigW,
5785 (ndr_pull_flags_fn_t) ndr_pull_svcctl_ChangeServiceConfigW,
5786 (ndr_print_function_t) ndr_print_svcctl_ChangeServiceConfigW,
5790 "svcctl_CreateServiceW",
5791 sizeof(struct svcctl_CreateServiceW),
5792 (ndr_push_flags_fn_t) ndr_push_svcctl_CreateServiceW,
5793 (ndr_pull_flags_fn_t) ndr_pull_svcctl_CreateServiceW,
5794 (ndr_print_function_t) ndr_print_svcctl_CreateServiceW,
5798 "svcctl_EnumDependentServicesW",
5799 sizeof(struct svcctl_EnumDependentServicesW),
5800 (ndr_push_flags_fn_t) ndr_push_svcctl_EnumDependentServicesW,
5801 (ndr_pull_flags_fn_t) ndr_pull_svcctl_EnumDependentServicesW,
5802 (ndr_print_function_t) ndr_print_svcctl_EnumDependentServicesW,
5806 "svcctl_EnumServicesStatusW",
5807 sizeof(struct svcctl_EnumServicesStatusW),
5808 (ndr_push_flags_fn_t) ndr_push_svcctl_EnumServicesStatusW,
5809 (ndr_pull_flags_fn_t) ndr_pull_svcctl_EnumServicesStatusW,
5810 (ndr_print_function_t) ndr_print_svcctl_EnumServicesStatusW,
5814 "svcctl_OpenSCManagerW",
5815 sizeof(struct svcctl_OpenSCManagerW),
5816 (ndr_push_flags_fn_t) ndr_push_svcctl_OpenSCManagerW,
5817 (ndr_pull_flags_fn_t) ndr_pull_svcctl_OpenSCManagerW,
5818 (ndr_print_function_t) ndr_print_svcctl_OpenSCManagerW,
5822 "svcctl_OpenServiceW",
5823 sizeof(struct svcctl_OpenServiceW),
5824 (ndr_push_flags_fn_t) ndr_push_svcctl_OpenServiceW,
5825 (ndr_pull_flags_fn_t) ndr_pull_svcctl_OpenServiceW,
5826 (ndr_print_function_t) ndr_print_svcctl_OpenServiceW,
5830 "svcctl_QueryServiceConfigW",
5831 sizeof(struct svcctl_QueryServiceConfigW),
5832 (ndr_push_flags_fn_t) ndr_push_svcctl_QueryServiceConfigW,
5833 (ndr_pull_flags_fn_t) ndr_pull_svcctl_QueryServiceConfigW,
5834 (ndr_print_function_t) ndr_print_svcctl_QueryServiceConfigW,
5838 "svcctl_QueryServiceLockStatusW",
5839 sizeof(struct svcctl_QueryServiceLockStatusW),
5840 (ndr_push_flags_fn_t) ndr_push_svcctl_QueryServiceLockStatusW,
5841 (ndr_pull_flags_fn_t) ndr_pull_svcctl_QueryServiceLockStatusW,
5842 (ndr_print_function_t) ndr_print_svcctl_QueryServiceLockStatusW,
5846 "svcctl_StartServiceW",
5847 sizeof(struct svcctl_StartServiceW),
5848 (ndr_push_flags_fn_t) ndr_push_svcctl_StartServiceW,
5849 (ndr_pull_flags_fn_t) ndr_pull_svcctl_StartServiceW,
5850 (ndr_print_function_t) ndr_print_svcctl_StartServiceW,
5854 "svcctl_GetServiceDisplayNameW",
5855 sizeof(struct svcctl_GetServiceDisplayNameW),
5856 (ndr_push_flags_fn_t) ndr_push_svcctl_GetServiceDisplayNameW,
5857 (ndr_pull_flags_fn_t) ndr_pull_svcctl_GetServiceDisplayNameW,
5858 (ndr_print_function_t) ndr_print_svcctl_GetServiceDisplayNameW,
5862 "svcctl_GetServiceKeyNameW",
5863 sizeof(struct svcctl_GetServiceKeyNameW),
5864 (ndr_push_flags_fn_t) ndr_push_svcctl_GetServiceKeyNameW,
5865 (ndr_pull_flags_fn_t) ndr_pull_svcctl_GetServiceKeyNameW,
5866 (ndr_print_function_t) ndr_print_svcctl_GetServiceKeyNameW,
5870 "svcctl_SCSetServiceBitsA",
5871 sizeof(struct svcctl_SCSetServiceBitsA),
5872 (ndr_push_flags_fn_t) ndr_push_svcctl_SCSetServiceBitsA,
5873 (ndr_pull_flags_fn_t) ndr_pull_svcctl_SCSetServiceBitsA,
5874 (ndr_print_function_t) ndr_print_svcctl_SCSetServiceBitsA,
5878 "svcctl_ChangeServiceConfigA",
5879 sizeof(struct svcctl_ChangeServiceConfigA),
5880 (ndr_push_flags_fn_t) ndr_push_svcctl_ChangeServiceConfigA,
5881 (ndr_pull_flags_fn_t) ndr_pull_svcctl_ChangeServiceConfigA,
5882 (ndr_print_function_t) ndr_print_svcctl_ChangeServiceConfigA,
5886 "svcctl_CreateServiceA",
5887 sizeof(struct svcctl_CreateServiceA),
5888 (ndr_push_flags_fn_t) ndr_push_svcctl_CreateServiceA,
5889 (ndr_pull_flags_fn_t) ndr_pull_svcctl_CreateServiceA,
5890 (ndr_print_function_t) ndr_print_svcctl_CreateServiceA,
5894 "svcctl_EnumDependentServicesA",
5895 sizeof(struct svcctl_EnumDependentServicesA),
5896 (ndr_push_flags_fn_t) ndr_push_svcctl_EnumDependentServicesA,
5897 (ndr_pull_flags_fn_t) ndr_pull_svcctl_EnumDependentServicesA,
5898 (ndr_print_function_t) ndr_print_svcctl_EnumDependentServicesA,
5902 "svcctl_EnumServicesStatusA",
5903 sizeof(struct svcctl_EnumServicesStatusA),
5904 (ndr_push_flags_fn_t) ndr_push_svcctl_EnumServicesStatusA,
5905 (ndr_pull_flags_fn_t) ndr_pull_svcctl_EnumServicesStatusA,
5906 (ndr_print_function_t) ndr_print_svcctl_EnumServicesStatusA,
5910 "svcctl_OpenSCManagerA",
5911 sizeof(struct svcctl_OpenSCManagerA),
5912 (ndr_push_flags_fn_t) ndr_push_svcctl_OpenSCManagerA,
5913 (ndr_pull_flags_fn_t) ndr_pull_svcctl_OpenSCManagerA,
5914 (ndr_print_function_t) ndr_print_svcctl_OpenSCManagerA,
5918 "svcctl_OpenServiceA",
5919 sizeof(struct svcctl_OpenServiceA),
5920 (ndr_push_flags_fn_t) ndr_push_svcctl_OpenServiceA,
5921 (ndr_pull_flags_fn_t) ndr_pull_svcctl_OpenServiceA,
5922 (ndr_print_function_t) ndr_print_svcctl_OpenServiceA,
5926 "svcctl_QueryServiceConfigA",
5927 sizeof(struct svcctl_QueryServiceConfigA),
5928 (ndr_push_flags_fn_t) ndr_push_svcctl_QueryServiceConfigA,
5929 (ndr_pull_flags_fn_t) ndr_pull_svcctl_QueryServiceConfigA,
5930 (ndr_print_function_t) ndr_print_svcctl_QueryServiceConfigA,
5934 "svcctl_QueryServiceLockStatusA",
5935 sizeof(struct svcctl_QueryServiceLockStatusA),
5936 (ndr_push_flags_fn_t) ndr_push_svcctl_QueryServiceLockStatusA,
5937 (ndr_pull_flags_fn_t) ndr_pull_svcctl_QueryServiceLockStatusA,
5938 (ndr_print_function_t) ndr_print_svcctl_QueryServiceLockStatusA,
5942 "svcctl_StartServiceA",
5943 sizeof(struct svcctl_StartServiceA),
5944 (ndr_push_flags_fn_t) ndr_push_svcctl_StartServiceA,
5945 (ndr_pull_flags_fn_t) ndr_pull_svcctl_StartServiceA,
5946 (ndr_print_function_t) ndr_print_svcctl_StartServiceA,
5950 "svcctl_GetServiceDisplayNameA",
5951 sizeof(struct svcctl_GetServiceDisplayNameA),
5952 (ndr_push_flags_fn_t) ndr_push_svcctl_GetServiceDisplayNameA,
5953 (ndr_pull_flags_fn_t) ndr_pull_svcctl_GetServiceDisplayNameA,
5954 (ndr_print_function_t) ndr_print_svcctl_GetServiceDisplayNameA,
5958 "svcctl_GetServiceKeyNameA",
5959 sizeof(struct svcctl_GetServiceKeyNameA),
5960 (ndr_push_flags_fn_t) ndr_push_svcctl_GetServiceKeyNameA,
5961 (ndr_pull_flags_fn_t) ndr_pull_svcctl_GetServiceKeyNameA,
5962 (ndr_print_function_t) ndr_print_svcctl_GetServiceKeyNameA,
5966 "svcctl_GetCurrentGroupeStateW",
5967 sizeof(struct svcctl_GetCurrentGroupeStateW),
5968 (ndr_push_flags_fn_t) ndr_push_svcctl_GetCurrentGroupeStateW,
5969 (ndr_pull_flags_fn_t) ndr_pull_svcctl_GetCurrentGroupeStateW,
5970 (ndr_print_function_t) ndr_print_svcctl_GetCurrentGroupeStateW,
5974 "svcctl_EnumServiceGroupW",
5975 sizeof(struct svcctl_EnumServiceGroupW),
5976 (ndr_push_flags_fn_t) ndr_push_svcctl_EnumServiceGroupW,
5977 (ndr_pull_flags_fn_t) ndr_pull_svcctl_EnumServiceGroupW,
5978 (ndr_print_function_t) ndr_print_svcctl_EnumServiceGroupW,
5982 "svcctl_ChangeServiceConfig2A",
5983 sizeof(struct svcctl_ChangeServiceConfig2A),
5984 (ndr_push_flags_fn_t) ndr_push_svcctl_ChangeServiceConfig2A,
5985 (ndr_pull_flags_fn_t) ndr_pull_svcctl_ChangeServiceConfig2A,
5986 (ndr_print_function_t) ndr_print_svcctl_ChangeServiceConfig2A,
5990 "svcctl_ChangeServiceConfig2W",
5991 sizeof(struct svcctl_ChangeServiceConfig2W),
5992 (ndr_push_flags_fn_t) ndr_push_svcctl_ChangeServiceConfig2W,
5993 (ndr_pull_flags_fn_t) ndr_pull_svcctl_ChangeServiceConfig2W,
5994 (ndr_print_function_t) ndr_print_svcctl_ChangeServiceConfig2W,
5998 "svcctl_QueryServiceConfig2A",
5999 sizeof(struct svcctl_QueryServiceConfig2A),
6000 (ndr_push_flags_fn_t) ndr_push_svcctl_QueryServiceConfig2A,
6001 (ndr_pull_flags_fn_t) ndr_pull_svcctl_QueryServiceConfig2A,
6002 (ndr_print_function_t) ndr_print_svcctl_QueryServiceConfig2A,
6006 "svcctl_QueryServiceConfig2W",
6007 sizeof(struct svcctl_QueryServiceConfig2W),
6008 (ndr_push_flags_fn_t) ndr_push_svcctl_QueryServiceConfig2W,
6009 (ndr_pull_flags_fn_t) ndr_pull_svcctl_QueryServiceConfig2W,
6010 (ndr_print_function_t) ndr_print_svcctl_QueryServiceConfig2W,
6014 "svcctl_QueryServiceStatusEx",
6015 sizeof(struct svcctl_QueryServiceStatusEx),
6016 (ndr_push_flags_fn_t) ndr_push_svcctl_QueryServiceStatusEx,
6017 (ndr_pull_flags_fn_t) ndr_pull_svcctl_QueryServiceStatusEx,
6018 (ndr_print_function_t) ndr_print_svcctl_QueryServiceStatusEx,
6022 "EnumServicesStatusExA",
6023 sizeof(struct EnumServicesStatusExA),
6024 (ndr_push_flags_fn_t) ndr_push_EnumServicesStatusExA,
6025 (ndr_pull_flags_fn_t) ndr_pull_EnumServicesStatusExA,
6026 (ndr_print_function_t) ndr_print_EnumServicesStatusExA,
6030 "EnumServicesStatusExW",
6031 sizeof(struct EnumServicesStatusExW),
6032 (ndr_push_flags_fn_t) ndr_push_EnumServicesStatusExW,
6033 (ndr_pull_flags_fn_t) ndr_pull_EnumServicesStatusExW,
6034 (ndr_print_function_t) ndr_print_EnumServicesStatusExW,
6038 "svcctl_SCSendTSMessage",
6039 sizeof(struct svcctl_SCSendTSMessage),
6040 (ndr_push_flags_fn_t) ndr_push_svcctl_SCSendTSMessage,
6041 (ndr_pull_flags_fn_t) ndr_pull_svcctl_SCSendTSMessage,
6042 (ndr_print_function_t) ndr_print_svcctl_SCSendTSMessage,
6045 { NULL, 0, NULL, NULL, NULL, false }
6048 static const char * const svcctl_endpoint_strings[] = {
6049 "ncacn_np:[\\pipe\\svcctl]",
6053 static const struct ndr_interface_string_array svcctl_endpoints = {
6055 .names = svcctl_endpoint_strings
6058 static const char * const svcctl_authservice_strings[] = {
6062 static const struct ndr_interface_string_array svcctl_authservices = {
6064 .names = svcctl_authservice_strings
6068 const struct ndr_interface_table ndr_table_svcctl = {
6071 {0x367abb81,0x9844,0x35f1,{0xad,0x32},{0x98,0xf0,0x38,0x00,0x10,0x03}},
6074 .helpstring = NDR_SVCCTL_HELPSTRING,
6076 .calls = svcctl_calls,
6077 .endpoints = &svcctl_endpoints,
6078 .authservices = &svcctl_authservices