s3: re-run make samba3-idl.
[Samba.git] / librpc / gen_ndr / ndr_svcctl.c
blob54c49adef4714b9df592abfec86ff9fabc70f0db
1 /* parser auto-generated by pidl */
3 #include "includes.h"
4 #include "../librpc/gen_ndr/ndr_svcctl.h"
6 #include "librpc/gen_ndr/ndr_misc.h"
7 #include "librpc/gen_ndr/ndr_security.h"
8 static enum ndr_err_code ndr_push_SERVICE_LOCK_STATUS(struct ndr_push *ndr, int ndr_flags, const struct SERVICE_LOCK_STATUS *r)
10 if (ndr_flags & NDR_SCALARS) {
11 NDR_CHECK(ndr_push_align(ndr, 4));
12 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->is_locked));
13 NDR_CHECK(ndr_push_unique_ptr(ndr, r->lock_owner));
14 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->lock_duration));
16 if (ndr_flags & NDR_BUFFERS) {
17 if (r->lock_owner) {
18 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->lock_owner, CH_UTF16)));
19 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
20 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->lock_owner, CH_UTF16)));
21 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->lock_owner, ndr_charset_length(r->lock_owner, CH_UTF16), sizeof(uint16_t), CH_UTF16));
24 return NDR_ERR_SUCCESS;
27 static enum ndr_err_code ndr_pull_SERVICE_LOCK_STATUS(struct ndr_pull *ndr, int ndr_flags, struct SERVICE_LOCK_STATUS *r)
29 uint32_t _ptr_lock_owner;
30 TALLOC_CTX *_mem_save_lock_owner_0;
31 if (ndr_flags & NDR_SCALARS) {
32 NDR_CHECK(ndr_pull_align(ndr, 4));
33 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->is_locked));
34 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_lock_owner));
35 if (_ptr_lock_owner) {
36 NDR_PULL_ALLOC(ndr, r->lock_owner);
37 } else {
38 r->lock_owner = NULL;
40 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->lock_duration));
42 if (ndr_flags & NDR_BUFFERS) {
43 if (r->lock_owner) {
44 _mem_save_lock_owner_0 = NDR_PULL_GET_MEM_CTX(ndr);
45 NDR_PULL_SET_MEM_CTX(ndr, r->lock_owner, 0);
46 NDR_CHECK(ndr_pull_array_size(ndr, &r->lock_owner));
47 NDR_CHECK(ndr_pull_array_length(ndr, &r->lock_owner));
48 if (ndr_get_array_length(ndr, &r->lock_owner) > ndr_get_array_size(ndr, &r->lock_owner)) {
49 return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->lock_owner), ndr_get_array_length(ndr, &r->lock_owner));
51 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->lock_owner), sizeof(uint16_t)));
52 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->lock_owner, ndr_get_array_length(ndr, &r->lock_owner), sizeof(uint16_t), CH_UTF16));
53 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_lock_owner_0, 0);
56 return NDR_ERR_SUCCESS;
59 _PUBLIC_ void ndr_print_SERVICE_LOCK_STATUS(struct ndr_print *ndr, const char *name, const struct SERVICE_LOCK_STATUS *r)
61 ndr_print_struct(ndr, name, "SERVICE_LOCK_STATUS");
62 ndr->depth++;
63 ndr_print_uint32(ndr, "is_locked", r->is_locked);
64 ndr_print_ptr(ndr, "lock_owner", r->lock_owner);
65 ndr->depth++;
66 if (r->lock_owner) {
67 ndr_print_string(ndr, "lock_owner", r->lock_owner);
69 ndr->depth--;
70 ndr_print_uint32(ndr, "lock_duration", r->lock_duration);
71 ndr->depth--;
74 static enum ndr_err_code ndr_push_SERVICE_STATUS(struct ndr_push *ndr, int ndr_flags, const struct SERVICE_STATUS *r)
76 if (ndr_flags & NDR_SCALARS) {
77 NDR_CHECK(ndr_push_align(ndr, 4));
78 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->type));
79 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->state));
80 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->controls_accepted));
81 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->win32_exit_code));
82 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->service_exit_code));
83 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->check_point));
84 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->wait_hint));
86 if (ndr_flags & NDR_BUFFERS) {
88 return NDR_ERR_SUCCESS;
91 static enum ndr_err_code ndr_pull_SERVICE_STATUS(struct ndr_pull *ndr, int ndr_flags, struct SERVICE_STATUS *r)
93 if (ndr_flags & NDR_SCALARS) {
94 NDR_CHECK(ndr_pull_align(ndr, 4));
95 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->type));
96 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->state));
97 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->controls_accepted));
98 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->win32_exit_code));
99 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->service_exit_code));
100 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->check_point));
101 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->wait_hint));
103 if (ndr_flags & NDR_BUFFERS) {
105 return NDR_ERR_SUCCESS;
108 _PUBLIC_ void ndr_print_SERVICE_STATUS(struct ndr_print *ndr, const char *name, const struct SERVICE_STATUS *r)
110 ndr_print_struct(ndr, name, "SERVICE_STATUS");
111 ndr->depth++;
112 ndr_print_uint32(ndr, "type", r->type);
113 ndr_print_uint32(ndr, "state", r->state);
114 ndr_print_uint32(ndr, "controls_accepted", r->controls_accepted);
115 ndr_print_WERROR(ndr, "win32_exit_code", r->win32_exit_code);
116 ndr_print_uint32(ndr, "service_exit_code", r->service_exit_code);
117 ndr_print_uint32(ndr, "check_point", r->check_point);
118 ndr_print_uint32(ndr, "wait_hint", r->wait_hint);
119 ndr->depth--;
122 _PUBLIC_ enum ndr_err_code ndr_push_SERVICE_STATUS_PROCESS(struct ndr_push *ndr, int ndr_flags, const struct SERVICE_STATUS_PROCESS *r)
124 if (ndr_flags & NDR_SCALARS) {
125 NDR_CHECK(ndr_push_align(ndr, 4));
126 NDR_CHECK(ndr_push_SERVICE_STATUS(ndr, NDR_SCALARS, &r->status));
127 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->process_id));
128 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->service_flags));
130 if (ndr_flags & NDR_BUFFERS) {
132 return NDR_ERR_SUCCESS;
135 _PUBLIC_ enum ndr_err_code ndr_pull_SERVICE_STATUS_PROCESS(struct ndr_pull *ndr, int ndr_flags, struct SERVICE_STATUS_PROCESS *r)
137 if (ndr_flags & NDR_SCALARS) {
138 NDR_CHECK(ndr_pull_align(ndr, 4));
139 NDR_CHECK(ndr_pull_SERVICE_STATUS(ndr, NDR_SCALARS, &r->status));
140 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->process_id));
141 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->service_flags));
143 if (ndr_flags & NDR_BUFFERS) {
145 return NDR_ERR_SUCCESS;
148 _PUBLIC_ void ndr_print_SERVICE_STATUS_PROCESS(struct ndr_print *ndr, const char *name, const struct SERVICE_STATUS_PROCESS *r)
150 ndr_print_struct(ndr, name, "SERVICE_STATUS_PROCESS");
151 ndr->depth++;
152 ndr_print_SERVICE_STATUS(ndr, "status", &r->status);
153 ndr_print_uint32(ndr, "process_id", r->process_id);
154 ndr_print_uint32(ndr, "service_flags", r->service_flags);
155 ndr->depth--;
158 static enum ndr_err_code ndr_push_ENUM_SERVICE_STATUS(struct ndr_push *ndr, int ndr_flags, const struct ENUM_SERVICE_STATUS *r)
160 if (ndr_flags & NDR_SCALARS) {
161 NDR_CHECK(ndr_push_align(ndr, 4));
163 uint32_t _flags_save_string = ndr->flags;
164 ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_ASCII|LIBNDR_FLAG_STR_NULLTERM);
165 NDR_CHECK(ndr_push_relative_ptr1(ndr, r->service_name));
166 ndr->flags = _flags_save_string;
169 uint32_t _flags_save_string = ndr->flags;
170 ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_ASCII|LIBNDR_FLAG_STR_NULLTERM);
171 NDR_CHECK(ndr_push_relative_ptr1(ndr, r->display_name));
172 ndr->flags = _flags_save_string;
174 NDR_CHECK(ndr_push_SERVICE_STATUS(ndr, NDR_SCALARS, &r->status));
176 if (ndr_flags & NDR_BUFFERS) {
178 uint32_t _flags_save_string = ndr->flags;
179 ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_ASCII|LIBNDR_FLAG_STR_NULLTERM);
180 if (r->service_name) {
181 NDR_CHECK(ndr_push_relative_ptr2(ndr, r->service_name));
182 NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->service_name));
184 ndr->flags = _flags_save_string;
187 uint32_t _flags_save_string = ndr->flags;
188 ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_ASCII|LIBNDR_FLAG_STR_NULLTERM);
189 if (r->display_name) {
190 NDR_CHECK(ndr_push_relative_ptr2(ndr, r->display_name));
191 NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->display_name));
193 ndr->flags = _flags_save_string;
196 return NDR_ERR_SUCCESS;
199 static enum ndr_err_code ndr_pull_ENUM_SERVICE_STATUS(struct ndr_pull *ndr, int ndr_flags, struct ENUM_SERVICE_STATUS *r)
201 uint32_t _ptr_service_name;
202 TALLOC_CTX *_mem_save_service_name_0;
203 uint32_t _ptr_display_name;
204 TALLOC_CTX *_mem_save_display_name_0;
205 if (ndr_flags & NDR_SCALARS) {
206 NDR_CHECK(ndr_pull_align(ndr, 4));
208 uint32_t _flags_save_string = ndr->flags;
209 ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_ASCII|LIBNDR_FLAG_STR_NULLTERM);
210 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_service_name));
211 if (_ptr_service_name) {
212 NDR_PULL_ALLOC(ndr, r->service_name);
213 NDR_CHECK(ndr_pull_relative_ptr1(ndr, r->service_name, _ptr_service_name));
214 } else {
215 r->service_name = NULL;
217 ndr->flags = _flags_save_string;
220 uint32_t _flags_save_string = ndr->flags;
221 ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_ASCII|LIBNDR_FLAG_STR_NULLTERM);
222 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_display_name));
223 if (_ptr_display_name) {
224 NDR_PULL_ALLOC(ndr, r->display_name);
225 NDR_CHECK(ndr_pull_relative_ptr1(ndr, r->display_name, _ptr_display_name));
226 } else {
227 r->display_name = NULL;
229 ndr->flags = _flags_save_string;
231 NDR_CHECK(ndr_pull_SERVICE_STATUS(ndr, NDR_SCALARS, &r->status));
233 if (ndr_flags & NDR_BUFFERS) {
235 uint32_t _flags_save_string = ndr->flags;
236 ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_ASCII|LIBNDR_FLAG_STR_NULLTERM);
237 if (r->service_name) {
238 uint32_t _relative_save_offset;
239 _relative_save_offset = ndr->offset;
240 NDR_CHECK(ndr_pull_relative_ptr2(ndr, r->service_name));
241 _mem_save_service_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
242 NDR_PULL_SET_MEM_CTX(ndr, r->service_name, 0);
243 NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->service_name));
244 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_service_name_0, 0);
245 ndr->offset = _relative_save_offset;
247 ndr->flags = _flags_save_string;
250 uint32_t _flags_save_string = ndr->flags;
251 ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_ASCII|LIBNDR_FLAG_STR_NULLTERM);
252 if (r->display_name) {
253 uint32_t _relative_save_offset;
254 _relative_save_offset = ndr->offset;
255 NDR_CHECK(ndr_pull_relative_ptr2(ndr, r->display_name));
256 _mem_save_display_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
257 NDR_PULL_SET_MEM_CTX(ndr, r->display_name, 0);
258 NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->display_name));
259 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_display_name_0, 0);
260 ndr->offset = _relative_save_offset;
262 ndr->flags = _flags_save_string;
265 return NDR_ERR_SUCCESS;
268 _PUBLIC_ void ndr_print_ENUM_SERVICE_STATUS(struct ndr_print *ndr, const char *name, const struct ENUM_SERVICE_STATUS *r)
270 ndr_print_struct(ndr, name, "ENUM_SERVICE_STATUS");
271 ndr->depth++;
272 ndr_print_ptr(ndr, "service_name", r->service_name);
273 ndr->depth++;
274 if (r->service_name) {
275 ndr_print_string(ndr, "service_name", r->service_name);
277 ndr->depth--;
278 ndr_print_ptr(ndr, "display_name", r->display_name);
279 ndr->depth++;
280 if (r->display_name) {
281 ndr_print_string(ndr, "display_name", r->display_name);
283 ndr->depth--;
284 ndr_print_SERVICE_STATUS(ndr, "status", &r->status);
285 ndr->depth--;
288 _PUBLIC_ enum ndr_err_code ndr_push_svcctl_ServerType(struct ndr_push *ndr, int ndr_flags, uint32_t r)
290 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r));
291 return NDR_ERR_SUCCESS;
294 _PUBLIC_ enum ndr_err_code ndr_pull_svcctl_ServerType(struct ndr_pull *ndr, int ndr_flags, uint32_t *r)
296 uint32_t v;
297 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &v));
298 *r = v;
299 return NDR_ERR_SUCCESS;
302 _PUBLIC_ void ndr_print_svcctl_ServerType(struct ndr_print *ndr, const char *name, uint32_t r)
304 ndr_print_uint32(ndr, name, r);
305 ndr->depth++;
306 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_WORKSTATION", SV_TYPE_WORKSTATION, r);
307 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_SERVER", SV_TYPE_SERVER, r);
308 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_SQLSERVER", SV_TYPE_SQLSERVER, r);
309 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_DOMAIN_CTRL", SV_TYPE_DOMAIN_CTRL, r);
310 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_DOMAIN_BAKCTRL", SV_TYPE_DOMAIN_BAKCTRL, r);
311 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_TIME_SOURCE", SV_TYPE_TIME_SOURCE, r);
312 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_AFP", SV_TYPE_AFP, r);
313 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_NOVELL", SV_TYPE_NOVELL, r);
314 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_DOMAIN_MEMBER", SV_TYPE_DOMAIN_MEMBER, r);
315 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_PRINTQ_SERVER", SV_TYPE_PRINTQ_SERVER, r);
316 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_DIALIN_SERVER", SV_TYPE_DIALIN_SERVER, r);
317 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_SERVER_UNIX", SV_TYPE_SERVER_UNIX, r);
318 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_NT", SV_TYPE_NT, r);
319 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_WFW", SV_TYPE_WFW, r);
320 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_SERVER_MFPN", SV_TYPE_SERVER_MFPN, r);
321 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_SERVER_NT", SV_TYPE_SERVER_NT, r);
322 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_POTENTIAL_BROWSER", SV_TYPE_POTENTIAL_BROWSER, r);
323 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_BACKUP_BROWSER", SV_TYPE_BACKUP_BROWSER, r);
324 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_MASTER_BROWSER", SV_TYPE_MASTER_BROWSER, r);
325 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_DOMAIN_MASTER", SV_TYPE_DOMAIN_MASTER, r);
326 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_SERVER_OSF", SV_TYPE_SERVER_OSF, r);
327 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_SERVER_VMS", SV_TYPE_SERVER_VMS, r);
328 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_WIN95_PLUS", SV_TYPE_WIN95_PLUS, r);
329 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_DFS_SERVER", SV_TYPE_DFS_SERVER, r);
330 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_ALTERNATE_XPORT", SV_TYPE_ALTERNATE_XPORT, r);
331 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_LOCAL_LIST_ONLY", SV_TYPE_LOCAL_LIST_ONLY, r);
332 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_DOMAIN_ENUM", SV_TYPE_DOMAIN_ENUM, r);
333 ndr->depth--;
336 static enum ndr_err_code ndr_push_SERVICE_CONTROL(struct ndr_push *ndr, int ndr_flags, enum SERVICE_CONTROL r)
338 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r));
339 return NDR_ERR_SUCCESS;
342 static enum ndr_err_code ndr_pull_SERVICE_CONTROL(struct ndr_pull *ndr, int ndr_flags, enum SERVICE_CONTROL *r)
344 uint32_t v;
345 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &v));
346 *r = v;
347 return NDR_ERR_SUCCESS;
350 _PUBLIC_ void ndr_print_SERVICE_CONTROL(struct ndr_print *ndr, const char *name, enum SERVICE_CONTROL r)
352 const char *val = NULL;
354 switch (r) {
355 case SVCCTL_CONTROL_STOP: val = "SVCCTL_CONTROL_STOP"; break;
356 case SVCCTL_CONTROL_PAUSE: val = "SVCCTL_CONTROL_PAUSE"; break;
357 case SVCCTL_CONTROL_CONTINUE: val = "SVCCTL_CONTROL_CONTINUE"; break;
358 case SVCCTL_CONTROL_INTERROGATE: val = "SVCCTL_CONTROL_INTERROGATE"; break;
359 case SVCCTL_CONTROL_SHUTDOWN: val = "SVCCTL_CONTROL_SHUTDOWN"; break;
361 ndr_print_enum(ndr, name, "ENUM", val, r);
364 static enum ndr_err_code ndr_push_svcctl_ErrorControl(struct ndr_push *ndr, int ndr_flags, enum svcctl_ErrorControl r)
366 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r));
367 return NDR_ERR_SUCCESS;
370 static enum ndr_err_code ndr_pull_svcctl_ErrorControl(struct ndr_pull *ndr, int ndr_flags, enum svcctl_ErrorControl *r)
372 uint32_t v;
373 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &v));
374 *r = v;
375 return NDR_ERR_SUCCESS;
378 _PUBLIC_ void ndr_print_svcctl_ErrorControl(struct ndr_print *ndr, const char *name, enum svcctl_ErrorControl r)
380 const char *val = NULL;
382 switch (r) {
383 case SVCCTL_SVC_ERROR_IGNORE: val = "SVCCTL_SVC_ERROR_IGNORE"; break;
384 case SVCCTL_SVC_ERROR_NORMAL: val = "SVCCTL_SVC_ERROR_NORMAL"; break;
385 case SVCCTL_SVC_ERROR_CRITICAL: val = "SVCCTL_SVC_ERROR_CRITICAL"; break;
386 case SVCCTL_SVC_ERROR_SEVERE: val = "SVCCTL_SVC_ERROR_SEVERE"; break;
388 ndr_print_enum(ndr, name, "ENUM", val, r);
391 static enum ndr_err_code ndr_push_svcctl_StartType(struct ndr_push *ndr, int ndr_flags, enum svcctl_StartType r)
393 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r));
394 return NDR_ERR_SUCCESS;
397 static enum ndr_err_code ndr_pull_svcctl_StartType(struct ndr_pull *ndr, int ndr_flags, enum svcctl_StartType *r)
399 uint32_t v;
400 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &v));
401 *r = v;
402 return NDR_ERR_SUCCESS;
405 _PUBLIC_ void ndr_print_svcctl_StartType(struct ndr_print *ndr, const char *name, enum svcctl_StartType r)
407 const char *val = NULL;
409 switch (r) {
410 case SVCCTL_BOOT_START: val = "SVCCTL_BOOT_START"; break;
411 case SVCCTL_SYSTEM_START: val = "SVCCTL_SYSTEM_START"; break;
412 case SVCCTL_AUTO_START: val = "SVCCTL_AUTO_START"; break;
413 case SVCCTL_DEMAND_START: val = "SVCCTL_DEMAND_START"; break;
414 case SVCCTL_DISABLED: val = "SVCCTL_DISABLED"; break;
416 ndr_print_enum(ndr, name, "ENUM", val, r);
419 static enum ndr_err_code ndr_push_svcctl_ServiceState(struct ndr_push *ndr, int ndr_flags, enum svcctl_ServiceState r)
421 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r));
422 return NDR_ERR_SUCCESS;
425 static enum ndr_err_code ndr_pull_svcctl_ServiceState(struct ndr_pull *ndr, int ndr_flags, enum svcctl_ServiceState *r)
427 uint32_t v;
428 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &v));
429 *r = v;
430 return NDR_ERR_SUCCESS;
433 _PUBLIC_ void ndr_print_svcctl_ServiceState(struct ndr_print *ndr, const char *name, enum svcctl_ServiceState r)
435 const char *val = NULL;
437 switch (r) {
438 case SVCCTL_STATE_ACTIVE: val = "SVCCTL_STATE_ACTIVE"; break;
439 case SVCCTL_STATE_INACTIVE: val = "SVCCTL_STATE_INACTIVE"; break;
440 case SVCCTL_STATE_ALL: val = "SVCCTL_STATE_ALL"; break;
442 ndr_print_enum(ndr, name, "ENUM", val, r);
445 static enum ndr_err_code ndr_push_svcctl_MgrAccessMask(struct ndr_push *ndr, int ndr_flags, uint32_t r)
447 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r));
448 return NDR_ERR_SUCCESS;
451 static enum ndr_err_code ndr_pull_svcctl_MgrAccessMask(struct ndr_pull *ndr, int ndr_flags, uint32_t *r)
453 uint32_t v;
454 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &v));
455 *r = v;
456 return NDR_ERR_SUCCESS;
459 _PUBLIC_ void ndr_print_svcctl_MgrAccessMask(struct ndr_print *ndr, const char *name, uint32_t r)
461 ndr_print_uint32(ndr, name, r);
462 ndr->depth++;
463 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SC_RIGHT_MGR_CONNECT", SC_RIGHT_MGR_CONNECT, r);
464 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SC_RIGHT_MGR_CREATE_SERVICE", SC_RIGHT_MGR_CREATE_SERVICE, r);
465 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SC_RIGHT_MGR_ENUMERATE_SERVICE", SC_RIGHT_MGR_ENUMERATE_SERVICE, r);
466 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SC_RIGHT_MGR_LOCK", SC_RIGHT_MGR_LOCK, r);
467 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SC_RIGHT_MGR_QUERY_LOCK_STATUS", SC_RIGHT_MGR_QUERY_LOCK_STATUS, r);
468 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SC_RIGHT_MGR_MODIFY_BOOT_CONFIG", SC_RIGHT_MGR_MODIFY_BOOT_CONFIG, r);
469 ndr->depth--;
472 static enum ndr_err_code ndr_push_svcctl_ServiceAccessMask(struct ndr_push *ndr, int ndr_flags, uint32_t r)
474 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r));
475 return NDR_ERR_SUCCESS;
478 static enum ndr_err_code ndr_pull_svcctl_ServiceAccessMask(struct ndr_pull *ndr, int ndr_flags, uint32_t *r)
480 uint32_t v;
481 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &v));
482 *r = v;
483 return NDR_ERR_SUCCESS;
486 _PUBLIC_ void ndr_print_svcctl_ServiceAccessMask(struct ndr_print *ndr, const char *name, uint32_t r)
488 ndr_print_uint32(ndr, name, r);
489 ndr->depth++;
490 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SC_RIGHT_SVC_QUERY_CONFIG", SC_RIGHT_SVC_QUERY_CONFIG, r);
491 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SC_RIGHT_SVC_CHANGE_CONFIG", SC_RIGHT_SVC_CHANGE_CONFIG, r);
492 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SC_RIGHT_SVC_QUERY_STATUS", SC_RIGHT_SVC_QUERY_STATUS, r);
493 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SC_RIGHT_SVC_ENUMERATE_DEPENDENTS", SC_RIGHT_SVC_ENUMERATE_DEPENDENTS, r);
494 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SC_RIGHT_SVC_START", SC_RIGHT_SVC_START, r);
495 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SC_RIGHT_SVC_STOP", SC_RIGHT_SVC_STOP, r);
496 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SC_RIGHT_SVC_PAUSE_CONTINUE", SC_RIGHT_SVC_PAUSE_CONTINUE, r);
497 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SC_RIGHT_SVC_INTERROGATE", SC_RIGHT_SVC_INTERROGATE, r);
498 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SC_RIGHT_SVC_USER_DEFINED_CONTROL", SC_RIGHT_SVC_USER_DEFINED_CONTROL, r);
499 ndr->depth--;
502 _PUBLIC_ enum ndr_err_code ndr_push_QUERY_SERVICE_CONFIG(struct ndr_push *ndr, int ndr_flags, const struct QUERY_SERVICE_CONFIG *r)
504 if (ndr_flags & NDR_SCALARS) {
505 NDR_CHECK(ndr_push_align(ndr, 4));
506 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->service_type));
507 NDR_CHECK(ndr_push_svcctl_StartType(ndr, NDR_SCALARS, r->start_type));
508 NDR_CHECK(ndr_push_svcctl_ErrorControl(ndr, NDR_SCALARS, r->error_control));
509 NDR_CHECK(ndr_push_unique_ptr(ndr, r->executablepath));
510 NDR_CHECK(ndr_push_unique_ptr(ndr, r->loadordergroup));
511 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->tag_id));
512 NDR_CHECK(ndr_push_unique_ptr(ndr, r->dependencies));
513 NDR_CHECK(ndr_push_unique_ptr(ndr, r->startname));
514 NDR_CHECK(ndr_push_unique_ptr(ndr, r->displayname));
516 if (ndr_flags & NDR_BUFFERS) {
517 if (r->executablepath) {
518 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->executablepath, CH_UTF16)));
519 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
520 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->executablepath, CH_UTF16)));
521 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->executablepath, ndr_charset_length(r->executablepath, CH_UTF16), sizeof(uint16_t), CH_UTF16));
523 if (r->loadordergroup) {
524 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->loadordergroup, CH_UTF16)));
525 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
526 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->loadordergroup, CH_UTF16)));
527 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->loadordergroup, ndr_charset_length(r->loadordergroup, CH_UTF16), sizeof(uint16_t), CH_UTF16));
529 if (r->dependencies) {
530 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->dependencies, CH_UTF16)));
531 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
532 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->dependencies, CH_UTF16)));
533 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->dependencies, ndr_charset_length(r->dependencies, CH_UTF16), sizeof(uint16_t), CH_UTF16));
535 if (r->startname) {
536 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->startname, CH_UTF16)));
537 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
538 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->startname, CH_UTF16)));
539 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->startname, ndr_charset_length(r->startname, CH_UTF16), sizeof(uint16_t), CH_UTF16));
541 if (r->displayname) {
542 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->displayname, CH_UTF16)));
543 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
544 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->displayname, CH_UTF16)));
545 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->displayname, ndr_charset_length(r->displayname, CH_UTF16), sizeof(uint16_t), CH_UTF16));
548 return NDR_ERR_SUCCESS;
551 _PUBLIC_ enum ndr_err_code ndr_pull_QUERY_SERVICE_CONFIG(struct ndr_pull *ndr, int ndr_flags, struct QUERY_SERVICE_CONFIG *r)
553 uint32_t _ptr_executablepath;
554 TALLOC_CTX *_mem_save_executablepath_0;
555 uint32_t _ptr_loadordergroup;
556 TALLOC_CTX *_mem_save_loadordergroup_0;
557 uint32_t _ptr_dependencies;
558 TALLOC_CTX *_mem_save_dependencies_0;
559 uint32_t _ptr_startname;
560 TALLOC_CTX *_mem_save_startname_0;
561 uint32_t _ptr_displayname;
562 TALLOC_CTX *_mem_save_displayname_0;
563 if (ndr_flags & NDR_SCALARS) {
564 NDR_CHECK(ndr_pull_align(ndr, 4));
565 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->service_type));
566 NDR_CHECK(ndr_pull_svcctl_StartType(ndr, NDR_SCALARS, &r->start_type));
567 NDR_CHECK(ndr_pull_svcctl_ErrorControl(ndr, NDR_SCALARS, &r->error_control));
568 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_executablepath));
569 if (_ptr_executablepath) {
570 NDR_PULL_ALLOC(ndr, r->executablepath);
571 } else {
572 r->executablepath = NULL;
574 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_loadordergroup));
575 if (_ptr_loadordergroup) {
576 NDR_PULL_ALLOC(ndr, r->loadordergroup);
577 } else {
578 r->loadordergroup = NULL;
580 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->tag_id));
581 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_dependencies));
582 if (_ptr_dependencies) {
583 NDR_PULL_ALLOC(ndr, r->dependencies);
584 } else {
585 r->dependencies = NULL;
587 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_startname));
588 if (_ptr_startname) {
589 NDR_PULL_ALLOC(ndr, r->startname);
590 } else {
591 r->startname = NULL;
593 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_displayname));
594 if (_ptr_displayname) {
595 NDR_PULL_ALLOC(ndr, r->displayname);
596 } else {
597 r->displayname = NULL;
600 if (ndr_flags & NDR_BUFFERS) {
601 if (r->executablepath) {
602 _mem_save_executablepath_0 = NDR_PULL_GET_MEM_CTX(ndr);
603 NDR_PULL_SET_MEM_CTX(ndr, r->executablepath, 0);
604 NDR_CHECK(ndr_pull_array_size(ndr, &r->executablepath));
605 NDR_CHECK(ndr_pull_array_length(ndr, &r->executablepath));
606 if (ndr_get_array_length(ndr, &r->executablepath) > ndr_get_array_size(ndr, &r->executablepath)) {
607 return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->executablepath), ndr_get_array_length(ndr, &r->executablepath));
609 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->executablepath), sizeof(uint16_t)));
610 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->executablepath, ndr_get_array_length(ndr, &r->executablepath), sizeof(uint16_t), CH_UTF16));
611 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_executablepath_0, 0);
613 if (r->loadordergroup) {
614 _mem_save_loadordergroup_0 = NDR_PULL_GET_MEM_CTX(ndr);
615 NDR_PULL_SET_MEM_CTX(ndr, r->loadordergroup, 0);
616 NDR_CHECK(ndr_pull_array_size(ndr, &r->loadordergroup));
617 NDR_CHECK(ndr_pull_array_length(ndr, &r->loadordergroup));
618 if (ndr_get_array_length(ndr, &r->loadordergroup) > ndr_get_array_size(ndr, &r->loadordergroup)) {
619 return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->loadordergroup), ndr_get_array_length(ndr, &r->loadordergroup));
621 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->loadordergroup), sizeof(uint16_t)));
622 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->loadordergroup, ndr_get_array_length(ndr, &r->loadordergroup), sizeof(uint16_t), CH_UTF16));
623 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_loadordergroup_0, 0);
625 if (r->dependencies) {
626 _mem_save_dependencies_0 = NDR_PULL_GET_MEM_CTX(ndr);
627 NDR_PULL_SET_MEM_CTX(ndr, r->dependencies, 0);
628 NDR_CHECK(ndr_pull_array_size(ndr, &r->dependencies));
629 NDR_CHECK(ndr_pull_array_length(ndr, &r->dependencies));
630 if (ndr_get_array_length(ndr, &r->dependencies) > ndr_get_array_size(ndr, &r->dependencies)) {
631 return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->dependencies), ndr_get_array_length(ndr, &r->dependencies));
633 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->dependencies), sizeof(uint16_t)));
634 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->dependencies, ndr_get_array_length(ndr, &r->dependencies), sizeof(uint16_t), CH_UTF16));
635 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_dependencies_0, 0);
637 if (r->startname) {
638 _mem_save_startname_0 = NDR_PULL_GET_MEM_CTX(ndr);
639 NDR_PULL_SET_MEM_CTX(ndr, r->startname, 0);
640 NDR_CHECK(ndr_pull_array_size(ndr, &r->startname));
641 NDR_CHECK(ndr_pull_array_length(ndr, &r->startname));
642 if (ndr_get_array_length(ndr, &r->startname) > ndr_get_array_size(ndr, &r->startname)) {
643 return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->startname), ndr_get_array_length(ndr, &r->startname));
645 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->startname), sizeof(uint16_t)));
646 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->startname, ndr_get_array_length(ndr, &r->startname), sizeof(uint16_t), CH_UTF16));
647 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_startname_0, 0);
649 if (r->displayname) {
650 _mem_save_displayname_0 = NDR_PULL_GET_MEM_CTX(ndr);
651 NDR_PULL_SET_MEM_CTX(ndr, r->displayname, 0);
652 NDR_CHECK(ndr_pull_array_size(ndr, &r->displayname));
653 NDR_CHECK(ndr_pull_array_length(ndr, &r->displayname));
654 if (ndr_get_array_length(ndr, &r->displayname) > ndr_get_array_size(ndr, &r->displayname)) {
655 return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->displayname), ndr_get_array_length(ndr, &r->displayname));
657 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->displayname), sizeof(uint16_t)));
658 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->displayname, ndr_get_array_length(ndr, &r->displayname), sizeof(uint16_t), CH_UTF16));
659 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_displayname_0, 0);
662 return NDR_ERR_SUCCESS;
665 _PUBLIC_ void ndr_print_QUERY_SERVICE_CONFIG(struct ndr_print *ndr, const char *name, const struct QUERY_SERVICE_CONFIG *r)
667 ndr_print_struct(ndr, name, "QUERY_SERVICE_CONFIG");
668 ndr->depth++;
669 ndr_print_uint32(ndr, "service_type", r->service_type);
670 ndr_print_svcctl_StartType(ndr, "start_type", r->start_type);
671 ndr_print_svcctl_ErrorControl(ndr, "error_control", r->error_control);
672 ndr_print_ptr(ndr, "executablepath", r->executablepath);
673 ndr->depth++;
674 if (r->executablepath) {
675 ndr_print_string(ndr, "executablepath", r->executablepath);
677 ndr->depth--;
678 ndr_print_ptr(ndr, "loadordergroup", r->loadordergroup);
679 ndr->depth++;
680 if (r->loadordergroup) {
681 ndr_print_string(ndr, "loadordergroup", r->loadordergroup);
683 ndr->depth--;
684 ndr_print_uint32(ndr, "tag_id", r->tag_id);
685 ndr_print_ptr(ndr, "dependencies", r->dependencies);
686 ndr->depth++;
687 if (r->dependencies) {
688 ndr_print_string(ndr, "dependencies", r->dependencies);
690 ndr->depth--;
691 ndr_print_ptr(ndr, "startname", r->startname);
692 ndr->depth++;
693 if (r->startname) {
694 ndr_print_string(ndr, "startname", r->startname);
696 ndr->depth--;
697 ndr_print_ptr(ndr, "displayname", r->displayname);
698 ndr->depth++;
699 if (r->displayname) {
700 ndr_print_string(ndr, "displayname", r->displayname);
702 ndr->depth--;
703 ndr->depth--;
706 _PUBLIC_ size_t ndr_size_QUERY_SERVICE_CONFIG(const struct QUERY_SERVICE_CONFIG *r, struct smb_iconv_convenience *ic, int flags)
708 return ndr_size_struct(r, flags, (ndr_push_flags_fn_t)ndr_push_QUERY_SERVICE_CONFIG, ic);
711 static enum ndr_err_code ndr_push_svcctl_ConfigLevel(struct ndr_push *ndr, int ndr_flags, enum svcctl_ConfigLevel r)
713 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r));
714 return NDR_ERR_SUCCESS;
717 static enum ndr_err_code ndr_pull_svcctl_ConfigLevel(struct ndr_pull *ndr, int ndr_flags, enum svcctl_ConfigLevel *r)
719 uint32_t v;
720 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &v));
721 *r = v;
722 return NDR_ERR_SUCCESS;
725 _PUBLIC_ void ndr_print_svcctl_ConfigLevel(struct ndr_print *ndr, const char *name, enum svcctl_ConfigLevel r)
727 const char *val = NULL;
729 switch (r) {
730 case SERVICE_CONFIG_DESCRIPTION: val = "SERVICE_CONFIG_DESCRIPTION"; break;
731 case SERVICE_CONFIG_FAILURE_ACTIONS: val = "SERVICE_CONFIG_FAILURE_ACTIONS"; break;
733 ndr_print_enum(ndr, name, "ENUM", val, r);
736 _PUBLIC_ enum ndr_err_code ndr_push_SERVICE_DESCRIPTION(struct ndr_push *ndr, int ndr_flags, const struct SERVICE_DESCRIPTION *r)
738 if (ndr_flags & NDR_SCALARS) {
739 NDR_CHECK(ndr_push_align(ndr, 4));
741 uint32_t _flags_save_string = ndr->flags;
742 ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
743 NDR_CHECK(ndr_push_relative_ptr1(ndr, r->description));
744 ndr->flags = _flags_save_string;
747 if (ndr_flags & NDR_BUFFERS) {
749 uint32_t _flags_save_string = ndr->flags;
750 ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
751 if (r->description) {
752 NDR_CHECK(ndr_push_relative_ptr2(ndr, r->description));
753 NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->description));
755 ndr->flags = _flags_save_string;
758 return NDR_ERR_SUCCESS;
761 _PUBLIC_ enum ndr_err_code ndr_pull_SERVICE_DESCRIPTION(struct ndr_pull *ndr, int ndr_flags, struct SERVICE_DESCRIPTION *r)
763 uint32_t _ptr_description;
764 TALLOC_CTX *_mem_save_description_0;
765 if (ndr_flags & NDR_SCALARS) {
766 NDR_CHECK(ndr_pull_align(ndr, 4));
768 uint32_t _flags_save_string = ndr->flags;
769 ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
770 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_description));
771 if (_ptr_description) {
772 NDR_PULL_ALLOC(ndr, r->description);
773 NDR_CHECK(ndr_pull_relative_ptr1(ndr, r->description, _ptr_description));
774 } else {
775 r->description = NULL;
777 ndr->flags = _flags_save_string;
780 if (ndr_flags & NDR_BUFFERS) {
782 uint32_t _flags_save_string = ndr->flags;
783 ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
784 if (r->description) {
785 uint32_t _relative_save_offset;
786 _relative_save_offset = ndr->offset;
787 NDR_CHECK(ndr_pull_relative_ptr2(ndr, r->description));
788 _mem_save_description_0 = NDR_PULL_GET_MEM_CTX(ndr);
789 NDR_PULL_SET_MEM_CTX(ndr, r->description, 0);
790 NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->description));
791 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_description_0, 0);
792 ndr->offset = _relative_save_offset;
794 ndr->flags = _flags_save_string;
797 return NDR_ERR_SUCCESS;
800 _PUBLIC_ void ndr_print_SERVICE_DESCRIPTION(struct ndr_print *ndr, const char *name, const struct SERVICE_DESCRIPTION *r)
802 ndr_print_struct(ndr, name, "SERVICE_DESCRIPTION");
803 ndr->depth++;
804 ndr_print_ptr(ndr, "description", r->description);
805 ndr->depth++;
806 if (r->description) {
807 ndr_print_string(ndr, "description", r->description);
809 ndr->depth--;
810 ndr->depth--;
813 _PUBLIC_ size_t ndr_size_SERVICE_DESCRIPTION(const struct SERVICE_DESCRIPTION *r, struct smb_iconv_convenience *ic, int flags)
815 return ndr_size_struct(r, flags, (ndr_push_flags_fn_t)ndr_push_SERVICE_DESCRIPTION, ic);
818 static enum ndr_err_code ndr_push_SC_ACTION_TYPE(struct ndr_push *ndr, int ndr_flags, enum SC_ACTION_TYPE r)
820 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r));
821 return NDR_ERR_SUCCESS;
824 static enum ndr_err_code ndr_pull_SC_ACTION_TYPE(struct ndr_pull *ndr, int ndr_flags, enum SC_ACTION_TYPE *r)
826 uint32_t v;
827 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &v));
828 *r = v;
829 return NDR_ERR_SUCCESS;
832 _PUBLIC_ void ndr_print_SC_ACTION_TYPE(struct ndr_print *ndr, const char *name, enum SC_ACTION_TYPE r)
834 const char *val = NULL;
836 switch (r) {
837 case SC_ACTION_NONE: val = "SC_ACTION_NONE"; break;
838 case SC_ACTION_RESTART: val = "SC_ACTION_RESTART"; break;
839 case SC_ACTION_REBOOT: val = "SC_ACTION_REBOOT"; break;
840 case SC_ACTION_RUN_COMMAND: val = "SC_ACTION_RUN_COMMAND"; break;
842 ndr_print_enum(ndr, name, "ENUM", val, r);
845 static enum ndr_err_code ndr_push_SC_ACTION(struct ndr_push *ndr, int ndr_flags, const struct SC_ACTION *r)
847 if (ndr_flags & NDR_SCALARS) {
848 NDR_CHECK(ndr_push_align(ndr, 4));
849 NDR_CHECK(ndr_push_SC_ACTION_TYPE(ndr, NDR_SCALARS, r->type));
850 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->delay));
852 if (ndr_flags & NDR_BUFFERS) {
854 return NDR_ERR_SUCCESS;
857 static enum ndr_err_code ndr_pull_SC_ACTION(struct ndr_pull *ndr, int ndr_flags, struct SC_ACTION *r)
859 if (ndr_flags & NDR_SCALARS) {
860 NDR_CHECK(ndr_pull_align(ndr, 4));
861 NDR_CHECK(ndr_pull_SC_ACTION_TYPE(ndr, NDR_SCALARS, &r->type));
862 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->delay));
864 if (ndr_flags & NDR_BUFFERS) {
866 return NDR_ERR_SUCCESS;
869 _PUBLIC_ void ndr_print_SC_ACTION(struct ndr_print *ndr, const char *name, const struct SC_ACTION *r)
871 ndr_print_struct(ndr, name, "SC_ACTION");
872 ndr->depth++;
873 ndr_print_SC_ACTION_TYPE(ndr, "type", r->type);
874 ndr_print_uint32(ndr, "delay", r->delay);
875 ndr->depth--;
878 _PUBLIC_ enum ndr_err_code ndr_push_SERVICE_FAILURE_ACTIONS(struct ndr_push *ndr, int ndr_flags, const struct SERVICE_FAILURE_ACTIONS *r)
880 uint32_t cntr_actions_1;
881 if (ndr_flags & NDR_SCALARS) {
882 NDR_CHECK(ndr_push_align(ndr, 4));
883 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->reset_period));
885 uint32_t _flags_save_string = ndr->flags;
886 ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
887 NDR_CHECK(ndr_push_relative_ptr1(ndr, r->rebootmsg));
888 ndr->flags = _flags_save_string;
891 uint32_t _flags_save_string = ndr->flags;
892 ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
893 NDR_CHECK(ndr_push_relative_ptr1(ndr, r->command));
894 ndr->flags = _flags_save_string;
896 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->num_actions));
897 NDR_CHECK(ndr_push_relative_ptr1(ndr, r->actions));
899 if (ndr_flags & NDR_BUFFERS) {
901 uint32_t _flags_save_string = ndr->flags;
902 ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
903 if (r->rebootmsg) {
904 NDR_CHECK(ndr_push_relative_ptr2(ndr, r->rebootmsg));
905 NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->rebootmsg));
907 ndr->flags = _flags_save_string;
910 uint32_t _flags_save_string = ndr->flags;
911 ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
912 if (r->command) {
913 NDR_CHECK(ndr_push_relative_ptr2(ndr, r->command));
914 NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->command));
916 ndr->flags = _flags_save_string;
918 if (r->actions) {
919 NDR_CHECK(ndr_push_relative_ptr2(ndr, r->actions));
920 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->num_actions));
921 for (cntr_actions_1 = 0; cntr_actions_1 < r->num_actions; cntr_actions_1++) {
922 NDR_CHECK(ndr_push_SC_ACTION(ndr, NDR_SCALARS, &r->actions[cntr_actions_1]));
926 return NDR_ERR_SUCCESS;
929 _PUBLIC_ enum ndr_err_code ndr_pull_SERVICE_FAILURE_ACTIONS(struct ndr_pull *ndr, int ndr_flags, struct SERVICE_FAILURE_ACTIONS *r)
931 uint32_t _ptr_rebootmsg;
932 TALLOC_CTX *_mem_save_rebootmsg_0;
933 uint32_t _ptr_command;
934 TALLOC_CTX *_mem_save_command_0;
935 uint32_t _ptr_actions;
936 uint32_t cntr_actions_1;
937 TALLOC_CTX *_mem_save_actions_0;
938 TALLOC_CTX *_mem_save_actions_1;
939 if (ndr_flags & NDR_SCALARS) {
940 NDR_CHECK(ndr_pull_align(ndr, 4));
941 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->reset_period));
943 uint32_t _flags_save_string = ndr->flags;
944 ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
945 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_rebootmsg));
946 if (_ptr_rebootmsg) {
947 NDR_PULL_ALLOC(ndr, r->rebootmsg);
948 NDR_CHECK(ndr_pull_relative_ptr1(ndr, r->rebootmsg, _ptr_rebootmsg));
949 } else {
950 r->rebootmsg = NULL;
952 ndr->flags = _flags_save_string;
955 uint32_t _flags_save_string = ndr->flags;
956 ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
957 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_command));
958 if (_ptr_command) {
959 NDR_PULL_ALLOC(ndr, r->command);
960 NDR_CHECK(ndr_pull_relative_ptr1(ndr, r->command, _ptr_command));
961 } else {
962 r->command = NULL;
964 ndr->flags = _flags_save_string;
966 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->num_actions));
967 if (r->num_actions < 0 || r->num_actions > 1024) {
968 return ndr_pull_error(ndr, NDR_ERR_RANGE, "value out of range");
970 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_actions));
971 if (_ptr_actions) {
972 NDR_PULL_ALLOC(ndr, r->actions);
973 NDR_CHECK(ndr_pull_relative_ptr1(ndr, r->actions, _ptr_actions));
974 } else {
975 r->actions = NULL;
978 if (ndr_flags & NDR_BUFFERS) {
980 uint32_t _flags_save_string = ndr->flags;
981 ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
982 if (r->rebootmsg) {
983 uint32_t _relative_save_offset;
984 _relative_save_offset = ndr->offset;
985 NDR_CHECK(ndr_pull_relative_ptr2(ndr, r->rebootmsg));
986 _mem_save_rebootmsg_0 = NDR_PULL_GET_MEM_CTX(ndr);
987 NDR_PULL_SET_MEM_CTX(ndr, r->rebootmsg, 0);
988 NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->rebootmsg));
989 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_rebootmsg_0, 0);
990 ndr->offset = _relative_save_offset;
992 ndr->flags = _flags_save_string;
995 uint32_t _flags_save_string = ndr->flags;
996 ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
997 if (r->command) {
998 uint32_t _relative_save_offset;
999 _relative_save_offset = ndr->offset;
1000 NDR_CHECK(ndr_pull_relative_ptr2(ndr, r->command));
1001 _mem_save_command_0 = NDR_PULL_GET_MEM_CTX(ndr);
1002 NDR_PULL_SET_MEM_CTX(ndr, r->command, 0);
1003 NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->command));
1004 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_command_0, 0);
1005 ndr->offset = _relative_save_offset;
1007 ndr->flags = _flags_save_string;
1009 if (r->actions) {
1010 uint32_t _relative_save_offset;
1011 _relative_save_offset = ndr->offset;
1012 NDR_CHECK(ndr_pull_relative_ptr2(ndr, r->actions));
1013 _mem_save_actions_0 = NDR_PULL_GET_MEM_CTX(ndr);
1014 NDR_PULL_SET_MEM_CTX(ndr, r->actions, 0);
1015 NDR_CHECK(ndr_pull_array_size(ndr, &r->actions));
1016 NDR_PULL_ALLOC_N(ndr, r->actions, ndr_get_array_size(ndr, &r->actions));
1017 _mem_save_actions_1 = NDR_PULL_GET_MEM_CTX(ndr);
1018 NDR_PULL_SET_MEM_CTX(ndr, r->actions, 0);
1019 for (cntr_actions_1 = 0; cntr_actions_1 < r->num_actions; cntr_actions_1++) {
1020 NDR_CHECK(ndr_pull_SC_ACTION(ndr, NDR_SCALARS, &r->actions[cntr_actions_1]));
1022 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_actions_1, 0);
1023 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_actions_0, 0);
1024 ndr->offset = _relative_save_offset;
1026 if (r->actions) {
1027 NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->actions, r->num_actions));
1030 return NDR_ERR_SUCCESS;
1033 _PUBLIC_ void ndr_print_SERVICE_FAILURE_ACTIONS(struct ndr_print *ndr, const char *name, const struct SERVICE_FAILURE_ACTIONS *r)
1035 uint32_t cntr_actions_1;
1036 ndr_print_struct(ndr, name, "SERVICE_FAILURE_ACTIONS");
1037 ndr->depth++;
1038 ndr_print_uint32(ndr, "reset_period", r->reset_period);
1039 ndr_print_ptr(ndr, "rebootmsg", r->rebootmsg);
1040 ndr->depth++;
1041 if (r->rebootmsg) {
1042 ndr_print_string(ndr, "rebootmsg", r->rebootmsg);
1044 ndr->depth--;
1045 ndr_print_ptr(ndr, "command", r->command);
1046 ndr->depth++;
1047 if (r->command) {
1048 ndr_print_string(ndr, "command", r->command);
1050 ndr->depth--;
1051 ndr_print_uint32(ndr, "num_actions", r->num_actions);
1052 ndr_print_ptr(ndr, "actions", r->actions);
1053 ndr->depth++;
1054 if (r->actions) {
1055 ndr->print(ndr, "%s: ARRAY(%d)", "actions", (int)r->num_actions);
1056 ndr->depth++;
1057 for (cntr_actions_1=0;cntr_actions_1<r->num_actions;cntr_actions_1++) {
1058 char *idx_1=NULL;
1059 if (asprintf(&idx_1, "[%d]", cntr_actions_1) != -1) {
1060 ndr_print_SC_ACTION(ndr, "actions", &r->actions[cntr_actions_1]);
1061 free(idx_1);
1064 ndr->depth--;
1066 ndr->depth--;
1067 ndr->depth--;
1070 _PUBLIC_ size_t ndr_size_SERVICE_FAILURE_ACTIONS(const struct SERVICE_FAILURE_ACTIONS *r, struct smb_iconv_convenience *ic, int flags)
1072 return ndr_size_struct(r, flags, (ndr_push_flags_fn_t)ndr_push_SERVICE_FAILURE_ACTIONS, ic);
1075 static enum ndr_err_code ndr_push_svcctl_StatusLevel(struct ndr_push *ndr, int ndr_flags, enum svcctl_StatusLevel r)
1077 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r));
1078 return NDR_ERR_SUCCESS;
1081 static enum ndr_err_code ndr_pull_svcctl_StatusLevel(struct ndr_pull *ndr, int ndr_flags, enum svcctl_StatusLevel *r)
1083 uint32_t v;
1084 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &v));
1085 *r = v;
1086 return NDR_ERR_SUCCESS;
1089 _PUBLIC_ void ndr_print_svcctl_StatusLevel(struct ndr_print *ndr, const char *name, enum svcctl_StatusLevel r)
1091 const char *val = NULL;
1093 switch (r) {
1094 case SVC_STATUS_PROCESS_INFO: val = "SVC_STATUS_PROCESS_INFO"; break;
1096 ndr_print_enum(ndr, name, "ENUM", val, r);
1099 static enum ndr_err_code ndr_push_svcctl_CloseServiceHandle(struct ndr_push *ndr, int flags, const struct svcctl_CloseServiceHandle *r)
1101 if (flags & NDR_IN) {
1102 if (r->in.handle == NULL) {
1103 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
1105 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
1107 if (flags & NDR_OUT) {
1108 if (r->out.handle == NULL) {
1109 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
1111 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->out.handle));
1112 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
1114 return NDR_ERR_SUCCESS;
1117 static enum ndr_err_code ndr_pull_svcctl_CloseServiceHandle(struct ndr_pull *ndr, int flags, struct svcctl_CloseServiceHandle *r)
1119 TALLOC_CTX *_mem_save_handle_0;
1120 if (flags & NDR_IN) {
1121 ZERO_STRUCT(r->out);
1123 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
1124 NDR_PULL_ALLOC(ndr, r->in.handle);
1126 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
1127 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
1128 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
1129 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
1130 NDR_PULL_ALLOC(ndr, r->out.handle);
1131 *r->out.handle = *r->in.handle;
1133 if (flags & NDR_OUT) {
1134 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
1135 NDR_PULL_ALLOC(ndr, r->out.handle);
1137 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
1138 NDR_PULL_SET_MEM_CTX(ndr, r->out.handle, LIBNDR_FLAG_REF_ALLOC);
1139 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->out.handle));
1140 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
1141 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
1143 return NDR_ERR_SUCCESS;
1146 _PUBLIC_ void ndr_print_svcctl_CloseServiceHandle(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_CloseServiceHandle *r)
1148 ndr_print_struct(ndr, name, "svcctl_CloseServiceHandle");
1149 ndr->depth++;
1150 if (flags & NDR_SET_VALUES) {
1151 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
1153 if (flags & NDR_IN) {
1154 ndr_print_struct(ndr, "in", "svcctl_CloseServiceHandle");
1155 ndr->depth++;
1156 ndr_print_ptr(ndr, "handle", r->in.handle);
1157 ndr->depth++;
1158 ndr_print_policy_handle(ndr, "handle", r->in.handle);
1159 ndr->depth--;
1160 ndr->depth--;
1162 if (flags & NDR_OUT) {
1163 ndr_print_struct(ndr, "out", "svcctl_CloseServiceHandle");
1164 ndr->depth++;
1165 ndr_print_ptr(ndr, "handle", r->out.handle);
1166 ndr->depth++;
1167 ndr_print_policy_handle(ndr, "handle", r->out.handle);
1168 ndr->depth--;
1169 ndr_print_WERROR(ndr, "result", r->out.result);
1170 ndr->depth--;
1172 ndr->depth--;
1175 static enum ndr_err_code ndr_push_svcctl_ControlService(struct ndr_push *ndr, int flags, const struct svcctl_ControlService *r)
1177 if (flags & NDR_IN) {
1178 if (r->in.handle == NULL) {
1179 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
1181 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
1182 NDR_CHECK(ndr_push_SERVICE_CONTROL(ndr, NDR_SCALARS, r->in.control));
1184 if (flags & NDR_OUT) {
1185 if (r->out.service_status == NULL) {
1186 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
1188 NDR_CHECK(ndr_push_SERVICE_STATUS(ndr, NDR_SCALARS, r->out.service_status));
1189 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
1191 return NDR_ERR_SUCCESS;
1194 static enum ndr_err_code ndr_pull_svcctl_ControlService(struct ndr_pull *ndr, int flags, struct svcctl_ControlService *r)
1196 TALLOC_CTX *_mem_save_handle_0;
1197 TALLOC_CTX *_mem_save_service_status_0;
1198 if (flags & NDR_IN) {
1199 ZERO_STRUCT(r->out);
1201 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
1202 NDR_PULL_ALLOC(ndr, r->in.handle);
1204 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
1205 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
1206 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
1207 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
1208 NDR_CHECK(ndr_pull_SERVICE_CONTROL(ndr, NDR_SCALARS, &r->in.control));
1209 NDR_PULL_ALLOC(ndr, r->out.service_status);
1210 ZERO_STRUCTP(r->out.service_status);
1212 if (flags & NDR_OUT) {
1213 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
1214 NDR_PULL_ALLOC(ndr, r->out.service_status);
1216 _mem_save_service_status_0 = NDR_PULL_GET_MEM_CTX(ndr);
1217 NDR_PULL_SET_MEM_CTX(ndr, r->out.service_status, LIBNDR_FLAG_REF_ALLOC);
1218 NDR_CHECK(ndr_pull_SERVICE_STATUS(ndr, NDR_SCALARS, r->out.service_status));
1219 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_service_status_0, LIBNDR_FLAG_REF_ALLOC);
1220 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
1222 return NDR_ERR_SUCCESS;
1225 _PUBLIC_ void ndr_print_svcctl_ControlService(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_ControlService *r)
1227 ndr_print_struct(ndr, name, "svcctl_ControlService");
1228 ndr->depth++;
1229 if (flags & NDR_SET_VALUES) {
1230 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
1232 if (flags & NDR_IN) {
1233 ndr_print_struct(ndr, "in", "svcctl_ControlService");
1234 ndr->depth++;
1235 ndr_print_ptr(ndr, "handle", r->in.handle);
1236 ndr->depth++;
1237 ndr_print_policy_handle(ndr, "handle", r->in.handle);
1238 ndr->depth--;
1239 ndr_print_SERVICE_CONTROL(ndr, "control", r->in.control);
1240 ndr->depth--;
1242 if (flags & NDR_OUT) {
1243 ndr_print_struct(ndr, "out", "svcctl_ControlService");
1244 ndr->depth++;
1245 ndr_print_ptr(ndr, "service_status", r->out.service_status);
1246 ndr->depth++;
1247 ndr_print_SERVICE_STATUS(ndr, "service_status", r->out.service_status);
1248 ndr->depth--;
1249 ndr_print_WERROR(ndr, "result", r->out.result);
1250 ndr->depth--;
1252 ndr->depth--;
1255 static enum ndr_err_code ndr_push_svcctl_DeleteService(struct ndr_push *ndr, int flags, const struct svcctl_DeleteService *r)
1257 if (flags & NDR_IN) {
1258 if (r->in.handle == NULL) {
1259 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
1261 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
1263 if (flags & NDR_OUT) {
1264 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
1266 return NDR_ERR_SUCCESS;
1269 static enum ndr_err_code ndr_pull_svcctl_DeleteService(struct ndr_pull *ndr, int flags, struct svcctl_DeleteService *r)
1271 TALLOC_CTX *_mem_save_handle_0;
1272 if (flags & NDR_IN) {
1273 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
1274 NDR_PULL_ALLOC(ndr, r->in.handle);
1276 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
1277 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
1278 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
1279 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
1281 if (flags & NDR_OUT) {
1282 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
1284 return NDR_ERR_SUCCESS;
1287 _PUBLIC_ void ndr_print_svcctl_DeleteService(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_DeleteService *r)
1289 ndr_print_struct(ndr, name, "svcctl_DeleteService");
1290 ndr->depth++;
1291 if (flags & NDR_SET_VALUES) {
1292 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
1294 if (flags & NDR_IN) {
1295 ndr_print_struct(ndr, "in", "svcctl_DeleteService");
1296 ndr->depth++;
1297 ndr_print_ptr(ndr, "handle", r->in.handle);
1298 ndr->depth++;
1299 ndr_print_policy_handle(ndr, "handle", r->in.handle);
1300 ndr->depth--;
1301 ndr->depth--;
1303 if (flags & NDR_OUT) {
1304 ndr_print_struct(ndr, "out", "svcctl_DeleteService");
1305 ndr->depth++;
1306 ndr_print_WERROR(ndr, "result", r->out.result);
1307 ndr->depth--;
1309 ndr->depth--;
1312 static enum ndr_err_code ndr_push_svcctl_LockServiceDatabase(struct ndr_push *ndr, int flags, const struct svcctl_LockServiceDatabase *r)
1314 if (flags & NDR_IN) {
1315 if (r->in.handle == NULL) {
1316 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
1318 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
1320 if (flags & NDR_OUT) {
1321 if (r->out.lock == NULL) {
1322 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
1324 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->out.lock));
1325 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
1327 return NDR_ERR_SUCCESS;
1330 static enum ndr_err_code ndr_pull_svcctl_LockServiceDatabase(struct ndr_pull *ndr, int flags, struct svcctl_LockServiceDatabase *r)
1332 TALLOC_CTX *_mem_save_handle_0;
1333 TALLOC_CTX *_mem_save_lock_0;
1334 if (flags & NDR_IN) {
1335 ZERO_STRUCT(r->out);
1337 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
1338 NDR_PULL_ALLOC(ndr, r->in.handle);
1340 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
1341 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
1342 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
1343 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
1344 NDR_PULL_ALLOC(ndr, r->out.lock);
1345 ZERO_STRUCTP(r->out.lock);
1347 if (flags & NDR_OUT) {
1348 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
1349 NDR_PULL_ALLOC(ndr, r->out.lock);
1351 _mem_save_lock_0 = NDR_PULL_GET_MEM_CTX(ndr);
1352 NDR_PULL_SET_MEM_CTX(ndr, r->out.lock, LIBNDR_FLAG_REF_ALLOC);
1353 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->out.lock));
1354 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_lock_0, LIBNDR_FLAG_REF_ALLOC);
1355 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
1357 return NDR_ERR_SUCCESS;
1360 _PUBLIC_ void ndr_print_svcctl_LockServiceDatabase(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_LockServiceDatabase *r)
1362 ndr_print_struct(ndr, name, "svcctl_LockServiceDatabase");
1363 ndr->depth++;
1364 if (flags & NDR_SET_VALUES) {
1365 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
1367 if (flags & NDR_IN) {
1368 ndr_print_struct(ndr, "in", "svcctl_LockServiceDatabase");
1369 ndr->depth++;
1370 ndr_print_ptr(ndr, "handle", r->in.handle);
1371 ndr->depth++;
1372 ndr_print_policy_handle(ndr, "handle", r->in.handle);
1373 ndr->depth--;
1374 ndr->depth--;
1376 if (flags & NDR_OUT) {
1377 ndr_print_struct(ndr, "out", "svcctl_LockServiceDatabase");
1378 ndr->depth++;
1379 ndr_print_ptr(ndr, "lock", r->out.lock);
1380 ndr->depth++;
1381 ndr_print_policy_handle(ndr, "lock", r->out.lock);
1382 ndr->depth--;
1383 ndr_print_WERROR(ndr, "result", r->out.result);
1384 ndr->depth--;
1386 ndr->depth--;
1389 static enum ndr_err_code ndr_push_svcctl_QueryServiceObjectSecurity(struct ndr_push *ndr, int flags, const struct svcctl_QueryServiceObjectSecurity *r)
1391 if (flags & NDR_IN) {
1392 if (r->in.handle == NULL) {
1393 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
1395 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
1396 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.security_flags));
1397 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.buffer_size));
1399 if (flags & NDR_OUT) {
1400 if (r->out.buffer == NULL) {
1401 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
1403 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.buffer_size));
1404 NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->out.buffer, r->in.buffer_size));
1405 if (r->out.needed == NULL) {
1406 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
1408 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.needed));
1409 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
1411 return NDR_ERR_SUCCESS;
1414 static enum ndr_err_code ndr_pull_svcctl_QueryServiceObjectSecurity(struct ndr_pull *ndr, int flags, struct svcctl_QueryServiceObjectSecurity *r)
1416 TALLOC_CTX *_mem_save_handle_0;
1417 TALLOC_CTX *_mem_save_needed_0;
1418 if (flags & NDR_IN) {
1419 ZERO_STRUCT(r->out);
1421 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
1422 NDR_PULL_ALLOC(ndr, r->in.handle);
1424 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
1425 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
1426 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
1427 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
1428 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.security_flags));
1429 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.buffer_size));
1430 if (r->in.buffer_size < 0 || r->in.buffer_size > 0x40000) {
1431 return ndr_pull_error(ndr, NDR_ERR_RANGE, "value out of range");
1433 NDR_PULL_ALLOC_N(ndr, r->out.buffer, r->in.buffer_size);
1434 memset(CONST_DISCARD(struct svcctl_QueryServiceObjectSecurity *,r->out.buffer), 0, (r->in.buffer_size) * sizeof(*r->out.buffer));
1435 NDR_PULL_ALLOC(ndr, r->out.needed);
1436 ZERO_STRUCTP(r->out.needed);
1438 if (flags & NDR_OUT) {
1439 NDR_CHECK(ndr_pull_array_size(ndr, &r->out.buffer));
1440 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
1441 NDR_PULL_ALLOC_N(ndr, r->out.buffer, ndr_get_array_size(ndr, &r->out.buffer));
1443 NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->out.buffer, ndr_get_array_size(ndr, &r->out.buffer)));
1444 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
1445 NDR_PULL_ALLOC(ndr, r->out.needed);
1447 _mem_save_needed_0 = NDR_PULL_GET_MEM_CTX(ndr);
1448 NDR_PULL_SET_MEM_CTX(ndr, r->out.needed, LIBNDR_FLAG_REF_ALLOC);
1449 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.needed));
1450 if (*r->out.needed < 0 || *r->out.needed > 0x40000) {
1451 return ndr_pull_error(ndr, NDR_ERR_RANGE, "value out of range");
1453 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_needed_0, LIBNDR_FLAG_REF_ALLOC);
1454 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
1455 if (r->out.buffer) {
1456 NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->out.buffer, r->in.buffer_size));
1459 return NDR_ERR_SUCCESS;
1462 _PUBLIC_ void ndr_print_svcctl_QueryServiceObjectSecurity(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_QueryServiceObjectSecurity *r)
1464 ndr_print_struct(ndr, name, "svcctl_QueryServiceObjectSecurity");
1465 ndr->depth++;
1466 if (flags & NDR_SET_VALUES) {
1467 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
1469 if (flags & NDR_IN) {
1470 ndr_print_struct(ndr, "in", "svcctl_QueryServiceObjectSecurity");
1471 ndr->depth++;
1472 ndr_print_ptr(ndr, "handle", r->in.handle);
1473 ndr->depth++;
1474 ndr_print_policy_handle(ndr, "handle", r->in.handle);
1475 ndr->depth--;
1476 ndr_print_uint32(ndr, "security_flags", r->in.security_flags);
1477 ndr_print_uint32(ndr, "buffer_size", r->in.buffer_size);
1478 ndr->depth--;
1480 if (flags & NDR_OUT) {
1481 ndr_print_struct(ndr, "out", "svcctl_QueryServiceObjectSecurity");
1482 ndr->depth++;
1483 ndr_print_ptr(ndr, "buffer", r->out.buffer);
1484 ndr->depth++;
1485 ndr_print_array_uint8(ndr, "buffer", r->out.buffer, r->in.buffer_size);
1486 ndr->depth--;
1487 ndr_print_ptr(ndr, "needed", r->out.needed);
1488 ndr->depth++;
1489 ndr_print_uint32(ndr, "needed", *r->out.needed);
1490 ndr->depth--;
1491 ndr_print_WERROR(ndr, "result", r->out.result);
1492 ndr->depth--;
1494 ndr->depth--;
1497 static enum ndr_err_code ndr_push_svcctl_SetServiceObjectSecurity(struct ndr_push *ndr, int flags, const struct svcctl_SetServiceObjectSecurity *r)
1499 if (flags & NDR_IN) {
1500 if (r->in.handle == NULL) {
1501 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
1503 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
1504 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.security_flags));
1505 if (r->in.buffer == NULL) {
1506 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
1508 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.buffer_size));
1509 NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->in.buffer, r->in.buffer_size));
1510 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.buffer_size));
1512 if (flags & NDR_OUT) {
1513 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
1515 return NDR_ERR_SUCCESS;
1518 static enum ndr_err_code ndr_pull_svcctl_SetServiceObjectSecurity(struct ndr_pull *ndr, int flags, struct svcctl_SetServiceObjectSecurity *r)
1520 TALLOC_CTX *_mem_save_handle_0;
1521 if (flags & NDR_IN) {
1522 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
1523 NDR_PULL_ALLOC(ndr, r->in.handle);
1525 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
1526 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
1527 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
1528 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
1529 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.security_flags));
1530 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.buffer));
1531 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
1532 NDR_PULL_ALLOC_N(ndr, r->in.buffer, ndr_get_array_size(ndr, &r->in.buffer));
1534 NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->in.buffer, ndr_get_array_size(ndr, &r->in.buffer)));
1535 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.buffer_size));
1536 if (r->in.buffer) {
1537 NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->in.buffer, r->in.buffer_size));
1540 if (flags & NDR_OUT) {
1541 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
1543 return NDR_ERR_SUCCESS;
1546 _PUBLIC_ void ndr_print_svcctl_SetServiceObjectSecurity(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_SetServiceObjectSecurity *r)
1548 ndr_print_struct(ndr, name, "svcctl_SetServiceObjectSecurity");
1549 ndr->depth++;
1550 if (flags & NDR_SET_VALUES) {
1551 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
1553 if (flags & NDR_IN) {
1554 ndr_print_struct(ndr, "in", "svcctl_SetServiceObjectSecurity");
1555 ndr->depth++;
1556 ndr_print_ptr(ndr, "handle", r->in.handle);
1557 ndr->depth++;
1558 ndr_print_policy_handle(ndr, "handle", r->in.handle);
1559 ndr->depth--;
1560 ndr_print_uint32(ndr, "security_flags", r->in.security_flags);
1561 ndr_print_ptr(ndr, "buffer", r->in.buffer);
1562 ndr->depth++;
1563 ndr_print_array_uint8(ndr, "buffer", r->in.buffer, r->in.buffer_size);
1564 ndr->depth--;
1565 ndr_print_uint32(ndr, "buffer_size", r->in.buffer_size);
1566 ndr->depth--;
1568 if (flags & NDR_OUT) {
1569 ndr_print_struct(ndr, "out", "svcctl_SetServiceObjectSecurity");
1570 ndr->depth++;
1571 ndr_print_WERROR(ndr, "result", r->out.result);
1572 ndr->depth--;
1574 ndr->depth--;
1577 static enum ndr_err_code ndr_push_svcctl_QueryServiceStatus(struct ndr_push *ndr, int flags, const struct svcctl_QueryServiceStatus *r)
1579 if (flags & NDR_IN) {
1580 if (r->in.handle == NULL) {
1581 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
1583 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
1585 if (flags & NDR_OUT) {
1586 if (r->out.service_status == NULL) {
1587 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
1589 NDR_CHECK(ndr_push_SERVICE_STATUS(ndr, NDR_SCALARS, r->out.service_status));
1590 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
1592 return NDR_ERR_SUCCESS;
1595 static enum ndr_err_code ndr_pull_svcctl_QueryServiceStatus(struct ndr_pull *ndr, int flags, struct svcctl_QueryServiceStatus *r)
1597 TALLOC_CTX *_mem_save_handle_0;
1598 TALLOC_CTX *_mem_save_service_status_0;
1599 if (flags & NDR_IN) {
1600 ZERO_STRUCT(r->out);
1602 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
1603 NDR_PULL_ALLOC(ndr, r->in.handle);
1605 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
1606 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
1607 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
1608 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
1609 NDR_PULL_ALLOC(ndr, r->out.service_status);
1610 ZERO_STRUCTP(r->out.service_status);
1612 if (flags & NDR_OUT) {
1613 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
1614 NDR_PULL_ALLOC(ndr, r->out.service_status);
1616 _mem_save_service_status_0 = NDR_PULL_GET_MEM_CTX(ndr);
1617 NDR_PULL_SET_MEM_CTX(ndr, r->out.service_status, LIBNDR_FLAG_REF_ALLOC);
1618 NDR_CHECK(ndr_pull_SERVICE_STATUS(ndr, NDR_SCALARS, r->out.service_status));
1619 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_service_status_0, LIBNDR_FLAG_REF_ALLOC);
1620 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
1622 return NDR_ERR_SUCCESS;
1625 _PUBLIC_ void ndr_print_svcctl_QueryServiceStatus(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_QueryServiceStatus *r)
1627 ndr_print_struct(ndr, name, "svcctl_QueryServiceStatus");
1628 ndr->depth++;
1629 if (flags & NDR_SET_VALUES) {
1630 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
1632 if (flags & NDR_IN) {
1633 ndr_print_struct(ndr, "in", "svcctl_QueryServiceStatus");
1634 ndr->depth++;
1635 ndr_print_ptr(ndr, "handle", r->in.handle);
1636 ndr->depth++;
1637 ndr_print_policy_handle(ndr, "handle", r->in.handle);
1638 ndr->depth--;
1639 ndr->depth--;
1641 if (flags & NDR_OUT) {
1642 ndr_print_struct(ndr, "out", "svcctl_QueryServiceStatus");
1643 ndr->depth++;
1644 ndr_print_ptr(ndr, "service_status", r->out.service_status);
1645 ndr->depth++;
1646 ndr_print_SERVICE_STATUS(ndr, "service_status", r->out.service_status);
1647 ndr->depth--;
1648 ndr_print_WERROR(ndr, "result", r->out.result);
1649 ndr->depth--;
1651 ndr->depth--;
1654 static enum ndr_err_code ndr_push_svcctl_SetServiceStatus(struct ndr_push *ndr, int flags, const struct svcctl_SetServiceStatus *r)
1656 if (flags & NDR_IN) {
1658 if (flags & NDR_OUT) {
1659 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
1661 return NDR_ERR_SUCCESS;
1664 static enum ndr_err_code ndr_pull_svcctl_SetServiceStatus(struct ndr_pull *ndr, int flags, struct svcctl_SetServiceStatus *r)
1666 if (flags & NDR_IN) {
1668 if (flags & NDR_OUT) {
1669 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
1671 return NDR_ERR_SUCCESS;
1674 _PUBLIC_ void ndr_print_svcctl_SetServiceStatus(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_SetServiceStatus *r)
1676 ndr_print_struct(ndr, name, "svcctl_SetServiceStatus");
1677 ndr->depth++;
1678 if (flags & NDR_SET_VALUES) {
1679 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
1681 if (flags & NDR_IN) {
1682 ndr_print_struct(ndr, "in", "svcctl_SetServiceStatus");
1683 ndr->depth++;
1684 ndr->depth--;
1686 if (flags & NDR_OUT) {
1687 ndr_print_struct(ndr, "out", "svcctl_SetServiceStatus");
1688 ndr->depth++;
1689 ndr_print_WERROR(ndr, "result", r->out.result);
1690 ndr->depth--;
1692 ndr->depth--;
1695 static enum ndr_err_code ndr_push_svcctl_UnlockServiceDatabase(struct ndr_push *ndr, int flags, const struct svcctl_UnlockServiceDatabase *r)
1697 if (flags & NDR_IN) {
1698 if (r->in.lock == NULL) {
1699 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
1701 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.lock));
1703 if (flags & NDR_OUT) {
1704 if (r->out.lock == NULL) {
1705 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
1707 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->out.lock));
1708 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
1710 return NDR_ERR_SUCCESS;
1713 static enum ndr_err_code ndr_pull_svcctl_UnlockServiceDatabase(struct ndr_pull *ndr, int flags, struct svcctl_UnlockServiceDatabase *r)
1715 TALLOC_CTX *_mem_save_lock_0;
1716 if (flags & NDR_IN) {
1717 ZERO_STRUCT(r->out);
1719 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
1720 NDR_PULL_ALLOC(ndr, r->in.lock);
1722 _mem_save_lock_0 = NDR_PULL_GET_MEM_CTX(ndr);
1723 NDR_PULL_SET_MEM_CTX(ndr, r->in.lock, LIBNDR_FLAG_REF_ALLOC);
1724 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.lock));
1725 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_lock_0, LIBNDR_FLAG_REF_ALLOC);
1726 NDR_PULL_ALLOC(ndr, r->out.lock);
1727 *r->out.lock = *r->in.lock;
1729 if (flags & NDR_OUT) {
1730 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
1731 NDR_PULL_ALLOC(ndr, r->out.lock);
1733 _mem_save_lock_0 = NDR_PULL_GET_MEM_CTX(ndr);
1734 NDR_PULL_SET_MEM_CTX(ndr, r->out.lock, LIBNDR_FLAG_REF_ALLOC);
1735 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->out.lock));
1736 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_lock_0, LIBNDR_FLAG_REF_ALLOC);
1737 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
1739 return NDR_ERR_SUCCESS;
1742 _PUBLIC_ void ndr_print_svcctl_UnlockServiceDatabase(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_UnlockServiceDatabase *r)
1744 ndr_print_struct(ndr, name, "svcctl_UnlockServiceDatabase");
1745 ndr->depth++;
1746 if (flags & NDR_SET_VALUES) {
1747 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
1749 if (flags & NDR_IN) {
1750 ndr_print_struct(ndr, "in", "svcctl_UnlockServiceDatabase");
1751 ndr->depth++;
1752 ndr_print_ptr(ndr, "lock", r->in.lock);
1753 ndr->depth++;
1754 ndr_print_policy_handle(ndr, "lock", r->in.lock);
1755 ndr->depth--;
1756 ndr->depth--;
1758 if (flags & NDR_OUT) {
1759 ndr_print_struct(ndr, "out", "svcctl_UnlockServiceDatabase");
1760 ndr->depth++;
1761 ndr_print_ptr(ndr, "lock", r->out.lock);
1762 ndr->depth++;
1763 ndr_print_policy_handle(ndr, "lock", r->out.lock);
1764 ndr->depth--;
1765 ndr_print_WERROR(ndr, "result", r->out.result);
1766 ndr->depth--;
1768 ndr->depth--;
1771 static enum ndr_err_code ndr_push_svcctl_NotifyBootConfigStatus(struct ndr_push *ndr, int flags, const struct svcctl_NotifyBootConfigStatus *r)
1773 if (flags & NDR_IN) {
1775 if (flags & NDR_OUT) {
1776 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
1778 return NDR_ERR_SUCCESS;
1781 static enum ndr_err_code ndr_pull_svcctl_NotifyBootConfigStatus(struct ndr_pull *ndr, int flags, struct svcctl_NotifyBootConfigStatus *r)
1783 if (flags & NDR_IN) {
1785 if (flags & NDR_OUT) {
1786 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
1788 return NDR_ERR_SUCCESS;
1791 _PUBLIC_ void ndr_print_svcctl_NotifyBootConfigStatus(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_NotifyBootConfigStatus *r)
1793 ndr_print_struct(ndr, name, "svcctl_NotifyBootConfigStatus");
1794 ndr->depth++;
1795 if (flags & NDR_SET_VALUES) {
1796 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
1798 if (flags & NDR_IN) {
1799 ndr_print_struct(ndr, "in", "svcctl_NotifyBootConfigStatus");
1800 ndr->depth++;
1801 ndr->depth--;
1803 if (flags & NDR_OUT) {
1804 ndr_print_struct(ndr, "out", "svcctl_NotifyBootConfigStatus");
1805 ndr->depth++;
1806 ndr_print_WERROR(ndr, "result", r->out.result);
1807 ndr->depth--;
1809 ndr->depth--;
1812 static enum ndr_err_code ndr_push_svcctl_SCSetServiceBitsW(struct ndr_push *ndr, int flags, const struct svcctl_SCSetServiceBitsW *r)
1814 if (flags & NDR_IN) {
1815 if (r->in.handle == NULL) {
1816 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
1818 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
1819 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.bits));
1820 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.bitson));
1821 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.immediate));
1823 if (flags & NDR_OUT) {
1824 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
1826 return NDR_ERR_SUCCESS;
1829 static enum ndr_err_code ndr_pull_svcctl_SCSetServiceBitsW(struct ndr_pull *ndr, int flags, struct svcctl_SCSetServiceBitsW *r)
1831 TALLOC_CTX *_mem_save_handle_0;
1832 if (flags & NDR_IN) {
1833 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
1834 NDR_PULL_ALLOC(ndr, r->in.handle);
1836 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
1837 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
1838 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
1839 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
1840 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.bits));
1841 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.bitson));
1842 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.immediate));
1844 if (flags & NDR_OUT) {
1845 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
1847 return NDR_ERR_SUCCESS;
1850 _PUBLIC_ void ndr_print_svcctl_SCSetServiceBitsW(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_SCSetServiceBitsW *r)
1852 ndr_print_struct(ndr, name, "svcctl_SCSetServiceBitsW");
1853 ndr->depth++;
1854 if (flags & NDR_SET_VALUES) {
1855 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
1857 if (flags & NDR_IN) {
1858 ndr_print_struct(ndr, "in", "svcctl_SCSetServiceBitsW");
1859 ndr->depth++;
1860 ndr_print_ptr(ndr, "handle", r->in.handle);
1861 ndr->depth++;
1862 ndr_print_policy_handle(ndr, "handle", r->in.handle);
1863 ndr->depth--;
1864 ndr_print_uint32(ndr, "bits", r->in.bits);
1865 ndr_print_uint32(ndr, "bitson", r->in.bitson);
1866 ndr_print_uint32(ndr, "immediate", r->in.immediate);
1867 ndr->depth--;
1869 if (flags & NDR_OUT) {
1870 ndr_print_struct(ndr, "out", "svcctl_SCSetServiceBitsW");
1871 ndr->depth++;
1872 ndr_print_WERROR(ndr, "result", r->out.result);
1873 ndr->depth--;
1875 ndr->depth--;
1878 static enum ndr_err_code ndr_push_svcctl_ChangeServiceConfigW(struct ndr_push *ndr, int flags, const struct svcctl_ChangeServiceConfigW *r)
1880 if (flags & NDR_IN) {
1881 if (r->in.handle == NULL) {
1882 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
1884 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
1885 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.type));
1886 NDR_CHECK(ndr_push_svcctl_StartType(ndr, NDR_SCALARS, r->in.start_type));
1887 NDR_CHECK(ndr_push_svcctl_ErrorControl(ndr, NDR_SCALARS, r->in.error_control));
1888 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.binary_path));
1889 if (r->in.binary_path) {
1890 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.binary_path, CH_UTF16)));
1891 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
1892 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.binary_path, CH_UTF16)));
1893 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));
1895 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.load_order_group));
1896 if (r->in.load_order_group) {
1897 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.load_order_group, CH_UTF16)));
1898 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
1899 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.load_order_group, CH_UTF16)));
1900 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));
1902 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.dependencies));
1903 if (r->in.dependencies) {
1904 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.dependencies, CH_UTF16)));
1905 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
1906 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.dependencies, CH_UTF16)));
1907 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.dependencies, ndr_charset_length(r->in.dependencies, CH_UTF16), sizeof(uint16_t), CH_UTF16));
1909 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.service_start_name));
1910 if (r->in.service_start_name) {
1911 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.service_start_name, CH_UTF16)));
1912 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
1913 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.service_start_name, CH_UTF16)));
1914 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));
1916 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.password));
1917 if (r->in.password) {
1918 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.password, CH_UTF16)));
1919 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
1920 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.password, CH_UTF16)));
1921 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.password, ndr_charset_length(r->in.password, CH_UTF16), sizeof(uint16_t), CH_UTF16));
1923 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.display_name));
1924 if (r->in.display_name) {
1925 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.display_name, CH_UTF16)));
1926 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
1927 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.display_name, CH_UTF16)));
1928 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));
1931 if (flags & NDR_OUT) {
1932 if (r->out.tag_id == NULL) {
1933 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
1935 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.tag_id));
1936 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
1938 return NDR_ERR_SUCCESS;
1941 static enum ndr_err_code ndr_pull_svcctl_ChangeServiceConfigW(struct ndr_pull *ndr, int flags, struct svcctl_ChangeServiceConfigW *r)
1943 uint32_t _ptr_binary_path;
1944 uint32_t _ptr_load_order_group;
1945 uint32_t _ptr_dependencies;
1946 uint32_t _ptr_service_start_name;
1947 uint32_t _ptr_password;
1948 uint32_t _ptr_display_name;
1949 TALLOC_CTX *_mem_save_handle_0;
1950 TALLOC_CTX *_mem_save_binary_path_0;
1951 TALLOC_CTX *_mem_save_load_order_group_0;
1952 TALLOC_CTX *_mem_save_tag_id_0;
1953 TALLOC_CTX *_mem_save_dependencies_0;
1954 TALLOC_CTX *_mem_save_service_start_name_0;
1955 TALLOC_CTX *_mem_save_password_0;
1956 TALLOC_CTX *_mem_save_display_name_0;
1957 if (flags & NDR_IN) {
1958 ZERO_STRUCT(r->out);
1960 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
1961 NDR_PULL_ALLOC(ndr, r->in.handle);
1963 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
1964 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
1965 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
1966 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
1967 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.type));
1968 NDR_CHECK(ndr_pull_svcctl_StartType(ndr, NDR_SCALARS, &r->in.start_type));
1969 NDR_CHECK(ndr_pull_svcctl_ErrorControl(ndr, NDR_SCALARS, &r->in.error_control));
1970 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_binary_path));
1971 if (_ptr_binary_path) {
1972 NDR_PULL_ALLOC(ndr, r->in.binary_path);
1973 } else {
1974 r->in.binary_path = NULL;
1976 if (r->in.binary_path) {
1977 _mem_save_binary_path_0 = NDR_PULL_GET_MEM_CTX(ndr);
1978 NDR_PULL_SET_MEM_CTX(ndr, r->in.binary_path, 0);
1979 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.binary_path));
1980 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.binary_path));
1981 if (ndr_get_array_length(ndr, &r->in.binary_path) > ndr_get_array_size(ndr, &r->in.binary_path)) {
1982 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));
1984 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.binary_path), sizeof(uint16_t)));
1985 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));
1986 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_binary_path_0, 0);
1988 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_load_order_group));
1989 if (_ptr_load_order_group) {
1990 NDR_PULL_ALLOC(ndr, r->in.load_order_group);
1991 } else {
1992 r->in.load_order_group = NULL;
1994 if (r->in.load_order_group) {
1995 _mem_save_load_order_group_0 = NDR_PULL_GET_MEM_CTX(ndr);
1996 NDR_PULL_SET_MEM_CTX(ndr, r->in.load_order_group, 0);
1997 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.load_order_group));
1998 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.load_order_group));
1999 if (ndr_get_array_length(ndr, &r->in.load_order_group) > ndr_get_array_size(ndr, &r->in.load_order_group)) {
2000 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));
2002 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.load_order_group), sizeof(uint16_t)));
2003 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));
2004 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_load_order_group_0, 0);
2006 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_dependencies));
2007 if (_ptr_dependencies) {
2008 NDR_PULL_ALLOC(ndr, r->in.dependencies);
2009 } else {
2010 r->in.dependencies = NULL;
2012 if (r->in.dependencies) {
2013 _mem_save_dependencies_0 = NDR_PULL_GET_MEM_CTX(ndr);
2014 NDR_PULL_SET_MEM_CTX(ndr, r->in.dependencies, 0);
2015 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.dependencies));
2016 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.dependencies));
2017 if (ndr_get_array_length(ndr, &r->in.dependencies) > ndr_get_array_size(ndr, &r->in.dependencies)) {
2018 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));
2020 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.dependencies), sizeof(uint16_t)));
2021 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.dependencies, ndr_get_array_length(ndr, &r->in.dependencies), sizeof(uint16_t), CH_UTF16));
2022 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_dependencies_0, 0);
2024 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_service_start_name));
2025 if (_ptr_service_start_name) {
2026 NDR_PULL_ALLOC(ndr, r->in.service_start_name);
2027 } else {
2028 r->in.service_start_name = NULL;
2030 if (r->in.service_start_name) {
2031 _mem_save_service_start_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
2032 NDR_PULL_SET_MEM_CTX(ndr, r->in.service_start_name, 0);
2033 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.service_start_name));
2034 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.service_start_name));
2035 if (ndr_get_array_length(ndr, &r->in.service_start_name) > ndr_get_array_size(ndr, &r->in.service_start_name)) {
2036 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));
2038 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.service_start_name), sizeof(uint16_t)));
2039 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));
2040 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_service_start_name_0, 0);
2042 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_password));
2043 if (_ptr_password) {
2044 NDR_PULL_ALLOC(ndr, r->in.password);
2045 } else {
2046 r->in.password = NULL;
2048 if (r->in.password) {
2049 _mem_save_password_0 = NDR_PULL_GET_MEM_CTX(ndr);
2050 NDR_PULL_SET_MEM_CTX(ndr, r->in.password, 0);
2051 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.password));
2052 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.password));
2053 if (ndr_get_array_length(ndr, &r->in.password) > ndr_get_array_size(ndr, &r->in.password)) {
2054 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));
2056 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.password), sizeof(uint16_t)));
2057 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.password, ndr_get_array_length(ndr, &r->in.password), sizeof(uint16_t), CH_UTF16));
2058 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_password_0, 0);
2060 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_display_name));
2061 if (_ptr_display_name) {
2062 NDR_PULL_ALLOC(ndr, r->in.display_name);
2063 } else {
2064 r->in.display_name = NULL;
2066 if (r->in.display_name) {
2067 _mem_save_display_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
2068 NDR_PULL_SET_MEM_CTX(ndr, r->in.display_name, 0);
2069 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.display_name));
2070 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.display_name));
2071 if (ndr_get_array_length(ndr, &r->in.display_name) > ndr_get_array_size(ndr, &r->in.display_name)) {
2072 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));
2074 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.display_name), sizeof(uint16_t)));
2075 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));
2076 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_display_name_0, 0);
2078 NDR_PULL_ALLOC(ndr, r->out.tag_id);
2079 ZERO_STRUCTP(r->out.tag_id);
2081 if (flags & NDR_OUT) {
2082 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
2083 NDR_PULL_ALLOC(ndr, r->out.tag_id);
2085 _mem_save_tag_id_0 = NDR_PULL_GET_MEM_CTX(ndr);
2086 NDR_PULL_SET_MEM_CTX(ndr, r->out.tag_id, LIBNDR_FLAG_REF_ALLOC);
2087 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.tag_id));
2088 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_tag_id_0, LIBNDR_FLAG_REF_ALLOC);
2089 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
2091 return NDR_ERR_SUCCESS;
2094 _PUBLIC_ void ndr_print_svcctl_ChangeServiceConfigW(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_ChangeServiceConfigW *r)
2096 ndr_print_struct(ndr, name, "svcctl_ChangeServiceConfigW");
2097 ndr->depth++;
2098 if (flags & NDR_SET_VALUES) {
2099 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
2101 if (flags & NDR_IN) {
2102 ndr_print_struct(ndr, "in", "svcctl_ChangeServiceConfigW");
2103 ndr->depth++;
2104 ndr_print_ptr(ndr, "handle", r->in.handle);
2105 ndr->depth++;
2106 ndr_print_policy_handle(ndr, "handle", r->in.handle);
2107 ndr->depth--;
2108 ndr_print_uint32(ndr, "type", r->in.type);
2109 ndr_print_svcctl_StartType(ndr, "start_type", r->in.start_type);
2110 ndr_print_svcctl_ErrorControl(ndr, "error_control", r->in.error_control);
2111 ndr_print_ptr(ndr, "binary_path", r->in.binary_path);
2112 ndr->depth++;
2113 if (r->in.binary_path) {
2114 ndr_print_string(ndr, "binary_path", r->in.binary_path);
2116 ndr->depth--;
2117 ndr_print_ptr(ndr, "load_order_group", r->in.load_order_group);
2118 ndr->depth++;
2119 if (r->in.load_order_group) {
2120 ndr_print_string(ndr, "load_order_group", r->in.load_order_group);
2122 ndr->depth--;
2123 ndr_print_ptr(ndr, "dependencies", r->in.dependencies);
2124 ndr->depth++;
2125 if (r->in.dependencies) {
2126 ndr_print_string(ndr, "dependencies", r->in.dependencies);
2128 ndr->depth--;
2129 ndr_print_ptr(ndr, "service_start_name", r->in.service_start_name);
2130 ndr->depth++;
2131 if (r->in.service_start_name) {
2132 ndr_print_string(ndr, "service_start_name", r->in.service_start_name);
2134 ndr->depth--;
2135 ndr_print_ptr(ndr, "password", r->in.password);
2136 ndr->depth++;
2137 if (r->in.password) {
2138 ndr_print_string(ndr, "password", r->in.password);
2140 ndr->depth--;
2141 ndr_print_ptr(ndr, "display_name", r->in.display_name);
2142 ndr->depth++;
2143 if (r->in.display_name) {
2144 ndr_print_string(ndr, "display_name", r->in.display_name);
2146 ndr->depth--;
2147 ndr->depth--;
2149 if (flags & NDR_OUT) {
2150 ndr_print_struct(ndr, "out", "svcctl_ChangeServiceConfigW");
2151 ndr->depth++;
2152 ndr_print_ptr(ndr, "tag_id", r->out.tag_id);
2153 ndr->depth++;
2154 ndr_print_uint32(ndr, "tag_id", *r->out.tag_id);
2155 ndr->depth--;
2156 ndr_print_WERROR(ndr, "result", r->out.result);
2157 ndr->depth--;
2159 ndr->depth--;
2162 static enum ndr_err_code ndr_push_svcctl_CreateServiceW(struct ndr_push *ndr, int flags, const struct svcctl_CreateServiceW *r)
2164 if (flags & NDR_IN) {
2165 if (r->in.scmanager_handle == NULL) {
2166 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
2168 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.scmanager_handle));
2169 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.ServiceName, CH_UTF16)));
2170 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
2171 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.ServiceName, CH_UTF16)));
2172 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.ServiceName, ndr_charset_length(r->in.ServiceName, CH_UTF16), sizeof(uint16_t), CH_UTF16));
2173 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.DisplayName));
2174 if (r->in.DisplayName) {
2175 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.DisplayName, CH_UTF16)));
2176 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
2177 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.DisplayName, CH_UTF16)));
2178 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.DisplayName, ndr_charset_length(r->in.DisplayName, CH_UTF16), sizeof(uint16_t), CH_UTF16));
2180 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.desired_access));
2181 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.type));
2182 NDR_CHECK(ndr_push_svcctl_StartType(ndr, NDR_SCALARS, r->in.start_type));
2183 NDR_CHECK(ndr_push_svcctl_ErrorControl(ndr, NDR_SCALARS, r->in.error_control));
2184 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.binary_path, CH_UTF16)));
2185 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
2186 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.binary_path, CH_UTF16)));
2187 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));
2188 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.LoadOrderGroupKey));
2189 if (r->in.LoadOrderGroupKey) {
2190 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.LoadOrderGroupKey, CH_UTF16)));
2191 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
2192 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.LoadOrderGroupKey, CH_UTF16)));
2193 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.LoadOrderGroupKey, ndr_charset_length(r->in.LoadOrderGroupKey, CH_UTF16), sizeof(uint16_t), CH_UTF16));
2195 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.TagId));
2196 if (r->in.TagId) {
2197 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->in.TagId));
2199 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.dependencies));
2200 if (r->in.dependencies) {
2201 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.dependencies_size));
2202 NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->in.dependencies, r->in.dependencies_size));
2204 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.dependencies_size));
2205 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.service_start_name));
2206 if (r->in.service_start_name) {
2207 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.service_start_name, CH_UTF16)));
2208 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
2209 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.service_start_name, CH_UTF16)));
2210 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));
2212 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.password));
2213 if (r->in.password) {
2214 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.password_size));
2215 NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->in.password, r->in.password_size));
2217 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.password_size));
2219 if (flags & NDR_OUT) {
2220 NDR_CHECK(ndr_push_unique_ptr(ndr, r->out.TagId));
2221 if (r->out.TagId) {
2222 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.TagId));
2224 if (r->out.handle == NULL) {
2225 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
2227 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->out.handle));
2228 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
2230 return NDR_ERR_SUCCESS;
2233 static enum ndr_err_code ndr_pull_svcctl_CreateServiceW(struct ndr_pull *ndr, int flags, struct svcctl_CreateServiceW *r)
2235 uint32_t _ptr_DisplayName;
2236 uint32_t _ptr_LoadOrderGroupKey;
2237 uint32_t _ptr_TagId;
2238 uint32_t _ptr_dependencies;
2239 uint32_t _ptr_service_start_name;
2240 uint32_t _ptr_password;
2241 TALLOC_CTX *_mem_save_scmanager_handle_0;
2242 TALLOC_CTX *_mem_save_DisplayName_0;
2243 TALLOC_CTX *_mem_save_LoadOrderGroupKey_0;
2244 TALLOC_CTX *_mem_save_TagId_0;
2245 TALLOC_CTX *_mem_save_dependencies_0;
2246 TALLOC_CTX *_mem_save_service_start_name_0;
2247 TALLOC_CTX *_mem_save_password_0;
2248 TALLOC_CTX *_mem_save_handle_0;
2249 if (flags & NDR_IN) {
2250 ZERO_STRUCT(r->out);
2252 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
2253 NDR_PULL_ALLOC(ndr, r->in.scmanager_handle);
2255 _mem_save_scmanager_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
2256 NDR_PULL_SET_MEM_CTX(ndr, r->in.scmanager_handle, LIBNDR_FLAG_REF_ALLOC);
2257 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.scmanager_handle));
2258 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_scmanager_handle_0, LIBNDR_FLAG_REF_ALLOC);
2259 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.ServiceName));
2260 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.ServiceName));
2261 if (ndr_get_array_length(ndr, &r->in.ServiceName) > ndr_get_array_size(ndr, &r->in.ServiceName)) {
2262 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));
2264 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.ServiceName), sizeof(uint16_t)));
2265 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.ServiceName, ndr_get_array_length(ndr, &r->in.ServiceName), sizeof(uint16_t), CH_UTF16));
2266 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_DisplayName));
2267 if (_ptr_DisplayName) {
2268 NDR_PULL_ALLOC(ndr, r->in.DisplayName);
2269 } else {
2270 r->in.DisplayName = NULL;
2272 if (r->in.DisplayName) {
2273 _mem_save_DisplayName_0 = NDR_PULL_GET_MEM_CTX(ndr);
2274 NDR_PULL_SET_MEM_CTX(ndr, r->in.DisplayName, 0);
2275 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.DisplayName));
2276 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.DisplayName));
2277 if (ndr_get_array_length(ndr, &r->in.DisplayName) > ndr_get_array_size(ndr, &r->in.DisplayName)) {
2278 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));
2280 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.DisplayName), sizeof(uint16_t)));
2281 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.DisplayName, ndr_get_array_length(ndr, &r->in.DisplayName), sizeof(uint16_t), CH_UTF16));
2282 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_DisplayName_0, 0);
2284 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.desired_access));
2285 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.type));
2286 NDR_CHECK(ndr_pull_svcctl_StartType(ndr, NDR_SCALARS, &r->in.start_type));
2287 NDR_CHECK(ndr_pull_svcctl_ErrorControl(ndr, NDR_SCALARS, &r->in.error_control));
2288 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.binary_path));
2289 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.binary_path));
2290 if (ndr_get_array_length(ndr, &r->in.binary_path) > ndr_get_array_size(ndr, &r->in.binary_path)) {
2291 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));
2293 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.binary_path), sizeof(uint16_t)));
2294 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));
2295 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_LoadOrderGroupKey));
2296 if (_ptr_LoadOrderGroupKey) {
2297 NDR_PULL_ALLOC(ndr, r->in.LoadOrderGroupKey);
2298 } else {
2299 r->in.LoadOrderGroupKey = NULL;
2301 if (r->in.LoadOrderGroupKey) {
2302 _mem_save_LoadOrderGroupKey_0 = NDR_PULL_GET_MEM_CTX(ndr);
2303 NDR_PULL_SET_MEM_CTX(ndr, r->in.LoadOrderGroupKey, 0);
2304 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.LoadOrderGroupKey));
2305 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.LoadOrderGroupKey));
2306 if (ndr_get_array_length(ndr, &r->in.LoadOrderGroupKey) > ndr_get_array_size(ndr, &r->in.LoadOrderGroupKey)) {
2307 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));
2309 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.LoadOrderGroupKey), sizeof(uint16_t)));
2310 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.LoadOrderGroupKey, ndr_get_array_length(ndr, &r->in.LoadOrderGroupKey), sizeof(uint16_t), CH_UTF16));
2311 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_LoadOrderGroupKey_0, 0);
2313 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_TagId));
2314 if (_ptr_TagId) {
2315 NDR_PULL_ALLOC(ndr, r->in.TagId);
2316 } else {
2317 r->in.TagId = NULL;
2319 if (r->in.TagId) {
2320 _mem_save_TagId_0 = NDR_PULL_GET_MEM_CTX(ndr);
2321 NDR_PULL_SET_MEM_CTX(ndr, r->in.TagId, 0);
2322 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->in.TagId));
2323 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_TagId_0, 0);
2325 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_dependencies));
2326 if (_ptr_dependencies) {
2327 NDR_PULL_ALLOC(ndr, r->in.dependencies);
2328 } else {
2329 r->in.dependencies = NULL;
2331 if (r->in.dependencies) {
2332 _mem_save_dependencies_0 = NDR_PULL_GET_MEM_CTX(ndr);
2333 NDR_PULL_SET_MEM_CTX(ndr, r->in.dependencies, 0);
2334 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.dependencies));
2335 NDR_PULL_ALLOC_N(ndr, r->in.dependencies, ndr_get_array_size(ndr, &r->in.dependencies));
2336 NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->in.dependencies, ndr_get_array_size(ndr, &r->in.dependencies)));
2337 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_dependencies_0, 0);
2339 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.dependencies_size));
2340 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_service_start_name));
2341 if (_ptr_service_start_name) {
2342 NDR_PULL_ALLOC(ndr, r->in.service_start_name);
2343 } else {
2344 r->in.service_start_name = NULL;
2346 if (r->in.service_start_name) {
2347 _mem_save_service_start_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
2348 NDR_PULL_SET_MEM_CTX(ndr, r->in.service_start_name, 0);
2349 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.service_start_name));
2350 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.service_start_name));
2351 if (ndr_get_array_length(ndr, &r->in.service_start_name) > ndr_get_array_size(ndr, &r->in.service_start_name)) {
2352 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));
2354 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.service_start_name), sizeof(uint16_t)));
2355 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));
2356 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_service_start_name_0, 0);
2358 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_password));
2359 if (_ptr_password) {
2360 NDR_PULL_ALLOC(ndr, r->in.password);
2361 } else {
2362 r->in.password = NULL;
2364 if (r->in.password) {
2365 _mem_save_password_0 = NDR_PULL_GET_MEM_CTX(ndr);
2366 NDR_PULL_SET_MEM_CTX(ndr, r->in.password, 0);
2367 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.password));
2368 NDR_PULL_ALLOC_N(ndr, r->in.password, ndr_get_array_size(ndr, &r->in.password));
2369 NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->in.password, ndr_get_array_size(ndr, &r->in.password)));
2370 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_password_0, 0);
2372 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.password_size));
2373 NDR_PULL_ALLOC(ndr, r->out.handle);
2374 ZERO_STRUCTP(r->out.handle);
2375 if (r->in.dependencies) {
2376 NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->in.dependencies, r->in.dependencies_size));
2378 if (r->in.password) {
2379 NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->in.password, r->in.password_size));
2382 if (flags & NDR_OUT) {
2383 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_TagId));
2384 if (_ptr_TagId) {
2385 NDR_PULL_ALLOC(ndr, r->out.TagId);
2386 } else {
2387 r->out.TagId = NULL;
2389 if (r->out.TagId) {
2390 _mem_save_TagId_0 = NDR_PULL_GET_MEM_CTX(ndr);
2391 NDR_PULL_SET_MEM_CTX(ndr, r->out.TagId, 0);
2392 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.TagId));
2393 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_TagId_0, 0);
2395 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
2396 NDR_PULL_ALLOC(ndr, r->out.handle);
2398 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
2399 NDR_PULL_SET_MEM_CTX(ndr, r->out.handle, LIBNDR_FLAG_REF_ALLOC);
2400 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->out.handle));
2401 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
2402 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
2404 return NDR_ERR_SUCCESS;
2407 _PUBLIC_ void ndr_print_svcctl_CreateServiceW(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_CreateServiceW *r)
2409 ndr_print_struct(ndr, name, "svcctl_CreateServiceW");
2410 ndr->depth++;
2411 if (flags & NDR_SET_VALUES) {
2412 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
2414 if (flags & NDR_IN) {
2415 ndr_print_struct(ndr, "in", "svcctl_CreateServiceW");
2416 ndr->depth++;
2417 ndr_print_ptr(ndr, "scmanager_handle", r->in.scmanager_handle);
2418 ndr->depth++;
2419 ndr_print_policy_handle(ndr, "scmanager_handle", r->in.scmanager_handle);
2420 ndr->depth--;
2421 ndr_print_string(ndr, "ServiceName", r->in.ServiceName);
2422 ndr_print_ptr(ndr, "DisplayName", r->in.DisplayName);
2423 ndr->depth++;
2424 if (r->in.DisplayName) {
2425 ndr_print_string(ndr, "DisplayName", r->in.DisplayName);
2427 ndr->depth--;
2428 ndr_print_uint32(ndr, "desired_access", r->in.desired_access);
2429 ndr_print_uint32(ndr, "type", r->in.type);
2430 ndr_print_svcctl_StartType(ndr, "start_type", r->in.start_type);
2431 ndr_print_svcctl_ErrorControl(ndr, "error_control", r->in.error_control);
2432 ndr_print_string(ndr, "binary_path", r->in.binary_path);
2433 ndr_print_ptr(ndr, "LoadOrderGroupKey", r->in.LoadOrderGroupKey);
2434 ndr->depth++;
2435 if (r->in.LoadOrderGroupKey) {
2436 ndr_print_string(ndr, "LoadOrderGroupKey", r->in.LoadOrderGroupKey);
2438 ndr->depth--;
2439 ndr_print_ptr(ndr, "TagId", r->in.TagId);
2440 ndr->depth++;
2441 if (r->in.TagId) {
2442 ndr_print_uint32(ndr, "TagId", *r->in.TagId);
2444 ndr->depth--;
2445 ndr_print_ptr(ndr, "dependencies", r->in.dependencies);
2446 ndr->depth++;
2447 if (r->in.dependencies) {
2448 ndr_print_array_uint8(ndr, "dependencies", r->in.dependencies, r->in.dependencies_size);
2450 ndr->depth--;
2451 ndr_print_uint32(ndr, "dependencies_size", r->in.dependencies_size);
2452 ndr_print_ptr(ndr, "service_start_name", r->in.service_start_name);
2453 ndr->depth++;
2454 if (r->in.service_start_name) {
2455 ndr_print_string(ndr, "service_start_name", r->in.service_start_name);
2457 ndr->depth--;
2458 ndr_print_ptr(ndr, "password", r->in.password);
2459 ndr->depth++;
2460 if (r->in.password) {
2461 ndr_print_array_uint8(ndr, "password", r->in.password, r->in.password_size);
2463 ndr->depth--;
2464 ndr_print_uint32(ndr, "password_size", r->in.password_size);
2465 ndr->depth--;
2467 if (flags & NDR_OUT) {
2468 ndr_print_struct(ndr, "out", "svcctl_CreateServiceW");
2469 ndr->depth++;
2470 ndr_print_ptr(ndr, "TagId", r->out.TagId);
2471 ndr->depth++;
2472 if (r->out.TagId) {
2473 ndr_print_uint32(ndr, "TagId", *r->out.TagId);
2475 ndr->depth--;
2476 ndr_print_ptr(ndr, "handle", r->out.handle);
2477 ndr->depth++;
2478 ndr_print_policy_handle(ndr, "handle", r->out.handle);
2479 ndr->depth--;
2480 ndr_print_WERROR(ndr, "result", r->out.result);
2481 ndr->depth--;
2483 ndr->depth--;
2486 static enum ndr_err_code ndr_push_svcctl_EnumDependentServicesW(struct ndr_push *ndr, int flags, const struct svcctl_EnumDependentServicesW *r)
2488 if (flags & NDR_IN) {
2489 if (r->in.service == NULL) {
2490 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
2492 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.service));
2493 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.state));
2494 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.buf_size));
2496 if (flags & NDR_OUT) {
2497 if (r->out.service_status == NULL) {
2498 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
2500 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.buf_size));
2501 NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->out.service_status, r->in.buf_size));
2502 if (r->out.bytes_needed == NULL) {
2503 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
2505 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.bytes_needed));
2506 if (r->out.services_returned == NULL) {
2507 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
2509 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.services_returned));
2510 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
2512 return NDR_ERR_SUCCESS;
2515 static enum ndr_err_code ndr_pull_svcctl_EnumDependentServicesW(struct ndr_pull *ndr, int flags, struct svcctl_EnumDependentServicesW *r)
2517 TALLOC_CTX *_mem_save_service_0;
2518 TALLOC_CTX *_mem_save_bytes_needed_0;
2519 TALLOC_CTX *_mem_save_services_returned_0;
2520 if (flags & NDR_IN) {
2521 ZERO_STRUCT(r->out);
2523 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
2524 NDR_PULL_ALLOC(ndr, r->in.service);
2526 _mem_save_service_0 = NDR_PULL_GET_MEM_CTX(ndr);
2527 NDR_PULL_SET_MEM_CTX(ndr, r->in.service, LIBNDR_FLAG_REF_ALLOC);
2528 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.service));
2529 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_service_0, LIBNDR_FLAG_REF_ALLOC);
2530 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.state));
2531 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.buf_size));
2532 if (r->in.buf_size < 0 || r->in.buf_size > 0x40000) {
2533 return ndr_pull_error(ndr, NDR_ERR_RANGE, "value out of range");
2535 NDR_PULL_ALLOC_N(ndr, r->out.service_status, r->in.buf_size);
2536 memset(CONST_DISCARD(struct svcctl_EnumDependentServicesW *,r->out.service_status), 0, (r->in.buf_size) * sizeof(*r->out.service_status));
2537 NDR_PULL_ALLOC(ndr, r->out.bytes_needed);
2538 ZERO_STRUCTP(r->out.bytes_needed);
2539 NDR_PULL_ALLOC(ndr, r->out.services_returned);
2540 ZERO_STRUCTP(r->out.services_returned);
2542 if (flags & NDR_OUT) {
2543 NDR_CHECK(ndr_pull_array_size(ndr, &r->out.service_status));
2544 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
2545 NDR_PULL_ALLOC_N(ndr, r->out.service_status, ndr_get_array_size(ndr, &r->out.service_status));
2547 NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->out.service_status, ndr_get_array_size(ndr, &r->out.service_status)));
2548 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
2549 NDR_PULL_ALLOC(ndr, r->out.bytes_needed);
2551 _mem_save_bytes_needed_0 = NDR_PULL_GET_MEM_CTX(ndr);
2552 NDR_PULL_SET_MEM_CTX(ndr, r->out.bytes_needed, LIBNDR_FLAG_REF_ALLOC);
2553 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.bytes_needed));
2554 if (*r->out.bytes_needed < 0 || *r->out.bytes_needed > 0x40000) {
2555 return ndr_pull_error(ndr, NDR_ERR_RANGE, "value out of range");
2557 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_bytes_needed_0, LIBNDR_FLAG_REF_ALLOC);
2558 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
2559 NDR_PULL_ALLOC(ndr, r->out.services_returned);
2561 _mem_save_services_returned_0 = NDR_PULL_GET_MEM_CTX(ndr);
2562 NDR_PULL_SET_MEM_CTX(ndr, r->out.services_returned, LIBNDR_FLAG_REF_ALLOC);
2563 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.services_returned));
2564 if (*r->out.services_returned < 0 || *r->out.services_returned > 0x40000) {
2565 return ndr_pull_error(ndr, NDR_ERR_RANGE, "value out of range");
2567 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_services_returned_0, LIBNDR_FLAG_REF_ALLOC);
2568 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
2569 if (r->out.service_status) {
2570 NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->out.service_status, r->in.buf_size));
2573 return NDR_ERR_SUCCESS;
2576 _PUBLIC_ void ndr_print_svcctl_EnumDependentServicesW(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_EnumDependentServicesW *r)
2578 ndr_print_struct(ndr, name, "svcctl_EnumDependentServicesW");
2579 ndr->depth++;
2580 if (flags & NDR_SET_VALUES) {
2581 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
2583 if (flags & NDR_IN) {
2584 ndr_print_struct(ndr, "in", "svcctl_EnumDependentServicesW");
2585 ndr->depth++;
2586 ndr_print_ptr(ndr, "service", r->in.service);
2587 ndr->depth++;
2588 ndr_print_policy_handle(ndr, "service", r->in.service);
2589 ndr->depth--;
2590 ndr_print_uint32(ndr, "state", r->in.state);
2591 ndr_print_uint32(ndr, "buf_size", r->in.buf_size);
2592 ndr->depth--;
2594 if (flags & NDR_OUT) {
2595 ndr_print_struct(ndr, "out", "svcctl_EnumDependentServicesW");
2596 ndr->depth++;
2597 ndr_print_ptr(ndr, "service_status", r->out.service_status);
2598 ndr->depth++;
2599 ndr_print_array_uint8(ndr, "service_status", r->out.service_status, r->in.buf_size);
2600 ndr->depth--;
2601 ndr_print_ptr(ndr, "bytes_needed", r->out.bytes_needed);
2602 ndr->depth++;
2603 ndr_print_uint32(ndr, "bytes_needed", *r->out.bytes_needed);
2604 ndr->depth--;
2605 ndr_print_ptr(ndr, "services_returned", r->out.services_returned);
2606 ndr->depth++;
2607 ndr_print_uint32(ndr, "services_returned", *r->out.services_returned);
2608 ndr->depth--;
2609 ndr_print_WERROR(ndr, "result", r->out.result);
2610 ndr->depth--;
2612 ndr->depth--;
2615 static enum ndr_err_code ndr_push_svcctl_EnumServicesStatusW(struct ndr_push *ndr, int flags, const struct svcctl_EnumServicesStatusW *r)
2617 if (flags & NDR_IN) {
2618 if (r->in.handle == NULL) {
2619 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
2621 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
2622 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.type));
2623 NDR_CHECK(ndr_push_svcctl_ServiceState(ndr, NDR_SCALARS, r->in.state));
2624 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.buf_size));
2625 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.resume_handle));
2626 if (r->in.resume_handle) {
2627 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->in.resume_handle));
2630 if (flags & NDR_OUT) {
2631 if (r->out.service == NULL) {
2632 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
2634 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.buf_size));
2635 NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->out.service, r->in.buf_size));
2636 if (r->out.bytes_needed == NULL) {
2637 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
2639 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.bytes_needed));
2640 if (r->out.services_returned == NULL) {
2641 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
2643 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.services_returned));
2644 NDR_CHECK(ndr_push_unique_ptr(ndr, r->out.resume_handle));
2645 if (r->out.resume_handle) {
2646 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.resume_handle));
2648 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
2650 return NDR_ERR_SUCCESS;
2653 static enum ndr_err_code ndr_pull_svcctl_EnumServicesStatusW(struct ndr_pull *ndr, int flags, struct svcctl_EnumServicesStatusW *r)
2655 uint32_t _ptr_resume_handle;
2656 TALLOC_CTX *_mem_save_handle_0;
2657 TALLOC_CTX *_mem_save_bytes_needed_0;
2658 TALLOC_CTX *_mem_save_services_returned_0;
2659 TALLOC_CTX *_mem_save_resume_handle_0;
2660 if (flags & NDR_IN) {
2661 ZERO_STRUCT(r->out);
2663 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
2664 NDR_PULL_ALLOC(ndr, r->in.handle);
2666 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
2667 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
2668 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
2669 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
2670 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.type));
2671 NDR_CHECK(ndr_pull_svcctl_ServiceState(ndr, NDR_SCALARS, &r->in.state));
2672 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.buf_size));
2673 if (r->in.buf_size < 0 || r->in.buf_size > 262144) {
2674 return ndr_pull_error(ndr, NDR_ERR_RANGE, "value out of range");
2676 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_resume_handle));
2677 if (_ptr_resume_handle) {
2678 NDR_PULL_ALLOC(ndr, r->in.resume_handle);
2679 } else {
2680 r->in.resume_handle = NULL;
2682 if (r->in.resume_handle) {
2683 _mem_save_resume_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
2684 NDR_PULL_SET_MEM_CTX(ndr, r->in.resume_handle, 0);
2685 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->in.resume_handle));
2686 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_resume_handle_0, 0);
2688 NDR_PULL_ALLOC_N(ndr, r->out.service, r->in.buf_size);
2689 memset(CONST_DISCARD(struct svcctl_EnumServicesStatusW *,r->out.service), 0, (r->in.buf_size) * sizeof(*r->out.service));
2690 NDR_PULL_ALLOC(ndr, r->out.bytes_needed);
2691 ZERO_STRUCTP(r->out.bytes_needed);
2692 NDR_PULL_ALLOC(ndr, r->out.services_returned);
2693 ZERO_STRUCTP(r->out.services_returned);
2695 if (flags & NDR_OUT) {
2696 NDR_CHECK(ndr_pull_array_size(ndr, &r->out.service));
2697 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
2698 NDR_PULL_ALLOC_N(ndr, r->out.service, ndr_get_array_size(ndr, &r->out.service));
2700 NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->out.service, ndr_get_array_size(ndr, &r->out.service)));
2701 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
2702 NDR_PULL_ALLOC(ndr, r->out.bytes_needed);
2704 _mem_save_bytes_needed_0 = NDR_PULL_GET_MEM_CTX(ndr);
2705 NDR_PULL_SET_MEM_CTX(ndr, r->out.bytes_needed, LIBNDR_FLAG_REF_ALLOC);
2706 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.bytes_needed));
2707 if (*r->out.bytes_needed < 0 || *r->out.bytes_needed > 262144) {
2708 return ndr_pull_error(ndr, NDR_ERR_RANGE, "value out of range");
2710 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_bytes_needed_0, LIBNDR_FLAG_REF_ALLOC);
2711 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
2712 NDR_PULL_ALLOC(ndr, r->out.services_returned);
2714 _mem_save_services_returned_0 = NDR_PULL_GET_MEM_CTX(ndr);
2715 NDR_PULL_SET_MEM_CTX(ndr, r->out.services_returned, LIBNDR_FLAG_REF_ALLOC);
2716 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.services_returned));
2717 if (*r->out.services_returned < 0 || *r->out.services_returned > 262144) {
2718 return ndr_pull_error(ndr, NDR_ERR_RANGE, "value out of range");
2720 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_services_returned_0, LIBNDR_FLAG_REF_ALLOC);
2721 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_resume_handle));
2722 if (_ptr_resume_handle) {
2723 NDR_PULL_ALLOC(ndr, r->out.resume_handle);
2724 } else {
2725 r->out.resume_handle = NULL;
2727 if (r->out.resume_handle) {
2728 _mem_save_resume_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
2729 NDR_PULL_SET_MEM_CTX(ndr, r->out.resume_handle, 0);
2730 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.resume_handle));
2731 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_resume_handle_0, 0);
2733 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
2734 if (r->out.service) {
2735 NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->out.service, r->in.buf_size));
2738 return NDR_ERR_SUCCESS;
2741 _PUBLIC_ void ndr_print_svcctl_EnumServicesStatusW(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_EnumServicesStatusW *r)
2743 ndr_print_struct(ndr, name, "svcctl_EnumServicesStatusW");
2744 ndr->depth++;
2745 if (flags & NDR_SET_VALUES) {
2746 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
2748 if (flags & NDR_IN) {
2749 ndr_print_struct(ndr, "in", "svcctl_EnumServicesStatusW");
2750 ndr->depth++;
2751 ndr_print_ptr(ndr, "handle", r->in.handle);
2752 ndr->depth++;
2753 ndr_print_policy_handle(ndr, "handle", r->in.handle);
2754 ndr->depth--;
2755 ndr_print_uint32(ndr, "type", r->in.type);
2756 ndr_print_svcctl_ServiceState(ndr, "state", r->in.state);
2757 ndr_print_uint32(ndr, "buf_size", r->in.buf_size);
2758 ndr_print_ptr(ndr, "resume_handle", r->in.resume_handle);
2759 ndr->depth++;
2760 if (r->in.resume_handle) {
2761 ndr_print_uint32(ndr, "resume_handle", *r->in.resume_handle);
2763 ndr->depth--;
2764 ndr->depth--;
2766 if (flags & NDR_OUT) {
2767 ndr_print_struct(ndr, "out", "svcctl_EnumServicesStatusW");
2768 ndr->depth++;
2769 ndr_print_ptr(ndr, "service", r->out.service);
2770 ndr->depth++;
2771 ndr_print_array_uint8(ndr, "service", r->out.service, r->in.buf_size);
2772 ndr->depth--;
2773 ndr_print_ptr(ndr, "bytes_needed", r->out.bytes_needed);
2774 ndr->depth++;
2775 ndr_print_uint32(ndr, "bytes_needed", *r->out.bytes_needed);
2776 ndr->depth--;
2777 ndr_print_ptr(ndr, "services_returned", r->out.services_returned);
2778 ndr->depth++;
2779 ndr_print_uint32(ndr, "services_returned", *r->out.services_returned);
2780 ndr->depth--;
2781 ndr_print_ptr(ndr, "resume_handle", r->out.resume_handle);
2782 ndr->depth++;
2783 if (r->out.resume_handle) {
2784 ndr_print_uint32(ndr, "resume_handle", *r->out.resume_handle);
2786 ndr->depth--;
2787 ndr_print_WERROR(ndr, "result", r->out.result);
2788 ndr->depth--;
2790 ndr->depth--;
2793 static enum ndr_err_code ndr_push_svcctl_OpenSCManagerW(struct ndr_push *ndr, int flags, const struct svcctl_OpenSCManagerW *r)
2795 if (flags & NDR_IN) {
2796 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.MachineName));
2797 if (r->in.MachineName) {
2798 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.MachineName, CH_UTF16)));
2799 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
2800 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.MachineName, CH_UTF16)));
2801 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.MachineName, ndr_charset_length(r->in.MachineName, CH_UTF16), sizeof(uint16_t), CH_UTF16));
2803 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.DatabaseName));
2804 if (r->in.DatabaseName) {
2805 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.DatabaseName, CH_UTF16)));
2806 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
2807 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.DatabaseName, CH_UTF16)));
2808 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.DatabaseName, ndr_charset_length(r->in.DatabaseName, CH_UTF16), sizeof(uint16_t), CH_UTF16));
2810 NDR_CHECK(ndr_push_svcctl_MgrAccessMask(ndr, NDR_SCALARS, r->in.access_mask));
2812 if (flags & NDR_OUT) {
2813 if (r->out.handle == NULL) {
2814 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
2816 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->out.handle));
2817 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
2819 return NDR_ERR_SUCCESS;
2822 static enum ndr_err_code ndr_pull_svcctl_OpenSCManagerW(struct ndr_pull *ndr, int flags, struct svcctl_OpenSCManagerW *r)
2824 uint32_t _ptr_MachineName;
2825 uint32_t _ptr_DatabaseName;
2826 TALLOC_CTX *_mem_save_MachineName_0;
2827 TALLOC_CTX *_mem_save_DatabaseName_0;
2828 TALLOC_CTX *_mem_save_handle_0;
2829 if (flags & NDR_IN) {
2830 ZERO_STRUCT(r->out);
2832 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_MachineName));
2833 if (_ptr_MachineName) {
2834 NDR_PULL_ALLOC(ndr, r->in.MachineName);
2835 } else {
2836 r->in.MachineName = NULL;
2838 if (r->in.MachineName) {
2839 _mem_save_MachineName_0 = NDR_PULL_GET_MEM_CTX(ndr);
2840 NDR_PULL_SET_MEM_CTX(ndr, r->in.MachineName, 0);
2841 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.MachineName));
2842 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.MachineName));
2843 if (ndr_get_array_length(ndr, &r->in.MachineName) > ndr_get_array_size(ndr, &r->in.MachineName)) {
2844 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));
2846 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.MachineName), sizeof(uint16_t)));
2847 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.MachineName, ndr_get_array_length(ndr, &r->in.MachineName), sizeof(uint16_t), CH_UTF16));
2848 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_MachineName_0, 0);
2850 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_DatabaseName));
2851 if (_ptr_DatabaseName) {
2852 NDR_PULL_ALLOC(ndr, r->in.DatabaseName);
2853 } else {
2854 r->in.DatabaseName = NULL;
2856 if (r->in.DatabaseName) {
2857 _mem_save_DatabaseName_0 = NDR_PULL_GET_MEM_CTX(ndr);
2858 NDR_PULL_SET_MEM_CTX(ndr, r->in.DatabaseName, 0);
2859 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.DatabaseName));
2860 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.DatabaseName));
2861 if (ndr_get_array_length(ndr, &r->in.DatabaseName) > ndr_get_array_size(ndr, &r->in.DatabaseName)) {
2862 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));
2864 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.DatabaseName), sizeof(uint16_t)));
2865 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.DatabaseName, ndr_get_array_length(ndr, &r->in.DatabaseName), sizeof(uint16_t), CH_UTF16));
2866 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_DatabaseName_0, 0);
2868 NDR_CHECK(ndr_pull_svcctl_MgrAccessMask(ndr, NDR_SCALARS, &r->in.access_mask));
2869 NDR_PULL_ALLOC(ndr, r->out.handle);
2870 ZERO_STRUCTP(r->out.handle);
2872 if (flags & NDR_OUT) {
2873 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
2874 NDR_PULL_ALLOC(ndr, r->out.handle);
2876 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
2877 NDR_PULL_SET_MEM_CTX(ndr, r->out.handle, LIBNDR_FLAG_REF_ALLOC);
2878 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->out.handle));
2879 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
2880 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
2882 return NDR_ERR_SUCCESS;
2885 _PUBLIC_ void ndr_print_svcctl_OpenSCManagerW(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_OpenSCManagerW *r)
2887 ndr_print_struct(ndr, name, "svcctl_OpenSCManagerW");
2888 ndr->depth++;
2889 if (flags & NDR_SET_VALUES) {
2890 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
2892 if (flags & NDR_IN) {
2893 ndr_print_struct(ndr, "in", "svcctl_OpenSCManagerW");
2894 ndr->depth++;
2895 ndr_print_ptr(ndr, "MachineName", r->in.MachineName);
2896 ndr->depth++;
2897 if (r->in.MachineName) {
2898 ndr_print_string(ndr, "MachineName", r->in.MachineName);
2900 ndr->depth--;
2901 ndr_print_ptr(ndr, "DatabaseName", r->in.DatabaseName);
2902 ndr->depth++;
2903 if (r->in.DatabaseName) {
2904 ndr_print_string(ndr, "DatabaseName", r->in.DatabaseName);
2906 ndr->depth--;
2907 ndr_print_svcctl_MgrAccessMask(ndr, "access_mask", r->in.access_mask);
2908 ndr->depth--;
2910 if (flags & NDR_OUT) {
2911 ndr_print_struct(ndr, "out", "svcctl_OpenSCManagerW");
2912 ndr->depth++;
2913 ndr_print_ptr(ndr, "handle", r->out.handle);
2914 ndr->depth++;
2915 ndr_print_policy_handle(ndr, "handle", r->out.handle);
2916 ndr->depth--;
2917 ndr_print_WERROR(ndr, "result", r->out.result);
2918 ndr->depth--;
2920 ndr->depth--;
2923 static enum ndr_err_code ndr_push_svcctl_OpenServiceW(struct ndr_push *ndr, int flags, const struct svcctl_OpenServiceW *r)
2925 if (flags & NDR_IN) {
2926 if (r->in.scmanager_handle == NULL) {
2927 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
2929 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.scmanager_handle));
2930 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.ServiceName, CH_UTF16)));
2931 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
2932 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.ServiceName, CH_UTF16)));
2933 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.ServiceName, ndr_charset_length(r->in.ServiceName, CH_UTF16), sizeof(uint16_t), CH_UTF16));
2934 NDR_CHECK(ndr_push_svcctl_ServiceAccessMask(ndr, NDR_SCALARS, r->in.access_mask));
2936 if (flags & NDR_OUT) {
2937 if (r->out.handle == NULL) {
2938 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
2940 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->out.handle));
2941 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
2943 return NDR_ERR_SUCCESS;
2946 static enum ndr_err_code ndr_pull_svcctl_OpenServiceW(struct ndr_pull *ndr, int flags, struct svcctl_OpenServiceW *r)
2948 TALLOC_CTX *_mem_save_scmanager_handle_0;
2949 TALLOC_CTX *_mem_save_handle_0;
2950 if (flags & NDR_IN) {
2951 ZERO_STRUCT(r->out);
2953 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
2954 NDR_PULL_ALLOC(ndr, r->in.scmanager_handle);
2956 _mem_save_scmanager_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
2957 NDR_PULL_SET_MEM_CTX(ndr, r->in.scmanager_handle, LIBNDR_FLAG_REF_ALLOC);
2958 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.scmanager_handle));
2959 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_scmanager_handle_0, LIBNDR_FLAG_REF_ALLOC);
2960 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.ServiceName));
2961 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.ServiceName));
2962 if (ndr_get_array_length(ndr, &r->in.ServiceName) > ndr_get_array_size(ndr, &r->in.ServiceName)) {
2963 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));
2965 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.ServiceName), sizeof(uint16_t)));
2966 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.ServiceName, ndr_get_array_length(ndr, &r->in.ServiceName), sizeof(uint16_t), CH_UTF16));
2967 NDR_CHECK(ndr_pull_svcctl_ServiceAccessMask(ndr, NDR_SCALARS, &r->in.access_mask));
2968 NDR_PULL_ALLOC(ndr, r->out.handle);
2969 ZERO_STRUCTP(r->out.handle);
2971 if (flags & NDR_OUT) {
2972 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
2973 NDR_PULL_ALLOC(ndr, r->out.handle);
2975 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
2976 NDR_PULL_SET_MEM_CTX(ndr, r->out.handle, LIBNDR_FLAG_REF_ALLOC);
2977 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->out.handle));
2978 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
2979 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
2981 return NDR_ERR_SUCCESS;
2984 _PUBLIC_ void ndr_print_svcctl_OpenServiceW(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_OpenServiceW *r)
2986 ndr_print_struct(ndr, name, "svcctl_OpenServiceW");
2987 ndr->depth++;
2988 if (flags & NDR_SET_VALUES) {
2989 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
2991 if (flags & NDR_IN) {
2992 ndr_print_struct(ndr, "in", "svcctl_OpenServiceW");
2993 ndr->depth++;
2994 ndr_print_ptr(ndr, "scmanager_handle", r->in.scmanager_handle);
2995 ndr->depth++;
2996 ndr_print_policy_handle(ndr, "scmanager_handle", r->in.scmanager_handle);
2997 ndr->depth--;
2998 ndr_print_string(ndr, "ServiceName", r->in.ServiceName);
2999 ndr_print_svcctl_ServiceAccessMask(ndr, "access_mask", r->in.access_mask);
3000 ndr->depth--;
3002 if (flags & NDR_OUT) {
3003 ndr_print_struct(ndr, "out", "svcctl_OpenServiceW");
3004 ndr->depth++;
3005 ndr_print_ptr(ndr, "handle", r->out.handle);
3006 ndr->depth++;
3007 ndr_print_policy_handle(ndr, "handle", r->out.handle);
3008 ndr->depth--;
3009 ndr_print_WERROR(ndr, "result", r->out.result);
3010 ndr->depth--;
3012 ndr->depth--;
3015 static enum ndr_err_code ndr_push_svcctl_QueryServiceConfigW(struct ndr_push *ndr, int flags, const struct svcctl_QueryServiceConfigW *r)
3017 if (flags & NDR_IN) {
3018 if (r->in.handle == NULL) {
3019 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
3021 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
3022 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.buf_size));
3024 if (flags & NDR_OUT) {
3025 if (r->out.query == NULL) {
3026 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
3028 NDR_CHECK(ndr_push_QUERY_SERVICE_CONFIG(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.query));
3029 if (r->out.bytes_needed == NULL) {
3030 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
3032 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.bytes_needed));
3033 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
3035 return NDR_ERR_SUCCESS;
3038 static enum ndr_err_code ndr_pull_svcctl_QueryServiceConfigW(struct ndr_pull *ndr, int flags, struct svcctl_QueryServiceConfigW *r)
3040 TALLOC_CTX *_mem_save_handle_0;
3041 TALLOC_CTX *_mem_save_query_0;
3042 TALLOC_CTX *_mem_save_bytes_needed_0;
3043 if (flags & NDR_IN) {
3044 ZERO_STRUCT(r->out);
3046 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
3047 NDR_PULL_ALLOC(ndr, r->in.handle);
3049 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
3050 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
3051 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
3052 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
3053 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.buf_size));
3054 if (r->in.buf_size < 0 || r->in.buf_size > 8192) {
3055 return ndr_pull_error(ndr, NDR_ERR_RANGE, "value out of range");
3057 NDR_PULL_ALLOC(ndr, r->out.query);
3058 ZERO_STRUCTP(r->out.query);
3059 NDR_PULL_ALLOC(ndr, r->out.bytes_needed);
3060 ZERO_STRUCTP(r->out.bytes_needed);
3062 if (flags & NDR_OUT) {
3063 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
3064 NDR_PULL_ALLOC(ndr, r->out.query);
3066 _mem_save_query_0 = NDR_PULL_GET_MEM_CTX(ndr);
3067 NDR_PULL_SET_MEM_CTX(ndr, r->out.query, LIBNDR_FLAG_REF_ALLOC);
3068 NDR_CHECK(ndr_pull_QUERY_SERVICE_CONFIG(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.query));
3069 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_query_0, LIBNDR_FLAG_REF_ALLOC);
3070 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
3071 NDR_PULL_ALLOC(ndr, r->out.bytes_needed);
3073 _mem_save_bytes_needed_0 = NDR_PULL_GET_MEM_CTX(ndr);
3074 NDR_PULL_SET_MEM_CTX(ndr, r->out.bytes_needed, LIBNDR_FLAG_REF_ALLOC);
3075 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.bytes_needed));
3076 if (*r->out.bytes_needed < 0 || *r->out.bytes_needed > 8192) {
3077 return ndr_pull_error(ndr, NDR_ERR_RANGE, "value out of range");
3079 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_bytes_needed_0, LIBNDR_FLAG_REF_ALLOC);
3080 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
3082 return NDR_ERR_SUCCESS;
3085 _PUBLIC_ void ndr_print_svcctl_QueryServiceConfigW(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_QueryServiceConfigW *r)
3087 ndr_print_struct(ndr, name, "svcctl_QueryServiceConfigW");
3088 ndr->depth++;
3089 if (flags & NDR_SET_VALUES) {
3090 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
3092 if (flags & NDR_IN) {
3093 ndr_print_struct(ndr, "in", "svcctl_QueryServiceConfigW");
3094 ndr->depth++;
3095 ndr_print_ptr(ndr, "handle", r->in.handle);
3096 ndr->depth++;
3097 ndr_print_policy_handle(ndr, "handle", r->in.handle);
3098 ndr->depth--;
3099 ndr_print_uint32(ndr, "buf_size", r->in.buf_size);
3100 ndr->depth--;
3102 if (flags & NDR_OUT) {
3103 ndr_print_struct(ndr, "out", "svcctl_QueryServiceConfigW");
3104 ndr->depth++;
3105 ndr_print_ptr(ndr, "query", r->out.query);
3106 ndr->depth++;
3107 ndr_print_QUERY_SERVICE_CONFIG(ndr, "query", r->out.query);
3108 ndr->depth--;
3109 ndr_print_ptr(ndr, "bytes_needed", r->out.bytes_needed);
3110 ndr->depth++;
3111 ndr_print_uint32(ndr, "bytes_needed", *r->out.bytes_needed);
3112 ndr->depth--;
3113 ndr_print_WERROR(ndr, "result", r->out.result);
3114 ndr->depth--;
3116 ndr->depth--;
3119 static enum ndr_err_code ndr_push_svcctl_QueryServiceLockStatusW(struct ndr_push *ndr, int flags, const struct svcctl_QueryServiceLockStatusW *r)
3121 if (flags & NDR_IN) {
3122 if (r->in.handle == NULL) {
3123 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
3125 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
3126 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.buf_size));
3128 if (flags & NDR_OUT) {
3129 if (r->out.lock_status == NULL) {
3130 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
3132 NDR_CHECK(ndr_push_SERVICE_LOCK_STATUS(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.lock_status));
3133 if (r->out.required_buf_size == NULL) {
3134 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
3136 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.required_buf_size));
3137 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
3139 return NDR_ERR_SUCCESS;
3142 static enum ndr_err_code ndr_pull_svcctl_QueryServiceLockStatusW(struct ndr_pull *ndr, int flags, struct svcctl_QueryServiceLockStatusW *r)
3144 TALLOC_CTX *_mem_save_handle_0;
3145 TALLOC_CTX *_mem_save_lock_status_0;
3146 TALLOC_CTX *_mem_save_required_buf_size_0;
3147 if (flags & NDR_IN) {
3148 ZERO_STRUCT(r->out);
3150 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
3151 NDR_PULL_ALLOC(ndr, r->in.handle);
3153 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
3154 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
3155 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
3156 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
3157 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.buf_size));
3158 NDR_PULL_ALLOC(ndr, r->out.lock_status);
3159 ZERO_STRUCTP(r->out.lock_status);
3160 NDR_PULL_ALLOC(ndr, r->out.required_buf_size);
3161 ZERO_STRUCTP(r->out.required_buf_size);
3163 if (flags & NDR_OUT) {
3164 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
3165 NDR_PULL_ALLOC(ndr, r->out.lock_status);
3167 _mem_save_lock_status_0 = NDR_PULL_GET_MEM_CTX(ndr);
3168 NDR_PULL_SET_MEM_CTX(ndr, r->out.lock_status, LIBNDR_FLAG_REF_ALLOC);
3169 NDR_CHECK(ndr_pull_SERVICE_LOCK_STATUS(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.lock_status));
3170 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_lock_status_0, LIBNDR_FLAG_REF_ALLOC);
3171 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
3172 NDR_PULL_ALLOC(ndr, r->out.required_buf_size);
3174 _mem_save_required_buf_size_0 = NDR_PULL_GET_MEM_CTX(ndr);
3175 NDR_PULL_SET_MEM_CTX(ndr, r->out.required_buf_size, LIBNDR_FLAG_REF_ALLOC);
3176 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.required_buf_size));
3177 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_required_buf_size_0, LIBNDR_FLAG_REF_ALLOC);
3178 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
3180 return NDR_ERR_SUCCESS;
3183 _PUBLIC_ void ndr_print_svcctl_QueryServiceLockStatusW(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_QueryServiceLockStatusW *r)
3185 ndr_print_struct(ndr, name, "svcctl_QueryServiceLockStatusW");
3186 ndr->depth++;
3187 if (flags & NDR_SET_VALUES) {
3188 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
3190 if (flags & NDR_IN) {
3191 ndr_print_struct(ndr, "in", "svcctl_QueryServiceLockStatusW");
3192 ndr->depth++;
3193 ndr_print_ptr(ndr, "handle", r->in.handle);
3194 ndr->depth++;
3195 ndr_print_policy_handle(ndr, "handle", r->in.handle);
3196 ndr->depth--;
3197 ndr_print_uint32(ndr, "buf_size", r->in.buf_size);
3198 ndr->depth--;
3200 if (flags & NDR_OUT) {
3201 ndr_print_struct(ndr, "out", "svcctl_QueryServiceLockStatusW");
3202 ndr->depth++;
3203 ndr_print_ptr(ndr, "lock_status", r->out.lock_status);
3204 ndr->depth++;
3205 ndr_print_SERVICE_LOCK_STATUS(ndr, "lock_status", r->out.lock_status);
3206 ndr->depth--;
3207 ndr_print_ptr(ndr, "required_buf_size", r->out.required_buf_size);
3208 ndr->depth++;
3209 ndr_print_uint32(ndr, "required_buf_size", *r->out.required_buf_size);
3210 ndr->depth--;
3211 ndr_print_WERROR(ndr, "result", r->out.result);
3212 ndr->depth--;
3214 ndr->depth--;
3217 static enum ndr_err_code ndr_push_svcctl_StartServiceW(struct ndr_push *ndr, int flags, const struct svcctl_StartServiceW *r)
3219 if (flags & NDR_IN) {
3220 if (r->in.handle == NULL) {
3221 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
3223 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
3224 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.NumArgs));
3225 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.Arguments));
3226 if (r->in.Arguments) {
3227 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.Arguments, CH_UTF16)));
3228 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
3229 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.Arguments, CH_UTF16)));
3230 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.Arguments, ndr_charset_length(r->in.Arguments, CH_UTF16), sizeof(uint16_t), CH_UTF16));
3233 if (flags & NDR_OUT) {
3234 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
3236 return NDR_ERR_SUCCESS;
3239 static enum ndr_err_code ndr_pull_svcctl_StartServiceW(struct ndr_pull *ndr, int flags, struct svcctl_StartServiceW *r)
3241 uint32_t _ptr_Arguments;
3242 TALLOC_CTX *_mem_save_handle_0;
3243 TALLOC_CTX *_mem_save_Arguments_0;
3244 if (flags & NDR_IN) {
3245 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
3246 NDR_PULL_ALLOC(ndr, r->in.handle);
3248 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
3249 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
3250 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
3251 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
3252 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.NumArgs));
3253 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_Arguments));
3254 if (_ptr_Arguments) {
3255 NDR_PULL_ALLOC(ndr, r->in.Arguments);
3256 } else {
3257 r->in.Arguments = NULL;
3259 if (r->in.Arguments) {
3260 _mem_save_Arguments_0 = NDR_PULL_GET_MEM_CTX(ndr);
3261 NDR_PULL_SET_MEM_CTX(ndr, r->in.Arguments, 0);
3262 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.Arguments));
3263 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.Arguments));
3264 if (ndr_get_array_length(ndr, &r->in.Arguments) > ndr_get_array_size(ndr, &r->in.Arguments)) {
3265 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));
3267 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.Arguments), sizeof(uint16_t)));
3268 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.Arguments, ndr_get_array_length(ndr, &r->in.Arguments), sizeof(uint16_t), CH_UTF16));
3269 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_Arguments_0, 0);
3272 if (flags & NDR_OUT) {
3273 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
3275 return NDR_ERR_SUCCESS;
3278 _PUBLIC_ void ndr_print_svcctl_StartServiceW(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_StartServiceW *r)
3280 ndr_print_struct(ndr, name, "svcctl_StartServiceW");
3281 ndr->depth++;
3282 if (flags & NDR_SET_VALUES) {
3283 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
3285 if (flags & NDR_IN) {
3286 ndr_print_struct(ndr, "in", "svcctl_StartServiceW");
3287 ndr->depth++;
3288 ndr_print_ptr(ndr, "handle", r->in.handle);
3289 ndr->depth++;
3290 ndr_print_policy_handle(ndr, "handle", r->in.handle);
3291 ndr->depth--;
3292 ndr_print_uint32(ndr, "NumArgs", r->in.NumArgs);
3293 ndr_print_ptr(ndr, "Arguments", r->in.Arguments);
3294 ndr->depth++;
3295 if (r->in.Arguments) {
3296 ndr_print_string(ndr, "Arguments", r->in.Arguments);
3298 ndr->depth--;
3299 ndr->depth--;
3301 if (flags & NDR_OUT) {
3302 ndr_print_struct(ndr, "out", "svcctl_StartServiceW");
3303 ndr->depth++;
3304 ndr_print_WERROR(ndr, "result", r->out.result);
3305 ndr->depth--;
3307 ndr->depth--;
3310 static enum ndr_err_code ndr_push_svcctl_GetServiceDisplayNameW(struct ndr_push *ndr, int flags, const struct svcctl_GetServiceDisplayNameW *r)
3312 if (flags & NDR_IN) {
3313 if (r->in.handle == NULL) {
3314 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
3316 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
3317 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.service_name));
3318 if (r->in.service_name) {
3319 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.service_name, CH_UTF16)));
3320 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
3321 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.service_name, CH_UTF16)));
3322 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));
3324 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.display_name_length));
3325 if (r->in.display_name_length) {
3326 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->in.display_name_length));
3329 if (flags & NDR_OUT) {
3330 if (r->out.display_name == NULL) {
3331 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
3333 NDR_CHECK(ndr_push_unique_ptr(ndr, *r->out.display_name));
3334 if (*r->out.display_name) {
3335 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(*r->out.display_name, CH_UTF16)));
3336 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
3337 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(*r->out.display_name, CH_UTF16)));
3338 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));
3340 NDR_CHECK(ndr_push_unique_ptr(ndr, r->out.display_name_length));
3341 if (r->out.display_name_length) {
3342 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.display_name_length));
3344 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
3346 return NDR_ERR_SUCCESS;
3349 static enum ndr_err_code ndr_pull_svcctl_GetServiceDisplayNameW(struct ndr_pull *ndr, int flags, struct svcctl_GetServiceDisplayNameW *r)
3351 uint32_t _ptr_service_name;
3352 uint32_t _ptr_display_name;
3353 uint32_t _ptr_display_name_length;
3354 TALLOC_CTX *_mem_save_handle_0;
3355 TALLOC_CTX *_mem_save_service_name_0;
3356 TALLOC_CTX *_mem_save_display_name_0;
3357 TALLOC_CTX *_mem_save_display_name_1;
3358 TALLOC_CTX *_mem_save_display_name_length_0;
3359 if (flags & NDR_IN) {
3360 ZERO_STRUCT(r->out);
3362 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
3363 NDR_PULL_ALLOC(ndr, r->in.handle);
3365 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
3366 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
3367 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
3368 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
3369 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_service_name));
3370 if (_ptr_service_name) {
3371 NDR_PULL_ALLOC(ndr, r->in.service_name);
3372 } else {
3373 r->in.service_name = NULL;
3375 if (r->in.service_name) {
3376 _mem_save_service_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
3377 NDR_PULL_SET_MEM_CTX(ndr, r->in.service_name, 0);
3378 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.service_name));
3379 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.service_name));
3380 if (ndr_get_array_length(ndr, &r->in.service_name) > ndr_get_array_size(ndr, &r->in.service_name)) {
3381 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));
3383 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.service_name), sizeof(uint16_t)));
3384 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));
3385 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_service_name_0, 0);
3387 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_display_name_length));
3388 if (_ptr_display_name_length) {
3389 NDR_PULL_ALLOC(ndr, r->in.display_name_length);
3390 } else {
3391 r->in.display_name_length = NULL;
3393 if (r->in.display_name_length) {
3394 _mem_save_display_name_length_0 = NDR_PULL_GET_MEM_CTX(ndr);
3395 NDR_PULL_SET_MEM_CTX(ndr, r->in.display_name_length, 0);
3396 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->in.display_name_length));
3397 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_display_name_length_0, 0);
3399 NDR_PULL_ALLOC(ndr, r->out.display_name);
3400 ZERO_STRUCTP(r->out.display_name);
3402 if (flags & NDR_OUT) {
3403 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
3404 NDR_PULL_ALLOC(ndr, r->out.display_name);
3406 _mem_save_display_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
3407 NDR_PULL_SET_MEM_CTX(ndr, r->out.display_name, LIBNDR_FLAG_REF_ALLOC);
3408 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_display_name));
3409 if (_ptr_display_name) {
3410 NDR_PULL_ALLOC(ndr, *r->out.display_name);
3411 } else {
3412 *r->out.display_name = NULL;
3414 if (*r->out.display_name) {
3415 _mem_save_display_name_1 = NDR_PULL_GET_MEM_CTX(ndr);
3416 NDR_PULL_SET_MEM_CTX(ndr, *r->out.display_name, 0);
3417 NDR_CHECK(ndr_pull_array_size(ndr, r->out.display_name));
3418 NDR_CHECK(ndr_pull_array_length(ndr, r->out.display_name));
3419 if (ndr_get_array_length(ndr, r->out.display_name) > ndr_get_array_size(ndr, r->out.display_name)) {
3420 return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, r->out.display_name), ndr_get_array_length(ndr, r->out.display_name));
3422 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, r->out.display_name), sizeof(uint16_t)));
3423 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));
3424 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_display_name_1, 0);
3426 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_display_name_0, LIBNDR_FLAG_REF_ALLOC);
3427 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_display_name_length));
3428 if (_ptr_display_name_length) {
3429 NDR_PULL_ALLOC(ndr, r->out.display_name_length);
3430 } else {
3431 r->out.display_name_length = NULL;
3433 if (r->out.display_name_length) {
3434 _mem_save_display_name_length_0 = NDR_PULL_GET_MEM_CTX(ndr);
3435 NDR_PULL_SET_MEM_CTX(ndr, r->out.display_name_length, 0);
3436 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.display_name_length));
3437 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_display_name_length_0, 0);
3439 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
3441 return NDR_ERR_SUCCESS;
3444 _PUBLIC_ void ndr_print_svcctl_GetServiceDisplayNameW(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_GetServiceDisplayNameW *r)
3446 ndr_print_struct(ndr, name, "svcctl_GetServiceDisplayNameW");
3447 ndr->depth++;
3448 if (flags & NDR_SET_VALUES) {
3449 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
3451 if (flags & NDR_IN) {
3452 ndr_print_struct(ndr, "in", "svcctl_GetServiceDisplayNameW");
3453 ndr->depth++;
3454 ndr_print_ptr(ndr, "handle", r->in.handle);
3455 ndr->depth++;
3456 ndr_print_policy_handle(ndr, "handle", r->in.handle);
3457 ndr->depth--;
3458 ndr_print_ptr(ndr, "service_name", r->in.service_name);
3459 ndr->depth++;
3460 if (r->in.service_name) {
3461 ndr_print_string(ndr, "service_name", r->in.service_name);
3463 ndr->depth--;
3464 ndr_print_ptr(ndr, "display_name_length", r->in.display_name_length);
3465 ndr->depth++;
3466 if (r->in.display_name_length) {
3467 ndr_print_uint32(ndr, "display_name_length", *r->in.display_name_length);
3469 ndr->depth--;
3470 ndr->depth--;
3472 if (flags & NDR_OUT) {
3473 ndr_print_struct(ndr, "out", "svcctl_GetServiceDisplayNameW");
3474 ndr->depth++;
3475 ndr_print_ptr(ndr, "display_name", r->out.display_name);
3476 ndr->depth++;
3477 ndr_print_ptr(ndr, "display_name", *r->out.display_name);
3478 ndr->depth++;
3479 if (*r->out.display_name) {
3480 ndr_print_string(ndr, "display_name", *r->out.display_name);
3482 ndr->depth--;
3483 ndr->depth--;
3484 ndr_print_ptr(ndr, "display_name_length", r->out.display_name_length);
3485 ndr->depth++;
3486 if (r->out.display_name_length) {
3487 ndr_print_uint32(ndr, "display_name_length", *r->out.display_name_length);
3489 ndr->depth--;
3490 ndr_print_WERROR(ndr, "result", r->out.result);
3491 ndr->depth--;
3493 ndr->depth--;
3496 static enum ndr_err_code ndr_push_svcctl_GetServiceKeyNameW(struct ndr_push *ndr, int flags, const struct svcctl_GetServiceKeyNameW *r)
3498 if (flags & NDR_IN) {
3499 if (r->in.handle == NULL) {
3500 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
3502 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
3503 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.service_name));
3504 if (r->in.service_name) {
3505 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.service_name, CH_UTF16)));
3506 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
3507 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.service_name, CH_UTF16)));
3508 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));
3510 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.display_name_length));
3511 if (r->in.display_name_length) {
3512 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->in.display_name_length));
3515 if (flags & NDR_OUT) {
3516 if (r->out.key_name == NULL) {
3517 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
3519 NDR_CHECK(ndr_push_unique_ptr(ndr, *r->out.key_name));
3520 if (*r->out.key_name) {
3521 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(*r->out.key_name, CH_UTF16)));
3522 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
3523 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(*r->out.key_name, CH_UTF16)));
3524 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));
3526 NDR_CHECK(ndr_push_unique_ptr(ndr, r->out.display_name_length));
3527 if (r->out.display_name_length) {
3528 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.display_name_length));
3530 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
3532 return NDR_ERR_SUCCESS;
3535 static enum ndr_err_code ndr_pull_svcctl_GetServiceKeyNameW(struct ndr_pull *ndr, int flags, struct svcctl_GetServiceKeyNameW *r)
3537 uint32_t _ptr_service_name;
3538 uint32_t _ptr_key_name;
3539 uint32_t _ptr_display_name_length;
3540 TALLOC_CTX *_mem_save_handle_0;
3541 TALLOC_CTX *_mem_save_service_name_0;
3542 TALLOC_CTX *_mem_save_key_name_0;
3543 TALLOC_CTX *_mem_save_key_name_1;
3544 TALLOC_CTX *_mem_save_display_name_length_0;
3545 if (flags & NDR_IN) {
3546 ZERO_STRUCT(r->out);
3548 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
3549 NDR_PULL_ALLOC(ndr, r->in.handle);
3551 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
3552 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
3553 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
3554 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
3555 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_service_name));
3556 if (_ptr_service_name) {
3557 NDR_PULL_ALLOC(ndr, r->in.service_name);
3558 } else {
3559 r->in.service_name = NULL;
3561 if (r->in.service_name) {
3562 _mem_save_service_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
3563 NDR_PULL_SET_MEM_CTX(ndr, r->in.service_name, 0);
3564 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.service_name));
3565 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.service_name));
3566 if (ndr_get_array_length(ndr, &r->in.service_name) > ndr_get_array_size(ndr, &r->in.service_name)) {
3567 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));
3569 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.service_name), sizeof(uint16_t)));
3570 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));
3571 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_service_name_0, 0);
3573 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_display_name_length));
3574 if (_ptr_display_name_length) {
3575 NDR_PULL_ALLOC(ndr, r->in.display_name_length);
3576 } else {
3577 r->in.display_name_length = NULL;
3579 if (r->in.display_name_length) {
3580 _mem_save_display_name_length_0 = NDR_PULL_GET_MEM_CTX(ndr);
3581 NDR_PULL_SET_MEM_CTX(ndr, r->in.display_name_length, 0);
3582 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->in.display_name_length));
3583 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_display_name_length_0, 0);
3585 NDR_PULL_ALLOC(ndr, r->out.key_name);
3586 ZERO_STRUCTP(r->out.key_name);
3588 if (flags & NDR_OUT) {
3589 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
3590 NDR_PULL_ALLOC(ndr, r->out.key_name);
3592 _mem_save_key_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
3593 NDR_PULL_SET_MEM_CTX(ndr, r->out.key_name, LIBNDR_FLAG_REF_ALLOC);
3594 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_key_name));
3595 if (_ptr_key_name) {
3596 NDR_PULL_ALLOC(ndr, *r->out.key_name);
3597 } else {
3598 *r->out.key_name = NULL;
3600 if (*r->out.key_name) {
3601 _mem_save_key_name_1 = NDR_PULL_GET_MEM_CTX(ndr);
3602 NDR_PULL_SET_MEM_CTX(ndr, *r->out.key_name, 0);
3603 NDR_CHECK(ndr_pull_array_size(ndr, r->out.key_name));
3604 NDR_CHECK(ndr_pull_array_length(ndr, r->out.key_name));
3605 if (ndr_get_array_length(ndr, r->out.key_name) > ndr_get_array_size(ndr, r->out.key_name)) {
3606 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));
3608 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, r->out.key_name), sizeof(uint16_t)));
3609 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));
3610 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_key_name_1, 0);
3612 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_key_name_0, LIBNDR_FLAG_REF_ALLOC);
3613 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_display_name_length));
3614 if (_ptr_display_name_length) {
3615 NDR_PULL_ALLOC(ndr, r->out.display_name_length);
3616 } else {
3617 r->out.display_name_length = NULL;
3619 if (r->out.display_name_length) {
3620 _mem_save_display_name_length_0 = NDR_PULL_GET_MEM_CTX(ndr);
3621 NDR_PULL_SET_MEM_CTX(ndr, r->out.display_name_length, 0);
3622 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.display_name_length));
3623 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_display_name_length_0, 0);
3625 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
3627 return NDR_ERR_SUCCESS;
3630 _PUBLIC_ void ndr_print_svcctl_GetServiceKeyNameW(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_GetServiceKeyNameW *r)
3632 ndr_print_struct(ndr, name, "svcctl_GetServiceKeyNameW");
3633 ndr->depth++;
3634 if (flags & NDR_SET_VALUES) {
3635 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
3637 if (flags & NDR_IN) {
3638 ndr_print_struct(ndr, "in", "svcctl_GetServiceKeyNameW");
3639 ndr->depth++;
3640 ndr_print_ptr(ndr, "handle", r->in.handle);
3641 ndr->depth++;
3642 ndr_print_policy_handle(ndr, "handle", r->in.handle);
3643 ndr->depth--;
3644 ndr_print_ptr(ndr, "service_name", r->in.service_name);
3645 ndr->depth++;
3646 if (r->in.service_name) {
3647 ndr_print_string(ndr, "service_name", r->in.service_name);
3649 ndr->depth--;
3650 ndr_print_ptr(ndr, "display_name_length", r->in.display_name_length);
3651 ndr->depth++;
3652 if (r->in.display_name_length) {
3653 ndr_print_uint32(ndr, "display_name_length", *r->in.display_name_length);
3655 ndr->depth--;
3656 ndr->depth--;
3658 if (flags & NDR_OUT) {
3659 ndr_print_struct(ndr, "out", "svcctl_GetServiceKeyNameW");
3660 ndr->depth++;
3661 ndr_print_ptr(ndr, "key_name", r->out.key_name);
3662 ndr->depth++;
3663 ndr_print_ptr(ndr, "key_name", *r->out.key_name);
3664 ndr->depth++;
3665 if (*r->out.key_name) {
3666 ndr_print_string(ndr, "key_name", *r->out.key_name);
3668 ndr->depth--;
3669 ndr->depth--;
3670 ndr_print_ptr(ndr, "display_name_length", r->out.display_name_length);
3671 ndr->depth++;
3672 if (r->out.display_name_length) {
3673 ndr_print_uint32(ndr, "display_name_length", *r->out.display_name_length);
3675 ndr->depth--;
3676 ndr_print_WERROR(ndr, "result", r->out.result);
3677 ndr->depth--;
3679 ndr->depth--;
3682 static enum ndr_err_code ndr_push_svcctl_SCSetServiceBitsA(struct ndr_push *ndr, int flags, const struct svcctl_SCSetServiceBitsA *r)
3684 if (flags & NDR_IN) {
3685 if (r->in.handle == NULL) {
3686 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
3688 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
3689 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.bits));
3690 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.bitson));
3691 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.immediate));
3693 if (flags & NDR_OUT) {
3694 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
3696 return NDR_ERR_SUCCESS;
3699 static enum ndr_err_code ndr_pull_svcctl_SCSetServiceBitsA(struct ndr_pull *ndr, int flags, struct svcctl_SCSetServiceBitsA *r)
3701 TALLOC_CTX *_mem_save_handle_0;
3702 if (flags & NDR_IN) {
3703 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
3704 NDR_PULL_ALLOC(ndr, r->in.handle);
3706 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
3707 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
3708 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
3709 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
3710 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.bits));
3711 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.bitson));
3712 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.immediate));
3714 if (flags & NDR_OUT) {
3715 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
3717 return NDR_ERR_SUCCESS;
3720 _PUBLIC_ void ndr_print_svcctl_SCSetServiceBitsA(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_SCSetServiceBitsA *r)
3722 ndr_print_struct(ndr, name, "svcctl_SCSetServiceBitsA");
3723 ndr->depth++;
3724 if (flags & NDR_SET_VALUES) {
3725 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
3727 if (flags & NDR_IN) {
3728 ndr_print_struct(ndr, "in", "svcctl_SCSetServiceBitsA");
3729 ndr->depth++;
3730 ndr_print_ptr(ndr, "handle", r->in.handle);
3731 ndr->depth++;
3732 ndr_print_policy_handle(ndr, "handle", r->in.handle);
3733 ndr->depth--;
3734 ndr_print_uint32(ndr, "bits", r->in.bits);
3735 ndr_print_uint32(ndr, "bitson", r->in.bitson);
3736 ndr_print_uint32(ndr, "immediate", r->in.immediate);
3737 ndr->depth--;
3739 if (flags & NDR_OUT) {
3740 ndr_print_struct(ndr, "out", "svcctl_SCSetServiceBitsA");
3741 ndr->depth++;
3742 ndr_print_WERROR(ndr, "result", r->out.result);
3743 ndr->depth--;
3745 ndr->depth--;
3748 static enum ndr_err_code ndr_push_svcctl_ChangeServiceConfigA(struct ndr_push *ndr, int flags, const struct svcctl_ChangeServiceConfigA *r)
3750 if (flags & NDR_IN) {
3751 if (r->in.handle == NULL) {
3752 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
3754 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
3755 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.type));
3756 NDR_CHECK(ndr_push_svcctl_StartType(ndr, NDR_SCALARS, r->in.start_type));
3757 NDR_CHECK(ndr_push_svcctl_ErrorControl(ndr, NDR_SCALARS, r->in.error_control));
3758 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.binary_path));
3759 if (r->in.binary_path) {
3760 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.binary_path, CH_UTF16)));
3761 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
3762 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.binary_path, CH_UTF16)));
3763 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));
3765 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.load_order_group));
3766 if (r->in.load_order_group) {
3767 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.load_order_group, CH_UTF16)));
3768 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
3769 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.load_order_group, CH_UTF16)));
3770 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));
3772 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.dependencies));
3773 if (r->in.dependencies) {
3774 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.dependencies, CH_UTF16)));
3775 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
3776 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.dependencies, CH_UTF16)));
3777 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.dependencies, ndr_charset_length(r->in.dependencies, CH_UTF16), sizeof(uint16_t), CH_UTF16));
3779 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.service_start_name));
3780 if (r->in.service_start_name) {
3781 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.service_start_name, CH_UTF16)));
3782 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
3783 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.service_start_name, CH_UTF16)));
3784 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));
3786 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.password));
3787 if (r->in.password) {
3788 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.password, CH_UTF16)));
3789 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
3790 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.password, CH_UTF16)));
3791 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.password, ndr_charset_length(r->in.password, CH_UTF16), sizeof(uint16_t), CH_UTF16));
3793 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.display_name));
3794 if (r->in.display_name) {
3795 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.display_name, CH_UTF16)));
3796 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
3797 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.display_name, CH_UTF16)));
3798 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));
3801 if (flags & NDR_OUT) {
3802 if (r->out.tag_id == NULL) {
3803 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
3805 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.tag_id));
3806 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
3808 return NDR_ERR_SUCCESS;
3811 static enum ndr_err_code ndr_pull_svcctl_ChangeServiceConfigA(struct ndr_pull *ndr, int flags, struct svcctl_ChangeServiceConfigA *r)
3813 uint32_t _ptr_binary_path;
3814 uint32_t _ptr_load_order_group;
3815 uint32_t _ptr_dependencies;
3816 uint32_t _ptr_service_start_name;
3817 uint32_t _ptr_password;
3818 uint32_t _ptr_display_name;
3819 TALLOC_CTX *_mem_save_handle_0;
3820 TALLOC_CTX *_mem_save_binary_path_0;
3821 TALLOC_CTX *_mem_save_load_order_group_0;
3822 TALLOC_CTX *_mem_save_tag_id_0;
3823 TALLOC_CTX *_mem_save_dependencies_0;
3824 TALLOC_CTX *_mem_save_service_start_name_0;
3825 TALLOC_CTX *_mem_save_password_0;
3826 TALLOC_CTX *_mem_save_display_name_0;
3827 if (flags & NDR_IN) {
3828 ZERO_STRUCT(r->out);
3830 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
3831 NDR_PULL_ALLOC(ndr, r->in.handle);
3833 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
3834 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
3835 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
3836 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
3837 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.type));
3838 NDR_CHECK(ndr_pull_svcctl_StartType(ndr, NDR_SCALARS, &r->in.start_type));
3839 NDR_CHECK(ndr_pull_svcctl_ErrorControl(ndr, NDR_SCALARS, &r->in.error_control));
3840 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_binary_path));
3841 if (_ptr_binary_path) {
3842 NDR_PULL_ALLOC(ndr, r->in.binary_path);
3843 } else {
3844 r->in.binary_path = NULL;
3846 if (r->in.binary_path) {
3847 _mem_save_binary_path_0 = NDR_PULL_GET_MEM_CTX(ndr);
3848 NDR_PULL_SET_MEM_CTX(ndr, r->in.binary_path, 0);
3849 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.binary_path));
3850 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.binary_path));
3851 if (ndr_get_array_length(ndr, &r->in.binary_path) > ndr_get_array_size(ndr, &r->in.binary_path)) {
3852 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));
3854 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.binary_path), sizeof(uint16_t)));
3855 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));
3856 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_binary_path_0, 0);
3858 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_load_order_group));
3859 if (_ptr_load_order_group) {
3860 NDR_PULL_ALLOC(ndr, r->in.load_order_group);
3861 } else {
3862 r->in.load_order_group = NULL;
3864 if (r->in.load_order_group) {
3865 _mem_save_load_order_group_0 = NDR_PULL_GET_MEM_CTX(ndr);
3866 NDR_PULL_SET_MEM_CTX(ndr, r->in.load_order_group, 0);
3867 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.load_order_group));
3868 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.load_order_group));
3869 if (ndr_get_array_length(ndr, &r->in.load_order_group) > ndr_get_array_size(ndr, &r->in.load_order_group)) {
3870 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));
3872 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.load_order_group), sizeof(uint16_t)));
3873 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));
3874 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_load_order_group_0, 0);
3876 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_dependencies));
3877 if (_ptr_dependencies) {
3878 NDR_PULL_ALLOC(ndr, r->in.dependencies);
3879 } else {
3880 r->in.dependencies = NULL;
3882 if (r->in.dependencies) {
3883 _mem_save_dependencies_0 = NDR_PULL_GET_MEM_CTX(ndr);
3884 NDR_PULL_SET_MEM_CTX(ndr, r->in.dependencies, 0);
3885 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.dependencies));
3886 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.dependencies));
3887 if (ndr_get_array_length(ndr, &r->in.dependencies) > ndr_get_array_size(ndr, &r->in.dependencies)) {
3888 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));
3890 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.dependencies), sizeof(uint16_t)));
3891 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.dependencies, ndr_get_array_length(ndr, &r->in.dependencies), sizeof(uint16_t), CH_UTF16));
3892 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_dependencies_0, 0);
3894 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_service_start_name));
3895 if (_ptr_service_start_name) {
3896 NDR_PULL_ALLOC(ndr, r->in.service_start_name);
3897 } else {
3898 r->in.service_start_name = NULL;
3900 if (r->in.service_start_name) {
3901 _mem_save_service_start_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
3902 NDR_PULL_SET_MEM_CTX(ndr, r->in.service_start_name, 0);
3903 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.service_start_name));
3904 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.service_start_name));
3905 if (ndr_get_array_length(ndr, &r->in.service_start_name) > ndr_get_array_size(ndr, &r->in.service_start_name)) {
3906 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));
3908 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.service_start_name), sizeof(uint16_t)));
3909 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));
3910 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_service_start_name_0, 0);
3912 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_password));
3913 if (_ptr_password) {
3914 NDR_PULL_ALLOC(ndr, r->in.password);
3915 } else {
3916 r->in.password = NULL;
3918 if (r->in.password) {
3919 _mem_save_password_0 = NDR_PULL_GET_MEM_CTX(ndr);
3920 NDR_PULL_SET_MEM_CTX(ndr, r->in.password, 0);
3921 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.password));
3922 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.password));
3923 if (ndr_get_array_length(ndr, &r->in.password) > ndr_get_array_size(ndr, &r->in.password)) {
3924 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));
3926 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.password), sizeof(uint16_t)));
3927 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.password, ndr_get_array_length(ndr, &r->in.password), sizeof(uint16_t), CH_UTF16));
3928 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_password_0, 0);
3930 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_display_name));
3931 if (_ptr_display_name) {
3932 NDR_PULL_ALLOC(ndr, r->in.display_name);
3933 } else {
3934 r->in.display_name = NULL;
3936 if (r->in.display_name) {
3937 _mem_save_display_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
3938 NDR_PULL_SET_MEM_CTX(ndr, r->in.display_name, 0);
3939 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.display_name));
3940 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.display_name));
3941 if (ndr_get_array_length(ndr, &r->in.display_name) > ndr_get_array_size(ndr, &r->in.display_name)) {
3942 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));
3944 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.display_name), sizeof(uint16_t)));
3945 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));
3946 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_display_name_0, 0);
3948 NDR_PULL_ALLOC(ndr, r->out.tag_id);
3949 ZERO_STRUCTP(r->out.tag_id);
3951 if (flags & NDR_OUT) {
3952 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
3953 NDR_PULL_ALLOC(ndr, r->out.tag_id);
3955 _mem_save_tag_id_0 = NDR_PULL_GET_MEM_CTX(ndr);
3956 NDR_PULL_SET_MEM_CTX(ndr, r->out.tag_id, LIBNDR_FLAG_REF_ALLOC);
3957 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.tag_id));
3958 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_tag_id_0, LIBNDR_FLAG_REF_ALLOC);
3959 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
3961 return NDR_ERR_SUCCESS;
3964 _PUBLIC_ void ndr_print_svcctl_ChangeServiceConfigA(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_ChangeServiceConfigA *r)
3966 ndr_print_struct(ndr, name, "svcctl_ChangeServiceConfigA");
3967 ndr->depth++;
3968 if (flags & NDR_SET_VALUES) {
3969 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
3971 if (flags & NDR_IN) {
3972 ndr_print_struct(ndr, "in", "svcctl_ChangeServiceConfigA");
3973 ndr->depth++;
3974 ndr_print_ptr(ndr, "handle", r->in.handle);
3975 ndr->depth++;
3976 ndr_print_policy_handle(ndr, "handle", r->in.handle);
3977 ndr->depth--;
3978 ndr_print_uint32(ndr, "type", r->in.type);
3979 ndr_print_svcctl_StartType(ndr, "start_type", r->in.start_type);
3980 ndr_print_svcctl_ErrorControl(ndr, "error_control", r->in.error_control);
3981 ndr_print_ptr(ndr, "binary_path", r->in.binary_path);
3982 ndr->depth++;
3983 if (r->in.binary_path) {
3984 ndr_print_string(ndr, "binary_path", r->in.binary_path);
3986 ndr->depth--;
3987 ndr_print_ptr(ndr, "load_order_group", r->in.load_order_group);
3988 ndr->depth++;
3989 if (r->in.load_order_group) {
3990 ndr_print_string(ndr, "load_order_group", r->in.load_order_group);
3992 ndr->depth--;
3993 ndr_print_ptr(ndr, "dependencies", r->in.dependencies);
3994 ndr->depth++;
3995 if (r->in.dependencies) {
3996 ndr_print_string(ndr, "dependencies", r->in.dependencies);
3998 ndr->depth--;
3999 ndr_print_ptr(ndr, "service_start_name", r->in.service_start_name);
4000 ndr->depth++;
4001 if (r->in.service_start_name) {
4002 ndr_print_string(ndr, "service_start_name", r->in.service_start_name);
4004 ndr->depth--;
4005 ndr_print_ptr(ndr, "password", r->in.password);
4006 ndr->depth++;
4007 if (r->in.password) {
4008 ndr_print_string(ndr, "password", r->in.password);
4010 ndr->depth--;
4011 ndr_print_ptr(ndr, "display_name", r->in.display_name);
4012 ndr->depth++;
4013 if (r->in.display_name) {
4014 ndr_print_string(ndr, "display_name", r->in.display_name);
4016 ndr->depth--;
4017 ndr->depth--;
4019 if (flags & NDR_OUT) {
4020 ndr_print_struct(ndr, "out", "svcctl_ChangeServiceConfigA");
4021 ndr->depth++;
4022 ndr_print_ptr(ndr, "tag_id", r->out.tag_id);
4023 ndr->depth++;
4024 ndr_print_uint32(ndr, "tag_id", *r->out.tag_id);
4025 ndr->depth--;
4026 ndr_print_WERROR(ndr, "result", r->out.result);
4027 ndr->depth--;
4029 ndr->depth--;
4032 static enum ndr_err_code ndr_push_svcctl_CreateServiceA(struct ndr_push *ndr, int flags, const struct svcctl_CreateServiceA *r)
4034 if (flags & NDR_IN) {
4035 if (r->in.handle == NULL) {
4036 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
4038 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
4039 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.ServiceName));
4040 if (r->in.ServiceName) {
4041 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.ServiceName, CH_UTF16)));
4042 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
4043 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.ServiceName, CH_UTF16)));
4044 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.ServiceName, ndr_charset_length(r->in.ServiceName, CH_UTF16), sizeof(uint16_t), CH_UTF16));
4046 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.DisplayName));
4047 if (r->in.DisplayName) {
4048 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.DisplayName, CH_UTF16)));
4049 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
4050 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.DisplayName, CH_UTF16)));
4051 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.DisplayName, ndr_charset_length(r->in.DisplayName, CH_UTF16), sizeof(uint16_t), CH_UTF16));
4053 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.desired_access));
4054 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.type));
4055 NDR_CHECK(ndr_push_svcctl_StartType(ndr, NDR_SCALARS, r->in.start_type));
4056 NDR_CHECK(ndr_push_svcctl_ErrorControl(ndr, NDR_SCALARS, r->in.error_control));
4057 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.binary_path));
4058 if (r->in.binary_path) {
4059 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.binary_path, CH_UTF16)));
4060 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
4061 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.binary_path, CH_UTF16)));
4062 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));
4064 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.LoadOrderGroupKey));
4065 if (r->in.LoadOrderGroupKey) {
4066 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.LoadOrderGroupKey, CH_UTF16)));
4067 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
4068 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.LoadOrderGroupKey, CH_UTF16)));
4069 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.LoadOrderGroupKey, ndr_charset_length(r->in.LoadOrderGroupKey, CH_UTF16), sizeof(uint16_t), CH_UTF16));
4071 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.dependencies));
4072 if (r->in.dependencies) {
4073 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.dependencies, CH_UTF16)));
4074 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
4075 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.dependencies, CH_UTF16)));
4076 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.dependencies, ndr_charset_length(r->in.dependencies, CH_UTF16), sizeof(uint16_t), CH_UTF16));
4078 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.service_start_name));
4079 if (r->in.service_start_name) {
4080 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.service_start_name, CH_UTF16)));
4081 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
4082 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.service_start_name, CH_UTF16)));
4083 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));
4085 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.password));
4086 if (r->in.password) {
4087 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.password, CH_UTF16)));
4088 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
4089 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.password, CH_UTF16)));
4090 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.password, ndr_charset_length(r->in.password, CH_UTF16), sizeof(uint16_t), CH_UTF16));
4093 if (flags & NDR_OUT) {
4094 NDR_CHECK(ndr_push_unique_ptr(ndr, r->out.TagId));
4095 if (r->out.TagId) {
4096 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.TagId));
4098 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
4100 return NDR_ERR_SUCCESS;
4103 static enum ndr_err_code ndr_pull_svcctl_CreateServiceA(struct ndr_pull *ndr, int flags, struct svcctl_CreateServiceA *r)
4105 uint32_t _ptr_ServiceName;
4106 uint32_t _ptr_DisplayName;
4107 uint32_t _ptr_binary_path;
4108 uint32_t _ptr_LoadOrderGroupKey;
4109 uint32_t _ptr_TagId;
4110 uint32_t _ptr_dependencies;
4111 uint32_t _ptr_service_start_name;
4112 uint32_t _ptr_password;
4113 TALLOC_CTX *_mem_save_handle_0;
4114 TALLOC_CTX *_mem_save_ServiceName_0;
4115 TALLOC_CTX *_mem_save_DisplayName_0;
4116 TALLOC_CTX *_mem_save_binary_path_0;
4117 TALLOC_CTX *_mem_save_LoadOrderGroupKey_0;
4118 TALLOC_CTX *_mem_save_TagId_0;
4119 TALLOC_CTX *_mem_save_dependencies_0;
4120 TALLOC_CTX *_mem_save_service_start_name_0;
4121 TALLOC_CTX *_mem_save_password_0;
4122 if (flags & NDR_IN) {
4123 ZERO_STRUCT(r->out);
4125 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
4126 NDR_PULL_ALLOC(ndr, r->in.handle);
4128 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
4129 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
4130 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
4131 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
4132 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_ServiceName));
4133 if (_ptr_ServiceName) {
4134 NDR_PULL_ALLOC(ndr, r->in.ServiceName);
4135 } else {
4136 r->in.ServiceName = NULL;
4138 if (r->in.ServiceName) {
4139 _mem_save_ServiceName_0 = NDR_PULL_GET_MEM_CTX(ndr);
4140 NDR_PULL_SET_MEM_CTX(ndr, r->in.ServiceName, 0);
4141 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.ServiceName));
4142 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.ServiceName));
4143 if (ndr_get_array_length(ndr, &r->in.ServiceName) > ndr_get_array_size(ndr, &r->in.ServiceName)) {
4144 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));
4146 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.ServiceName), sizeof(uint16_t)));
4147 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.ServiceName, ndr_get_array_length(ndr, &r->in.ServiceName), sizeof(uint16_t), CH_UTF16));
4148 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_ServiceName_0, 0);
4150 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_DisplayName));
4151 if (_ptr_DisplayName) {
4152 NDR_PULL_ALLOC(ndr, r->in.DisplayName);
4153 } else {
4154 r->in.DisplayName = NULL;
4156 if (r->in.DisplayName) {
4157 _mem_save_DisplayName_0 = NDR_PULL_GET_MEM_CTX(ndr);
4158 NDR_PULL_SET_MEM_CTX(ndr, r->in.DisplayName, 0);
4159 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.DisplayName));
4160 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.DisplayName));
4161 if (ndr_get_array_length(ndr, &r->in.DisplayName) > ndr_get_array_size(ndr, &r->in.DisplayName)) {
4162 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));
4164 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.DisplayName), sizeof(uint16_t)));
4165 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.DisplayName, ndr_get_array_length(ndr, &r->in.DisplayName), sizeof(uint16_t), CH_UTF16));
4166 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_DisplayName_0, 0);
4168 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.desired_access));
4169 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.type));
4170 NDR_CHECK(ndr_pull_svcctl_StartType(ndr, NDR_SCALARS, &r->in.start_type));
4171 NDR_CHECK(ndr_pull_svcctl_ErrorControl(ndr, NDR_SCALARS, &r->in.error_control));
4172 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_binary_path));
4173 if (_ptr_binary_path) {
4174 NDR_PULL_ALLOC(ndr, r->in.binary_path);
4175 } else {
4176 r->in.binary_path = NULL;
4178 if (r->in.binary_path) {
4179 _mem_save_binary_path_0 = NDR_PULL_GET_MEM_CTX(ndr);
4180 NDR_PULL_SET_MEM_CTX(ndr, r->in.binary_path, 0);
4181 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.binary_path));
4182 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.binary_path));
4183 if (ndr_get_array_length(ndr, &r->in.binary_path) > ndr_get_array_size(ndr, &r->in.binary_path)) {
4184 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));
4186 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.binary_path), sizeof(uint16_t)));
4187 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));
4188 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_binary_path_0, 0);
4190 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_LoadOrderGroupKey));
4191 if (_ptr_LoadOrderGroupKey) {
4192 NDR_PULL_ALLOC(ndr, r->in.LoadOrderGroupKey);
4193 } else {
4194 r->in.LoadOrderGroupKey = NULL;
4196 if (r->in.LoadOrderGroupKey) {
4197 _mem_save_LoadOrderGroupKey_0 = NDR_PULL_GET_MEM_CTX(ndr);
4198 NDR_PULL_SET_MEM_CTX(ndr, r->in.LoadOrderGroupKey, 0);
4199 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.LoadOrderGroupKey));
4200 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.LoadOrderGroupKey));
4201 if (ndr_get_array_length(ndr, &r->in.LoadOrderGroupKey) > ndr_get_array_size(ndr, &r->in.LoadOrderGroupKey)) {
4202 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));
4204 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.LoadOrderGroupKey), sizeof(uint16_t)));
4205 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.LoadOrderGroupKey, ndr_get_array_length(ndr, &r->in.LoadOrderGroupKey), sizeof(uint16_t), CH_UTF16));
4206 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_LoadOrderGroupKey_0, 0);
4208 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_dependencies));
4209 if (_ptr_dependencies) {
4210 NDR_PULL_ALLOC(ndr, r->in.dependencies);
4211 } else {
4212 r->in.dependencies = NULL;
4214 if (r->in.dependencies) {
4215 _mem_save_dependencies_0 = NDR_PULL_GET_MEM_CTX(ndr);
4216 NDR_PULL_SET_MEM_CTX(ndr, r->in.dependencies, 0);
4217 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.dependencies));
4218 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.dependencies));
4219 if (ndr_get_array_length(ndr, &r->in.dependencies) > ndr_get_array_size(ndr, &r->in.dependencies)) {
4220 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));
4222 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.dependencies), sizeof(uint16_t)));
4223 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.dependencies, ndr_get_array_length(ndr, &r->in.dependencies), sizeof(uint16_t), CH_UTF16));
4224 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_dependencies_0, 0);
4226 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_service_start_name));
4227 if (_ptr_service_start_name) {
4228 NDR_PULL_ALLOC(ndr, r->in.service_start_name);
4229 } else {
4230 r->in.service_start_name = NULL;
4232 if (r->in.service_start_name) {
4233 _mem_save_service_start_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
4234 NDR_PULL_SET_MEM_CTX(ndr, r->in.service_start_name, 0);
4235 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.service_start_name));
4236 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.service_start_name));
4237 if (ndr_get_array_length(ndr, &r->in.service_start_name) > ndr_get_array_size(ndr, &r->in.service_start_name)) {
4238 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));
4240 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.service_start_name), sizeof(uint16_t)));
4241 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));
4242 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_service_start_name_0, 0);
4244 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_password));
4245 if (_ptr_password) {
4246 NDR_PULL_ALLOC(ndr, r->in.password);
4247 } else {
4248 r->in.password = NULL;
4250 if (r->in.password) {
4251 _mem_save_password_0 = NDR_PULL_GET_MEM_CTX(ndr);
4252 NDR_PULL_SET_MEM_CTX(ndr, r->in.password, 0);
4253 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.password));
4254 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.password));
4255 if (ndr_get_array_length(ndr, &r->in.password) > ndr_get_array_size(ndr, &r->in.password)) {
4256 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));
4258 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.password), sizeof(uint16_t)));
4259 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.password, ndr_get_array_length(ndr, &r->in.password), sizeof(uint16_t), CH_UTF16));
4260 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_password_0, 0);
4263 if (flags & NDR_OUT) {
4264 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_TagId));
4265 if (_ptr_TagId) {
4266 NDR_PULL_ALLOC(ndr, r->out.TagId);
4267 } else {
4268 r->out.TagId = NULL;
4270 if (r->out.TagId) {
4271 _mem_save_TagId_0 = NDR_PULL_GET_MEM_CTX(ndr);
4272 NDR_PULL_SET_MEM_CTX(ndr, r->out.TagId, 0);
4273 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.TagId));
4274 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_TagId_0, 0);
4276 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
4278 return NDR_ERR_SUCCESS;
4281 _PUBLIC_ void ndr_print_svcctl_CreateServiceA(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_CreateServiceA *r)
4283 ndr_print_struct(ndr, name, "svcctl_CreateServiceA");
4284 ndr->depth++;
4285 if (flags & NDR_SET_VALUES) {
4286 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
4288 if (flags & NDR_IN) {
4289 ndr_print_struct(ndr, "in", "svcctl_CreateServiceA");
4290 ndr->depth++;
4291 ndr_print_ptr(ndr, "handle", r->in.handle);
4292 ndr->depth++;
4293 ndr_print_policy_handle(ndr, "handle", r->in.handle);
4294 ndr->depth--;
4295 ndr_print_ptr(ndr, "ServiceName", r->in.ServiceName);
4296 ndr->depth++;
4297 if (r->in.ServiceName) {
4298 ndr_print_string(ndr, "ServiceName", r->in.ServiceName);
4300 ndr->depth--;
4301 ndr_print_ptr(ndr, "DisplayName", r->in.DisplayName);
4302 ndr->depth++;
4303 if (r->in.DisplayName) {
4304 ndr_print_string(ndr, "DisplayName", r->in.DisplayName);
4306 ndr->depth--;
4307 ndr_print_uint32(ndr, "desired_access", r->in.desired_access);
4308 ndr_print_uint32(ndr, "type", r->in.type);
4309 ndr_print_svcctl_StartType(ndr, "start_type", r->in.start_type);
4310 ndr_print_svcctl_ErrorControl(ndr, "error_control", r->in.error_control);
4311 ndr_print_ptr(ndr, "binary_path", r->in.binary_path);
4312 ndr->depth++;
4313 if (r->in.binary_path) {
4314 ndr_print_string(ndr, "binary_path", r->in.binary_path);
4316 ndr->depth--;
4317 ndr_print_ptr(ndr, "LoadOrderGroupKey", r->in.LoadOrderGroupKey);
4318 ndr->depth++;
4319 if (r->in.LoadOrderGroupKey) {
4320 ndr_print_string(ndr, "LoadOrderGroupKey", r->in.LoadOrderGroupKey);
4322 ndr->depth--;
4323 ndr_print_ptr(ndr, "dependencies", r->in.dependencies);
4324 ndr->depth++;
4325 if (r->in.dependencies) {
4326 ndr_print_string(ndr, "dependencies", r->in.dependencies);
4328 ndr->depth--;
4329 ndr_print_ptr(ndr, "service_start_name", r->in.service_start_name);
4330 ndr->depth++;
4331 if (r->in.service_start_name) {
4332 ndr_print_string(ndr, "service_start_name", r->in.service_start_name);
4334 ndr->depth--;
4335 ndr_print_ptr(ndr, "password", r->in.password);
4336 ndr->depth++;
4337 if (r->in.password) {
4338 ndr_print_string(ndr, "password", r->in.password);
4340 ndr->depth--;
4341 ndr->depth--;
4343 if (flags & NDR_OUT) {
4344 ndr_print_struct(ndr, "out", "svcctl_CreateServiceA");
4345 ndr->depth++;
4346 ndr_print_ptr(ndr, "TagId", r->out.TagId);
4347 ndr->depth++;
4348 if (r->out.TagId) {
4349 ndr_print_uint32(ndr, "TagId", *r->out.TagId);
4351 ndr->depth--;
4352 ndr_print_WERROR(ndr, "result", r->out.result);
4353 ndr->depth--;
4355 ndr->depth--;
4358 static enum ndr_err_code ndr_push_svcctl_EnumDependentServicesA(struct ndr_push *ndr, int flags, const struct svcctl_EnumDependentServicesA *r)
4360 if (flags & NDR_IN) {
4361 if (r->in.service == NULL) {
4362 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
4364 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.service));
4365 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.state));
4366 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.buf_size));
4368 if (flags & NDR_OUT) {
4369 NDR_CHECK(ndr_push_unique_ptr(ndr, r->out.service_status));
4370 if (r->out.service_status) {
4371 NDR_CHECK(ndr_push_ENUM_SERVICE_STATUS(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.service_status));
4373 if (r->out.bytes_needed == NULL) {
4374 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
4376 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.bytes_needed));
4377 if (r->out.services_returned == NULL) {
4378 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
4380 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.services_returned));
4381 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
4383 return NDR_ERR_SUCCESS;
4386 static enum ndr_err_code ndr_pull_svcctl_EnumDependentServicesA(struct ndr_pull *ndr, int flags, struct svcctl_EnumDependentServicesA *r)
4388 uint32_t _ptr_service_status;
4389 TALLOC_CTX *_mem_save_service_0;
4390 TALLOC_CTX *_mem_save_service_status_0;
4391 TALLOC_CTX *_mem_save_bytes_needed_0;
4392 TALLOC_CTX *_mem_save_services_returned_0;
4393 if (flags & NDR_IN) {
4394 ZERO_STRUCT(r->out);
4396 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
4397 NDR_PULL_ALLOC(ndr, r->in.service);
4399 _mem_save_service_0 = NDR_PULL_GET_MEM_CTX(ndr);
4400 NDR_PULL_SET_MEM_CTX(ndr, r->in.service, LIBNDR_FLAG_REF_ALLOC);
4401 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.service));
4402 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_service_0, LIBNDR_FLAG_REF_ALLOC);
4403 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.state));
4404 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.buf_size));
4405 NDR_PULL_ALLOC(ndr, r->out.bytes_needed);
4406 ZERO_STRUCTP(r->out.bytes_needed);
4407 NDR_PULL_ALLOC(ndr, r->out.services_returned);
4408 ZERO_STRUCTP(r->out.services_returned);
4410 if (flags & NDR_OUT) {
4411 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_service_status));
4412 if (_ptr_service_status) {
4413 NDR_PULL_ALLOC(ndr, r->out.service_status);
4414 } else {
4415 r->out.service_status = NULL;
4417 if (r->out.service_status) {
4418 _mem_save_service_status_0 = NDR_PULL_GET_MEM_CTX(ndr);
4419 NDR_PULL_SET_MEM_CTX(ndr, r->out.service_status, 0);
4420 NDR_CHECK(ndr_pull_ENUM_SERVICE_STATUS(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.service_status));
4421 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_service_status_0, 0);
4423 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
4424 NDR_PULL_ALLOC(ndr, r->out.bytes_needed);
4426 _mem_save_bytes_needed_0 = NDR_PULL_GET_MEM_CTX(ndr);
4427 NDR_PULL_SET_MEM_CTX(ndr, r->out.bytes_needed, LIBNDR_FLAG_REF_ALLOC);
4428 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.bytes_needed));
4429 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_bytes_needed_0, LIBNDR_FLAG_REF_ALLOC);
4430 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
4431 NDR_PULL_ALLOC(ndr, r->out.services_returned);
4433 _mem_save_services_returned_0 = NDR_PULL_GET_MEM_CTX(ndr);
4434 NDR_PULL_SET_MEM_CTX(ndr, r->out.services_returned, LIBNDR_FLAG_REF_ALLOC);
4435 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.services_returned));
4436 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_services_returned_0, LIBNDR_FLAG_REF_ALLOC);
4437 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
4439 return NDR_ERR_SUCCESS;
4442 _PUBLIC_ void ndr_print_svcctl_EnumDependentServicesA(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_EnumDependentServicesA *r)
4444 ndr_print_struct(ndr, name, "svcctl_EnumDependentServicesA");
4445 ndr->depth++;
4446 if (flags & NDR_SET_VALUES) {
4447 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
4449 if (flags & NDR_IN) {
4450 ndr_print_struct(ndr, "in", "svcctl_EnumDependentServicesA");
4451 ndr->depth++;
4452 ndr_print_ptr(ndr, "service", r->in.service);
4453 ndr->depth++;
4454 ndr_print_policy_handle(ndr, "service", r->in.service);
4455 ndr->depth--;
4456 ndr_print_uint32(ndr, "state", r->in.state);
4457 ndr_print_uint32(ndr, "buf_size", r->in.buf_size);
4458 ndr->depth--;
4460 if (flags & NDR_OUT) {
4461 ndr_print_struct(ndr, "out", "svcctl_EnumDependentServicesA");
4462 ndr->depth++;
4463 ndr_print_ptr(ndr, "service_status", r->out.service_status);
4464 ndr->depth++;
4465 if (r->out.service_status) {
4466 ndr_print_ENUM_SERVICE_STATUS(ndr, "service_status", r->out.service_status);
4468 ndr->depth--;
4469 ndr_print_ptr(ndr, "bytes_needed", r->out.bytes_needed);
4470 ndr->depth++;
4471 ndr_print_uint32(ndr, "bytes_needed", *r->out.bytes_needed);
4472 ndr->depth--;
4473 ndr_print_ptr(ndr, "services_returned", r->out.services_returned);
4474 ndr->depth++;
4475 ndr_print_uint32(ndr, "services_returned", *r->out.services_returned);
4476 ndr->depth--;
4477 ndr_print_WERROR(ndr, "result", r->out.result);
4478 ndr->depth--;
4480 ndr->depth--;
4483 static enum ndr_err_code ndr_push_svcctl_EnumServicesStatusA(struct ndr_push *ndr, int flags, const struct svcctl_EnumServicesStatusA *r)
4485 if (flags & NDR_IN) {
4486 if (r->in.handle == NULL) {
4487 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
4489 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
4490 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.type));
4491 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.state));
4492 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.buf_size));
4493 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.resume_handle));
4494 if (r->in.resume_handle) {
4495 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->in.resume_handle));
4498 if (flags & NDR_OUT) {
4499 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.buf_size));
4500 NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->out.service, r->in.buf_size));
4501 if (r->out.bytes_needed == NULL) {
4502 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
4504 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.bytes_needed));
4505 if (r->out.services_returned == NULL) {
4506 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
4508 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.services_returned));
4509 NDR_CHECK(ndr_push_unique_ptr(ndr, r->out.resume_handle));
4510 if (r->out.resume_handle) {
4511 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.resume_handle));
4513 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
4515 return NDR_ERR_SUCCESS;
4518 static enum ndr_err_code ndr_pull_svcctl_EnumServicesStatusA(struct ndr_pull *ndr, int flags, struct svcctl_EnumServicesStatusA *r)
4520 uint32_t _ptr_resume_handle;
4521 TALLOC_CTX *_mem_save_handle_0;
4522 TALLOC_CTX *_mem_save_bytes_needed_0;
4523 TALLOC_CTX *_mem_save_services_returned_0;
4524 TALLOC_CTX *_mem_save_resume_handle_0;
4525 if (flags & NDR_IN) {
4526 ZERO_STRUCT(r->out);
4528 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
4529 NDR_PULL_ALLOC(ndr, r->in.handle);
4531 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
4532 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
4533 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
4534 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
4535 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.type));
4536 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.state));
4537 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.buf_size));
4538 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_resume_handle));
4539 if (_ptr_resume_handle) {
4540 NDR_PULL_ALLOC(ndr, r->in.resume_handle);
4541 } else {
4542 r->in.resume_handle = NULL;
4544 if (r->in.resume_handle) {
4545 _mem_save_resume_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
4546 NDR_PULL_SET_MEM_CTX(ndr, r->in.resume_handle, 0);
4547 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->in.resume_handle));
4548 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_resume_handle_0, 0);
4550 NDR_PULL_ALLOC(ndr, r->out.bytes_needed);
4551 ZERO_STRUCTP(r->out.bytes_needed);
4552 NDR_PULL_ALLOC(ndr, r->out.services_returned);
4553 ZERO_STRUCTP(r->out.services_returned);
4555 if (flags & NDR_OUT) {
4556 NDR_CHECK(ndr_pull_array_size(ndr, &r->out.service));
4557 NDR_PULL_ALLOC_N(ndr, r->out.service, ndr_get_array_size(ndr, &r->out.service));
4558 NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->out.service, ndr_get_array_size(ndr, &r->out.service)));
4559 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
4560 NDR_PULL_ALLOC(ndr, r->out.bytes_needed);
4562 _mem_save_bytes_needed_0 = NDR_PULL_GET_MEM_CTX(ndr);
4563 NDR_PULL_SET_MEM_CTX(ndr, r->out.bytes_needed, LIBNDR_FLAG_REF_ALLOC);
4564 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.bytes_needed));
4565 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_bytes_needed_0, LIBNDR_FLAG_REF_ALLOC);
4566 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
4567 NDR_PULL_ALLOC(ndr, r->out.services_returned);
4569 _mem_save_services_returned_0 = NDR_PULL_GET_MEM_CTX(ndr);
4570 NDR_PULL_SET_MEM_CTX(ndr, r->out.services_returned, LIBNDR_FLAG_REF_ALLOC);
4571 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.services_returned));
4572 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_services_returned_0, LIBNDR_FLAG_REF_ALLOC);
4573 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_resume_handle));
4574 if (_ptr_resume_handle) {
4575 NDR_PULL_ALLOC(ndr, r->out.resume_handle);
4576 } else {
4577 r->out.resume_handle = NULL;
4579 if (r->out.resume_handle) {
4580 _mem_save_resume_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
4581 NDR_PULL_SET_MEM_CTX(ndr, r->out.resume_handle, 0);
4582 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.resume_handle));
4583 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_resume_handle_0, 0);
4585 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
4586 if (r->out.service) {
4587 NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->out.service, r->in.buf_size));
4590 return NDR_ERR_SUCCESS;
4593 _PUBLIC_ void ndr_print_svcctl_EnumServicesStatusA(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_EnumServicesStatusA *r)
4595 ndr_print_struct(ndr, name, "svcctl_EnumServicesStatusA");
4596 ndr->depth++;
4597 if (flags & NDR_SET_VALUES) {
4598 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
4600 if (flags & NDR_IN) {
4601 ndr_print_struct(ndr, "in", "svcctl_EnumServicesStatusA");
4602 ndr->depth++;
4603 ndr_print_ptr(ndr, "handle", r->in.handle);
4604 ndr->depth++;
4605 ndr_print_policy_handle(ndr, "handle", r->in.handle);
4606 ndr->depth--;
4607 ndr_print_uint32(ndr, "type", r->in.type);
4608 ndr_print_uint32(ndr, "state", r->in.state);
4609 ndr_print_uint32(ndr, "buf_size", r->in.buf_size);
4610 ndr_print_ptr(ndr, "resume_handle", r->in.resume_handle);
4611 ndr->depth++;
4612 if (r->in.resume_handle) {
4613 ndr_print_uint32(ndr, "resume_handle", *r->in.resume_handle);
4615 ndr->depth--;
4616 ndr->depth--;
4618 if (flags & NDR_OUT) {
4619 ndr_print_struct(ndr, "out", "svcctl_EnumServicesStatusA");
4620 ndr->depth++;
4621 ndr_print_array_uint8(ndr, "service", r->out.service, r->in.buf_size);
4622 ndr_print_ptr(ndr, "bytes_needed", r->out.bytes_needed);
4623 ndr->depth++;
4624 ndr_print_uint32(ndr, "bytes_needed", *r->out.bytes_needed);
4625 ndr->depth--;
4626 ndr_print_ptr(ndr, "services_returned", r->out.services_returned);
4627 ndr->depth++;
4628 ndr_print_uint32(ndr, "services_returned", *r->out.services_returned);
4629 ndr->depth--;
4630 ndr_print_ptr(ndr, "resume_handle", r->out.resume_handle);
4631 ndr->depth++;
4632 if (r->out.resume_handle) {
4633 ndr_print_uint32(ndr, "resume_handle", *r->out.resume_handle);
4635 ndr->depth--;
4636 ndr_print_WERROR(ndr, "result", r->out.result);
4637 ndr->depth--;
4639 ndr->depth--;
4642 static enum ndr_err_code ndr_push_svcctl_OpenSCManagerA(struct ndr_push *ndr, int flags, const struct svcctl_OpenSCManagerA *r)
4644 if (flags & NDR_IN) {
4645 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.MachineName));
4646 if (r->in.MachineName) {
4647 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.MachineName, CH_UTF16)));
4648 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
4649 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.MachineName, CH_UTF16)));
4650 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.MachineName, ndr_charset_length(r->in.MachineName, CH_UTF16), sizeof(uint16_t), CH_UTF16));
4652 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.DatabaseName));
4653 if (r->in.DatabaseName) {
4654 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.DatabaseName, CH_UTF16)));
4655 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
4656 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.DatabaseName, CH_UTF16)));
4657 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.DatabaseName, ndr_charset_length(r->in.DatabaseName, CH_UTF16), sizeof(uint16_t), CH_UTF16));
4659 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.access_mask));
4661 if (flags & NDR_OUT) {
4662 if (r->out.handle == NULL) {
4663 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
4665 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->out.handle));
4666 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
4668 return NDR_ERR_SUCCESS;
4671 static enum ndr_err_code ndr_pull_svcctl_OpenSCManagerA(struct ndr_pull *ndr, int flags, struct svcctl_OpenSCManagerA *r)
4673 uint32_t _ptr_MachineName;
4674 uint32_t _ptr_DatabaseName;
4675 TALLOC_CTX *_mem_save_MachineName_0;
4676 TALLOC_CTX *_mem_save_DatabaseName_0;
4677 TALLOC_CTX *_mem_save_handle_0;
4678 if (flags & NDR_IN) {
4679 ZERO_STRUCT(r->out);
4681 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_MachineName));
4682 if (_ptr_MachineName) {
4683 NDR_PULL_ALLOC(ndr, r->in.MachineName);
4684 } else {
4685 r->in.MachineName = NULL;
4687 if (r->in.MachineName) {
4688 _mem_save_MachineName_0 = NDR_PULL_GET_MEM_CTX(ndr);
4689 NDR_PULL_SET_MEM_CTX(ndr, r->in.MachineName, 0);
4690 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.MachineName));
4691 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.MachineName));
4692 if (ndr_get_array_length(ndr, &r->in.MachineName) > ndr_get_array_size(ndr, &r->in.MachineName)) {
4693 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));
4695 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.MachineName), sizeof(uint16_t)));
4696 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.MachineName, ndr_get_array_length(ndr, &r->in.MachineName), sizeof(uint16_t), CH_UTF16));
4697 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_MachineName_0, 0);
4699 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_DatabaseName));
4700 if (_ptr_DatabaseName) {
4701 NDR_PULL_ALLOC(ndr, r->in.DatabaseName);
4702 } else {
4703 r->in.DatabaseName = NULL;
4705 if (r->in.DatabaseName) {
4706 _mem_save_DatabaseName_0 = NDR_PULL_GET_MEM_CTX(ndr);
4707 NDR_PULL_SET_MEM_CTX(ndr, r->in.DatabaseName, 0);
4708 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.DatabaseName));
4709 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.DatabaseName));
4710 if (ndr_get_array_length(ndr, &r->in.DatabaseName) > ndr_get_array_size(ndr, &r->in.DatabaseName)) {
4711 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));
4713 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.DatabaseName), sizeof(uint16_t)));
4714 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.DatabaseName, ndr_get_array_length(ndr, &r->in.DatabaseName), sizeof(uint16_t), CH_UTF16));
4715 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_DatabaseName_0, 0);
4717 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.access_mask));
4718 NDR_PULL_ALLOC(ndr, r->out.handle);
4719 ZERO_STRUCTP(r->out.handle);
4721 if (flags & NDR_OUT) {
4722 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
4723 NDR_PULL_ALLOC(ndr, r->out.handle);
4725 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
4726 NDR_PULL_SET_MEM_CTX(ndr, r->out.handle, LIBNDR_FLAG_REF_ALLOC);
4727 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->out.handle));
4728 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
4729 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
4731 return NDR_ERR_SUCCESS;
4734 _PUBLIC_ void ndr_print_svcctl_OpenSCManagerA(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_OpenSCManagerA *r)
4736 ndr_print_struct(ndr, name, "svcctl_OpenSCManagerA");
4737 ndr->depth++;
4738 if (flags & NDR_SET_VALUES) {
4739 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
4741 if (flags & NDR_IN) {
4742 ndr_print_struct(ndr, "in", "svcctl_OpenSCManagerA");
4743 ndr->depth++;
4744 ndr_print_ptr(ndr, "MachineName", r->in.MachineName);
4745 ndr->depth++;
4746 if (r->in.MachineName) {
4747 ndr_print_string(ndr, "MachineName", r->in.MachineName);
4749 ndr->depth--;
4750 ndr_print_ptr(ndr, "DatabaseName", r->in.DatabaseName);
4751 ndr->depth++;
4752 if (r->in.DatabaseName) {
4753 ndr_print_string(ndr, "DatabaseName", r->in.DatabaseName);
4755 ndr->depth--;
4756 ndr_print_uint32(ndr, "access_mask", r->in.access_mask);
4757 ndr->depth--;
4759 if (flags & NDR_OUT) {
4760 ndr_print_struct(ndr, "out", "svcctl_OpenSCManagerA");
4761 ndr->depth++;
4762 ndr_print_ptr(ndr, "handle", r->out.handle);
4763 ndr->depth++;
4764 ndr_print_policy_handle(ndr, "handle", r->out.handle);
4765 ndr->depth--;
4766 ndr_print_WERROR(ndr, "result", r->out.result);
4767 ndr->depth--;
4769 ndr->depth--;
4772 static enum ndr_err_code ndr_push_svcctl_OpenServiceA(struct ndr_push *ndr, int flags, const struct svcctl_OpenServiceA *r)
4774 if (flags & NDR_IN) {
4775 if (r->in.scmanager_handle == NULL) {
4776 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
4778 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.scmanager_handle));
4779 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.ServiceName));
4780 if (r->in.ServiceName) {
4781 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.ServiceName, CH_UTF16)));
4782 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
4783 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.ServiceName, CH_UTF16)));
4784 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.ServiceName, ndr_charset_length(r->in.ServiceName, CH_UTF16), sizeof(uint16_t), CH_UTF16));
4786 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.access_mask));
4788 if (flags & NDR_OUT) {
4789 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
4791 return NDR_ERR_SUCCESS;
4794 static enum ndr_err_code ndr_pull_svcctl_OpenServiceA(struct ndr_pull *ndr, int flags, struct svcctl_OpenServiceA *r)
4796 uint32_t _ptr_ServiceName;
4797 TALLOC_CTX *_mem_save_scmanager_handle_0;
4798 TALLOC_CTX *_mem_save_ServiceName_0;
4799 if (flags & NDR_IN) {
4800 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
4801 NDR_PULL_ALLOC(ndr, r->in.scmanager_handle);
4803 _mem_save_scmanager_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
4804 NDR_PULL_SET_MEM_CTX(ndr, r->in.scmanager_handle, LIBNDR_FLAG_REF_ALLOC);
4805 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.scmanager_handle));
4806 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_scmanager_handle_0, LIBNDR_FLAG_REF_ALLOC);
4807 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_ServiceName));
4808 if (_ptr_ServiceName) {
4809 NDR_PULL_ALLOC(ndr, r->in.ServiceName);
4810 } else {
4811 r->in.ServiceName = NULL;
4813 if (r->in.ServiceName) {
4814 _mem_save_ServiceName_0 = NDR_PULL_GET_MEM_CTX(ndr);
4815 NDR_PULL_SET_MEM_CTX(ndr, r->in.ServiceName, 0);
4816 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.ServiceName));
4817 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.ServiceName));
4818 if (ndr_get_array_length(ndr, &r->in.ServiceName) > ndr_get_array_size(ndr, &r->in.ServiceName)) {
4819 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));
4821 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.ServiceName), sizeof(uint16_t)));
4822 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.ServiceName, ndr_get_array_length(ndr, &r->in.ServiceName), sizeof(uint16_t), CH_UTF16));
4823 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_ServiceName_0, 0);
4825 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.access_mask));
4827 if (flags & NDR_OUT) {
4828 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
4830 return NDR_ERR_SUCCESS;
4833 _PUBLIC_ void ndr_print_svcctl_OpenServiceA(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_OpenServiceA *r)
4835 ndr_print_struct(ndr, name, "svcctl_OpenServiceA");
4836 ndr->depth++;
4837 if (flags & NDR_SET_VALUES) {
4838 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
4840 if (flags & NDR_IN) {
4841 ndr_print_struct(ndr, "in", "svcctl_OpenServiceA");
4842 ndr->depth++;
4843 ndr_print_ptr(ndr, "scmanager_handle", r->in.scmanager_handle);
4844 ndr->depth++;
4845 ndr_print_policy_handle(ndr, "scmanager_handle", r->in.scmanager_handle);
4846 ndr->depth--;
4847 ndr_print_ptr(ndr, "ServiceName", r->in.ServiceName);
4848 ndr->depth++;
4849 if (r->in.ServiceName) {
4850 ndr_print_string(ndr, "ServiceName", r->in.ServiceName);
4852 ndr->depth--;
4853 ndr_print_uint32(ndr, "access_mask", r->in.access_mask);
4854 ndr->depth--;
4856 if (flags & NDR_OUT) {
4857 ndr_print_struct(ndr, "out", "svcctl_OpenServiceA");
4858 ndr->depth++;
4859 ndr_print_WERROR(ndr, "result", r->out.result);
4860 ndr->depth--;
4862 ndr->depth--;
4865 static enum ndr_err_code ndr_push_svcctl_QueryServiceConfigA(struct ndr_push *ndr, int flags, const struct svcctl_QueryServiceConfigA *r)
4867 if (flags & NDR_IN) {
4868 if (r->in.handle == NULL) {
4869 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
4871 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
4872 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.buf_size));
4874 if (flags & NDR_OUT) {
4875 NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->out.query, r->in.buf_size));
4876 if (r->out.bytes_needed == NULL) {
4877 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
4879 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.bytes_needed));
4880 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
4882 return NDR_ERR_SUCCESS;
4885 static enum ndr_err_code ndr_pull_svcctl_QueryServiceConfigA(struct ndr_pull *ndr, int flags, struct svcctl_QueryServiceConfigA *r)
4887 TALLOC_CTX *_mem_save_handle_0;
4888 TALLOC_CTX *_mem_save_bytes_needed_0;
4889 if (flags & NDR_IN) {
4890 ZERO_STRUCT(r->out);
4892 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
4893 NDR_PULL_ALLOC(ndr, r->in.handle);
4895 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
4896 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
4897 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
4898 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
4899 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.buf_size));
4900 NDR_PULL_ALLOC(ndr, r->out.bytes_needed);
4901 ZERO_STRUCTP(r->out.bytes_needed);
4903 if (flags & NDR_OUT) {
4904 NDR_PULL_ALLOC_N(ndr, r->out.query, r->in.buf_size);
4905 NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->out.query, r->in.buf_size));
4906 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
4907 NDR_PULL_ALLOC(ndr, r->out.bytes_needed);
4909 _mem_save_bytes_needed_0 = NDR_PULL_GET_MEM_CTX(ndr);
4910 NDR_PULL_SET_MEM_CTX(ndr, r->out.bytes_needed, LIBNDR_FLAG_REF_ALLOC);
4911 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.bytes_needed));
4912 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_bytes_needed_0, LIBNDR_FLAG_REF_ALLOC);
4913 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
4915 return NDR_ERR_SUCCESS;
4918 _PUBLIC_ void ndr_print_svcctl_QueryServiceConfigA(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_QueryServiceConfigA *r)
4920 ndr_print_struct(ndr, name, "svcctl_QueryServiceConfigA");
4921 ndr->depth++;
4922 if (flags & NDR_SET_VALUES) {
4923 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
4925 if (flags & NDR_IN) {
4926 ndr_print_struct(ndr, "in", "svcctl_QueryServiceConfigA");
4927 ndr->depth++;
4928 ndr_print_ptr(ndr, "handle", r->in.handle);
4929 ndr->depth++;
4930 ndr_print_policy_handle(ndr, "handle", r->in.handle);
4931 ndr->depth--;
4932 ndr_print_uint32(ndr, "buf_size", r->in.buf_size);
4933 ndr->depth--;
4935 if (flags & NDR_OUT) {
4936 ndr_print_struct(ndr, "out", "svcctl_QueryServiceConfigA");
4937 ndr->depth++;
4938 ndr_print_array_uint8(ndr, "query", r->out.query, r->in.buf_size);
4939 ndr_print_ptr(ndr, "bytes_needed", r->out.bytes_needed);
4940 ndr->depth++;
4941 ndr_print_uint32(ndr, "bytes_needed", *r->out.bytes_needed);
4942 ndr->depth--;
4943 ndr_print_WERROR(ndr, "result", r->out.result);
4944 ndr->depth--;
4946 ndr->depth--;
4949 static enum ndr_err_code ndr_push_svcctl_QueryServiceLockStatusA(struct ndr_push *ndr, int flags, const struct svcctl_QueryServiceLockStatusA *r)
4951 if (flags & NDR_IN) {
4952 if (r->in.handle == NULL) {
4953 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
4955 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
4956 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.buf_size));
4958 if (flags & NDR_OUT) {
4959 if (r->out.lock_status == NULL) {
4960 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
4962 NDR_CHECK(ndr_push_SERVICE_LOCK_STATUS(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.lock_status));
4963 if (r->out.required_buf_size == NULL) {
4964 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
4966 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.required_buf_size));
4967 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
4969 return NDR_ERR_SUCCESS;
4972 static enum ndr_err_code ndr_pull_svcctl_QueryServiceLockStatusA(struct ndr_pull *ndr, int flags, struct svcctl_QueryServiceLockStatusA *r)
4974 TALLOC_CTX *_mem_save_handle_0;
4975 TALLOC_CTX *_mem_save_lock_status_0;
4976 TALLOC_CTX *_mem_save_required_buf_size_0;
4977 if (flags & NDR_IN) {
4978 ZERO_STRUCT(r->out);
4980 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
4981 NDR_PULL_ALLOC(ndr, r->in.handle);
4983 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
4984 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
4985 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
4986 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
4987 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.buf_size));
4988 NDR_PULL_ALLOC(ndr, r->out.lock_status);
4989 ZERO_STRUCTP(r->out.lock_status);
4990 NDR_PULL_ALLOC(ndr, r->out.required_buf_size);
4991 ZERO_STRUCTP(r->out.required_buf_size);
4993 if (flags & NDR_OUT) {
4994 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
4995 NDR_PULL_ALLOC(ndr, r->out.lock_status);
4997 _mem_save_lock_status_0 = NDR_PULL_GET_MEM_CTX(ndr);
4998 NDR_PULL_SET_MEM_CTX(ndr, r->out.lock_status, LIBNDR_FLAG_REF_ALLOC);
4999 NDR_CHECK(ndr_pull_SERVICE_LOCK_STATUS(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.lock_status));
5000 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_lock_status_0, LIBNDR_FLAG_REF_ALLOC);
5001 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
5002 NDR_PULL_ALLOC(ndr, r->out.required_buf_size);
5004 _mem_save_required_buf_size_0 = NDR_PULL_GET_MEM_CTX(ndr);
5005 NDR_PULL_SET_MEM_CTX(ndr, r->out.required_buf_size, LIBNDR_FLAG_REF_ALLOC);
5006 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.required_buf_size));
5007 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_required_buf_size_0, LIBNDR_FLAG_REF_ALLOC);
5008 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
5010 return NDR_ERR_SUCCESS;
5013 _PUBLIC_ void ndr_print_svcctl_QueryServiceLockStatusA(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_QueryServiceLockStatusA *r)
5015 ndr_print_struct(ndr, name, "svcctl_QueryServiceLockStatusA");
5016 ndr->depth++;
5017 if (flags & NDR_SET_VALUES) {
5018 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
5020 if (flags & NDR_IN) {
5021 ndr_print_struct(ndr, "in", "svcctl_QueryServiceLockStatusA");
5022 ndr->depth++;
5023 ndr_print_ptr(ndr, "handle", r->in.handle);
5024 ndr->depth++;
5025 ndr_print_policy_handle(ndr, "handle", r->in.handle);
5026 ndr->depth--;
5027 ndr_print_uint32(ndr, "buf_size", r->in.buf_size);
5028 ndr->depth--;
5030 if (flags & NDR_OUT) {
5031 ndr_print_struct(ndr, "out", "svcctl_QueryServiceLockStatusA");
5032 ndr->depth++;
5033 ndr_print_ptr(ndr, "lock_status", r->out.lock_status);
5034 ndr->depth++;
5035 ndr_print_SERVICE_LOCK_STATUS(ndr, "lock_status", r->out.lock_status);
5036 ndr->depth--;
5037 ndr_print_ptr(ndr, "required_buf_size", r->out.required_buf_size);
5038 ndr->depth++;
5039 ndr_print_uint32(ndr, "required_buf_size", *r->out.required_buf_size);
5040 ndr->depth--;
5041 ndr_print_WERROR(ndr, "result", r->out.result);
5042 ndr->depth--;
5044 ndr->depth--;
5047 static enum ndr_err_code ndr_push_svcctl_StartServiceA(struct ndr_push *ndr, int flags, const struct svcctl_StartServiceA *r)
5049 if (flags & NDR_IN) {
5050 if (r->in.handle == NULL) {
5051 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
5053 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
5054 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.NumArgs));
5055 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.Arguments));
5056 if (r->in.Arguments) {
5057 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.Arguments, CH_UTF16)));
5058 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
5059 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.Arguments, CH_UTF16)));
5060 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.Arguments, ndr_charset_length(r->in.Arguments, CH_UTF16), sizeof(uint16_t), CH_UTF16));
5063 if (flags & NDR_OUT) {
5064 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
5066 return NDR_ERR_SUCCESS;
5069 static enum ndr_err_code ndr_pull_svcctl_StartServiceA(struct ndr_pull *ndr, int flags, struct svcctl_StartServiceA *r)
5071 uint32_t _ptr_Arguments;
5072 TALLOC_CTX *_mem_save_handle_0;
5073 TALLOC_CTX *_mem_save_Arguments_0;
5074 if (flags & NDR_IN) {
5075 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
5076 NDR_PULL_ALLOC(ndr, r->in.handle);
5078 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
5079 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
5080 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
5081 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
5082 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.NumArgs));
5083 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_Arguments));
5084 if (_ptr_Arguments) {
5085 NDR_PULL_ALLOC(ndr, r->in.Arguments);
5086 } else {
5087 r->in.Arguments = NULL;
5089 if (r->in.Arguments) {
5090 _mem_save_Arguments_0 = NDR_PULL_GET_MEM_CTX(ndr);
5091 NDR_PULL_SET_MEM_CTX(ndr, r->in.Arguments, 0);
5092 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.Arguments));
5093 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.Arguments));
5094 if (ndr_get_array_length(ndr, &r->in.Arguments) > ndr_get_array_size(ndr, &r->in.Arguments)) {
5095 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));
5097 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.Arguments), sizeof(uint16_t)));
5098 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.Arguments, ndr_get_array_length(ndr, &r->in.Arguments), sizeof(uint16_t), CH_UTF16));
5099 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_Arguments_0, 0);
5102 if (flags & NDR_OUT) {
5103 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
5105 return NDR_ERR_SUCCESS;
5108 _PUBLIC_ void ndr_print_svcctl_StartServiceA(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_StartServiceA *r)
5110 ndr_print_struct(ndr, name, "svcctl_StartServiceA");
5111 ndr->depth++;
5112 if (flags & NDR_SET_VALUES) {
5113 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
5115 if (flags & NDR_IN) {
5116 ndr_print_struct(ndr, "in", "svcctl_StartServiceA");
5117 ndr->depth++;
5118 ndr_print_ptr(ndr, "handle", r->in.handle);
5119 ndr->depth++;
5120 ndr_print_policy_handle(ndr, "handle", r->in.handle);
5121 ndr->depth--;
5122 ndr_print_uint32(ndr, "NumArgs", r->in.NumArgs);
5123 ndr_print_ptr(ndr, "Arguments", r->in.Arguments);
5124 ndr->depth++;
5125 if (r->in.Arguments) {
5126 ndr_print_string(ndr, "Arguments", r->in.Arguments);
5128 ndr->depth--;
5129 ndr->depth--;
5131 if (flags & NDR_OUT) {
5132 ndr_print_struct(ndr, "out", "svcctl_StartServiceA");
5133 ndr->depth++;
5134 ndr_print_WERROR(ndr, "result", r->out.result);
5135 ndr->depth--;
5137 ndr->depth--;
5140 static enum ndr_err_code ndr_push_svcctl_GetServiceDisplayNameA(struct ndr_push *ndr, int flags, const struct svcctl_GetServiceDisplayNameA *r)
5142 if (flags & NDR_IN) {
5143 if (r->in.handle == NULL) {
5144 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
5146 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
5147 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.service_name));
5148 if (r->in.service_name) {
5149 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.service_name, CH_UTF16)));
5150 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
5151 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.service_name, CH_UTF16)));
5152 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));
5154 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.display_name_length));
5155 if (r->in.display_name_length) {
5156 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->in.display_name_length));
5159 if (flags & NDR_OUT) {
5160 if (r->out.display_name == NULL) {
5161 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
5163 NDR_CHECK(ndr_push_unique_ptr(ndr, *r->out.display_name));
5164 if (*r->out.display_name) {
5165 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(*r->out.display_name, CH_UTF16)));
5166 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
5167 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(*r->out.display_name, CH_UTF16)));
5168 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));
5170 NDR_CHECK(ndr_push_unique_ptr(ndr, r->out.display_name_length));
5171 if (r->out.display_name_length) {
5172 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.display_name_length));
5174 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
5176 return NDR_ERR_SUCCESS;
5179 static enum ndr_err_code ndr_pull_svcctl_GetServiceDisplayNameA(struct ndr_pull *ndr, int flags, struct svcctl_GetServiceDisplayNameA *r)
5181 uint32_t _ptr_service_name;
5182 uint32_t _ptr_display_name;
5183 uint32_t _ptr_display_name_length;
5184 TALLOC_CTX *_mem_save_handle_0;
5185 TALLOC_CTX *_mem_save_service_name_0;
5186 TALLOC_CTX *_mem_save_display_name_0;
5187 TALLOC_CTX *_mem_save_display_name_1;
5188 TALLOC_CTX *_mem_save_display_name_length_0;
5189 if (flags & NDR_IN) {
5190 ZERO_STRUCT(r->out);
5192 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
5193 NDR_PULL_ALLOC(ndr, r->in.handle);
5195 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
5196 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
5197 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
5198 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
5199 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_service_name));
5200 if (_ptr_service_name) {
5201 NDR_PULL_ALLOC(ndr, r->in.service_name);
5202 } else {
5203 r->in.service_name = NULL;
5205 if (r->in.service_name) {
5206 _mem_save_service_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
5207 NDR_PULL_SET_MEM_CTX(ndr, r->in.service_name, 0);
5208 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.service_name));
5209 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.service_name));
5210 if (ndr_get_array_length(ndr, &r->in.service_name) > ndr_get_array_size(ndr, &r->in.service_name)) {
5211 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));
5213 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.service_name), sizeof(uint16_t)));
5214 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));
5215 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_service_name_0, 0);
5217 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_display_name_length));
5218 if (_ptr_display_name_length) {
5219 NDR_PULL_ALLOC(ndr, r->in.display_name_length);
5220 } else {
5221 r->in.display_name_length = NULL;
5223 if (r->in.display_name_length) {
5224 _mem_save_display_name_length_0 = NDR_PULL_GET_MEM_CTX(ndr);
5225 NDR_PULL_SET_MEM_CTX(ndr, r->in.display_name_length, 0);
5226 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->in.display_name_length));
5227 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_display_name_length_0, 0);
5229 NDR_PULL_ALLOC(ndr, r->out.display_name);
5230 ZERO_STRUCTP(r->out.display_name);
5232 if (flags & NDR_OUT) {
5233 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
5234 NDR_PULL_ALLOC(ndr, r->out.display_name);
5236 _mem_save_display_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
5237 NDR_PULL_SET_MEM_CTX(ndr, r->out.display_name, LIBNDR_FLAG_REF_ALLOC);
5238 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_display_name));
5239 if (_ptr_display_name) {
5240 NDR_PULL_ALLOC(ndr, *r->out.display_name);
5241 } else {
5242 *r->out.display_name = NULL;
5244 if (*r->out.display_name) {
5245 _mem_save_display_name_1 = NDR_PULL_GET_MEM_CTX(ndr);
5246 NDR_PULL_SET_MEM_CTX(ndr, *r->out.display_name, 0);
5247 NDR_CHECK(ndr_pull_array_size(ndr, r->out.display_name));
5248 NDR_CHECK(ndr_pull_array_length(ndr, r->out.display_name));
5249 if (ndr_get_array_length(ndr, r->out.display_name) > ndr_get_array_size(ndr, r->out.display_name)) {
5250 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));
5252 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, r->out.display_name), sizeof(uint16_t)));
5253 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));
5254 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_display_name_1, 0);
5256 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_display_name_0, LIBNDR_FLAG_REF_ALLOC);
5257 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_display_name_length));
5258 if (_ptr_display_name_length) {
5259 NDR_PULL_ALLOC(ndr, r->out.display_name_length);
5260 } else {
5261 r->out.display_name_length = NULL;
5263 if (r->out.display_name_length) {
5264 _mem_save_display_name_length_0 = NDR_PULL_GET_MEM_CTX(ndr);
5265 NDR_PULL_SET_MEM_CTX(ndr, r->out.display_name_length, 0);
5266 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.display_name_length));
5267 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_display_name_length_0, 0);
5269 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
5271 return NDR_ERR_SUCCESS;
5274 _PUBLIC_ void ndr_print_svcctl_GetServiceDisplayNameA(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_GetServiceDisplayNameA *r)
5276 ndr_print_struct(ndr, name, "svcctl_GetServiceDisplayNameA");
5277 ndr->depth++;
5278 if (flags & NDR_SET_VALUES) {
5279 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
5281 if (flags & NDR_IN) {
5282 ndr_print_struct(ndr, "in", "svcctl_GetServiceDisplayNameA");
5283 ndr->depth++;
5284 ndr_print_ptr(ndr, "handle", r->in.handle);
5285 ndr->depth++;
5286 ndr_print_policy_handle(ndr, "handle", r->in.handle);
5287 ndr->depth--;
5288 ndr_print_ptr(ndr, "service_name", r->in.service_name);
5289 ndr->depth++;
5290 if (r->in.service_name) {
5291 ndr_print_string(ndr, "service_name", r->in.service_name);
5293 ndr->depth--;
5294 ndr_print_ptr(ndr, "display_name_length", r->in.display_name_length);
5295 ndr->depth++;
5296 if (r->in.display_name_length) {
5297 ndr_print_uint32(ndr, "display_name_length", *r->in.display_name_length);
5299 ndr->depth--;
5300 ndr->depth--;
5302 if (flags & NDR_OUT) {
5303 ndr_print_struct(ndr, "out", "svcctl_GetServiceDisplayNameA");
5304 ndr->depth++;
5305 ndr_print_ptr(ndr, "display_name", r->out.display_name);
5306 ndr->depth++;
5307 ndr_print_ptr(ndr, "display_name", *r->out.display_name);
5308 ndr->depth++;
5309 if (*r->out.display_name) {
5310 ndr_print_string(ndr, "display_name", *r->out.display_name);
5312 ndr->depth--;
5313 ndr->depth--;
5314 ndr_print_ptr(ndr, "display_name_length", r->out.display_name_length);
5315 ndr->depth++;
5316 if (r->out.display_name_length) {
5317 ndr_print_uint32(ndr, "display_name_length", *r->out.display_name_length);
5319 ndr->depth--;
5320 ndr_print_WERROR(ndr, "result", r->out.result);
5321 ndr->depth--;
5323 ndr->depth--;
5326 static enum ndr_err_code ndr_push_svcctl_GetServiceKeyNameA(struct ndr_push *ndr, int flags, const struct svcctl_GetServiceKeyNameA *r)
5328 if (flags & NDR_IN) {
5329 if (r->in.handle == NULL) {
5330 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
5332 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
5333 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.service_name));
5334 if (r->in.service_name) {
5335 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.service_name, CH_UTF16)));
5336 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
5337 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.service_name, CH_UTF16)));
5338 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));
5340 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.display_name_length));
5341 if (r->in.display_name_length) {
5342 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->in.display_name_length));
5345 if (flags & NDR_OUT) {
5346 if (r->out.key_name == NULL) {
5347 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
5349 NDR_CHECK(ndr_push_unique_ptr(ndr, *r->out.key_name));
5350 if (*r->out.key_name) {
5351 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(*r->out.key_name, CH_UTF16)));
5352 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
5353 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(*r->out.key_name, CH_UTF16)));
5354 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));
5356 NDR_CHECK(ndr_push_unique_ptr(ndr, r->out.display_name_length));
5357 if (r->out.display_name_length) {
5358 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.display_name_length));
5360 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
5362 return NDR_ERR_SUCCESS;
5365 static enum ndr_err_code ndr_pull_svcctl_GetServiceKeyNameA(struct ndr_pull *ndr, int flags, struct svcctl_GetServiceKeyNameA *r)
5367 uint32_t _ptr_service_name;
5368 uint32_t _ptr_key_name;
5369 uint32_t _ptr_display_name_length;
5370 TALLOC_CTX *_mem_save_handle_0;
5371 TALLOC_CTX *_mem_save_service_name_0;
5372 TALLOC_CTX *_mem_save_key_name_0;
5373 TALLOC_CTX *_mem_save_key_name_1;
5374 TALLOC_CTX *_mem_save_display_name_length_0;
5375 if (flags & NDR_IN) {
5376 ZERO_STRUCT(r->out);
5378 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
5379 NDR_PULL_ALLOC(ndr, r->in.handle);
5381 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
5382 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
5383 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
5384 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
5385 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_service_name));
5386 if (_ptr_service_name) {
5387 NDR_PULL_ALLOC(ndr, r->in.service_name);
5388 } else {
5389 r->in.service_name = NULL;
5391 if (r->in.service_name) {
5392 _mem_save_service_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
5393 NDR_PULL_SET_MEM_CTX(ndr, r->in.service_name, 0);
5394 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.service_name));
5395 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.service_name));
5396 if (ndr_get_array_length(ndr, &r->in.service_name) > ndr_get_array_size(ndr, &r->in.service_name)) {
5397 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));
5399 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.service_name), sizeof(uint16_t)));
5400 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));
5401 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_service_name_0, 0);
5403 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_display_name_length));
5404 if (_ptr_display_name_length) {
5405 NDR_PULL_ALLOC(ndr, r->in.display_name_length);
5406 } else {
5407 r->in.display_name_length = NULL;
5409 if (r->in.display_name_length) {
5410 _mem_save_display_name_length_0 = NDR_PULL_GET_MEM_CTX(ndr);
5411 NDR_PULL_SET_MEM_CTX(ndr, r->in.display_name_length, 0);
5412 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->in.display_name_length));
5413 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_display_name_length_0, 0);
5415 NDR_PULL_ALLOC(ndr, r->out.key_name);
5416 ZERO_STRUCTP(r->out.key_name);
5418 if (flags & NDR_OUT) {
5419 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
5420 NDR_PULL_ALLOC(ndr, r->out.key_name);
5422 _mem_save_key_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
5423 NDR_PULL_SET_MEM_CTX(ndr, r->out.key_name, LIBNDR_FLAG_REF_ALLOC);
5424 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_key_name));
5425 if (_ptr_key_name) {
5426 NDR_PULL_ALLOC(ndr, *r->out.key_name);
5427 } else {
5428 *r->out.key_name = NULL;
5430 if (*r->out.key_name) {
5431 _mem_save_key_name_1 = NDR_PULL_GET_MEM_CTX(ndr);
5432 NDR_PULL_SET_MEM_CTX(ndr, *r->out.key_name, 0);
5433 NDR_CHECK(ndr_pull_array_size(ndr, r->out.key_name));
5434 NDR_CHECK(ndr_pull_array_length(ndr, r->out.key_name));
5435 if (ndr_get_array_length(ndr, r->out.key_name) > ndr_get_array_size(ndr, r->out.key_name)) {
5436 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));
5438 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, r->out.key_name), sizeof(uint16_t)));
5439 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));
5440 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_key_name_1, 0);
5442 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_key_name_0, LIBNDR_FLAG_REF_ALLOC);
5443 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_display_name_length));
5444 if (_ptr_display_name_length) {
5445 NDR_PULL_ALLOC(ndr, r->out.display_name_length);
5446 } else {
5447 r->out.display_name_length = NULL;
5449 if (r->out.display_name_length) {
5450 _mem_save_display_name_length_0 = NDR_PULL_GET_MEM_CTX(ndr);
5451 NDR_PULL_SET_MEM_CTX(ndr, r->out.display_name_length, 0);
5452 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.display_name_length));
5453 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_display_name_length_0, 0);
5455 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
5457 return NDR_ERR_SUCCESS;
5460 _PUBLIC_ void ndr_print_svcctl_GetServiceKeyNameA(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_GetServiceKeyNameA *r)
5462 ndr_print_struct(ndr, name, "svcctl_GetServiceKeyNameA");
5463 ndr->depth++;
5464 if (flags & NDR_SET_VALUES) {
5465 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
5467 if (flags & NDR_IN) {
5468 ndr_print_struct(ndr, "in", "svcctl_GetServiceKeyNameA");
5469 ndr->depth++;
5470 ndr_print_ptr(ndr, "handle", r->in.handle);
5471 ndr->depth++;
5472 ndr_print_policy_handle(ndr, "handle", r->in.handle);
5473 ndr->depth--;
5474 ndr_print_ptr(ndr, "service_name", r->in.service_name);
5475 ndr->depth++;
5476 if (r->in.service_name) {
5477 ndr_print_string(ndr, "service_name", r->in.service_name);
5479 ndr->depth--;
5480 ndr_print_ptr(ndr, "display_name_length", r->in.display_name_length);
5481 ndr->depth++;
5482 if (r->in.display_name_length) {
5483 ndr_print_uint32(ndr, "display_name_length", *r->in.display_name_length);
5485 ndr->depth--;
5486 ndr->depth--;
5488 if (flags & NDR_OUT) {
5489 ndr_print_struct(ndr, "out", "svcctl_GetServiceKeyNameA");
5490 ndr->depth++;
5491 ndr_print_ptr(ndr, "key_name", r->out.key_name);
5492 ndr->depth++;
5493 ndr_print_ptr(ndr, "key_name", *r->out.key_name);
5494 ndr->depth++;
5495 if (*r->out.key_name) {
5496 ndr_print_string(ndr, "key_name", *r->out.key_name);
5498 ndr->depth--;
5499 ndr->depth--;
5500 ndr_print_ptr(ndr, "display_name_length", r->out.display_name_length);
5501 ndr->depth++;
5502 if (r->out.display_name_length) {
5503 ndr_print_uint32(ndr, "display_name_length", *r->out.display_name_length);
5505 ndr->depth--;
5506 ndr_print_WERROR(ndr, "result", r->out.result);
5507 ndr->depth--;
5509 ndr->depth--;
5512 static enum ndr_err_code ndr_push_svcctl_GetCurrentGroupeStateW(struct ndr_push *ndr, int flags, const struct svcctl_GetCurrentGroupeStateW *r)
5514 if (flags & NDR_IN) {
5516 if (flags & NDR_OUT) {
5517 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
5519 return NDR_ERR_SUCCESS;
5522 static enum ndr_err_code ndr_pull_svcctl_GetCurrentGroupeStateW(struct ndr_pull *ndr, int flags, struct svcctl_GetCurrentGroupeStateW *r)
5524 if (flags & NDR_IN) {
5526 if (flags & NDR_OUT) {
5527 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
5529 return NDR_ERR_SUCCESS;
5532 _PUBLIC_ void ndr_print_svcctl_GetCurrentGroupeStateW(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_GetCurrentGroupeStateW *r)
5534 ndr_print_struct(ndr, name, "svcctl_GetCurrentGroupeStateW");
5535 ndr->depth++;
5536 if (flags & NDR_SET_VALUES) {
5537 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
5539 if (flags & NDR_IN) {
5540 ndr_print_struct(ndr, "in", "svcctl_GetCurrentGroupeStateW");
5541 ndr->depth++;
5542 ndr->depth--;
5544 if (flags & NDR_OUT) {
5545 ndr_print_struct(ndr, "out", "svcctl_GetCurrentGroupeStateW");
5546 ndr->depth++;
5547 ndr_print_WERROR(ndr, "result", r->out.result);
5548 ndr->depth--;
5550 ndr->depth--;
5553 static enum ndr_err_code ndr_push_svcctl_EnumServiceGroupW(struct ndr_push *ndr, int flags, const struct svcctl_EnumServiceGroupW *r)
5555 if (flags & NDR_IN) {
5557 if (flags & NDR_OUT) {
5558 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
5560 return NDR_ERR_SUCCESS;
5563 static enum ndr_err_code ndr_pull_svcctl_EnumServiceGroupW(struct ndr_pull *ndr, int flags, struct svcctl_EnumServiceGroupW *r)
5565 if (flags & NDR_IN) {
5567 if (flags & NDR_OUT) {
5568 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
5570 return NDR_ERR_SUCCESS;
5573 _PUBLIC_ void ndr_print_svcctl_EnumServiceGroupW(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_EnumServiceGroupW *r)
5575 ndr_print_struct(ndr, name, "svcctl_EnumServiceGroupW");
5576 ndr->depth++;
5577 if (flags & NDR_SET_VALUES) {
5578 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
5580 if (flags & NDR_IN) {
5581 ndr_print_struct(ndr, "in", "svcctl_EnumServiceGroupW");
5582 ndr->depth++;
5583 ndr->depth--;
5585 if (flags & NDR_OUT) {
5586 ndr_print_struct(ndr, "out", "svcctl_EnumServiceGroupW");
5587 ndr->depth++;
5588 ndr_print_WERROR(ndr, "result", r->out.result);
5589 ndr->depth--;
5591 ndr->depth--;
5594 static enum ndr_err_code ndr_push_svcctl_ChangeServiceConfig2A(struct ndr_push *ndr, int flags, const struct svcctl_ChangeServiceConfig2A *r)
5596 if (flags & NDR_IN) {
5597 if (r->in.handle == NULL) {
5598 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
5600 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
5601 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.info_level));
5602 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.info));
5603 if (r->in.info) {
5604 NDR_CHECK(ndr_push_uint8(ndr, NDR_SCALARS, *r->in.info));
5607 if (flags & NDR_OUT) {
5608 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
5610 return NDR_ERR_SUCCESS;
5613 static enum ndr_err_code ndr_pull_svcctl_ChangeServiceConfig2A(struct ndr_pull *ndr, int flags, struct svcctl_ChangeServiceConfig2A *r)
5615 uint32_t _ptr_info;
5616 TALLOC_CTX *_mem_save_handle_0;
5617 TALLOC_CTX *_mem_save_info_0;
5618 if (flags & NDR_IN) {
5619 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
5620 NDR_PULL_ALLOC(ndr, r->in.handle);
5622 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
5623 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
5624 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
5625 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
5626 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.info_level));
5627 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_info));
5628 if (_ptr_info) {
5629 NDR_PULL_ALLOC(ndr, r->in.info);
5630 } else {
5631 r->in.info = NULL;
5633 if (r->in.info) {
5634 _mem_save_info_0 = NDR_PULL_GET_MEM_CTX(ndr);
5635 NDR_PULL_SET_MEM_CTX(ndr, r->in.info, 0);
5636 NDR_CHECK(ndr_pull_uint8(ndr, NDR_SCALARS, r->in.info));
5637 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_info_0, 0);
5640 if (flags & NDR_OUT) {
5641 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
5643 return NDR_ERR_SUCCESS;
5646 _PUBLIC_ void ndr_print_svcctl_ChangeServiceConfig2A(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_ChangeServiceConfig2A *r)
5648 ndr_print_struct(ndr, name, "svcctl_ChangeServiceConfig2A");
5649 ndr->depth++;
5650 if (flags & NDR_SET_VALUES) {
5651 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
5653 if (flags & NDR_IN) {
5654 ndr_print_struct(ndr, "in", "svcctl_ChangeServiceConfig2A");
5655 ndr->depth++;
5656 ndr_print_ptr(ndr, "handle", r->in.handle);
5657 ndr->depth++;
5658 ndr_print_policy_handle(ndr, "handle", r->in.handle);
5659 ndr->depth--;
5660 ndr_print_uint32(ndr, "info_level", r->in.info_level);
5661 ndr_print_ptr(ndr, "info", r->in.info);
5662 ndr->depth++;
5663 if (r->in.info) {
5664 ndr_print_uint8(ndr, "info", *r->in.info);
5666 ndr->depth--;
5667 ndr->depth--;
5669 if (flags & NDR_OUT) {
5670 ndr_print_struct(ndr, "out", "svcctl_ChangeServiceConfig2A");
5671 ndr->depth++;
5672 ndr_print_WERROR(ndr, "result", r->out.result);
5673 ndr->depth--;
5675 ndr->depth--;
5678 static enum ndr_err_code ndr_push_svcctl_ChangeServiceConfig2W(struct ndr_push *ndr, int flags, const struct svcctl_ChangeServiceConfig2W *r)
5680 if (flags & NDR_IN) {
5681 if (r->in.handle == NULL) {
5682 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
5684 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
5685 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.info_level));
5686 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.info));
5687 if (r->in.info) {
5688 NDR_CHECK(ndr_push_uint8(ndr, NDR_SCALARS, *r->in.info));
5691 if (flags & NDR_OUT) {
5692 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
5694 return NDR_ERR_SUCCESS;
5697 static enum ndr_err_code ndr_pull_svcctl_ChangeServiceConfig2W(struct ndr_pull *ndr, int flags, struct svcctl_ChangeServiceConfig2W *r)
5699 uint32_t _ptr_info;
5700 TALLOC_CTX *_mem_save_handle_0;
5701 TALLOC_CTX *_mem_save_info_0;
5702 if (flags & NDR_IN) {
5703 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
5704 NDR_PULL_ALLOC(ndr, r->in.handle);
5706 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
5707 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
5708 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
5709 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
5710 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.info_level));
5711 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_info));
5712 if (_ptr_info) {
5713 NDR_PULL_ALLOC(ndr, r->in.info);
5714 } else {
5715 r->in.info = NULL;
5717 if (r->in.info) {
5718 _mem_save_info_0 = NDR_PULL_GET_MEM_CTX(ndr);
5719 NDR_PULL_SET_MEM_CTX(ndr, r->in.info, 0);
5720 NDR_CHECK(ndr_pull_uint8(ndr, NDR_SCALARS, r->in.info));
5721 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_info_0, 0);
5724 if (flags & NDR_OUT) {
5725 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
5727 return NDR_ERR_SUCCESS;
5730 _PUBLIC_ void ndr_print_svcctl_ChangeServiceConfig2W(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_ChangeServiceConfig2W *r)
5732 ndr_print_struct(ndr, name, "svcctl_ChangeServiceConfig2W");
5733 ndr->depth++;
5734 if (flags & NDR_SET_VALUES) {
5735 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
5737 if (flags & NDR_IN) {
5738 ndr_print_struct(ndr, "in", "svcctl_ChangeServiceConfig2W");
5739 ndr->depth++;
5740 ndr_print_ptr(ndr, "handle", r->in.handle);
5741 ndr->depth++;
5742 ndr_print_policy_handle(ndr, "handle", r->in.handle);
5743 ndr->depth--;
5744 ndr_print_uint32(ndr, "info_level", r->in.info_level);
5745 ndr_print_ptr(ndr, "info", r->in.info);
5746 ndr->depth++;
5747 if (r->in.info) {
5748 ndr_print_uint8(ndr, "info", *r->in.info);
5750 ndr->depth--;
5751 ndr->depth--;
5753 if (flags & NDR_OUT) {
5754 ndr_print_struct(ndr, "out", "svcctl_ChangeServiceConfig2W");
5755 ndr->depth++;
5756 ndr_print_WERROR(ndr, "result", r->out.result);
5757 ndr->depth--;
5759 ndr->depth--;
5762 static enum ndr_err_code ndr_push_svcctl_QueryServiceConfig2A(struct ndr_push *ndr, int flags, const struct svcctl_QueryServiceConfig2A *r)
5764 if (flags & NDR_IN) {
5765 if (r->in.handle == NULL) {
5766 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
5768 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
5769 NDR_CHECK(ndr_push_svcctl_ConfigLevel(ndr, NDR_SCALARS, r->in.info_level));
5770 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.buf_size));
5772 if (flags & NDR_OUT) {
5773 NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->out.buffer, r->in.buf_size));
5774 if (r->out.bytes_needed == NULL) {
5775 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
5777 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.bytes_needed));
5778 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
5780 return NDR_ERR_SUCCESS;
5783 static enum ndr_err_code ndr_pull_svcctl_QueryServiceConfig2A(struct ndr_pull *ndr, int flags, struct svcctl_QueryServiceConfig2A *r)
5785 TALLOC_CTX *_mem_save_handle_0;
5786 TALLOC_CTX *_mem_save_bytes_needed_0;
5787 if (flags & NDR_IN) {
5788 ZERO_STRUCT(r->out);
5790 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
5791 NDR_PULL_ALLOC(ndr, r->in.handle);
5793 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
5794 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
5795 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
5796 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
5797 NDR_CHECK(ndr_pull_svcctl_ConfigLevel(ndr, NDR_SCALARS, &r->in.info_level));
5798 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.buf_size));
5799 NDR_PULL_ALLOC(ndr, r->out.bytes_needed);
5800 ZERO_STRUCTP(r->out.bytes_needed);
5802 if (flags & NDR_OUT) {
5803 NDR_PULL_ALLOC_N(ndr, r->out.buffer, r->in.buf_size);
5804 NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->out.buffer, r->in.buf_size));
5805 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
5806 NDR_PULL_ALLOC(ndr, r->out.bytes_needed);
5808 _mem_save_bytes_needed_0 = NDR_PULL_GET_MEM_CTX(ndr);
5809 NDR_PULL_SET_MEM_CTX(ndr, r->out.bytes_needed, LIBNDR_FLAG_REF_ALLOC);
5810 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.bytes_needed));
5811 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_bytes_needed_0, LIBNDR_FLAG_REF_ALLOC);
5812 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
5814 return NDR_ERR_SUCCESS;
5817 _PUBLIC_ void ndr_print_svcctl_QueryServiceConfig2A(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_QueryServiceConfig2A *r)
5819 ndr_print_struct(ndr, name, "svcctl_QueryServiceConfig2A");
5820 ndr->depth++;
5821 if (flags & NDR_SET_VALUES) {
5822 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
5824 if (flags & NDR_IN) {
5825 ndr_print_struct(ndr, "in", "svcctl_QueryServiceConfig2A");
5826 ndr->depth++;
5827 ndr_print_ptr(ndr, "handle", r->in.handle);
5828 ndr->depth++;
5829 ndr_print_policy_handle(ndr, "handle", r->in.handle);
5830 ndr->depth--;
5831 ndr_print_svcctl_ConfigLevel(ndr, "info_level", r->in.info_level);
5832 ndr_print_uint32(ndr, "buf_size", r->in.buf_size);
5833 ndr->depth--;
5835 if (flags & NDR_OUT) {
5836 ndr_print_struct(ndr, "out", "svcctl_QueryServiceConfig2A");
5837 ndr->depth++;
5838 ndr_print_array_uint8(ndr, "buffer", r->out.buffer, r->in.buf_size);
5839 ndr_print_ptr(ndr, "bytes_needed", r->out.bytes_needed);
5840 ndr->depth++;
5841 ndr_print_uint32(ndr, "bytes_needed", *r->out.bytes_needed);
5842 ndr->depth--;
5843 ndr_print_WERROR(ndr, "result", r->out.result);
5844 ndr->depth--;
5846 ndr->depth--;
5849 static enum ndr_err_code ndr_push_svcctl_QueryServiceConfig2W(struct ndr_push *ndr, int flags, const struct svcctl_QueryServiceConfig2W *r)
5851 if (flags & NDR_IN) {
5852 if (r->in.handle == NULL) {
5853 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
5855 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
5856 NDR_CHECK(ndr_push_svcctl_ConfigLevel(ndr, NDR_SCALARS, r->in.info_level));
5857 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.buf_size));
5859 if (flags & NDR_OUT) {
5860 if (r->out.buffer == NULL) {
5861 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
5863 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.buf_size));
5864 NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->out.buffer, r->in.buf_size));
5865 if (r->out.bytes_needed == NULL) {
5866 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
5868 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.bytes_needed));
5869 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
5871 return NDR_ERR_SUCCESS;
5874 static enum ndr_err_code ndr_pull_svcctl_QueryServiceConfig2W(struct ndr_pull *ndr, int flags, struct svcctl_QueryServiceConfig2W *r)
5876 TALLOC_CTX *_mem_save_handle_0;
5877 TALLOC_CTX *_mem_save_bytes_needed_0;
5878 if (flags & NDR_IN) {
5879 ZERO_STRUCT(r->out);
5881 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
5882 NDR_PULL_ALLOC(ndr, r->in.handle);
5884 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
5885 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
5886 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
5887 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
5888 NDR_CHECK(ndr_pull_svcctl_ConfigLevel(ndr, NDR_SCALARS, &r->in.info_level));
5889 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.buf_size));
5890 if (r->in.buf_size < 0 || r->in.buf_size > 8192) {
5891 return ndr_pull_error(ndr, NDR_ERR_RANGE, "value out of range");
5893 NDR_PULL_ALLOC_N(ndr, r->out.buffer, r->in.buf_size);
5894 memset(CONST_DISCARD(struct svcctl_QueryServiceConfig2W *,r->out.buffer), 0, (r->in.buf_size) * sizeof(*r->out.buffer));
5895 NDR_PULL_ALLOC(ndr, r->out.bytes_needed);
5896 ZERO_STRUCTP(r->out.bytes_needed);
5898 if (flags & NDR_OUT) {
5899 NDR_CHECK(ndr_pull_array_size(ndr, &r->out.buffer));
5900 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
5901 NDR_PULL_ALLOC_N(ndr, r->out.buffer, ndr_get_array_size(ndr, &r->out.buffer));
5903 NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->out.buffer, ndr_get_array_size(ndr, &r->out.buffer)));
5904 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
5905 NDR_PULL_ALLOC(ndr, r->out.bytes_needed);
5907 _mem_save_bytes_needed_0 = NDR_PULL_GET_MEM_CTX(ndr);
5908 NDR_PULL_SET_MEM_CTX(ndr, r->out.bytes_needed, LIBNDR_FLAG_REF_ALLOC);
5909 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.bytes_needed));
5910 if (*r->out.bytes_needed < 0 || *r->out.bytes_needed > 8192) {
5911 return ndr_pull_error(ndr, NDR_ERR_RANGE, "value out of range");
5913 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_bytes_needed_0, LIBNDR_FLAG_REF_ALLOC);
5914 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
5915 if (r->out.buffer) {
5916 NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->out.buffer, r->in.buf_size));
5919 return NDR_ERR_SUCCESS;
5922 _PUBLIC_ void ndr_print_svcctl_QueryServiceConfig2W(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_QueryServiceConfig2W *r)
5924 ndr_print_struct(ndr, name, "svcctl_QueryServiceConfig2W");
5925 ndr->depth++;
5926 if (flags & NDR_SET_VALUES) {
5927 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
5929 if (flags & NDR_IN) {
5930 ndr_print_struct(ndr, "in", "svcctl_QueryServiceConfig2W");
5931 ndr->depth++;
5932 ndr_print_ptr(ndr, "handle", r->in.handle);
5933 ndr->depth++;
5934 ndr_print_policy_handle(ndr, "handle", r->in.handle);
5935 ndr->depth--;
5936 ndr_print_svcctl_ConfigLevel(ndr, "info_level", r->in.info_level);
5937 ndr_print_uint32(ndr, "buf_size", r->in.buf_size);
5938 ndr->depth--;
5940 if (flags & NDR_OUT) {
5941 ndr_print_struct(ndr, "out", "svcctl_QueryServiceConfig2W");
5942 ndr->depth++;
5943 ndr_print_ptr(ndr, "buffer", r->out.buffer);
5944 ndr->depth++;
5945 ndr_print_array_uint8(ndr, "buffer", r->out.buffer, r->in.buf_size);
5946 ndr->depth--;
5947 ndr_print_ptr(ndr, "bytes_needed", r->out.bytes_needed);
5948 ndr->depth++;
5949 ndr_print_uint32(ndr, "bytes_needed", *r->out.bytes_needed);
5950 ndr->depth--;
5951 ndr_print_WERROR(ndr, "result", r->out.result);
5952 ndr->depth--;
5954 ndr->depth--;
5957 static enum ndr_err_code ndr_push_svcctl_QueryServiceStatusEx(struct ndr_push *ndr, int flags, const struct svcctl_QueryServiceStatusEx *r)
5959 if (flags & NDR_IN) {
5960 if (r->in.handle == NULL) {
5961 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
5963 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
5964 NDR_CHECK(ndr_push_svcctl_StatusLevel(ndr, NDR_SCALARS, r->in.info_level));
5965 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.buf_size));
5967 if (flags & NDR_OUT) {
5968 if (r->out.buffer == NULL) {
5969 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
5971 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.buf_size));
5972 NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->out.buffer, r->in.buf_size));
5973 if (r->out.bytes_needed == NULL) {
5974 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
5976 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.bytes_needed));
5977 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
5979 return NDR_ERR_SUCCESS;
5982 static enum ndr_err_code ndr_pull_svcctl_QueryServiceStatusEx(struct ndr_pull *ndr, int flags, struct svcctl_QueryServiceStatusEx *r)
5984 TALLOC_CTX *_mem_save_handle_0;
5985 TALLOC_CTX *_mem_save_bytes_needed_0;
5986 if (flags & NDR_IN) {
5987 ZERO_STRUCT(r->out);
5989 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
5990 NDR_PULL_ALLOC(ndr, r->in.handle);
5992 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
5993 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
5994 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
5995 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
5996 NDR_CHECK(ndr_pull_svcctl_StatusLevel(ndr, NDR_SCALARS, &r->in.info_level));
5997 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.buf_size));
5998 if (r->in.buf_size < 0 || r->in.buf_size > 8192) {
5999 return ndr_pull_error(ndr, NDR_ERR_RANGE, "value out of range");
6001 NDR_PULL_ALLOC_N(ndr, r->out.buffer, r->in.buf_size);
6002 memset(CONST_DISCARD(struct svcctl_QueryServiceStatusEx *,r->out.buffer), 0, (r->in.buf_size) * sizeof(*r->out.buffer));
6003 NDR_PULL_ALLOC(ndr, r->out.bytes_needed);
6004 ZERO_STRUCTP(r->out.bytes_needed);
6006 if (flags & NDR_OUT) {
6007 NDR_CHECK(ndr_pull_array_size(ndr, &r->out.buffer));
6008 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
6009 NDR_PULL_ALLOC_N(ndr, r->out.buffer, ndr_get_array_size(ndr, &r->out.buffer));
6011 NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->out.buffer, ndr_get_array_size(ndr, &r->out.buffer)));
6012 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
6013 NDR_PULL_ALLOC(ndr, r->out.bytes_needed);
6015 _mem_save_bytes_needed_0 = NDR_PULL_GET_MEM_CTX(ndr);
6016 NDR_PULL_SET_MEM_CTX(ndr, r->out.bytes_needed, LIBNDR_FLAG_REF_ALLOC);
6017 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.bytes_needed));
6018 if (*r->out.bytes_needed < 0 || *r->out.bytes_needed > 8192) {
6019 return ndr_pull_error(ndr, NDR_ERR_RANGE, "value out of range");
6021 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_bytes_needed_0, LIBNDR_FLAG_REF_ALLOC);
6022 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
6023 if (r->out.buffer) {
6024 NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->out.buffer, r->in.buf_size));
6027 return NDR_ERR_SUCCESS;
6030 _PUBLIC_ void ndr_print_svcctl_QueryServiceStatusEx(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_QueryServiceStatusEx *r)
6032 ndr_print_struct(ndr, name, "svcctl_QueryServiceStatusEx");
6033 ndr->depth++;
6034 if (flags & NDR_SET_VALUES) {
6035 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
6037 if (flags & NDR_IN) {
6038 ndr_print_struct(ndr, "in", "svcctl_QueryServiceStatusEx");
6039 ndr->depth++;
6040 ndr_print_ptr(ndr, "handle", r->in.handle);
6041 ndr->depth++;
6042 ndr_print_policy_handle(ndr, "handle", r->in.handle);
6043 ndr->depth--;
6044 ndr_print_svcctl_StatusLevel(ndr, "info_level", r->in.info_level);
6045 ndr_print_uint32(ndr, "buf_size", r->in.buf_size);
6046 ndr->depth--;
6048 if (flags & NDR_OUT) {
6049 ndr_print_struct(ndr, "out", "svcctl_QueryServiceStatusEx");
6050 ndr->depth++;
6051 ndr_print_ptr(ndr, "buffer", r->out.buffer);
6052 ndr->depth++;
6053 ndr_print_array_uint8(ndr, "buffer", r->out.buffer, r->in.buf_size);
6054 ndr->depth--;
6055 ndr_print_ptr(ndr, "bytes_needed", r->out.bytes_needed);
6056 ndr->depth++;
6057 ndr_print_uint32(ndr, "bytes_needed", *r->out.bytes_needed);
6058 ndr->depth--;
6059 ndr_print_WERROR(ndr, "result", r->out.result);
6060 ndr->depth--;
6062 ndr->depth--;
6065 static enum ndr_err_code ndr_push_EnumServicesStatusExA(struct ndr_push *ndr, int flags, const struct EnumServicesStatusExA *r)
6067 if (flags & NDR_IN) {
6068 if (r->in.scmanager == NULL) {
6069 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
6071 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.scmanager));
6072 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.info_level));
6073 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.type));
6074 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.state));
6075 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.buf_size));
6076 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.resume_handle));
6077 if (r->in.resume_handle) {
6078 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->in.resume_handle));
6081 if (flags & NDR_OUT) {
6082 NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->out.services, r->in.buf_size));
6083 if (r->out.bytes_needed == NULL) {
6084 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
6086 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.bytes_needed));
6087 if (r->out.service_returned == NULL) {
6088 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
6090 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.service_returned));
6091 NDR_CHECK(ndr_push_unique_ptr(ndr, r->out.resume_handle));
6092 if (r->out.resume_handle) {
6093 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.resume_handle));
6095 if (r->out.group_name == NULL) {
6096 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
6098 NDR_CHECK(ndr_push_unique_ptr(ndr, *r->out.group_name));
6099 if (*r->out.group_name) {
6100 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(*r->out.group_name, CH_UTF16)));
6101 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
6102 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(*r->out.group_name, CH_UTF16)));
6103 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));
6105 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
6107 return NDR_ERR_SUCCESS;
6110 static enum ndr_err_code ndr_pull_EnumServicesStatusExA(struct ndr_pull *ndr, int flags, struct EnumServicesStatusExA *r)
6112 uint32_t _ptr_resume_handle;
6113 uint32_t _ptr_group_name;
6114 TALLOC_CTX *_mem_save_scmanager_0;
6115 TALLOC_CTX *_mem_save_bytes_needed_0;
6116 TALLOC_CTX *_mem_save_service_returned_0;
6117 TALLOC_CTX *_mem_save_resume_handle_0;
6118 TALLOC_CTX *_mem_save_group_name_0;
6119 TALLOC_CTX *_mem_save_group_name_1;
6120 if (flags & NDR_IN) {
6121 ZERO_STRUCT(r->out);
6123 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
6124 NDR_PULL_ALLOC(ndr, r->in.scmanager);
6126 _mem_save_scmanager_0 = NDR_PULL_GET_MEM_CTX(ndr);
6127 NDR_PULL_SET_MEM_CTX(ndr, r->in.scmanager, LIBNDR_FLAG_REF_ALLOC);
6128 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.scmanager));
6129 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_scmanager_0, LIBNDR_FLAG_REF_ALLOC);
6130 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.info_level));
6131 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.type));
6132 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.state));
6133 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.buf_size));
6134 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_resume_handle));
6135 if (_ptr_resume_handle) {
6136 NDR_PULL_ALLOC(ndr, r->in.resume_handle);
6137 } else {
6138 r->in.resume_handle = NULL;
6140 if (r->in.resume_handle) {
6141 _mem_save_resume_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
6142 NDR_PULL_SET_MEM_CTX(ndr, r->in.resume_handle, 0);
6143 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->in.resume_handle));
6144 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_resume_handle_0, 0);
6146 NDR_PULL_ALLOC(ndr, r->out.bytes_needed);
6147 ZERO_STRUCTP(r->out.bytes_needed);
6148 NDR_PULL_ALLOC(ndr, r->out.service_returned);
6149 ZERO_STRUCTP(r->out.service_returned);
6150 NDR_PULL_ALLOC(ndr, r->out.group_name);
6151 ZERO_STRUCTP(r->out.group_name);
6153 if (flags & NDR_OUT) {
6154 NDR_PULL_ALLOC_N(ndr, r->out.services, r->in.buf_size);
6155 NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->out.services, r->in.buf_size));
6156 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
6157 NDR_PULL_ALLOC(ndr, r->out.bytes_needed);
6159 _mem_save_bytes_needed_0 = NDR_PULL_GET_MEM_CTX(ndr);
6160 NDR_PULL_SET_MEM_CTX(ndr, r->out.bytes_needed, LIBNDR_FLAG_REF_ALLOC);
6161 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.bytes_needed));
6162 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_bytes_needed_0, LIBNDR_FLAG_REF_ALLOC);
6163 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
6164 NDR_PULL_ALLOC(ndr, r->out.service_returned);
6166 _mem_save_service_returned_0 = NDR_PULL_GET_MEM_CTX(ndr);
6167 NDR_PULL_SET_MEM_CTX(ndr, r->out.service_returned, LIBNDR_FLAG_REF_ALLOC);
6168 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.service_returned));
6169 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_service_returned_0, LIBNDR_FLAG_REF_ALLOC);
6170 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_resume_handle));
6171 if (_ptr_resume_handle) {
6172 NDR_PULL_ALLOC(ndr, r->out.resume_handle);
6173 } else {
6174 r->out.resume_handle = NULL;
6176 if (r->out.resume_handle) {
6177 _mem_save_resume_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
6178 NDR_PULL_SET_MEM_CTX(ndr, r->out.resume_handle, 0);
6179 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.resume_handle));
6180 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_resume_handle_0, 0);
6182 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
6183 NDR_PULL_ALLOC(ndr, r->out.group_name);
6185 _mem_save_group_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
6186 NDR_PULL_SET_MEM_CTX(ndr, r->out.group_name, LIBNDR_FLAG_REF_ALLOC);
6187 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_group_name));
6188 if (_ptr_group_name) {
6189 NDR_PULL_ALLOC(ndr, *r->out.group_name);
6190 } else {
6191 *r->out.group_name = NULL;
6193 if (*r->out.group_name) {
6194 _mem_save_group_name_1 = NDR_PULL_GET_MEM_CTX(ndr);
6195 NDR_PULL_SET_MEM_CTX(ndr, *r->out.group_name, 0);
6196 NDR_CHECK(ndr_pull_array_size(ndr, r->out.group_name));
6197 NDR_CHECK(ndr_pull_array_length(ndr, r->out.group_name));
6198 if (ndr_get_array_length(ndr, r->out.group_name) > ndr_get_array_size(ndr, r->out.group_name)) {
6199 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));
6201 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, r->out.group_name), sizeof(uint16_t)));
6202 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));
6203 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_group_name_1, 0);
6205 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_group_name_0, LIBNDR_FLAG_REF_ALLOC);
6206 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
6208 return NDR_ERR_SUCCESS;
6211 _PUBLIC_ void ndr_print_EnumServicesStatusExA(struct ndr_print *ndr, const char *name, int flags, const struct EnumServicesStatusExA *r)
6213 ndr_print_struct(ndr, name, "EnumServicesStatusExA");
6214 ndr->depth++;
6215 if (flags & NDR_SET_VALUES) {
6216 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
6218 if (flags & NDR_IN) {
6219 ndr_print_struct(ndr, "in", "EnumServicesStatusExA");
6220 ndr->depth++;
6221 ndr_print_ptr(ndr, "scmanager", r->in.scmanager);
6222 ndr->depth++;
6223 ndr_print_policy_handle(ndr, "scmanager", r->in.scmanager);
6224 ndr->depth--;
6225 ndr_print_uint32(ndr, "info_level", r->in.info_level);
6226 ndr_print_uint32(ndr, "type", r->in.type);
6227 ndr_print_uint32(ndr, "state", r->in.state);
6228 ndr_print_uint32(ndr, "buf_size", r->in.buf_size);
6229 ndr_print_ptr(ndr, "resume_handle", r->in.resume_handle);
6230 ndr->depth++;
6231 if (r->in.resume_handle) {
6232 ndr_print_uint32(ndr, "resume_handle", *r->in.resume_handle);
6234 ndr->depth--;
6235 ndr->depth--;
6237 if (flags & NDR_OUT) {
6238 ndr_print_struct(ndr, "out", "EnumServicesStatusExA");
6239 ndr->depth++;
6240 ndr_print_array_uint8(ndr, "services", r->out.services, r->in.buf_size);
6241 ndr_print_ptr(ndr, "bytes_needed", r->out.bytes_needed);
6242 ndr->depth++;
6243 ndr_print_uint32(ndr, "bytes_needed", *r->out.bytes_needed);
6244 ndr->depth--;
6245 ndr_print_ptr(ndr, "service_returned", r->out.service_returned);
6246 ndr->depth++;
6247 ndr_print_uint32(ndr, "service_returned", *r->out.service_returned);
6248 ndr->depth--;
6249 ndr_print_ptr(ndr, "resume_handle", r->out.resume_handle);
6250 ndr->depth++;
6251 if (r->out.resume_handle) {
6252 ndr_print_uint32(ndr, "resume_handle", *r->out.resume_handle);
6254 ndr->depth--;
6255 ndr_print_ptr(ndr, "group_name", r->out.group_name);
6256 ndr->depth++;
6257 ndr_print_ptr(ndr, "group_name", *r->out.group_name);
6258 ndr->depth++;
6259 if (*r->out.group_name) {
6260 ndr_print_string(ndr, "group_name", *r->out.group_name);
6262 ndr->depth--;
6263 ndr->depth--;
6264 ndr_print_WERROR(ndr, "result", r->out.result);
6265 ndr->depth--;
6267 ndr->depth--;
6270 static enum ndr_err_code ndr_push_EnumServicesStatusExW(struct ndr_push *ndr, int flags, const struct EnumServicesStatusExW *r)
6272 if (flags & NDR_IN) {
6273 if (r->in.scmanager == NULL) {
6274 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
6276 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.scmanager));
6277 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.info_level));
6278 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.type));
6279 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.state));
6280 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.buf_size));
6281 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.resume_handle));
6282 if (r->in.resume_handle) {
6283 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->in.resume_handle));
6285 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.group_name));
6286 if (r->in.group_name) {
6287 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.group_name, CH_UTF16)));
6288 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
6289 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.group_name, CH_UTF16)));
6290 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.group_name, ndr_charset_length(r->in.group_name, CH_UTF16), sizeof(uint16_t), CH_UTF16));
6293 if (flags & NDR_OUT) {
6294 if (r->out.services == NULL) {
6295 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
6297 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.buf_size));
6298 NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->out.services, r->in.buf_size));
6299 if (r->out.bytes_needed == NULL) {
6300 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
6302 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.bytes_needed));
6303 if (r->out.service_returned == NULL) {
6304 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
6306 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.service_returned));
6307 NDR_CHECK(ndr_push_unique_ptr(ndr, r->out.resume_handle));
6308 if (r->out.resume_handle) {
6309 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.resume_handle));
6311 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
6313 return NDR_ERR_SUCCESS;
6316 static enum ndr_err_code ndr_pull_EnumServicesStatusExW(struct ndr_pull *ndr, int flags, struct EnumServicesStatusExW *r)
6318 uint32_t _ptr_resume_handle;
6319 uint32_t _ptr_group_name;
6320 TALLOC_CTX *_mem_save_scmanager_0;
6321 TALLOC_CTX *_mem_save_bytes_needed_0;
6322 TALLOC_CTX *_mem_save_service_returned_0;
6323 TALLOC_CTX *_mem_save_resume_handle_0;
6324 TALLOC_CTX *_mem_save_group_name_0;
6325 if (flags & NDR_IN) {
6326 ZERO_STRUCT(r->out);
6328 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
6329 NDR_PULL_ALLOC(ndr, r->in.scmanager);
6331 _mem_save_scmanager_0 = NDR_PULL_GET_MEM_CTX(ndr);
6332 NDR_PULL_SET_MEM_CTX(ndr, r->in.scmanager, LIBNDR_FLAG_REF_ALLOC);
6333 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.scmanager));
6334 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_scmanager_0, LIBNDR_FLAG_REF_ALLOC);
6335 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.info_level));
6336 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.type));
6337 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.state));
6338 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.buf_size));
6339 if (r->in.buf_size < 0 || r->in.buf_size > 262144) {
6340 return ndr_pull_error(ndr, NDR_ERR_RANGE, "value out of range");
6342 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_resume_handle));
6343 if (_ptr_resume_handle) {
6344 NDR_PULL_ALLOC(ndr, r->in.resume_handle);
6345 } else {
6346 r->in.resume_handle = NULL;
6348 if (r->in.resume_handle) {
6349 _mem_save_resume_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
6350 NDR_PULL_SET_MEM_CTX(ndr, r->in.resume_handle, 0);
6351 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->in.resume_handle));
6352 if (*r->in.resume_handle < 0 || *r->in.resume_handle > 262144) {
6353 return ndr_pull_error(ndr, NDR_ERR_RANGE, "value out of range");
6355 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_resume_handle_0, 0);
6357 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_group_name));
6358 if (_ptr_group_name) {
6359 NDR_PULL_ALLOC(ndr, r->in.group_name);
6360 } else {
6361 r->in.group_name = NULL;
6363 if (r->in.group_name) {
6364 _mem_save_group_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
6365 NDR_PULL_SET_MEM_CTX(ndr, r->in.group_name, 0);
6366 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.group_name));
6367 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.group_name));
6368 if (ndr_get_array_length(ndr, &r->in.group_name) > ndr_get_array_size(ndr, &r->in.group_name)) {
6369 return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.group_name), ndr_get_array_length(ndr, &r->in.group_name));
6371 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.group_name), sizeof(uint16_t)));
6372 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.group_name, ndr_get_array_length(ndr, &r->in.group_name), sizeof(uint16_t), CH_UTF16));
6373 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_group_name_0, 0);
6375 NDR_PULL_ALLOC_N(ndr, r->out.services, r->in.buf_size);
6376 memset(CONST_DISCARD(struct EnumServicesStatusExW *,r->out.services), 0, (r->in.buf_size) * sizeof(*r->out.services));
6377 NDR_PULL_ALLOC(ndr, r->out.bytes_needed);
6378 ZERO_STRUCTP(r->out.bytes_needed);
6379 NDR_PULL_ALLOC(ndr, r->out.service_returned);
6380 ZERO_STRUCTP(r->out.service_returned);
6382 if (flags & NDR_OUT) {
6383 NDR_CHECK(ndr_pull_array_size(ndr, &r->out.services));
6384 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
6385 NDR_PULL_ALLOC_N(ndr, r->out.services, ndr_get_array_size(ndr, &r->out.services));
6387 NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->out.services, ndr_get_array_size(ndr, &r->out.services)));
6388 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
6389 NDR_PULL_ALLOC(ndr, r->out.bytes_needed);
6391 _mem_save_bytes_needed_0 = NDR_PULL_GET_MEM_CTX(ndr);
6392 NDR_PULL_SET_MEM_CTX(ndr, r->out.bytes_needed, LIBNDR_FLAG_REF_ALLOC);
6393 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.bytes_needed));
6394 if (*r->out.bytes_needed < 0 || *r->out.bytes_needed > 262144) {
6395 return ndr_pull_error(ndr, NDR_ERR_RANGE, "value out of range");
6397 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_bytes_needed_0, LIBNDR_FLAG_REF_ALLOC);
6398 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
6399 NDR_PULL_ALLOC(ndr, r->out.service_returned);
6401 _mem_save_service_returned_0 = NDR_PULL_GET_MEM_CTX(ndr);
6402 NDR_PULL_SET_MEM_CTX(ndr, r->out.service_returned, LIBNDR_FLAG_REF_ALLOC);
6403 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.service_returned));
6404 if (*r->out.service_returned < 0 || *r->out.service_returned > 262144) {
6405 return ndr_pull_error(ndr, NDR_ERR_RANGE, "value out of range");
6407 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_service_returned_0, LIBNDR_FLAG_REF_ALLOC);
6408 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_resume_handle));
6409 if (_ptr_resume_handle) {
6410 NDR_PULL_ALLOC(ndr, r->out.resume_handle);
6411 } else {
6412 r->out.resume_handle = NULL;
6414 if (r->out.resume_handle) {
6415 _mem_save_resume_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
6416 NDR_PULL_SET_MEM_CTX(ndr, r->out.resume_handle, 0);
6417 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.resume_handle));
6418 if (*r->out.resume_handle < 0 || *r->out.resume_handle > 262144) {
6419 return ndr_pull_error(ndr, NDR_ERR_RANGE, "value out of range");
6421 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_resume_handle_0, 0);
6423 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
6424 if (r->out.services) {
6425 NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->out.services, r->in.buf_size));
6428 return NDR_ERR_SUCCESS;
6431 _PUBLIC_ void ndr_print_EnumServicesStatusExW(struct ndr_print *ndr, const char *name, int flags, const struct EnumServicesStatusExW *r)
6433 ndr_print_struct(ndr, name, "EnumServicesStatusExW");
6434 ndr->depth++;
6435 if (flags & NDR_SET_VALUES) {
6436 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
6438 if (flags & NDR_IN) {
6439 ndr_print_struct(ndr, "in", "EnumServicesStatusExW");
6440 ndr->depth++;
6441 ndr_print_ptr(ndr, "scmanager", r->in.scmanager);
6442 ndr->depth++;
6443 ndr_print_policy_handle(ndr, "scmanager", r->in.scmanager);
6444 ndr->depth--;
6445 ndr_print_uint32(ndr, "info_level", r->in.info_level);
6446 ndr_print_uint32(ndr, "type", r->in.type);
6447 ndr_print_uint32(ndr, "state", r->in.state);
6448 ndr_print_uint32(ndr, "buf_size", r->in.buf_size);
6449 ndr_print_ptr(ndr, "resume_handle", r->in.resume_handle);
6450 ndr->depth++;
6451 if (r->in.resume_handle) {
6452 ndr_print_uint32(ndr, "resume_handle", *r->in.resume_handle);
6454 ndr->depth--;
6455 ndr_print_ptr(ndr, "group_name", r->in.group_name);
6456 ndr->depth++;
6457 if (r->in.group_name) {
6458 ndr_print_string(ndr, "group_name", r->in.group_name);
6460 ndr->depth--;
6461 ndr->depth--;
6463 if (flags & NDR_OUT) {
6464 ndr_print_struct(ndr, "out", "EnumServicesStatusExW");
6465 ndr->depth++;
6466 ndr_print_ptr(ndr, "services", r->out.services);
6467 ndr->depth++;
6468 ndr_print_array_uint8(ndr, "services", r->out.services, r->in.buf_size);
6469 ndr->depth--;
6470 ndr_print_ptr(ndr, "bytes_needed", r->out.bytes_needed);
6471 ndr->depth++;
6472 ndr_print_uint32(ndr, "bytes_needed", *r->out.bytes_needed);
6473 ndr->depth--;
6474 ndr_print_ptr(ndr, "service_returned", r->out.service_returned);
6475 ndr->depth++;
6476 ndr_print_uint32(ndr, "service_returned", *r->out.service_returned);
6477 ndr->depth--;
6478 ndr_print_ptr(ndr, "resume_handle", r->out.resume_handle);
6479 ndr->depth++;
6480 if (r->out.resume_handle) {
6481 ndr_print_uint32(ndr, "resume_handle", *r->out.resume_handle);
6483 ndr->depth--;
6484 ndr_print_WERROR(ndr, "result", r->out.result);
6485 ndr->depth--;
6487 ndr->depth--;
6490 static enum ndr_err_code ndr_push_svcctl_SCSendTSMessage(struct ndr_push *ndr, int flags, const struct svcctl_SCSendTSMessage *r)
6492 if (flags & NDR_IN) {
6494 if (flags & NDR_OUT) {
6495 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
6497 return NDR_ERR_SUCCESS;
6500 static enum ndr_err_code ndr_pull_svcctl_SCSendTSMessage(struct ndr_pull *ndr, int flags, struct svcctl_SCSendTSMessage *r)
6502 if (flags & NDR_IN) {
6504 if (flags & NDR_OUT) {
6505 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
6507 return NDR_ERR_SUCCESS;
6510 _PUBLIC_ void ndr_print_svcctl_SCSendTSMessage(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_SCSendTSMessage *r)
6512 ndr_print_struct(ndr, name, "svcctl_SCSendTSMessage");
6513 ndr->depth++;
6514 if (flags & NDR_SET_VALUES) {
6515 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
6517 if (flags & NDR_IN) {
6518 ndr_print_struct(ndr, "in", "svcctl_SCSendTSMessage");
6519 ndr->depth++;
6520 ndr->depth--;
6522 if (flags & NDR_OUT) {
6523 ndr_print_struct(ndr, "out", "svcctl_SCSendTSMessage");
6524 ndr->depth++;
6525 ndr_print_WERROR(ndr, "result", r->out.result);
6526 ndr->depth--;
6528 ndr->depth--;
6531 static const struct ndr_interface_call svcctl_calls[] = {
6533 "svcctl_CloseServiceHandle",
6534 sizeof(struct svcctl_CloseServiceHandle),
6535 (ndr_push_flags_fn_t) ndr_push_svcctl_CloseServiceHandle,
6536 (ndr_pull_flags_fn_t) ndr_pull_svcctl_CloseServiceHandle,
6537 (ndr_print_function_t) ndr_print_svcctl_CloseServiceHandle,
6538 false,
6541 "svcctl_ControlService",
6542 sizeof(struct svcctl_ControlService),
6543 (ndr_push_flags_fn_t) ndr_push_svcctl_ControlService,
6544 (ndr_pull_flags_fn_t) ndr_pull_svcctl_ControlService,
6545 (ndr_print_function_t) ndr_print_svcctl_ControlService,
6546 false,
6549 "svcctl_DeleteService",
6550 sizeof(struct svcctl_DeleteService),
6551 (ndr_push_flags_fn_t) ndr_push_svcctl_DeleteService,
6552 (ndr_pull_flags_fn_t) ndr_pull_svcctl_DeleteService,
6553 (ndr_print_function_t) ndr_print_svcctl_DeleteService,
6554 false,
6557 "svcctl_LockServiceDatabase",
6558 sizeof(struct svcctl_LockServiceDatabase),
6559 (ndr_push_flags_fn_t) ndr_push_svcctl_LockServiceDatabase,
6560 (ndr_pull_flags_fn_t) ndr_pull_svcctl_LockServiceDatabase,
6561 (ndr_print_function_t) ndr_print_svcctl_LockServiceDatabase,
6562 false,
6565 "svcctl_QueryServiceObjectSecurity",
6566 sizeof(struct svcctl_QueryServiceObjectSecurity),
6567 (ndr_push_flags_fn_t) ndr_push_svcctl_QueryServiceObjectSecurity,
6568 (ndr_pull_flags_fn_t) ndr_pull_svcctl_QueryServiceObjectSecurity,
6569 (ndr_print_function_t) ndr_print_svcctl_QueryServiceObjectSecurity,
6570 false,
6573 "svcctl_SetServiceObjectSecurity",
6574 sizeof(struct svcctl_SetServiceObjectSecurity),
6575 (ndr_push_flags_fn_t) ndr_push_svcctl_SetServiceObjectSecurity,
6576 (ndr_pull_flags_fn_t) ndr_pull_svcctl_SetServiceObjectSecurity,
6577 (ndr_print_function_t) ndr_print_svcctl_SetServiceObjectSecurity,
6578 false,
6581 "svcctl_QueryServiceStatus",
6582 sizeof(struct svcctl_QueryServiceStatus),
6583 (ndr_push_flags_fn_t) ndr_push_svcctl_QueryServiceStatus,
6584 (ndr_pull_flags_fn_t) ndr_pull_svcctl_QueryServiceStatus,
6585 (ndr_print_function_t) ndr_print_svcctl_QueryServiceStatus,
6586 false,
6589 "svcctl_SetServiceStatus",
6590 sizeof(struct svcctl_SetServiceStatus),
6591 (ndr_push_flags_fn_t) ndr_push_svcctl_SetServiceStatus,
6592 (ndr_pull_flags_fn_t) ndr_pull_svcctl_SetServiceStatus,
6593 (ndr_print_function_t) ndr_print_svcctl_SetServiceStatus,
6594 false,
6597 "svcctl_UnlockServiceDatabase",
6598 sizeof(struct svcctl_UnlockServiceDatabase),
6599 (ndr_push_flags_fn_t) ndr_push_svcctl_UnlockServiceDatabase,
6600 (ndr_pull_flags_fn_t) ndr_pull_svcctl_UnlockServiceDatabase,
6601 (ndr_print_function_t) ndr_print_svcctl_UnlockServiceDatabase,
6602 false,
6605 "svcctl_NotifyBootConfigStatus",
6606 sizeof(struct svcctl_NotifyBootConfigStatus),
6607 (ndr_push_flags_fn_t) ndr_push_svcctl_NotifyBootConfigStatus,
6608 (ndr_pull_flags_fn_t) ndr_pull_svcctl_NotifyBootConfigStatus,
6609 (ndr_print_function_t) ndr_print_svcctl_NotifyBootConfigStatus,
6610 false,
6613 "svcctl_SCSetServiceBitsW",
6614 sizeof(struct svcctl_SCSetServiceBitsW),
6615 (ndr_push_flags_fn_t) ndr_push_svcctl_SCSetServiceBitsW,
6616 (ndr_pull_flags_fn_t) ndr_pull_svcctl_SCSetServiceBitsW,
6617 (ndr_print_function_t) ndr_print_svcctl_SCSetServiceBitsW,
6618 false,
6621 "svcctl_ChangeServiceConfigW",
6622 sizeof(struct svcctl_ChangeServiceConfigW),
6623 (ndr_push_flags_fn_t) ndr_push_svcctl_ChangeServiceConfigW,
6624 (ndr_pull_flags_fn_t) ndr_pull_svcctl_ChangeServiceConfigW,
6625 (ndr_print_function_t) ndr_print_svcctl_ChangeServiceConfigW,
6626 false,
6629 "svcctl_CreateServiceW",
6630 sizeof(struct svcctl_CreateServiceW),
6631 (ndr_push_flags_fn_t) ndr_push_svcctl_CreateServiceW,
6632 (ndr_pull_flags_fn_t) ndr_pull_svcctl_CreateServiceW,
6633 (ndr_print_function_t) ndr_print_svcctl_CreateServiceW,
6634 false,
6637 "svcctl_EnumDependentServicesW",
6638 sizeof(struct svcctl_EnumDependentServicesW),
6639 (ndr_push_flags_fn_t) ndr_push_svcctl_EnumDependentServicesW,
6640 (ndr_pull_flags_fn_t) ndr_pull_svcctl_EnumDependentServicesW,
6641 (ndr_print_function_t) ndr_print_svcctl_EnumDependentServicesW,
6642 false,
6645 "svcctl_EnumServicesStatusW",
6646 sizeof(struct svcctl_EnumServicesStatusW),
6647 (ndr_push_flags_fn_t) ndr_push_svcctl_EnumServicesStatusW,
6648 (ndr_pull_flags_fn_t) ndr_pull_svcctl_EnumServicesStatusW,
6649 (ndr_print_function_t) ndr_print_svcctl_EnumServicesStatusW,
6650 false,
6653 "svcctl_OpenSCManagerW",
6654 sizeof(struct svcctl_OpenSCManagerW),
6655 (ndr_push_flags_fn_t) ndr_push_svcctl_OpenSCManagerW,
6656 (ndr_pull_flags_fn_t) ndr_pull_svcctl_OpenSCManagerW,
6657 (ndr_print_function_t) ndr_print_svcctl_OpenSCManagerW,
6658 false,
6661 "svcctl_OpenServiceW",
6662 sizeof(struct svcctl_OpenServiceW),
6663 (ndr_push_flags_fn_t) ndr_push_svcctl_OpenServiceW,
6664 (ndr_pull_flags_fn_t) ndr_pull_svcctl_OpenServiceW,
6665 (ndr_print_function_t) ndr_print_svcctl_OpenServiceW,
6666 false,
6669 "svcctl_QueryServiceConfigW",
6670 sizeof(struct svcctl_QueryServiceConfigW),
6671 (ndr_push_flags_fn_t) ndr_push_svcctl_QueryServiceConfigW,
6672 (ndr_pull_flags_fn_t) ndr_pull_svcctl_QueryServiceConfigW,
6673 (ndr_print_function_t) ndr_print_svcctl_QueryServiceConfigW,
6674 false,
6677 "svcctl_QueryServiceLockStatusW",
6678 sizeof(struct svcctl_QueryServiceLockStatusW),
6679 (ndr_push_flags_fn_t) ndr_push_svcctl_QueryServiceLockStatusW,
6680 (ndr_pull_flags_fn_t) ndr_pull_svcctl_QueryServiceLockStatusW,
6681 (ndr_print_function_t) ndr_print_svcctl_QueryServiceLockStatusW,
6682 false,
6685 "svcctl_StartServiceW",
6686 sizeof(struct svcctl_StartServiceW),
6687 (ndr_push_flags_fn_t) ndr_push_svcctl_StartServiceW,
6688 (ndr_pull_flags_fn_t) ndr_pull_svcctl_StartServiceW,
6689 (ndr_print_function_t) ndr_print_svcctl_StartServiceW,
6690 false,
6693 "svcctl_GetServiceDisplayNameW",
6694 sizeof(struct svcctl_GetServiceDisplayNameW),
6695 (ndr_push_flags_fn_t) ndr_push_svcctl_GetServiceDisplayNameW,
6696 (ndr_pull_flags_fn_t) ndr_pull_svcctl_GetServiceDisplayNameW,
6697 (ndr_print_function_t) ndr_print_svcctl_GetServiceDisplayNameW,
6698 false,
6701 "svcctl_GetServiceKeyNameW",
6702 sizeof(struct svcctl_GetServiceKeyNameW),
6703 (ndr_push_flags_fn_t) ndr_push_svcctl_GetServiceKeyNameW,
6704 (ndr_pull_flags_fn_t) ndr_pull_svcctl_GetServiceKeyNameW,
6705 (ndr_print_function_t) ndr_print_svcctl_GetServiceKeyNameW,
6706 false,
6709 "svcctl_SCSetServiceBitsA",
6710 sizeof(struct svcctl_SCSetServiceBitsA),
6711 (ndr_push_flags_fn_t) ndr_push_svcctl_SCSetServiceBitsA,
6712 (ndr_pull_flags_fn_t) ndr_pull_svcctl_SCSetServiceBitsA,
6713 (ndr_print_function_t) ndr_print_svcctl_SCSetServiceBitsA,
6714 false,
6717 "svcctl_ChangeServiceConfigA",
6718 sizeof(struct svcctl_ChangeServiceConfigA),
6719 (ndr_push_flags_fn_t) ndr_push_svcctl_ChangeServiceConfigA,
6720 (ndr_pull_flags_fn_t) ndr_pull_svcctl_ChangeServiceConfigA,
6721 (ndr_print_function_t) ndr_print_svcctl_ChangeServiceConfigA,
6722 false,
6725 "svcctl_CreateServiceA",
6726 sizeof(struct svcctl_CreateServiceA),
6727 (ndr_push_flags_fn_t) ndr_push_svcctl_CreateServiceA,
6728 (ndr_pull_flags_fn_t) ndr_pull_svcctl_CreateServiceA,
6729 (ndr_print_function_t) ndr_print_svcctl_CreateServiceA,
6730 false,
6733 "svcctl_EnumDependentServicesA",
6734 sizeof(struct svcctl_EnumDependentServicesA),
6735 (ndr_push_flags_fn_t) ndr_push_svcctl_EnumDependentServicesA,
6736 (ndr_pull_flags_fn_t) ndr_pull_svcctl_EnumDependentServicesA,
6737 (ndr_print_function_t) ndr_print_svcctl_EnumDependentServicesA,
6738 false,
6741 "svcctl_EnumServicesStatusA",
6742 sizeof(struct svcctl_EnumServicesStatusA),
6743 (ndr_push_flags_fn_t) ndr_push_svcctl_EnumServicesStatusA,
6744 (ndr_pull_flags_fn_t) ndr_pull_svcctl_EnumServicesStatusA,
6745 (ndr_print_function_t) ndr_print_svcctl_EnumServicesStatusA,
6746 false,
6749 "svcctl_OpenSCManagerA",
6750 sizeof(struct svcctl_OpenSCManagerA),
6751 (ndr_push_flags_fn_t) ndr_push_svcctl_OpenSCManagerA,
6752 (ndr_pull_flags_fn_t) ndr_pull_svcctl_OpenSCManagerA,
6753 (ndr_print_function_t) ndr_print_svcctl_OpenSCManagerA,
6754 false,
6757 "svcctl_OpenServiceA",
6758 sizeof(struct svcctl_OpenServiceA),
6759 (ndr_push_flags_fn_t) ndr_push_svcctl_OpenServiceA,
6760 (ndr_pull_flags_fn_t) ndr_pull_svcctl_OpenServiceA,
6761 (ndr_print_function_t) ndr_print_svcctl_OpenServiceA,
6762 false,
6765 "svcctl_QueryServiceConfigA",
6766 sizeof(struct svcctl_QueryServiceConfigA),
6767 (ndr_push_flags_fn_t) ndr_push_svcctl_QueryServiceConfigA,
6768 (ndr_pull_flags_fn_t) ndr_pull_svcctl_QueryServiceConfigA,
6769 (ndr_print_function_t) ndr_print_svcctl_QueryServiceConfigA,
6770 false,
6773 "svcctl_QueryServiceLockStatusA",
6774 sizeof(struct svcctl_QueryServiceLockStatusA),
6775 (ndr_push_flags_fn_t) ndr_push_svcctl_QueryServiceLockStatusA,
6776 (ndr_pull_flags_fn_t) ndr_pull_svcctl_QueryServiceLockStatusA,
6777 (ndr_print_function_t) ndr_print_svcctl_QueryServiceLockStatusA,
6778 false,
6781 "svcctl_StartServiceA",
6782 sizeof(struct svcctl_StartServiceA),
6783 (ndr_push_flags_fn_t) ndr_push_svcctl_StartServiceA,
6784 (ndr_pull_flags_fn_t) ndr_pull_svcctl_StartServiceA,
6785 (ndr_print_function_t) ndr_print_svcctl_StartServiceA,
6786 false,
6789 "svcctl_GetServiceDisplayNameA",
6790 sizeof(struct svcctl_GetServiceDisplayNameA),
6791 (ndr_push_flags_fn_t) ndr_push_svcctl_GetServiceDisplayNameA,
6792 (ndr_pull_flags_fn_t) ndr_pull_svcctl_GetServiceDisplayNameA,
6793 (ndr_print_function_t) ndr_print_svcctl_GetServiceDisplayNameA,
6794 false,
6797 "svcctl_GetServiceKeyNameA",
6798 sizeof(struct svcctl_GetServiceKeyNameA),
6799 (ndr_push_flags_fn_t) ndr_push_svcctl_GetServiceKeyNameA,
6800 (ndr_pull_flags_fn_t) ndr_pull_svcctl_GetServiceKeyNameA,
6801 (ndr_print_function_t) ndr_print_svcctl_GetServiceKeyNameA,
6802 false,
6805 "svcctl_GetCurrentGroupeStateW",
6806 sizeof(struct svcctl_GetCurrentGroupeStateW),
6807 (ndr_push_flags_fn_t) ndr_push_svcctl_GetCurrentGroupeStateW,
6808 (ndr_pull_flags_fn_t) ndr_pull_svcctl_GetCurrentGroupeStateW,
6809 (ndr_print_function_t) ndr_print_svcctl_GetCurrentGroupeStateW,
6810 false,
6813 "svcctl_EnumServiceGroupW",
6814 sizeof(struct svcctl_EnumServiceGroupW),
6815 (ndr_push_flags_fn_t) ndr_push_svcctl_EnumServiceGroupW,
6816 (ndr_pull_flags_fn_t) ndr_pull_svcctl_EnumServiceGroupW,
6817 (ndr_print_function_t) ndr_print_svcctl_EnumServiceGroupW,
6818 false,
6821 "svcctl_ChangeServiceConfig2A",
6822 sizeof(struct svcctl_ChangeServiceConfig2A),
6823 (ndr_push_flags_fn_t) ndr_push_svcctl_ChangeServiceConfig2A,
6824 (ndr_pull_flags_fn_t) ndr_pull_svcctl_ChangeServiceConfig2A,
6825 (ndr_print_function_t) ndr_print_svcctl_ChangeServiceConfig2A,
6826 false,
6829 "svcctl_ChangeServiceConfig2W",
6830 sizeof(struct svcctl_ChangeServiceConfig2W),
6831 (ndr_push_flags_fn_t) ndr_push_svcctl_ChangeServiceConfig2W,
6832 (ndr_pull_flags_fn_t) ndr_pull_svcctl_ChangeServiceConfig2W,
6833 (ndr_print_function_t) ndr_print_svcctl_ChangeServiceConfig2W,
6834 false,
6837 "svcctl_QueryServiceConfig2A",
6838 sizeof(struct svcctl_QueryServiceConfig2A),
6839 (ndr_push_flags_fn_t) ndr_push_svcctl_QueryServiceConfig2A,
6840 (ndr_pull_flags_fn_t) ndr_pull_svcctl_QueryServiceConfig2A,
6841 (ndr_print_function_t) ndr_print_svcctl_QueryServiceConfig2A,
6842 false,
6845 "svcctl_QueryServiceConfig2W",
6846 sizeof(struct svcctl_QueryServiceConfig2W),
6847 (ndr_push_flags_fn_t) ndr_push_svcctl_QueryServiceConfig2W,
6848 (ndr_pull_flags_fn_t) ndr_pull_svcctl_QueryServiceConfig2W,
6849 (ndr_print_function_t) ndr_print_svcctl_QueryServiceConfig2W,
6850 false,
6853 "svcctl_QueryServiceStatusEx",
6854 sizeof(struct svcctl_QueryServiceStatusEx),
6855 (ndr_push_flags_fn_t) ndr_push_svcctl_QueryServiceStatusEx,
6856 (ndr_pull_flags_fn_t) ndr_pull_svcctl_QueryServiceStatusEx,
6857 (ndr_print_function_t) ndr_print_svcctl_QueryServiceStatusEx,
6858 false,
6861 "EnumServicesStatusExA",
6862 sizeof(struct EnumServicesStatusExA),
6863 (ndr_push_flags_fn_t) ndr_push_EnumServicesStatusExA,
6864 (ndr_pull_flags_fn_t) ndr_pull_EnumServicesStatusExA,
6865 (ndr_print_function_t) ndr_print_EnumServicesStatusExA,
6866 false,
6869 "EnumServicesStatusExW",
6870 sizeof(struct EnumServicesStatusExW),
6871 (ndr_push_flags_fn_t) ndr_push_EnumServicesStatusExW,
6872 (ndr_pull_flags_fn_t) ndr_pull_EnumServicesStatusExW,
6873 (ndr_print_function_t) ndr_print_EnumServicesStatusExW,
6874 false,
6877 "svcctl_SCSendTSMessage",
6878 sizeof(struct svcctl_SCSendTSMessage),
6879 (ndr_push_flags_fn_t) ndr_push_svcctl_SCSendTSMessage,
6880 (ndr_pull_flags_fn_t) ndr_pull_svcctl_SCSendTSMessage,
6881 (ndr_print_function_t) ndr_print_svcctl_SCSendTSMessage,
6882 false,
6884 { NULL, 0, NULL, NULL, NULL, false }
6887 static const char * const svcctl_endpoint_strings[] = {
6888 "ncacn_np:[\\pipe\\svcctl]",
6889 "ncalrpc:",
6892 static const struct ndr_interface_string_array svcctl_endpoints = {
6893 .count = 2,
6894 .names = svcctl_endpoint_strings
6897 static const char * const svcctl_authservice_strings[] = {
6898 "host",
6901 static const struct ndr_interface_string_array svcctl_authservices = {
6902 .count = 1,
6903 .names = svcctl_authservice_strings
6907 const struct ndr_interface_table ndr_table_svcctl = {
6908 .name = "svcctl",
6909 .syntax_id = {
6910 {0x367abb81,0x9844,0x35f1,{0xad,0x32},{0x98,0xf0,0x38,0x00,0x10,0x03}},
6911 NDR_SVCCTL_VERSION
6913 .helpstring = NDR_SVCCTL_HELPSTRING,
6914 .num_calls = 44,
6915 .calls = svcctl_calls,
6916 .endpoints = &svcctl_endpoints,
6917 .authservices = &svcctl_authservices