Revert "Re-run make idl."
[Samba.git] / source / librpc / gen_ndr / ndr_svcctl.c
bloba80950841ad12864a2c71ad165a31d9437c5da94
1 /* parser auto-generated by pidl */
3 #include "includes.h"
4 #include "librpc/gen_ndr/ndr_svcctl.h"
6 static enum ndr_err_code ndr_push_SERVICE_LOCK_STATUS(struct ndr_push *ndr, int ndr_flags, const struct SERVICE_LOCK_STATUS *r)
8 if (ndr_flags & NDR_SCALARS) {
9 NDR_CHECK(ndr_push_align(ndr, 4));
10 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->is_locked));
11 NDR_CHECK(ndr_push_unique_ptr(ndr, r->lock_owner));
12 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->lock_duration));
14 if (ndr_flags & NDR_BUFFERS) {
15 if (r->lock_owner) {
16 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->lock_owner, CH_UTF16)));
17 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
18 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->lock_owner, CH_UTF16)));
19 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->lock_owner, ndr_charset_length(r->lock_owner, CH_UTF16), sizeof(uint16_t), CH_UTF16));
22 return NDR_ERR_SUCCESS;
25 static enum ndr_err_code ndr_pull_SERVICE_LOCK_STATUS(struct ndr_pull *ndr, int ndr_flags, struct SERVICE_LOCK_STATUS *r)
27 uint32_t _ptr_lock_owner;
28 TALLOC_CTX *_mem_save_lock_owner_0;
29 if (ndr_flags & NDR_SCALARS) {
30 NDR_CHECK(ndr_pull_align(ndr, 4));
31 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->is_locked));
32 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_lock_owner));
33 if (_ptr_lock_owner) {
34 NDR_PULL_ALLOC(ndr, r->lock_owner);
35 } else {
36 r->lock_owner = NULL;
38 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->lock_duration));
40 if (ndr_flags & NDR_BUFFERS) {
41 if (r->lock_owner) {
42 _mem_save_lock_owner_0 = NDR_PULL_GET_MEM_CTX(ndr);
43 NDR_PULL_SET_MEM_CTX(ndr, r->lock_owner, 0);
44 NDR_CHECK(ndr_pull_array_size(ndr, &r->lock_owner));
45 NDR_CHECK(ndr_pull_array_length(ndr, &r->lock_owner));
46 if (ndr_get_array_length(ndr, &r->lock_owner) > ndr_get_array_size(ndr, &r->lock_owner)) {
47 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));
49 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->lock_owner), sizeof(uint16_t)));
50 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->lock_owner, ndr_get_array_length(ndr, &r->lock_owner), sizeof(uint16_t), CH_UTF16));
51 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_lock_owner_0, 0);
54 return NDR_ERR_SUCCESS;
57 _PUBLIC_ void ndr_print_SERVICE_LOCK_STATUS(struct ndr_print *ndr, const char *name, const struct SERVICE_LOCK_STATUS *r)
59 ndr_print_struct(ndr, name, "SERVICE_LOCK_STATUS");
60 ndr->depth++;
61 ndr_print_uint32(ndr, "is_locked", r->is_locked);
62 ndr_print_ptr(ndr, "lock_owner", r->lock_owner);
63 ndr->depth++;
64 if (r->lock_owner) {
65 ndr_print_string(ndr, "lock_owner", r->lock_owner);
67 ndr->depth--;
68 ndr_print_uint32(ndr, "lock_duration", r->lock_duration);
69 ndr->depth--;
72 static enum ndr_err_code ndr_push_SERVICE_STATUS(struct ndr_push *ndr, int ndr_flags, const struct SERVICE_STATUS *r)
74 if (ndr_flags & NDR_SCALARS) {
75 NDR_CHECK(ndr_push_align(ndr, 4));
76 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->type));
77 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->state));
78 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->controls_accepted));
79 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->win32_exit_code));
80 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->service_exit_code));
81 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->check_point));
82 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->wait_hint));
84 if (ndr_flags & NDR_BUFFERS) {
86 return NDR_ERR_SUCCESS;
89 static enum ndr_err_code ndr_pull_SERVICE_STATUS(struct ndr_pull *ndr, int ndr_flags, struct SERVICE_STATUS *r)
91 if (ndr_flags & NDR_SCALARS) {
92 NDR_CHECK(ndr_pull_align(ndr, 4));
93 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->type));
94 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->state));
95 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->controls_accepted));
96 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->win32_exit_code));
97 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->service_exit_code));
98 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->check_point));
99 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->wait_hint));
101 if (ndr_flags & NDR_BUFFERS) {
103 return NDR_ERR_SUCCESS;
106 _PUBLIC_ void ndr_print_SERVICE_STATUS(struct ndr_print *ndr, const char *name, const struct SERVICE_STATUS *r)
108 ndr_print_struct(ndr, name, "SERVICE_STATUS");
109 ndr->depth++;
110 ndr_print_uint32(ndr, "type", r->type);
111 ndr_print_uint32(ndr, "state", r->state);
112 ndr_print_uint32(ndr, "controls_accepted", r->controls_accepted);
113 ndr_print_WERROR(ndr, "win32_exit_code", r->win32_exit_code);
114 ndr_print_uint32(ndr, "service_exit_code", r->service_exit_code);
115 ndr_print_uint32(ndr, "check_point", r->check_point);
116 ndr_print_uint32(ndr, "wait_hint", r->wait_hint);
117 ndr->depth--;
120 static enum ndr_err_code ndr_push_ENUM_SERVICE_STATUS(struct ndr_push *ndr, int ndr_flags, const struct ENUM_SERVICE_STATUS *r)
122 if (ndr_flags & NDR_SCALARS) {
123 NDR_CHECK(ndr_push_align(ndr, 4));
125 uint32_t _flags_save_string = ndr->flags;
126 ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_ASCII|LIBNDR_FLAG_STR_NULLTERM);
127 NDR_CHECK(ndr_push_relative_ptr1(ndr, r->service_name));
128 ndr->flags = _flags_save_string;
131 uint32_t _flags_save_string = ndr->flags;
132 ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_ASCII|LIBNDR_FLAG_STR_NULLTERM);
133 NDR_CHECK(ndr_push_relative_ptr1(ndr, r->display_name));
134 ndr->flags = _flags_save_string;
136 NDR_CHECK(ndr_push_SERVICE_STATUS(ndr, NDR_SCALARS, &r->status));
138 if (ndr_flags & NDR_BUFFERS) {
140 uint32_t _flags_save_string = ndr->flags;
141 ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_ASCII|LIBNDR_FLAG_STR_NULLTERM);
142 if (r->service_name) {
143 NDR_CHECK(ndr_push_relative_ptr2(ndr, r->service_name));
144 NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->service_name));
146 ndr->flags = _flags_save_string;
149 uint32_t _flags_save_string = ndr->flags;
150 ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_ASCII|LIBNDR_FLAG_STR_NULLTERM);
151 if (r->display_name) {
152 NDR_CHECK(ndr_push_relative_ptr2(ndr, r->display_name));
153 NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->display_name));
155 ndr->flags = _flags_save_string;
158 return NDR_ERR_SUCCESS;
161 static enum ndr_err_code ndr_pull_ENUM_SERVICE_STATUS(struct ndr_pull *ndr, int ndr_flags, struct ENUM_SERVICE_STATUS *r)
163 uint32_t _ptr_service_name;
164 TALLOC_CTX *_mem_save_service_name_0;
165 uint32_t _ptr_display_name;
166 TALLOC_CTX *_mem_save_display_name_0;
167 if (ndr_flags & NDR_SCALARS) {
168 NDR_CHECK(ndr_pull_align(ndr, 4));
170 uint32_t _flags_save_string = ndr->flags;
171 ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_ASCII|LIBNDR_FLAG_STR_NULLTERM);
172 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_service_name));
173 if (_ptr_service_name) {
174 NDR_PULL_ALLOC(ndr, r->service_name);
175 NDR_CHECK(ndr_pull_relative_ptr1(ndr, r->service_name, _ptr_service_name));
176 } else {
177 r->service_name = NULL;
179 ndr->flags = _flags_save_string;
182 uint32_t _flags_save_string = ndr->flags;
183 ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_ASCII|LIBNDR_FLAG_STR_NULLTERM);
184 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_display_name));
185 if (_ptr_display_name) {
186 NDR_PULL_ALLOC(ndr, r->display_name);
187 NDR_CHECK(ndr_pull_relative_ptr1(ndr, r->display_name, _ptr_display_name));
188 } else {
189 r->display_name = NULL;
191 ndr->flags = _flags_save_string;
193 NDR_CHECK(ndr_pull_SERVICE_STATUS(ndr, NDR_SCALARS, &r->status));
195 if (ndr_flags & NDR_BUFFERS) {
197 uint32_t _flags_save_string = ndr->flags;
198 ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_ASCII|LIBNDR_FLAG_STR_NULLTERM);
199 if (r->service_name) {
200 uint32_t _relative_save_offset;
201 _relative_save_offset = ndr->offset;
202 NDR_CHECK(ndr_pull_relative_ptr2(ndr, r->service_name));
203 _mem_save_service_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
204 NDR_PULL_SET_MEM_CTX(ndr, r->service_name, 0);
205 NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->service_name));
206 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_service_name_0, 0);
207 ndr->offset = _relative_save_offset;
209 ndr->flags = _flags_save_string;
212 uint32_t _flags_save_string = ndr->flags;
213 ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_ASCII|LIBNDR_FLAG_STR_NULLTERM);
214 if (r->display_name) {
215 uint32_t _relative_save_offset;
216 _relative_save_offset = ndr->offset;
217 NDR_CHECK(ndr_pull_relative_ptr2(ndr, r->display_name));
218 _mem_save_display_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
219 NDR_PULL_SET_MEM_CTX(ndr, r->display_name, 0);
220 NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->display_name));
221 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_display_name_0, 0);
222 ndr->offset = _relative_save_offset;
224 ndr->flags = _flags_save_string;
227 return NDR_ERR_SUCCESS;
230 _PUBLIC_ void ndr_print_ENUM_SERVICE_STATUS(struct ndr_print *ndr, const char *name, const struct ENUM_SERVICE_STATUS *r)
232 ndr_print_struct(ndr, name, "ENUM_SERVICE_STATUS");
233 ndr->depth++;
234 ndr_print_ptr(ndr, "service_name", r->service_name);
235 ndr->depth++;
236 if (r->service_name) {
237 ndr_print_string(ndr, "service_name", r->service_name);
239 ndr->depth--;
240 ndr_print_ptr(ndr, "display_name", r->display_name);
241 ndr->depth++;
242 if (r->display_name) {
243 ndr_print_string(ndr, "display_name", r->display_name);
245 ndr->depth--;
246 ndr_print_SERVICE_STATUS(ndr, "status", &r->status);
247 ndr->depth--;
250 _PUBLIC_ enum ndr_err_code ndr_push_svcctl_ServerType(struct ndr_push *ndr, int ndr_flags, uint32_t r)
252 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r));
253 return NDR_ERR_SUCCESS;
256 _PUBLIC_ enum ndr_err_code ndr_pull_svcctl_ServerType(struct ndr_pull *ndr, int ndr_flags, uint32_t *r)
258 uint32_t v;
259 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &v));
260 *r = v;
261 return NDR_ERR_SUCCESS;
264 _PUBLIC_ void ndr_print_svcctl_ServerType(struct ndr_print *ndr, const char *name, uint32_t r)
266 ndr_print_uint32(ndr, name, r);
267 ndr->depth++;
268 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_WORKSTATION", SV_TYPE_WORKSTATION, r);
269 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_SERVER", SV_TYPE_SERVER, r);
270 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_SQLSERVER", SV_TYPE_SQLSERVER, r);
271 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_DOMAIN_CTRL", SV_TYPE_DOMAIN_CTRL, r);
272 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_DOMAIN_BAKCTRL", SV_TYPE_DOMAIN_BAKCTRL, r);
273 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_TIME_SOURCE", SV_TYPE_TIME_SOURCE, r);
274 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_AFP", SV_TYPE_AFP, r);
275 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_NOVELL", SV_TYPE_NOVELL, r);
276 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_DOMAIN_MEMBER", SV_TYPE_DOMAIN_MEMBER, r);
277 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_PRINTQ_SERVER", SV_TYPE_PRINTQ_SERVER, r);
278 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_DIALIN_SERVER", SV_TYPE_DIALIN_SERVER, r);
279 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_SERVER_UNIX", SV_TYPE_SERVER_UNIX, r);
280 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_NT", SV_TYPE_NT, r);
281 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_WFW", SV_TYPE_WFW, r);
282 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_SERVER_MFPN", SV_TYPE_SERVER_MFPN, r);
283 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_SERVER_NT", SV_TYPE_SERVER_NT, r);
284 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_POTENTIAL_BROWSER", SV_TYPE_POTENTIAL_BROWSER, r);
285 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_BACKUP_BROWSER", SV_TYPE_BACKUP_BROWSER, r);
286 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_MASTER_BROWSER", SV_TYPE_MASTER_BROWSER, r);
287 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_DOMAIN_MASTER", SV_TYPE_DOMAIN_MASTER, r);
288 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_SERVER_OSF", SV_TYPE_SERVER_OSF, r);
289 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_SERVER_VMS", SV_TYPE_SERVER_VMS, r);
290 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_WIN95_PLUS", SV_TYPE_WIN95_PLUS, r);
291 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_DFS_SERVER", SV_TYPE_DFS_SERVER, r);
292 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_ALTERNATE_XPORT", SV_TYPE_ALTERNATE_XPORT, r);
293 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_LOCAL_LIST_ONLY", SV_TYPE_LOCAL_LIST_ONLY, r);
294 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_DOMAIN_ENUM", SV_TYPE_DOMAIN_ENUM, r);
295 ndr->depth--;
298 static enum ndr_err_code ndr_push_svcctl_CloseServiceHandle(struct ndr_push *ndr, int flags, const struct svcctl_CloseServiceHandle *r)
300 if (flags & NDR_IN) {
301 if (r->in.handle == NULL) {
302 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
304 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
306 if (flags & NDR_OUT) {
307 if (r->out.handle == NULL) {
308 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
310 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.handle));
311 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
313 return NDR_ERR_SUCCESS;
316 static enum ndr_err_code ndr_pull_svcctl_CloseServiceHandle(struct ndr_pull *ndr, int flags, struct svcctl_CloseServiceHandle *r)
318 TALLOC_CTX *_mem_save_handle_0;
319 if (flags & NDR_IN) {
320 ZERO_STRUCT(r->out);
322 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
323 NDR_PULL_ALLOC(ndr, r->in.handle);
325 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
326 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
327 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
328 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
329 NDR_PULL_ALLOC(ndr, r->out.handle);
330 *r->out.handle = *r->in.handle;
332 if (flags & NDR_OUT) {
333 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
334 NDR_PULL_ALLOC(ndr, r->out.handle);
336 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
337 NDR_PULL_SET_MEM_CTX(ndr, r->out.handle, LIBNDR_FLAG_REF_ALLOC);
338 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.handle));
339 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
340 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
342 return NDR_ERR_SUCCESS;
345 _PUBLIC_ void ndr_print_svcctl_CloseServiceHandle(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_CloseServiceHandle *r)
347 ndr_print_struct(ndr, name, "svcctl_CloseServiceHandle");
348 ndr->depth++;
349 if (flags & NDR_SET_VALUES) {
350 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
352 if (flags & NDR_IN) {
353 ndr_print_struct(ndr, "in", "svcctl_CloseServiceHandle");
354 ndr->depth++;
355 ndr_print_ptr(ndr, "handle", r->in.handle);
356 ndr->depth++;
357 ndr_print_policy_handle(ndr, "handle", r->in.handle);
358 ndr->depth--;
359 ndr->depth--;
361 if (flags & NDR_OUT) {
362 ndr_print_struct(ndr, "out", "svcctl_CloseServiceHandle");
363 ndr->depth++;
364 ndr_print_ptr(ndr, "handle", r->out.handle);
365 ndr->depth++;
366 ndr_print_policy_handle(ndr, "handle", r->out.handle);
367 ndr->depth--;
368 ndr_print_WERROR(ndr, "result", r->out.result);
369 ndr->depth--;
371 ndr->depth--;
374 static enum ndr_err_code ndr_push_svcctl_ControlService(struct ndr_push *ndr, int flags, const struct svcctl_ControlService *r)
376 if (flags & NDR_IN) {
377 if (r->in.handle == NULL) {
378 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
380 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
381 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.control));
383 if (flags & NDR_OUT) {
384 if (r->out.service_status == NULL) {
385 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
387 NDR_CHECK(ndr_push_SERVICE_STATUS(ndr, NDR_SCALARS, r->out.service_status));
388 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
390 return NDR_ERR_SUCCESS;
393 static enum ndr_err_code ndr_pull_svcctl_ControlService(struct ndr_pull *ndr, int flags, struct svcctl_ControlService *r)
395 TALLOC_CTX *_mem_save_handle_0;
396 TALLOC_CTX *_mem_save_service_status_0;
397 if (flags & NDR_IN) {
398 ZERO_STRUCT(r->out);
400 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
401 NDR_PULL_ALLOC(ndr, r->in.handle);
403 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
404 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
405 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
406 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
407 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.control));
408 NDR_PULL_ALLOC(ndr, r->out.service_status);
409 ZERO_STRUCTP(r->out.service_status);
411 if (flags & NDR_OUT) {
412 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
413 NDR_PULL_ALLOC(ndr, r->out.service_status);
415 _mem_save_service_status_0 = NDR_PULL_GET_MEM_CTX(ndr);
416 NDR_PULL_SET_MEM_CTX(ndr, r->out.service_status, LIBNDR_FLAG_REF_ALLOC);
417 NDR_CHECK(ndr_pull_SERVICE_STATUS(ndr, NDR_SCALARS, r->out.service_status));
418 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_service_status_0, LIBNDR_FLAG_REF_ALLOC);
419 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
421 return NDR_ERR_SUCCESS;
424 _PUBLIC_ void ndr_print_svcctl_ControlService(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_ControlService *r)
426 ndr_print_struct(ndr, name, "svcctl_ControlService");
427 ndr->depth++;
428 if (flags & NDR_SET_VALUES) {
429 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
431 if (flags & NDR_IN) {
432 ndr_print_struct(ndr, "in", "svcctl_ControlService");
433 ndr->depth++;
434 ndr_print_ptr(ndr, "handle", r->in.handle);
435 ndr->depth++;
436 ndr_print_policy_handle(ndr, "handle", r->in.handle);
437 ndr->depth--;
438 ndr_print_uint32(ndr, "control", r->in.control);
439 ndr->depth--;
441 if (flags & NDR_OUT) {
442 ndr_print_struct(ndr, "out", "svcctl_ControlService");
443 ndr->depth++;
444 ndr_print_ptr(ndr, "service_status", r->out.service_status);
445 ndr->depth++;
446 ndr_print_SERVICE_STATUS(ndr, "service_status", r->out.service_status);
447 ndr->depth--;
448 ndr_print_WERROR(ndr, "result", r->out.result);
449 ndr->depth--;
451 ndr->depth--;
454 static enum ndr_err_code ndr_push_svcctl_DeleteService(struct ndr_push *ndr, int flags, const struct svcctl_DeleteService *r)
456 if (flags & NDR_IN) {
457 if (r->in.handle == NULL) {
458 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
460 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
462 if (flags & NDR_OUT) {
463 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
465 return NDR_ERR_SUCCESS;
468 static enum ndr_err_code ndr_pull_svcctl_DeleteService(struct ndr_pull *ndr, int flags, struct svcctl_DeleteService *r)
470 TALLOC_CTX *_mem_save_handle_0;
471 if (flags & NDR_IN) {
472 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
473 NDR_PULL_ALLOC(ndr, r->in.handle);
475 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
476 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
477 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
478 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
480 if (flags & NDR_OUT) {
481 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
483 return NDR_ERR_SUCCESS;
486 _PUBLIC_ void ndr_print_svcctl_DeleteService(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_DeleteService *r)
488 ndr_print_struct(ndr, name, "svcctl_DeleteService");
489 ndr->depth++;
490 if (flags & NDR_SET_VALUES) {
491 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
493 if (flags & NDR_IN) {
494 ndr_print_struct(ndr, "in", "svcctl_DeleteService");
495 ndr->depth++;
496 ndr_print_ptr(ndr, "handle", r->in.handle);
497 ndr->depth++;
498 ndr_print_policy_handle(ndr, "handle", r->in.handle);
499 ndr->depth--;
500 ndr->depth--;
502 if (flags & NDR_OUT) {
503 ndr_print_struct(ndr, "out", "svcctl_DeleteService");
504 ndr->depth++;
505 ndr_print_WERROR(ndr, "result", r->out.result);
506 ndr->depth--;
508 ndr->depth--;
511 static enum ndr_err_code ndr_push_svcctl_LockServiceDatabase(struct ndr_push *ndr, int flags, const struct svcctl_LockServiceDatabase *r)
513 if (flags & NDR_IN) {
514 if (r->in.handle == NULL) {
515 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
517 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
519 if (flags & NDR_OUT) {
520 if (r->out.lock == NULL) {
521 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
523 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.lock));
524 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
526 return NDR_ERR_SUCCESS;
529 static enum ndr_err_code ndr_pull_svcctl_LockServiceDatabase(struct ndr_pull *ndr, int flags, struct svcctl_LockServiceDatabase *r)
531 TALLOC_CTX *_mem_save_handle_0;
532 TALLOC_CTX *_mem_save_lock_0;
533 if (flags & NDR_IN) {
534 ZERO_STRUCT(r->out);
536 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
537 NDR_PULL_ALLOC(ndr, r->in.handle);
539 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
540 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
541 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
542 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
543 NDR_PULL_ALLOC(ndr, r->out.lock);
544 ZERO_STRUCTP(r->out.lock);
546 if (flags & NDR_OUT) {
547 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
548 NDR_PULL_ALLOC(ndr, r->out.lock);
550 _mem_save_lock_0 = NDR_PULL_GET_MEM_CTX(ndr);
551 NDR_PULL_SET_MEM_CTX(ndr, r->out.lock, LIBNDR_FLAG_REF_ALLOC);
552 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.lock));
553 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_lock_0, LIBNDR_FLAG_REF_ALLOC);
554 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
556 return NDR_ERR_SUCCESS;
559 _PUBLIC_ void ndr_print_svcctl_LockServiceDatabase(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_LockServiceDatabase *r)
561 ndr_print_struct(ndr, name, "svcctl_LockServiceDatabase");
562 ndr->depth++;
563 if (flags & NDR_SET_VALUES) {
564 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
566 if (flags & NDR_IN) {
567 ndr_print_struct(ndr, "in", "svcctl_LockServiceDatabase");
568 ndr->depth++;
569 ndr_print_ptr(ndr, "handle", r->in.handle);
570 ndr->depth++;
571 ndr_print_policy_handle(ndr, "handle", r->in.handle);
572 ndr->depth--;
573 ndr->depth--;
575 if (flags & NDR_OUT) {
576 ndr_print_struct(ndr, "out", "svcctl_LockServiceDatabase");
577 ndr->depth++;
578 ndr_print_ptr(ndr, "lock", r->out.lock);
579 ndr->depth++;
580 ndr_print_policy_handle(ndr, "lock", r->out.lock);
581 ndr->depth--;
582 ndr_print_WERROR(ndr, "result", r->out.result);
583 ndr->depth--;
585 ndr->depth--;
588 static enum ndr_err_code ndr_push_svcctl_QueryServiceObjectSecurity(struct ndr_push *ndr, int flags, const struct svcctl_QueryServiceObjectSecurity *r)
590 if (flags & NDR_IN) {
591 if (r->in.handle == NULL) {
592 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
594 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
595 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.security_flags));
596 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.buffer_size));
598 if (flags & NDR_OUT) {
599 if (r->out.buffer == NULL) {
600 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
602 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.buffer_size));
603 NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->out.buffer, r->in.buffer_size));
604 if (r->out.needed == NULL) {
605 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
607 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.needed));
608 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
610 return NDR_ERR_SUCCESS;
613 static enum ndr_err_code ndr_pull_svcctl_QueryServiceObjectSecurity(struct ndr_pull *ndr, int flags, struct svcctl_QueryServiceObjectSecurity *r)
615 TALLOC_CTX *_mem_save_handle_0;
616 TALLOC_CTX *_mem_save_needed_0;
617 if (flags & NDR_IN) {
618 ZERO_STRUCT(r->out);
620 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
621 NDR_PULL_ALLOC(ndr, r->in.handle);
623 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
624 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
625 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
626 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
627 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.security_flags));
628 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.buffer_size));
629 if (r->in.buffer_size < 0 || r->in.buffer_size > 0x40000) {
630 return ndr_pull_error(ndr, NDR_ERR_RANGE, "value out of range");
632 NDR_PULL_ALLOC_N(ndr, r->out.buffer, r->in.buffer_size);
633 memset(r->out.buffer, 0, (r->in.buffer_size) * sizeof(*r->out.buffer));
634 NDR_PULL_ALLOC(ndr, r->out.needed);
635 ZERO_STRUCTP(r->out.needed);
637 if (flags & NDR_OUT) {
638 NDR_CHECK(ndr_pull_array_size(ndr, &r->out.buffer));
639 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
640 NDR_PULL_ALLOC_N(ndr, r->out.buffer, ndr_get_array_size(ndr, &r->out.buffer));
642 NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->out.buffer, ndr_get_array_size(ndr, &r->out.buffer)));
643 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
644 NDR_PULL_ALLOC(ndr, r->out.needed);
646 _mem_save_needed_0 = NDR_PULL_GET_MEM_CTX(ndr);
647 NDR_PULL_SET_MEM_CTX(ndr, r->out.needed, LIBNDR_FLAG_REF_ALLOC);
648 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.needed));
649 if (*r->out.needed < 0 || *r->out.needed > 0x40000) {
650 return ndr_pull_error(ndr, NDR_ERR_RANGE, "value out of range");
652 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_needed_0, LIBNDR_FLAG_REF_ALLOC);
653 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
654 if (r->out.buffer) {
655 NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->out.buffer, r->in.buffer_size));
658 return NDR_ERR_SUCCESS;
661 _PUBLIC_ void ndr_print_svcctl_QueryServiceObjectSecurity(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_QueryServiceObjectSecurity *r)
663 ndr_print_struct(ndr, name, "svcctl_QueryServiceObjectSecurity");
664 ndr->depth++;
665 if (flags & NDR_SET_VALUES) {
666 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
668 if (flags & NDR_IN) {
669 ndr_print_struct(ndr, "in", "svcctl_QueryServiceObjectSecurity");
670 ndr->depth++;
671 ndr_print_ptr(ndr, "handle", r->in.handle);
672 ndr->depth++;
673 ndr_print_policy_handle(ndr, "handle", r->in.handle);
674 ndr->depth--;
675 ndr_print_uint32(ndr, "security_flags", r->in.security_flags);
676 ndr_print_uint32(ndr, "buffer_size", r->in.buffer_size);
677 ndr->depth--;
679 if (flags & NDR_OUT) {
680 ndr_print_struct(ndr, "out", "svcctl_QueryServiceObjectSecurity");
681 ndr->depth++;
682 ndr_print_ptr(ndr, "buffer", r->out.buffer);
683 ndr->depth++;
684 ndr_print_array_uint8(ndr, "buffer", r->out.buffer, r->in.buffer_size);
685 ndr->depth--;
686 ndr_print_ptr(ndr, "needed", r->out.needed);
687 ndr->depth++;
688 ndr_print_uint32(ndr, "needed", *r->out.needed);
689 ndr->depth--;
690 ndr_print_WERROR(ndr, "result", r->out.result);
691 ndr->depth--;
693 ndr->depth--;
696 static enum ndr_err_code ndr_push_svcctl_SetServiceObjectSecurity(struct ndr_push *ndr, int flags, const struct svcctl_SetServiceObjectSecurity *r)
698 if (flags & NDR_IN) {
699 if (r->in.handle == NULL) {
700 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
702 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
703 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.security_flags));
704 if (r->in.buffer == NULL) {
705 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
707 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.buffer_size));
708 NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->in.buffer, r->in.buffer_size));
709 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.buffer_size));
711 if (flags & NDR_OUT) {
712 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
714 return NDR_ERR_SUCCESS;
717 static enum ndr_err_code ndr_pull_svcctl_SetServiceObjectSecurity(struct ndr_pull *ndr, int flags, struct svcctl_SetServiceObjectSecurity *r)
719 TALLOC_CTX *_mem_save_handle_0;
720 if (flags & NDR_IN) {
721 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
722 NDR_PULL_ALLOC(ndr, r->in.handle);
724 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
725 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
726 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
727 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
728 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.security_flags));
729 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.buffer));
730 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
731 NDR_PULL_ALLOC_N(ndr, r->in.buffer, ndr_get_array_size(ndr, &r->in.buffer));
733 NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->in.buffer, ndr_get_array_size(ndr, &r->in.buffer)));
734 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.buffer_size));
735 if (r->in.buffer) {
736 NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->in.buffer, r->in.buffer_size));
739 if (flags & NDR_OUT) {
740 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
742 return NDR_ERR_SUCCESS;
745 _PUBLIC_ void ndr_print_svcctl_SetServiceObjectSecurity(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_SetServiceObjectSecurity *r)
747 ndr_print_struct(ndr, name, "svcctl_SetServiceObjectSecurity");
748 ndr->depth++;
749 if (flags & NDR_SET_VALUES) {
750 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
752 if (flags & NDR_IN) {
753 ndr_print_struct(ndr, "in", "svcctl_SetServiceObjectSecurity");
754 ndr->depth++;
755 ndr_print_ptr(ndr, "handle", r->in.handle);
756 ndr->depth++;
757 ndr_print_policy_handle(ndr, "handle", r->in.handle);
758 ndr->depth--;
759 ndr_print_uint32(ndr, "security_flags", r->in.security_flags);
760 ndr_print_ptr(ndr, "buffer", r->in.buffer);
761 ndr->depth++;
762 ndr_print_array_uint8(ndr, "buffer", r->in.buffer, r->in.buffer_size);
763 ndr->depth--;
764 ndr_print_uint32(ndr, "buffer_size", r->in.buffer_size);
765 ndr->depth--;
767 if (flags & NDR_OUT) {
768 ndr_print_struct(ndr, "out", "svcctl_SetServiceObjectSecurity");
769 ndr->depth++;
770 ndr_print_WERROR(ndr, "result", r->out.result);
771 ndr->depth--;
773 ndr->depth--;
776 static enum ndr_err_code ndr_push_svcctl_QueryServiceStatus(struct ndr_push *ndr, int flags, const struct svcctl_QueryServiceStatus *r)
778 if (flags & NDR_IN) {
779 if (r->in.handle == NULL) {
780 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
782 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
784 if (flags & NDR_OUT) {
785 if (r->out.service_status == NULL) {
786 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
788 NDR_CHECK(ndr_push_SERVICE_STATUS(ndr, NDR_SCALARS, r->out.service_status));
789 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
791 return NDR_ERR_SUCCESS;
794 static enum ndr_err_code ndr_pull_svcctl_QueryServiceStatus(struct ndr_pull *ndr, int flags, struct svcctl_QueryServiceStatus *r)
796 TALLOC_CTX *_mem_save_handle_0;
797 TALLOC_CTX *_mem_save_service_status_0;
798 if (flags & NDR_IN) {
799 ZERO_STRUCT(r->out);
801 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
802 NDR_PULL_ALLOC(ndr, r->in.handle);
804 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
805 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
806 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
807 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
808 NDR_PULL_ALLOC(ndr, r->out.service_status);
809 ZERO_STRUCTP(r->out.service_status);
811 if (flags & NDR_OUT) {
812 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
813 NDR_PULL_ALLOC(ndr, r->out.service_status);
815 _mem_save_service_status_0 = NDR_PULL_GET_MEM_CTX(ndr);
816 NDR_PULL_SET_MEM_CTX(ndr, r->out.service_status, LIBNDR_FLAG_REF_ALLOC);
817 NDR_CHECK(ndr_pull_SERVICE_STATUS(ndr, NDR_SCALARS, r->out.service_status));
818 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_service_status_0, LIBNDR_FLAG_REF_ALLOC);
819 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
821 return NDR_ERR_SUCCESS;
824 _PUBLIC_ void ndr_print_svcctl_QueryServiceStatus(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_QueryServiceStatus *r)
826 ndr_print_struct(ndr, name, "svcctl_QueryServiceStatus");
827 ndr->depth++;
828 if (flags & NDR_SET_VALUES) {
829 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
831 if (flags & NDR_IN) {
832 ndr_print_struct(ndr, "in", "svcctl_QueryServiceStatus");
833 ndr->depth++;
834 ndr_print_ptr(ndr, "handle", r->in.handle);
835 ndr->depth++;
836 ndr_print_policy_handle(ndr, "handle", r->in.handle);
837 ndr->depth--;
838 ndr->depth--;
840 if (flags & NDR_OUT) {
841 ndr_print_struct(ndr, "out", "svcctl_QueryServiceStatus");
842 ndr->depth++;
843 ndr_print_ptr(ndr, "service_status", r->out.service_status);
844 ndr->depth++;
845 ndr_print_SERVICE_STATUS(ndr, "service_status", r->out.service_status);
846 ndr->depth--;
847 ndr_print_WERROR(ndr, "result", r->out.result);
848 ndr->depth--;
850 ndr->depth--;
853 static enum ndr_err_code ndr_push_svcctl_SetServiceStatus(struct ndr_push *ndr, int flags, const struct svcctl_SetServiceStatus *r)
855 if (flags & NDR_IN) {
857 if (flags & NDR_OUT) {
858 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
860 return NDR_ERR_SUCCESS;
863 static enum ndr_err_code ndr_pull_svcctl_SetServiceStatus(struct ndr_pull *ndr, int flags, struct svcctl_SetServiceStatus *r)
865 if (flags & NDR_IN) {
867 if (flags & NDR_OUT) {
868 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
870 return NDR_ERR_SUCCESS;
873 _PUBLIC_ void ndr_print_svcctl_SetServiceStatus(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_SetServiceStatus *r)
875 ndr_print_struct(ndr, name, "svcctl_SetServiceStatus");
876 ndr->depth++;
877 if (flags & NDR_SET_VALUES) {
878 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
880 if (flags & NDR_IN) {
881 ndr_print_struct(ndr, "in", "svcctl_SetServiceStatus");
882 ndr->depth++;
883 ndr->depth--;
885 if (flags & NDR_OUT) {
886 ndr_print_struct(ndr, "out", "svcctl_SetServiceStatus");
887 ndr->depth++;
888 ndr_print_WERROR(ndr, "result", r->out.result);
889 ndr->depth--;
891 ndr->depth--;
894 static enum ndr_err_code ndr_push_svcctl_UnlockServiceDatabase(struct ndr_push *ndr, int flags, const struct svcctl_UnlockServiceDatabase *r)
896 if (flags & NDR_IN) {
897 if (r->in.lock == NULL) {
898 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
900 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.lock));
902 if (flags & NDR_OUT) {
903 if (r->out.lock == NULL) {
904 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
906 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.lock));
907 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
909 return NDR_ERR_SUCCESS;
912 static enum ndr_err_code ndr_pull_svcctl_UnlockServiceDatabase(struct ndr_pull *ndr, int flags, struct svcctl_UnlockServiceDatabase *r)
914 TALLOC_CTX *_mem_save_lock_0;
915 if (flags & NDR_IN) {
916 ZERO_STRUCT(r->out);
918 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
919 NDR_PULL_ALLOC(ndr, r->in.lock);
921 _mem_save_lock_0 = NDR_PULL_GET_MEM_CTX(ndr);
922 NDR_PULL_SET_MEM_CTX(ndr, r->in.lock, LIBNDR_FLAG_REF_ALLOC);
923 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.lock));
924 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_lock_0, LIBNDR_FLAG_REF_ALLOC);
925 NDR_PULL_ALLOC(ndr, r->out.lock);
926 *r->out.lock = *r->in.lock;
928 if (flags & NDR_OUT) {
929 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
930 NDR_PULL_ALLOC(ndr, r->out.lock);
932 _mem_save_lock_0 = NDR_PULL_GET_MEM_CTX(ndr);
933 NDR_PULL_SET_MEM_CTX(ndr, r->out.lock, LIBNDR_FLAG_REF_ALLOC);
934 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.lock));
935 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_lock_0, LIBNDR_FLAG_REF_ALLOC);
936 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
938 return NDR_ERR_SUCCESS;
941 _PUBLIC_ void ndr_print_svcctl_UnlockServiceDatabase(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_UnlockServiceDatabase *r)
943 ndr_print_struct(ndr, name, "svcctl_UnlockServiceDatabase");
944 ndr->depth++;
945 if (flags & NDR_SET_VALUES) {
946 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
948 if (flags & NDR_IN) {
949 ndr_print_struct(ndr, "in", "svcctl_UnlockServiceDatabase");
950 ndr->depth++;
951 ndr_print_ptr(ndr, "lock", r->in.lock);
952 ndr->depth++;
953 ndr_print_policy_handle(ndr, "lock", r->in.lock);
954 ndr->depth--;
955 ndr->depth--;
957 if (flags & NDR_OUT) {
958 ndr_print_struct(ndr, "out", "svcctl_UnlockServiceDatabase");
959 ndr->depth++;
960 ndr_print_ptr(ndr, "lock", r->out.lock);
961 ndr->depth++;
962 ndr_print_policy_handle(ndr, "lock", r->out.lock);
963 ndr->depth--;
964 ndr_print_WERROR(ndr, "result", r->out.result);
965 ndr->depth--;
967 ndr->depth--;
970 static enum ndr_err_code ndr_push_svcctl_NotifyBootConfigStatus(struct ndr_push *ndr, int flags, const struct svcctl_NotifyBootConfigStatus *r)
972 if (flags & NDR_IN) {
974 if (flags & NDR_OUT) {
975 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
977 return NDR_ERR_SUCCESS;
980 static enum ndr_err_code ndr_pull_svcctl_NotifyBootConfigStatus(struct ndr_pull *ndr, int flags, struct svcctl_NotifyBootConfigStatus *r)
982 if (flags & NDR_IN) {
984 if (flags & NDR_OUT) {
985 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
987 return NDR_ERR_SUCCESS;
990 _PUBLIC_ void ndr_print_svcctl_NotifyBootConfigStatus(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_NotifyBootConfigStatus *r)
992 ndr_print_struct(ndr, name, "svcctl_NotifyBootConfigStatus");
993 ndr->depth++;
994 if (flags & NDR_SET_VALUES) {
995 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
997 if (flags & NDR_IN) {
998 ndr_print_struct(ndr, "in", "svcctl_NotifyBootConfigStatus");
999 ndr->depth++;
1000 ndr->depth--;
1002 if (flags & NDR_OUT) {
1003 ndr_print_struct(ndr, "out", "svcctl_NotifyBootConfigStatus");
1004 ndr->depth++;
1005 ndr_print_WERROR(ndr, "result", r->out.result);
1006 ndr->depth--;
1008 ndr->depth--;
1011 static enum ndr_err_code ndr_push_svcctl_SCSetServiceBitsW(struct ndr_push *ndr, int flags, const struct svcctl_SCSetServiceBitsW *r)
1013 if (flags & NDR_IN) {
1014 if (r->in.handle == NULL) {
1015 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
1017 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
1018 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.bits));
1019 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.bitson));
1020 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.immediate));
1022 if (flags & NDR_OUT) {
1023 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
1025 return NDR_ERR_SUCCESS;
1028 static enum ndr_err_code ndr_pull_svcctl_SCSetServiceBitsW(struct ndr_pull *ndr, int flags, struct svcctl_SCSetServiceBitsW *r)
1030 TALLOC_CTX *_mem_save_handle_0;
1031 if (flags & NDR_IN) {
1032 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
1033 NDR_PULL_ALLOC(ndr, r->in.handle);
1035 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
1036 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
1037 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
1038 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
1039 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.bits));
1040 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.bitson));
1041 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.immediate));
1043 if (flags & NDR_OUT) {
1044 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
1046 return NDR_ERR_SUCCESS;
1049 _PUBLIC_ void ndr_print_svcctl_SCSetServiceBitsW(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_SCSetServiceBitsW *r)
1051 ndr_print_struct(ndr, name, "svcctl_SCSetServiceBitsW");
1052 ndr->depth++;
1053 if (flags & NDR_SET_VALUES) {
1054 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
1056 if (flags & NDR_IN) {
1057 ndr_print_struct(ndr, "in", "svcctl_SCSetServiceBitsW");
1058 ndr->depth++;
1059 ndr_print_ptr(ndr, "handle", r->in.handle);
1060 ndr->depth++;
1061 ndr_print_policy_handle(ndr, "handle", r->in.handle);
1062 ndr->depth--;
1063 ndr_print_uint32(ndr, "bits", r->in.bits);
1064 ndr_print_uint32(ndr, "bitson", r->in.bitson);
1065 ndr_print_uint32(ndr, "immediate", r->in.immediate);
1066 ndr->depth--;
1068 if (flags & NDR_OUT) {
1069 ndr_print_struct(ndr, "out", "svcctl_SCSetServiceBitsW");
1070 ndr->depth++;
1071 ndr_print_WERROR(ndr, "result", r->out.result);
1072 ndr->depth--;
1074 ndr->depth--;
1077 static enum ndr_err_code ndr_push_svcctl_ChangeServiceConfigW(struct ndr_push *ndr, int flags, const struct svcctl_ChangeServiceConfigW *r)
1079 if (flags & NDR_IN) {
1080 if (r->in.handle == NULL) {
1081 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
1083 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
1084 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.type));
1085 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.start));
1086 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.error));
1087 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.binary_path));
1088 if (r->in.binary_path) {
1089 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.binary_path, CH_UTF16)));
1090 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
1091 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.binary_path, CH_UTF16)));
1092 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));
1094 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.load_order_group));
1095 if (r->in.load_order_group) {
1096 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.load_order_group, CH_UTF16)));
1097 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
1098 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.load_order_group, CH_UTF16)));
1099 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));
1101 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.dependencies));
1102 if (r->in.dependencies) {
1103 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.dependencies, CH_UTF16)));
1104 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
1105 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.dependencies, CH_UTF16)));
1106 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.dependencies, ndr_charset_length(r->in.dependencies, CH_UTF16), sizeof(uint16_t), CH_UTF16));
1108 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.service_start_name));
1109 if (r->in.service_start_name) {
1110 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.service_start_name, CH_UTF16)));
1111 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
1112 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.service_start_name, CH_UTF16)));
1113 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));
1115 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.password));
1116 if (r->in.password) {
1117 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.password, CH_UTF16)));
1118 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
1119 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.password, CH_UTF16)));
1120 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.password, ndr_charset_length(r->in.password, CH_UTF16), sizeof(uint16_t), CH_UTF16));
1122 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.display_name));
1123 if (r->in.display_name) {
1124 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.display_name, CH_UTF16)));
1125 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
1126 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.display_name, CH_UTF16)));
1127 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));
1130 if (flags & NDR_OUT) {
1131 if (r->out.tag_id == NULL) {
1132 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
1134 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.tag_id));
1135 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
1137 return NDR_ERR_SUCCESS;
1140 static enum ndr_err_code ndr_pull_svcctl_ChangeServiceConfigW(struct ndr_pull *ndr, int flags, struct svcctl_ChangeServiceConfigW *r)
1142 uint32_t _ptr_binary_path;
1143 uint32_t _ptr_load_order_group;
1144 uint32_t _ptr_dependencies;
1145 uint32_t _ptr_service_start_name;
1146 uint32_t _ptr_password;
1147 uint32_t _ptr_display_name;
1148 TALLOC_CTX *_mem_save_handle_0;
1149 TALLOC_CTX *_mem_save_binary_path_0;
1150 TALLOC_CTX *_mem_save_load_order_group_0;
1151 TALLOC_CTX *_mem_save_tag_id_0;
1152 TALLOC_CTX *_mem_save_dependencies_0;
1153 TALLOC_CTX *_mem_save_service_start_name_0;
1154 TALLOC_CTX *_mem_save_password_0;
1155 TALLOC_CTX *_mem_save_display_name_0;
1156 if (flags & NDR_IN) {
1157 ZERO_STRUCT(r->out);
1159 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
1160 NDR_PULL_ALLOC(ndr, r->in.handle);
1162 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
1163 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
1164 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
1165 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
1166 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.type));
1167 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.start));
1168 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.error));
1169 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_binary_path));
1170 if (_ptr_binary_path) {
1171 NDR_PULL_ALLOC(ndr, r->in.binary_path);
1172 } else {
1173 r->in.binary_path = NULL;
1175 if (r->in.binary_path) {
1176 _mem_save_binary_path_0 = NDR_PULL_GET_MEM_CTX(ndr);
1177 NDR_PULL_SET_MEM_CTX(ndr, r->in.binary_path, 0);
1178 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.binary_path));
1179 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.binary_path));
1180 if (ndr_get_array_length(ndr, &r->in.binary_path) > ndr_get_array_size(ndr, &r->in.binary_path)) {
1181 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));
1183 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.binary_path), sizeof(uint16_t)));
1184 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));
1185 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_binary_path_0, 0);
1187 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_load_order_group));
1188 if (_ptr_load_order_group) {
1189 NDR_PULL_ALLOC(ndr, r->in.load_order_group);
1190 } else {
1191 r->in.load_order_group = NULL;
1193 if (r->in.load_order_group) {
1194 _mem_save_load_order_group_0 = NDR_PULL_GET_MEM_CTX(ndr);
1195 NDR_PULL_SET_MEM_CTX(ndr, r->in.load_order_group, 0);
1196 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.load_order_group));
1197 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.load_order_group));
1198 if (ndr_get_array_length(ndr, &r->in.load_order_group) > ndr_get_array_size(ndr, &r->in.load_order_group)) {
1199 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));
1201 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.load_order_group), sizeof(uint16_t)));
1202 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));
1203 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_load_order_group_0, 0);
1205 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_dependencies));
1206 if (_ptr_dependencies) {
1207 NDR_PULL_ALLOC(ndr, r->in.dependencies);
1208 } else {
1209 r->in.dependencies = NULL;
1211 if (r->in.dependencies) {
1212 _mem_save_dependencies_0 = NDR_PULL_GET_MEM_CTX(ndr);
1213 NDR_PULL_SET_MEM_CTX(ndr, r->in.dependencies, 0);
1214 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.dependencies));
1215 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.dependencies));
1216 if (ndr_get_array_length(ndr, &r->in.dependencies) > ndr_get_array_size(ndr, &r->in.dependencies)) {
1217 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));
1219 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.dependencies), sizeof(uint16_t)));
1220 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.dependencies, ndr_get_array_length(ndr, &r->in.dependencies), sizeof(uint16_t), CH_UTF16));
1221 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_dependencies_0, 0);
1223 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_service_start_name));
1224 if (_ptr_service_start_name) {
1225 NDR_PULL_ALLOC(ndr, r->in.service_start_name);
1226 } else {
1227 r->in.service_start_name = NULL;
1229 if (r->in.service_start_name) {
1230 _mem_save_service_start_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
1231 NDR_PULL_SET_MEM_CTX(ndr, r->in.service_start_name, 0);
1232 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.service_start_name));
1233 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.service_start_name));
1234 if (ndr_get_array_length(ndr, &r->in.service_start_name) > ndr_get_array_size(ndr, &r->in.service_start_name)) {
1235 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));
1237 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.service_start_name), sizeof(uint16_t)));
1238 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));
1239 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_service_start_name_0, 0);
1241 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_password));
1242 if (_ptr_password) {
1243 NDR_PULL_ALLOC(ndr, r->in.password);
1244 } else {
1245 r->in.password = NULL;
1247 if (r->in.password) {
1248 _mem_save_password_0 = NDR_PULL_GET_MEM_CTX(ndr);
1249 NDR_PULL_SET_MEM_CTX(ndr, r->in.password, 0);
1250 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.password));
1251 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.password));
1252 if (ndr_get_array_length(ndr, &r->in.password) > ndr_get_array_size(ndr, &r->in.password)) {
1253 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));
1255 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.password), sizeof(uint16_t)));
1256 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.password, ndr_get_array_length(ndr, &r->in.password), sizeof(uint16_t), CH_UTF16));
1257 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_password_0, 0);
1259 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_display_name));
1260 if (_ptr_display_name) {
1261 NDR_PULL_ALLOC(ndr, r->in.display_name);
1262 } else {
1263 r->in.display_name = NULL;
1265 if (r->in.display_name) {
1266 _mem_save_display_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
1267 NDR_PULL_SET_MEM_CTX(ndr, r->in.display_name, 0);
1268 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.display_name));
1269 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.display_name));
1270 if (ndr_get_array_length(ndr, &r->in.display_name) > ndr_get_array_size(ndr, &r->in.display_name)) {
1271 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));
1273 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.display_name), sizeof(uint16_t)));
1274 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));
1275 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_display_name_0, 0);
1277 NDR_PULL_ALLOC(ndr, r->out.tag_id);
1278 ZERO_STRUCTP(r->out.tag_id);
1280 if (flags & NDR_OUT) {
1281 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
1282 NDR_PULL_ALLOC(ndr, r->out.tag_id);
1284 _mem_save_tag_id_0 = NDR_PULL_GET_MEM_CTX(ndr);
1285 NDR_PULL_SET_MEM_CTX(ndr, r->out.tag_id, LIBNDR_FLAG_REF_ALLOC);
1286 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.tag_id));
1287 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_tag_id_0, LIBNDR_FLAG_REF_ALLOC);
1288 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
1290 return NDR_ERR_SUCCESS;
1293 _PUBLIC_ void ndr_print_svcctl_ChangeServiceConfigW(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_ChangeServiceConfigW *r)
1295 ndr_print_struct(ndr, name, "svcctl_ChangeServiceConfigW");
1296 ndr->depth++;
1297 if (flags & NDR_SET_VALUES) {
1298 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
1300 if (flags & NDR_IN) {
1301 ndr_print_struct(ndr, "in", "svcctl_ChangeServiceConfigW");
1302 ndr->depth++;
1303 ndr_print_ptr(ndr, "handle", r->in.handle);
1304 ndr->depth++;
1305 ndr_print_policy_handle(ndr, "handle", r->in.handle);
1306 ndr->depth--;
1307 ndr_print_uint32(ndr, "type", r->in.type);
1308 ndr_print_uint32(ndr, "start", r->in.start);
1309 ndr_print_uint32(ndr, "error", r->in.error);
1310 ndr_print_ptr(ndr, "binary_path", r->in.binary_path);
1311 ndr->depth++;
1312 if (r->in.binary_path) {
1313 ndr_print_string(ndr, "binary_path", r->in.binary_path);
1315 ndr->depth--;
1316 ndr_print_ptr(ndr, "load_order_group", r->in.load_order_group);
1317 ndr->depth++;
1318 if (r->in.load_order_group) {
1319 ndr_print_string(ndr, "load_order_group", r->in.load_order_group);
1321 ndr->depth--;
1322 ndr_print_ptr(ndr, "dependencies", r->in.dependencies);
1323 ndr->depth++;
1324 if (r->in.dependencies) {
1325 ndr_print_string(ndr, "dependencies", r->in.dependencies);
1327 ndr->depth--;
1328 ndr_print_ptr(ndr, "service_start_name", r->in.service_start_name);
1329 ndr->depth++;
1330 if (r->in.service_start_name) {
1331 ndr_print_string(ndr, "service_start_name", r->in.service_start_name);
1333 ndr->depth--;
1334 ndr_print_ptr(ndr, "password", r->in.password);
1335 ndr->depth++;
1336 if (r->in.password) {
1337 ndr_print_string(ndr, "password", r->in.password);
1339 ndr->depth--;
1340 ndr_print_ptr(ndr, "display_name", r->in.display_name);
1341 ndr->depth++;
1342 if (r->in.display_name) {
1343 ndr_print_string(ndr, "display_name", r->in.display_name);
1345 ndr->depth--;
1346 ndr->depth--;
1348 if (flags & NDR_OUT) {
1349 ndr_print_struct(ndr, "out", "svcctl_ChangeServiceConfigW");
1350 ndr->depth++;
1351 ndr_print_ptr(ndr, "tag_id", r->out.tag_id);
1352 ndr->depth++;
1353 ndr_print_uint32(ndr, "tag_id", *r->out.tag_id);
1354 ndr->depth--;
1355 ndr_print_WERROR(ndr, "result", r->out.result);
1356 ndr->depth--;
1358 ndr->depth--;
1361 static enum ndr_err_code ndr_push_svcctl_CreateServiceW(struct ndr_push *ndr, int flags, const struct svcctl_CreateServiceW *r)
1363 if (flags & NDR_IN) {
1364 if (r->in.scmanager_handle == NULL) {
1365 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
1367 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.scmanager_handle));
1368 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.ServiceName, CH_UTF16)));
1369 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
1370 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.ServiceName, CH_UTF16)));
1371 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.ServiceName, ndr_charset_length(r->in.ServiceName, CH_UTF16), sizeof(uint16_t), CH_UTF16));
1372 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.DisplayName));
1373 if (r->in.DisplayName) {
1374 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.DisplayName, CH_UTF16)));
1375 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
1376 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.DisplayName, CH_UTF16)));
1377 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.DisplayName, ndr_charset_length(r->in.DisplayName, CH_UTF16), sizeof(uint16_t), CH_UTF16));
1379 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.desired_access));
1380 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.type));
1381 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.start_type));
1382 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.error_control));
1383 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.binary_path, CH_UTF16)));
1384 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
1385 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.binary_path, CH_UTF16)));
1386 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));
1387 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.LoadOrderGroupKey));
1388 if (r->in.LoadOrderGroupKey) {
1389 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.LoadOrderGroupKey, CH_UTF16)));
1390 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
1391 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.LoadOrderGroupKey, CH_UTF16)));
1392 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.LoadOrderGroupKey, ndr_charset_length(r->in.LoadOrderGroupKey, CH_UTF16), sizeof(uint16_t), CH_UTF16));
1394 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.TagId));
1395 if (r->in.TagId) {
1396 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->in.TagId));
1398 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.dependencies));
1399 if (r->in.dependencies) {
1400 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.dependencies_size));
1401 NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->in.dependencies, r->in.dependencies_size));
1403 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.dependencies_size));
1404 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.service_start_name));
1405 if (r->in.service_start_name) {
1406 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.service_start_name, CH_UTF16)));
1407 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
1408 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.service_start_name, CH_UTF16)));
1409 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));
1411 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.password));
1412 if (r->in.password) {
1413 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.password_size));
1414 NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->in.password, r->in.password_size));
1416 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.password_size));
1418 if (flags & NDR_OUT) {
1419 NDR_CHECK(ndr_push_unique_ptr(ndr, r->out.TagId));
1420 if (r->out.TagId) {
1421 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.TagId));
1423 if (r->out.handle == NULL) {
1424 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
1426 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.handle));
1427 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
1429 return NDR_ERR_SUCCESS;
1432 static enum ndr_err_code ndr_pull_svcctl_CreateServiceW(struct ndr_pull *ndr, int flags, struct svcctl_CreateServiceW *r)
1434 uint32_t _ptr_DisplayName;
1435 uint32_t _ptr_LoadOrderGroupKey;
1436 uint32_t _ptr_TagId;
1437 uint32_t _ptr_dependencies;
1438 uint32_t _ptr_service_start_name;
1439 uint32_t _ptr_password;
1440 TALLOC_CTX *_mem_save_scmanager_handle_0;
1441 TALLOC_CTX *_mem_save_DisplayName_0;
1442 TALLOC_CTX *_mem_save_LoadOrderGroupKey_0;
1443 TALLOC_CTX *_mem_save_TagId_0;
1444 TALLOC_CTX *_mem_save_dependencies_0;
1445 TALLOC_CTX *_mem_save_service_start_name_0;
1446 TALLOC_CTX *_mem_save_password_0;
1447 TALLOC_CTX *_mem_save_handle_0;
1448 if (flags & NDR_IN) {
1449 ZERO_STRUCT(r->out);
1451 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
1452 NDR_PULL_ALLOC(ndr, r->in.scmanager_handle);
1454 _mem_save_scmanager_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
1455 NDR_PULL_SET_MEM_CTX(ndr, r->in.scmanager_handle, LIBNDR_FLAG_REF_ALLOC);
1456 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.scmanager_handle));
1457 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_scmanager_handle_0, LIBNDR_FLAG_REF_ALLOC);
1458 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.ServiceName));
1459 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.ServiceName));
1460 if (ndr_get_array_length(ndr, &r->in.ServiceName) > ndr_get_array_size(ndr, &r->in.ServiceName)) {
1461 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));
1463 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.ServiceName), sizeof(uint16_t)));
1464 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.ServiceName, ndr_get_array_length(ndr, &r->in.ServiceName), sizeof(uint16_t), CH_UTF16));
1465 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_DisplayName));
1466 if (_ptr_DisplayName) {
1467 NDR_PULL_ALLOC(ndr, r->in.DisplayName);
1468 } else {
1469 r->in.DisplayName = NULL;
1471 if (r->in.DisplayName) {
1472 _mem_save_DisplayName_0 = NDR_PULL_GET_MEM_CTX(ndr);
1473 NDR_PULL_SET_MEM_CTX(ndr, r->in.DisplayName, 0);
1474 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.DisplayName));
1475 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.DisplayName));
1476 if (ndr_get_array_length(ndr, &r->in.DisplayName) > ndr_get_array_size(ndr, &r->in.DisplayName)) {
1477 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));
1479 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.DisplayName), sizeof(uint16_t)));
1480 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.DisplayName, ndr_get_array_length(ndr, &r->in.DisplayName), sizeof(uint16_t), CH_UTF16));
1481 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_DisplayName_0, 0);
1483 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.desired_access));
1484 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.type));
1485 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.start_type));
1486 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.error_control));
1487 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.binary_path));
1488 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.binary_path));
1489 if (ndr_get_array_length(ndr, &r->in.binary_path) > ndr_get_array_size(ndr, &r->in.binary_path)) {
1490 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));
1492 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.binary_path), sizeof(uint16_t)));
1493 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));
1494 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_LoadOrderGroupKey));
1495 if (_ptr_LoadOrderGroupKey) {
1496 NDR_PULL_ALLOC(ndr, r->in.LoadOrderGroupKey);
1497 } else {
1498 r->in.LoadOrderGroupKey = NULL;
1500 if (r->in.LoadOrderGroupKey) {
1501 _mem_save_LoadOrderGroupKey_0 = NDR_PULL_GET_MEM_CTX(ndr);
1502 NDR_PULL_SET_MEM_CTX(ndr, r->in.LoadOrderGroupKey, 0);
1503 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.LoadOrderGroupKey));
1504 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.LoadOrderGroupKey));
1505 if (ndr_get_array_length(ndr, &r->in.LoadOrderGroupKey) > ndr_get_array_size(ndr, &r->in.LoadOrderGroupKey)) {
1506 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));
1508 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.LoadOrderGroupKey), sizeof(uint16_t)));
1509 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.LoadOrderGroupKey, ndr_get_array_length(ndr, &r->in.LoadOrderGroupKey), sizeof(uint16_t), CH_UTF16));
1510 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_LoadOrderGroupKey_0, 0);
1512 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_TagId));
1513 if (_ptr_TagId) {
1514 NDR_PULL_ALLOC(ndr, r->in.TagId);
1515 } else {
1516 r->in.TagId = NULL;
1518 if (r->in.TagId) {
1519 _mem_save_TagId_0 = NDR_PULL_GET_MEM_CTX(ndr);
1520 NDR_PULL_SET_MEM_CTX(ndr, r->in.TagId, 0);
1521 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->in.TagId));
1522 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_TagId_0, 0);
1524 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_dependencies));
1525 if (_ptr_dependencies) {
1526 NDR_PULL_ALLOC(ndr, r->in.dependencies);
1527 } else {
1528 r->in.dependencies = NULL;
1530 if (r->in.dependencies) {
1531 _mem_save_dependencies_0 = NDR_PULL_GET_MEM_CTX(ndr);
1532 NDR_PULL_SET_MEM_CTX(ndr, r->in.dependencies, 0);
1533 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.dependencies));
1534 NDR_PULL_ALLOC_N(ndr, r->in.dependencies, ndr_get_array_size(ndr, &r->in.dependencies));
1535 NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->in.dependencies, ndr_get_array_size(ndr, &r->in.dependencies)));
1536 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_dependencies_0, 0);
1538 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.dependencies_size));
1539 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_service_start_name));
1540 if (_ptr_service_start_name) {
1541 NDR_PULL_ALLOC(ndr, r->in.service_start_name);
1542 } else {
1543 r->in.service_start_name = NULL;
1545 if (r->in.service_start_name) {
1546 _mem_save_service_start_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
1547 NDR_PULL_SET_MEM_CTX(ndr, r->in.service_start_name, 0);
1548 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.service_start_name));
1549 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.service_start_name));
1550 if (ndr_get_array_length(ndr, &r->in.service_start_name) > ndr_get_array_size(ndr, &r->in.service_start_name)) {
1551 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));
1553 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.service_start_name), sizeof(uint16_t)));
1554 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));
1555 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_service_start_name_0, 0);
1557 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_password));
1558 if (_ptr_password) {
1559 NDR_PULL_ALLOC(ndr, r->in.password);
1560 } else {
1561 r->in.password = NULL;
1563 if (r->in.password) {
1564 _mem_save_password_0 = NDR_PULL_GET_MEM_CTX(ndr);
1565 NDR_PULL_SET_MEM_CTX(ndr, r->in.password, 0);
1566 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.password));
1567 NDR_PULL_ALLOC_N(ndr, r->in.password, ndr_get_array_size(ndr, &r->in.password));
1568 NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->in.password, ndr_get_array_size(ndr, &r->in.password)));
1569 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_password_0, 0);
1571 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.password_size));
1572 NDR_PULL_ALLOC(ndr, r->out.handle);
1573 ZERO_STRUCTP(r->out.handle);
1574 if (r->in.dependencies) {
1575 NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->in.dependencies, r->in.dependencies_size));
1577 if (r->in.password) {
1578 NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->in.password, r->in.password_size));
1581 if (flags & NDR_OUT) {
1582 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_TagId));
1583 if (_ptr_TagId) {
1584 NDR_PULL_ALLOC(ndr, r->out.TagId);
1585 } else {
1586 r->out.TagId = NULL;
1588 if (r->out.TagId) {
1589 _mem_save_TagId_0 = NDR_PULL_GET_MEM_CTX(ndr);
1590 NDR_PULL_SET_MEM_CTX(ndr, r->out.TagId, 0);
1591 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.TagId));
1592 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_TagId_0, 0);
1594 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
1595 NDR_PULL_ALLOC(ndr, r->out.handle);
1597 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
1598 NDR_PULL_SET_MEM_CTX(ndr, r->out.handle, LIBNDR_FLAG_REF_ALLOC);
1599 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.handle));
1600 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
1601 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
1603 return NDR_ERR_SUCCESS;
1606 _PUBLIC_ void ndr_print_svcctl_CreateServiceW(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_CreateServiceW *r)
1608 ndr_print_struct(ndr, name, "svcctl_CreateServiceW");
1609 ndr->depth++;
1610 if (flags & NDR_SET_VALUES) {
1611 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
1613 if (flags & NDR_IN) {
1614 ndr_print_struct(ndr, "in", "svcctl_CreateServiceW");
1615 ndr->depth++;
1616 ndr_print_ptr(ndr, "scmanager_handle", r->in.scmanager_handle);
1617 ndr->depth++;
1618 ndr_print_policy_handle(ndr, "scmanager_handle", r->in.scmanager_handle);
1619 ndr->depth--;
1620 ndr_print_string(ndr, "ServiceName", r->in.ServiceName);
1621 ndr_print_ptr(ndr, "DisplayName", r->in.DisplayName);
1622 ndr->depth++;
1623 if (r->in.DisplayName) {
1624 ndr_print_string(ndr, "DisplayName", r->in.DisplayName);
1626 ndr->depth--;
1627 ndr_print_uint32(ndr, "desired_access", r->in.desired_access);
1628 ndr_print_uint32(ndr, "type", r->in.type);
1629 ndr_print_uint32(ndr, "start_type", r->in.start_type);
1630 ndr_print_uint32(ndr, "error_control", r->in.error_control);
1631 ndr_print_string(ndr, "binary_path", r->in.binary_path);
1632 ndr_print_ptr(ndr, "LoadOrderGroupKey", r->in.LoadOrderGroupKey);
1633 ndr->depth++;
1634 if (r->in.LoadOrderGroupKey) {
1635 ndr_print_string(ndr, "LoadOrderGroupKey", r->in.LoadOrderGroupKey);
1637 ndr->depth--;
1638 ndr_print_ptr(ndr, "TagId", r->in.TagId);
1639 ndr->depth++;
1640 if (r->in.TagId) {
1641 ndr_print_uint32(ndr, "TagId", *r->in.TagId);
1643 ndr->depth--;
1644 ndr_print_ptr(ndr, "dependencies", r->in.dependencies);
1645 ndr->depth++;
1646 if (r->in.dependencies) {
1647 ndr_print_array_uint8(ndr, "dependencies", r->in.dependencies, r->in.dependencies_size);
1649 ndr->depth--;
1650 ndr_print_uint32(ndr, "dependencies_size", r->in.dependencies_size);
1651 ndr_print_ptr(ndr, "service_start_name", r->in.service_start_name);
1652 ndr->depth++;
1653 if (r->in.service_start_name) {
1654 ndr_print_string(ndr, "service_start_name", r->in.service_start_name);
1656 ndr->depth--;
1657 ndr_print_ptr(ndr, "password", r->in.password);
1658 ndr->depth++;
1659 if (r->in.password) {
1660 ndr_print_array_uint8(ndr, "password", r->in.password, r->in.password_size);
1662 ndr->depth--;
1663 ndr_print_uint32(ndr, "password_size", r->in.password_size);
1664 ndr->depth--;
1666 if (flags & NDR_OUT) {
1667 ndr_print_struct(ndr, "out", "svcctl_CreateServiceW");
1668 ndr->depth++;
1669 ndr_print_ptr(ndr, "TagId", r->out.TagId);
1670 ndr->depth++;
1671 if (r->out.TagId) {
1672 ndr_print_uint32(ndr, "TagId", *r->out.TagId);
1674 ndr->depth--;
1675 ndr_print_ptr(ndr, "handle", r->out.handle);
1676 ndr->depth++;
1677 ndr_print_policy_handle(ndr, "handle", r->out.handle);
1678 ndr->depth--;
1679 ndr_print_WERROR(ndr, "result", r->out.result);
1680 ndr->depth--;
1682 ndr->depth--;
1685 static enum ndr_err_code ndr_push_svcctl_EnumDependentServicesW(struct ndr_push *ndr, int flags, const struct svcctl_EnumDependentServicesW *r)
1687 if (flags & NDR_IN) {
1688 if (r->in.service == NULL) {
1689 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
1691 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.service));
1692 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.state));
1693 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.buf_size));
1695 if (flags & NDR_OUT) {
1696 if (r->out.service_status == NULL) {
1697 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
1699 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.buf_size));
1700 NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->out.service_status, r->in.buf_size));
1701 if (r->out.bytes_needed == NULL) {
1702 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
1704 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.bytes_needed));
1705 if (r->out.services_returned == NULL) {
1706 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
1708 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.services_returned));
1709 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
1711 return NDR_ERR_SUCCESS;
1714 static enum ndr_err_code ndr_pull_svcctl_EnumDependentServicesW(struct ndr_pull *ndr, int flags, struct svcctl_EnumDependentServicesW *r)
1716 TALLOC_CTX *_mem_save_service_0;
1717 TALLOC_CTX *_mem_save_bytes_needed_0;
1718 TALLOC_CTX *_mem_save_services_returned_0;
1719 if (flags & NDR_IN) {
1720 ZERO_STRUCT(r->out);
1722 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
1723 NDR_PULL_ALLOC(ndr, r->in.service);
1725 _mem_save_service_0 = NDR_PULL_GET_MEM_CTX(ndr);
1726 NDR_PULL_SET_MEM_CTX(ndr, r->in.service, LIBNDR_FLAG_REF_ALLOC);
1727 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.service));
1728 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_service_0, LIBNDR_FLAG_REF_ALLOC);
1729 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.state));
1730 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.buf_size));
1731 if (r->in.buf_size < 0 || r->in.buf_size > 0x40000) {
1732 return ndr_pull_error(ndr, NDR_ERR_RANGE, "value out of range");
1734 NDR_PULL_ALLOC_N(ndr, r->out.service_status, r->in.buf_size);
1735 memset(r->out.service_status, 0, (r->in.buf_size) * sizeof(*r->out.service_status));
1736 NDR_PULL_ALLOC(ndr, r->out.bytes_needed);
1737 ZERO_STRUCTP(r->out.bytes_needed);
1738 NDR_PULL_ALLOC(ndr, r->out.services_returned);
1739 ZERO_STRUCTP(r->out.services_returned);
1741 if (flags & NDR_OUT) {
1742 NDR_CHECK(ndr_pull_array_size(ndr, &r->out.service_status));
1743 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
1744 NDR_PULL_ALLOC_N(ndr, r->out.service_status, ndr_get_array_size(ndr, &r->out.service_status));
1746 NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->out.service_status, ndr_get_array_size(ndr, &r->out.service_status)));
1747 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
1748 NDR_PULL_ALLOC(ndr, r->out.bytes_needed);
1750 _mem_save_bytes_needed_0 = NDR_PULL_GET_MEM_CTX(ndr);
1751 NDR_PULL_SET_MEM_CTX(ndr, r->out.bytes_needed, LIBNDR_FLAG_REF_ALLOC);
1752 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.bytes_needed));
1753 if (*r->out.bytes_needed < 0 || *r->out.bytes_needed > 0x40000) {
1754 return ndr_pull_error(ndr, NDR_ERR_RANGE, "value out of range");
1756 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_bytes_needed_0, LIBNDR_FLAG_REF_ALLOC);
1757 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
1758 NDR_PULL_ALLOC(ndr, r->out.services_returned);
1760 _mem_save_services_returned_0 = NDR_PULL_GET_MEM_CTX(ndr);
1761 NDR_PULL_SET_MEM_CTX(ndr, r->out.services_returned, LIBNDR_FLAG_REF_ALLOC);
1762 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.services_returned));
1763 if (*r->out.services_returned < 0 || *r->out.services_returned > 0x40000) {
1764 return ndr_pull_error(ndr, NDR_ERR_RANGE, "value out of range");
1766 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_services_returned_0, LIBNDR_FLAG_REF_ALLOC);
1767 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
1768 if (r->out.service_status) {
1769 NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->out.service_status, r->in.buf_size));
1772 return NDR_ERR_SUCCESS;
1775 _PUBLIC_ void ndr_print_svcctl_EnumDependentServicesW(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_EnumDependentServicesW *r)
1777 ndr_print_struct(ndr, name, "svcctl_EnumDependentServicesW");
1778 ndr->depth++;
1779 if (flags & NDR_SET_VALUES) {
1780 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
1782 if (flags & NDR_IN) {
1783 ndr_print_struct(ndr, "in", "svcctl_EnumDependentServicesW");
1784 ndr->depth++;
1785 ndr_print_ptr(ndr, "service", r->in.service);
1786 ndr->depth++;
1787 ndr_print_policy_handle(ndr, "service", r->in.service);
1788 ndr->depth--;
1789 ndr_print_uint32(ndr, "state", r->in.state);
1790 ndr_print_uint32(ndr, "buf_size", r->in.buf_size);
1791 ndr->depth--;
1793 if (flags & NDR_OUT) {
1794 ndr_print_struct(ndr, "out", "svcctl_EnumDependentServicesW");
1795 ndr->depth++;
1796 ndr_print_ptr(ndr, "service_status", r->out.service_status);
1797 ndr->depth++;
1798 ndr_print_array_uint8(ndr, "service_status", r->out.service_status, r->in.buf_size);
1799 ndr->depth--;
1800 ndr_print_ptr(ndr, "bytes_needed", r->out.bytes_needed);
1801 ndr->depth++;
1802 ndr_print_uint32(ndr, "bytes_needed", *r->out.bytes_needed);
1803 ndr->depth--;
1804 ndr_print_ptr(ndr, "services_returned", r->out.services_returned);
1805 ndr->depth++;
1806 ndr_print_uint32(ndr, "services_returned", *r->out.services_returned);
1807 ndr->depth--;
1808 ndr_print_WERROR(ndr, "result", r->out.result);
1809 ndr->depth--;
1811 ndr->depth--;
1814 static enum ndr_err_code ndr_push_svcctl_EnumServicesStatusW(struct ndr_push *ndr, int flags, const struct svcctl_EnumServicesStatusW *r)
1816 if (flags & NDR_IN) {
1817 if (r->in.handle == NULL) {
1818 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
1820 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
1821 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.type));
1822 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.state));
1823 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.buf_size));
1824 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.resume_handle));
1825 if (r->in.resume_handle) {
1826 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->in.resume_handle));
1829 if (flags & NDR_OUT) {
1830 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.buf_size));
1831 NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->out.service, r->in.buf_size));
1832 if (r->out.bytes_needed == NULL) {
1833 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
1835 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.bytes_needed));
1836 if (r->out.services_returned == NULL) {
1837 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
1839 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.services_returned));
1840 NDR_CHECK(ndr_push_unique_ptr(ndr, r->out.resume_handle));
1841 if (r->out.resume_handle) {
1842 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.resume_handle));
1844 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
1846 return NDR_ERR_SUCCESS;
1849 static enum ndr_err_code ndr_pull_svcctl_EnumServicesStatusW(struct ndr_pull *ndr, int flags, struct svcctl_EnumServicesStatusW *r)
1851 uint32_t _ptr_resume_handle;
1852 TALLOC_CTX *_mem_save_handle_0;
1853 TALLOC_CTX *_mem_save_bytes_needed_0;
1854 TALLOC_CTX *_mem_save_services_returned_0;
1855 TALLOC_CTX *_mem_save_resume_handle_0;
1856 if (flags & NDR_IN) {
1857 ZERO_STRUCT(r->out);
1859 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
1860 NDR_PULL_ALLOC(ndr, r->in.handle);
1862 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
1863 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
1864 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
1865 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
1866 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.type));
1867 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.state));
1868 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.buf_size));
1869 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_resume_handle));
1870 if (_ptr_resume_handle) {
1871 NDR_PULL_ALLOC(ndr, r->in.resume_handle);
1872 } else {
1873 r->in.resume_handle = NULL;
1875 if (r->in.resume_handle) {
1876 _mem_save_resume_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
1877 NDR_PULL_SET_MEM_CTX(ndr, r->in.resume_handle, 0);
1878 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->in.resume_handle));
1879 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_resume_handle_0, 0);
1881 NDR_PULL_ALLOC(ndr, r->out.bytes_needed);
1882 ZERO_STRUCTP(r->out.bytes_needed);
1883 NDR_PULL_ALLOC(ndr, r->out.services_returned);
1884 ZERO_STRUCTP(r->out.services_returned);
1886 if (flags & NDR_OUT) {
1887 NDR_CHECK(ndr_pull_array_size(ndr, &r->out.service));
1888 NDR_PULL_ALLOC_N(ndr, r->out.service, ndr_get_array_size(ndr, &r->out.service));
1889 NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->out.service, ndr_get_array_size(ndr, &r->out.service)));
1890 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
1891 NDR_PULL_ALLOC(ndr, r->out.bytes_needed);
1893 _mem_save_bytes_needed_0 = NDR_PULL_GET_MEM_CTX(ndr);
1894 NDR_PULL_SET_MEM_CTX(ndr, r->out.bytes_needed, LIBNDR_FLAG_REF_ALLOC);
1895 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.bytes_needed));
1896 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_bytes_needed_0, LIBNDR_FLAG_REF_ALLOC);
1897 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
1898 NDR_PULL_ALLOC(ndr, r->out.services_returned);
1900 _mem_save_services_returned_0 = NDR_PULL_GET_MEM_CTX(ndr);
1901 NDR_PULL_SET_MEM_CTX(ndr, r->out.services_returned, LIBNDR_FLAG_REF_ALLOC);
1902 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.services_returned));
1903 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_services_returned_0, LIBNDR_FLAG_REF_ALLOC);
1904 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_resume_handle));
1905 if (_ptr_resume_handle) {
1906 NDR_PULL_ALLOC(ndr, r->out.resume_handle);
1907 } else {
1908 r->out.resume_handle = NULL;
1910 if (r->out.resume_handle) {
1911 _mem_save_resume_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
1912 NDR_PULL_SET_MEM_CTX(ndr, r->out.resume_handle, 0);
1913 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.resume_handle));
1914 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_resume_handle_0, 0);
1916 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
1917 if (r->out.service) {
1918 NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->out.service, r->in.buf_size));
1921 return NDR_ERR_SUCCESS;
1924 _PUBLIC_ void ndr_print_svcctl_EnumServicesStatusW(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_EnumServicesStatusW *r)
1926 ndr_print_struct(ndr, name, "svcctl_EnumServicesStatusW");
1927 ndr->depth++;
1928 if (flags & NDR_SET_VALUES) {
1929 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
1931 if (flags & NDR_IN) {
1932 ndr_print_struct(ndr, "in", "svcctl_EnumServicesStatusW");
1933 ndr->depth++;
1934 ndr_print_ptr(ndr, "handle", r->in.handle);
1935 ndr->depth++;
1936 ndr_print_policy_handle(ndr, "handle", r->in.handle);
1937 ndr->depth--;
1938 ndr_print_uint32(ndr, "type", r->in.type);
1939 ndr_print_uint32(ndr, "state", r->in.state);
1940 ndr_print_uint32(ndr, "buf_size", r->in.buf_size);
1941 ndr_print_ptr(ndr, "resume_handle", r->in.resume_handle);
1942 ndr->depth++;
1943 if (r->in.resume_handle) {
1944 ndr_print_uint32(ndr, "resume_handle", *r->in.resume_handle);
1946 ndr->depth--;
1947 ndr->depth--;
1949 if (flags & NDR_OUT) {
1950 ndr_print_struct(ndr, "out", "svcctl_EnumServicesStatusW");
1951 ndr->depth++;
1952 ndr_print_array_uint8(ndr, "service", r->out.service, r->in.buf_size);
1953 ndr_print_ptr(ndr, "bytes_needed", r->out.bytes_needed);
1954 ndr->depth++;
1955 ndr_print_uint32(ndr, "bytes_needed", *r->out.bytes_needed);
1956 ndr->depth--;
1957 ndr_print_ptr(ndr, "services_returned", r->out.services_returned);
1958 ndr->depth++;
1959 ndr_print_uint32(ndr, "services_returned", *r->out.services_returned);
1960 ndr->depth--;
1961 ndr_print_ptr(ndr, "resume_handle", r->out.resume_handle);
1962 ndr->depth++;
1963 if (r->out.resume_handle) {
1964 ndr_print_uint32(ndr, "resume_handle", *r->out.resume_handle);
1966 ndr->depth--;
1967 ndr_print_WERROR(ndr, "result", r->out.result);
1968 ndr->depth--;
1970 ndr->depth--;
1973 static enum ndr_err_code ndr_push_svcctl_OpenSCManagerW(struct ndr_push *ndr, int flags, const struct svcctl_OpenSCManagerW *r)
1975 if (flags & NDR_IN) {
1976 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.MachineName));
1977 if (r->in.MachineName) {
1978 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.MachineName, CH_UTF16)));
1979 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
1980 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.MachineName, CH_UTF16)));
1981 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.MachineName, ndr_charset_length(r->in.MachineName, CH_UTF16), sizeof(uint16_t), CH_UTF16));
1983 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.DatabaseName));
1984 if (r->in.DatabaseName) {
1985 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.DatabaseName, CH_UTF16)));
1986 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
1987 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.DatabaseName, CH_UTF16)));
1988 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.DatabaseName, ndr_charset_length(r->in.DatabaseName, CH_UTF16), sizeof(uint16_t), CH_UTF16));
1990 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.access_mask));
1992 if (flags & NDR_OUT) {
1993 if (r->out.handle == NULL) {
1994 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
1996 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.handle));
1997 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
1999 return NDR_ERR_SUCCESS;
2002 static enum ndr_err_code ndr_pull_svcctl_OpenSCManagerW(struct ndr_pull *ndr, int flags, struct svcctl_OpenSCManagerW *r)
2004 uint32_t _ptr_MachineName;
2005 uint32_t _ptr_DatabaseName;
2006 TALLOC_CTX *_mem_save_MachineName_0;
2007 TALLOC_CTX *_mem_save_DatabaseName_0;
2008 TALLOC_CTX *_mem_save_handle_0;
2009 if (flags & NDR_IN) {
2010 ZERO_STRUCT(r->out);
2012 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_MachineName));
2013 if (_ptr_MachineName) {
2014 NDR_PULL_ALLOC(ndr, r->in.MachineName);
2015 } else {
2016 r->in.MachineName = NULL;
2018 if (r->in.MachineName) {
2019 _mem_save_MachineName_0 = NDR_PULL_GET_MEM_CTX(ndr);
2020 NDR_PULL_SET_MEM_CTX(ndr, r->in.MachineName, 0);
2021 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.MachineName));
2022 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.MachineName));
2023 if (ndr_get_array_length(ndr, &r->in.MachineName) > ndr_get_array_size(ndr, &r->in.MachineName)) {
2024 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));
2026 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.MachineName), sizeof(uint16_t)));
2027 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.MachineName, ndr_get_array_length(ndr, &r->in.MachineName), sizeof(uint16_t), CH_UTF16));
2028 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_MachineName_0, 0);
2030 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_DatabaseName));
2031 if (_ptr_DatabaseName) {
2032 NDR_PULL_ALLOC(ndr, r->in.DatabaseName);
2033 } else {
2034 r->in.DatabaseName = NULL;
2036 if (r->in.DatabaseName) {
2037 _mem_save_DatabaseName_0 = NDR_PULL_GET_MEM_CTX(ndr);
2038 NDR_PULL_SET_MEM_CTX(ndr, r->in.DatabaseName, 0);
2039 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.DatabaseName));
2040 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.DatabaseName));
2041 if (ndr_get_array_length(ndr, &r->in.DatabaseName) > ndr_get_array_size(ndr, &r->in.DatabaseName)) {
2042 return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.DatabaseName), ndr_get_array_length(ndr, &r->in.DatabaseName));
2044 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.DatabaseName), sizeof(uint16_t)));
2045 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.DatabaseName, ndr_get_array_length(ndr, &r->in.DatabaseName), sizeof(uint16_t), CH_UTF16));
2046 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_DatabaseName_0, 0);
2048 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.access_mask));
2049 NDR_PULL_ALLOC(ndr, r->out.handle);
2050 ZERO_STRUCTP(r->out.handle);
2052 if (flags & NDR_OUT) {
2053 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
2054 NDR_PULL_ALLOC(ndr, r->out.handle);
2056 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
2057 NDR_PULL_SET_MEM_CTX(ndr, r->out.handle, LIBNDR_FLAG_REF_ALLOC);
2058 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.handle));
2059 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
2060 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
2062 return NDR_ERR_SUCCESS;
2065 _PUBLIC_ void ndr_print_svcctl_OpenSCManagerW(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_OpenSCManagerW *r)
2067 ndr_print_struct(ndr, name, "svcctl_OpenSCManagerW");
2068 ndr->depth++;
2069 if (flags & NDR_SET_VALUES) {
2070 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
2072 if (flags & NDR_IN) {
2073 ndr_print_struct(ndr, "in", "svcctl_OpenSCManagerW");
2074 ndr->depth++;
2075 ndr_print_ptr(ndr, "MachineName", r->in.MachineName);
2076 ndr->depth++;
2077 if (r->in.MachineName) {
2078 ndr_print_string(ndr, "MachineName", r->in.MachineName);
2080 ndr->depth--;
2081 ndr_print_ptr(ndr, "DatabaseName", r->in.DatabaseName);
2082 ndr->depth++;
2083 if (r->in.DatabaseName) {
2084 ndr_print_string(ndr, "DatabaseName", r->in.DatabaseName);
2086 ndr->depth--;
2087 ndr_print_uint32(ndr, "access_mask", r->in.access_mask);
2088 ndr->depth--;
2090 if (flags & NDR_OUT) {
2091 ndr_print_struct(ndr, "out", "svcctl_OpenSCManagerW");
2092 ndr->depth++;
2093 ndr_print_ptr(ndr, "handle", r->out.handle);
2094 ndr->depth++;
2095 ndr_print_policy_handle(ndr, "handle", r->out.handle);
2096 ndr->depth--;
2097 ndr_print_WERROR(ndr, "result", r->out.result);
2098 ndr->depth--;
2100 ndr->depth--;
2103 static enum ndr_err_code ndr_push_svcctl_OpenServiceW(struct ndr_push *ndr, int flags, const struct svcctl_OpenServiceW *r)
2105 if (flags & NDR_IN) {
2106 if (r->in.scmanager_handle == NULL) {
2107 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
2109 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.scmanager_handle));
2110 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.ServiceName, CH_UTF16)));
2111 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
2112 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.ServiceName, CH_UTF16)));
2113 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.ServiceName, ndr_charset_length(r->in.ServiceName, CH_UTF16), sizeof(uint16_t), CH_UTF16));
2114 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.access_mask));
2116 if (flags & NDR_OUT) {
2117 if (r->out.handle == NULL) {
2118 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
2120 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.handle));
2121 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
2123 return NDR_ERR_SUCCESS;
2126 static enum ndr_err_code ndr_pull_svcctl_OpenServiceW(struct ndr_pull *ndr, int flags, struct svcctl_OpenServiceW *r)
2128 TALLOC_CTX *_mem_save_scmanager_handle_0;
2129 TALLOC_CTX *_mem_save_handle_0;
2130 if (flags & NDR_IN) {
2131 ZERO_STRUCT(r->out);
2133 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
2134 NDR_PULL_ALLOC(ndr, r->in.scmanager_handle);
2136 _mem_save_scmanager_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
2137 NDR_PULL_SET_MEM_CTX(ndr, r->in.scmanager_handle, LIBNDR_FLAG_REF_ALLOC);
2138 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.scmanager_handle));
2139 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_scmanager_handle_0, LIBNDR_FLAG_REF_ALLOC);
2140 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.ServiceName));
2141 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.ServiceName));
2142 if (ndr_get_array_length(ndr, &r->in.ServiceName) > ndr_get_array_size(ndr, &r->in.ServiceName)) {
2143 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));
2145 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.ServiceName), sizeof(uint16_t)));
2146 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.ServiceName, ndr_get_array_length(ndr, &r->in.ServiceName), sizeof(uint16_t), CH_UTF16));
2147 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.access_mask));
2148 NDR_PULL_ALLOC(ndr, r->out.handle);
2149 ZERO_STRUCTP(r->out.handle);
2151 if (flags & NDR_OUT) {
2152 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
2153 NDR_PULL_ALLOC(ndr, r->out.handle);
2155 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
2156 NDR_PULL_SET_MEM_CTX(ndr, r->out.handle, LIBNDR_FLAG_REF_ALLOC);
2157 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.handle));
2158 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
2159 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
2161 return NDR_ERR_SUCCESS;
2164 _PUBLIC_ void ndr_print_svcctl_OpenServiceW(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_OpenServiceW *r)
2166 ndr_print_struct(ndr, name, "svcctl_OpenServiceW");
2167 ndr->depth++;
2168 if (flags & NDR_SET_VALUES) {
2169 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
2171 if (flags & NDR_IN) {
2172 ndr_print_struct(ndr, "in", "svcctl_OpenServiceW");
2173 ndr->depth++;
2174 ndr_print_ptr(ndr, "scmanager_handle", r->in.scmanager_handle);
2175 ndr->depth++;
2176 ndr_print_policy_handle(ndr, "scmanager_handle", r->in.scmanager_handle);
2177 ndr->depth--;
2178 ndr_print_string(ndr, "ServiceName", r->in.ServiceName);
2179 ndr_print_uint32(ndr, "access_mask", r->in.access_mask);
2180 ndr->depth--;
2182 if (flags & NDR_OUT) {
2183 ndr_print_struct(ndr, "out", "svcctl_OpenServiceW");
2184 ndr->depth++;
2185 ndr_print_ptr(ndr, "handle", r->out.handle);
2186 ndr->depth++;
2187 ndr_print_policy_handle(ndr, "handle", r->out.handle);
2188 ndr->depth--;
2189 ndr_print_WERROR(ndr, "result", r->out.result);
2190 ndr->depth--;
2192 ndr->depth--;
2195 static enum ndr_err_code ndr_push_svcctl_QueryServiceConfigW(struct ndr_push *ndr, int flags, const struct svcctl_QueryServiceConfigW *r)
2197 if (flags & NDR_IN) {
2198 if (r->in.handle == NULL) {
2199 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
2201 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
2202 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.buf_size));
2204 if (flags & NDR_OUT) {
2205 NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->out.query, r->in.buf_size));
2206 if (r->out.bytes_needed == NULL) {
2207 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
2209 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.bytes_needed));
2210 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
2212 return NDR_ERR_SUCCESS;
2215 static enum ndr_err_code ndr_pull_svcctl_QueryServiceConfigW(struct ndr_pull *ndr, int flags, struct svcctl_QueryServiceConfigW *r)
2217 TALLOC_CTX *_mem_save_handle_0;
2218 TALLOC_CTX *_mem_save_bytes_needed_0;
2219 if (flags & NDR_IN) {
2220 ZERO_STRUCT(r->out);
2222 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
2223 NDR_PULL_ALLOC(ndr, r->in.handle);
2225 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
2226 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
2227 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
2228 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
2229 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.buf_size));
2230 NDR_PULL_ALLOC(ndr, r->out.bytes_needed);
2231 ZERO_STRUCTP(r->out.bytes_needed);
2233 if (flags & NDR_OUT) {
2234 NDR_PULL_ALLOC_N(ndr, r->out.query, r->in.buf_size);
2235 NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->out.query, r->in.buf_size));
2236 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
2237 NDR_PULL_ALLOC(ndr, r->out.bytes_needed);
2239 _mem_save_bytes_needed_0 = NDR_PULL_GET_MEM_CTX(ndr);
2240 NDR_PULL_SET_MEM_CTX(ndr, r->out.bytes_needed, LIBNDR_FLAG_REF_ALLOC);
2241 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.bytes_needed));
2242 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_bytes_needed_0, LIBNDR_FLAG_REF_ALLOC);
2243 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
2245 return NDR_ERR_SUCCESS;
2248 _PUBLIC_ void ndr_print_svcctl_QueryServiceConfigW(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_QueryServiceConfigW *r)
2250 ndr_print_struct(ndr, name, "svcctl_QueryServiceConfigW");
2251 ndr->depth++;
2252 if (flags & NDR_SET_VALUES) {
2253 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
2255 if (flags & NDR_IN) {
2256 ndr_print_struct(ndr, "in", "svcctl_QueryServiceConfigW");
2257 ndr->depth++;
2258 ndr_print_ptr(ndr, "handle", r->in.handle);
2259 ndr->depth++;
2260 ndr_print_policy_handle(ndr, "handle", r->in.handle);
2261 ndr->depth--;
2262 ndr_print_uint32(ndr, "buf_size", r->in.buf_size);
2263 ndr->depth--;
2265 if (flags & NDR_OUT) {
2266 ndr_print_struct(ndr, "out", "svcctl_QueryServiceConfigW");
2267 ndr->depth++;
2268 ndr_print_array_uint8(ndr, "query", r->out.query, r->in.buf_size);
2269 ndr_print_ptr(ndr, "bytes_needed", r->out.bytes_needed);
2270 ndr->depth++;
2271 ndr_print_uint32(ndr, "bytes_needed", *r->out.bytes_needed);
2272 ndr->depth--;
2273 ndr_print_WERROR(ndr, "result", r->out.result);
2274 ndr->depth--;
2276 ndr->depth--;
2279 static enum ndr_err_code ndr_push_svcctl_QueryServiceLockStatusW(struct ndr_push *ndr, int flags, const struct svcctl_QueryServiceLockStatusW *r)
2281 if (flags & NDR_IN) {
2282 if (r->in.handle == NULL) {
2283 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
2285 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
2286 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.buf_size));
2288 if (flags & NDR_OUT) {
2289 if (r->out.lock_status == NULL) {
2290 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
2292 NDR_CHECK(ndr_push_SERVICE_LOCK_STATUS(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.lock_status));
2293 if (r->out.required_buf_size == NULL) {
2294 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
2296 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.required_buf_size));
2297 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
2299 return NDR_ERR_SUCCESS;
2302 static enum ndr_err_code ndr_pull_svcctl_QueryServiceLockStatusW(struct ndr_pull *ndr, int flags, struct svcctl_QueryServiceLockStatusW *r)
2304 TALLOC_CTX *_mem_save_handle_0;
2305 TALLOC_CTX *_mem_save_lock_status_0;
2306 TALLOC_CTX *_mem_save_required_buf_size_0;
2307 if (flags & NDR_IN) {
2308 ZERO_STRUCT(r->out);
2310 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
2311 NDR_PULL_ALLOC(ndr, r->in.handle);
2313 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
2314 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
2315 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
2316 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
2317 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.buf_size));
2318 NDR_PULL_ALLOC(ndr, r->out.lock_status);
2319 ZERO_STRUCTP(r->out.lock_status);
2320 NDR_PULL_ALLOC(ndr, r->out.required_buf_size);
2321 ZERO_STRUCTP(r->out.required_buf_size);
2323 if (flags & NDR_OUT) {
2324 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
2325 NDR_PULL_ALLOC(ndr, r->out.lock_status);
2327 _mem_save_lock_status_0 = NDR_PULL_GET_MEM_CTX(ndr);
2328 NDR_PULL_SET_MEM_CTX(ndr, r->out.lock_status, LIBNDR_FLAG_REF_ALLOC);
2329 NDR_CHECK(ndr_pull_SERVICE_LOCK_STATUS(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.lock_status));
2330 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_lock_status_0, LIBNDR_FLAG_REF_ALLOC);
2331 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
2332 NDR_PULL_ALLOC(ndr, r->out.required_buf_size);
2334 _mem_save_required_buf_size_0 = NDR_PULL_GET_MEM_CTX(ndr);
2335 NDR_PULL_SET_MEM_CTX(ndr, r->out.required_buf_size, LIBNDR_FLAG_REF_ALLOC);
2336 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.required_buf_size));
2337 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_required_buf_size_0, LIBNDR_FLAG_REF_ALLOC);
2338 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
2340 return NDR_ERR_SUCCESS;
2343 _PUBLIC_ void ndr_print_svcctl_QueryServiceLockStatusW(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_QueryServiceLockStatusW *r)
2345 ndr_print_struct(ndr, name, "svcctl_QueryServiceLockStatusW");
2346 ndr->depth++;
2347 if (flags & NDR_SET_VALUES) {
2348 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
2350 if (flags & NDR_IN) {
2351 ndr_print_struct(ndr, "in", "svcctl_QueryServiceLockStatusW");
2352 ndr->depth++;
2353 ndr_print_ptr(ndr, "handle", r->in.handle);
2354 ndr->depth++;
2355 ndr_print_policy_handle(ndr, "handle", r->in.handle);
2356 ndr->depth--;
2357 ndr_print_uint32(ndr, "buf_size", r->in.buf_size);
2358 ndr->depth--;
2360 if (flags & NDR_OUT) {
2361 ndr_print_struct(ndr, "out", "svcctl_QueryServiceLockStatusW");
2362 ndr->depth++;
2363 ndr_print_ptr(ndr, "lock_status", r->out.lock_status);
2364 ndr->depth++;
2365 ndr_print_SERVICE_LOCK_STATUS(ndr, "lock_status", r->out.lock_status);
2366 ndr->depth--;
2367 ndr_print_ptr(ndr, "required_buf_size", r->out.required_buf_size);
2368 ndr->depth++;
2369 ndr_print_uint32(ndr, "required_buf_size", *r->out.required_buf_size);
2370 ndr->depth--;
2371 ndr_print_WERROR(ndr, "result", r->out.result);
2372 ndr->depth--;
2374 ndr->depth--;
2377 static enum ndr_err_code ndr_push_svcctl_StartServiceW(struct ndr_push *ndr, int flags, const struct svcctl_StartServiceW *r)
2379 if (flags & NDR_IN) {
2380 if (r->in.handle == NULL) {
2381 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
2383 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
2384 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.NumArgs));
2385 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.Arguments));
2386 if (r->in.Arguments) {
2387 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.Arguments, CH_UTF16)));
2388 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
2389 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.Arguments, CH_UTF16)));
2390 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.Arguments, ndr_charset_length(r->in.Arguments, CH_UTF16), sizeof(uint16_t), CH_UTF16));
2393 if (flags & NDR_OUT) {
2394 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
2396 return NDR_ERR_SUCCESS;
2399 static enum ndr_err_code ndr_pull_svcctl_StartServiceW(struct ndr_pull *ndr, int flags, struct svcctl_StartServiceW *r)
2401 uint32_t _ptr_Arguments;
2402 TALLOC_CTX *_mem_save_handle_0;
2403 TALLOC_CTX *_mem_save_Arguments_0;
2404 if (flags & NDR_IN) {
2405 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
2406 NDR_PULL_ALLOC(ndr, r->in.handle);
2408 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
2409 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
2410 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
2411 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
2412 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.NumArgs));
2413 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_Arguments));
2414 if (_ptr_Arguments) {
2415 NDR_PULL_ALLOC(ndr, r->in.Arguments);
2416 } else {
2417 r->in.Arguments = NULL;
2419 if (r->in.Arguments) {
2420 _mem_save_Arguments_0 = NDR_PULL_GET_MEM_CTX(ndr);
2421 NDR_PULL_SET_MEM_CTX(ndr, r->in.Arguments, 0);
2422 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.Arguments));
2423 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.Arguments));
2424 if (ndr_get_array_length(ndr, &r->in.Arguments) > ndr_get_array_size(ndr, &r->in.Arguments)) {
2425 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));
2427 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.Arguments), sizeof(uint16_t)));
2428 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.Arguments, ndr_get_array_length(ndr, &r->in.Arguments), sizeof(uint16_t), CH_UTF16));
2429 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_Arguments_0, 0);
2432 if (flags & NDR_OUT) {
2433 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
2435 return NDR_ERR_SUCCESS;
2438 _PUBLIC_ void ndr_print_svcctl_StartServiceW(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_StartServiceW *r)
2440 ndr_print_struct(ndr, name, "svcctl_StartServiceW");
2441 ndr->depth++;
2442 if (flags & NDR_SET_VALUES) {
2443 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
2445 if (flags & NDR_IN) {
2446 ndr_print_struct(ndr, "in", "svcctl_StartServiceW");
2447 ndr->depth++;
2448 ndr_print_ptr(ndr, "handle", r->in.handle);
2449 ndr->depth++;
2450 ndr_print_policy_handle(ndr, "handle", r->in.handle);
2451 ndr->depth--;
2452 ndr_print_uint32(ndr, "NumArgs", r->in.NumArgs);
2453 ndr_print_ptr(ndr, "Arguments", r->in.Arguments);
2454 ndr->depth++;
2455 if (r->in.Arguments) {
2456 ndr_print_string(ndr, "Arguments", r->in.Arguments);
2458 ndr->depth--;
2459 ndr->depth--;
2461 if (flags & NDR_OUT) {
2462 ndr_print_struct(ndr, "out", "svcctl_StartServiceW");
2463 ndr->depth++;
2464 ndr_print_WERROR(ndr, "result", r->out.result);
2465 ndr->depth--;
2467 ndr->depth--;
2470 static enum ndr_err_code ndr_push_svcctl_GetServiceDisplayNameW(struct ndr_push *ndr, int flags, const struct svcctl_GetServiceDisplayNameW *r)
2472 if (flags & NDR_IN) {
2473 if (r->in.handle == NULL) {
2474 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
2476 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
2477 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.service_name));
2478 if (r->in.service_name) {
2479 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.service_name, CH_UTF16)));
2480 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
2481 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.service_name, CH_UTF16)));
2482 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));
2484 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.display_name_length));
2485 if (r->in.display_name_length) {
2486 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->in.display_name_length));
2489 if (flags & NDR_OUT) {
2490 if (r->out.display_name == NULL) {
2491 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
2493 NDR_CHECK(ndr_push_unique_ptr(ndr, *r->out.display_name));
2494 if (*r->out.display_name) {
2495 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(*r->out.display_name, CH_UTF16)));
2496 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
2497 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(*r->out.display_name, CH_UTF16)));
2498 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));
2500 NDR_CHECK(ndr_push_unique_ptr(ndr, r->out.display_name_length));
2501 if (r->out.display_name_length) {
2502 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.display_name_length));
2504 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
2506 return NDR_ERR_SUCCESS;
2509 static enum ndr_err_code ndr_pull_svcctl_GetServiceDisplayNameW(struct ndr_pull *ndr, int flags, struct svcctl_GetServiceDisplayNameW *r)
2511 uint32_t _ptr_service_name;
2512 uint32_t _ptr_display_name;
2513 uint32_t _ptr_display_name_length;
2514 TALLOC_CTX *_mem_save_handle_0;
2515 TALLOC_CTX *_mem_save_service_name_0;
2516 TALLOC_CTX *_mem_save_display_name_0;
2517 TALLOC_CTX *_mem_save_display_name_1;
2518 TALLOC_CTX *_mem_save_display_name_length_0;
2519 if (flags & NDR_IN) {
2520 ZERO_STRUCT(r->out);
2522 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
2523 NDR_PULL_ALLOC(ndr, r->in.handle);
2525 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
2526 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
2527 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
2528 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
2529 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_service_name));
2530 if (_ptr_service_name) {
2531 NDR_PULL_ALLOC(ndr, r->in.service_name);
2532 } else {
2533 r->in.service_name = NULL;
2535 if (r->in.service_name) {
2536 _mem_save_service_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
2537 NDR_PULL_SET_MEM_CTX(ndr, r->in.service_name, 0);
2538 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.service_name));
2539 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.service_name));
2540 if (ndr_get_array_length(ndr, &r->in.service_name) > ndr_get_array_size(ndr, &r->in.service_name)) {
2541 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));
2543 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.service_name), sizeof(uint16_t)));
2544 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));
2545 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_service_name_0, 0);
2547 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_display_name_length));
2548 if (_ptr_display_name_length) {
2549 NDR_PULL_ALLOC(ndr, r->in.display_name_length);
2550 } else {
2551 r->in.display_name_length = NULL;
2553 if (r->in.display_name_length) {
2554 _mem_save_display_name_length_0 = NDR_PULL_GET_MEM_CTX(ndr);
2555 NDR_PULL_SET_MEM_CTX(ndr, r->in.display_name_length, 0);
2556 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->in.display_name_length));
2557 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_display_name_length_0, 0);
2559 NDR_PULL_ALLOC(ndr, r->out.display_name);
2560 ZERO_STRUCTP(r->out.display_name);
2562 if (flags & NDR_OUT) {
2563 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
2564 NDR_PULL_ALLOC(ndr, r->out.display_name);
2566 _mem_save_display_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
2567 NDR_PULL_SET_MEM_CTX(ndr, r->out.display_name, LIBNDR_FLAG_REF_ALLOC);
2568 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_display_name));
2569 if (_ptr_display_name) {
2570 NDR_PULL_ALLOC(ndr, *r->out.display_name);
2571 } else {
2572 *r->out.display_name = NULL;
2574 if (*r->out.display_name) {
2575 _mem_save_display_name_1 = NDR_PULL_GET_MEM_CTX(ndr);
2576 NDR_PULL_SET_MEM_CTX(ndr, *r->out.display_name, 0);
2577 NDR_CHECK(ndr_pull_array_size(ndr, r->out.display_name));
2578 NDR_CHECK(ndr_pull_array_length(ndr, r->out.display_name));
2579 if (ndr_get_array_length(ndr, r->out.display_name) > ndr_get_array_size(ndr, r->out.display_name)) {
2580 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));
2582 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, r->out.display_name), sizeof(uint16_t)));
2583 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));
2584 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_display_name_1, 0);
2586 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_display_name_0, LIBNDR_FLAG_REF_ALLOC);
2587 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_display_name_length));
2588 if (_ptr_display_name_length) {
2589 NDR_PULL_ALLOC(ndr, r->out.display_name_length);
2590 } else {
2591 r->out.display_name_length = NULL;
2593 if (r->out.display_name_length) {
2594 _mem_save_display_name_length_0 = NDR_PULL_GET_MEM_CTX(ndr);
2595 NDR_PULL_SET_MEM_CTX(ndr, r->out.display_name_length, 0);
2596 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.display_name_length));
2597 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_display_name_length_0, 0);
2599 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
2601 return NDR_ERR_SUCCESS;
2604 _PUBLIC_ void ndr_print_svcctl_GetServiceDisplayNameW(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_GetServiceDisplayNameW *r)
2606 ndr_print_struct(ndr, name, "svcctl_GetServiceDisplayNameW");
2607 ndr->depth++;
2608 if (flags & NDR_SET_VALUES) {
2609 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
2611 if (flags & NDR_IN) {
2612 ndr_print_struct(ndr, "in", "svcctl_GetServiceDisplayNameW");
2613 ndr->depth++;
2614 ndr_print_ptr(ndr, "handle", r->in.handle);
2615 ndr->depth++;
2616 ndr_print_policy_handle(ndr, "handle", r->in.handle);
2617 ndr->depth--;
2618 ndr_print_ptr(ndr, "service_name", r->in.service_name);
2619 ndr->depth++;
2620 if (r->in.service_name) {
2621 ndr_print_string(ndr, "service_name", r->in.service_name);
2623 ndr->depth--;
2624 ndr_print_ptr(ndr, "display_name_length", r->in.display_name_length);
2625 ndr->depth++;
2626 if (r->in.display_name_length) {
2627 ndr_print_uint32(ndr, "display_name_length", *r->in.display_name_length);
2629 ndr->depth--;
2630 ndr->depth--;
2632 if (flags & NDR_OUT) {
2633 ndr_print_struct(ndr, "out", "svcctl_GetServiceDisplayNameW");
2634 ndr->depth++;
2635 ndr_print_ptr(ndr, "display_name", r->out.display_name);
2636 ndr->depth++;
2637 ndr_print_ptr(ndr, "display_name", *r->out.display_name);
2638 ndr->depth++;
2639 if (*r->out.display_name) {
2640 ndr_print_string(ndr, "display_name", *r->out.display_name);
2642 ndr->depth--;
2643 ndr->depth--;
2644 ndr_print_ptr(ndr, "display_name_length", r->out.display_name_length);
2645 ndr->depth++;
2646 if (r->out.display_name_length) {
2647 ndr_print_uint32(ndr, "display_name_length", *r->out.display_name_length);
2649 ndr->depth--;
2650 ndr_print_WERROR(ndr, "result", r->out.result);
2651 ndr->depth--;
2653 ndr->depth--;
2656 static enum ndr_err_code ndr_push_svcctl_GetServiceKeyNameW(struct ndr_push *ndr, int flags, const struct svcctl_GetServiceKeyNameW *r)
2658 if (flags & NDR_IN) {
2659 if (r->in.handle == NULL) {
2660 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
2662 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
2663 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.service_name));
2664 if (r->in.service_name) {
2665 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.service_name, CH_UTF16)));
2666 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
2667 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.service_name, CH_UTF16)));
2668 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));
2670 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.display_name_length));
2671 if (r->in.display_name_length) {
2672 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->in.display_name_length));
2675 if (flags & NDR_OUT) {
2676 if (r->out.key_name == NULL) {
2677 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
2679 NDR_CHECK(ndr_push_unique_ptr(ndr, *r->out.key_name));
2680 if (*r->out.key_name) {
2681 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(*r->out.key_name, CH_UTF16)));
2682 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
2683 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(*r->out.key_name, CH_UTF16)));
2684 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));
2686 NDR_CHECK(ndr_push_unique_ptr(ndr, r->out.display_name_length));
2687 if (r->out.display_name_length) {
2688 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.display_name_length));
2690 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
2692 return NDR_ERR_SUCCESS;
2695 static enum ndr_err_code ndr_pull_svcctl_GetServiceKeyNameW(struct ndr_pull *ndr, int flags, struct svcctl_GetServiceKeyNameW *r)
2697 uint32_t _ptr_service_name;
2698 uint32_t _ptr_key_name;
2699 uint32_t _ptr_display_name_length;
2700 TALLOC_CTX *_mem_save_handle_0;
2701 TALLOC_CTX *_mem_save_service_name_0;
2702 TALLOC_CTX *_mem_save_key_name_0;
2703 TALLOC_CTX *_mem_save_key_name_1;
2704 TALLOC_CTX *_mem_save_display_name_length_0;
2705 if (flags & NDR_IN) {
2706 ZERO_STRUCT(r->out);
2708 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
2709 NDR_PULL_ALLOC(ndr, r->in.handle);
2711 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
2712 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
2713 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
2714 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
2715 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_service_name));
2716 if (_ptr_service_name) {
2717 NDR_PULL_ALLOC(ndr, r->in.service_name);
2718 } else {
2719 r->in.service_name = NULL;
2721 if (r->in.service_name) {
2722 _mem_save_service_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
2723 NDR_PULL_SET_MEM_CTX(ndr, r->in.service_name, 0);
2724 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.service_name));
2725 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.service_name));
2726 if (ndr_get_array_length(ndr, &r->in.service_name) > ndr_get_array_size(ndr, &r->in.service_name)) {
2727 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));
2729 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.service_name), sizeof(uint16_t)));
2730 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));
2731 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_service_name_0, 0);
2733 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_display_name_length));
2734 if (_ptr_display_name_length) {
2735 NDR_PULL_ALLOC(ndr, r->in.display_name_length);
2736 } else {
2737 r->in.display_name_length = NULL;
2739 if (r->in.display_name_length) {
2740 _mem_save_display_name_length_0 = NDR_PULL_GET_MEM_CTX(ndr);
2741 NDR_PULL_SET_MEM_CTX(ndr, r->in.display_name_length, 0);
2742 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->in.display_name_length));
2743 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_display_name_length_0, 0);
2745 NDR_PULL_ALLOC(ndr, r->out.key_name);
2746 ZERO_STRUCTP(r->out.key_name);
2748 if (flags & NDR_OUT) {
2749 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
2750 NDR_PULL_ALLOC(ndr, r->out.key_name);
2752 _mem_save_key_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
2753 NDR_PULL_SET_MEM_CTX(ndr, r->out.key_name, LIBNDR_FLAG_REF_ALLOC);
2754 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_key_name));
2755 if (_ptr_key_name) {
2756 NDR_PULL_ALLOC(ndr, *r->out.key_name);
2757 } else {
2758 *r->out.key_name = NULL;
2760 if (*r->out.key_name) {
2761 _mem_save_key_name_1 = NDR_PULL_GET_MEM_CTX(ndr);
2762 NDR_PULL_SET_MEM_CTX(ndr, *r->out.key_name, 0);
2763 NDR_CHECK(ndr_pull_array_size(ndr, r->out.key_name));
2764 NDR_CHECK(ndr_pull_array_length(ndr, r->out.key_name));
2765 if (ndr_get_array_length(ndr, r->out.key_name) > ndr_get_array_size(ndr, r->out.key_name)) {
2766 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));
2768 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, r->out.key_name), sizeof(uint16_t)));
2769 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));
2770 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_key_name_1, 0);
2772 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_key_name_0, LIBNDR_FLAG_REF_ALLOC);
2773 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_display_name_length));
2774 if (_ptr_display_name_length) {
2775 NDR_PULL_ALLOC(ndr, r->out.display_name_length);
2776 } else {
2777 r->out.display_name_length = NULL;
2779 if (r->out.display_name_length) {
2780 _mem_save_display_name_length_0 = NDR_PULL_GET_MEM_CTX(ndr);
2781 NDR_PULL_SET_MEM_CTX(ndr, r->out.display_name_length, 0);
2782 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.display_name_length));
2783 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_display_name_length_0, 0);
2785 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
2787 return NDR_ERR_SUCCESS;
2790 _PUBLIC_ void ndr_print_svcctl_GetServiceKeyNameW(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_GetServiceKeyNameW *r)
2792 ndr_print_struct(ndr, name, "svcctl_GetServiceKeyNameW");
2793 ndr->depth++;
2794 if (flags & NDR_SET_VALUES) {
2795 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
2797 if (flags & NDR_IN) {
2798 ndr_print_struct(ndr, "in", "svcctl_GetServiceKeyNameW");
2799 ndr->depth++;
2800 ndr_print_ptr(ndr, "handle", r->in.handle);
2801 ndr->depth++;
2802 ndr_print_policy_handle(ndr, "handle", r->in.handle);
2803 ndr->depth--;
2804 ndr_print_ptr(ndr, "service_name", r->in.service_name);
2805 ndr->depth++;
2806 if (r->in.service_name) {
2807 ndr_print_string(ndr, "service_name", r->in.service_name);
2809 ndr->depth--;
2810 ndr_print_ptr(ndr, "display_name_length", r->in.display_name_length);
2811 ndr->depth++;
2812 if (r->in.display_name_length) {
2813 ndr_print_uint32(ndr, "display_name_length", *r->in.display_name_length);
2815 ndr->depth--;
2816 ndr->depth--;
2818 if (flags & NDR_OUT) {
2819 ndr_print_struct(ndr, "out", "svcctl_GetServiceKeyNameW");
2820 ndr->depth++;
2821 ndr_print_ptr(ndr, "key_name", r->out.key_name);
2822 ndr->depth++;
2823 ndr_print_ptr(ndr, "key_name", *r->out.key_name);
2824 ndr->depth++;
2825 if (*r->out.key_name) {
2826 ndr_print_string(ndr, "key_name", *r->out.key_name);
2828 ndr->depth--;
2829 ndr->depth--;
2830 ndr_print_ptr(ndr, "display_name_length", r->out.display_name_length);
2831 ndr->depth++;
2832 if (r->out.display_name_length) {
2833 ndr_print_uint32(ndr, "display_name_length", *r->out.display_name_length);
2835 ndr->depth--;
2836 ndr_print_WERROR(ndr, "result", r->out.result);
2837 ndr->depth--;
2839 ndr->depth--;
2842 static enum ndr_err_code ndr_push_svcctl_SCSetServiceBitsA(struct ndr_push *ndr, int flags, const struct svcctl_SCSetServiceBitsA *r)
2844 if (flags & NDR_IN) {
2845 if (r->in.handle == NULL) {
2846 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
2848 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
2849 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.bits));
2850 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.bitson));
2851 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.immediate));
2853 if (flags & NDR_OUT) {
2854 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
2856 return NDR_ERR_SUCCESS;
2859 static enum ndr_err_code ndr_pull_svcctl_SCSetServiceBitsA(struct ndr_pull *ndr, int flags, struct svcctl_SCSetServiceBitsA *r)
2861 TALLOC_CTX *_mem_save_handle_0;
2862 if (flags & NDR_IN) {
2863 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
2864 NDR_PULL_ALLOC(ndr, r->in.handle);
2866 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
2867 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
2868 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
2869 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
2870 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.bits));
2871 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.bitson));
2872 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.immediate));
2874 if (flags & NDR_OUT) {
2875 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
2877 return NDR_ERR_SUCCESS;
2880 _PUBLIC_ void ndr_print_svcctl_SCSetServiceBitsA(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_SCSetServiceBitsA *r)
2882 ndr_print_struct(ndr, name, "svcctl_SCSetServiceBitsA");
2883 ndr->depth++;
2884 if (flags & NDR_SET_VALUES) {
2885 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
2887 if (flags & NDR_IN) {
2888 ndr_print_struct(ndr, "in", "svcctl_SCSetServiceBitsA");
2889 ndr->depth++;
2890 ndr_print_ptr(ndr, "handle", r->in.handle);
2891 ndr->depth++;
2892 ndr_print_policy_handle(ndr, "handle", r->in.handle);
2893 ndr->depth--;
2894 ndr_print_uint32(ndr, "bits", r->in.bits);
2895 ndr_print_uint32(ndr, "bitson", r->in.bitson);
2896 ndr_print_uint32(ndr, "immediate", r->in.immediate);
2897 ndr->depth--;
2899 if (flags & NDR_OUT) {
2900 ndr_print_struct(ndr, "out", "svcctl_SCSetServiceBitsA");
2901 ndr->depth++;
2902 ndr_print_WERROR(ndr, "result", r->out.result);
2903 ndr->depth--;
2905 ndr->depth--;
2908 static enum ndr_err_code ndr_push_svcctl_ChangeServiceConfigA(struct ndr_push *ndr, int flags, const struct svcctl_ChangeServiceConfigA *r)
2910 if (flags & NDR_IN) {
2911 if (r->in.handle == NULL) {
2912 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
2914 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
2915 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.type));
2916 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.start));
2917 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.error));
2918 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.binary_path));
2919 if (r->in.binary_path) {
2920 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.binary_path, CH_UTF16)));
2921 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
2922 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.binary_path, CH_UTF16)));
2923 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));
2925 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.load_order_group));
2926 if (r->in.load_order_group) {
2927 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.load_order_group, CH_UTF16)));
2928 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
2929 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.load_order_group, CH_UTF16)));
2930 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));
2932 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.dependencies));
2933 if (r->in.dependencies) {
2934 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.dependencies, CH_UTF16)));
2935 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
2936 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.dependencies, CH_UTF16)));
2937 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.dependencies, ndr_charset_length(r->in.dependencies, CH_UTF16), sizeof(uint16_t), CH_UTF16));
2939 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.service_start_name));
2940 if (r->in.service_start_name) {
2941 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.service_start_name, CH_UTF16)));
2942 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
2943 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.service_start_name, CH_UTF16)));
2944 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));
2946 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.password));
2947 if (r->in.password) {
2948 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.password, CH_UTF16)));
2949 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
2950 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.password, CH_UTF16)));
2951 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.password, ndr_charset_length(r->in.password, CH_UTF16), sizeof(uint16_t), CH_UTF16));
2953 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.display_name));
2954 if (r->in.display_name) {
2955 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.display_name, CH_UTF16)));
2956 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
2957 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.display_name, CH_UTF16)));
2958 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));
2961 if (flags & NDR_OUT) {
2962 if (r->out.tag_id == NULL) {
2963 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
2965 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.tag_id));
2966 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
2968 return NDR_ERR_SUCCESS;
2971 static enum ndr_err_code ndr_pull_svcctl_ChangeServiceConfigA(struct ndr_pull *ndr, int flags, struct svcctl_ChangeServiceConfigA *r)
2973 uint32_t _ptr_binary_path;
2974 uint32_t _ptr_load_order_group;
2975 uint32_t _ptr_dependencies;
2976 uint32_t _ptr_service_start_name;
2977 uint32_t _ptr_password;
2978 uint32_t _ptr_display_name;
2979 TALLOC_CTX *_mem_save_handle_0;
2980 TALLOC_CTX *_mem_save_binary_path_0;
2981 TALLOC_CTX *_mem_save_load_order_group_0;
2982 TALLOC_CTX *_mem_save_tag_id_0;
2983 TALLOC_CTX *_mem_save_dependencies_0;
2984 TALLOC_CTX *_mem_save_service_start_name_0;
2985 TALLOC_CTX *_mem_save_password_0;
2986 TALLOC_CTX *_mem_save_display_name_0;
2987 if (flags & NDR_IN) {
2988 ZERO_STRUCT(r->out);
2990 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
2991 NDR_PULL_ALLOC(ndr, r->in.handle);
2993 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
2994 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
2995 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
2996 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
2997 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.type));
2998 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.start));
2999 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.error));
3000 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_binary_path));
3001 if (_ptr_binary_path) {
3002 NDR_PULL_ALLOC(ndr, r->in.binary_path);
3003 } else {
3004 r->in.binary_path = NULL;
3006 if (r->in.binary_path) {
3007 _mem_save_binary_path_0 = NDR_PULL_GET_MEM_CTX(ndr);
3008 NDR_PULL_SET_MEM_CTX(ndr, r->in.binary_path, 0);
3009 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.binary_path));
3010 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.binary_path));
3011 if (ndr_get_array_length(ndr, &r->in.binary_path) > ndr_get_array_size(ndr, &r->in.binary_path)) {
3012 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));
3014 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.binary_path), sizeof(uint16_t)));
3015 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));
3016 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_binary_path_0, 0);
3018 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_load_order_group));
3019 if (_ptr_load_order_group) {
3020 NDR_PULL_ALLOC(ndr, r->in.load_order_group);
3021 } else {
3022 r->in.load_order_group = NULL;
3024 if (r->in.load_order_group) {
3025 _mem_save_load_order_group_0 = NDR_PULL_GET_MEM_CTX(ndr);
3026 NDR_PULL_SET_MEM_CTX(ndr, r->in.load_order_group, 0);
3027 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.load_order_group));
3028 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.load_order_group));
3029 if (ndr_get_array_length(ndr, &r->in.load_order_group) > ndr_get_array_size(ndr, &r->in.load_order_group)) {
3030 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));
3032 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.load_order_group), sizeof(uint16_t)));
3033 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));
3034 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_load_order_group_0, 0);
3036 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_dependencies));
3037 if (_ptr_dependencies) {
3038 NDR_PULL_ALLOC(ndr, r->in.dependencies);
3039 } else {
3040 r->in.dependencies = NULL;
3042 if (r->in.dependencies) {
3043 _mem_save_dependencies_0 = NDR_PULL_GET_MEM_CTX(ndr);
3044 NDR_PULL_SET_MEM_CTX(ndr, r->in.dependencies, 0);
3045 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.dependencies));
3046 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.dependencies));
3047 if (ndr_get_array_length(ndr, &r->in.dependencies) > ndr_get_array_size(ndr, &r->in.dependencies)) {
3048 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));
3050 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.dependencies), sizeof(uint16_t)));
3051 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.dependencies, ndr_get_array_length(ndr, &r->in.dependencies), sizeof(uint16_t), CH_UTF16));
3052 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_dependencies_0, 0);
3054 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_service_start_name));
3055 if (_ptr_service_start_name) {
3056 NDR_PULL_ALLOC(ndr, r->in.service_start_name);
3057 } else {
3058 r->in.service_start_name = NULL;
3060 if (r->in.service_start_name) {
3061 _mem_save_service_start_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
3062 NDR_PULL_SET_MEM_CTX(ndr, r->in.service_start_name, 0);
3063 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.service_start_name));
3064 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.service_start_name));
3065 if (ndr_get_array_length(ndr, &r->in.service_start_name) > ndr_get_array_size(ndr, &r->in.service_start_name)) {
3066 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));
3068 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.service_start_name), sizeof(uint16_t)));
3069 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));
3070 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_service_start_name_0, 0);
3072 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_password));
3073 if (_ptr_password) {
3074 NDR_PULL_ALLOC(ndr, r->in.password);
3075 } else {
3076 r->in.password = NULL;
3078 if (r->in.password) {
3079 _mem_save_password_0 = NDR_PULL_GET_MEM_CTX(ndr);
3080 NDR_PULL_SET_MEM_CTX(ndr, r->in.password, 0);
3081 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.password));
3082 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.password));
3083 if (ndr_get_array_length(ndr, &r->in.password) > ndr_get_array_size(ndr, &r->in.password)) {
3084 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));
3086 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.password), sizeof(uint16_t)));
3087 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.password, ndr_get_array_length(ndr, &r->in.password), sizeof(uint16_t), CH_UTF16));
3088 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_password_0, 0);
3090 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_display_name));
3091 if (_ptr_display_name) {
3092 NDR_PULL_ALLOC(ndr, r->in.display_name);
3093 } else {
3094 r->in.display_name = NULL;
3096 if (r->in.display_name) {
3097 _mem_save_display_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
3098 NDR_PULL_SET_MEM_CTX(ndr, r->in.display_name, 0);
3099 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.display_name));
3100 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.display_name));
3101 if (ndr_get_array_length(ndr, &r->in.display_name) > ndr_get_array_size(ndr, &r->in.display_name)) {
3102 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));
3104 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.display_name), sizeof(uint16_t)));
3105 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));
3106 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_display_name_0, 0);
3108 NDR_PULL_ALLOC(ndr, r->out.tag_id);
3109 ZERO_STRUCTP(r->out.tag_id);
3111 if (flags & NDR_OUT) {
3112 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
3113 NDR_PULL_ALLOC(ndr, r->out.tag_id);
3115 _mem_save_tag_id_0 = NDR_PULL_GET_MEM_CTX(ndr);
3116 NDR_PULL_SET_MEM_CTX(ndr, r->out.tag_id, LIBNDR_FLAG_REF_ALLOC);
3117 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.tag_id));
3118 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_tag_id_0, LIBNDR_FLAG_REF_ALLOC);
3119 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
3121 return NDR_ERR_SUCCESS;
3124 _PUBLIC_ void ndr_print_svcctl_ChangeServiceConfigA(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_ChangeServiceConfigA *r)
3126 ndr_print_struct(ndr, name, "svcctl_ChangeServiceConfigA");
3127 ndr->depth++;
3128 if (flags & NDR_SET_VALUES) {
3129 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
3131 if (flags & NDR_IN) {
3132 ndr_print_struct(ndr, "in", "svcctl_ChangeServiceConfigA");
3133 ndr->depth++;
3134 ndr_print_ptr(ndr, "handle", r->in.handle);
3135 ndr->depth++;
3136 ndr_print_policy_handle(ndr, "handle", r->in.handle);
3137 ndr->depth--;
3138 ndr_print_uint32(ndr, "type", r->in.type);
3139 ndr_print_uint32(ndr, "start", r->in.start);
3140 ndr_print_uint32(ndr, "error", r->in.error);
3141 ndr_print_ptr(ndr, "binary_path", r->in.binary_path);
3142 ndr->depth++;
3143 if (r->in.binary_path) {
3144 ndr_print_string(ndr, "binary_path", r->in.binary_path);
3146 ndr->depth--;
3147 ndr_print_ptr(ndr, "load_order_group", r->in.load_order_group);
3148 ndr->depth++;
3149 if (r->in.load_order_group) {
3150 ndr_print_string(ndr, "load_order_group", r->in.load_order_group);
3152 ndr->depth--;
3153 ndr_print_ptr(ndr, "dependencies", r->in.dependencies);
3154 ndr->depth++;
3155 if (r->in.dependencies) {
3156 ndr_print_string(ndr, "dependencies", r->in.dependencies);
3158 ndr->depth--;
3159 ndr_print_ptr(ndr, "service_start_name", r->in.service_start_name);
3160 ndr->depth++;
3161 if (r->in.service_start_name) {
3162 ndr_print_string(ndr, "service_start_name", r->in.service_start_name);
3164 ndr->depth--;
3165 ndr_print_ptr(ndr, "password", r->in.password);
3166 ndr->depth++;
3167 if (r->in.password) {
3168 ndr_print_string(ndr, "password", r->in.password);
3170 ndr->depth--;
3171 ndr_print_ptr(ndr, "display_name", r->in.display_name);
3172 ndr->depth++;
3173 if (r->in.display_name) {
3174 ndr_print_string(ndr, "display_name", r->in.display_name);
3176 ndr->depth--;
3177 ndr->depth--;
3179 if (flags & NDR_OUT) {
3180 ndr_print_struct(ndr, "out", "svcctl_ChangeServiceConfigA");
3181 ndr->depth++;
3182 ndr_print_ptr(ndr, "tag_id", r->out.tag_id);
3183 ndr->depth++;
3184 ndr_print_uint32(ndr, "tag_id", *r->out.tag_id);
3185 ndr->depth--;
3186 ndr_print_WERROR(ndr, "result", r->out.result);
3187 ndr->depth--;
3189 ndr->depth--;
3192 static enum ndr_err_code ndr_push_svcctl_CreateServiceA(struct ndr_push *ndr, int flags, const struct svcctl_CreateServiceA *r)
3194 if (flags & NDR_IN) {
3195 if (r->in.handle == NULL) {
3196 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
3198 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
3199 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.ServiceName));
3200 if (r->in.ServiceName) {
3201 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.ServiceName, CH_UTF16)));
3202 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
3203 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.ServiceName, CH_UTF16)));
3204 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.ServiceName, ndr_charset_length(r->in.ServiceName, CH_UTF16), sizeof(uint16_t), CH_UTF16));
3206 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.DisplayName));
3207 if (r->in.DisplayName) {
3208 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.DisplayName, CH_UTF16)));
3209 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
3210 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.DisplayName, CH_UTF16)));
3211 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.DisplayName, ndr_charset_length(r->in.DisplayName, CH_UTF16), sizeof(uint16_t), CH_UTF16));
3213 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.desired_access));
3214 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.type));
3215 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.start_type));
3216 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.error_control));
3217 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.binary_path));
3218 if (r->in.binary_path) {
3219 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.binary_path, CH_UTF16)));
3220 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
3221 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.binary_path, CH_UTF16)));
3222 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));
3224 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.LoadOrderGroupKey));
3225 if (r->in.LoadOrderGroupKey) {
3226 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.LoadOrderGroupKey, CH_UTF16)));
3227 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
3228 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.LoadOrderGroupKey, CH_UTF16)));
3229 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.LoadOrderGroupKey, ndr_charset_length(r->in.LoadOrderGroupKey, CH_UTF16), sizeof(uint16_t), CH_UTF16));
3231 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.dependencies));
3232 if (r->in.dependencies) {
3233 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.dependencies, CH_UTF16)));
3234 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
3235 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.dependencies, CH_UTF16)));
3236 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.dependencies, ndr_charset_length(r->in.dependencies, CH_UTF16), sizeof(uint16_t), CH_UTF16));
3238 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.service_start_name));
3239 if (r->in.service_start_name) {
3240 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.service_start_name, CH_UTF16)));
3241 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
3242 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.service_start_name, CH_UTF16)));
3243 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));
3245 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.password));
3246 if (r->in.password) {
3247 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.password, CH_UTF16)));
3248 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
3249 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.password, CH_UTF16)));
3250 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.password, ndr_charset_length(r->in.password, CH_UTF16), sizeof(uint16_t), CH_UTF16));
3253 if (flags & NDR_OUT) {
3254 NDR_CHECK(ndr_push_unique_ptr(ndr, r->out.TagId));
3255 if (r->out.TagId) {
3256 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.TagId));
3258 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
3260 return NDR_ERR_SUCCESS;
3263 static enum ndr_err_code ndr_pull_svcctl_CreateServiceA(struct ndr_pull *ndr, int flags, struct svcctl_CreateServiceA *r)
3265 uint32_t _ptr_ServiceName;
3266 uint32_t _ptr_DisplayName;
3267 uint32_t _ptr_binary_path;
3268 uint32_t _ptr_LoadOrderGroupKey;
3269 uint32_t _ptr_TagId;
3270 uint32_t _ptr_dependencies;
3271 uint32_t _ptr_service_start_name;
3272 uint32_t _ptr_password;
3273 TALLOC_CTX *_mem_save_handle_0;
3274 TALLOC_CTX *_mem_save_ServiceName_0;
3275 TALLOC_CTX *_mem_save_DisplayName_0;
3276 TALLOC_CTX *_mem_save_binary_path_0;
3277 TALLOC_CTX *_mem_save_LoadOrderGroupKey_0;
3278 TALLOC_CTX *_mem_save_TagId_0;
3279 TALLOC_CTX *_mem_save_dependencies_0;
3280 TALLOC_CTX *_mem_save_service_start_name_0;
3281 TALLOC_CTX *_mem_save_password_0;
3282 if (flags & NDR_IN) {
3283 ZERO_STRUCT(r->out);
3285 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
3286 NDR_PULL_ALLOC(ndr, r->in.handle);
3288 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
3289 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
3290 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
3291 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
3292 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_ServiceName));
3293 if (_ptr_ServiceName) {
3294 NDR_PULL_ALLOC(ndr, r->in.ServiceName);
3295 } else {
3296 r->in.ServiceName = NULL;
3298 if (r->in.ServiceName) {
3299 _mem_save_ServiceName_0 = NDR_PULL_GET_MEM_CTX(ndr);
3300 NDR_PULL_SET_MEM_CTX(ndr, r->in.ServiceName, 0);
3301 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.ServiceName));
3302 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.ServiceName));
3303 if (ndr_get_array_length(ndr, &r->in.ServiceName) > ndr_get_array_size(ndr, &r->in.ServiceName)) {
3304 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));
3306 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.ServiceName), sizeof(uint16_t)));
3307 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.ServiceName, ndr_get_array_length(ndr, &r->in.ServiceName), sizeof(uint16_t), CH_UTF16));
3308 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_ServiceName_0, 0);
3310 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_DisplayName));
3311 if (_ptr_DisplayName) {
3312 NDR_PULL_ALLOC(ndr, r->in.DisplayName);
3313 } else {
3314 r->in.DisplayName = NULL;
3316 if (r->in.DisplayName) {
3317 _mem_save_DisplayName_0 = NDR_PULL_GET_MEM_CTX(ndr);
3318 NDR_PULL_SET_MEM_CTX(ndr, r->in.DisplayName, 0);
3319 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.DisplayName));
3320 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.DisplayName));
3321 if (ndr_get_array_length(ndr, &r->in.DisplayName) > ndr_get_array_size(ndr, &r->in.DisplayName)) {
3322 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));
3324 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.DisplayName), sizeof(uint16_t)));
3325 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.DisplayName, ndr_get_array_length(ndr, &r->in.DisplayName), sizeof(uint16_t), CH_UTF16));
3326 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_DisplayName_0, 0);
3328 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.desired_access));
3329 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.type));
3330 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.start_type));
3331 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.error_control));
3332 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_binary_path));
3333 if (_ptr_binary_path) {
3334 NDR_PULL_ALLOC(ndr, r->in.binary_path);
3335 } else {
3336 r->in.binary_path = NULL;
3338 if (r->in.binary_path) {
3339 _mem_save_binary_path_0 = NDR_PULL_GET_MEM_CTX(ndr);
3340 NDR_PULL_SET_MEM_CTX(ndr, r->in.binary_path, 0);
3341 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.binary_path));
3342 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.binary_path));
3343 if (ndr_get_array_length(ndr, &r->in.binary_path) > ndr_get_array_size(ndr, &r->in.binary_path)) {
3344 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));
3346 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.binary_path), sizeof(uint16_t)));
3347 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));
3348 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_binary_path_0, 0);
3350 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_LoadOrderGroupKey));
3351 if (_ptr_LoadOrderGroupKey) {
3352 NDR_PULL_ALLOC(ndr, r->in.LoadOrderGroupKey);
3353 } else {
3354 r->in.LoadOrderGroupKey = NULL;
3356 if (r->in.LoadOrderGroupKey) {
3357 _mem_save_LoadOrderGroupKey_0 = NDR_PULL_GET_MEM_CTX(ndr);
3358 NDR_PULL_SET_MEM_CTX(ndr, r->in.LoadOrderGroupKey, 0);
3359 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.LoadOrderGroupKey));
3360 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.LoadOrderGroupKey));
3361 if (ndr_get_array_length(ndr, &r->in.LoadOrderGroupKey) > ndr_get_array_size(ndr, &r->in.LoadOrderGroupKey)) {
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.LoadOrderGroupKey), ndr_get_array_length(ndr, &r->in.LoadOrderGroupKey));
3364 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.LoadOrderGroupKey), sizeof(uint16_t)));
3365 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.LoadOrderGroupKey, ndr_get_array_length(ndr, &r->in.LoadOrderGroupKey), sizeof(uint16_t), CH_UTF16));
3366 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_LoadOrderGroupKey_0, 0);
3368 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_dependencies));
3369 if (_ptr_dependencies) {
3370 NDR_PULL_ALLOC(ndr, r->in.dependencies);
3371 } else {
3372 r->in.dependencies = NULL;
3374 if (r->in.dependencies) {
3375 _mem_save_dependencies_0 = NDR_PULL_GET_MEM_CTX(ndr);
3376 NDR_PULL_SET_MEM_CTX(ndr, r->in.dependencies, 0);
3377 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.dependencies));
3378 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.dependencies));
3379 if (ndr_get_array_length(ndr, &r->in.dependencies) > ndr_get_array_size(ndr, &r->in.dependencies)) {
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.dependencies), ndr_get_array_length(ndr, &r->in.dependencies));
3382 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.dependencies), sizeof(uint16_t)));
3383 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.dependencies, ndr_get_array_length(ndr, &r->in.dependencies), sizeof(uint16_t), CH_UTF16));
3384 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_dependencies_0, 0);
3386 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_service_start_name));
3387 if (_ptr_service_start_name) {
3388 NDR_PULL_ALLOC(ndr, r->in.service_start_name);
3389 } else {
3390 r->in.service_start_name = NULL;
3392 if (r->in.service_start_name) {
3393 _mem_save_service_start_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
3394 NDR_PULL_SET_MEM_CTX(ndr, r->in.service_start_name, 0);
3395 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.service_start_name));
3396 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.service_start_name));
3397 if (ndr_get_array_length(ndr, &r->in.service_start_name) > ndr_get_array_size(ndr, &r->in.service_start_name)) {
3398 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));
3400 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.service_start_name), sizeof(uint16_t)));
3401 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));
3402 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_service_start_name_0, 0);
3404 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_password));
3405 if (_ptr_password) {
3406 NDR_PULL_ALLOC(ndr, r->in.password);
3407 } else {
3408 r->in.password = NULL;
3410 if (r->in.password) {
3411 _mem_save_password_0 = NDR_PULL_GET_MEM_CTX(ndr);
3412 NDR_PULL_SET_MEM_CTX(ndr, r->in.password, 0);
3413 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.password));
3414 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.password));
3415 if (ndr_get_array_length(ndr, &r->in.password) > ndr_get_array_size(ndr, &r->in.password)) {
3416 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));
3418 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.password), sizeof(uint16_t)));
3419 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.password, ndr_get_array_length(ndr, &r->in.password), sizeof(uint16_t), CH_UTF16));
3420 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_password_0, 0);
3423 if (flags & NDR_OUT) {
3424 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_TagId));
3425 if (_ptr_TagId) {
3426 NDR_PULL_ALLOC(ndr, r->out.TagId);
3427 } else {
3428 r->out.TagId = NULL;
3430 if (r->out.TagId) {
3431 _mem_save_TagId_0 = NDR_PULL_GET_MEM_CTX(ndr);
3432 NDR_PULL_SET_MEM_CTX(ndr, r->out.TagId, 0);
3433 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.TagId));
3434 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_TagId_0, 0);
3436 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
3438 return NDR_ERR_SUCCESS;
3441 _PUBLIC_ void ndr_print_svcctl_CreateServiceA(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_CreateServiceA *r)
3443 ndr_print_struct(ndr, name, "svcctl_CreateServiceA");
3444 ndr->depth++;
3445 if (flags & NDR_SET_VALUES) {
3446 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
3448 if (flags & NDR_IN) {
3449 ndr_print_struct(ndr, "in", "svcctl_CreateServiceA");
3450 ndr->depth++;
3451 ndr_print_ptr(ndr, "handle", r->in.handle);
3452 ndr->depth++;
3453 ndr_print_policy_handle(ndr, "handle", r->in.handle);
3454 ndr->depth--;
3455 ndr_print_ptr(ndr, "ServiceName", r->in.ServiceName);
3456 ndr->depth++;
3457 if (r->in.ServiceName) {
3458 ndr_print_string(ndr, "ServiceName", r->in.ServiceName);
3460 ndr->depth--;
3461 ndr_print_ptr(ndr, "DisplayName", r->in.DisplayName);
3462 ndr->depth++;
3463 if (r->in.DisplayName) {
3464 ndr_print_string(ndr, "DisplayName", r->in.DisplayName);
3466 ndr->depth--;
3467 ndr_print_uint32(ndr, "desired_access", r->in.desired_access);
3468 ndr_print_uint32(ndr, "type", r->in.type);
3469 ndr_print_uint32(ndr, "start_type", r->in.start_type);
3470 ndr_print_uint32(ndr, "error_control", r->in.error_control);
3471 ndr_print_ptr(ndr, "binary_path", r->in.binary_path);
3472 ndr->depth++;
3473 if (r->in.binary_path) {
3474 ndr_print_string(ndr, "binary_path", r->in.binary_path);
3476 ndr->depth--;
3477 ndr_print_ptr(ndr, "LoadOrderGroupKey", r->in.LoadOrderGroupKey);
3478 ndr->depth++;
3479 if (r->in.LoadOrderGroupKey) {
3480 ndr_print_string(ndr, "LoadOrderGroupKey", r->in.LoadOrderGroupKey);
3482 ndr->depth--;
3483 ndr_print_ptr(ndr, "dependencies", r->in.dependencies);
3484 ndr->depth++;
3485 if (r->in.dependencies) {
3486 ndr_print_string(ndr, "dependencies", r->in.dependencies);
3488 ndr->depth--;
3489 ndr_print_ptr(ndr, "service_start_name", r->in.service_start_name);
3490 ndr->depth++;
3491 if (r->in.service_start_name) {
3492 ndr_print_string(ndr, "service_start_name", r->in.service_start_name);
3494 ndr->depth--;
3495 ndr_print_ptr(ndr, "password", r->in.password);
3496 ndr->depth++;
3497 if (r->in.password) {
3498 ndr_print_string(ndr, "password", r->in.password);
3500 ndr->depth--;
3501 ndr->depth--;
3503 if (flags & NDR_OUT) {
3504 ndr_print_struct(ndr, "out", "svcctl_CreateServiceA");
3505 ndr->depth++;
3506 ndr_print_ptr(ndr, "TagId", r->out.TagId);
3507 ndr->depth++;
3508 if (r->out.TagId) {
3509 ndr_print_uint32(ndr, "TagId", *r->out.TagId);
3511 ndr->depth--;
3512 ndr_print_WERROR(ndr, "result", r->out.result);
3513 ndr->depth--;
3515 ndr->depth--;
3518 static enum ndr_err_code ndr_push_svcctl_EnumDependentServicesA(struct ndr_push *ndr, int flags, const struct svcctl_EnumDependentServicesA *r)
3520 if (flags & NDR_IN) {
3521 if (r->in.service == NULL) {
3522 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
3524 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.service));
3525 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.state));
3526 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.buf_size));
3528 if (flags & NDR_OUT) {
3529 NDR_CHECK(ndr_push_unique_ptr(ndr, r->out.service_status));
3530 if (r->out.service_status) {
3531 NDR_CHECK(ndr_push_ENUM_SERVICE_STATUS(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.service_status));
3533 if (r->out.bytes_needed == NULL) {
3534 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
3536 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.bytes_needed));
3537 if (r->out.services_returned == NULL) {
3538 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
3540 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.services_returned));
3541 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
3543 return NDR_ERR_SUCCESS;
3546 static enum ndr_err_code ndr_pull_svcctl_EnumDependentServicesA(struct ndr_pull *ndr, int flags, struct svcctl_EnumDependentServicesA *r)
3548 uint32_t _ptr_service_status;
3549 TALLOC_CTX *_mem_save_service_0;
3550 TALLOC_CTX *_mem_save_service_status_0;
3551 TALLOC_CTX *_mem_save_bytes_needed_0;
3552 TALLOC_CTX *_mem_save_services_returned_0;
3553 if (flags & NDR_IN) {
3554 ZERO_STRUCT(r->out);
3556 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
3557 NDR_PULL_ALLOC(ndr, r->in.service);
3559 _mem_save_service_0 = NDR_PULL_GET_MEM_CTX(ndr);
3560 NDR_PULL_SET_MEM_CTX(ndr, r->in.service, LIBNDR_FLAG_REF_ALLOC);
3561 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.service));
3562 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_service_0, LIBNDR_FLAG_REF_ALLOC);
3563 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.state));
3564 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.buf_size));
3565 NDR_PULL_ALLOC(ndr, r->out.bytes_needed);
3566 ZERO_STRUCTP(r->out.bytes_needed);
3567 NDR_PULL_ALLOC(ndr, r->out.services_returned);
3568 ZERO_STRUCTP(r->out.services_returned);
3570 if (flags & NDR_OUT) {
3571 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_service_status));
3572 if (_ptr_service_status) {
3573 NDR_PULL_ALLOC(ndr, r->out.service_status);
3574 } else {
3575 r->out.service_status = NULL;
3577 if (r->out.service_status) {
3578 _mem_save_service_status_0 = NDR_PULL_GET_MEM_CTX(ndr);
3579 NDR_PULL_SET_MEM_CTX(ndr, r->out.service_status, 0);
3580 NDR_CHECK(ndr_pull_ENUM_SERVICE_STATUS(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.service_status));
3581 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_service_status_0, 0);
3583 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
3584 NDR_PULL_ALLOC(ndr, r->out.bytes_needed);
3586 _mem_save_bytes_needed_0 = NDR_PULL_GET_MEM_CTX(ndr);
3587 NDR_PULL_SET_MEM_CTX(ndr, r->out.bytes_needed, LIBNDR_FLAG_REF_ALLOC);
3588 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.bytes_needed));
3589 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_bytes_needed_0, LIBNDR_FLAG_REF_ALLOC);
3590 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
3591 NDR_PULL_ALLOC(ndr, r->out.services_returned);
3593 _mem_save_services_returned_0 = NDR_PULL_GET_MEM_CTX(ndr);
3594 NDR_PULL_SET_MEM_CTX(ndr, r->out.services_returned, LIBNDR_FLAG_REF_ALLOC);
3595 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.services_returned));
3596 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_services_returned_0, LIBNDR_FLAG_REF_ALLOC);
3597 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
3599 return NDR_ERR_SUCCESS;
3602 _PUBLIC_ void ndr_print_svcctl_EnumDependentServicesA(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_EnumDependentServicesA *r)
3604 ndr_print_struct(ndr, name, "svcctl_EnumDependentServicesA");
3605 ndr->depth++;
3606 if (flags & NDR_SET_VALUES) {
3607 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
3609 if (flags & NDR_IN) {
3610 ndr_print_struct(ndr, "in", "svcctl_EnumDependentServicesA");
3611 ndr->depth++;
3612 ndr_print_ptr(ndr, "service", r->in.service);
3613 ndr->depth++;
3614 ndr_print_policy_handle(ndr, "service", r->in.service);
3615 ndr->depth--;
3616 ndr_print_uint32(ndr, "state", r->in.state);
3617 ndr_print_uint32(ndr, "buf_size", r->in.buf_size);
3618 ndr->depth--;
3620 if (flags & NDR_OUT) {
3621 ndr_print_struct(ndr, "out", "svcctl_EnumDependentServicesA");
3622 ndr->depth++;
3623 ndr_print_ptr(ndr, "service_status", r->out.service_status);
3624 ndr->depth++;
3625 if (r->out.service_status) {
3626 ndr_print_ENUM_SERVICE_STATUS(ndr, "service_status", r->out.service_status);
3628 ndr->depth--;
3629 ndr_print_ptr(ndr, "bytes_needed", r->out.bytes_needed);
3630 ndr->depth++;
3631 ndr_print_uint32(ndr, "bytes_needed", *r->out.bytes_needed);
3632 ndr->depth--;
3633 ndr_print_ptr(ndr, "services_returned", r->out.services_returned);
3634 ndr->depth++;
3635 ndr_print_uint32(ndr, "services_returned", *r->out.services_returned);
3636 ndr->depth--;
3637 ndr_print_WERROR(ndr, "result", r->out.result);
3638 ndr->depth--;
3640 ndr->depth--;
3643 static enum ndr_err_code ndr_push_svcctl_EnumServicesStatusA(struct ndr_push *ndr, int flags, const struct svcctl_EnumServicesStatusA *r)
3645 if (flags & NDR_IN) {
3646 if (r->in.handle == NULL) {
3647 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
3649 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
3650 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.type));
3651 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.state));
3652 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.buf_size));
3653 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.resume_handle));
3654 if (r->in.resume_handle) {
3655 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->in.resume_handle));
3658 if (flags & NDR_OUT) {
3659 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.buf_size));
3660 NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->out.service, r->in.buf_size));
3661 if (r->out.bytes_needed == NULL) {
3662 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
3664 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.bytes_needed));
3665 if (r->out.services_returned == NULL) {
3666 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
3668 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.services_returned));
3669 NDR_CHECK(ndr_push_unique_ptr(ndr, r->out.resume_handle));
3670 if (r->out.resume_handle) {
3671 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.resume_handle));
3673 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
3675 return NDR_ERR_SUCCESS;
3678 static enum ndr_err_code ndr_pull_svcctl_EnumServicesStatusA(struct ndr_pull *ndr, int flags, struct svcctl_EnumServicesStatusA *r)
3680 uint32_t _ptr_resume_handle;
3681 TALLOC_CTX *_mem_save_handle_0;
3682 TALLOC_CTX *_mem_save_bytes_needed_0;
3683 TALLOC_CTX *_mem_save_services_returned_0;
3684 TALLOC_CTX *_mem_save_resume_handle_0;
3685 if (flags & NDR_IN) {
3686 ZERO_STRUCT(r->out);
3688 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
3689 NDR_PULL_ALLOC(ndr, r->in.handle);
3691 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
3692 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
3693 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
3694 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
3695 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.type));
3696 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.state));
3697 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.buf_size));
3698 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_resume_handle));
3699 if (_ptr_resume_handle) {
3700 NDR_PULL_ALLOC(ndr, r->in.resume_handle);
3701 } else {
3702 r->in.resume_handle = NULL;
3704 if (r->in.resume_handle) {
3705 _mem_save_resume_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
3706 NDR_PULL_SET_MEM_CTX(ndr, r->in.resume_handle, 0);
3707 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->in.resume_handle));
3708 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_resume_handle_0, 0);
3710 NDR_PULL_ALLOC(ndr, r->out.bytes_needed);
3711 ZERO_STRUCTP(r->out.bytes_needed);
3712 NDR_PULL_ALLOC(ndr, r->out.services_returned);
3713 ZERO_STRUCTP(r->out.services_returned);
3715 if (flags & NDR_OUT) {
3716 NDR_CHECK(ndr_pull_array_size(ndr, &r->out.service));
3717 NDR_PULL_ALLOC_N(ndr, r->out.service, ndr_get_array_size(ndr, &r->out.service));
3718 NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->out.service, ndr_get_array_size(ndr, &r->out.service)));
3719 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
3720 NDR_PULL_ALLOC(ndr, r->out.bytes_needed);
3722 _mem_save_bytes_needed_0 = NDR_PULL_GET_MEM_CTX(ndr);
3723 NDR_PULL_SET_MEM_CTX(ndr, r->out.bytes_needed, LIBNDR_FLAG_REF_ALLOC);
3724 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.bytes_needed));
3725 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_bytes_needed_0, LIBNDR_FLAG_REF_ALLOC);
3726 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
3727 NDR_PULL_ALLOC(ndr, r->out.services_returned);
3729 _mem_save_services_returned_0 = NDR_PULL_GET_MEM_CTX(ndr);
3730 NDR_PULL_SET_MEM_CTX(ndr, r->out.services_returned, LIBNDR_FLAG_REF_ALLOC);
3731 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.services_returned));
3732 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_services_returned_0, LIBNDR_FLAG_REF_ALLOC);
3733 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_resume_handle));
3734 if (_ptr_resume_handle) {
3735 NDR_PULL_ALLOC(ndr, r->out.resume_handle);
3736 } else {
3737 r->out.resume_handle = NULL;
3739 if (r->out.resume_handle) {
3740 _mem_save_resume_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
3741 NDR_PULL_SET_MEM_CTX(ndr, r->out.resume_handle, 0);
3742 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.resume_handle));
3743 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_resume_handle_0, 0);
3745 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
3746 if (r->out.service) {
3747 NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->out.service, r->in.buf_size));
3750 return NDR_ERR_SUCCESS;
3753 _PUBLIC_ void ndr_print_svcctl_EnumServicesStatusA(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_EnumServicesStatusA *r)
3755 ndr_print_struct(ndr, name, "svcctl_EnumServicesStatusA");
3756 ndr->depth++;
3757 if (flags & NDR_SET_VALUES) {
3758 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
3760 if (flags & NDR_IN) {
3761 ndr_print_struct(ndr, "in", "svcctl_EnumServicesStatusA");
3762 ndr->depth++;
3763 ndr_print_ptr(ndr, "handle", r->in.handle);
3764 ndr->depth++;
3765 ndr_print_policy_handle(ndr, "handle", r->in.handle);
3766 ndr->depth--;
3767 ndr_print_uint32(ndr, "type", r->in.type);
3768 ndr_print_uint32(ndr, "state", r->in.state);
3769 ndr_print_uint32(ndr, "buf_size", r->in.buf_size);
3770 ndr_print_ptr(ndr, "resume_handle", r->in.resume_handle);
3771 ndr->depth++;
3772 if (r->in.resume_handle) {
3773 ndr_print_uint32(ndr, "resume_handle", *r->in.resume_handle);
3775 ndr->depth--;
3776 ndr->depth--;
3778 if (flags & NDR_OUT) {
3779 ndr_print_struct(ndr, "out", "svcctl_EnumServicesStatusA");
3780 ndr->depth++;
3781 ndr_print_array_uint8(ndr, "service", r->out.service, r->in.buf_size);
3782 ndr_print_ptr(ndr, "bytes_needed", r->out.bytes_needed);
3783 ndr->depth++;
3784 ndr_print_uint32(ndr, "bytes_needed", *r->out.bytes_needed);
3785 ndr->depth--;
3786 ndr_print_ptr(ndr, "services_returned", r->out.services_returned);
3787 ndr->depth++;
3788 ndr_print_uint32(ndr, "services_returned", *r->out.services_returned);
3789 ndr->depth--;
3790 ndr_print_ptr(ndr, "resume_handle", r->out.resume_handle);
3791 ndr->depth++;
3792 if (r->out.resume_handle) {
3793 ndr_print_uint32(ndr, "resume_handle", *r->out.resume_handle);
3795 ndr->depth--;
3796 ndr_print_WERROR(ndr, "result", r->out.result);
3797 ndr->depth--;
3799 ndr->depth--;
3802 static enum ndr_err_code ndr_push_svcctl_OpenSCManagerA(struct ndr_push *ndr, int flags, const struct svcctl_OpenSCManagerA *r)
3804 if (flags & NDR_IN) {
3805 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.MachineName));
3806 if (r->in.MachineName) {
3807 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.MachineName, CH_UTF16)));
3808 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
3809 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.MachineName, CH_UTF16)));
3810 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.MachineName, ndr_charset_length(r->in.MachineName, CH_UTF16), sizeof(uint16_t), CH_UTF16));
3812 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.DatabaseName));
3813 if (r->in.DatabaseName) {
3814 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.DatabaseName, CH_UTF16)));
3815 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
3816 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.DatabaseName, CH_UTF16)));
3817 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.DatabaseName, ndr_charset_length(r->in.DatabaseName, CH_UTF16), sizeof(uint16_t), CH_UTF16));
3819 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.access_mask));
3821 if (flags & NDR_OUT) {
3822 if (r->out.handle == NULL) {
3823 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
3825 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.handle));
3826 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
3828 return NDR_ERR_SUCCESS;
3831 static enum ndr_err_code ndr_pull_svcctl_OpenSCManagerA(struct ndr_pull *ndr, int flags, struct svcctl_OpenSCManagerA *r)
3833 uint32_t _ptr_MachineName;
3834 uint32_t _ptr_DatabaseName;
3835 TALLOC_CTX *_mem_save_MachineName_0;
3836 TALLOC_CTX *_mem_save_DatabaseName_0;
3837 TALLOC_CTX *_mem_save_handle_0;
3838 if (flags & NDR_IN) {
3839 ZERO_STRUCT(r->out);
3841 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_MachineName));
3842 if (_ptr_MachineName) {
3843 NDR_PULL_ALLOC(ndr, r->in.MachineName);
3844 } else {
3845 r->in.MachineName = NULL;
3847 if (r->in.MachineName) {
3848 _mem_save_MachineName_0 = NDR_PULL_GET_MEM_CTX(ndr);
3849 NDR_PULL_SET_MEM_CTX(ndr, r->in.MachineName, 0);
3850 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.MachineName));
3851 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.MachineName));
3852 if (ndr_get_array_length(ndr, &r->in.MachineName) > ndr_get_array_size(ndr, &r->in.MachineName)) {
3853 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));
3855 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.MachineName), sizeof(uint16_t)));
3856 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.MachineName, ndr_get_array_length(ndr, &r->in.MachineName), sizeof(uint16_t), CH_UTF16));
3857 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_MachineName_0, 0);
3859 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_DatabaseName));
3860 if (_ptr_DatabaseName) {
3861 NDR_PULL_ALLOC(ndr, r->in.DatabaseName);
3862 } else {
3863 r->in.DatabaseName = NULL;
3865 if (r->in.DatabaseName) {
3866 _mem_save_DatabaseName_0 = NDR_PULL_GET_MEM_CTX(ndr);
3867 NDR_PULL_SET_MEM_CTX(ndr, r->in.DatabaseName, 0);
3868 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.DatabaseName));
3869 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.DatabaseName));
3870 if (ndr_get_array_length(ndr, &r->in.DatabaseName) > ndr_get_array_size(ndr, &r->in.DatabaseName)) {
3871 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));
3873 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.DatabaseName), sizeof(uint16_t)));
3874 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.DatabaseName, ndr_get_array_length(ndr, &r->in.DatabaseName), sizeof(uint16_t), CH_UTF16));
3875 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_DatabaseName_0, 0);
3877 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.access_mask));
3878 NDR_PULL_ALLOC(ndr, r->out.handle);
3879 ZERO_STRUCTP(r->out.handle);
3881 if (flags & NDR_OUT) {
3882 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
3883 NDR_PULL_ALLOC(ndr, r->out.handle);
3885 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
3886 NDR_PULL_SET_MEM_CTX(ndr, r->out.handle, LIBNDR_FLAG_REF_ALLOC);
3887 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.handle));
3888 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
3889 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
3891 return NDR_ERR_SUCCESS;
3894 _PUBLIC_ void ndr_print_svcctl_OpenSCManagerA(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_OpenSCManagerA *r)
3896 ndr_print_struct(ndr, name, "svcctl_OpenSCManagerA");
3897 ndr->depth++;
3898 if (flags & NDR_SET_VALUES) {
3899 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
3901 if (flags & NDR_IN) {
3902 ndr_print_struct(ndr, "in", "svcctl_OpenSCManagerA");
3903 ndr->depth++;
3904 ndr_print_ptr(ndr, "MachineName", r->in.MachineName);
3905 ndr->depth++;
3906 if (r->in.MachineName) {
3907 ndr_print_string(ndr, "MachineName", r->in.MachineName);
3909 ndr->depth--;
3910 ndr_print_ptr(ndr, "DatabaseName", r->in.DatabaseName);
3911 ndr->depth++;
3912 if (r->in.DatabaseName) {
3913 ndr_print_string(ndr, "DatabaseName", r->in.DatabaseName);
3915 ndr->depth--;
3916 ndr_print_uint32(ndr, "access_mask", r->in.access_mask);
3917 ndr->depth--;
3919 if (flags & NDR_OUT) {
3920 ndr_print_struct(ndr, "out", "svcctl_OpenSCManagerA");
3921 ndr->depth++;
3922 ndr_print_ptr(ndr, "handle", r->out.handle);
3923 ndr->depth++;
3924 ndr_print_policy_handle(ndr, "handle", r->out.handle);
3925 ndr->depth--;
3926 ndr_print_WERROR(ndr, "result", r->out.result);
3927 ndr->depth--;
3929 ndr->depth--;
3932 static enum ndr_err_code ndr_push_svcctl_OpenServiceA(struct ndr_push *ndr, int flags, const struct svcctl_OpenServiceA *r)
3934 if (flags & NDR_IN) {
3935 if (r->in.scmanager_handle == NULL) {
3936 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
3938 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.scmanager_handle));
3939 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.ServiceName));
3940 if (r->in.ServiceName) {
3941 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.ServiceName, CH_UTF16)));
3942 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
3943 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.ServiceName, CH_UTF16)));
3944 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.ServiceName, ndr_charset_length(r->in.ServiceName, CH_UTF16), sizeof(uint16_t), CH_UTF16));
3946 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.access_mask));
3948 if (flags & NDR_OUT) {
3949 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
3951 return NDR_ERR_SUCCESS;
3954 static enum ndr_err_code ndr_pull_svcctl_OpenServiceA(struct ndr_pull *ndr, int flags, struct svcctl_OpenServiceA *r)
3956 uint32_t _ptr_ServiceName;
3957 TALLOC_CTX *_mem_save_scmanager_handle_0;
3958 TALLOC_CTX *_mem_save_ServiceName_0;
3959 if (flags & NDR_IN) {
3960 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
3961 NDR_PULL_ALLOC(ndr, r->in.scmanager_handle);
3963 _mem_save_scmanager_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
3964 NDR_PULL_SET_MEM_CTX(ndr, r->in.scmanager_handle, LIBNDR_FLAG_REF_ALLOC);
3965 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.scmanager_handle));
3966 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_scmanager_handle_0, LIBNDR_FLAG_REF_ALLOC);
3967 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_ServiceName));
3968 if (_ptr_ServiceName) {
3969 NDR_PULL_ALLOC(ndr, r->in.ServiceName);
3970 } else {
3971 r->in.ServiceName = NULL;
3973 if (r->in.ServiceName) {
3974 _mem_save_ServiceName_0 = NDR_PULL_GET_MEM_CTX(ndr);
3975 NDR_PULL_SET_MEM_CTX(ndr, r->in.ServiceName, 0);
3976 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.ServiceName));
3977 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.ServiceName));
3978 if (ndr_get_array_length(ndr, &r->in.ServiceName) > ndr_get_array_size(ndr, &r->in.ServiceName)) {
3979 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));
3981 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.ServiceName), sizeof(uint16_t)));
3982 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.ServiceName, ndr_get_array_length(ndr, &r->in.ServiceName), sizeof(uint16_t), CH_UTF16));
3983 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_ServiceName_0, 0);
3985 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.access_mask));
3987 if (flags & NDR_OUT) {
3988 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
3990 return NDR_ERR_SUCCESS;
3993 _PUBLIC_ void ndr_print_svcctl_OpenServiceA(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_OpenServiceA *r)
3995 ndr_print_struct(ndr, name, "svcctl_OpenServiceA");
3996 ndr->depth++;
3997 if (flags & NDR_SET_VALUES) {
3998 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
4000 if (flags & NDR_IN) {
4001 ndr_print_struct(ndr, "in", "svcctl_OpenServiceA");
4002 ndr->depth++;
4003 ndr_print_ptr(ndr, "scmanager_handle", r->in.scmanager_handle);
4004 ndr->depth++;
4005 ndr_print_policy_handle(ndr, "scmanager_handle", r->in.scmanager_handle);
4006 ndr->depth--;
4007 ndr_print_ptr(ndr, "ServiceName", r->in.ServiceName);
4008 ndr->depth++;
4009 if (r->in.ServiceName) {
4010 ndr_print_string(ndr, "ServiceName", r->in.ServiceName);
4012 ndr->depth--;
4013 ndr_print_uint32(ndr, "access_mask", r->in.access_mask);
4014 ndr->depth--;
4016 if (flags & NDR_OUT) {
4017 ndr_print_struct(ndr, "out", "svcctl_OpenServiceA");
4018 ndr->depth++;
4019 ndr_print_WERROR(ndr, "result", r->out.result);
4020 ndr->depth--;
4022 ndr->depth--;
4025 static enum ndr_err_code ndr_push_svcctl_QueryServiceConfigA(struct ndr_push *ndr, int flags, const struct svcctl_QueryServiceConfigA *r)
4027 if (flags & NDR_IN) {
4028 if (r->in.handle == NULL) {
4029 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
4031 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
4032 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.buf_size));
4034 if (flags & NDR_OUT) {
4035 NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->out.query, r->in.buf_size));
4036 if (r->out.bytes_needed == NULL) {
4037 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
4039 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.bytes_needed));
4040 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
4042 return NDR_ERR_SUCCESS;
4045 static enum ndr_err_code ndr_pull_svcctl_QueryServiceConfigA(struct ndr_pull *ndr, int flags, struct svcctl_QueryServiceConfigA *r)
4047 TALLOC_CTX *_mem_save_handle_0;
4048 TALLOC_CTX *_mem_save_bytes_needed_0;
4049 if (flags & NDR_IN) {
4050 ZERO_STRUCT(r->out);
4052 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
4053 NDR_PULL_ALLOC(ndr, r->in.handle);
4055 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
4056 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
4057 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
4058 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
4059 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.buf_size));
4060 NDR_PULL_ALLOC(ndr, r->out.bytes_needed);
4061 ZERO_STRUCTP(r->out.bytes_needed);
4063 if (flags & NDR_OUT) {
4064 NDR_PULL_ALLOC_N(ndr, r->out.query, r->in.buf_size);
4065 NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->out.query, r->in.buf_size));
4066 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
4067 NDR_PULL_ALLOC(ndr, r->out.bytes_needed);
4069 _mem_save_bytes_needed_0 = NDR_PULL_GET_MEM_CTX(ndr);
4070 NDR_PULL_SET_MEM_CTX(ndr, r->out.bytes_needed, LIBNDR_FLAG_REF_ALLOC);
4071 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.bytes_needed));
4072 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_bytes_needed_0, LIBNDR_FLAG_REF_ALLOC);
4073 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
4075 return NDR_ERR_SUCCESS;
4078 _PUBLIC_ void ndr_print_svcctl_QueryServiceConfigA(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_QueryServiceConfigA *r)
4080 ndr_print_struct(ndr, name, "svcctl_QueryServiceConfigA");
4081 ndr->depth++;
4082 if (flags & NDR_SET_VALUES) {
4083 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
4085 if (flags & NDR_IN) {
4086 ndr_print_struct(ndr, "in", "svcctl_QueryServiceConfigA");
4087 ndr->depth++;
4088 ndr_print_ptr(ndr, "handle", r->in.handle);
4089 ndr->depth++;
4090 ndr_print_policy_handle(ndr, "handle", r->in.handle);
4091 ndr->depth--;
4092 ndr_print_uint32(ndr, "buf_size", r->in.buf_size);
4093 ndr->depth--;
4095 if (flags & NDR_OUT) {
4096 ndr_print_struct(ndr, "out", "svcctl_QueryServiceConfigA");
4097 ndr->depth++;
4098 ndr_print_array_uint8(ndr, "query", r->out.query, r->in.buf_size);
4099 ndr_print_ptr(ndr, "bytes_needed", r->out.bytes_needed);
4100 ndr->depth++;
4101 ndr_print_uint32(ndr, "bytes_needed", *r->out.bytes_needed);
4102 ndr->depth--;
4103 ndr_print_WERROR(ndr, "result", r->out.result);
4104 ndr->depth--;
4106 ndr->depth--;
4109 static enum ndr_err_code ndr_push_svcctl_QueryServiceLockStatusA(struct ndr_push *ndr, int flags, const struct svcctl_QueryServiceLockStatusA *r)
4111 if (flags & NDR_IN) {
4112 if (r->in.handle == NULL) {
4113 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
4115 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
4116 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.buf_size));
4118 if (flags & NDR_OUT) {
4119 if (r->out.lock_status == NULL) {
4120 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
4122 NDR_CHECK(ndr_push_SERVICE_LOCK_STATUS(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.lock_status));
4123 if (r->out.required_buf_size == NULL) {
4124 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
4126 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.required_buf_size));
4127 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
4129 return NDR_ERR_SUCCESS;
4132 static enum ndr_err_code ndr_pull_svcctl_QueryServiceLockStatusA(struct ndr_pull *ndr, int flags, struct svcctl_QueryServiceLockStatusA *r)
4134 TALLOC_CTX *_mem_save_handle_0;
4135 TALLOC_CTX *_mem_save_lock_status_0;
4136 TALLOC_CTX *_mem_save_required_buf_size_0;
4137 if (flags & NDR_IN) {
4138 ZERO_STRUCT(r->out);
4140 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
4141 NDR_PULL_ALLOC(ndr, r->in.handle);
4143 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
4144 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
4145 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
4146 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
4147 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.buf_size));
4148 NDR_PULL_ALLOC(ndr, r->out.lock_status);
4149 ZERO_STRUCTP(r->out.lock_status);
4150 NDR_PULL_ALLOC(ndr, r->out.required_buf_size);
4151 ZERO_STRUCTP(r->out.required_buf_size);
4153 if (flags & NDR_OUT) {
4154 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
4155 NDR_PULL_ALLOC(ndr, r->out.lock_status);
4157 _mem_save_lock_status_0 = NDR_PULL_GET_MEM_CTX(ndr);
4158 NDR_PULL_SET_MEM_CTX(ndr, r->out.lock_status, LIBNDR_FLAG_REF_ALLOC);
4159 NDR_CHECK(ndr_pull_SERVICE_LOCK_STATUS(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.lock_status));
4160 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_lock_status_0, LIBNDR_FLAG_REF_ALLOC);
4161 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
4162 NDR_PULL_ALLOC(ndr, r->out.required_buf_size);
4164 _mem_save_required_buf_size_0 = NDR_PULL_GET_MEM_CTX(ndr);
4165 NDR_PULL_SET_MEM_CTX(ndr, r->out.required_buf_size, LIBNDR_FLAG_REF_ALLOC);
4166 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.required_buf_size));
4167 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_required_buf_size_0, LIBNDR_FLAG_REF_ALLOC);
4168 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
4170 return NDR_ERR_SUCCESS;
4173 _PUBLIC_ void ndr_print_svcctl_QueryServiceLockStatusA(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_QueryServiceLockStatusA *r)
4175 ndr_print_struct(ndr, name, "svcctl_QueryServiceLockStatusA");
4176 ndr->depth++;
4177 if (flags & NDR_SET_VALUES) {
4178 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
4180 if (flags & NDR_IN) {
4181 ndr_print_struct(ndr, "in", "svcctl_QueryServiceLockStatusA");
4182 ndr->depth++;
4183 ndr_print_ptr(ndr, "handle", r->in.handle);
4184 ndr->depth++;
4185 ndr_print_policy_handle(ndr, "handle", r->in.handle);
4186 ndr->depth--;
4187 ndr_print_uint32(ndr, "buf_size", r->in.buf_size);
4188 ndr->depth--;
4190 if (flags & NDR_OUT) {
4191 ndr_print_struct(ndr, "out", "svcctl_QueryServiceLockStatusA");
4192 ndr->depth++;
4193 ndr_print_ptr(ndr, "lock_status", r->out.lock_status);
4194 ndr->depth++;
4195 ndr_print_SERVICE_LOCK_STATUS(ndr, "lock_status", r->out.lock_status);
4196 ndr->depth--;
4197 ndr_print_ptr(ndr, "required_buf_size", r->out.required_buf_size);
4198 ndr->depth++;
4199 ndr_print_uint32(ndr, "required_buf_size", *r->out.required_buf_size);
4200 ndr->depth--;
4201 ndr_print_WERROR(ndr, "result", r->out.result);
4202 ndr->depth--;
4204 ndr->depth--;
4207 static enum ndr_err_code ndr_push_svcctl_StartServiceA(struct ndr_push *ndr, int flags, const struct svcctl_StartServiceA *r)
4209 if (flags & NDR_IN) {
4210 if (r->in.handle == NULL) {
4211 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
4213 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
4214 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.NumArgs));
4215 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.Arguments));
4216 if (r->in.Arguments) {
4217 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.Arguments, CH_UTF16)));
4218 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
4219 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.Arguments, CH_UTF16)));
4220 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.Arguments, ndr_charset_length(r->in.Arguments, CH_UTF16), sizeof(uint16_t), CH_UTF16));
4223 if (flags & NDR_OUT) {
4224 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
4226 return NDR_ERR_SUCCESS;
4229 static enum ndr_err_code ndr_pull_svcctl_StartServiceA(struct ndr_pull *ndr, int flags, struct svcctl_StartServiceA *r)
4231 uint32_t _ptr_Arguments;
4232 TALLOC_CTX *_mem_save_handle_0;
4233 TALLOC_CTX *_mem_save_Arguments_0;
4234 if (flags & NDR_IN) {
4235 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
4236 NDR_PULL_ALLOC(ndr, r->in.handle);
4238 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
4239 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
4240 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
4241 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
4242 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.NumArgs));
4243 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_Arguments));
4244 if (_ptr_Arguments) {
4245 NDR_PULL_ALLOC(ndr, r->in.Arguments);
4246 } else {
4247 r->in.Arguments = NULL;
4249 if (r->in.Arguments) {
4250 _mem_save_Arguments_0 = NDR_PULL_GET_MEM_CTX(ndr);
4251 NDR_PULL_SET_MEM_CTX(ndr, r->in.Arguments, 0);
4252 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.Arguments));
4253 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.Arguments));
4254 if (ndr_get_array_length(ndr, &r->in.Arguments) > ndr_get_array_size(ndr, &r->in.Arguments)) {
4255 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));
4257 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.Arguments), sizeof(uint16_t)));
4258 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.Arguments, ndr_get_array_length(ndr, &r->in.Arguments), sizeof(uint16_t), CH_UTF16));
4259 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_Arguments_0, 0);
4262 if (flags & NDR_OUT) {
4263 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
4265 return NDR_ERR_SUCCESS;
4268 _PUBLIC_ void ndr_print_svcctl_StartServiceA(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_StartServiceA *r)
4270 ndr_print_struct(ndr, name, "svcctl_StartServiceA");
4271 ndr->depth++;
4272 if (flags & NDR_SET_VALUES) {
4273 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
4275 if (flags & NDR_IN) {
4276 ndr_print_struct(ndr, "in", "svcctl_StartServiceA");
4277 ndr->depth++;
4278 ndr_print_ptr(ndr, "handle", r->in.handle);
4279 ndr->depth++;
4280 ndr_print_policy_handle(ndr, "handle", r->in.handle);
4281 ndr->depth--;
4282 ndr_print_uint32(ndr, "NumArgs", r->in.NumArgs);
4283 ndr_print_ptr(ndr, "Arguments", r->in.Arguments);
4284 ndr->depth++;
4285 if (r->in.Arguments) {
4286 ndr_print_string(ndr, "Arguments", r->in.Arguments);
4288 ndr->depth--;
4289 ndr->depth--;
4291 if (flags & NDR_OUT) {
4292 ndr_print_struct(ndr, "out", "svcctl_StartServiceA");
4293 ndr->depth++;
4294 ndr_print_WERROR(ndr, "result", r->out.result);
4295 ndr->depth--;
4297 ndr->depth--;
4300 static enum ndr_err_code ndr_push_svcctl_GetServiceDisplayNameA(struct ndr_push *ndr, int flags, const struct svcctl_GetServiceDisplayNameA *r)
4302 if (flags & NDR_IN) {
4303 if (r->in.handle == NULL) {
4304 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
4306 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
4307 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.service_name));
4308 if (r->in.service_name) {
4309 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.service_name, CH_UTF16)));
4310 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
4311 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.service_name, CH_UTF16)));
4312 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));
4314 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.display_name_length));
4315 if (r->in.display_name_length) {
4316 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->in.display_name_length));
4319 if (flags & NDR_OUT) {
4320 if (r->out.display_name == NULL) {
4321 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
4323 NDR_CHECK(ndr_push_unique_ptr(ndr, *r->out.display_name));
4324 if (*r->out.display_name) {
4325 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(*r->out.display_name, CH_UTF16)));
4326 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
4327 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(*r->out.display_name, CH_UTF16)));
4328 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));
4330 NDR_CHECK(ndr_push_unique_ptr(ndr, r->out.display_name_length));
4331 if (r->out.display_name_length) {
4332 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.display_name_length));
4334 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
4336 return NDR_ERR_SUCCESS;
4339 static enum ndr_err_code ndr_pull_svcctl_GetServiceDisplayNameA(struct ndr_pull *ndr, int flags, struct svcctl_GetServiceDisplayNameA *r)
4341 uint32_t _ptr_service_name;
4342 uint32_t _ptr_display_name;
4343 uint32_t _ptr_display_name_length;
4344 TALLOC_CTX *_mem_save_handle_0;
4345 TALLOC_CTX *_mem_save_service_name_0;
4346 TALLOC_CTX *_mem_save_display_name_0;
4347 TALLOC_CTX *_mem_save_display_name_1;
4348 TALLOC_CTX *_mem_save_display_name_length_0;
4349 if (flags & NDR_IN) {
4350 ZERO_STRUCT(r->out);
4352 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
4353 NDR_PULL_ALLOC(ndr, r->in.handle);
4355 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
4356 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
4357 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
4358 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
4359 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_service_name));
4360 if (_ptr_service_name) {
4361 NDR_PULL_ALLOC(ndr, r->in.service_name);
4362 } else {
4363 r->in.service_name = NULL;
4365 if (r->in.service_name) {
4366 _mem_save_service_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
4367 NDR_PULL_SET_MEM_CTX(ndr, r->in.service_name, 0);
4368 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.service_name));
4369 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.service_name));
4370 if (ndr_get_array_length(ndr, &r->in.service_name) > ndr_get_array_size(ndr, &r->in.service_name)) {
4371 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));
4373 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.service_name), sizeof(uint16_t)));
4374 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));
4375 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_service_name_0, 0);
4377 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_display_name_length));
4378 if (_ptr_display_name_length) {
4379 NDR_PULL_ALLOC(ndr, r->in.display_name_length);
4380 } else {
4381 r->in.display_name_length = NULL;
4383 if (r->in.display_name_length) {
4384 _mem_save_display_name_length_0 = NDR_PULL_GET_MEM_CTX(ndr);
4385 NDR_PULL_SET_MEM_CTX(ndr, r->in.display_name_length, 0);
4386 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->in.display_name_length));
4387 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_display_name_length_0, 0);
4389 NDR_PULL_ALLOC(ndr, r->out.display_name);
4390 ZERO_STRUCTP(r->out.display_name);
4392 if (flags & NDR_OUT) {
4393 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
4394 NDR_PULL_ALLOC(ndr, r->out.display_name);
4396 _mem_save_display_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
4397 NDR_PULL_SET_MEM_CTX(ndr, r->out.display_name, LIBNDR_FLAG_REF_ALLOC);
4398 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_display_name));
4399 if (_ptr_display_name) {
4400 NDR_PULL_ALLOC(ndr, *r->out.display_name);
4401 } else {
4402 *r->out.display_name = NULL;
4404 if (*r->out.display_name) {
4405 _mem_save_display_name_1 = NDR_PULL_GET_MEM_CTX(ndr);
4406 NDR_PULL_SET_MEM_CTX(ndr, *r->out.display_name, 0);
4407 NDR_CHECK(ndr_pull_array_size(ndr, r->out.display_name));
4408 NDR_CHECK(ndr_pull_array_length(ndr, r->out.display_name));
4409 if (ndr_get_array_length(ndr, r->out.display_name) > ndr_get_array_size(ndr, r->out.display_name)) {
4410 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));
4412 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, r->out.display_name), sizeof(uint16_t)));
4413 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));
4414 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_display_name_1, 0);
4416 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_display_name_0, LIBNDR_FLAG_REF_ALLOC);
4417 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_display_name_length));
4418 if (_ptr_display_name_length) {
4419 NDR_PULL_ALLOC(ndr, r->out.display_name_length);
4420 } else {
4421 r->out.display_name_length = NULL;
4423 if (r->out.display_name_length) {
4424 _mem_save_display_name_length_0 = NDR_PULL_GET_MEM_CTX(ndr);
4425 NDR_PULL_SET_MEM_CTX(ndr, r->out.display_name_length, 0);
4426 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.display_name_length));
4427 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_display_name_length_0, 0);
4429 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
4431 return NDR_ERR_SUCCESS;
4434 _PUBLIC_ void ndr_print_svcctl_GetServiceDisplayNameA(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_GetServiceDisplayNameA *r)
4436 ndr_print_struct(ndr, name, "svcctl_GetServiceDisplayNameA");
4437 ndr->depth++;
4438 if (flags & NDR_SET_VALUES) {
4439 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
4441 if (flags & NDR_IN) {
4442 ndr_print_struct(ndr, "in", "svcctl_GetServiceDisplayNameA");
4443 ndr->depth++;
4444 ndr_print_ptr(ndr, "handle", r->in.handle);
4445 ndr->depth++;
4446 ndr_print_policy_handle(ndr, "handle", r->in.handle);
4447 ndr->depth--;
4448 ndr_print_ptr(ndr, "service_name", r->in.service_name);
4449 ndr->depth++;
4450 if (r->in.service_name) {
4451 ndr_print_string(ndr, "service_name", r->in.service_name);
4453 ndr->depth--;
4454 ndr_print_ptr(ndr, "display_name_length", r->in.display_name_length);
4455 ndr->depth++;
4456 if (r->in.display_name_length) {
4457 ndr_print_uint32(ndr, "display_name_length", *r->in.display_name_length);
4459 ndr->depth--;
4460 ndr->depth--;
4462 if (flags & NDR_OUT) {
4463 ndr_print_struct(ndr, "out", "svcctl_GetServiceDisplayNameA");
4464 ndr->depth++;
4465 ndr_print_ptr(ndr, "display_name", r->out.display_name);
4466 ndr->depth++;
4467 ndr_print_ptr(ndr, "display_name", *r->out.display_name);
4468 ndr->depth++;
4469 if (*r->out.display_name) {
4470 ndr_print_string(ndr, "display_name", *r->out.display_name);
4472 ndr->depth--;
4473 ndr->depth--;
4474 ndr_print_ptr(ndr, "display_name_length", r->out.display_name_length);
4475 ndr->depth++;
4476 if (r->out.display_name_length) {
4477 ndr_print_uint32(ndr, "display_name_length", *r->out.display_name_length);
4479 ndr->depth--;
4480 ndr_print_WERROR(ndr, "result", r->out.result);
4481 ndr->depth--;
4483 ndr->depth--;
4486 static enum ndr_err_code ndr_push_svcctl_GetServiceKeyNameA(struct ndr_push *ndr, int flags, const struct svcctl_GetServiceKeyNameA *r)
4488 if (flags & NDR_IN) {
4489 if (r->in.handle == NULL) {
4490 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
4492 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
4493 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.service_name));
4494 if (r->in.service_name) {
4495 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.service_name, CH_UTF16)));
4496 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
4497 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.service_name, CH_UTF16)));
4498 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));
4500 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.display_name_length));
4501 if (r->in.display_name_length) {
4502 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->in.display_name_length));
4505 if (flags & NDR_OUT) {
4506 if (r->out.key_name == NULL) {
4507 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
4509 NDR_CHECK(ndr_push_unique_ptr(ndr, *r->out.key_name));
4510 if (*r->out.key_name) {
4511 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(*r->out.key_name, CH_UTF16)));
4512 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
4513 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(*r->out.key_name, CH_UTF16)));
4514 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));
4516 NDR_CHECK(ndr_push_unique_ptr(ndr, r->out.display_name_length));
4517 if (r->out.display_name_length) {
4518 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.display_name_length));
4520 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
4522 return NDR_ERR_SUCCESS;
4525 static enum ndr_err_code ndr_pull_svcctl_GetServiceKeyNameA(struct ndr_pull *ndr, int flags, struct svcctl_GetServiceKeyNameA *r)
4527 uint32_t _ptr_service_name;
4528 uint32_t _ptr_key_name;
4529 uint32_t _ptr_display_name_length;
4530 TALLOC_CTX *_mem_save_handle_0;
4531 TALLOC_CTX *_mem_save_service_name_0;
4532 TALLOC_CTX *_mem_save_key_name_0;
4533 TALLOC_CTX *_mem_save_key_name_1;
4534 TALLOC_CTX *_mem_save_display_name_length_0;
4535 if (flags & NDR_IN) {
4536 ZERO_STRUCT(r->out);
4538 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
4539 NDR_PULL_ALLOC(ndr, r->in.handle);
4541 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
4542 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
4543 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
4544 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
4545 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_service_name));
4546 if (_ptr_service_name) {
4547 NDR_PULL_ALLOC(ndr, r->in.service_name);
4548 } else {
4549 r->in.service_name = NULL;
4551 if (r->in.service_name) {
4552 _mem_save_service_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
4553 NDR_PULL_SET_MEM_CTX(ndr, r->in.service_name, 0);
4554 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.service_name));
4555 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.service_name));
4556 if (ndr_get_array_length(ndr, &r->in.service_name) > ndr_get_array_size(ndr, &r->in.service_name)) {
4557 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));
4559 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.service_name), sizeof(uint16_t)));
4560 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));
4561 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_service_name_0, 0);
4563 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_display_name_length));
4564 if (_ptr_display_name_length) {
4565 NDR_PULL_ALLOC(ndr, r->in.display_name_length);
4566 } else {
4567 r->in.display_name_length = NULL;
4569 if (r->in.display_name_length) {
4570 _mem_save_display_name_length_0 = NDR_PULL_GET_MEM_CTX(ndr);
4571 NDR_PULL_SET_MEM_CTX(ndr, r->in.display_name_length, 0);
4572 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->in.display_name_length));
4573 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_display_name_length_0, 0);
4575 NDR_PULL_ALLOC(ndr, r->out.key_name);
4576 ZERO_STRUCTP(r->out.key_name);
4578 if (flags & NDR_OUT) {
4579 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
4580 NDR_PULL_ALLOC(ndr, r->out.key_name);
4582 _mem_save_key_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
4583 NDR_PULL_SET_MEM_CTX(ndr, r->out.key_name, LIBNDR_FLAG_REF_ALLOC);
4584 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_key_name));
4585 if (_ptr_key_name) {
4586 NDR_PULL_ALLOC(ndr, *r->out.key_name);
4587 } else {
4588 *r->out.key_name = NULL;
4590 if (*r->out.key_name) {
4591 _mem_save_key_name_1 = NDR_PULL_GET_MEM_CTX(ndr);
4592 NDR_PULL_SET_MEM_CTX(ndr, *r->out.key_name, 0);
4593 NDR_CHECK(ndr_pull_array_size(ndr, r->out.key_name));
4594 NDR_CHECK(ndr_pull_array_length(ndr, r->out.key_name));
4595 if (ndr_get_array_length(ndr, r->out.key_name) > ndr_get_array_size(ndr, r->out.key_name)) {
4596 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));
4598 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, r->out.key_name), sizeof(uint16_t)));
4599 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));
4600 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_key_name_1, 0);
4602 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_key_name_0, LIBNDR_FLAG_REF_ALLOC);
4603 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_display_name_length));
4604 if (_ptr_display_name_length) {
4605 NDR_PULL_ALLOC(ndr, r->out.display_name_length);
4606 } else {
4607 r->out.display_name_length = NULL;
4609 if (r->out.display_name_length) {
4610 _mem_save_display_name_length_0 = NDR_PULL_GET_MEM_CTX(ndr);
4611 NDR_PULL_SET_MEM_CTX(ndr, r->out.display_name_length, 0);
4612 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.display_name_length));
4613 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_display_name_length_0, 0);
4615 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
4617 return NDR_ERR_SUCCESS;
4620 _PUBLIC_ void ndr_print_svcctl_GetServiceKeyNameA(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_GetServiceKeyNameA *r)
4622 ndr_print_struct(ndr, name, "svcctl_GetServiceKeyNameA");
4623 ndr->depth++;
4624 if (flags & NDR_SET_VALUES) {
4625 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
4627 if (flags & NDR_IN) {
4628 ndr_print_struct(ndr, "in", "svcctl_GetServiceKeyNameA");
4629 ndr->depth++;
4630 ndr_print_ptr(ndr, "handle", r->in.handle);
4631 ndr->depth++;
4632 ndr_print_policy_handle(ndr, "handle", r->in.handle);
4633 ndr->depth--;
4634 ndr_print_ptr(ndr, "service_name", r->in.service_name);
4635 ndr->depth++;
4636 if (r->in.service_name) {
4637 ndr_print_string(ndr, "service_name", r->in.service_name);
4639 ndr->depth--;
4640 ndr_print_ptr(ndr, "display_name_length", r->in.display_name_length);
4641 ndr->depth++;
4642 if (r->in.display_name_length) {
4643 ndr_print_uint32(ndr, "display_name_length", *r->in.display_name_length);
4645 ndr->depth--;
4646 ndr->depth--;
4648 if (flags & NDR_OUT) {
4649 ndr_print_struct(ndr, "out", "svcctl_GetServiceKeyNameA");
4650 ndr->depth++;
4651 ndr_print_ptr(ndr, "key_name", r->out.key_name);
4652 ndr->depth++;
4653 ndr_print_ptr(ndr, "key_name", *r->out.key_name);
4654 ndr->depth++;
4655 if (*r->out.key_name) {
4656 ndr_print_string(ndr, "key_name", *r->out.key_name);
4658 ndr->depth--;
4659 ndr->depth--;
4660 ndr_print_ptr(ndr, "display_name_length", r->out.display_name_length);
4661 ndr->depth++;
4662 if (r->out.display_name_length) {
4663 ndr_print_uint32(ndr, "display_name_length", *r->out.display_name_length);
4665 ndr->depth--;
4666 ndr_print_WERROR(ndr, "result", r->out.result);
4667 ndr->depth--;
4669 ndr->depth--;
4672 static enum ndr_err_code ndr_push_svcctl_GetCurrentGroupeStateW(struct ndr_push *ndr, int flags, const struct svcctl_GetCurrentGroupeStateW *r)
4674 if (flags & NDR_IN) {
4676 if (flags & NDR_OUT) {
4677 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
4679 return NDR_ERR_SUCCESS;
4682 static enum ndr_err_code ndr_pull_svcctl_GetCurrentGroupeStateW(struct ndr_pull *ndr, int flags, struct svcctl_GetCurrentGroupeStateW *r)
4684 if (flags & NDR_IN) {
4686 if (flags & NDR_OUT) {
4687 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
4689 return NDR_ERR_SUCCESS;
4692 _PUBLIC_ void ndr_print_svcctl_GetCurrentGroupeStateW(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_GetCurrentGroupeStateW *r)
4694 ndr_print_struct(ndr, name, "svcctl_GetCurrentGroupeStateW");
4695 ndr->depth++;
4696 if (flags & NDR_SET_VALUES) {
4697 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
4699 if (flags & NDR_IN) {
4700 ndr_print_struct(ndr, "in", "svcctl_GetCurrentGroupeStateW");
4701 ndr->depth++;
4702 ndr->depth--;
4704 if (flags & NDR_OUT) {
4705 ndr_print_struct(ndr, "out", "svcctl_GetCurrentGroupeStateW");
4706 ndr->depth++;
4707 ndr_print_WERROR(ndr, "result", r->out.result);
4708 ndr->depth--;
4710 ndr->depth--;
4713 static enum ndr_err_code ndr_push_svcctl_EnumServiceGroupW(struct ndr_push *ndr, int flags, const struct svcctl_EnumServiceGroupW *r)
4715 if (flags & NDR_IN) {
4717 if (flags & NDR_OUT) {
4718 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
4720 return NDR_ERR_SUCCESS;
4723 static enum ndr_err_code ndr_pull_svcctl_EnumServiceGroupW(struct ndr_pull *ndr, int flags, struct svcctl_EnumServiceGroupW *r)
4725 if (flags & NDR_IN) {
4727 if (flags & NDR_OUT) {
4728 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
4730 return NDR_ERR_SUCCESS;
4733 _PUBLIC_ void ndr_print_svcctl_EnumServiceGroupW(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_EnumServiceGroupW *r)
4735 ndr_print_struct(ndr, name, "svcctl_EnumServiceGroupW");
4736 ndr->depth++;
4737 if (flags & NDR_SET_VALUES) {
4738 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
4740 if (flags & NDR_IN) {
4741 ndr_print_struct(ndr, "in", "svcctl_EnumServiceGroupW");
4742 ndr->depth++;
4743 ndr->depth--;
4745 if (flags & NDR_OUT) {
4746 ndr_print_struct(ndr, "out", "svcctl_EnumServiceGroupW");
4747 ndr->depth++;
4748 ndr_print_WERROR(ndr, "result", r->out.result);
4749 ndr->depth--;
4751 ndr->depth--;
4754 static enum ndr_err_code ndr_push_svcctl_ChangeServiceConfig2A(struct ndr_push *ndr, int flags, const struct svcctl_ChangeServiceConfig2A *r)
4756 if (flags & NDR_IN) {
4757 if (r->in.handle == NULL) {
4758 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
4760 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
4761 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.info_level));
4762 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.info));
4763 if (r->in.info) {
4764 NDR_CHECK(ndr_push_uint8(ndr, NDR_SCALARS, *r->in.info));
4767 if (flags & NDR_OUT) {
4768 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
4770 return NDR_ERR_SUCCESS;
4773 static enum ndr_err_code ndr_pull_svcctl_ChangeServiceConfig2A(struct ndr_pull *ndr, int flags, struct svcctl_ChangeServiceConfig2A *r)
4775 uint32_t _ptr_info;
4776 TALLOC_CTX *_mem_save_handle_0;
4777 TALLOC_CTX *_mem_save_info_0;
4778 if (flags & NDR_IN) {
4779 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
4780 NDR_PULL_ALLOC(ndr, r->in.handle);
4782 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
4783 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
4784 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
4785 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
4786 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.info_level));
4787 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_info));
4788 if (_ptr_info) {
4789 NDR_PULL_ALLOC(ndr, r->in.info);
4790 } else {
4791 r->in.info = NULL;
4793 if (r->in.info) {
4794 _mem_save_info_0 = NDR_PULL_GET_MEM_CTX(ndr);
4795 NDR_PULL_SET_MEM_CTX(ndr, r->in.info, 0);
4796 NDR_CHECK(ndr_pull_uint8(ndr, NDR_SCALARS, r->in.info));
4797 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_info_0, 0);
4800 if (flags & NDR_OUT) {
4801 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
4803 return NDR_ERR_SUCCESS;
4806 _PUBLIC_ void ndr_print_svcctl_ChangeServiceConfig2A(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_ChangeServiceConfig2A *r)
4808 ndr_print_struct(ndr, name, "svcctl_ChangeServiceConfig2A");
4809 ndr->depth++;
4810 if (flags & NDR_SET_VALUES) {
4811 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
4813 if (flags & NDR_IN) {
4814 ndr_print_struct(ndr, "in", "svcctl_ChangeServiceConfig2A");
4815 ndr->depth++;
4816 ndr_print_ptr(ndr, "handle", r->in.handle);
4817 ndr->depth++;
4818 ndr_print_policy_handle(ndr, "handle", r->in.handle);
4819 ndr->depth--;
4820 ndr_print_uint32(ndr, "info_level", r->in.info_level);
4821 ndr_print_ptr(ndr, "info", r->in.info);
4822 ndr->depth++;
4823 if (r->in.info) {
4824 ndr_print_uint8(ndr, "info", *r->in.info);
4826 ndr->depth--;
4827 ndr->depth--;
4829 if (flags & NDR_OUT) {
4830 ndr_print_struct(ndr, "out", "svcctl_ChangeServiceConfig2A");
4831 ndr->depth++;
4832 ndr_print_WERROR(ndr, "result", r->out.result);
4833 ndr->depth--;
4835 ndr->depth--;
4838 static enum ndr_err_code ndr_push_svcctl_ChangeServiceConfig2W(struct ndr_push *ndr, int flags, const struct svcctl_ChangeServiceConfig2W *r)
4840 if (flags & NDR_IN) {
4841 if (r->in.handle == NULL) {
4842 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
4844 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
4845 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.info_level));
4846 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.info));
4847 if (r->in.info) {
4848 NDR_CHECK(ndr_push_uint8(ndr, NDR_SCALARS, *r->in.info));
4851 if (flags & NDR_OUT) {
4852 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
4854 return NDR_ERR_SUCCESS;
4857 static enum ndr_err_code ndr_pull_svcctl_ChangeServiceConfig2W(struct ndr_pull *ndr, int flags, struct svcctl_ChangeServiceConfig2W *r)
4859 uint32_t _ptr_info;
4860 TALLOC_CTX *_mem_save_handle_0;
4861 TALLOC_CTX *_mem_save_info_0;
4862 if (flags & NDR_IN) {
4863 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
4864 NDR_PULL_ALLOC(ndr, r->in.handle);
4866 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
4867 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
4868 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
4869 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
4870 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.info_level));
4871 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_info));
4872 if (_ptr_info) {
4873 NDR_PULL_ALLOC(ndr, r->in.info);
4874 } else {
4875 r->in.info = NULL;
4877 if (r->in.info) {
4878 _mem_save_info_0 = NDR_PULL_GET_MEM_CTX(ndr);
4879 NDR_PULL_SET_MEM_CTX(ndr, r->in.info, 0);
4880 NDR_CHECK(ndr_pull_uint8(ndr, NDR_SCALARS, r->in.info));
4881 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_info_0, 0);
4884 if (flags & NDR_OUT) {
4885 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
4887 return NDR_ERR_SUCCESS;
4890 _PUBLIC_ void ndr_print_svcctl_ChangeServiceConfig2W(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_ChangeServiceConfig2W *r)
4892 ndr_print_struct(ndr, name, "svcctl_ChangeServiceConfig2W");
4893 ndr->depth++;
4894 if (flags & NDR_SET_VALUES) {
4895 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
4897 if (flags & NDR_IN) {
4898 ndr_print_struct(ndr, "in", "svcctl_ChangeServiceConfig2W");
4899 ndr->depth++;
4900 ndr_print_ptr(ndr, "handle", r->in.handle);
4901 ndr->depth++;
4902 ndr_print_policy_handle(ndr, "handle", r->in.handle);
4903 ndr->depth--;
4904 ndr_print_uint32(ndr, "info_level", r->in.info_level);
4905 ndr_print_ptr(ndr, "info", r->in.info);
4906 ndr->depth++;
4907 if (r->in.info) {
4908 ndr_print_uint8(ndr, "info", *r->in.info);
4910 ndr->depth--;
4911 ndr->depth--;
4913 if (flags & NDR_OUT) {
4914 ndr_print_struct(ndr, "out", "svcctl_ChangeServiceConfig2W");
4915 ndr->depth++;
4916 ndr_print_WERROR(ndr, "result", r->out.result);
4917 ndr->depth--;
4919 ndr->depth--;
4922 static enum ndr_err_code ndr_push_svcctl_QueryServiceConfig2A(struct ndr_push *ndr, int flags, const struct svcctl_QueryServiceConfig2A *r)
4924 if (flags & NDR_IN) {
4925 if (r->in.handle == NULL) {
4926 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
4928 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
4929 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.info_level));
4930 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.buf_size));
4932 if (flags & NDR_OUT) {
4933 NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->out.buffer, r->in.buf_size));
4934 if (r->out.bytes_needed == NULL) {
4935 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
4937 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.bytes_needed));
4938 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
4940 return NDR_ERR_SUCCESS;
4943 static enum ndr_err_code ndr_pull_svcctl_QueryServiceConfig2A(struct ndr_pull *ndr, int flags, struct svcctl_QueryServiceConfig2A *r)
4945 TALLOC_CTX *_mem_save_handle_0;
4946 TALLOC_CTX *_mem_save_bytes_needed_0;
4947 if (flags & NDR_IN) {
4948 ZERO_STRUCT(r->out);
4950 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
4951 NDR_PULL_ALLOC(ndr, r->in.handle);
4953 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
4954 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
4955 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
4956 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
4957 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.info_level));
4958 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.buf_size));
4959 NDR_PULL_ALLOC(ndr, r->out.bytes_needed);
4960 ZERO_STRUCTP(r->out.bytes_needed);
4962 if (flags & NDR_OUT) {
4963 NDR_PULL_ALLOC_N(ndr, r->out.buffer, r->in.buf_size);
4964 NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->out.buffer, r->in.buf_size));
4965 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
4966 NDR_PULL_ALLOC(ndr, r->out.bytes_needed);
4968 _mem_save_bytes_needed_0 = NDR_PULL_GET_MEM_CTX(ndr);
4969 NDR_PULL_SET_MEM_CTX(ndr, r->out.bytes_needed, LIBNDR_FLAG_REF_ALLOC);
4970 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.bytes_needed));
4971 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_bytes_needed_0, LIBNDR_FLAG_REF_ALLOC);
4972 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
4974 return NDR_ERR_SUCCESS;
4977 _PUBLIC_ void ndr_print_svcctl_QueryServiceConfig2A(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_QueryServiceConfig2A *r)
4979 ndr_print_struct(ndr, name, "svcctl_QueryServiceConfig2A");
4980 ndr->depth++;
4981 if (flags & NDR_SET_VALUES) {
4982 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
4984 if (flags & NDR_IN) {
4985 ndr_print_struct(ndr, "in", "svcctl_QueryServiceConfig2A");
4986 ndr->depth++;
4987 ndr_print_ptr(ndr, "handle", r->in.handle);
4988 ndr->depth++;
4989 ndr_print_policy_handle(ndr, "handle", r->in.handle);
4990 ndr->depth--;
4991 ndr_print_uint32(ndr, "info_level", r->in.info_level);
4992 ndr_print_uint32(ndr, "buf_size", r->in.buf_size);
4993 ndr->depth--;
4995 if (flags & NDR_OUT) {
4996 ndr_print_struct(ndr, "out", "svcctl_QueryServiceConfig2A");
4997 ndr->depth++;
4998 ndr_print_array_uint8(ndr, "buffer", r->out.buffer, r->in.buf_size);
4999 ndr_print_ptr(ndr, "bytes_needed", r->out.bytes_needed);
5000 ndr->depth++;
5001 ndr_print_uint32(ndr, "bytes_needed", *r->out.bytes_needed);
5002 ndr->depth--;
5003 ndr_print_WERROR(ndr, "result", r->out.result);
5004 ndr->depth--;
5006 ndr->depth--;
5009 static enum ndr_err_code ndr_push_svcctl_QueryServiceConfig2W(struct ndr_push *ndr, int flags, const struct svcctl_QueryServiceConfig2W *r)
5011 if (flags & NDR_IN) {
5012 if (r->in.handle == NULL) {
5013 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
5015 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
5016 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.info_level));
5017 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.buf_size));
5019 if (flags & NDR_OUT) {
5020 NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->out.buffer, r->in.buf_size));
5021 if (r->out.bytes_needed == NULL) {
5022 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
5024 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.bytes_needed));
5025 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
5027 return NDR_ERR_SUCCESS;
5030 static enum ndr_err_code ndr_pull_svcctl_QueryServiceConfig2W(struct ndr_pull *ndr, int flags, struct svcctl_QueryServiceConfig2W *r)
5032 TALLOC_CTX *_mem_save_handle_0;
5033 TALLOC_CTX *_mem_save_bytes_needed_0;
5034 if (flags & NDR_IN) {
5035 ZERO_STRUCT(r->out);
5037 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
5038 NDR_PULL_ALLOC(ndr, r->in.handle);
5040 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
5041 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
5042 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
5043 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
5044 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.info_level));
5045 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.buf_size));
5046 NDR_PULL_ALLOC(ndr, r->out.bytes_needed);
5047 ZERO_STRUCTP(r->out.bytes_needed);
5049 if (flags & NDR_OUT) {
5050 NDR_PULL_ALLOC_N(ndr, r->out.buffer, r->in.buf_size);
5051 NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->out.buffer, r->in.buf_size));
5052 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
5053 NDR_PULL_ALLOC(ndr, r->out.bytes_needed);
5055 _mem_save_bytes_needed_0 = NDR_PULL_GET_MEM_CTX(ndr);
5056 NDR_PULL_SET_MEM_CTX(ndr, r->out.bytes_needed, LIBNDR_FLAG_REF_ALLOC);
5057 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.bytes_needed));
5058 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_bytes_needed_0, LIBNDR_FLAG_REF_ALLOC);
5059 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
5061 return NDR_ERR_SUCCESS;
5064 _PUBLIC_ void ndr_print_svcctl_QueryServiceConfig2W(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_QueryServiceConfig2W *r)
5066 ndr_print_struct(ndr, name, "svcctl_QueryServiceConfig2W");
5067 ndr->depth++;
5068 if (flags & NDR_SET_VALUES) {
5069 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
5071 if (flags & NDR_IN) {
5072 ndr_print_struct(ndr, "in", "svcctl_QueryServiceConfig2W");
5073 ndr->depth++;
5074 ndr_print_ptr(ndr, "handle", r->in.handle);
5075 ndr->depth++;
5076 ndr_print_policy_handle(ndr, "handle", r->in.handle);
5077 ndr->depth--;
5078 ndr_print_uint32(ndr, "info_level", r->in.info_level);
5079 ndr_print_uint32(ndr, "buf_size", r->in.buf_size);
5080 ndr->depth--;
5082 if (flags & NDR_OUT) {
5083 ndr_print_struct(ndr, "out", "svcctl_QueryServiceConfig2W");
5084 ndr->depth++;
5085 ndr_print_array_uint8(ndr, "buffer", r->out.buffer, r->in.buf_size);
5086 ndr_print_ptr(ndr, "bytes_needed", r->out.bytes_needed);
5087 ndr->depth++;
5088 ndr_print_uint32(ndr, "bytes_needed", *r->out.bytes_needed);
5089 ndr->depth--;
5090 ndr_print_WERROR(ndr, "result", r->out.result);
5091 ndr->depth--;
5093 ndr->depth--;
5096 static enum ndr_err_code ndr_push_svcctl_QueryServiceStatusEx(struct ndr_push *ndr, int flags, const struct svcctl_QueryServiceStatusEx *r)
5098 if (flags & NDR_IN) {
5099 if (r->in.handle == NULL) {
5100 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
5102 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
5103 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.info_level));
5104 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.buf_size));
5106 if (flags & NDR_OUT) {
5107 NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->out.buffer, r->in.buf_size));
5108 if (r->out.bytes_needed == NULL) {
5109 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
5111 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.bytes_needed));
5112 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
5114 return NDR_ERR_SUCCESS;
5117 static enum ndr_err_code ndr_pull_svcctl_QueryServiceStatusEx(struct ndr_pull *ndr, int flags, struct svcctl_QueryServiceStatusEx *r)
5119 TALLOC_CTX *_mem_save_handle_0;
5120 TALLOC_CTX *_mem_save_bytes_needed_0;
5121 if (flags & NDR_IN) {
5122 ZERO_STRUCT(r->out);
5124 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
5125 NDR_PULL_ALLOC(ndr, r->in.handle);
5127 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
5128 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
5129 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
5130 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
5131 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.info_level));
5132 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.buf_size));
5133 NDR_PULL_ALLOC(ndr, r->out.bytes_needed);
5134 ZERO_STRUCTP(r->out.bytes_needed);
5136 if (flags & NDR_OUT) {
5137 NDR_PULL_ALLOC_N(ndr, r->out.buffer, r->in.buf_size);
5138 NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->out.buffer, r->in.buf_size));
5139 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
5140 NDR_PULL_ALLOC(ndr, r->out.bytes_needed);
5142 _mem_save_bytes_needed_0 = NDR_PULL_GET_MEM_CTX(ndr);
5143 NDR_PULL_SET_MEM_CTX(ndr, r->out.bytes_needed, LIBNDR_FLAG_REF_ALLOC);
5144 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.bytes_needed));
5145 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_bytes_needed_0, LIBNDR_FLAG_REF_ALLOC);
5146 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
5148 return NDR_ERR_SUCCESS;
5151 _PUBLIC_ void ndr_print_svcctl_QueryServiceStatusEx(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_QueryServiceStatusEx *r)
5153 ndr_print_struct(ndr, name, "svcctl_QueryServiceStatusEx");
5154 ndr->depth++;
5155 if (flags & NDR_SET_VALUES) {
5156 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
5158 if (flags & NDR_IN) {
5159 ndr_print_struct(ndr, "in", "svcctl_QueryServiceStatusEx");
5160 ndr->depth++;
5161 ndr_print_ptr(ndr, "handle", r->in.handle);
5162 ndr->depth++;
5163 ndr_print_policy_handle(ndr, "handle", r->in.handle);
5164 ndr->depth--;
5165 ndr_print_uint32(ndr, "info_level", r->in.info_level);
5166 ndr_print_uint32(ndr, "buf_size", r->in.buf_size);
5167 ndr->depth--;
5169 if (flags & NDR_OUT) {
5170 ndr_print_struct(ndr, "out", "svcctl_QueryServiceStatusEx");
5171 ndr->depth++;
5172 ndr_print_array_uint8(ndr, "buffer", r->out.buffer, r->in.buf_size);
5173 ndr_print_ptr(ndr, "bytes_needed", r->out.bytes_needed);
5174 ndr->depth++;
5175 ndr_print_uint32(ndr, "bytes_needed", *r->out.bytes_needed);
5176 ndr->depth--;
5177 ndr_print_WERROR(ndr, "result", r->out.result);
5178 ndr->depth--;
5180 ndr->depth--;
5183 static enum ndr_err_code ndr_push_EnumServicesStatusExA(struct ndr_push *ndr, int flags, const struct EnumServicesStatusExA *r)
5185 if (flags & NDR_IN) {
5186 if (r->in.scmanager == NULL) {
5187 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
5189 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.scmanager));
5190 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.info_level));
5191 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.type));
5192 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.state));
5193 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.buf_size));
5194 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.resume_handle));
5195 if (r->in.resume_handle) {
5196 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->in.resume_handle));
5199 if (flags & NDR_OUT) {
5200 NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->out.services, r->in.buf_size));
5201 if (r->out.bytes_needed == NULL) {
5202 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
5204 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.bytes_needed));
5205 if (r->out.service_returned == NULL) {
5206 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
5208 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.service_returned));
5209 NDR_CHECK(ndr_push_unique_ptr(ndr, r->out.resume_handle));
5210 if (r->out.resume_handle) {
5211 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.resume_handle));
5213 if (r->out.group_name == NULL) {
5214 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
5216 NDR_CHECK(ndr_push_unique_ptr(ndr, *r->out.group_name));
5217 if (*r->out.group_name) {
5218 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(*r->out.group_name, CH_UTF16)));
5219 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
5220 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(*r->out.group_name, CH_UTF16)));
5221 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));
5223 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
5225 return NDR_ERR_SUCCESS;
5228 static enum ndr_err_code ndr_pull_EnumServicesStatusExA(struct ndr_pull *ndr, int flags, struct EnumServicesStatusExA *r)
5230 uint32_t _ptr_resume_handle;
5231 uint32_t _ptr_group_name;
5232 TALLOC_CTX *_mem_save_scmanager_0;
5233 TALLOC_CTX *_mem_save_bytes_needed_0;
5234 TALLOC_CTX *_mem_save_service_returned_0;
5235 TALLOC_CTX *_mem_save_resume_handle_0;
5236 TALLOC_CTX *_mem_save_group_name_0;
5237 TALLOC_CTX *_mem_save_group_name_1;
5238 if (flags & NDR_IN) {
5239 ZERO_STRUCT(r->out);
5241 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
5242 NDR_PULL_ALLOC(ndr, r->in.scmanager);
5244 _mem_save_scmanager_0 = NDR_PULL_GET_MEM_CTX(ndr);
5245 NDR_PULL_SET_MEM_CTX(ndr, r->in.scmanager, LIBNDR_FLAG_REF_ALLOC);
5246 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.scmanager));
5247 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_scmanager_0, LIBNDR_FLAG_REF_ALLOC);
5248 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.info_level));
5249 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.type));
5250 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.state));
5251 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.buf_size));
5252 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_resume_handle));
5253 if (_ptr_resume_handle) {
5254 NDR_PULL_ALLOC(ndr, r->in.resume_handle);
5255 } else {
5256 r->in.resume_handle = NULL;
5258 if (r->in.resume_handle) {
5259 _mem_save_resume_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
5260 NDR_PULL_SET_MEM_CTX(ndr, r->in.resume_handle, 0);
5261 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->in.resume_handle));
5262 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_resume_handle_0, 0);
5264 NDR_PULL_ALLOC(ndr, r->out.bytes_needed);
5265 ZERO_STRUCTP(r->out.bytes_needed);
5266 NDR_PULL_ALLOC(ndr, r->out.service_returned);
5267 ZERO_STRUCTP(r->out.service_returned);
5268 NDR_PULL_ALLOC(ndr, r->out.group_name);
5269 ZERO_STRUCTP(r->out.group_name);
5271 if (flags & NDR_OUT) {
5272 NDR_PULL_ALLOC_N(ndr, r->out.services, r->in.buf_size);
5273 NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->out.services, r->in.buf_size));
5274 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
5275 NDR_PULL_ALLOC(ndr, r->out.bytes_needed);
5277 _mem_save_bytes_needed_0 = NDR_PULL_GET_MEM_CTX(ndr);
5278 NDR_PULL_SET_MEM_CTX(ndr, r->out.bytes_needed, LIBNDR_FLAG_REF_ALLOC);
5279 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.bytes_needed));
5280 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_bytes_needed_0, LIBNDR_FLAG_REF_ALLOC);
5281 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
5282 NDR_PULL_ALLOC(ndr, r->out.service_returned);
5284 _mem_save_service_returned_0 = NDR_PULL_GET_MEM_CTX(ndr);
5285 NDR_PULL_SET_MEM_CTX(ndr, r->out.service_returned, LIBNDR_FLAG_REF_ALLOC);
5286 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.service_returned));
5287 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_service_returned_0, LIBNDR_FLAG_REF_ALLOC);
5288 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_resume_handle));
5289 if (_ptr_resume_handle) {
5290 NDR_PULL_ALLOC(ndr, r->out.resume_handle);
5291 } else {
5292 r->out.resume_handle = NULL;
5294 if (r->out.resume_handle) {
5295 _mem_save_resume_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
5296 NDR_PULL_SET_MEM_CTX(ndr, r->out.resume_handle, 0);
5297 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.resume_handle));
5298 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_resume_handle_0, 0);
5300 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
5301 NDR_PULL_ALLOC(ndr, r->out.group_name);
5303 _mem_save_group_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
5304 NDR_PULL_SET_MEM_CTX(ndr, r->out.group_name, LIBNDR_FLAG_REF_ALLOC);
5305 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_group_name));
5306 if (_ptr_group_name) {
5307 NDR_PULL_ALLOC(ndr, *r->out.group_name);
5308 } else {
5309 *r->out.group_name = NULL;
5311 if (*r->out.group_name) {
5312 _mem_save_group_name_1 = NDR_PULL_GET_MEM_CTX(ndr);
5313 NDR_PULL_SET_MEM_CTX(ndr, *r->out.group_name, 0);
5314 NDR_CHECK(ndr_pull_array_size(ndr, r->out.group_name));
5315 NDR_CHECK(ndr_pull_array_length(ndr, r->out.group_name));
5316 if (ndr_get_array_length(ndr, r->out.group_name) > ndr_get_array_size(ndr, r->out.group_name)) {
5317 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));
5319 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, r->out.group_name), sizeof(uint16_t)));
5320 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));
5321 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_group_name_1, 0);
5323 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_group_name_0, LIBNDR_FLAG_REF_ALLOC);
5324 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
5326 return NDR_ERR_SUCCESS;
5329 _PUBLIC_ void ndr_print_EnumServicesStatusExA(struct ndr_print *ndr, const char *name, int flags, const struct EnumServicesStatusExA *r)
5331 ndr_print_struct(ndr, name, "EnumServicesStatusExA");
5332 ndr->depth++;
5333 if (flags & NDR_SET_VALUES) {
5334 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
5336 if (flags & NDR_IN) {
5337 ndr_print_struct(ndr, "in", "EnumServicesStatusExA");
5338 ndr->depth++;
5339 ndr_print_ptr(ndr, "scmanager", r->in.scmanager);
5340 ndr->depth++;
5341 ndr_print_policy_handle(ndr, "scmanager", r->in.scmanager);
5342 ndr->depth--;
5343 ndr_print_uint32(ndr, "info_level", r->in.info_level);
5344 ndr_print_uint32(ndr, "type", r->in.type);
5345 ndr_print_uint32(ndr, "state", r->in.state);
5346 ndr_print_uint32(ndr, "buf_size", r->in.buf_size);
5347 ndr_print_ptr(ndr, "resume_handle", r->in.resume_handle);
5348 ndr->depth++;
5349 if (r->in.resume_handle) {
5350 ndr_print_uint32(ndr, "resume_handle", *r->in.resume_handle);
5352 ndr->depth--;
5353 ndr->depth--;
5355 if (flags & NDR_OUT) {
5356 ndr_print_struct(ndr, "out", "EnumServicesStatusExA");
5357 ndr->depth++;
5358 ndr_print_array_uint8(ndr, "services", r->out.services, r->in.buf_size);
5359 ndr_print_ptr(ndr, "bytes_needed", r->out.bytes_needed);
5360 ndr->depth++;
5361 ndr_print_uint32(ndr, "bytes_needed", *r->out.bytes_needed);
5362 ndr->depth--;
5363 ndr_print_ptr(ndr, "service_returned", r->out.service_returned);
5364 ndr->depth++;
5365 ndr_print_uint32(ndr, "service_returned", *r->out.service_returned);
5366 ndr->depth--;
5367 ndr_print_ptr(ndr, "resume_handle", r->out.resume_handle);
5368 ndr->depth++;
5369 if (r->out.resume_handle) {
5370 ndr_print_uint32(ndr, "resume_handle", *r->out.resume_handle);
5372 ndr->depth--;
5373 ndr_print_ptr(ndr, "group_name", r->out.group_name);
5374 ndr->depth++;
5375 ndr_print_ptr(ndr, "group_name", *r->out.group_name);
5376 ndr->depth++;
5377 if (*r->out.group_name) {
5378 ndr_print_string(ndr, "group_name", *r->out.group_name);
5380 ndr->depth--;
5381 ndr->depth--;
5382 ndr_print_WERROR(ndr, "result", r->out.result);
5383 ndr->depth--;
5385 ndr->depth--;
5388 static enum ndr_err_code ndr_push_EnumServicesStatusExW(struct ndr_push *ndr, int flags, const struct EnumServicesStatusExW *r)
5390 if (flags & NDR_IN) {
5391 if (r->in.scmanager == NULL) {
5392 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
5394 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.scmanager));
5395 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.info_level));
5396 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.type));
5397 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.state));
5398 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.buf_size));
5399 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.resume_handle));
5400 if (r->in.resume_handle) {
5401 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->in.resume_handle));
5404 if (flags & NDR_OUT) {
5405 NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->out.services, r->in.buf_size));
5406 if (r->out.bytes_needed == NULL) {
5407 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
5409 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.bytes_needed));
5410 if (r->out.service_returned == NULL) {
5411 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
5413 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.service_returned));
5414 NDR_CHECK(ndr_push_unique_ptr(ndr, r->out.resume_handle));
5415 if (r->out.resume_handle) {
5416 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.resume_handle));
5418 if (r->out.group_name == NULL) {
5419 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
5421 NDR_CHECK(ndr_push_unique_ptr(ndr, *r->out.group_name));
5422 if (*r->out.group_name) {
5423 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(*r->out.group_name, CH_UTF16)));
5424 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
5425 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(*r->out.group_name, CH_UTF16)));
5426 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));
5428 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
5430 return NDR_ERR_SUCCESS;
5433 static enum ndr_err_code ndr_pull_EnumServicesStatusExW(struct ndr_pull *ndr, int flags, struct EnumServicesStatusExW *r)
5435 uint32_t _ptr_resume_handle;
5436 uint32_t _ptr_group_name;
5437 TALLOC_CTX *_mem_save_scmanager_0;
5438 TALLOC_CTX *_mem_save_bytes_needed_0;
5439 TALLOC_CTX *_mem_save_service_returned_0;
5440 TALLOC_CTX *_mem_save_resume_handle_0;
5441 TALLOC_CTX *_mem_save_group_name_0;
5442 TALLOC_CTX *_mem_save_group_name_1;
5443 if (flags & NDR_IN) {
5444 ZERO_STRUCT(r->out);
5446 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
5447 NDR_PULL_ALLOC(ndr, r->in.scmanager);
5449 _mem_save_scmanager_0 = NDR_PULL_GET_MEM_CTX(ndr);
5450 NDR_PULL_SET_MEM_CTX(ndr, r->in.scmanager, LIBNDR_FLAG_REF_ALLOC);
5451 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.scmanager));
5452 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_scmanager_0, LIBNDR_FLAG_REF_ALLOC);
5453 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.info_level));
5454 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.type));
5455 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.state));
5456 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.buf_size));
5457 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_resume_handle));
5458 if (_ptr_resume_handle) {
5459 NDR_PULL_ALLOC(ndr, r->in.resume_handle);
5460 } else {
5461 r->in.resume_handle = NULL;
5463 if (r->in.resume_handle) {
5464 _mem_save_resume_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
5465 NDR_PULL_SET_MEM_CTX(ndr, r->in.resume_handle, 0);
5466 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->in.resume_handle));
5467 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_resume_handle_0, 0);
5469 NDR_PULL_ALLOC(ndr, r->out.bytes_needed);
5470 ZERO_STRUCTP(r->out.bytes_needed);
5471 NDR_PULL_ALLOC(ndr, r->out.service_returned);
5472 ZERO_STRUCTP(r->out.service_returned);
5473 NDR_PULL_ALLOC(ndr, r->out.group_name);
5474 ZERO_STRUCTP(r->out.group_name);
5476 if (flags & NDR_OUT) {
5477 NDR_PULL_ALLOC_N(ndr, r->out.services, r->in.buf_size);
5478 NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->out.services, r->in.buf_size));
5479 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
5480 NDR_PULL_ALLOC(ndr, r->out.bytes_needed);
5482 _mem_save_bytes_needed_0 = NDR_PULL_GET_MEM_CTX(ndr);
5483 NDR_PULL_SET_MEM_CTX(ndr, r->out.bytes_needed, LIBNDR_FLAG_REF_ALLOC);
5484 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.bytes_needed));
5485 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_bytes_needed_0, LIBNDR_FLAG_REF_ALLOC);
5486 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
5487 NDR_PULL_ALLOC(ndr, r->out.service_returned);
5489 _mem_save_service_returned_0 = NDR_PULL_GET_MEM_CTX(ndr);
5490 NDR_PULL_SET_MEM_CTX(ndr, r->out.service_returned, LIBNDR_FLAG_REF_ALLOC);
5491 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.service_returned));
5492 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_service_returned_0, LIBNDR_FLAG_REF_ALLOC);
5493 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_resume_handle));
5494 if (_ptr_resume_handle) {
5495 NDR_PULL_ALLOC(ndr, r->out.resume_handle);
5496 } else {
5497 r->out.resume_handle = NULL;
5499 if (r->out.resume_handle) {
5500 _mem_save_resume_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
5501 NDR_PULL_SET_MEM_CTX(ndr, r->out.resume_handle, 0);
5502 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.resume_handle));
5503 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_resume_handle_0, 0);
5505 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
5506 NDR_PULL_ALLOC(ndr, r->out.group_name);
5508 _mem_save_group_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
5509 NDR_PULL_SET_MEM_CTX(ndr, r->out.group_name, LIBNDR_FLAG_REF_ALLOC);
5510 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_group_name));
5511 if (_ptr_group_name) {
5512 NDR_PULL_ALLOC(ndr, *r->out.group_name);
5513 } else {
5514 *r->out.group_name = NULL;
5516 if (*r->out.group_name) {
5517 _mem_save_group_name_1 = NDR_PULL_GET_MEM_CTX(ndr);
5518 NDR_PULL_SET_MEM_CTX(ndr, *r->out.group_name, 0);
5519 NDR_CHECK(ndr_pull_array_size(ndr, r->out.group_name));
5520 NDR_CHECK(ndr_pull_array_length(ndr, r->out.group_name));
5521 if (ndr_get_array_length(ndr, r->out.group_name) > ndr_get_array_size(ndr, r->out.group_name)) {
5522 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));
5524 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, r->out.group_name), sizeof(uint16_t)));
5525 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));
5526 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_group_name_1, 0);
5528 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_group_name_0, LIBNDR_FLAG_REF_ALLOC);
5529 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
5531 return NDR_ERR_SUCCESS;
5534 _PUBLIC_ void ndr_print_EnumServicesStatusExW(struct ndr_print *ndr, const char *name, int flags, const struct EnumServicesStatusExW *r)
5536 ndr_print_struct(ndr, name, "EnumServicesStatusExW");
5537 ndr->depth++;
5538 if (flags & NDR_SET_VALUES) {
5539 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
5541 if (flags & NDR_IN) {
5542 ndr_print_struct(ndr, "in", "EnumServicesStatusExW");
5543 ndr->depth++;
5544 ndr_print_ptr(ndr, "scmanager", r->in.scmanager);
5545 ndr->depth++;
5546 ndr_print_policy_handle(ndr, "scmanager", r->in.scmanager);
5547 ndr->depth--;
5548 ndr_print_uint32(ndr, "info_level", r->in.info_level);
5549 ndr_print_uint32(ndr, "type", r->in.type);
5550 ndr_print_uint32(ndr, "state", r->in.state);
5551 ndr_print_uint32(ndr, "buf_size", r->in.buf_size);
5552 ndr_print_ptr(ndr, "resume_handle", r->in.resume_handle);
5553 ndr->depth++;
5554 if (r->in.resume_handle) {
5555 ndr_print_uint32(ndr, "resume_handle", *r->in.resume_handle);
5557 ndr->depth--;
5558 ndr->depth--;
5560 if (flags & NDR_OUT) {
5561 ndr_print_struct(ndr, "out", "EnumServicesStatusExW");
5562 ndr->depth++;
5563 ndr_print_array_uint8(ndr, "services", r->out.services, r->in.buf_size);
5564 ndr_print_ptr(ndr, "bytes_needed", r->out.bytes_needed);
5565 ndr->depth++;
5566 ndr_print_uint32(ndr, "bytes_needed", *r->out.bytes_needed);
5567 ndr->depth--;
5568 ndr_print_ptr(ndr, "service_returned", r->out.service_returned);
5569 ndr->depth++;
5570 ndr_print_uint32(ndr, "service_returned", *r->out.service_returned);
5571 ndr->depth--;
5572 ndr_print_ptr(ndr, "resume_handle", r->out.resume_handle);
5573 ndr->depth++;
5574 if (r->out.resume_handle) {
5575 ndr_print_uint32(ndr, "resume_handle", *r->out.resume_handle);
5577 ndr->depth--;
5578 ndr_print_ptr(ndr, "group_name", r->out.group_name);
5579 ndr->depth++;
5580 ndr_print_ptr(ndr, "group_name", *r->out.group_name);
5581 ndr->depth++;
5582 if (*r->out.group_name) {
5583 ndr_print_string(ndr, "group_name", *r->out.group_name);
5585 ndr->depth--;
5586 ndr->depth--;
5587 ndr_print_WERROR(ndr, "result", r->out.result);
5588 ndr->depth--;
5590 ndr->depth--;
5593 static enum ndr_err_code ndr_push_svcctl_SCSendTSMessage(struct ndr_push *ndr, int flags, const struct svcctl_SCSendTSMessage *r)
5595 if (flags & NDR_IN) {
5597 if (flags & NDR_OUT) {
5598 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
5600 return NDR_ERR_SUCCESS;
5603 static enum ndr_err_code ndr_pull_svcctl_SCSendTSMessage(struct ndr_pull *ndr, int flags, struct svcctl_SCSendTSMessage *r)
5605 if (flags & NDR_IN) {
5607 if (flags & NDR_OUT) {
5608 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
5610 return NDR_ERR_SUCCESS;
5613 _PUBLIC_ void ndr_print_svcctl_SCSendTSMessage(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_SCSendTSMessage *r)
5615 ndr_print_struct(ndr, name, "svcctl_SCSendTSMessage");
5616 ndr->depth++;
5617 if (flags & NDR_SET_VALUES) {
5618 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
5620 if (flags & NDR_IN) {
5621 ndr_print_struct(ndr, "in", "svcctl_SCSendTSMessage");
5622 ndr->depth++;
5623 ndr->depth--;
5625 if (flags & NDR_OUT) {
5626 ndr_print_struct(ndr, "out", "svcctl_SCSendTSMessage");
5627 ndr->depth++;
5628 ndr_print_WERROR(ndr, "result", r->out.result);
5629 ndr->depth--;
5631 ndr->depth--;
5634 static const struct ndr_interface_call svcctl_calls[] = {
5636 "svcctl_CloseServiceHandle",
5637 sizeof(struct svcctl_CloseServiceHandle),
5638 (ndr_push_flags_fn_t) ndr_push_svcctl_CloseServiceHandle,
5639 (ndr_pull_flags_fn_t) ndr_pull_svcctl_CloseServiceHandle,
5640 (ndr_print_function_t) ndr_print_svcctl_CloseServiceHandle,
5641 false,
5644 "svcctl_ControlService",
5645 sizeof(struct svcctl_ControlService),
5646 (ndr_push_flags_fn_t) ndr_push_svcctl_ControlService,
5647 (ndr_pull_flags_fn_t) ndr_pull_svcctl_ControlService,
5648 (ndr_print_function_t) ndr_print_svcctl_ControlService,
5649 false,
5652 "svcctl_DeleteService",
5653 sizeof(struct svcctl_DeleteService),
5654 (ndr_push_flags_fn_t) ndr_push_svcctl_DeleteService,
5655 (ndr_pull_flags_fn_t) ndr_pull_svcctl_DeleteService,
5656 (ndr_print_function_t) ndr_print_svcctl_DeleteService,
5657 false,
5660 "svcctl_LockServiceDatabase",
5661 sizeof(struct svcctl_LockServiceDatabase),
5662 (ndr_push_flags_fn_t) ndr_push_svcctl_LockServiceDatabase,
5663 (ndr_pull_flags_fn_t) ndr_pull_svcctl_LockServiceDatabase,
5664 (ndr_print_function_t) ndr_print_svcctl_LockServiceDatabase,
5665 false,
5668 "svcctl_QueryServiceObjectSecurity",
5669 sizeof(struct svcctl_QueryServiceObjectSecurity),
5670 (ndr_push_flags_fn_t) ndr_push_svcctl_QueryServiceObjectSecurity,
5671 (ndr_pull_flags_fn_t) ndr_pull_svcctl_QueryServiceObjectSecurity,
5672 (ndr_print_function_t) ndr_print_svcctl_QueryServiceObjectSecurity,
5673 false,
5676 "svcctl_SetServiceObjectSecurity",
5677 sizeof(struct svcctl_SetServiceObjectSecurity),
5678 (ndr_push_flags_fn_t) ndr_push_svcctl_SetServiceObjectSecurity,
5679 (ndr_pull_flags_fn_t) ndr_pull_svcctl_SetServiceObjectSecurity,
5680 (ndr_print_function_t) ndr_print_svcctl_SetServiceObjectSecurity,
5681 false,
5684 "svcctl_QueryServiceStatus",
5685 sizeof(struct svcctl_QueryServiceStatus),
5686 (ndr_push_flags_fn_t) ndr_push_svcctl_QueryServiceStatus,
5687 (ndr_pull_flags_fn_t) ndr_pull_svcctl_QueryServiceStatus,
5688 (ndr_print_function_t) ndr_print_svcctl_QueryServiceStatus,
5689 false,
5692 "svcctl_SetServiceStatus",
5693 sizeof(struct svcctl_SetServiceStatus),
5694 (ndr_push_flags_fn_t) ndr_push_svcctl_SetServiceStatus,
5695 (ndr_pull_flags_fn_t) ndr_pull_svcctl_SetServiceStatus,
5696 (ndr_print_function_t) ndr_print_svcctl_SetServiceStatus,
5697 false,
5700 "svcctl_UnlockServiceDatabase",
5701 sizeof(struct svcctl_UnlockServiceDatabase),
5702 (ndr_push_flags_fn_t) ndr_push_svcctl_UnlockServiceDatabase,
5703 (ndr_pull_flags_fn_t) ndr_pull_svcctl_UnlockServiceDatabase,
5704 (ndr_print_function_t) ndr_print_svcctl_UnlockServiceDatabase,
5705 false,
5708 "svcctl_NotifyBootConfigStatus",
5709 sizeof(struct svcctl_NotifyBootConfigStatus),
5710 (ndr_push_flags_fn_t) ndr_push_svcctl_NotifyBootConfigStatus,
5711 (ndr_pull_flags_fn_t) ndr_pull_svcctl_NotifyBootConfigStatus,
5712 (ndr_print_function_t) ndr_print_svcctl_NotifyBootConfigStatus,
5713 false,
5716 "svcctl_SCSetServiceBitsW",
5717 sizeof(struct svcctl_SCSetServiceBitsW),
5718 (ndr_push_flags_fn_t) ndr_push_svcctl_SCSetServiceBitsW,
5719 (ndr_pull_flags_fn_t) ndr_pull_svcctl_SCSetServiceBitsW,
5720 (ndr_print_function_t) ndr_print_svcctl_SCSetServiceBitsW,
5721 false,
5724 "svcctl_ChangeServiceConfigW",
5725 sizeof(struct svcctl_ChangeServiceConfigW),
5726 (ndr_push_flags_fn_t) ndr_push_svcctl_ChangeServiceConfigW,
5727 (ndr_pull_flags_fn_t) ndr_pull_svcctl_ChangeServiceConfigW,
5728 (ndr_print_function_t) ndr_print_svcctl_ChangeServiceConfigW,
5729 false,
5732 "svcctl_CreateServiceW",
5733 sizeof(struct svcctl_CreateServiceW),
5734 (ndr_push_flags_fn_t) ndr_push_svcctl_CreateServiceW,
5735 (ndr_pull_flags_fn_t) ndr_pull_svcctl_CreateServiceW,
5736 (ndr_print_function_t) ndr_print_svcctl_CreateServiceW,
5737 false,
5740 "svcctl_EnumDependentServicesW",
5741 sizeof(struct svcctl_EnumDependentServicesW),
5742 (ndr_push_flags_fn_t) ndr_push_svcctl_EnumDependentServicesW,
5743 (ndr_pull_flags_fn_t) ndr_pull_svcctl_EnumDependentServicesW,
5744 (ndr_print_function_t) ndr_print_svcctl_EnumDependentServicesW,
5745 false,
5748 "svcctl_EnumServicesStatusW",
5749 sizeof(struct svcctl_EnumServicesStatusW),
5750 (ndr_push_flags_fn_t) ndr_push_svcctl_EnumServicesStatusW,
5751 (ndr_pull_flags_fn_t) ndr_pull_svcctl_EnumServicesStatusW,
5752 (ndr_print_function_t) ndr_print_svcctl_EnumServicesStatusW,
5753 false,
5756 "svcctl_OpenSCManagerW",
5757 sizeof(struct svcctl_OpenSCManagerW),
5758 (ndr_push_flags_fn_t) ndr_push_svcctl_OpenSCManagerW,
5759 (ndr_pull_flags_fn_t) ndr_pull_svcctl_OpenSCManagerW,
5760 (ndr_print_function_t) ndr_print_svcctl_OpenSCManagerW,
5761 false,
5764 "svcctl_OpenServiceW",
5765 sizeof(struct svcctl_OpenServiceW),
5766 (ndr_push_flags_fn_t) ndr_push_svcctl_OpenServiceW,
5767 (ndr_pull_flags_fn_t) ndr_pull_svcctl_OpenServiceW,
5768 (ndr_print_function_t) ndr_print_svcctl_OpenServiceW,
5769 false,
5772 "svcctl_QueryServiceConfigW",
5773 sizeof(struct svcctl_QueryServiceConfigW),
5774 (ndr_push_flags_fn_t) ndr_push_svcctl_QueryServiceConfigW,
5775 (ndr_pull_flags_fn_t) ndr_pull_svcctl_QueryServiceConfigW,
5776 (ndr_print_function_t) ndr_print_svcctl_QueryServiceConfigW,
5777 false,
5780 "svcctl_QueryServiceLockStatusW",
5781 sizeof(struct svcctl_QueryServiceLockStatusW),
5782 (ndr_push_flags_fn_t) ndr_push_svcctl_QueryServiceLockStatusW,
5783 (ndr_pull_flags_fn_t) ndr_pull_svcctl_QueryServiceLockStatusW,
5784 (ndr_print_function_t) ndr_print_svcctl_QueryServiceLockStatusW,
5785 false,
5788 "svcctl_StartServiceW",
5789 sizeof(struct svcctl_StartServiceW),
5790 (ndr_push_flags_fn_t) ndr_push_svcctl_StartServiceW,
5791 (ndr_pull_flags_fn_t) ndr_pull_svcctl_StartServiceW,
5792 (ndr_print_function_t) ndr_print_svcctl_StartServiceW,
5793 false,
5796 "svcctl_GetServiceDisplayNameW",
5797 sizeof(struct svcctl_GetServiceDisplayNameW),
5798 (ndr_push_flags_fn_t) ndr_push_svcctl_GetServiceDisplayNameW,
5799 (ndr_pull_flags_fn_t) ndr_pull_svcctl_GetServiceDisplayNameW,
5800 (ndr_print_function_t) ndr_print_svcctl_GetServiceDisplayNameW,
5801 false,
5804 "svcctl_GetServiceKeyNameW",
5805 sizeof(struct svcctl_GetServiceKeyNameW),
5806 (ndr_push_flags_fn_t) ndr_push_svcctl_GetServiceKeyNameW,
5807 (ndr_pull_flags_fn_t) ndr_pull_svcctl_GetServiceKeyNameW,
5808 (ndr_print_function_t) ndr_print_svcctl_GetServiceKeyNameW,
5809 false,
5812 "svcctl_SCSetServiceBitsA",
5813 sizeof(struct svcctl_SCSetServiceBitsA),
5814 (ndr_push_flags_fn_t) ndr_push_svcctl_SCSetServiceBitsA,
5815 (ndr_pull_flags_fn_t) ndr_pull_svcctl_SCSetServiceBitsA,
5816 (ndr_print_function_t) ndr_print_svcctl_SCSetServiceBitsA,
5817 false,
5820 "svcctl_ChangeServiceConfigA",
5821 sizeof(struct svcctl_ChangeServiceConfigA),
5822 (ndr_push_flags_fn_t) ndr_push_svcctl_ChangeServiceConfigA,
5823 (ndr_pull_flags_fn_t) ndr_pull_svcctl_ChangeServiceConfigA,
5824 (ndr_print_function_t) ndr_print_svcctl_ChangeServiceConfigA,
5825 false,
5828 "svcctl_CreateServiceA",
5829 sizeof(struct svcctl_CreateServiceA),
5830 (ndr_push_flags_fn_t) ndr_push_svcctl_CreateServiceA,
5831 (ndr_pull_flags_fn_t) ndr_pull_svcctl_CreateServiceA,
5832 (ndr_print_function_t) ndr_print_svcctl_CreateServiceA,
5833 false,
5836 "svcctl_EnumDependentServicesA",
5837 sizeof(struct svcctl_EnumDependentServicesA),
5838 (ndr_push_flags_fn_t) ndr_push_svcctl_EnumDependentServicesA,
5839 (ndr_pull_flags_fn_t) ndr_pull_svcctl_EnumDependentServicesA,
5840 (ndr_print_function_t) ndr_print_svcctl_EnumDependentServicesA,
5841 false,
5844 "svcctl_EnumServicesStatusA",
5845 sizeof(struct svcctl_EnumServicesStatusA),
5846 (ndr_push_flags_fn_t) ndr_push_svcctl_EnumServicesStatusA,
5847 (ndr_pull_flags_fn_t) ndr_pull_svcctl_EnumServicesStatusA,
5848 (ndr_print_function_t) ndr_print_svcctl_EnumServicesStatusA,
5849 false,
5852 "svcctl_OpenSCManagerA",
5853 sizeof(struct svcctl_OpenSCManagerA),
5854 (ndr_push_flags_fn_t) ndr_push_svcctl_OpenSCManagerA,
5855 (ndr_pull_flags_fn_t) ndr_pull_svcctl_OpenSCManagerA,
5856 (ndr_print_function_t) ndr_print_svcctl_OpenSCManagerA,
5857 false,
5860 "svcctl_OpenServiceA",
5861 sizeof(struct svcctl_OpenServiceA),
5862 (ndr_push_flags_fn_t) ndr_push_svcctl_OpenServiceA,
5863 (ndr_pull_flags_fn_t) ndr_pull_svcctl_OpenServiceA,
5864 (ndr_print_function_t) ndr_print_svcctl_OpenServiceA,
5865 false,
5868 "svcctl_QueryServiceConfigA",
5869 sizeof(struct svcctl_QueryServiceConfigA),
5870 (ndr_push_flags_fn_t) ndr_push_svcctl_QueryServiceConfigA,
5871 (ndr_pull_flags_fn_t) ndr_pull_svcctl_QueryServiceConfigA,
5872 (ndr_print_function_t) ndr_print_svcctl_QueryServiceConfigA,
5873 false,
5876 "svcctl_QueryServiceLockStatusA",
5877 sizeof(struct svcctl_QueryServiceLockStatusA),
5878 (ndr_push_flags_fn_t) ndr_push_svcctl_QueryServiceLockStatusA,
5879 (ndr_pull_flags_fn_t) ndr_pull_svcctl_QueryServiceLockStatusA,
5880 (ndr_print_function_t) ndr_print_svcctl_QueryServiceLockStatusA,
5881 false,
5884 "svcctl_StartServiceA",
5885 sizeof(struct svcctl_StartServiceA),
5886 (ndr_push_flags_fn_t) ndr_push_svcctl_StartServiceA,
5887 (ndr_pull_flags_fn_t) ndr_pull_svcctl_StartServiceA,
5888 (ndr_print_function_t) ndr_print_svcctl_StartServiceA,
5889 false,
5892 "svcctl_GetServiceDisplayNameA",
5893 sizeof(struct svcctl_GetServiceDisplayNameA),
5894 (ndr_push_flags_fn_t) ndr_push_svcctl_GetServiceDisplayNameA,
5895 (ndr_pull_flags_fn_t) ndr_pull_svcctl_GetServiceDisplayNameA,
5896 (ndr_print_function_t) ndr_print_svcctl_GetServiceDisplayNameA,
5897 false,
5900 "svcctl_GetServiceKeyNameA",
5901 sizeof(struct svcctl_GetServiceKeyNameA),
5902 (ndr_push_flags_fn_t) ndr_push_svcctl_GetServiceKeyNameA,
5903 (ndr_pull_flags_fn_t) ndr_pull_svcctl_GetServiceKeyNameA,
5904 (ndr_print_function_t) ndr_print_svcctl_GetServiceKeyNameA,
5905 false,
5908 "svcctl_GetCurrentGroupeStateW",
5909 sizeof(struct svcctl_GetCurrentGroupeStateW),
5910 (ndr_push_flags_fn_t) ndr_push_svcctl_GetCurrentGroupeStateW,
5911 (ndr_pull_flags_fn_t) ndr_pull_svcctl_GetCurrentGroupeStateW,
5912 (ndr_print_function_t) ndr_print_svcctl_GetCurrentGroupeStateW,
5913 false,
5916 "svcctl_EnumServiceGroupW",
5917 sizeof(struct svcctl_EnumServiceGroupW),
5918 (ndr_push_flags_fn_t) ndr_push_svcctl_EnumServiceGroupW,
5919 (ndr_pull_flags_fn_t) ndr_pull_svcctl_EnumServiceGroupW,
5920 (ndr_print_function_t) ndr_print_svcctl_EnumServiceGroupW,
5921 false,
5924 "svcctl_ChangeServiceConfig2A",
5925 sizeof(struct svcctl_ChangeServiceConfig2A),
5926 (ndr_push_flags_fn_t) ndr_push_svcctl_ChangeServiceConfig2A,
5927 (ndr_pull_flags_fn_t) ndr_pull_svcctl_ChangeServiceConfig2A,
5928 (ndr_print_function_t) ndr_print_svcctl_ChangeServiceConfig2A,
5929 false,
5932 "svcctl_ChangeServiceConfig2W",
5933 sizeof(struct svcctl_ChangeServiceConfig2W),
5934 (ndr_push_flags_fn_t) ndr_push_svcctl_ChangeServiceConfig2W,
5935 (ndr_pull_flags_fn_t) ndr_pull_svcctl_ChangeServiceConfig2W,
5936 (ndr_print_function_t) ndr_print_svcctl_ChangeServiceConfig2W,
5937 false,
5940 "svcctl_QueryServiceConfig2A",
5941 sizeof(struct svcctl_QueryServiceConfig2A),
5942 (ndr_push_flags_fn_t) ndr_push_svcctl_QueryServiceConfig2A,
5943 (ndr_pull_flags_fn_t) ndr_pull_svcctl_QueryServiceConfig2A,
5944 (ndr_print_function_t) ndr_print_svcctl_QueryServiceConfig2A,
5945 false,
5948 "svcctl_QueryServiceConfig2W",
5949 sizeof(struct svcctl_QueryServiceConfig2W),
5950 (ndr_push_flags_fn_t) ndr_push_svcctl_QueryServiceConfig2W,
5951 (ndr_pull_flags_fn_t) ndr_pull_svcctl_QueryServiceConfig2W,
5952 (ndr_print_function_t) ndr_print_svcctl_QueryServiceConfig2W,
5953 false,
5956 "svcctl_QueryServiceStatusEx",
5957 sizeof(struct svcctl_QueryServiceStatusEx),
5958 (ndr_push_flags_fn_t) ndr_push_svcctl_QueryServiceStatusEx,
5959 (ndr_pull_flags_fn_t) ndr_pull_svcctl_QueryServiceStatusEx,
5960 (ndr_print_function_t) ndr_print_svcctl_QueryServiceStatusEx,
5961 false,
5964 "EnumServicesStatusExA",
5965 sizeof(struct EnumServicesStatusExA),
5966 (ndr_push_flags_fn_t) ndr_push_EnumServicesStatusExA,
5967 (ndr_pull_flags_fn_t) ndr_pull_EnumServicesStatusExA,
5968 (ndr_print_function_t) ndr_print_EnumServicesStatusExA,
5969 false,
5972 "EnumServicesStatusExW",
5973 sizeof(struct EnumServicesStatusExW),
5974 (ndr_push_flags_fn_t) ndr_push_EnumServicesStatusExW,
5975 (ndr_pull_flags_fn_t) ndr_pull_EnumServicesStatusExW,
5976 (ndr_print_function_t) ndr_print_EnumServicesStatusExW,
5977 false,
5980 "svcctl_SCSendTSMessage",
5981 sizeof(struct svcctl_SCSendTSMessage),
5982 (ndr_push_flags_fn_t) ndr_push_svcctl_SCSendTSMessage,
5983 (ndr_pull_flags_fn_t) ndr_pull_svcctl_SCSendTSMessage,
5984 (ndr_print_function_t) ndr_print_svcctl_SCSendTSMessage,
5985 false,
5987 { NULL, 0, NULL, NULL, NULL, false }
5990 static const char * const svcctl_endpoint_strings[] = {
5991 "ncacn_np:[\\pipe\\svcctl]",
5992 "ncalrpc:",
5995 static const struct ndr_interface_string_array svcctl_endpoints = {
5996 .count = 2,
5997 .names = svcctl_endpoint_strings
6000 static const char * const svcctl_authservice_strings[] = {
6001 "host",
6004 static const struct ndr_interface_string_array svcctl_authservices = {
6005 .count = 1,
6006 .names = svcctl_authservice_strings
6010 const struct ndr_interface_table ndr_table_svcctl = {
6011 .name = "svcctl",
6012 .syntax_id = {
6013 {0x367abb81,0x9844,0x35f1,{0xad,0x32},{0x98,0xf0,0x38,0x00,0x10,0x03}},
6014 NDR_SVCCTL_VERSION
6016 .helpstring = NDR_SVCCTL_HELPSTRING,
6017 .num_calls = 44,
6018 .calls = svcctl_calls,
6019 .endpoints = &svcctl_endpoints,
6020 .authservices = &svcctl_authservices