s3: Fix bug #9085.
[Samba.git] / librpc / gen_ndr / ndr_svcctl.c
blobbc9e357a0f28d2d4ec45fe694e4448a8c9b1ce8f
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, 5));
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));
15 NDR_CHECK(ndr_push_trailer_align(ndr, 5));
17 if (ndr_flags & NDR_BUFFERS) {
18 if (r->lock_owner) {
19 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->lock_owner, CH_UTF16)));
20 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0));
21 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->lock_owner, CH_UTF16)));
22 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->lock_owner, ndr_charset_length(r->lock_owner, CH_UTF16), sizeof(uint16_t), CH_UTF16));
25 return NDR_ERR_SUCCESS;
28 static enum ndr_err_code ndr_pull_SERVICE_LOCK_STATUS(struct ndr_pull *ndr, int ndr_flags, struct SERVICE_LOCK_STATUS *r)
30 uint32_t _ptr_lock_owner;
31 uint32_t size_lock_owner_1 = 0;
32 uint32_t length_lock_owner_1 = 0;
33 TALLOC_CTX *_mem_save_lock_owner_0;
34 if (ndr_flags & NDR_SCALARS) {
35 NDR_CHECK(ndr_pull_align(ndr, 5));
36 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->is_locked));
37 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_lock_owner));
38 if (_ptr_lock_owner) {
39 NDR_PULL_ALLOC(ndr, r->lock_owner);
40 } else {
41 r->lock_owner = NULL;
43 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->lock_duration));
44 NDR_CHECK(ndr_pull_trailer_align(ndr, 5));
46 if (ndr_flags & NDR_BUFFERS) {
47 if (r->lock_owner) {
48 _mem_save_lock_owner_0 = NDR_PULL_GET_MEM_CTX(ndr);
49 NDR_PULL_SET_MEM_CTX(ndr, r->lock_owner, 0);
50 NDR_CHECK(ndr_pull_array_size(ndr, &r->lock_owner));
51 NDR_CHECK(ndr_pull_array_length(ndr, &r->lock_owner));
52 size_lock_owner_1 = ndr_get_array_size(ndr, &r->lock_owner);
53 length_lock_owner_1 = ndr_get_array_length(ndr, &r->lock_owner);
54 if (length_lock_owner_1 > size_lock_owner_1) {
55 return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", size_lock_owner_1, length_lock_owner_1);
57 NDR_CHECK(ndr_check_string_terminator(ndr, length_lock_owner_1, sizeof(uint16_t)));
58 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->lock_owner, length_lock_owner_1, sizeof(uint16_t), CH_UTF16));
59 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_lock_owner_0, 0);
62 return NDR_ERR_SUCCESS;
65 _PUBLIC_ void ndr_print_SERVICE_LOCK_STATUS(struct ndr_print *ndr, const char *name, const struct SERVICE_LOCK_STATUS *r)
67 ndr_print_struct(ndr, name, "SERVICE_LOCK_STATUS");
68 ndr->depth++;
69 ndr_print_uint32(ndr, "is_locked", r->is_locked);
70 ndr_print_ptr(ndr, "lock_owner", r->lock_owner);
71 ndr->depth++;
72 if (r->lock_owner) {
73 ndr_print_string(ndr, "lock_owner", r->lock_owner);
75 ndr->depth--;
76 ndr_print_uint32(ndr, "lock_duration", r->lock_duration);
77 ndr->depth--;
80 static enum ndr_err_code ndr_push_svcctl_ServiceStatus(struct ndr_push *ndr, int ndr_flags, enum svcctl_ServiceStatus r)
82 NDR_CHECK(ndr_push_enum_uint32(ndr, NDR_SCALARS, r));
83 return NDR_ERR_SUCCESS;
86 static enum ndr_err_code ndr_pull_svcctl_ServiceStatus(struct ndr_pull *ndr, int ndr_flags, enum svcctl_ServiceStatus *r)
88 uint32_t v;
89 NDR_CHECK(ndr_pull_enum_uint32(ndr, NDR_SCALARS, &v));
90 *r = v;
91 return NDR_ERR_SUCCESS;
94 _PUBLIC_ void ndr_print_svcctl_ServiceStatus(struct ndr_print *ndr, const char *name, enum svcctl_ServiceStatus r)
96 const char *val = NULL;
98 switch (r) {
99 case SVCCTL_STATE_UNKNOWN: val = "SVCCTL_STATE_UNKNOWN"; break;
100 case SVCCTL_STOPPED: val = "SVCCTL_STOPPED"; break;
101 case SVCCTL_START_PENDING: val = "SVCCTL_START_PENDING"; break;
102 case SVCCTL_STOP_PENDING: val = "SVCCTL_STOP_PENDING"; break;
103 case SVCCTL_RUNNING: val = "SVCCTL_RUNNING"; break;
104 case SVCCTL_CONTINUE_PENDING: val = "SVCCTL_CONTINUE_PENDING"; break;
105 case SVCCTL_PAUSE_PENDING: val = "SVCCTL_PAUSE_PENDING"; break;
106 case SVCCTL_PAUSED: val = "SVCCTL_PAUSED"; break;
108 ndr_print_enum(ndr, name, "ENUM", val, r);
111 static enum ndr_err_code ndr_push_svcctl_ControlsAccepted(struct ndr_push *ndr, int ndr_flags, uint32_t r)
113 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r));
114 return NDR_ERR_SUCCESS;
117 static enum ndr_err_code ndr_pull_svcctl_ControlsAccepted(struct ndr_pull *ndr, int ndr_flags, uint32_t *r)
119 uint32_t v;
120 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &v));
121 *r = v;
122 return NDR_ERR_SUCCESS;
125 _PUBLIC_ void ndr_print_svcctl_ControlsAccepted(struct ndr_print *ndr, const char *name, uint32_t r)
127 ndr_print_uint32(ndr, name, r);
128 ndr->depth++;
129 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SVCCTL_ACCEPT_STOP", SVCCTL_ACCEPT_STOP, r);
130 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SVCCTL_ACCEPT_PAUSE_CONTINUE", SVCCTL_ACCEPT_PAUSE_CONTINUE, r);
131 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SVCCTL_ACCEPT_SHUTDOWN", SVCCTL_ACCEPT_SHUTDOWN, r);
132 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SVCCTL_ACCEPT_PARAMCHANGE", SVCCTL_ACCEPT_PARAMCHANGE, r);
133 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SVCCTL_ACCEPT_NETBINDCHANGE", SVCCTL_ACCEPT_NETBINDCHANGE, r);
134 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SVCCTL_ACCEPT_HARDWAREPROFILECHANGE", SVCCTL_ACCEPT_HARDWAREPROFILECHANGE, r);
135 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SVCCTL_ACCEPT_POWEREVENT", SVCCTL_ACCEPT_POWEREVENT, r);
136 ndr->depth--;
139 static enum ndr_err_code ndr_push_SERVICE_STATUS(struct ndr_push *ndr, int ndr_flags, const struct SERVICE_STATUS *r)
141 if (ndr_flags & NDR_SCALARS) {
142 NDR_CHECK(ndr_push_align(ndr, 4));
143 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->type));
144 NDR_CHECK(ndr_push_svcctl_ServiceStatus(ndr, NDR_SCALARS, r->state));
145 NDR_CHECK(ndr_push_svcctl_ControlsAccepted(ndr, NDR_SCALARS, r->controls_accepted));
146 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->win32_exit_code));
147 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->service_exit_code));
148 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->check_point));
149 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->wait_hint));
150 NDR_CHECK(ndr_push_trailer_align(ndr, 4));
152 if (ndr_flags & NDR_BUFFERS) {
154 return NDR_ERR_SUCCESS;
157 static enum ndr_err_code ndr_pull_SERVICE_STATUS(struct ndr_pull *ndr, int ndr_flags, struct SERVICE_STATUS *r)
159 if (ndr_flags & NDR_SCALARS) {
160 NDR_CHECK(ndr_pull_align(ndr, 4));
161 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->type));
162 NDR_CHECK(ndr_pull_svcctl_ServiceStatus(ndr, NDR_SCALARS, &r->state));
163 NDR_CHECK(ndr_pull_svcctl_ControlsAccepted(ndr, NDR_SCALARS, &r->controls_accepted));
164 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->win32_exit_code));
165 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->service_exit_code));
166 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->check_point));
167 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->wait_hint));
168 NDR_CHECK(ndr_pull_trailer_align(ndr, 4));
170 if (ndr_flags & NDR_BUFFERS) {
172 return NDR_ERR_SUCCESS;
175 _PUBLIC_ void ndr_print_SERVICE_STATUS(struct ndr_print *ndr, const char *name, const struct SERVICE_STATUS *r)
177 ndr_print_struct(ndr, name, "SERVICE_STATUS");
178 ndr->depth++;
179 ndr_print_uint32(ndr, "type", r->type);
180 ndr_print_svcctl_ServiceStatus(ndr, "state", r->state);
181 ndr_print_svcctl_ControlsAccepted(ndr, "controls_accepted", r->controls_accepted);
182 ndr_print_WERROR(ndr, "win32_exit_code", r->win32_exit_code);
183 ndr_print_uint32(ndr, "service_exit_code", r->service_exit_code);
184 ndr_print_uint32(ndr, "check_point", r->check_point);
185 ndr_print_uint32(ndr, "wait_hint", r->wait_hint);
186 ndr->depth--;
189 _PUBLIC_ enum ndr_err_code ndr_push_SERVICE_STATUS_PROCESS(struct ndr_push *ndr, int ndr_flags, const struct SERVICE_STATUS_PROCESS *r)
191 if (ndr_flags & NDR_SCALARS) {
192 NDR_CHECK(ndr_push_align(ndr, 4));
193 NDR_CHECK(ndr_push_SERVICE_STATUS(ndr, NDR_SCALARS, &r->status));
194 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->process_id));
195 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->service_flags));
196 NDR_CHECK(ndr_push_trailer_align(ndr, 4));
198 if (ndr_flags & NDR_BUFFERS) {
200 return NDR_ERR_SUCCESS;
203 _PUBLIC_ enum ndr_err_code ndr_pull_SERVICE_STATUS_PROCESS(struct ndr_pull *ndr, int ndr_flags, struct SERVICE_STATUS_PROCESS *r)
205 if (ndr_flags & NDR_SCALARS) {
206 NDR_CHECK(ndr_pull_align(ndr, 4));
207 NDR_CHECK(ndr_pull_SERVICE_STATUS(ndr, NDR_SCALARS, &r->status));
208 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->process_id));
209 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->service_flags));
210 NDR_CHECK(ndr_pull_trailer_align(ndr, 4));
212 if (ndr_flags & NDR_BUFFERS) {
214 return NDR_ERR_SUCCESS;
217 _PUBLIC_ void ndr_print_SERVICE_STATUS_PROCESS(struct ndr_print *ndr, const char *name, const struct SERVICE_STATUS_PROCESS *r)
219 ndr_print_struct(ndr, name, "SERVICE_STATUS_PROCESS");
220 ndr->depth++;
221 ndr_print_SERVICE_STATUS(ndr, "status", &r->status);
222 ndr_print_uint32(ndr, "process_id", r->process_id);
223 ndr_print_uint32(ndr, "service_flags", r->service_flags);
224 ndr->depth--;
227 _PUBLIC_ enum ndr_err_code ndr_push_ENUM_SERVICE_STATUSW(struct ndr_push *ndr, int ndr_flags, const struct ENUM_SERVICE_STATUSW *r)
229 if (ndr_flags & NDR_SCALARS) {
230 NDR_CHECK(ndr_push_align(ndr, 5));
232 uint32_t _flags_save_string = ndr->flags;
233 ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
234 NDR_CHECK(ndr_push_relative_ptr1(ndr, r->service_name));
235 ndr->flags = _flags_save_string;
238 uint32_t _flags_save_string = ndr->flags;
239 ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
240 NDR_CHECK(ndr_push_relative_ptr1(ndr, r->display_name));
241 ndr->flags = _flags_save_string;
243 NDR_CHECK(ndr_push_SERVICE_STATUS(ndr, NDR_SCALARS, &r->status));
244 NDR_CHECK(ndr_push_trailer_align(ndr, 5));
246 if (ndr_flags & NDR_BUFFERS) {
248 uint32_t _flags_save_string = ndr->flags;
249 ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
250 if (r->service_name) {
251 NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->service_name));
252 NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->service_name));
253 NDR_CHECK(ndr_push_relative_ptr2_end(ndr, r->service_name));
255 ndr->flags = _flags_save_string;
258 uint32_t _flags_save_string = ndr->flags;
259 ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
260 if (r->display_name) {
261 NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->display_name));
262 NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->display_name));
263 NDR_CHECK(ndr_push_relative_ptr2_end(ndr, r->display_name));
265 ndr->flags = _flags_save_string;
268 return NDR_ERR_SUCCESS;
271 _PUBLIC_ enum ndr_err_code ndr_pull_ENUM_SERVICE_STATUSW(struct ndr_pull *ndr, int ndr_flags, struct ENUM_SERVICE_STATUSW *r)
273 uint32_t _ptr_service_name;
274 TALLOC_CTX *_mem_save_service_name_0;
275 uint32_t _ptr_display_name;
276 TALLOC_CTX *_mem_save_display_name_0;
277 if (ndr_flags & NDR_SCALARS) {
278 NDR_CHECK(ndr_pull_align(ndr, 5));
280 uint32_t _flags_save_string = ndr->flags;
281 ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
282 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_service_name));
283 if (_ptr_service_name) {
284 NDR_PULL_ALLOC(ndr, r->service_name);
285 NDR_CHECK(ndr_pull_relative_ptr1(ndr, r->service_name, _ptr_service_name));
286 } else {
287 r->service_name = NULL;
289 ndr->flags = _flags_save_string;
292 uint32_t _flags_save_string = ndr->flags;
293 ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
294 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_display_name));
295 if (_ptr_display_name) {
296 NDR_PULL_ALLOC(ndr, r->display_name);
297 NDR_CHECK(ndr_pull_relative_ptr1(ndr, r->display_name, _ptr_display_name));
298 } else {
299 r->display_name = NULL;
301 ndr->flags = _flags_save_string;
303 NDR_CHECK(ndr_pull_SERVICE_STATUS(ndr, NDR_SCALARS, &r->status));
304 NDR_CHECK(ndr_pull_trailer_align(ndr, 5));
306 if (ndr_flags & NDR_BUFFERS) {
308 uint32_t _flags_save_string = ndr->flags;
309 ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
310 if (r->service_name) {
311 uint32_t _relative_save_offset;
312 _relative_save_offset = ndr->offset;
313 NDR_CHECK(ndr_pull_relative_ptr2(ndr, r->service_name));
314 _mem_save_service_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
315 NDR_PULL_SET_MEM_CTX(ndr, r->service_name, 0);
316 NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->service_name));
317 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_service_name_0, 0);
318 ndr->offset = _relative_save_offset;
320 ndr->flags = _flags_save_string;
323 uint32_t _flags_save_string = ndr->flags;
324 ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
325 if (r->display_name) {
326 uint32_t _relative_save_offset;
327 _relative_save_offset = ndr->offset;
328 NDR_CHECK(ndr_pull_relative_ptr2(ndr, r->display_name));
329 _mem_save_display_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
330 NDR_PULL_SET_MEM_CTX(ndr, r->display_name, 0);
331 NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->display_name));
332 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_display_name_0, 0);
333 ndr->offset = _relative_save_offset;
335 ndr->flags = _flags_save_string;
338 return NDR_ERR_SUCCESS;
341 _PUBLIC_ void ndr_print_ENUM_SERVICE_STATUSW(struct ndr_print *ndr, const char *name, const struct ENUM_SERVICE_STATUSW *r)
343 ndr_print_struct(ndr, name, "ENUM_SERVICE_STATUSW");
344 ndr->depth++;
345 ndr_print_ptr(ndr, "service_name", r->service_name);
346 ndr->depth++;
347 if (r->service_name) {
348 ndr_print_string(ndr, "service_name", r->service_name);
350 ndr->depth--;
351 ndr_print_ptr(ndr, "display_name", r->display_name);
352 ndr->depth++;
353 if (r->display_name) {
354 ndr_print_string(ndr, "display_name", r->display_name);
356 ndr->depth--;
357 ndr_print_SERVICE_STATUS(ndr, "status", &r->status);
358 ndr->depth--;
361 _PUBLIC_ size_t ndr_size_ENUM_SERVICE_STATUSW(const struct ENUM_SERVICE_STATUSW *r, struct smb_iconv_convenience *ic, int flags)
363 return ndr_size_struct(r, flags, (ndr_push_flags_fn_t)ndr_push_ENUM_SERVICE_STATUSW, ic);
366 _PUBLIC_ enum ndr_err_code ndr_push_ENUM_SERVICE_STATUSA(struct ndr_push *ndr, int ndr_flags, const struct ENUM_SERVICE_STATUSA *r)
368 if (ndr_flags & NDR_SCALARS) {
369 NDR_CHECK(ndr_push_align(ndr, 5));
371 uint32_t _flags_save_string = ndr->flags;
372 ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_ASCII|LIBNDR_FLAG_STR_NULLTERM);
373 NDR_CHECK(ndr_push_relative_ptr1(ndr, r->service_name));
374 ndr->flags = _flags_save_string;
377 uint32_t _flags_save_string = ndr->flags;
378 ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_ASCII|LIBNDR_FLAG_STR_NULLTERM);
379 NDR_CHECK(ndr_push_relative_ptr1(ndr, r->display_name));
380 ndr->flags = _flags_save_string;
382 NDR_CHECK(ndr_push_SERVICE_STATUS(ndr, NDR_SCALARS, &r->status));
383 NDR_CHECK(ndr_push_trailer_align(ndr, 5));
385 if (ndr_flags & NDR_BUFFERS) {
387 uint32_t _flags_save_string = ndr->flags;
388 ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_ASCII|LIBNDR_FLAG_STR_NULLTERM);
389 if (r->service_name) {
390 NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->service_name));
391 NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->service_name));
392 NDR_CHECK(ndr_push_relative_ptr2_end(ndr, r->service_name));
394 ndr->flags = _flags_save_string;
397 uint32_t _flags_save_string = ndr->flags;
398 ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_ASCII|LIBNDR_FLAG_STR_NULLTERM);
399 if (r->display_name) {
400 NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->display_name));
401 NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->display_name));
402 NDR_CHECK(ndr_push_relative_ptr2_end(ndr, r->display_name));
404 ndr->flags = _flags_save_string;
407 return NDR_ERR_SUCCESS;
410 _PUBLIC_ enum ndr_err_code ndr_pull_ENUM_SERVICE_STATUSA(struct ndr_pull *ndr, int ndr_flags, struct ENUM_SERVICE_STATUSA *r)
412 uint32_t _ptr_service_name;
413 TALLOC_CTX *_mem_save_service_name_0;
414 uint32_t _ptr_display_name;
415 TALLOC_CTX *_mem_save_display_name_0;
416 if (ndr_flags & NDR_SCALARS) {
417 NDR_CHECK(ndr_pull_align(ndr, 5));
419 uint32_t _flags_save_string = ndr->flags;
420 ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_ASCII|LIBNDR_FLAG_STR_NULLTERM);
421 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_service_name));
422 if (_ptr_service_name) {
423 NDR_PULL_ALLOC(ndr, r->service_name);
424 NDR_CHECK(ndr_pull_relative_ptr1(ndr, r->service_name, _ptr_service_name));
425 } else {
426 r->service_name = NULL;
428 ndr->flags = _flags_save_string;
431 uint32_t _flags_save_string = ndr->flags;
432 ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_ASCII|LIBNDR_FLAG_STR_NULLTERM);
433 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_display_name));
434 if (_ptr_display_name) {
435 NDR_PULL_ALLOC(ndr, r->display_name);
436 NDR_CHECK(ndr_pull_relative_ptr1(ndr, r->display_name, _ptr_display_name));
437 } else {
438 r->display_name = NULL;
440 ndr->flags = _flags_save_string;
442 NDR_CHECK(ndr_pull_SERVICE_STATUS(ndr, NDR_SCALARS, &r->status));
443 NDR_CHECK(ndr_pull_trailer_align(ndr, 5));
445 if (ndr_flags & NDR_BUFFERS) {
447 uint32_t _flags_save_string = ndr->flags;
448 ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_ASCII|LIBNDR_FLAG_STR_NULLTERM);
449 if (r->service_name) {
450 uint32_t _relative_save_offset;
451 _relative_save_offset = ndr->offset;
452 NDR_CHECK(ndr_pull_relative_ptr2(ndr, r->service_name));
453 _mem_save_service_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
454 NDR_PULL_SET_MEM_CTX(ndr, r->service_name, 0);
455 NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->service_name));
456 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_service_name_0, 0);
457 ndr->offset = _relative_save_offset;
459 ndr->flags = _flags_save_string;
462 uint32_t _flags_save_string = ndr->flags;
463 ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_ASCII|LIBNDR_FLAG_STR_NULLTERM);
464 if (r->display_name) {
465 uint32_t _relative_save_offset;
466 _relative_save_offset = ndr->offset;
467 NDR_CHECK(ndr_pull_relative_ptr2(ndr, r->display_name));
468 _mem_save_display_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
469 NDR_PULL_SET_MEM_CTX(ndr, r->display_name, 0);
470 NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->display_name));
471 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_display_name_0, 0);
472 ndr->offset = _relative_save_offset;
474 ndr->flags = _flags_save_string;
477 return NDR_ERR_SUCCESS;
480 _PUBLIC_ void ndr_print_ENUM_SERVICE_STATUSA(struct ndr_print *ndr, const char *name, const struct ENUM_SERVICE_STATUSA *r)
482 ndr_print_struct(ndr, name, "ENUM_SERVICE_STATUSA");
483 ndr->depth++;
484 ndr_print_ptr(ndr, "service_name", r->service_name);
485 ndr->depth++;
486 if (r->service_name) {
487 ndr_print_string(ndr, "service_name", r->service_name);
489 ndr->depth--;
490 ndr_print_ptr(ndr, "display_name", r->display_name);
491 ndr->depth++;
492 if (r->display_name) {
493 ndr_print_string(ndr, "display_name", r->display_name);
495 ndr->depth--;
496 ndr_print_SERVICE_STATUS(ndr, "status", &r->status);
497 ndr->depth--;
500 _PUBLIC_ size_t ndr_size_ENUM_SERVICE_STATUSA(const struct ENUM_SERVICE_STATUSA *r, struct smb_iconv_convenience *ic, int flags)
502 return ndr_size_struct(r, flags, (ndr_push_flags_fn_t)ndr_push_ENUM_SERVICE_STATUSA, ic);
505 _PUBLIC_ enum ndr_err_code ndr_push_svcctl_ServerType(struct ndr_push *ndr, int ndr_flags, uint32_t r)
507 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r));
508 return NDR_ERR_SUCCESS;
511 _PUBLIC_ enum ndr_err_code ndr_pull_svcctl_ServerType(struct ndr_pull *ndr, int ndr_flags, uint32_t *r)
513 uint32_t v;
514 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &v));
515 *r = v;
516 return NDR_ERR_SUCCESS;
519 _PUBLIC_ void ndr_print_svcctl_ServerType(struct ndr_print *ndr, const char *name, uint32_t r)
521 ndr_print_uint32(ndr, name, r);
522 ndr->depth++;
523 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_WORKSTATION", SV_TYPE_WORKSTATION, r);
524 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_SERVER", SV_TYPE_SERVER, r);
525 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_SQLSERVER", SV_TYPE_SQLSERVER, r);
526 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_DOMAIN_CTRL", SV_TYPE_DOMAIN_CTRL, r);
527 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_DOMAIN_BAKCTRL", SV_TYPE_DOMAIN_BAKCTRL, r);
528 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_TIME_SOURCE", SV_TYPE_TIME_SOURCE, r);
529 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_AFP", SV_TYPE_AFP, r);
530 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_NOVELL", SV_TYPE_NOVELL, r);
531 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_DOMAIN_MEMBER", SV_TYPE_DOMAIN_MEMBER, r);
532 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_PRINTQ_SERVER", SV_TYPE_PRINTQ_SERVER, r);
533 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_DIALIN_SERVER", SV_TYPE_DIALIN_SERVER, r);
534 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_SERVER_UNIX", SV_TYPE_SERVER_UNIX, r);
535 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_NT", SV_TYPE_NT, r);
536 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_WFW", SV_TYPE_WFW, r);
537 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_SERVER_MFPN", SV_TYPE_SERVER_MFPN, r);
538 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_SERVER_NT", SV_TYPE_SERVER_NT, r);
539 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_POTENTIAL_BROWSER", SV_TYPE_POTENTIAL_BROWSER, r);
540 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_BACKUP_BROWSER", SV_TYPE_BACKUP_BROWSER, r);
541 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_MASTER_BROWSER", SV_TYPE_MASTER_BROWSER, r);
542 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_DOMAIN_MASTER", SV_TYPE_DOMAIN_MASTER, r);
543 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_SERVER_OSF", SV_TYPE_SERVER_OSF, r);
544 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_SERVER_VMS", SV_TYPE_SERVER_VMS, r);
545 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_WIN95_PLUS", SV_TYPE_WIN95_PLUS, r);
546 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_DFS_SERVER", SV_TYPE_DFS_SERVER, r);
547 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_ALTERNATE_XPORT", SV_TYPE_ALTERNATE_XPORT, r);
548 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_LOCAL_LIST_ONLY", SV_TYPE_LOCAL_LIST_ONLY, r);
549 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_DOMAIN_ENUM", SV_TYPE_DOMAIN_ENUM, r);
550 ndr->depth--;
553 static enum ndr_err_code ndr_push_SERVICE_CONTROL(struct ndr_push *ndr, int ndr_flags, enum SERVICE_CONTROL r)
555 NDR_CHECK(ndr_push_enum_uint32(ndr, NDR_SCALARS, r));
556 return NDR_ERR_SUCCESS;
559 static enum ndr_err_code ndr_pull_SERVICE_CONTROL(struct ndr_pull *ndr, int ndr_flags, enum SERVICE_CONTROL *r)
561 uint32_t v;
562 NDR_CHECK(ndr_pull_enum_uint32(ndr, NDR_SCALARS, &v));
563 *r = v;
564 return NDR_ERR_SUCCESS;
567 _PUBLIC_ void ndr_print_SERVICE_CONTROL(struct ndr_print *ndr, const char *name, enum SERVICE_CONTROL r)
569 const char *val = NULL;
571 switch (r) {
572 case SVCCTL_CONTROL_STOP: val = "SVCCTL_CONTROL_STOP"; break;
573 case SVCCTL_CONTROL_PAUSE: val = "SVCCTL_CONTROL_PAUSE"; break;
574 case SVCCTL_CONTROL_CONTINUE: val = "SVCCTL_CONTROL_CONTINUE"; break;
575 case SVCCTL_CONTROL_INTERROGATE: val = "SVCCTL_CONTROL_INTERROGATE"; break;
576 case SVCCTL_CONTROL_SHUTDOWN: val = "SVCCTL_CONTROL_SHUTDOWN"; break;
578 ndr_print_enum(ndr, name, "ENUM", val, r);
581 static enum ndr_err_code ndr_push_svcctl_ErrorControl(struct ndr_push *ndr, int ndr_flags, enum svcctl_ErrorControl r)
583 NDR_CHECK(ndr_push_enum_uint32(ndr, NDR_SCALARS, r));
584 return NDR_ERR_SUCCESS;
587 static enum ndr_err_code ndr_pull_svcctl_ErrorControl(struct ndr_pull *ndr, int ndr_flags, enum svcctl_ErrorControl *r)
589 uint32_t v;
590 NDR_CHECK(ndr_pull_enum_uint32(ndr, NDR_SCALARS, &v));
591 *r = v;
592 return NDR_ERR_SUCCESS;
595 _PUBLIC_ void ndr_print_svcctl_ErrorControl(struct ndr_print *ndr, const char *name, enum svcctl_ErrorControl r)
597 const char *val = NULL;
599 switch (r) {
600 case SVCCTL_SVC_ERROR_IGNORE: val = "SVCCTL_SVC_ERROR_IGNORE"; break;
601 case SVCCTL_SVC_ERROR_NORMAL: val = "SVCCTL_SVC_ERROR_NORMAL"; break;
602 case SVCCTL_SVC_ERROR_CRITICAL: val = "SVCCTL_SVC_ERROR_CRITICAL"; break;
603 case SVCCTL_SVC_ERROR_SEVERE: val = "SVCCTL_SVC_ERROR_SEVERE"; break;
605 ndr_print_enum(ndr, name, "ENUM", val, r);
608 static enum ndr_err_code ndr_push_svcctl_StartType(struct ndr_push *ndr, int ndr_flags, enum svcctl_StartType r)
610 NDR_CHECK(ndr_push_enum_uint32(ndr, NDR_SCALARS, r));
611 return NDR_ERR_SUCCESS;
614 static enum ndr_err_code ndr_pull_svcctl_StartType(struct ndr_pull *ndr, int ndr_flags, enum svcctl_StartType *r)
616 uint32_t v;
617 NDR_CHECK(ndr_pull_enum_uint32(ndr, NDR_SCALARS, &v));
618 *r = v;
619 return NDR_ERR_SUCCESS;
622 _PUBLIC_ void ndr_print_svcctl_StartType(struct ndr_print *ndr, const char *name, enum svcctl_StartType r)
624 const char *val = NULL;
626 switch (r) {
627 case SVCCTL_BOOT_START: val = "SVCCTL_BOOT_START"; break;
628 case SVCCTL_SYSTEM_START: val = "SVCCTL_SYSTEM_START"; break;
629 case SVCCTL_AUTO_START: val = "SVCCTL_AUTO_START"; break;
630 case SVCCTL_DEMAND_START: val = "SVCCTL_DEMAND_START"; break;
631 case SVCCTL_DISABLED: val = "SVCCTL_DISABLED"; break;
633 ndr_print_enum(ndr, name, "ENUM", val, r);
636 static enum ndr_err_code ndr_push_svcctl_ServiceState(struct ndr_push *ndr, int ndr_flags, enum svcctl_ServiceState r)
638 NDR_CHECK(ndr_push_enum_uint32(ndr, NDR_SCALARS, r));
639 return NDR_ERR_SUCCESS;
642 static enum ndr_err_code ndr_pull_svcctl_ServiceState(struct ndr_pull *ndr, int ndr_flags, enum svcctl_ServiceState *r)
644 uint32_t v;
645 NDR_CHECK(ndr_pull_enum_uint32(ndr, NDR_SCALARS, &v));
646 *r = v;
647 return NDR_ERR_SUCCESS;
650 _PUBLIC_ void ndr_print_svcctl_ServiceState(struct ndr_print *ndr, const char *name, enum svcctl_ServiceState r)
652 const char *val = NULL;
654 switch (r) {
655 case SERVICE_STATE_ACTIVE: val = "SERVICE_STATE_ACTIVE"; break;
656 case SERVICE_STATE_INACTIVE: val = "SERVICE_STATE_INACTIVE"; break;
657 case SERVICE_STATE_ALL: val = "SERVICE_STATE_ALL"; break;
659 ndr_print_enum(ndr, name, "ENUM", val, r);
662 static enum ndr_err_code ndr_push_svcctl_MgrAccessMask(struct ndr_push *ndr, int ndr_flags, uint32_t r)
664 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r));
665 return NDR_ERR_SUCCESS;
668 static enum ndr_err_code ndr_pull_svcctl_MgrAccessMask(struct ndr_pull *ndr, int ndr_flags, uint32_t *r)
670 uint32_t v;
671 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &v));
672 *r = v;
673 return NDR_ERR_SUCCESS;
676 _PUBLIC_ void ndr_print_svcctl_MgrAccessMask(struct ndr_print *ndr, const char *name, uint32_t r)
678 ndr_print_uint32(ndr, name, r);
679 ndr->depth++;
680 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SC_RIGHT_MGR_CONNECT", SC_RIGHT_MGR_CONNECT, r);
681 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SC_RIGHT_MGR_CREATE_SERVICE", SC_RIGHT_MGR_CREATE_SERVICE, r);
682 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SC_RIGHT_MGR_ENUMERATE_SERVICE", SC_RIGHT_MGR_ENUMERATE_SERVICE, r);
683 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SC_RIGHT_MGR_LOCK", SC_RIGHT_MGR_LOCK, r);
684 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SC_RIGHT_MGR_QUERY_LOCK_STATUS", SC_RIGHT_MGR_QUERY_LOCK_STATUS, r);
685 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SC_RIGHT_MGR_MODIFY_BOOT_CONFIG", SC_RIGHT_MGR_MODIFY_BOOT_CONFIG, r);
686 ndr->depth--;
689 static enum ndr_err_code ndr_push_svcctl_ServiceAccessMask(struct ndr_push *ndr, int ndr_flags, uint32_t r)
691 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r));
692 return NDR_ERR_SUCCESS;
695 static enum ndr_err_code ndr_pull_svcctl_ServiceAccessMask(struct ndr_pull *ndr, int ndr_flags, uint32_t *r)
697 uint32_t v;
698 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &v));
699 *r = v;
700 return NDR_ERR_SUCCESS;
703 _PUBLIC_ void ndr_print_svcctl_ServiceAccessMask(struct ndr_print *ndr, const char *name, uint32_t r)
705 ndr_print_uint32(ndr, name, r);
706 ndr->depth++;
707 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SC_RIGHT_SVC_QUERY_CONFIG", SC_RIGHT_SVC_QUERY_CONFIG, r);
708 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SC_RIGHT_SVC_CHANGE_CONFIG", SC_RIGHT_SVC_CHANGE_CONFIG, r);
709 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SC_RIGHT_SVC_QUERY_STATUS", SC_RIGHT_SVC_QUERY_STATUS, r);
710 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SC_RIGHT_SVC_ENUMERATE_DEPENDENTS", SC_RIGHT_SVC_ENUMERATE_DEPENDENTS, r);
711 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SC_RIGHT_SVC_START", SC_RIGHT_SVC_START, r);
712 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SC_RIGHT_SVC_STOP", SC_RIGHT_SVC_STOP, r);
713 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SC_RIGHT_SVC_PAUSE_CONTINUE", SC_RIGHT_SVC_PAUSE_CONTINUE, r);
714 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SC_RIGHT_SVC_INTERROGATE", SC_RIGHT_SVC_INTERROGATE, r);
715 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SC_RIGHT_SVC_USER_DEFINED_CONTROL", SC_RIGHT_SVC_USER_DEFINED_CONTROL, r);
716 ndr->depth--;
719 _PUBLIC_ enum ndr_err_code ndr_push_QUERY_SERVICE_CONFIG(struct ndr_push *ndr, int ndr_flags, const struct QUERY_SERVICE_CONFIG *r)
721 if (ndr_flags & NDR_SCALARS) {
722 NDR_CHECK(ndr_push_align(ndr, 5));
723 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->service_type));
724 NDR_CHECK(ndr_push_svcctl_StartType(ndr, NDR_SCALARS, r->start_type));
725 NDR_CHECK(ndr_push_svcctl_ErrorControl(ndr, NDR_SCALARS, r->error_control));
726 NDR_CHECK(ndr_push_unique_ptr(ndr, r->executablepath));
727 NDR_CHECK(ndr_push_unique_ptr(ndr, r->loadordergroup));
728 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->tag_id));
729 NDR_CHECK(ndr_push_unique_ptr(ndr, r->dependencies));
730 NDR_CHECK(ndr_push_unique_ptr(ndr, r->startname));
731 NDR_CHECK(ndr_push_unique_ptr(ndr, r->displayname));
732 NDR_CHECK(ndr_push_trailer_align(ndr, 5));
734 if (ndr_flags & NDR_BUFFERS) {
735 if (r->executablepath) {
736 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->executablepath, CH_UTF16)));
737 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0));
738 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->executablepath, CH_UTF16)));
739 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->executablepath, ndr_charset_length(r->executablepath, CH_UTF16), sizeof(uint16_t), CH_UTF16));
741 if (r->loadordergroup) {
742 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->loadordergroup, CH_UTF16)));
743 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0));
744 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->loadordergroup, CH_UTF16)));
745 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->loadordergroup, ndr_charset_length(r->loadordergroup, CH_UTF16), sizeof(uint16_t), CH_UTF16));
747 if (r->dependencies) {
748 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->dependencies, CH_UTF16)));
749 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0));
750 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->dependencies, CH_UTF16)));
751 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->dependencies, ndr_charset_length(r->dependencies, CH_UTF16), sizeof(uint16_t), CH_UTF16));
753 if (r->startname) {
754 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->startname, CH_UTF16)));
755 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0));
756 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->startname, CH_UTF16)));
757 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->startname, ndr_charset_length(r->startname, CH_UTF16), sizeof(uint16_t), CH_UTF16));
759 if (r->displayname) {
760 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->displayname, CH_UTF16)));
761 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0));
762 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->displayname, CH_UTF16)));
763 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->displayname, ndr_charset_length(r->displayname, CH_UTF16), sizeof(uint16_t), CH_UTF16));
766 return NDR_ERR_SUCCESS;
769 _PUBLIC_ enum ndr_err_code ndr_pull_QUERY_SERVICE_CONFIG(struct ndr_pull *ndr, int ndr_flags, struct QUERY_SERVICE_CONFIG *r)
771 uint32_t _ptr_executablepath;
772 uint32_t size_executablepath_1 = 0;
773 uint32_t length_executablepath_1 = 0;
774 TALLOC_CTX *_mem_save_executablepath_0;
775 uint32_t _ptr_loadordergroup;
776 uint32_t size_loadordergroup_1 = 0;
777 uint32_t length_loadordergroup_1 = 0;
778 TALLOC_CTX *_mem_save_loadordergroup_0;
779 uint32_t _ptr_dependencies;
780 uint32_t size_dependencies_1 = 0;
781 uint32_t length_dependencies_1 = 0;
782 TALLOC_CTX *_mem_save_dependencies_0;
783 uint32_t _ptr_startname;
784 uint32_t size_startname_1 = 0;
785 uint32_t length_startname_1 = 0;
786 TALLOC_CTX *_mem_save_startname_0;
787 uint32_t _ptr_displayname;
788 uint32_t size_displayname_1 = 0;
789 uint32_t length_displayname_1 = 0;
790 TALLOC_CTX *_mem_save_displayname_0;
791 if (ndr_flags & NDR_SCALARS) {
792 NDR_CHECK(ndr_pull_align(ndr, 5));
793 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->service_type));
794 NDR_CHECK(ndr_pull_svcctl_StartType(ndr, NDR_SCALARS, &r->start_type));
795 NDR_CHECK(ndr_pull_svcctl_ErrorControl(ndr, NDR_SCALARS, &r->error_control));
796 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_executablepath));
797 if (_ptr_executablepath) {
798 NDR_PULL_ALLOC(ndr, r->executablepath);
799 } else {
800 r->executablepath = NULL;
802 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_loadordergroup));
803 if (_ptr_loadordergroup) {
804 NDR_PULL_ALLOC(ndr, r->loadordergroup);
805 } else {
806 r->loadordergroup = NULL;
808 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->tag_id));
809 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_dependencies));
810 if (_ptr_dependencies) {
811 NDR_PULL_ALLOC(ndr, r->dependencies);
812 } else {
813 r->dependencies = NULL;
815 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_startname));
816 if (_ptr_startname) {
817 NDR_PULL_ALLOC(ndr, r->startname);
818 } else {
819 r->startname = NULL;
821 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_displayname));
822 if (_ptr_displayname) {
823 NDR_PULL_ALLOC(ndr, r->displayname);
824 } else {
825 r->displayname = NULL;
827 NDR_CHECK(ndr_pull_trailer_align(ndr, 5));
829 if (ndr_flags & NDR_BUFFERS) {
830 if (r->executablepath) {
831 _mem_save_executablepath_0 = NDR_PULL_GET_MEM_CTX(ndr);
832 NDR_PULL_SET_MEM_CTX(ndr, r->executablepath, 0);
833 NDR_CHECK(ndr_pull_array_size(ndr, &r->executablepath));
834 NDR_CHECK(ndr_pull_array_length(ndr, &r->executablepath));
835 size_executablepath_1 = ndr_get_array_size(ndr, &r->executablepath);
836 if (size_executablepath_1 > 8192) {
837 return ndr_pull_error(ndr, NDR_ERR_RANGE, "value out of range");
839 length_executablepath_1 = ndr_get_array_length(ndr, &r->executablepath);
840 if (length_executablepath_1 > 8192) {
841 return ndr_pull_error(ndr, NDR_ERR_RANGE, "value out of range");
843 if (length_executablepath_1 > size_executablepath_1) {
844 return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", size_executablepath_1, length_executablepath_1);
846 NDR_CHECK(ndr_check_string_terminator(ndr, length_executablepath_1, sizeof(uint16_t)));
847 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->executablepath, length_executablepath_1, sizeof(uint16_t), CH_UTF16));
848 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_executablepath_0, 0);
850 if (r->loadordergroup) {
851 _mem_save_loadordergroup_0 = NDR_PULL_GET_MEM_CTX(ndr);
852 NDR_PULL_SET_MEM_CTX(ndr, r->loadordergroup, 0);
853 NDR_CHECK(ndr_pull_array_size(ndr, &r->loadordergroup));
854 NDR_CHECK(ndr_pull_array_length(ndr, &r->loadordergroup));
855 size_loadordergroup_1 = ndr_get_array_size(ndr, &r->loadordergroup);
856 if (size_loadordergroup_1 > 8192) {
857 return ndr_pull_error(ndr, NDR_ERR_RANGE, "value out of range");
859 length_loadordergroup_1 = ndr_get_array_length(ndr, &r->loadordergroup);
860 if (length_loadordergroup_1 > 8192) {
861 return ndr_pull_error(ndr, NDR_ERR_RANGE, "value out of range");
863 if (length_loadordergroup_1 > size_loadordergroup_1) {
864 return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", size_loadordergroup_1, length_loadordergroup_1);
866 NDR_CHECK(ndr_check_string_terminator(ndr, length_loadordergroup_1, sizeof(uint16_t)));
867 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->loadordergroup, length_loadordergroup_1, sizeof(uint16_t), CH_UTF16));
868 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_loadordergroup_0, 0);
870 if (r->dependencies) {
871 _mem_save_dependencies_0 = NDR_PULL_GET_MEM_CTX(ndr);
872 NDR_PULL_SET_MEM_CTX(ndr, r->dependencies, 0);
873 NDR_CHECK(ndr_pull_array_size(ndr, &r->dependencies));
874 NDR_CHECK(ndr_pull_array_length(ndr, &r->dependencies));
875 size_dependencies_1 = ndr_get_array_size(ndr, &r->dependencies);
876 if (size_dependencies_1 > 8192) {
877 return ndr_pull_error(ndr, NDR_ERR_RANGE, "value out of range");
879 length_dependencies_1 = ndr_get_array_length(ndr, &r->dependencies);
880 if (length_dependencies_1 > 8192) {
881 return ndr_pull_error(ndr, NDR_ERR_RANGE, "value out of range");
883 if (length_dependencies_1 > size_dependencies_1) {
884 return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", size_dependencies_1, length_dependencies_1);
886 NDR_CHECK(ndr_check_string_terminator(ndr, length_dependencies_1, sizeof(uint16_t)));
887 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->dependencies, length_dependencies_1, sizeof(uint16_t), CH_UTF16));
888 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_dependencies_0, 0);
890 if (r->startname) {
891 _mem_save_startname_0 = NDR_PULL_GET_MEM_CTX(ndr);
892 NDR_PULL_SET_MEM_CTX(ndr, r->startname, 0);
893 NDR_CHECK(ndr_pull_array_size(ndr, &r->startname));
894 NDR_CHECK(ndr_pull_array_length(ndr, &r->startname));
895 size_startname_1 = ndr_get_array_size(ndr, &r->startname);
896 if (size_startname_1 > 8192) {
897 return ndr_pull_error(ndr, NDR_ERR_RANGE, "value out of range");
899 length_startname_1 = ndr_get_array_length(ndr, &r->startname);
900 if (length_startname_1 > 8192) {
901 return ndr_pull_error(ndr, NDR_ERR_RANGE, "value out of range");
903 if (length_startname_1 > size_startname_1) {
904 return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", size_startname_1, length_startname_1);
906 NDR_CHECK(ndr_check_string_terminator(ndr, length_startname_1, sizeof(uint16_t)));
907 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->startname, length_startname_1, sizeof(uint16_t), CH_UTF16));
908 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_startname_0, 0);
910 if (r->displayname) {
911 _mem_save_displayname_0 = NDR_PULL_GET_MEM_CTX(ndr);
912 NDR_PULL_SET_MEM_CTX(ndr, r->displayname, 0);
913 NDR_CHECK(ndr_pull_array_size(ndr, &r->displayname));
914 NDR_CHECK(ndr_pull_array_length(ndr, &r->displayname));
915 size_displayname_1 = ndr_get_array_size(ndr, &r->displayname);
916 if (size_displayname_1 > 8192) {
917 return ndr_pull_error(ndr, NDR_ERR_RANGE, "value out of range");
919 length_displayname_1 = ndr_get_array_length(ndr, &r->displayname);
920 if (length_displayname_1 > 8192) {
921 return ndr_pull_error(ndr, NDR_ERR_RANGE, "value out of range");
923 if (length_displayname_1 > size_displayname_1) {
924 return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", size_displayname_1, length_displayname_1);
926 NDR_CHECK(ndr_check_string_terminator(ndr, length_displayname_1, sizeof(uint16_t)));
927 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->displayname, length_displayname_1, sizeof(uint16_t), CH_UTF16));
928 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_displayname_0, 0);
931 return NDR_ERR_SUCCESS;
934 _PUBLIC_ void ndr_print_QUERY_SERVICE_CONFIG(struct ndr_print *ndr, const char *name, const struct QUERY_SERVICE_CONFIG *r)
936 ndr_print_struct(ndr, name, "QUERY_SERVICE_CONFIG");
937 ndr->depth++;
938 ndr_print_uint32(ndr, "service_type", r->service_type);
939 ndr_print_svcctl_StartType(ndr, "start_type", r->start_type);
940 ndr_print_svcctl_ErrorControl(ndr, "error_control", r->error_control);
941 ndr_print_ptr(ndr, "executablepath", r->executablepath);
942 ndr->depth++;
943 if (r->executablepath) {
944 ndr_print_string(ndr, "executablepath", r->executablepath);
946 ndr->depth--;
947 ndr_print_ptr(ndr, "loadordergroup", r->loadordergroup);
948 ndr->depth++;
949 if (r->loadordergroup) {
950 ndr_print_string(ndr, "loadordergroup", r->loadordergroup);
952 ndr->depth--;
953 ndr_print_uint32(ndr, "tag_id", r->tag_id);
954 ndr_print_ptr(ndr, "dependencies", r->dependencies);
955 ndr->depth++;
956 if (r->dependencies) {
957 ndr_print_string(ndr, "dependencies", r->dependencies);
959 ndr->depth--;
960 ndr_print_ptr(ndr, "startname", r->startname);
961 ndr->depth++;
962 if (r->startname) {
963 ndr_print_string(ndr, "startname", r->startname);
965 ndr->depth--;
966 ndr_print_ptr(ndr, "displayname", r->displayname);
967 ndr->depth++;
968 if (r->displayname) {
969 ndr_print_string(ndr, "displayname", r->displayname);
971 ndr->depth--;
972 ndr->depth--;
975 _PUBLIC_ size_t ndr_size_QUERY_SERVICE_CONFIG(const struct QUERY_SERVICE_CONFIG *r, struct smb_iconv_convenience *ic, int flags)
977 return ndr_size_struct(r, flags, (ndr_push_flags_fn_t)ndr_push_QUERY_SERVICE_CONFIG, ic);
980 static enum ndr_err_code ndr_push_svcctl_ArgumentString(struct ndr_push *ndr, int ndr_flags, const struct svcctl_ArgumentString *r)
982 if (ndr_flags & NDR_SCALARS) {
983 NDR_CHECK(ndr_push_align(ndr, 5));
984 NDR_CHECK(ndr_push_unique_ptr(ndr, r->string));
985 NDR_CHECK(ndr_push_trailer_align(ndr, 5));
987 if (ndr_flags & NDR_BUFFERS) {
988 if (r->string) {
989 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->string, CH_UTF16)));
990 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0));
991 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->string, CH_UTF16)));
992 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->string, ndr_charset_length(r->string, CH_UTF16), sizeof(uint16_t), CH_UTF16));
995 return NDR_ERR_SUCCESS;
998 static enum ndr_err_code ndr_pull_svcctl_ArgumentString(struct ndr_pull *ndr, int ndr_flags, struct svcctl_ArgumentString *r)
1000 uint32_t _ptr_string;
1001 uint32_t size_string_1 = 0;
1002 uint32_t length_string_1 = 0;
1003 TALLOC_CTX *_mem_save_string_0;
1004 if (ndr_flags & NDR_SCALARS) {
1005 NDR_CHECK(ndr_pull_align(ndr, 5));
1006 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_string));
1007 if (_ptr_string) {
1008 NDR_PULL_ALLOC(ndr, r->string);
1009 } else {
1010 r->string = NULL;
1012 NDR_CHECK(ndr_pull_trailer_align(ndr, 5));
1014 if (ndr_flags & NDR_BUFFERS) {
1015 if (r->string) {
1016 _mem_save_string_0 = NDR_PULL_GET_MEM_CTX(ndr);
1017 NDR_PULL_SET_MEM_CTX(ndr, r->string, 0);
1018 NDR_CHECK(ndr_pull_array_size(ndr, &r->string));
1019 NDR_CHECK(ndr_pull_array_length(ndr, &r->string));
1020 size_string_1 = ndr_get_array_size(ndr, &r->string);
1021 if (size_string_1 > SC_MAX_ARGUMENT_LENGTH) {
1022 return ndr_pull_error(ndr, NDR_ERR_RANGE, "value out of range");
1024 length_string_1 = ndr_get_array_length(ndr, &r->string);
1025 if (length_string_1 > SC_MAX_ARGUMENT_LENGTH) {
1026 return ndr_pull_error(ndr, NDR_ERR_RANGE, "value out of range");
1028 if (length_string_1 > size_string_1) {
1029 return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", size_string_1, length_string_1);
1031 NDR_CHECK(ndr_check_string_terminator(ndr, length_string_1, sizeof(uint16_t)));
1032 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->string, length_string_1, sizeof(uint16_t), CH_UTF16));
1033 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_string_0, 0);
1036 return NDR_ERR_SUCCESS;
1039 _PUBLIC_ void ndr_print_svcctl_ArgumentString(struct ndr_print *ndr, const char *name, const struct svcctl_ArgumentString *r)
1041 ndr_print_struct(ndr, name, "svcctl_ArgumentString");
1042 ndr->depth++;
1043 ndr_print_ptr(ndr, "string", r->string);
1044 ndr->depth++;
1045 if (r->string) {
1046 ndr_print_string(ndr, "string", r->string);
1048 ndr->depth--;
1049 ndr->depth--;
1052 static enum ndr_err_code ndr_push_svcctl_ConfigLevel(struct ndr_push *ndr, int ndr_flags, enum svcctl_ConfigLevel r)
1054 NDR_CHECK(ndr_push_enum_uint32(ndr, NDR_SCALARS, r));
1055 return NDR_ERR_SUCCESS;
1058 static enum ndr_err_code ndr_pull_svcctl_ConfigLevel(struct ndr_pull *ndr, int ndr_flags, enum svcctl_ConfigLevel *r)
1060 uint32_t v;
1061 NDR_CHECK(ndr_pull_enum_uint32(ndr, NDR_SCALARS, &v));
1062 *r = v;
1063 return NDR_ERR_SUCCESS;
1066 _PUBLIC_ void ndr_print_svcctl_ConfigLevel(struct ndr_print *ndr, const char *name, enum svcctl_ConfigLevel r)
1068 const char *val = NULL;
1070 switch (r) {
1071 case SERVICE_CONFIG_DESCRIPTION: val = "SERVICE_CONFIG_DESCRIPTION"; break;
1072 case SERVICE_CONFIG_FAILURE_ACTIONS: val = "SERVICE_CONFIG_FAILURE_ACTIONS"; break;
1074 ndr_print_enum(ndr, name, "ENUM", val, r);
1077 _PUBLIC_ enum ndr_err_code ndr_push_SERVICE_DESCRIPTION(struct ndr_push *ndr, int ndr_flags, const struct SERVICE_DESCRIPTION *r)
1079 if (ndr_flags & NDR_SCALARS) {
1080 NDR_CHECK(ndr_push_align(ndr, 5));
1082 uint32_t _flags_save_string = ndr->flags;
1083 ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
1084 NDR_CHECK(ndr_push_relative_ptr1(ndr, r->description));
1085 ndr->flags = _flags_save_string;
1087 NDR_CHECK(ndr_push_trailer_align(ndr, 5));
1089 if (ndr_flags & NDR_BUFFERS) {
1091 uint32_t _flags_save_string = ndr->flags;
1092 ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
1093 if (r->description) {
1094 NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->description));
1095 NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->description));
1096 NDR_CHECK(ndr_push_relative_ptr2_end(ndr, r->description));
1098 ndr->flags = _flags_save_string;
1101 return NDR_ERR_SUCCESS;
1104 _PUBLIC_ enum ndr_err_code ndr_pull_SERVICE_DESCRIPTION(struct ndr_pull *ndr, int ndr_flags, struct SERVICE_DESCRIPTION *r)
1106 uint32_t _ptr_description;
1107 TALLOC_CTX *_mem_save_description_0;
1108 if (ndr_flags & NDR_SCALARS) {
1109 NDR_CHECK(ndr_pull_align(ndr, 5));
1111 uint32_t _flags_save_string = ndr->flags;
1112 ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
1113 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_description));
1114 if (_ptr_description) {
1115 NDR_PULL_ALLOC(ndr, r->description);
1116 NDR_CHECK(ndr_pull_relative_ptr1(ndr, r->description, _ptr_description));
1117 } else {
1118 r->description = NULL;
1120 ndr->flags = _flags_save_string;
1122 NDR_CHECK(ndr_pull_trailer_align(ndr, 5));
1124 if (ndr_flags & NDR_BUFFERS) {
1126 uint32_t _flags_save_string = ndr->flags;
1127 ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
1128 if (r->description) {
1129 uint32_t _relative_save_offset;
1130 _relative_save_offset = ndr->offset;
1131 NDR_CHECK(ndr_pull_relative_ptr2(ndr, r->description));
1132 _mem_save_description_0 = NDR_PULL_GET_MEM_CTX(ndr);
1133 NDR_PULL_SET_MEM_CTX(ndr, r->description, 0);
1134 NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->description));
1135 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_description_0, 0);
1136 ndr->offset = _relative_save_offset;
1138 ndr->flags = _flags_save_string;
1141 return NDR_ERR_SUCCESS;
1144 _PUBLIC_ void ndr_print_SERVICE_DESCRIPTION(struct ndr_print *ndr, const char *name, const struct SERVICE_DESCRIPTION *r)
1146 ndr_print_struct(ndr, name, "SERVICE_DESCRIPTION");
1147 ndr->depth++;
1148 ndr_print_ptr(ndr, "description", r->description);
1149 ndr->depth++;
1150 if (r->description) {
1151 ndr_print_string(ndr, "description", r->description);
1153 ndr->depth--;
1154 ndr->depth--;
1157 _PUBLIC_ size_t ndr_size_SERVICE_DESCRIPTION(const struct SERVICE_DESCRIPTION *r, struct smb_iconv_convenience *ic, int flags)
1159 return ndr_size_struct(r, flags, (ndr_push_flags_fn_t)ndr_push_SERVICE_DESCRIPTION, ic);
1162 static enum ndr_err_code ndr_push_SC_ACTION_TYPE(struct ndr_push *ndr, int ndr_flags, enum SC_ACTION_TYPE r)
1164 NDR_CHECK(ndr_push_enum_uint32(ndr, NDR_SCALARS, r));
1165 return NDR_ERR_SUCCESS;
1168 static enum ndr_err_code ndr_pull_SC_ACTION_TYPE(struct ndr_pull *ndr, int ndr_flags, enum SC_ACTION_TYPE *r)
1170 uint32_t v;
1171 NDR_CHECK(ndr_pull_enum_uint32(ndr, NDR_SCALARS, &v));
1172 *r = v;
1173 return NDR_ERR_SUCCESS;
1176 _PUBLIC_ void ndr_print_SC_ACTION_TYPE(struct ndr_print *ndr, const char *name, enum SC_ACTION_TYPE r)
1178 const char *val = NULL;
1180 switch (r) {
1181 case SC_ACTION_NONE: val = "SC_ACTION_NONE"; break;
1182 case SC_ACTION_RESTART: val = "SC_ACTION_RESTART"; break;
1183 case SC_ACTION_REBOOT: val = "SC_ACTION_REBOOT"; break;
1184 case SC_ACTION_RUN_COMMAND: val = "SC_ACTION_RUN_COMMAND"; break;
1186 ndr_print_enum(ndr, name, "ENUM", val, r);
1189 static enum ndr_err_code ndr_push_SC_ACTION(struct ndr_push *ndr, int ndr_flags, const struct SC_ACTION *r)
1191 if (ndr_flags & NDR_SCALARS) {
1192 NDR_CHECK(ndr_push_align(ndr, 4));
1193 NDR_CHECK(ndr_push_SC_ACTION_TYPE(ndr, NDR_SCALARS, r->type));
1194 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->delay));
1195 NDR_CHECK(ndr_push_trailer_align(ndr, 4));
1197 if (ndr_flags & NDR_BUFFERS) {
1199 return NDR_ERR_SUCCESS;
1202 static enum ndr_err_code ndr_pull_SC_ACTION(struct ndr_pull *ndr, int ndr_flags, struct SC_ACTION *r)
1204 if (ndr_flags & NDR_SCALARS) {
1205 NDR_CHECK(ndr_pull_align(ndr, 4));
1206 NDR_CHECK(ndr_pull_SC_ACTION_TYPE(ndr, NDR_SCALARS, &r->type));
1207 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->delay));
1208 NDR_CHECK(ndr_pull_trailer_align(ndr, 4));
1210 if (ndr_flags & NDR_BUFFERS) {
1212 return NDR_ERR_SUCCESS;
1215 _PUBLIC_ void ndr_print_SC_ACTION(struct ndr_print *ndr, const char *name, const struct SC_ACTION *r)
1217 ndr_print_struct(ndr, name, "SC_ACTION");
1218 ndr->depth++;
1219 ndr_print_SC_ACTION_TYPE(ndr, "type", r->type);
1220 ndr_print_uint32(ndr, "delay", r->delay);
1221 ndr->depth--;
1224 _PUBLIC_ enum ndr_err_code ndr_push_SERVICE_FAILURE_ACTIONS(struct ndr_push *ndr, int ndr_flags, const struct SERVICE_FAILURE_ACTIONS *r)
1226 uint32_t cntr_actions_1;
1227 if (ndr_flags & NDR_SCALARS) {
1228 NDR_CHECK(ndr_push_align(ndr, 5));
1229 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->reset_period));
1231 uint32_t _flags_save_string = ndr->flags;
1232 ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
1233 NDR_CHECK(ndr_push_relative_ptr1(ndr, r->rebootmsg));
1234 ndr->flags = _flags_save_string;
1237 uint32_t _flags_save_string = ndr->flags;
1238 ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
1239 NDR_CHECK(ndr_push_relative_ptr1(ndr, r->command));
1240 ndr->flags = _flags_save_string;
1242 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->num_actions));
1243 NDR_CHECK(ndr_push_relative_ptr1(ndr, r->actions));
1244 NDR_CHECK(ndr_push_trailer_align(ndr, 5));
1246 if (ndr_flags & NDR_BUFFERS) {
1248 uint32_t _flags_save_string = ndr->flags;
1249 ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
1250 if (r->rebootmsg) {
1251 NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->rebootmsg));
1252 NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->rebootmsg));
1253 NDR_CHECK(ndr_push_relative_ptr2_end(ndr, r->rebootmsg));
1255 ndr->flags = _flags_save_string;
1258 uint32_t _flags_save_string = ndr->flags;
1259 ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
1260 if (r->command) {
1261 NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->command));
1262 NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->command));
1263 NDR_CHECK(ndr_push_relative_ptr2_end(ndr, r->command));
1265 ndr->flags = _flags_save_string;
1267 if (r->actions) {
1268 NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->actions));
1269 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, r->num_actions));
1270 for (cntr_actions_1 = 0; cntr_actions_1 < r->num_actions; cntr_actions_1++) {
1271 NDR_CHECK(ndr_push_SC_ACTION(ndr, NDR_SCALARS, &r->actions[cntr_actions_1]));
1273 NDR_CHECK(ndr_push_relative_ptr2_end(ndr, r->actions));
1276 return NDR_ERR_SUCCESS;
1279 _PUBLIC_ enum ndr_err_code ndr_pull_SERVICE_FAILURE_ACTIONS(struct ndr_pull *ndr, int ndr_flags, struct SERVICE_FAILURE_ACTIONS *r)
1281 uint32_t _ptr_rebootmsg;
1282 TALLOC_CTX *_mem_save_rebootmsg_0;
1283 uint32_t _ptr_command;
1284 TALLOC_CTX *_mem_save_command_0;
1285 uint32_t _ptr_actions;
1286 uint32_t size_actions_1 = 0;
1287 uint32_t cntr_actions_1;
1288 TALLOC_CTX *_mem_save_actions_0;
1289 TALLOC_CTX *_mem_save_actions_1;
1290 if (ndr_flags & NDR_SCALARS) {
1291 NDR_CHECK(ndr_pull_align(ndr, 5));
1292 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->reset_period));
1294 uint32_t _flags_save_string = ndr->flags;
1295 ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
1296 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_rebootmsg));
1297 if (_ptr_rebootmsg) {
1298 NDR_PULL_ALLOC(ndr, r->rebootmsg);
1299 NDR_CHECK(ndr_pull_relative_ptr1(ndr, r->rebootmsg, _ptr_rebootmsg));
1300 } else {
1301 r->rebootmsg = NULL;
1303 ndr->flags = _flags_save_string;
1306 uint32_t _flags_save_string = ndr->flags;
1307 ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
1308 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_command));
1309 if (_ptr_command) {
1310 NDR_PULL_ALLOC(ndr, r->command);
1311 NDR_CHECK(ndr_pull_relative_ptr1(ndr, r->command, _ptr_command));
1312 } else {
1313 r->command = NULL;
1315 ndr->flags = _flags_save_string;
1317 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->num_actions));
1318 if (r->num_actions > 1024) {
1319 return ndr_pull_error(ndr, NDR_ERR_RANGE, "value out of range");
1321 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_actions));
1322 if (_ptr_actions) {
1323 NDR_PULL_ALLOC(ndr, r->actions);
1324 NDR_CHECK(ndr_pull_relative_ptr1(ndr, r->actions, _ptr_actions));
1325 } else {
1326 r->actions = NULL;
1328 NDR_CHECK(ndr_pull_trailer_align(ndr, 5));
1330 if (ndr_flags & NDR_BUFFERS) {
1332 uint32_t _flags_save_string = ndr->flags;
1333 ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
1334 if (r->rebootmsg) {
1335 uint32_t _relative_save_offset;
1336 _relative_save_offset = ndr->offset;
1337 NDR_CHECK(ndr_pull_relative_ptr2(ndr, r->rebootmsg));
1338 _mem_save_rebootmsg_0 = NDR_PULL_GET_MEM_CTX(ndr);
1339 NDR_PULL_SET_MEM_CTX(ndr, r->rebootmsg, 0);
1340 NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->rebootmsg));
1341 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_rebootmsg_0, 0);
1342 ndr->offset = _relative_save_offset;
1344 ndr->flags = _flags_save_string;
1347 uint32_t _flags_save_string = ndr->flags;
1348 ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
1349 if (r->command) {
1350 uint32_t _relative_save_offset;
1351 _relative_save_offset = ndr->offset;
1352 NDR_CHECK(ndr_pull_relative_ptr2(ndr, r->command));
1353 _mem_save_command_0 = NDR_PULL_GET_MEM_CTX(ndr);
1354 NDR_PULL_SET_MEM_CTX(ndr, r->command, 0);
1355 NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->command));
1356 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_command_0, 0);
1357 ndr->offset = _relative_save_offset;
1359 ndr->flags = _flags_save_string;
1361 if (r->actions) {
1362 uint32_t _relative_save_offset;
1363 _relative_save_offset = ndr->offset;
1364 NDR_CHECK(ndr_pull_relative_ptr2(ndr, r->actions));
1365 _mem_save_actions_0 = NDR_PULL_GET_MEM_CTX(ndr);
1366 NDR_PULL_SET_MEM_CTX(ndr, r->actions, 0);
1367 NDR_CHECK(ndr_pull_array_size(ndr, &r->actions));
1368 size_actions_1 = ndr_get_array_size(ndr, &r->actions);
1369 NDR_PULL_ALLOC_N(ndr, r->actions, size_actions_1);
1370 _mem_save_actions_1 = NDR_PULL_GET_MEM_CTX(ndr);
1371 NDR_PULL_SET_MEM_CTX(ndr, r->actions, 0);
1372 for (cntr_actions_1 = 0; cntr_actions_1 < size_actions_1; cntr_actions_1++) {
1373 NDR_CHECK(ndr_pull_SC_ACTION(ndr, NDR_SCALARS, &r->actions[cntr_actions_1]));
1375 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_actions_1, 0);
1376 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_actions_0, 0);
1377 ndr->offset = _relative_save_offset;
1379 if (r->actions) {
1380 NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->actions, r->num_actions));
1383 return NDR_ERR_SUCCESS;
1386 _PUBLIC_ void ndr_print_SERVICE_FAILURE_ACTIONS(struct ndr_print *ndr, const char *name, const struct SERVICE_FAILURE_ACTIONS *r)
1388 uint32_t cntr_actions_1;
1389 ndr_print_struct(ndr, name, "SERVICE_FAILURE_ACTIONS");
1390 ndr->depth++;
1391 ndr_print_uint32(ndr, "reset_period", r->reset_period);
1392 ndr_print_ptr(ndr, "rebootmsg", r->rebootmsg);
1393 ndr->depth++;
1394 if (r->rebootmsg) {
1395 ndr_print_string(ndr, "rebootmsg", r->rebootmsg);
1397 ndr->depth--;
1398 ndr_print_ptr(ndr, "command", r->command);
1399 ndr->depth++;
1400 if (r->command) {
1401 ndr_print_string(ndr, "command", r->command);
1403 ndr->depth--;
1404 ndr_print_uint32(ndr, "num_actions", r->num_actions);
1405 ndr_print_ptr(ndr, "actions", r->actions);
1406 ndr->depth++;
1407 if (r->actions) {
1408 ndr->print(ndr, "%s: ARRAY(%d)", "actions", (int)r->num_actions);
1409 ndr->depth++;
1410 for (cntr_actions_1=0;cntr_actions_1<r->num_actions;cntr_actions_1++) {
1411 char *idx_1=NULL;
1412 if (asprintf(&idx_1, "[%d]", cntr_actions_1) != -1) {
1413 ndr_print_SC_ACTION(ndr, "actions", &r->actions[cntr_actions_1]);
1414 free(idx_1);
1417 ndr->depth--;
1419 ndr->depth--;
1420 ndr->depth--;
1423 _PUBLIC_ size_t ndr_size_SERVICE_FAILURE_ACTIONS(const struct SERVICE_FAILURE_ACTIONS *r, struct smb_iconv_convenience *ic, int flags)
1425 return ndr_size_struct(r, flags, (ndr_push_flags_fn_t)ndr_push_SERVICE_FAILURE_ACTIONS, ic);
1428 static enum ndr_err_code ndr_push_svcctl_StatusLevel(struct ndr_push *ndr, int ndr_flags, enum svcctl_StatusLevel r)
1430 NDR_CHECK(ndr_push_enum_uint32(ndr, NDR_SCALARS, r));
1431 return NDR_ERR_SUCCESS;
1434 static enum ndr_err_code ndr_pull_svcctl_StatusLevel(struct ndr_pull *ndr, int ndr_flags, enum svcctl_StatusLevel *r)
1436 uint32_t v;
1437 NDR_CHECK(ndr_pull_enum_uint32(ndr, NDR_SCALARS, &v));
1438 *r = v;
1439 return NDR_ERR_SUCCESS;
1442 _PUBLIC_ void ndr_print_svcctl_StatusLevel(struct ndr_print *ndr, const char *name, enum svcctl_StatusLevel r)
1444 const char *val = NULL;
1446 switch (r) {
1447 case SVC_STATUS_PROCESS_INFO: val = "SVC_STATUS_PROCESS_INFO"; break;
1449 ndr_print_enum(ndr, name, "ENUM", val, r);
1452 static enum ndr_err_code ndr_push_svcctl_CloseServiceHandle(struct ndr_push *ndr, int flags, const struct svcctl_CloseServiceHandle *r)
1454 if (flags & NDR_IN) {
1455 if (r->in.handle == NULL) {
1456 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
1458 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
1460 if (flags & NDR_OUT) {
1461 if (r->out.handle == NULL) {
1462 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
1464 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->out.handle));
1465 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
1467 return NDR_ERR_SUCCESS;
1470 static enum ndr_err_code ndr_pull_svcctl_CloseServiceHandle(struct ndr_pull *ndr, int flags, struct svcctl_CloseServiceHandle *r)
1472 TALLOC_CTX *_mem_save_handle_0;
1473 if (flags & NDR_IN) {
1474 ZERO_STRUCT(r->out);
1476 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
1477 NDR_PULL_ALLOC(ndr, r->in.handle);
1479 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
1480 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
1481 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
1482 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
1483 NDR_PULL_ALLOC(ndr, r->out.handle);
1484 *r->out.handle = *r->in.handle;
1486 if (flags & NDR_OUT) {
1487 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
1488 NDR_PULL_ALLOC(ndr, r->out.handle);
1490 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
1491 NDR_PULL_SET_MEM_CTX(ndr, r->out.handle, LIBNDR_FLAG_REF_ALLOC);
1492 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->out.handle));
1493 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
1494 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
1496 return NDR_ERR_SUCCESS;
1499 _PUBLIC_ void ndr_print_svcctl_CloseServiceHandle(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_CloseServiceHandle *r)
1501 ndr_print_struct(ndr, name, "svcctl_CloseServiceHandle");
1502 ndr->depth++;
1503 if (flags & NDR_SET_VALUES) {
1504 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
1506 if (flags & NDR_IN) {
1507 ndr_print_struct(ndr, "in", "svcctl_CloseServiceHandle");
1508 ndr->depth++;
1509 ndr_print_ptr(ndr, "handle", r->in.handle);
1510 ndr->depth++;
1511 ndr_print_policy_handle(ndr, "handle", r->in.handle);
1512 ndr->depth--;
1513 ndr->depth--;
1515 if (flags & NDR_OUT) {
1516 ndr_print_struct(ndr, "out", "svcctl_CloseServiceHandle");
1517 ndr->depth++;
1518 ndr_print_ptr(ndr, "handle", r->out.handle);
1519 ndr->depth++;
1520 ndr_print_policy_handle(ndr, "handle", r->out.handle);
1521 ndr->depth--;
1522 ndr_print_WERROR(ndr, "result", r->out.result);
1523 ndr->depth--;
1525 ndr->depth--;
1528 static enum ndr_err_code ndr_push_svcctl_ControlService(struct ndr_push *ndr, int flags, const struct svcctl_ControlService *r)
1530 if (flags & NDR_IN) {
1531 if (r->in.handle == NULL) {
1532 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
1534 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
1535 NDR_CHECK(ndr_push_SERVICE_CONTROL(ndr, NDR_SCALARS, r->in.control));
1537 if (flags & NDR_OUT) {
1538 if (r->out.service_status == NULL) {
1539 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
1541 NDR_CHECK(ndr_push_SERVICE_STATUS(ndr, NDR_SCALARS, r->out.service_status));
1542 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
1544 return NDR_ERR_SUCCESS;
1547 static enum ndr_err_code ndr_pull_svcctl_ControlService(struct ndr_pull *ndr, int flags, struct svcctl_ControlService *r)
1549 TALLOC_CTX *_mem_save_handle_0;
1550 TALLOC_CTX *_mem_save_service_status_0;
1551 if (flags & NDR_IN) {
1552 ZERO_STRUCT(r->out);
1554 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
1555 NDR_PULL_ALLOC(ndr, r->in.handle);
1557 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
1558 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
1559 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
1560 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
1561 NDR_CHECK(ndr_pull_SERVICE_CONTROL(ndr, NDR_SCALARS, &r->in.control));
1562 NDR_PULL_ALLOC(ndr, r->out.service_status);
1563 ZERO_STRUCTP(r->out.service_status);
1565 if (flags & NDR_OUT) {
1566 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
1567 NDR_PULL_ALLOC(ndr, r->out.service_status);
1569 _mem_save_service_status_0 = NDR_PULL_GET_MEM_CTX(ndr);
1570 NDR_PULL_SET_MEM_CTX(ndr, r->out.service_status, LIBNDR_FLAG_REF_ALLOC);
1571 NDR_CHECK(ndr_pull_SERVICE_STATUS(ndr, NDR_SCALARS, r->out.service_status));
1572 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_service_status_0, LIBNDR_FLAG_REF_ALLOC);
1573 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
1575 return NDR_ERR_SUCCESS;
1578 _PUBLIC_ void ndr_print_svcctl_ControlService(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_ControlService *r)
1580 ndr_print_struct(ndr, name, "svcctl_ControlService");
1581 ndr->depth++;
1582 if (flags & NDR_SET_VALUES) {
1583 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
1585 if (flags & NDR_IN) {
1586 ndr_print_struct(ndr, "in", "svcctl_ControlService");
1587 ndr->depth++;
1588 ndr_print_ptr(ndr, "handle", r->in.handle);
1589 ndr->depth++;
1590 ndr_print_policy_handle(ndr, "handle", r->in.handle);
1591 ndr->depth--;
1592 ndr_print_SERVICE_CONTROL(ndr, "control", r->in.control);
1593 ndr->depth--;
1595 if (flags & NDR_OUT) {
1596 ndr_print_struct(ndr, "out", "svcctl_ControlService");
1597 ndr->depth++;
1598 ndr_print_ptr(ndr, "service_status", r->out.service_status);
1599 ndr->depth++;
1600 ndr_print_SERVICE_STATUS(ndr, "service_status", r->out.service_status);
1601 ndr->depth--;
1602 ndr_print_WERROR(ndr, "result", r->out.result);
1603 ndr->depth--;
1605 ndr->depth--;
1608 static enum ndr_err_code ndr_push_svcctl_DeleteService(struct ndr_push *ndr, int flags, const struct svcctl_DeleteService *r)
1610 if (flags & NDR_IN) {
1611 if (r->in.handle == NULL) {
1612 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
1614 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
1616 if (flags & NDR_OUT) {
1617 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
1619 return NDR_ERR_SUCCESS;
1622 static enum ndr_err_code ndr_pull_svcctl_DeleteService(struct ndr_pull *ndr, int flags, struct svcctl_DeleteService *r)
1624 TALLOC_CTX *_mem_save_handle_0;
1625 if (flags & NDR_IN) {
1626 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
1627 NDR_PULL_ALLOC(ndr, r->in.handle);
1629 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
1630 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
1631 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
1632 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
1634 if (flags & NDR_OUT) {
1635 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
1637 return NDR_ERR_SUCCESS;
1640 _PUBLIC_ void ndr_print_svcctl_DeleteService(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_DeleteService *r)
1642 ndr_print_struct(ndr, name, "svcctl_DeleteService");
1643 ndr->depth++;
1644 if (flags & NDR_SET_VALUES) {
1645 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
1647 if (flags & NDR_IN) {
1648 ndr_print_struct(ndr, "in", "svcctl_DeleteService");
1649 ndr->depth++;
1650 ndr_print_ptr(ndr, "handle", r->in.handle);
1651 ndr->depth++;
1652 ndr_print_policy_handle(ndr, "handle", r->in.handle);
1653 ndr->depth--;
1654 ndr->depth--;
1656 if (flags & NDR_OUT) {
1657 ndr_print_struct(ndr, "out", "svcctl_DeleteService");
1658 ndr->depth++;
1659 ndr_print_WERROR(ndr, "result", r->out.result);
1660 ndr->depth--;
1662 ndr->depth--;
1665 static enum ndr_err_code ndr_push_svcctl_LockServiceDatabase(struct ndr_push *ndr, int flags, const struct svcctl_LockServiceDatabase *r)
1667 if (flags & NDR_IN) {
1668 if (r->in.handle == NULL) {
1669 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
1671 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
1673 if (flags & NDR_OUT) {
1674 if (r->out.lock == NULL) {
1675 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
1677 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->out.lock));
1678 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
1680 return NDR_ERR_SUCCESS;
1683 static enum ndr_err_code ndr_pull_svcctl_LockServiceDatabase(struct ndr_pull *ndr, int flags, struct svcctl_LockServiceDatabase *r)
1685 TALLOC_CTX *_mem_save_handle_0;
1686 TALLOC_CTX *_mem_save_lock_0;
1687 if (flags & NDR_IN) {
1688 ZERO_STRUCT(r->out);
1690 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
1691 NDR_PULL_ALLOC(ndr, r->in.handle);
1693 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
1694 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
1695 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
1696 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
1697 NDR_PULL_ALLOC(ndr, r->out.lock);
1698 ZERO_STRUCTP(r->out.lock);
1700 if (flags & NDR_OUT) {
1701 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
1702 NDR_PULL_ALLOC(ndr, r->out.lock);
1704 _mem_save_lock_0 = NDR_PULL_GET_MEM_CTX(ndr);
1705 NDR_PULL_SET_MEM_CTX(ndr, r->out.lock, LIBNDR_FLAG_REF_ALLOC);
1706 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->out.lock));
1707 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_lock_0, LIBNDR_FLAG_REF_ALLOC);
1708 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
1710 return NDR_ERR_SUCCESS;
1713 _PUBLIC_ void ndr_print_svcctl_LockServiceDatabase(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_LockServiceDatabase *r)
1715 ndr_print_struct(ndr, name, "svcctl_LockServiceDatabase");
1716 ndr->depth++;
1717 if (flags & NDR_SET_VALUES) {
1718 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
1720 if (flags & NDR_IN) {
1721 ndr_print_struct(ndr, "in", "svcctl_LockServiceDatabase");
1722 ndr->depth++;
1723 ndr_print_ptr(ndr, "handle", r->in.handle);
1724 ndr->depth++;
1725 ndr_print_policy_handle(ndr, "handle", r->in.handle);
1726 ndr->depth--;
1727 ndr->depth--;
1729 if (flags & NDR_OUT) {
1730 ndr_print_struct(ndr, "out", "svcctl_LockServiceDatabase");
1731 ndr->depth++;
1732 ndr_print_ptr(ndr, "lock", r->out.lock);
1733 ndr->depth++;
1734 ndr_print_policy_handle(ndr, "lock", r->out.lock);
1735 ndr->depth--;
1736 ndr_print_WERROR(ndr, "result", r->out.result);
1737 ndr->depth--;
1739 ndr->depth--;
1742 static enum ndr_err_code ndr_push_svcctl_QueryServiceObjectSecurity(struct ndr_push *ndr, int flags, const struct svcctl_QueryServiceObjectSecurity *r)
1744 if (flags & NDR_IN) {
1745 if (r->in.handle == NULL) {
1746 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
1748 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
1749 NDR_CHECK(ndr_push_security_secinfo(ndr, NDR_SCALARS, r->in.security_flags));
1750 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.offered));
1752 if (flags & NDR_OUT) {
1753 if (r->out.buffer == NULL) {
1754 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
1756 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, r->in.offered));
1757 NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->out.buffer, r->in.offered));
1758 if (r->out.needed == NULL) {
1759 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
1761 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.needed));
1762 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
1764 return NDR_ERR_SUCCESS;
1767 static enum ndr_err_code ndr_pull_svcctl_QueryServiceObjectSecurity(struct ndr_pull *ndr, int flags, struct svcctl_QueryServiceObjectSecurity *r)
1769 uint32_t size_buffer_1 = 0;
1770 TALLOC_CTX *_mem_save_handle_0;
1771 TALLOC_CTX *_mem_save_needed_0;
1772 if (flags & NDR_IN) {
1773 ZERO_STRUCT(r->out);
1775 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
1776 NDR_PULL_ALLOC(ndr, r->in.handle);
1778 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
1779 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
1780 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
1781 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
1782 NDR_CHECK(ndr_pull_security_secinfo(ndr, NDR_SCALARS, &r->in.security_flags));
1783 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.offered));
1784 if (r->in.offered > 0x40000) {
1785 return ndr_pull_error(ndr, NDR_ERR_RANGE, "value out of range");
1787 NDR_PULL_ALLOC_N(ndr, r->out.buffer, r->in.offered);
1788 memset(r->out.buffer, 0, (r->in.offered) * sizeof(*r->out.buffer));
1789 NDR_PULL_ALLOC(ndr, r->out.needed);
1790 ZERO_STRUCTP(r->out.needed);
1792 if (flags & NDR_OUT) {
1793 NDR_CHECK(ndr_pull_array_size(ndr, &r->out.buffer));
1794 size_buffer_1 = ndr_get_array_size(ndr, &r->out.buffer);
1795 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
1796 NDR_PULL_ALLOC_N(ndr, r->out.buffer, size_buffer_1);
1798 NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->out.buffer, size_buffer_1));
1799 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
1800 NDR_PULL_ALLOC(ndr, r->out.needed);
1802 _mem_save_needed_0 = NDR_PULL_GET_MEM_CTX(ndr);
1803 NDR_PULL_SET_MEM_CTX(ndr, r->out.needed, LIBNDR_FLAG_REF_ALLOC);
1804 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.needed));
1805 if (*r->out.needed > 0x40000) {
1806 return ndr_pull_error(ndr, NDR_ERR_RANGE, "value out of range");
1808 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_needed_0, LIBNDR_FLAG_REF_ALLOC);
1809 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
1810 if (r->out.buffer) {
1811 NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->out.buffer, r->in.offered));
1814 return NDR_ERR_SUCCESS;
1817 _PUBLIC_ void ndr_print_svcctl_QueryServiceObjectSecurity(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_QueryServiceObjectSecurity *r)
1819 ndr_print_struct(ndr, name, "svcctl_QueryServiceObjectSecurity");
1820 ndr->depth++;
1821 if (flags & NDR_SET_VALUES) {
1822 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
1824 if (flags & NDR_IN) {
1825 ndr_print_struct(ndr, "in", "svcctl_QueryServiceObjectSecurity");
1826 ndr->depth++;
1827 ndr_print_ptr(ndr, "handle", r->in.handle);
1828 ndr->depth++;
1829 ndr_print_policy_handle(ndr, "handle", r->in.handle);
1830 ndr->depth--;
1831 ndr_print_security_secinfo(ndr, "security_flags", r->in.security_flags);
1832 ndr_print_uint32(ndr, "offered", r->in.offered);
1833 ndr->depth--;
1835 if (flags & NDR_OUT) {
1836 ndr_print_struct(ndr, "out", "svcctl_QueryServiceObjectSecurity");
1837 ndr->depth++;
1838 ndr_print_ptr(ndr, "buffer", r->out.buffer);
1839 ndr->depth++;
1840 ndr_print_array_uint8(ndr, "buffer", r->out.buffer, r->in.offered);
1841 ndr->depth--;
1842 ndr_print_ptr(ndr, "needed", r->out.needed);
1843 ndr->depth++;
1844 ndr_print_uint32(ndr, "needed", *r->out.needed);
1845 ndr->depth--;
1846 ndr_print_WERROR(ndr, "result", r->out.result);
1847 ndr->depth--;
1849 ndr->depth--;
1852 static enum ndr_err_code ndr_push_svcctl_SetServiceObjectSecurity(struct ndr_push *ndr, int flags, const struct svcctl_SetServiceObjectSecurity *r)
1854 if (flags & NDR_IN) {
1855 if (r->in.handle == NULL) {
1856 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
1858 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
1859 NDR_CHECK(ndr_push_security_secinfo(ndr, NDR_SCALARS, r->in.security_flags));
1860 if (r->in.buffer == NULL) {
1861 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
1863 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, r->in.offered));
1864 NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->in.buffer, r->in.offered));
1865 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.offered));
1867 if (flags & NDR_OUT) {
1868 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
1870 return NDR_ERR_SUCCESS;
1873 static enum ndr_err_code ndr_pull_svcctl_SetServiceObjectSecurity(struct ndr_pull *ndr, int flags, struct svcctl_SetServiceObjectSecurity *r)
1875 uint32_t size_buffer_1 = 0;
1876 TALLOC_CTX *_mem_save_handle_0;
1877 if (flags & NDR_IN) {
1878 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
1879 NDR_PULL_ALLOC(ndr, r->in.handle);
1881 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
1882 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
1883 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
1884 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
1885 NDR_CHECK(ndr_pull_security_secinfo(ndr, NDR_SCALARS, &r->in.security_flags));
1886 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.buffer));
1887 size_buffer_1 = ndr_get_array_size(ndr, &r->in.buffer);
1888 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
1889 NDR_PULL_ALLOC_N(ndr, r->in.buffer, size_buffer_1);
1891 NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->in.buffer, size_buffer_1));
1892 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.offered));
1893 if (r->in.buffer) {
1894 NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->in.buffer, r->in.offered));
1897 if (flags & NDR_OUT) {
1898 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
1900 return NDR_ERR_SUCCESS;
1903 _PUBLIC_ void ndr_print_svcctl_SetServiceObjectSecurity(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_SetServiceObjectSecurity *r)
1905 ndr_print_struct(ndr, name, "svcctl_SetServiceObjectSecurity");
1906 ndr->depth++;
1907 if (flags & NDR_SET_VALUES) {
1908 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
1910 if (flags & NDR_IN) {
1911 ndr_print_struct(ndr, "in", "svcctl_SetServiceObjectSecurity");
1912 ndr->depth++;
1913 ndr_print_ptr(ndr, "handle", r->in.handle);
1914 ndr->depth++;
1915 ndr_print_policy_handle(ndr, "handle", r->in.handle);
1916 ndr->depth--;
1917 ndr_print_security_secinfo(ndr, "security_flags", r->in.security_flags);
1918 ndr_print_ptr(ndr, "buffer", r->in.buffer);
1919 ndr->depth++;
1920 ndr_print_array_uint8(ndr, "buffer", r->in.buffer, r->in.offered);
1921 ndr->depth--;
1922 ndr_print_uint32(ndr, "offered", r->in.offered);
1923 ndr->depth--;
1925 if (flags & NDR_OUT) {
1926 ndr_print_struct(ndr, "out", "svcctl_SetServiceObjectSecurity");
1927 ndr->depth++;
1928 ndr_print_WERROR(ndr, "result", r->out.result);
1929 ndr->depth--;
1931 ndr->depth--;
1934 static enum ndr_err_code ndr_push_svcctl_QueryServiceStatus(struct ndr_push *ndr, int flags, const struct svcctl_QueryServiceStatus *r)
1936 if (flags & NDR_IN) {
1937 if (r->in.handle == NULL) {
1938 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
1940 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
1942 if (flags & NDR_OUT) {
1943 if (r->out.service_status == NULL) {
1944 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
1946 NDR_CHECK(ndr_push_SERVICE_STATUS(ndr, NDR_SCALARS, r->out.service_status));
1947 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
1949 return NDR_ERR_SUCCESS;
1952 static enum ndr_err_code ndr_pull_svcctl_QueryServiceStatus(struct ndr_pull *ndr, int flags, struct svcctl_QueryServiceStatus *r)
1954 TALLOC_CTX *_mem_save_handle_0;
1955 TALLOC_CTX *_mem_save_service_status_0;
1956 if (flags & NDR_IN) {
1957 ZERO_STRUCT(r->out);
1959 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
1960 NDR_PULL_ALLOC(ndr, r->in.handle);
1962 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
1963 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
1964 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
1965 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
1966 NDR_PULL_ALLOC(ndr, r->out.service_status);
1967 ZERO_STRUCTP(r->out.service_status);
1969 if (flags & NDR_OUT) {
1970 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
1971 NDR_PULL_ALLOC(ndr, r->out.service_status);
1973 _mem_save_service_status_0 = NDR_PULL_GET_MEM_CTX(ndr);
1974 NDR_PULL_SET_MEM_CTX(ndr, r->out.service_status, LIBNDR_FLAG_REF_ALLOC);
1975 NDR_CHECK(ndr_pull_SERVICE_STATUS(ndr, NDR_SCALARS, r->out.service_status));
1976 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_service_status_0, LIBNDR_FLAG_REF_ALLOC);
1977 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
1979 return NDR_ERR_SUCCESS;
1982 _PUBLIC_ void ndr_print_svcctl_QueryServiceStatus(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_QueryServiceStatus *r)
1984 ndr_print_struct(ndr, name, "svcctl_QueryServiceStatus");
1985 ndr->depth++;
1986 if (flags & NDR_SET_VALUES) {
1987 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
1989 if (flags & NDR_IN) {
1990 ndr_print_struct(ndr, "in", "svcctl_QueryServiceStatus");
1991 ndr->depth++;
1992 ndr_print_ptr(ndr, "handle", r->in.handle);
1993 ndr->depth++;
1994 ndr_print_policy_handle(ndr, "handle", r->in.handle);
1995 ndr->depth--;
1996 ndr->depth--;
1998 if (flags & NDR_OUT) {
1999 ndr_print_struct(ndr, "out", "svcctl_QueryServiceStatus");
2000 ndr->depth++;
2001 ndr_print_ptr(ndr, "service_status", r->out.service_status);
2002 ndr->depth++;
2003 ndr_print_SERVICE_STATUS(ndr, "service_status", r->out.service_status);
2004 ndr->depth--;
2005 ndr_print_WERROR(ndr, "result", r->out.result);
2006 ndr->depth--;
2008 ndr->depth--;
2011 static enum ndr_err_code ndr_push_svcctl_SetServiceStatus(struct ndr_push *ndr, int flags, const struct svcctl_SetServiceStatus *r)
2013 if (flags & NDR_IN) {
2015 if (flags & NDR_OUT) {
2016 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
2018 return NDR_ERR_SUCCESS;
2021 static enum ndr_err_code ndr_pull_svcctl_SetServiceStatus(struct ndr_pull *ndr, int flags, struct svcctl_SetServiceStatus *r)
2023 if (flags & NDR_IN) {
2025 if (flags & NDR_OUT) {
2026 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
2028 return NDR_ERR_SUCCESS;
2031 _PUBLIC_ void ndr_print_svcctl_SetServiceStatus(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_SetServiceStatus *r)
2033 ndr_print_struct(ndr, name, "svcctl_SetServiceStatus");
2034 ndr->depth++;
2035 if (flags & NDR_SET_VALUES) {
2036 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
2038 if (flags & NDR_IN) {
2039 ndr_print_struct(ndr, "in", "svcctl_SetServiceStatus");
2040 ndr->depth++;
2041 ndr->depth--;
2043 if (flags & NDR_OUT) {
2044 ndr_print_struct(ndr, "out", "svcctl_SetServiceStatus");
2045 ndr->depth++;
2046 ndr_print_WERROR(ndr, "result", r->out.result);
2047 ndr->depth--;
2049 ndr->depth--;
2052 static enum ndr_err_code ndr_push_svcctl_UnlockServiceDatabase(struct ndr_push *ndr, int flags, const struct svcctl_UnlockServiceDatabase *r)
2054 if (flags & NDR_IN) {
2055 if (r->in.lock == NULL) {
2056 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
2058 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.lock));
2060 if (flags & NDR_OUT) {
2061 if (r->out.lock == NULL) {
2062 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
2064 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->out.lock));
2065 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
2067 return NDR_ERR_SUCCESS;
2070 static enum ndr_err_code ndr_pull_svcctl_UnlockServiceDatabase(struct ndr_pull *ndr, int flags, struct svcctl_UnlockServiceDatabase *r)
2072 TALLOC_CTX *_mem_save_lock_0;
2073 if (flags & NDR_IN) {
2074 ZERO_STRUCT(r->out);
2076 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
2077 NDR_PULL_ALLOC(ndr, r->in.lock);
2079 _mem_save_lock_0 = NDR_PULL_GET_MEM_CTX(ndr);
2080 NDR_PULL_SET_MEM_CTX(ndr, r->in.lock, LIBNDR_FLAG_REF_ALLOC);
2081 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.lock));
2082 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_lock_0, LIBNDR_FLAG_REF_ALLOC);
2083 NDR_PULL_ALLOC(ndr, r->out.lock);
2084 *r->out.lock = *r->in.lock;
2086 if (flags & NDR_OUT) {
2087 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
2088 NDR_PULL_ALLOC(ndr, r->out.lock);
2090 _mem_save_lock_0 = NDR_PULL_GET_MEM_CTX(ndr);
2091 NDR_PULL_SET_MEM_CTX(ndr, r->out.lock, LIBNDR_FLAG_REF_ALLOC);
2092 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->out.lock));
2093 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_lock_0, LIBNDR_FLAG_REF_ALLOC);
2094 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
2096 return NDR_ERR_SUCCESS;
2099 _PUBLIC_ void ndr_print_svcctl_UnlockServiceDatabase(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_UnlockServiceDatabase *r)
2101 ndr_print_struct(ndr, name, "svcctl_UnlockServiceDatabase");
2102 ndr->depth++;
2103 if (flags & NDR_SET_VALUES) {
2104 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
2106 if (flags & NDR_IN) {
2107 ndr_print_struct(ndr, "in", "svcctl_UnlockServiceDatabase");
2108 ndr->depth++;
2109 ndr_print_ptr(ndr, "lock", r->in.lock);
2110 ndr->depth++;
2111 ndr_print_policy_handle(ndr, "lock", r->in.lock);
2112 ndr->depth--;
2113 ndr->depth--;
2115 if (flags & NDR_OUT) {
2116 ndr_print_struct(ndr, "out", "svcctl_UnlockServiceDatabase");
2117 ndr->depth++;
2118 ndr_print_ptr(ndr, "lock", r->out.lock);
2119 ndr->depth++;
2120 ndr_print_policy_handle(ndr, "lock", r->out.lock);
2121 ndr->depth--;
2122 ndr_print_WERROR(ndr, "result", r->out.result);
2123 ndr->depth--;
2125 ndr->depth--;
2128 static enum ndr_err_code ndr_push_svcctl_NotifyBootConfigStatus(struct ndr_push *ndr, int flags, const struct svcctl_NotifyBootConfigStatus *r)
2130 if (flags & NDR_IN) {
2132 if (flags & NDR_OUT) {
2133 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
2135 return NDR_ERR_SUCCESS;
2138 static enum ndr_err_code ndr_pull_svcctl_NotifyBootConfigStatus(struct ndr_pull *ndr, int flags, struct svcctl_NotifyBootConfigStatus *r)
2140 if (flags & NDR_IN) {
2142 if (flags & NDR_OUT) {
2143 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
2145 return NDR_ERR_SUCCESS;
2148 _PUBLIC_ void ndr_print_svcctl_NotifyBootConfigStatus(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_NotifyBootConfigStatus *r)
2150 ndr_print_struct(ndr, name, "svcctl_NotifyBootConfigStatus");
2151 ndr->depth++;
2152 if (flags & NDR_SET_VALUES) {
2153 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
2155 if (flags & NDR_IN) {
2156 ndr_print_struct(ndr, "in", "svcctl_NotifyBootConfigStatus");
2157 ndr->depth++;
2158 ndr->depth--;
2160 if (flags & NDR_OUT) {
2161 ndr_print_struct(ndr, "out", "svcctl_NotifyBootConfigStatus");
2162 ndr->depth++;
2163 ndr_print_WERROR(ndr, "result", r->out.result);
2164 ndr->depth--;
2166 ndr->depth--;
2169 static enum ndr_err_code ndr_push_svcctl_SCSetServiceBitsW(struct ndr_push *ndr, int flags, const struct svcctl_SCSetServiceBitsW *r)
2171 if (flags & NDR_IN) {
2172 if (r->in.handle == NULL) {
2173 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
2175 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
2176 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.bits));
2177 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.bitson));
2178 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.immediate));
2180 if (flags & NDR_OUT) {
2181 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
2183 return NDR_ERR_SUCCESS;
2186 static enum ndr_err_code ndr_pull_svcctl_SCSetServiceBitsW(struct ndr_pull *ndr, int flags, struct svcctl_SCSetServiceBitsW *r)
2188 TALLOC_CTX *_mem_save_handle_0;
2189 if (flags & NDR_IN) {
2190 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
2191 NDR_PULL_ALLOC(ndr, r->in.handle);
2193 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
2194 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
2195 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
2196 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
2197 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.bits));
2198 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.bitson));
2199 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.immediate));
2201 if (flags & NDR_OUT) {
2202 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
2204 return NDR_ERR_SUCCESS;
2207 _PUBLIC_ void ndr_print_svcctl_SCSetServiceBitsW(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_SCSetServiceBitsW *r)
2209 ndr_print_struct(ndr, name, "svcctl_SCSetServiceBitsW");
2210 ndr->depth++;
2211 if (flags & NDR_SET_VALUES) {
2212 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
2214 if (flags & NDR_IN) {
2215 ndr_print_struct(ndr, "in", "svcctl_SCSetServiceBitsW");
2216 ndr->depth++;
2217 ndr_print_ptr(ndr, "handle", r->in.handle);
2218 ndr->depth++;
2219 ndr_print_policy_handle(ndr, "handle", r->in.handle);
2220 ndr->depth--;
2221 ndr_print_uint32(ndr, "bits", r->in.bits);
2222 ndr_print_uint32(ndr, "bitson", r->in.bitson);
2223 ndr_print_uint32(ndr, "immediate", r->in.immediate);
2224 ndr->depth--;
2226 if (flags & NDR_OUT) {
2227 ndr_print_struct(ndr, "out", "svcctl_SCSetServiceBitsW");
2228 ndr->depth++;
2229 ndr_print_WERROR(ndr, "result", r->out.result);
2230 ndr->depth--;
2232 ndr->depth--;
2235 static enum ndr_err_code ndr_push_svcctl_ChangeServiceConfigW(struct ndr_push *ndr, int flags, const struct svcctl_ChangeServiceConfigW *r)
2237 if (flags & NDR_IN) {
2238 if (r->in.handle == NULL) {
2239 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
2241 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
2242 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.type));
2243 NDR_CHECK(ndr_push_svcctl_StartType(ndr, NDR_SCALARS, r->in.start_type));
2244 NDR_CHECK(ndr_push_svcctl_ErrorControl(ndr, NDR_SCALARS, r->in.error_control));
2245 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.binary_path));
2246 if (r->in.binary_path) {
2247 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.binary_path, CH_UTF16)));
2248 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0));
2249 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.binary_path, CH_UTF16)));
2250 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));
2252 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.load_order_group));
2253 if (r->in.load_order_group) {
2254 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.load_order_group, CH_UTF16)));
2255 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0));
2256 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.load_order_group, CH_UTF16)));
2257 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));
2259 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.dependencies));
2260 if (r->in.dependencies) {
2261 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.dependencies, CH_UTF16)));
2262 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0));
2263 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.dependencies, CH_UTF16)));
2264 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.dependencies, ndr_charset_length(r->in.dependencies, CH_UTF16), sizeof(uint16_t), CH_UTF16));
2266 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.service_start_name));
2267 if (r->in.service_start_name) {
2268 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.service_start_name, CH_UTF16)));
2269 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0));
2270 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.service_start_name, CH_UTF16)));
2271 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));
2273 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.password));
2274 if (r->in.password) {
2275 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.password, CH_UTF16)));
2276 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0));
2277 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.password, CH_UTF16)));
2278 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.password, ndr_charset_length(r->in.password, CH_UTF16), sizeof(uint16_t), CH_UTF16));
2280 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.display_name));
2281 if (r->in.display_name) {
2282 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.display_name, CH_UTF16)));
2283 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0));
2284 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.display_name, CH_UTF16)));
2285 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));
2288 if (flags & NDR_OUT) {
2289 if (r->out.tag_id == NULL) {
2290 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
2292 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.tag_id));
2293 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
2295 return NDR_ERR_SUCCESS;
2298 static enum ndr_err_code ndr_pull_svcctl_ChangeServiceConfigW(struct ndr_pull *ndr, int flags, struct svcctl_ChangeServiceConfigW *r)
2300 uint32_t _ptr_binary_path;
2301 uint32_t size_binary_path_1 = 0;
2302 uint32_t length_binary_path_1 = 0;
2303 uint32_t _ptr_load_order_group;
2304 uint32_t size_load_order_group_1 = 0;
2305 uint32_t length_load_order_group_1 = 0;
2306 uint32_t _ptr_dependencies;
2307 uint32_t size_dependencies_1 = 0;
2308 uint32_t length_dependencies_1 = 0;
2309 uint32_t _ptr_service_start_name;
2310 uint32_t size_service_start_name_1 = 0;
2311 uint32_t length_service_start_name_1 = 0;
2312 uint32_t _ptr_password;
2313 uint32_t size_password_1 = 0;
2314 uint32_t length_password_1 = 0;
2315 uint32_t _ptr_display_name;
2316 uint32_t size_display_name_1 = 0;
2317 uint32_t length_display_name_1 = 0;
2318 TALLOC_CTX *_mem_save_handle_0;
2319 TALLOC_CTX *_mem_save_binary_path_0;
2320 TALLOC_CTX *_mem_save_load_order_group_0;
2321 TALLOC_CTX *_mem_save_tag_id_0;
2322 TALLOC_CTX *_mem_save_dependencies_0;
2323 TALLOC_CTX *_mem_save_service_start_name_0;
2324 TALLOC_CTX *_mem_save_password_0;
2325 TALLOC_CTX *_mem_save_display_name_0;
2326 if (flags & NDR_IN) {
2327 ZERO_STRUCT(r->out);
2329 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
2330 NDR_PULL_ALLOC(ndr, r->in.handle);
2332 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
2333 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
2334 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
2335 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
2336 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.type));
2337 NDR_CHECK(ndr_pull_svcctl_StartType(ndr, NDR_SCALARS, &r->in.start_type));
2338 NDR_CHECK(ndr_pull_svcctl_ErrorControl(ndr, NDR_SCALARS, &r->in.error_control));
2339 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_binary_path));
2340 if (_ptr_binary_path) {
2341 NDR_PULL_ALLOC(ndr, r->in.binary_path);
2342 } else {
2343 r->in.binary_path = NULL;
2345 if (r->in.binary_path) {
2346 _mem_save_binary_path_0 = NDR_PULL_GET_MEM_CTX(ndr);
2347 NDR_PULL_SET_MEM_CTX(ndr, r->in.binary_path, 0);
2348 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.binary_path));
2349 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.binary_path));
2350 size_binary_path_1 = ndr_get_array_size(ndr, &r->in.binary_path);
2351 length_binary_path_1 = ndr_get_array_length(ndr, &r->in.binary_path);
2352 if (length_binary_path_1 > size_binary_path_1) {
2353 return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", size_binary_path_1, length_binary_path_1);
2355 NDR_CHECK(ndr_check_string_terminator(ndr, length_binary_path_1, sizeof(uint16_t)));
2356 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.binary_path, length_binary_path_1, sizeof(uint16_t), CH_UTF16));
2357 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_binary_path_0, 0);
2359 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_load_order_group));
2360 if (_ptr_load_order_group) {
2361 NDR_PULL_ALLOC(ndr, r->in.load_order_group);
2362 } else {
2363 r->in.load_order_group = NULL;
2365 if (r->in.load_order_group) {
2366 _mem_save_load_order_group_0 = NDR_PULL_GET_MEM_CTX(ndr);
2367 NDR_PULL_SET_MEM_CTX(ndr, r->in.load_order_group, 0);
2368 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.load_order_group));
2369 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.load_order_group));
2370 size_load_order_group_1 = ndr_get_array_size(ndr, &r->in.load_order_group);
2371 length_load_order_group_1 = ndr_get_array_length(ndr, &r->in.load_order_group);
2372 if (length_load_order_group_1 > size_load_order_group_1) {
2373 return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", size_load_order_group_1, length_load_order_group_1);
2375 NDR_CHECK(ndr_check_string_terminator(ndr, length_load_order_group_1, sizeof(uint16_t)));
2376 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.load_order_group, length_load_order_group_1, sizeof(uint16_t), CH_UTF16));
2377 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_load_order_group_0, 0);
2379 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_dependencies));
2380 if (_ptr_dependencies) {
2381 NDR_PULL_ALLOC(ndr, r->in.dependencies);
2382 } else {
2383 r->in.dependencies = NULL;
2385 if (r->in.dependencies) {
2386 _mem_save_dependencies_0 = NDR_PULL_GET_MEM_CTX(ndr);
2387 NDR_PULL_SET_MEM_CTX(ndr, r->in.dependencies, 0);
2388 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.dependencies));
2389 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.dependencies));
2390 size_dependencies_1 = ndr_get_array_size(ndr, &r->in.dependencies);
2391 length_dependencies_1 = ndr_get_array_length(ndr, &r->in.dependencies);
2392 if (length_dependencies_1 > size_dependencies_1) {
2393 return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", size_dependencies_1, length_dependencies_1);
2395 NDR_CHECK(ndr_check_string_terminator(ndr, length_dependencies_1, sizeof(uint16_t)));
2396 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.dependencies, length_dependencies_1, sizeof(uint16_t), CH_UTF16));
2397 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_dependencies_0, 0);
2399 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_service_start_name));
2400 if (_ptr_service_start_name) {
2401 NDR_PULL_ALLOC(ndr, r->in.service_start_name);
2402 } else {
2403 r->in.service_start_name = NULL;
2405 if (r->in.service_start_name) {
2406 _mem_save_service_start_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
2407 NDR_PULL_SET_MEM_CTX(ndr, r->in.service_start_name, 0);
2408 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.service_start_name));
2409 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.service_start_name));
2410 size_service_start_name_1 = ndr_get_array_size(ndr, &r->in.service_start_name);
2411 length_service_start_name_1 = ndr_get_array_length(ndr, &r->in.service_start_name);
2412 if (length_service_start_name_1 > size_service_start_name_1) {
2413 return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", size_service_start_name_1, length_service_start_name_1);
2415 NDR_CHECK(ndr_check_string_terminator(ndr, length_service_start_name_1, sizeof(uint16_t)));
2416 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.service_start_name, length_service_start_name_1, sizeof(uint16_t), CH_UTF16));
2417 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_service_start_name_0, 0);
2419 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_password));
2420 if (_ptr_password) {
2421 NDR_PULL_ALLOC(ndr, r->in.password);
2422 } else {
2423 r->in.password = NULL;
2425 if (r->in.password) {
2426 _mem_save_password_0 = NDR_PULL_GET_MEM_CTX(ndr);
2427 NDR_PULL_SET_MEM_CTX(ndr, r->in.password, 0);
2428 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.password));
2429 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.password));
2430 size_password_1 = ndr_get_array_size(ndr, &r->in.password);
2431 length_password_1 = ndr_get_array_length(ndr, &r->in.password);
2432 if (length_password_1 > size_password_1) {
2433 return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", size_password_1, length_password_1);
2435 NDR_CHECK(ndr_check_string_terminator(ndr, length_password_1, sizeof(uint16_t)));
2436 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.password, length_password_1, sizeof(uint16_t), CH_UTF16));
2437 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_password_0, 0);
2439 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_display_name));
2440 if (_ptr_display_name) {
2441 NDR_PULL_ALLOC(ndr, r->in.display_name);
2442 } else {
2443 r->in.display_name = NULL;
2445 if (r->in.display_name) {
2446 _mem_save_display_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
2447 NDR_PULL_SET_MEM_CTX(ndr, r->in.display_name, 0);
2448 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.display_name));
2449 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.display_name));
2450 size_display_name_1 = ndr_get_array_size(ndr, &r->in.display_name);
2451 length_display_name_1 = ndr_get_array_length(ndr, &r->in.display_name);
2452 if (length_display_name_1 > size_display_name_1) {
2453 return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", size_display_name_1, length_display_name_1);
2455 NDR_CHECK(ndr_check_string_terminator(ndr, length_display_name_1, sizeof(uint16_t)));
2456 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.display_name, length_display_name_1, sizeof(uint16_t), CH_UTF16));
2457 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_display_name_0, 0);
2459 NDR_PULL_ALLOC(ndr, r->out.tag_id);
2460 ZERO_STRUCTP(r->out.tag_id);
2462 if (flags & NDR_OUT) {
2463 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
2464 NDR_PULL_ALLOC(ndr, r->out.tag_id);
2466 _mem_save_tag_id_0 = NDR_PULL_GET_MEM_CTX(ndr);
2467 NDR_PULL_SET_MEM_CTX(ndr, r->out.tag_id, LIBNDR_FLAG_REF_ALLOC);
2468 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.tag_id));
2469 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_tag_id_0, LIBNDR_FLAG_REF_ALLOC);
2470 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
2472 return NDR_ERR_SUCCESS;
2475 _PUBLIC_ void ndr_print_svcctl_ChangeServiceConfigW(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_ChangeServiceConfigW *r)
2477 ndr_print_struct(ndr, name, "svcctl_ChangeServiceConfigW");
2478 ndr->depth++;
2479 if (flags & NDR_SET_VALUES) {
2480 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
2482 if (flags & NDR_IN) {
2483 ndr_print_struct(ndr, "in", "svcctl_ChangeServiceConfigW");
2484 ndr->depth++;
2485 ndr_print_ptr(ndr, "handle", r->in.handle);
2486 ndr->depth++;
2487 ndr_print_policy_handle(ndr, "handle", r->in.handle);
2488 ndr->depth--;
2489 ndr_print_uint32(ndr, "type", r->in.type);
2490 ndr_print_svcctl_StartType(ndr, "start_type", r->in.start_type);
2491 ndr_print_svcctl_ErrorControl(ndr, "error_control", r->in.error_control);
2492 ndr_print_ptr(ndr, "binary_path", r->in.binary_path);
2493 ndr->depth++;
2494 if (r->in.binary_path) {
2495 ndr_print_string(ndr, "binary_path", r->in.binary_path);
2497 ndr->depth--;
2498 ndr_print_ptr(ndr, "load_order_group", r->in.load_order_group);
2499 ndr->depth++;
2500 if (r->in.load_order_group) {
2501 ndr_print_string(ndr, "load_order_group", r->in.load_order_group);
2503 ndr->depth--;
2504 ndr_print_ptr(ndr, "dependencies", r->in.dependencies);
2505 ndr->depth++;
2506 if (r->in.dependencies) {
2507 ndr_print_string(ndr, "dependencies", r->in.dependencies);
2509 ndr->depth--;
2510 ndr_print_ptr(ndr, "service_start_name", r->in.service_start_name);
2511 ndr->depth++;
2512 if (r->in.service_start_name) {
2513 ndr_print_string(ndr, "service_start_name", r->in.service_start_name);
2515 ndr->depth--;
2516 ndr_print_ptr(ndr, "password", r->in.password);
2517 ndr->depth++;
2518 if (r->in.password) {
2519 ndr_print_string(ndr, "password", r->in.password);
2521 ndr->depth--;
2522 ndr_print_ptr(ndr, "display_name", r->in.display_name);
2523 ndr->depth++;
2524 if (r->in.display_name) {
2525 ndr_print_string(ndr, "display_name", r->in.display_name);
2527 ndr->depth--;
2528 ndr->depth--;
2530 if (flags & NDR_OUT) {
2531 ndr_print_struct(ndr, "out", "svcctl_ChangeServiceConfigW");
2532 ndr->depth++;
2533 ndr_print_ptr(ndr, "tag_id", r->out.tag_id);
2534 ndr->depth++;
2535 ndr_print_uint32(ndr, "tag_id", *r->out.tag_id);
2536 ndr->depth--;
2537 ndr_print_WERROR(ndr, "result", r->out.result);
2538 ndr->depth--;
2540 ndr->depth--;
2543 static enum ndr_err_code ndr_push_svcctl_CreateServiceW(struct ndr_push *ndr, int flags, const struct svcctl_CreateServiceW *r)
2545 if (flags & NDR_IN) {
2546 if (r->in.scmanager_handle == NULL) {
2547 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
2549 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.scmanager_handle));
2550 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.ServiceName, CH_UTF16)));
2551 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0));
2552 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.ServiceName, CH_UTF16)));
2553 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.ServiceName, ndr_charset_length(r->in.ServiceName, CH_UTF16), sizeof(uint16_t), CH_UTF16));
2554 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.DisplayName));
2555 if (r->in.DisplayName) {
2556 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.DisplayName, CH_UTF16)));
2557 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0));
2558 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.DisplayName, CH_UTF16)));
2559 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.DisplayName, ndr_charset_length(r->in.DisplayName, CH_UTF16), sizeof(uint16_t), CH_UTF16));
2561 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.desired_access));
2562 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.type));
2563 NDR_CHECK(ndr_push_svcctl_StartType(ndr, NDR_SCALARS, r->in.start_type));
2564 NDR_CHECK(ndr_push_svcctl_ErrorControl(ndr, NDR_SCALARS, r->in.error_control));
2565 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.binary_path, CH_UTF16)));
2566 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0));
2567 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.binary_path, CH_UTF16)));
2568 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));
2569 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.LoadOrderGroupKey));
2570 if (r->in.LoadOrderGroupKey) {
2571 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.LoadOrderGroupKey, CH_UTF16)));
2572 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0));
2573 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.LoadOrderGroupKey, CH_UTF16)));
2574 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.LoadOrderGroupKey, ndr_charset_length(r->in.LoadOrderGroupKey, CH_UTF16), sizeof(uint16_t), CH_UTF16));
2576 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.TagId));
2577 if (r->in.TagId) {
2578 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->in.TagId));
2580 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.dependencies));
2581 if (r->in.dependencies) {
2582 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, r->in.dependencies_size));
2583 NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->in.dependencies, r->in.dependencies_size));
2585 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.dependencies_size));
2586 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.service_start_name));
2587 if (r->in.service_start_name) {
2588 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.service_start_name, CH_UTF16)));
2589 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0));
2590 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.service_start_name, CH_UTF16)));
2591 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));
2593 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.password));
2594 if (r->in.password) {
2595 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, r->in.password_size));
2596 NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->in.password, r->in.password_size));
2598 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.password_size));
2600 if (flags & NDR_OUT) {
2601 NDR_CHECK(ndr_push_unique_ptr(ndr, r->out.TagId));
2602 if (r->out.TagId) {
2603 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.TagId));
2605 if (r->out.handle == NULL) {
2606 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
2608 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->out.handle));
2609 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
2611 return NDR_ERR_SUCCESS;
2614 static enum ndr_err_code ndr_pull_svcctl_CreateServiceW(struct ndr_pull *ndr, int flags, struct svcctl_CreateServiceW *r)
2616 uint32_t size_ServiceName_0 = 0;
2617 uint32_t length_ServiceName_0 = 0;
2618 uint32_t _ptr_DisplayName;
2619 uint32_t size_DisplayName_1 = 0;
2620 uint32_t length_DisplayName_1 = 0;
2621 uint32_t size_binary_path_0 = 0;
2622 uint32_t length_binary_path_0 = 0;
2623 uint32_t _ptr_LoadOrderGroupKey;
2624 uint32_t size_LoadOrderGroupKey_1 = 0;
2625 uint32_t length_LoadOrderGroupKey_1 = 0;
2626 uint32_t _ptr_TagId;
2627 uint32_t _ptr_dependencies;
2628 uint32_t size_dependencies_1 = 0;
2629 uint32_t _ptr_service_start_name;
2630 uint32_t size_service_start_name_1 = 0;
2631 uint32_t length_service_start_name_1 = 0;
2632 uint32_t _ptr_password;
2633 uint32_t size_password_1 = 0;
2634 TALLOC_CTX *_mem_save_scmanager_handle_0;
2635 TALLOC_CTX *_mem_save_DisplayName_0;
2636 TALLOC_CTX *_mem_save_LoadOrderGroupKey_0;
2637 TALLOC_CTX *_mem_save_TagId_0;
2638 TALLOC_CTX *_mem_save_dependencies_0;
2639 TALLOC_CTX *_mem_save_service_start_name_0;
2640 TALLOC_CTX *_mem_save_password_0;
2641 TALLOC_CTX *_mem_save_handle_0;
2642 if (flags & NDR_IN) {
2643 ZERO_STRUCT(r->out);
2645 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
2646 NDR_PULL_ALLOC(ndr, r->in.scmanager_handle);
2648 _mem_save_scmanager_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
2649 NDR_PULL_SET_MEM_CTX(ndr, r->in.scmanager_handle, LIBNDR_FLAG_REF_ALLOC);
2650 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.scmanager_handle));
2651 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_scmanager_handle_0, LIBNDR_FLAG_REF_ALLOC);
2652 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.ServiceName));
2653 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.ServiceName));
2654 size_ServiceName_0 = ndr_get_array_size(ndr, &r->in.ServiceName);
2655 length_ServiceName_0 = ndr_get_array_length(ndr, &r->in.ServiceName);
2656 if (length_ServiceName_0 > size_ServiceName_0) {
2657 return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", size_ServiceName_0, length_ServiceName_0);
2659 NDR_CHECK(ndr_check_string_terminator(ndr, length_ServiceName_0, sizeof(uint16_t)));
2660 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.ServiceName, length_ServiceName_0, sizeof(uint16_t), CH_UTF16));
2661 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_DisplayName));
2662 if (_ptr_DisplayName) {
2663 NDR_PULL_ALLOC(ndr, r->in.DisplayName);
2664 } else {
2665 r->in.DisplayName = NULL;
2667 if (r->in.DisplayName) {
2668 _mem_save_DisplayName_0 = NDR_PULL_GET_MEM_CTX(ndr);
2669 NDR_PULL_SET_MEM_CTX(ndr, r->in.DisplayName, 0);
2670 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.DisplayName));
2671 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.DisplayName));
2672 size_DisplayName_1 = ndr_get_array_size(ndr, &r->in.DisplayName);
2673 length_DisplayName_1 = ndr_get_array_length(ndr, &r->in.DisplayName);
2674 if (length_DisplayName_1 > size_DisplayName_1) {
2675 return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", size_DisplayName_1, length_DisplayName_1);
2677 NDR_CHECK(ndr_check_string_terminator(ndr, length_DisplayName_1, sizeof(uint16_t)));
2678 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.DisplayName, length_DisplayName_1, sizeof(uint16_t), CH_UTF16));
2679 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_DisplayName_0, 0);
2681 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.desired_access));
2682 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.type));
2683 NDR_CHECK(ndr_pull_svcctl_StartType(ndr, NDR_SCALARS, &r->in.start_type));
2684 NDR_CHECK(ndr_pull_svcctl_ErrorControl(ndr, NDR_SCALARS, &r->in.error_control));
2685 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.binary_path));
2686 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.binary_path));
2687 size_binary_path_0 = ndr_get_array_size(ndr, &r->in.binary_path);
2688 length_binary_path_0 = ndr_get_array_length(ndr, &r->in.binary_path);
2689 if (length_binary_path_0 > size_binary_path_0) {
2690 return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", size_binary_path_0, length_binary_path_0);
2692 NDR_CHECK(ndr_check_string_terminator(ndr, length_binary_path_0, sizeof(uint16_t)));
2693 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.binary_path, length_binary_path_0, sizeof(uint16_t), CH_UTF16));
2694 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_LoadOrderGroupKey));
2695 if (_ptr_LoadOrderGroupKey) {
2696 NDR_PULL_ALLOC(ndr, r->in.LoadOrderGroupKey);
2697 } else {
2698 r->in.LoadOrderGroupKey = NULL;
2700 if (r->in.LoadOrderGroupKey) {
2701 _mem_save_LoadOrderGroupKey_0 = NDR_PULL_GET_MEM_CTX(ndr);
2702 NDR_PULL_SET_MEM_CTX(ndr, r->in.LoadOrderGroupKey, 0);
2703 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.LoadOrderGroupKey));
2704 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.LoadOrderGroupKey));
2705 size_LoadOrderGroupKey_1 = ndr_get_array_size(ndr, &r->in.LoadOrderGroupKey);
2706 length_LoadOrderGroupKey_1 = ndr_get_array_length(ndr, &r->in.LoadOrderGroupKey);
2707 if (length_LoadOrderGroupKey_1 > size_LoadOrderGroupKey_1) {
2708 return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", size_LoadOrderGroupKey_1, length_LoadOrderGroupKey_1);
2710 NDR_CHECK(ndr_check_string_terminator(ndr, length_LoadOrderGroupKey_1, sizeof(uint16_t)));
2711 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.LoadOrderGroupKey, length_LoadOrderGroupKey_1, sizeof(uint16_t), CH_UTF16));
2712 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_LoadOrderGroupKey_0, 0);
2714 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_TagId));
2715 if (_ptr_TagId) {
2716 NDR_PULL_ALLOC(ndr, r->in.TagId);
2717 } else {
2718 r->in.TagId = NULL;
2720 if (r->in.TagId) {
2721 _mem_save_TagId_0 = NDR_PULL_GET_MEM_CTX(ndr);
2722 NDR_PULL_SET_MEM_CTX(ndr, r->in.TagId, 0);
2723 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->in.TagId));
2724 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_TagId_0, 0);
2726 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_dependencies));
2727 if (_ptr_dependencies) {
2728 NDR_PULL_ALLOC(ndr, r->in.dependencies);
2729 } else {
2730 r->in.dependencies = NULL;
2732 if (r->in.dependencies) {
2733 _mem_save_dependencies_0 = NDR_PULL_GET_MEM_CTX(ndr);
2734 NDR_PULL_SET_MEM_CTX(ndr, r->in.dependencies, 0);
2735 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.dependencies));
2736 size_dependencies_1 = ndr_get_array_size(ndr, &r->in.dependencies);
2737 NDR_PULL_ALLOC_N(ndr, r->in.dependencies, size_dependencies_1);
2738 NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->in.dependencies, size_dependencies_1));
2739 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_dependencies_0, 0);
2741 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.dependencies_size));
2742 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_service_start_name));
2743 if (_ptr_service_start_name) {
2744 NDR_PULL_ALLOC(ndr, r->in.service_start_name);
2745 } else {
2746 r->in.service_start_name = NULL;
2748 if (r->in.service_start_name) {
2749 _mem_save_service_start_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
2750 NDR_PULL_SET_MEM_CTX(ndr, r->in.service_start_name, 0);
2751 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.service_start_name));
2752 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.service_start_name));
2753 size_service_start_name_1 = ndr_get_array_size(ndr, &r->in.service_start_name);
2754 length_service_start_name_1 = ndr_get_array_length(ndr, &r->in.service_start_name);
2755 if (length_service_start_name_1 > size_service_start_name_1) {
2756 return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", size_service_start_name_1, length_service_start_name_1);
2758 NDR_CHECK(ndr_check_string_terminator(ndr, length_service_start_name_1, sizeof(uint16_t)));
2759 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.service_start_name, length_service_start_name_1, sizeof(uint16_t), CH_UTF16));
2760 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_service_start_name_0, 0);
2762 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_password));
2763 if (_ptr_password) {
2764 NDR_PULL_ALLOC(ndr, r->in.password);
2765 } else {
2766 r->in.password = NULL;
2768 if (r->in.password) {
2769 _mem_save_password_0 = NDR_PULL_GET_MEM_CTX(ndr);
2770 NDR_PULL_SET_MEM_CTX(ndr, r->in.password, 0);
2771 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.password));
2772 size_password_1 = ndr_get_array_size(ndr, &r->in.password);
2773 NDR_PULL_ALLOC_N(ndr, r->in.password, size_password_1);
2774 NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->in.password, size_password_1));
2775 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_password_0, 0);
2777 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.password_size));
2778 NDR_PULL_ALLOC(ndr, r->out.handle);
2779 ZERO_STRUCTP(r->out.handle);
2780 if (r->in.dependencies) {
2781 NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->in.dependencies, r->in.dependencies_size));
2783 if (r->in.password) {
2784 NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->in.password, r->in.password_size));
2787 if (flags & NDR_OUT) {
2788 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_TagId));
2789 if (_ptr_TagId) {
2790 NDR_PULL_ALLOC(ndr, r->out.TagId);
2791 } else {
2792 r->out.TagId = NULL;
2794 if (r->out.TagId) {
2795 _mem_save_TagId_0 = NDR_PULL_GET_MEM_CTX(ndr);
2796 NDR_PULL_SET_MEM_CTX(ndr, r->out.TagId, 0);
2797 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.TagId));
2798 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_TagId_0, 0);
2800 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
2801 NDR_PULL_ALLOC(ndr, r->out.handle);
2803 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
2804 NDR_PULL_SET_MEM_CTX(ndr, r->out.handle, LIBNDR_FLAG_REF_ALLOC);
2805 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->out.handle));
2806 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
2807 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
2809 return NDR_ERR_SUCCESS;
2812 _PUBLIC_ void ndr_print_svcctl_CreateServiceW(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_CreateServiceW *r)
2814 ndr_print_struct(ndr, name, "svcctl_CreateServiceW");
2815 ndr->depth++;
2816 if (flags & NDR_SET_VALUES) {
2817 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
2819 if (flags & NDR_IN) {
2820 ndr_print_struct(ndr, "in", "svcctl_CreateServiceW");
2821 ndr->depth++;
2822 ndr_print_ptr(ndr, "scmanager_handle", r->in.scmanager_handle);
2823 ndr->depth++;
2824 ndr_print_policy_handle(ndr, "scmanager_handle", r->in.scmanager_handle);
2825 ndr->depth--;
2826 ndr_print_string(ndr, "ServiceName", r->in.ServiceName);
2827 ndr_print_ptr(ndr, "DisplayName", r->in.DisplayName);
2828 ndr->depth++;
2829 if (r->in.DisplayName) {
2830 ndr_print_string(ndr, "DisplayName", r->in.DisplayName);
2832 ndr->depth--;
2833 ndr_print_uint32(ndr, "desired_access", r->in.desired_access);
2834 ndr_print_uint32(ndr, "type", r->in.type);
2835 ndr_print_svcctl_StartType(ndr, "start_type", r->in.start_type);
2836 ndr_print_svcctl_ErrorControl(ndr, "error_control", r->in.error_control);
2837 ndr_print_string(ndr, "binary_path", r->in.binary_path);
2838 ndr_print_ptr(ndr, "LoadOrderGroupKey", r->in.LoadOrderGroupKey);
2839 ndr->depth++;
2840 if (r->in.LoadOrderGroupKey) {
2841 ndr_print_string(ndr, "LoadOrderGroupKey", r->in.LoadOrderGroupKey);
2843 ndr->depth--;
2844 ndr_print_ptr(ndr, "TagId", r->in.TagId);
2845 ndr->depth++;
2846 if (r->in.TagId) {
2847 ndr_print_uint32(ndr, "TagId", *r->in.TagId);
2849 ndr->depth--;
2850 ndr_print_ptr(ndr, "dependencies", r->in.dependencies);
2851 ndr->depth++;
2852 if (r->in.dependencies) {
2853 ndr_print_array_uint8(ndr, "dependencies", r->in.dependencies, r->in.dependencies_size);
2855 ndr->depth--;
2856 ndr_print_uint32(ndr, "dependencies_size", r->in.dependencies_size);
2857 ndr_print_ptr(ndr, "service_start_name", r->in.service_start_name);
2858 ndr->depth++;
2859 if (r->in.service_start_name) {
2860 ndr_print_string(ndr, "service_start_name", r->in.service_start_name);
2862 ndr->depth--;
2863 ndr_print_ptr(ndr, "password", r->in.password);
2864 ndr->depth++;
2865 if (r->in.password) {
2866 ndr_print_array_uint8(ndr, "password", r->in.password, r->in.password_size);
2868 ndr->depth--;
2869 ndr_print_uint32(ndr, "password_size", r->in.password_size);
2870 ndr->depth--;
2872 if (flags & NDR_OUT) {
2873 ndr_print_struct(ndr, "out", "svcctl_CreateServiceW");
2874 ndr->depth++;
2875 ndr_print_ptr(ndr, "TagId", r->out.TagId);
2876 ndr->depth++;
2877 if (r->out.TagId) {
2878 ndr_print_uint32(ndr, "TagId", *r->out.TagId);
2880 ndr->depth--;
2881 ndr_print_ptr(ndr, "handle", r->out.handle);
2882 ndr->depth++;
2883 ndr_print_policy_handle(ndr, "handle", r->out.handle);
2884 ndr->depth--;
2885 ndr_print_WERROR(ndr, "result", r->out.result);
2886 ndr->depth--;
2888 ndr->depth--;
2891 static enum ndr_err_code ndr_push_svcctl_EnumDependentServicesW(struct ndr_push *ndr, int flags, const struct svcctl_EnumDependentServicesW *r)
2893 if (flags & NDR_IN) {
2894 if (r->in.service == NULL) {
2895 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
2897 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.service));
2898 NDR_CHECK(ndr_push_svcctl_ServiceState(ndr, NDR_SCALARS, r->in.state));
2899 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.offered));
2901 if (flags & NDR_OUT) {
2902 if (r->out.service_status == NULL) {
2903 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
2905 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, r->in.offered));
2906 NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->out.service_status, r->in.offered));
2907 if (r->out.needed == NULL) {
2908 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
2910 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.needed));
2911 if (r->out.services_returned == NULL) {
2912 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
2914 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.services_returned));
2915 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
2917 return NDR_ERR_SUCCESS;
2920 static enum ndr_err_code ndr_pull_svcctl_EnumDependentServicesW(struct ndr_pull *ndr, int flags, struct svcctl_EnumDependentServicesW *r)
2922 uint32_t size_service_status_1 = 0;
2923 TALLOC_CTX *_mem_save_service_0;
2924 TALLOC_CTX *_mem_save_needed_0;
2925 TALLOC_CTX *_mem_save_services_returned_0;
2926 if (flags & NDR_IN) {
2927 ZERO_STRUCT(r->out);
2929 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
2930 NDR_PULL_ALLOC(ndr, r->in.service);
2932 _mem_save_service_0 = NDR_PULL_GET_MEM_CTX(ndr);
2933 NDR_PULL_SET_MEM_CTX(ndr, r->in.service, LIBNDR_FLAG_REF_ALLOC);
2934 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.service));
2935 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_service_0, LIBNDR_FLAG_REF_ALLOC);
2936 NDR_CHECK(ndr_pull_svcctl_ServiceState(ndr, NDR_SCALARS, &r->in.state));
2937 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.offered));
2938 if (r->in.offered > 0x40000) {
2939 return ndr_pull_error(ndr, NDR_ERR_RANGE, "value out of range");
2941 NDR_PULL_ALLOC_N(ndr, r->out.service_status, r->in.offered);
2942 memset(r->out.service_status, 0, (r->in.offered) * sizeof(*r->out.service_status));
2943 NDR_PULL_ALLOC(ndr, r->out.needed);
2944 ZERO_STRUCTP(r->out.needed);
2945 NDR_PULL_ALLOC(ndr, r->out.services_returned);
2946 ZERO_STRUCTP(r->out.services_returned);
2948 if (flags & NDR_OUT) {
2949 NDR_CHECK(ndr_pull_array_size(ndr, &r->out.service_status));
2950 size_service_status_1 = ndr_get_array_size(ndr, &r->out.service_status);
2951 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
2952 NDR_PULL_ALLOC_N(ndr, r->out.service_status, size_service_status_1);
2954 NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->out.service_status, size_service_status_1));
2955 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
2956 NDR_PULL_ALLOC(ndr, r->out.needed);
2958 _mem_save_needed_0 = NDR_PULL_GET_MEM_CTX(ndr);
2959 NDR_PULL_SET_MEM_CTX(ndr, r->out.needed, LIBNDR_FLAG_REF_ALLOC);
2960 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.needed));
2961 if (*r->out.needed > 0x40000) {
2962 return ndr_pull_error(ndr, NDR_ERR_RANGE, "value out of range");
2964 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_needed_0, LIBNDR_FLAG_REF_ALLOC);
2965 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
2966 NDR_PULL_ALLOC(ndr, r->out.services_returned);
2968 _mem_save_services_returned_0 = NDR_PULL_GET_MEM_CTX(ndr);
2969 NDR_PULL_SET_MEM_CTX(ndr, r->out.services_returned, LIBNDR_FLAG_REF_ALLOC);
2970 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.services_returned));
2971 if (*r->out.services_returned > 0x40000) {
2972 return ndr_pull_error(ndr, NDR_ERR_RANGE, "value out of range");
2974 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_services_returned_0, LIBNDR_FLAG_REF_ALLOC);
2975 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
2976 if (r->out.service_status) {
2977 NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->out.service_status, r->in.offered));
2980 return NDR_ERR_SUCCESS;
2983 _PUBLIC_ void ndr_print_svcctl_EnumDependentServicesW(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_EnumDependentServicesW *r)
2985 ndr_print_struct(ndr, name, "svcctl_EnumDependentServicesW");
2986 ndr->depth++;
2987 if (flags & NDR_SET_VALUES) {
2988 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
2990 if (flags & NDR_IN) {
2991 ndr_print_struct(ndr, "in", "svcctl_EnumDependentServicesW");
2992 ndr->depth++;
2993 ndr_print_ptr(ndr, "service", r->in.service);
2994 ndr->depth++;
2995 ndr_print_policy_handle(ndr, "service", r->in.service);
2996 ndr->depth--;
2997 ndr_print_svcctl_ServiceState(ndr, "state", r->in.state);
2998 ndr_print_uint32(ndr, "offered", r->in.offered);
2999 ndr->depth--;
3001 if (flags & NDR_OUT) {
3002 ndr_print_struct(ndr, "out", "svcctl_EnumDependentServicesW");
3003 ndr->depth++;
3004 ndr_print_ptr(ndr, "service_status", r->out.service_status);
3005 ndr->depth++;
3006 ndr_print_array_uint8(ndr, "service_status", r->out.service_status, r->in.offered);
3007 ndr->depth--;
3008 ndr_print_ptr(ndr, "needed", r->out.needed);
3009 ndr->depth++;
3010 ndr_print_uint32(ndr, "needed", *r->out.needed);
3011 ndr->depth--;
3012 ndr_print_ptr(ndr, "services_returned", r->out.services_returned);
3013 ndr->depth++;
3014 ndr_print_uint32(ndr, "services_returned", *r->out.services_returned);
3015 ndr->depth--;
3016 ndr_print_WERROR(ndr, "result", r->out.result);
3017 ndr->depth--;
3019 ndr->depth--;
3022 static enum ndr_err_code ndr_push_svcctl_EnumServicesStatusW(struct ndr_push *ndr, int flags, const struct svcctl_EnumServicesStatusW *r)
3024 if (flags & NDR_IN) {
3025 if (r->in.handle == NULL) {
3026 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
3028 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
3029 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.type));
3030 NDR_CHECK(ndr_push_svcctl_ServiceState(ndr, NDR_SCALARS, r->in.state));
3031 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.offered));
3032 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.resume_handle));
3033 if (r->in.resume_handle) {
3034 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->in.resume_handle));
3037 if (flags & NDR_OUT) {
3038 if (r->out.service == NULL) {
3039 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
3041 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, r->in.offered));
3042 NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->out.service, r->in.offered));
3043 if (r->out.needed == NULL) {
3044 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
3046 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.needed));
3047 if (r->out.services_returned == NULL) {
3048 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
3050 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.services_returned));
3051 NDR_CHECK(ndr_push_unique_ptr(ndr, r->out.resume_handle));
3052 if (r->out.resume_handle) {
3053 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.resume_handle));
3055 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
3057 return NDR_ERR_SUCCESS;
3060 static enum ndr_err_code ndr_pull_svcctl_EnumServicesStatusW(struct ndr_pull *ndr, int flags, struct svcctl_EnumServicesStatusW *r)
3062 uint32_t size_service_1 = 0;
3063 uint32_t _ptr_resume_handle;
3064 TALLOC_CTX *_mem_save_handle_0;
3065 TALLOC_CTX *_mem_save_needed_0;
3066 TALLOC_CTX *_mem_save_services_returned_0;
3067 TALLOC_CTX *_mem_save_resume_handle_0;
3068 if (flags & NDR_IN) {
3069 ZERO_STRUCT(r->out);
3071 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
3072 NDR_PULL_ALLOC(ndr, r->in.handle);
3074 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
3075 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
3076 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
3077 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
3078 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.type));
3079 NDR_CHECK(ndr_pull_svcctl_ServiceState(ndr, NDR_SCALARS, &r->in.state));
3080 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.offered));
3081 if (r->in.offered > 0x40000) {
3082 return ndr_pull_error(ndr, NDR_ERR_RANGE, "value out of range");
3084 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_resume_handle));
3085 if (_ptr_resume_handle) {
3086 NDR_PULL_ALLOC(ndr, r->in.resume_handle);
3087 } else {
3088 r->in.resume_handle = NULL;
3090 if (r->in.resume_handle) {
3091 _mem_save_resume_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
3092 NDR_PULL_SET_MEM_CTX(ndr, r->in.resume_handle, 0);
3093 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->in.resume_handle));
3094 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_resume_handle_0, 0);
3096 NDR_PULL_ALLOC_N(ndr, r->out.service, r->in.offered);
3097 memset(r->out.service, 0, (r->in.offered) * sizeof(*r->out.service));
3098 NDR_PULL_ALLOC(ndr, r->out.needed);
3099 ZERO_STRUCTP(r->out.needed);
3100 NDR_PULL_ALLOC(ndr, r->out.services_returned);
3101 ZERO_STRUCTP(r->out.services_returned);
3103 if (flags & NDR_OUT) {
3104 NDR_CHECK(ndr_pull_array_size(ndr, &r->out.service));
3105 size_service_1 = ndr_get_array_size(ndr, &r->out.service);
3106 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
3107 NDR_PULL_ALLOC_N(ndr, r->out.service, size_service_1);
3109 NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->out.service, size_service_1));
3110 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
3111 NDR_PULL_ALLOC(ndr, r->out.needed);
3113 _mem_save_needed_0 = NDR_PULL_GET_MEM_CTX(ndr);
3114 NDR_PULL_SET_MEM_CTX(ndr, r->out.needed, LIBNDR_FLAG_REF_ALLOC);
3115 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.needed));
3116 if (*r->out.needed > 0x40000) {
3117 return ndr_pull_error(ndr, NDR_ERR_RANGE, "value out of range");
3119 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_needed_0, LIBNDR_FLAG_REF_ALLOC);
3120 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
3121 NDR_PULL_ALLOC(ndr, r->out.services_returned);
3123 _mem_save_services_returned_0 = NDR_PULL_GET_MEM_CTX(ndr);
3124 NDR_PULL_SET_MEM_CTX(ndr, r->out.services_returned, LIBNDR_FLAG_REF_ALLOC);
3125 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.services_returned));
3126 if (*r->out.services_returned > 0x40000) {
3127 return ndr_pull_error(ndr, NDR_ERR_RANGE, "value out of range");
3129 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_services_returned_0, LIBNDR_FLAG_REF_ALLOC);
3130 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_resume_handle));
3131 if (_ptr_resume_handle) {
3132 NDR_PULL_ALLOC(ndr, r->out.resume_handle);
3133 } else {
3134 r->out.resume_handle = NULL;
3136 if (r->out.resume_handle) {
3137 _mem_save_resume_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
3138 NDR_PULL_SET_MEM_CTX(ndr, r->out.resume_handle, 0);
3139 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.resume_handle));
3140 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_resume_handle_0, 0);
3142 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
3143 if (r->out.service) {
3144 NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->out.service, r->in.offered));
3147 return NDR_ERR_SUCCESS;
3150 _PUBLIC_ void ndr_print_svcctl_EnumServicesStatusW(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_EnumServicesStatusW *r)
3152 ndr_print_struct(ndr, name, "svcctl_EnumServicesStatusW");
3153 ndr->depth++;
3154 if (flags & NDR_SET_VALUES) {
3155 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
3157 if (flags & NDR_IN) {
3158 ndr_print_struct(ndr, "in", "svcctl_EnumServicesStatusW");
3159 ndr->depth++;
3160 ndr_print_ptr(ndr, "handle", r->in.handle);
3161 ndr->depth++;
3162 ndr_print_policy_handle(ndr, "handle", r->in.handle);
3163 ndr->depth--;
3164 ndr_print_uint32(ndr, "type", r->in.type);
3165 ndr_print_svcctl_ServiceState(ndr, "state", r->in.state);
3166 ndr_print_uint32(ndr, "offered", r->in.offered);
3167 ndr_print_ptr(ndr, "resume_handle", r->in.resume_handle);
3168 ndr->depth++;
3169 if (r->in.resume_handle) {
3170 ndr_print_uint32(ndr, "resume_handle", *r->in.resume_handle);
3172 ndr->depth--;
3173 ndr->depth--;
3175 if (flags & NDR_OUT) {
3176 ndr_print_struct(ndr, "out", "svcctl_EnumServicesStatusW");
3177 ndr->depth++;
3178 ndr_print_ptr(ndr, "service", r->out.service);
3179 ndr->depth++;
3180 ndr_print_array_uint8(ndr, "service", r->out.service, r->in.offered);
3181 ndr->depth--;
3182 ndr_print_ptr(ndr, "needed", r->out.needed);
3183 ndr->depth++;
3184 ndr_print_uint32(ndr, "needed", *r->out.needed);
3185 ndr->depth--;
3186 ndr_print_ptr(ndr, "services_returned", r->out.services_returned);
3187 ndr->depth++;
3188 ndr_print_uint32(ndr, "services_returned", *r->out.services_returned);
3189 ndr->depth--;
3190 ndr_print_ptr(ndr, "resume_handle", r->out.resume_handle);
3191 ndr->depth++;
3192 if (r->out.resume_handle) {
3193 ndr_print_uint32(ndr, "resume_handle", *r->out.resume_handle);
3195 ndr->depth--;
3196 ndr_print_WERROR(ndr, "result", r->out.result);
3197 ndr->depth--;
3199 ndr->depth--;
3202 static enum ndr_err_code ndr_push_svcctl_OpenSCManagerW(struct ndr_push *ndr, int flags, const struct svcctl_OpenSCManagerW *r)
3204 if (flags & NDR_IN) {
3205 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.MachineName));
3206 if (r->in.MachineName) {
3207 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.MachineName, CH_UTF16)));
3208 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0));
3209 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.MachineName, CH_UTF16)));
3210 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.MachineName, ndr_charset_length(r->in.MachineName, CH_UTF16), sizeof(uint16_t), CH_UTF16));
3212 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.DatabaseName));
3213 if (r->in.DatabaseName) {
3214 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.DatabaseName, CH_UTF16)));
3215 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0));
3216 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.DatabaseName, CH_UTF16)));
3217 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.DatabaseName, ndr_charset_length(r->in.DatabaseName, CH_UTF16), sizeof(uint16_t), CH_UTF16));
3219 NDR_CHECK(ndr_push_svcctl_MgrAccessMask(ndr, NDR_SCALARS, r->in.access_mask));
3221 if (flags & NDR_OUT) {
3222 if (r->out.handle == NULL) {
3223 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
3225 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->out.handle));
3226 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
3228 return NDR_ERR_SUCCESS;
3231 static enum ndr_err_code ndr_pull_svcctl_OpenSCManagerW(struct ndr_pull *ndr, int flags, struct svcctl_OpenSCManagerW *r)
3233 uint32_t _ptr_MachineName;
3234 uint32_t size_MachineName_1 = 0;
3235 uint32_t length_MachineName_1 = 0;
3236 uint32_t _ptr_DatabaseName;
3237 uint32_t size_DatabaseName_1 = 0;
3238 uint32_t length_DatabaseName_1 = 0;
3239 TALLOC_CTX *_mem_save_MachineName_0;
3240 TALLOC_CTX *_mem_save_DatabaseName_0;
3241 TALLOC_CTX *_mem_save_handle_0;
3242 if (flags & NDR_IN) {
3243 ZERO_STRUCT(r->out);
3245 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_MachineName));
3246 if (_ptr_MachineName) {
3247 NDR_PULL_ALLOC(ndr, r->in.MachineName);
3248 } else {
3249 r->in.MachineName = NULL;
3251 if (r->in.MachineName) {
3252 _mem_save_MachineName_0 = NDR_PULL_GET_MEM_CTX(ndr);
3253 NDR_PULL_SET_MEM_CTX(ndr, r->in.MachineName, 0);
3254 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.MachineName));
3255 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.MachineName));
3256 size_MachineName_1 = ndr_get_array_size(ndr, &r->in.MachineName);
3257 length_MachineName_1 = ndr_get_array_length(ndr, &r->in.MachineName);
3258 if (length_MachineName_1 > size_MachineName_1) {
3259 return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", size_MachineName_1, length_MachineName_1);
3261 NDR_CHECK(ndr_check_string_terminator(ndr, length_MachineName_1, sizeof(uint16_t)));
3262 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.MachineName, length_MachineName_1, sizeof(uint16_t), CH_UTF16));
3263 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_MachineName_0, 0);
3265 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_DatabaseName));
3266 if (_ptr_DatabaseName) {
3267 NDR_PULL_ALLOC(ndr, r->in.DatabaseName);
3268 } else {
3269 r->in.DatabaseName = NULL;
3271 if (r->in.DatabaseName) {
3272 _mem_save_DatabaseName_0 = NDR_PULL_GET_MEM_CTX(ndr);
3273 NDR_PULL_SET_MEM_CTX(ndr, r->in.DatabaseName, 0);
3274 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.DatabaseName));
3275 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.DatabaseName));
3276 size_DatabaseName_1 = ndr_get_array_size(ndr, &r->in.DatabaseName);
3277 length_DatabaseName_1 = ndr_get_array_length(ndr, &r->in.DatabaseName);
3278 if (length_DatabaseName_1 > size_DatabaseName_1) {
3279 return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", size_DatabaseName_1, length_DatabaseName_1);
3281 NDR_CHECK(ndr_check_string_terminator(ndr, length_DatabaseName_1, sizeof(uint16_t)));
3282 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.DatabaseName, length_DatabaseName_1, sizeof(uint16_t), CH_UTF16));
3283 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_DatabaseName_0, 0);
3285 NDR_CHECK(ndr_pull_svcctl_MgrAccessMask(ndr, NDR_SCALARS, &r->in.access_mask));
3286 NDR_PULL_ALLOC(ndr, r->out.handle);
3287 ZERO_STRUCTP(r->out.handle);
3289 if (flags & NDR_OUT) {
3290 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
3291 NDR_PULL_ALLOC(ndr, r->out.handle);
3293 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
3294 NDR_PULL_SET_MEM_CTX(ndr, r->out.handle, LIBNDR_FLAG_REF_ALLOC);
3295 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->out.handle));
3296 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
3297 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
3299 return NDR_ERR_SUCCESS;
3302 _PUBLIC_ void ndr_print_svcctl_OpenSCManagerW(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_OpenSCManagerW *r)
3304 ndr_print_struct(ndr, name, "svcctl_OpenSCManagerW");
3305 ndr->depth++;
3306 if (flags & NDR_SET_VALUES) {
3307 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
3309 if (flags & NDR_IN) {
3310 ndr_print_struct(ndr, "in", "svcctl_OpenSCManagerW");
3311 ndr->depth++;
3312 ndr_print_ptr(ndr, "MachineName", r->in.MachineName);
3313 ndr->depth++;
3314 if (r->in.MachineName) {
3315 ndr_print_string(ndr, "MachineName", r->in.MachineName);
3317 ndr->depth--;
3318 ndr_print_ptr(ndr, "DatabaseName", r->in.DatabaseName);
3319 ndr->depth++;
3320 if (r->in.DatabaseName) {
3321 ndr_print_string(ndr, "DatabaseName", r->in.DatabaseName);
3323 ndr->depth--;
3324 ndr_print_svcctl_MgrAccessMask(ndr, "access_mask", r->in.access_mask);
3325 ndr->depth--;
3327 if (flags & NDR_OUT) {
3328 ndr_print_struct(ndr, "out", "svcctl_OpenSCManagerW");
3329 ndr->depth++;
3330 ndr_print_ptr(ndr, "handle", r->out.handle);
3331 ndr->depth++;
3332 ndr_print_policy_handle(ndr, "handle", r->out.handle);
3333 ndr->depth--;
3334 ndr_print_WERROR(ndr, "result", r->out.result);
3335 ndr->depth--;
3337 ndr->depth--;
3340 static enum ndr_err_code ndr_push_svcctl_OpenServiceW(struct ndr_push *ndr, int flags, const struct svcctl_OpenServiceW *r)
3342 if (flags & NDR_IN) {
3343 if (r->in.scmanager_handle == NULL) {
3344 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
3346 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.scmanager_handle));
3347 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.ServiceName, CH_UTF16)));
3348 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0));
3349 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.ServiceName, CH_UTF16)));
3350 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.ServiceName, ndr_charset_length(r->in.ServiceName, CH_UTF16), sizeof(uint16_t), CH_UTF16));
3351 NDR_CHECK(ndr_push_svcctl_ServiceAccessMask(ndr, NDR_SCALARS, r->in.access_mask));
3353 if (flags & NDR_OUT) {
3354 if (r->out.handle == NULL) {
3355 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
3357 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->out.handle));
3358 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
3360 return NDR_ERR_SUCCESS;
3363 static enum ndr_err_code ndr_pull_svcctl_OpenServiceW(struct ndr_pull *ndr, int flags, struct svcctl_OpenServiceW *r)
3365 uint32_t size_ServiceName_0 = 0;
3366 uint32_t length_ServiceName_0 = 0;
3367 TALLOC_CTX *_mem_save_scmanager_handle_0;
3368 TALLOC_CTX *_mem_save_handle_0;
3369 if (flags & NDR_IN) {
3370 ZERO_STRUCT(r->out);
3372 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
3373 NDR_PULL_ALLOC(ndr, r->in.scmanager_handle);
3375 _mem_save_scmanager_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
3376 NDR_PULL_SET_MEM_CTX(ndr, r->in.scmanager_handle, LIBNDR_FLAG_REF_ALLOC);
3377 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.scmanager_handle));
3378 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_scmanager_handle_0, LIBNDR_FLAG_REF_ALLOC);
3379 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.ServiceName));
3380 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.ServiceName));
3381 size_ServiceName_0 = ndr_get_array_size(ndr, &r->in.ServiceName);
3382 length_ServiceName_0 = ndr_get_array_length(ndr, &r->in.ServiceName);
3383 if (length_ServiceName_0 > size_ServiceName_0) {
3384 return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", size_ServiceName_0, length_ServiceName_0);
3386 NDR_CHECK(ndr_check_string_terminator(ndr, length_ServiceName_0, sizeof(uint16_t)));
3387 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.ServiceName, length_ServiceName_0, sizeof(uint16_t), CH_UTF16));
3388 NDR_CHECK(ndr_pull_svcctl_ServiceAccessMask(ndr, NDR_SCALARS, &r->in.access_mask));
3389 NDR_PULL_ALLOC(ndr, r->out.handle);
3390 ZERO_STRUCTP(r->out.handle);
3392 if (flags & NDR_OUT) {
3393 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
3394 NDR_PULL_ALLOC(ndr, r->out.handle);
3396 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
3397 NDR_PULL_SET_MEM_CTX(ndr, r->out.handle, LIBNDR_FLAG_REF_ALLOC);
3398 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->out.handle));
3399 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
3400 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
3402 return NDR_ERR_SUCCESS;
3405 _PUBLIC_ void ndr_print_svcctl_OpenServiceW(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_OpenServiceW *r)
3407 ndr_print_struct(ndr, name, "svcctl_OpenServiceW");
3408 ndr->depth++;
3409 if (flags & NDR_SET_VALUES) {
3410 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
3412 if (flags & NDR_IN) {
3413 ndr_print_struct(ndr, "in", "svcctl_OpenServiceW");
3414 ndr->depth++;
3415 ndr_print_ptr(ndr, "scmanager_handle", r->in.scmanager_handle);
3416 ndr->depth++;
3417 ndr_print_policy_handle(ndr, "scmanager_handle", r->in.scmanager_handle);
3418 ndr->depth--;
3419 ndr_print_string(ndr, "ServiceName", r->in.ServiceName);
3420 ndr_print_svcctl_ServiceAccessMask(ndr, "access_mask", r->in.access_mask);
3421 ndr->depth--;
3423 if (flags & NDR_OUT) {
3424 ndr_print_struct(ndr, "out", "svcctl_OpenServiceW");
3425 ndr->depth++;
3426 ndr_print_ptr(ndr, "handle", r->out.handle);
3427 ndr->depth++;
3428 ndr_print_policy_handle(ndr, "handle", r->out.handle);
3429 ndr->depth--;
3430 ndr_print_WERROR(ndr, "result", r->out.result);
3431 ndr->depth--;
3433 ndr->depth--;
3436 static enum ndr_err_code ndr_push_svcctl_QueryServiceConfigW(struct ndr_push *ndr, int flags, const struct svcctl_QueryServiceConfigW *r)
3438 if (flags & NDR_IN) {
3439 if (r->in.handle == NULL) {
3440 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
3442 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
3443 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.offered));
3445 if (flags & NDR_OUT) {
3446 if (r->out.query == NULL) {
3447 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
3449 NDR_CHECK(ndr_push_QUERY_SERVICE_CONFIG(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.query));
3450 if (r->out.needed == NULL) {
3451 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
3453 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.needed));
3454 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
3456 return NDR_ERR_SUCCESS;
3459 static enum ndr_err_code ndr_pull_svcctl_QueryServiceConfigW(struct ndr_pull *ndr, int flags, struct svcctl_QueryServiceConfigW *r)
3461 TALLOC_CTX *_mem_save_handle_0;
3462 TALLOC_CTX *_mem_save_query_0;
3463 TALLOC_CTX *_mem_save_needed_0;
3464 if (flags & NDR_IN) {
3465 ZERO_STRUCT(r->out);
3467 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
3468 NDR_PULL_ALLOC(ndr, r->in.handle);
3470 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
3471 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
3472 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
3473 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
3474 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.offered));
3475 if (r->in.offered > 8192) {
3476 return ndr_pull_error(ndr, NDR_ERR_RANGE, "value out of range");
3478 NDR_PULL_ALLOC(ndr, r->out.query);
3479 ZERO_STRUCTP(r->out.query);
3480 NDR_PULL_ALLOC(ndr, r->out.needed);
3481 ZERO_STRUCTP(r->out.needed);
3483 if (flags & NDR_OUT) {
3484 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
3485 NDR_PULL_ALLOC(ndr, r->out.query);
3487 _mem_save_query_0 = NDR_PULL_GET_MEM_CTX(ndr);
3488 NDR_PULL_SET_MEM_CTX(ndr, r->out.query, LIBNDR_FLAG_REF_ALLOC);
3489 NDR_CHECK(ndr_pull_QUERY_SERVICE_CONFIG(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.query));
3490 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_query_0, LIBNDR_FLAG_REF_ALLOC);
3491 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
3492 NDR_PULL_ALLOC(ndr, r->out.needed);
3494 _mem_save_needed_0 = NDR_PULL_GET_MEM_CTX(ndr);
3495 NDR_PULL_SET_MEM_CTX(ndr, r->out.needed, LIBNDR_FLAG_REF_ALLOC);
3496 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.needed));
3497 if (*r->out.needed > 8192) {
3498 return ndr_pull_error(ndr, NDR_ERR_RANGE, "value out of range");
3500 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_needed_0, LIBNDR_FLAG_REF_ALLOC);
3501 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
3503 return NDR_ERR_SUCCESS;
3506 _PUBLIC_ void ndr_print_svcctl_QueryServiceConfigW(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_QueryServiceConfigW *r)
3508 ndr_print_struct(ndr, name, "svcctl_QueryServiceConfigW");
3509 ndr->depth++;
3510 if (flags & NDR_SET_VALUES) {
3511 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
3513 if (flags & NDR_IN) {
3514 ndr_print_struct(ndr, "in", "svcctl_QueryServiceConfigW");
3515 ndr->depth++;
3516 ndr_print_ptr(ndr, "handle", r->in.handle);
3517 ndr->depth++;
3518 ndr_print_policy_handle(ndr, "handle", r->in.handle);
3519 ndr->depth--;
3520 ndr_print_uint32(ndr, "offered", r->in.offered);
3521 ndr->depth--;
3523 if (flags & NDR_OUT) {
3524 ndr_print_struct(ndr, "out", "svcctl_QueryServiceConfigW");
3525 ndr->depth++;
3526 ndr_print_ptr(ndr, "query", r->out.query);
3527 ndr->depth++;
3528 ndr_print_QUERY_SERVICE_CONFIG(ndr, "query", r->out.query);
3529 ndr->depth--;
3530 ndr_print_ptr(ndr, "needed", r->out.needed);
3531 ndr->depth++;
3532 ndr_print_uint32(ndr, "needed", *r->out.needed);
3533 ndr->depth--;
3534 ndr_print_WERROR(ndr, "result", r->out.result);
3535 ndr->depth--;
3537 ndr->depth--;
3540 static enum ndr_err_code ndr_push_svcctl_QueryServiceLockStatusW(struct ndr_push *ndr, int flags, const struct svcctl_QueryServiceLockStatusW *r)
3542 if (flags & NDR_IN) {
3543 if (r->in.handle == NULL) {
3544 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
3546 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
3547 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.offered));
3549 if (flags & NDR_OUT) {
3550 if (r->out.lock_status == NULL) {
3551 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
3553 NDR_CHECK(ndr_push_SERVICE_LOCK_STATUS(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.lock_status));
3554 if (r->out.needed == NULL) {
3555 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
3557 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.needed));
3558 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
3560 return NDR_ERR_SUCCESS;
3563 static enum ndr_err_code ndr_pull_svcctl_QueryServiceLockStatusW(struct ndr_pull *ndr, int flags, struct svcctl_QueryServiceLockStatusW *r)
3565 TALLOC_CTX *_mem_save_handle_0;
3566 TALLOC_CTX *_mem_save_lock_status_0;
3567 TALLOC_CTX *_mem_save_needed_0;
3568 if (flags & NDR_IN) {
3569 ZERO_STRUCT(r->out);
3571 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
3572 NDR_PULL_ALLOC(ndr, r->in.handle);
3574 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
3575 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
3576 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
3577 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
3578 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.offered));
3579 NDR_PULL_ALLOC(ndr, r->out.lock_status);
3580 ZERO_STRUCTP(r->out.lock_status);
3581 NDR_PULL_ALLOC(ndr, r->out.needed);
3582 ZERO_STRUCTP(r->out.needed);
3584 if (flags & NDR_OUT) {
3585 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
3586 NDR_PULL_ALLOC(ndr, r->out.lock_status);
3588 _mem_save_lock_status_0 = NDR_PULL_GET_MEM_CTX(ndr);
3589 NDR_PULL_SET_MEM_CTX(ndr, r->out.lock_status, LIBNDR_FLAG_REF_ALLOC);
3590 NDR_CHECK(ndr_pull_SERVICE_LOCK_STATUS(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.lock_status));
3591 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_lock_status_0, LIBNDR_FLAG_REF_ALLOC);
3592 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
3593 NDR_PULL_ALLOC(ndr, r->out.needed);
3595 _mem_save_needed_0 = NDR_PULL_GET_MEM_CTX(ndr);
3596 NDR_PULL_SET_MEM_CTX(ndr, r->out.needed, LIBNDR_FLAG_REF_ALLOC);
3597 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.needed));
3598 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_needed_0, LIBNDR_FLAG_REF_ALLOC);
3599 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
3601 return NDR_ERR_SUCCESS;
3604 _PUBLIC_ void ndr_print_svcctl_QueryServiceLockStatusW(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_QueryServiceLockStatusW *r)
3606 ndr_print_struct(ndr, name, "svcctl_QueryServiceLockStatusW");
3607 ndr->depth++;
3608 if (flags & NDR_SET_VALUES) {
3609 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
3611 if (flags & NDR_IN) {
3612 ndr_print_struct(ndr, "in", "svcctl_QueryServiceLockStatusW");
3613 ndr->depth++;
3614 ndr_print_ptr(ndr, "handle", r->in.handle);
3615 ndr->depth++;
3616 ndr_print_policy_handle(ndr, "handle", r->in.handle);
3617 ndr->depth--;
3618 ndr_print_uint32(ndr, "offered", r->in.offered);
3619 ndr->depth--;
3621 if (flags & NDR_OUT) {
3622 ndr_print_struct(ndr, "out", "svcctl_QueryServiceLockStatusW");
3623 ndr->depth++;
3624 ndr_print_ptr(ndr, "lock_status", r->out.lock_status);
3625 ndr->depth++;
3626 ndr_print_SERVICE_LOCK_STATUS(ndr, "lock_status", r->out.lock_status);
3627 ndr->depth--;
3628 ndr_print_ptr(ndr, "needed", r->out.needed);
3629 ndr->depth++;
3630 ndr_print_uint32(ndr, "needed", *r->out.needed);
3631 ndr->depth--;
3632 ndr_print_WERROR(ndr, "result", r->out.result);
3633 ndr->depth--;
3635 ndr->depth--;
3638 static enum ndr_err_code ndr_push_svcctl_StartServiceW(struct ndr_push *ndr, int flags, const struct svcctl_StartServiceW *r)
3640 uint32_t cntr_Arguments_1;
3641 if (flags & NDR_IN) {
3642 if (r->in.handle == NULL) {
3643 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
3645 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
3646 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.NumArgs));
3647 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.Arguments));
3648 if (r->in.Arguments) {
3649 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, r->in.NumArgs));
3650 for (cntr_Arguments_1 = 0; cntr_Arguments_1 < r->in.NumArgs; cntr_Arguments_1++) {
3651 NDR_CHECK(ndr_push_svcctl_ArgumentString(ndr, NDR_SCALARS, &r->in.Arguments[cntr_Arguments_1]));
3653 for (cntr_Arguments_1 = 0; cntr_Arguments_1 < r->in.NumArgs; cntr_Arguments_1++) {
3654 NDR_CHECK(ndr_push_svcctl_ArgumentString(ndr, NDR_BUFFERS, &r->in.Arguments[cntr_Arguments_1]));
3658 if (flags & NDR_OUT) {
3659 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
3661 return NDR_ERR_SUCCESS;
3664 static enum ndr_err_code ndr_pull_svcctl_StartServiceW(struct ndr_pull *ndr, int flags, struct svcctl_StartServiceW *r)
3666 uint32_t _ptr_Arguments;
3667 uint32_t size_Arguments_1 = 0;
3668 uint32_t cntr_Arguments_1;
3669 TALLOC_CTX *_mem_save_handle_0;
3670 TALLOC_CTX *_mem_save_Arguments_0;
3671 TALLOC_CTX *_mem_save_Arguments_1;
3672 if (flags & NDR_IN) {
3673 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
3674 NDR_PULL_ALLOC(ndr, r->in.handle);
3676 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
3677 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
3678 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
3679 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
3680 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.NumArgs));
3681 if (r->in.NumArgs > SC_MAX_ARGUMENTS) {
3682 return ndr_pull_error(ndr, NDR_ERR_RANGE, "value out of range");
3684 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_Arguments));
3685 if (_ptr_Arguments) {
3686 NDR_PULL_ALLOC(ndr, r->in.Arguments);
3687 } else {
3688 r->in.Arguments = NULL;
3690 if (r->in.Arguments) {
3691 _mem_save_Arguments_0 = NDR_PULL_GET_MEM_CTX(ndr);
3692 NDR_PULL_SET_MEM_CTX(ndr, r->in.Arguments, 0);
3693 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.Arguments));
3694 size_Arguments_1 = ndr_get_array_size(ndr, &r->in.Arguments);
3695 NDR_PULL_ALLOC_N(ndr, r->in.Arguments, size_Arguments_1);
3696 _mem_save_Arguments_1 = NDR_PULL_GET_MEM_CTX(ndr);
3697 NDR_PULL_SET_MEM_CTX(ndr, r->in.Arguments, 0);
3698 for (cntr_Arguments_1 = 0; cntr_Arguments_1 < size_Arguments_1; cntr_Arguments_1++) {
3699 NDR_CHECK(ndr_pull_svcctl_ArgumentString(ndr, NDR_SCALARS, &r->in.Arguments[cntr_Arguments_1]));
3701 for (cntr_Arguments_1 = 0; cntr_Arguments_1 < size_Arguments_1; cntr_Arguments_1++) {
3702 NDR_CHECK(ndr_pull_svcctl_ArgumentString(ndr, NDR_BUFFERS, &r->in.Arguments[cntr_Arguments_1]));
3704 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_Arguments_1, 0);
3705 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_Arguments_0, 0);
3707 if (r->in.Arguments) {
3708 NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->in.Arguments, r->in.NumArgs));
3711 if (flags & NDR_OUT) {
3712 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
3714 return NDR_ERR_SUCCESS;
3717 _PUBLIC_ void ndr_print_svcctl_StartServiceW(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_StartServiceW *r)
3719 uint32_t cntr_Arguments_1;
3720 ndr_print_struct(ndr, name, "svcctl_StartServiceW");
3721 ndr->depth++;
3722 if (flags & NDR_SET_VALUES) {
3723 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
3725 if (flags & NDR_IN) {
3726 ndr_print_struct(ndr, "in", "svcctl_StartServiceW");
3727 ndr->depth++;
3728 ndr_print_ptr(ndr, "handle", r->in.handle);
3729 ndr->depth++;
3730 ndr_print_policy_handle(ndr, "handle", r->in.handle);
3731 ndr->depth--;
3732 ndr_print_uint32(ndr, "NumArgs", r->in.NumArgs);
3733 ndr_print_ptr(ndr, "Arguments", r->in.Arguments);
3734 ndr->depth++;
3735 if (r->in.Arguments) {
3736 ndr->print(ndr, "%s: ARRAY(%d)", "Arguments", (int)r->in.NumArgs);
3737 ndr->depth++;
3738 for (cntr_Arguments_1=0;cntr_Arguments_1<r->in.NumArgs;cntr_Arguments_1++) {
3739 char *idx_1=NULL;
3740 if (asprintf(&idx_1, "[%d]", cntr_Arguments_1) != -1) {
3741 ndr_print_svcctl_ArgumentString(ndr, "Arguments", &r->in.Arguments[cntr_Arguments_1]);
3742 free(idx_1);
3745 ndr->depth--;
3747 ndr->depth--;
3748 ndr->depth--;
3750 if (flags & NDR_OUT) {
3751 ndr_print_struct(ndr, "out", "svcctl_StartServiceW");
3752 ndr->depth++;
3753 ndr_print_WERROR(ndr, "result", r->out.result);
3754 ndr->depth--;
3756 ndr->depth--;
3759 static enum ndr_err_code ndr_push_svcctl_GetServiceDisplayNameW(struct ndr_push *ndr, int flags, const struct svcctl_GetServiceDisplayNameW *r)
3761 if (flags & NDR_IN) {
3762 if (r->in.handle == NULL) {
3763 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
3765 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
3766 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.service_name));
3767 if (r->in.service_name) {
3768 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.service_name, CH_UTF16)));
3769 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0));
3770 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.service_name, CH_UTF16)));
3771 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));
3773 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.display_name_length));
3774 if (r->in.display_name_length) {
3775 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->in.display_name_length));
3778 if (flags & NDR_OUT) {
3779 if (r->out.display_name == NULL) {
3780 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
3782 NDR_CHECK(ndr_push_unique_ptr(ndr, *r->out.display_name));
3783 if (*r->out.display_name) {
3784 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(*r->out.display_name, CH_UTF16)));
3785 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0));
3786 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(*r->out.display_name, CH_UTF16)));
3787 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));
3789 NDR_CHECK(ndr_push_unique_ptr(ndr, r->out.display_name_length));
3790 if (r->out.display_name_length) {
3791 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.display_name_length));
3793 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
3795 return NDR_ERR_SUCCESS;
3798 static enum ndr_err_code ndr_pull_svcctl_GetServiceDisplayNameW(struct ndr_pull *ndr, int flags, struct svcctl_GetServiceDisplayNameW *r)
3800 uint32_t _ptr_service_name;
3801 uint32_t size_service_name_1 = 0;
3802 uint32_t length_service_name_1 = 0;
3803 uint32_t _ptr_display_name;
3804 uint32_t size_display_name_2 = 0;
3805 uint32_t length_display_name_2 = 0;
3806 uint32_t _ptr_display_name_length;
3807 TALLOC_CTX *_mem_save_handle_0;
3808 TALLOC_CTX *_mem_save_service_name_0;
3809 TALLOC_CTX *_mem_save_display_name_0;
3810 TALLOC_CTX *_mem_save_display_name_1;
3811 TALLOC_CTX *_mem_save_display_name_length_0;
3812 if (flags & NDR_IN) {
3813 ZERO_STRUCT(r->out);
3815 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
3816 NDR_PULL_ALLOC(ndr, r->in.handle);
3818 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
3819 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
3820 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
3821 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
3822 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_service_name));
3823 if (_ptr_service_name) {
3824 NDR_PULL_ALLOC(ndr, r->in.service_name);
3825 } else {
3826 r->in.service_name = NULL;
3828 if (r->in.service_name) {
3829 _mem_save_service_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
3830 NDR_PULL_SET_MEM_CTX(ndr, r->in.service_name, 0);
3831 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.service_name));
3832 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.service_name));
3833 size_service_name_1 = ndr_get_array_size(ndr, &r->in.service_name);
3834 length_service_name_1 = ndr_get_array_length(ndr, &r->in.service_name);
3835 if (length_service_name_1 > size_service_name_1) {
3836 return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", size_service_name_1, length_service_name_1);
3838 NDR_CHECK(ndr_check_string_terminator(ndr, length_service_name_1, sizeof(uint16_t)));
3839 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.service_name, length_service_name_1, sizeof(uint16_t), CH_UTF16));
3840 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_service_name_0, 0);
3842 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_display_name_length));
3843 if (_ptr_display_name_length) {
3844 NDR_PULL_ALLOC(ndr, r->in.display_name_length);
3845 } else {
3846 r->in.display_name_length = NULL;
3848 if (r->in.display_name_length) {
3849 _mem_save_display_name_length_0 = NDR_PULL_GET_MEM_CTX(ndr);
3850 NDR_PULL_SET_MEM_CTX(ndr, r->in.display_name_length, 0);
3851 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->in.display_name_length));
3852 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_display_name_length_0, 0);
3854 NDR_PULL_ALLOC(ndr, r->out.display_name);
3855 ZERO_STRUCTP(r->out.display_name);
3857 if (flags & NDR_OUT) {
3858 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
3859 NDR_PULL_ALLOC(ndr, r->out.display_name);
3861 _mem_save_display_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
3862 NDR_PULL_SET_MEM_CTX(ndr, r->out.display_name, LIBNDR_FLAG_REF_ALLOC);
3863 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_display_name));
3864 if (_ptr_display_name) {
3865 NDR_PULL_ALLOC(ndr, *r->out.display_name);
3866 } else {
3867 *r->out.display_name = NULL;
3869 if (*r->out.display_name) {
3870 _mem_save_display_name_1 = NDR_PULL_GET_MEM_CTX(ndr);
3871 NDR_PULL_SET_MEM_CTX(ndr, *r->out.display_name, 0);
3872 NDR_CHECK(ndr_pull_array_size(ndr, r->out.display_name));
3873 NDR_CHECK(ndr_pull_array_length(ndr, r->out.display_name));
3874 size_display_name_2 = ndr_get_array_size(ndr, r->out.display_name);
3875 length_display_name_2 = ndr_get_array_length(ndr, r->out.display_name);
3876 if (length_display_name_2 > size_display_name_2) {
3877 return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", size_display_name_2, length_display_name_2);
3879 NDR_CHECK(ndr_check_string_terminator(ndr, length_display_name_2, sizeof(uint16_t)));
3880 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, r->out.display_name, length_display_name_2, sizeof(uint16_t), CH_UTF16));
3881 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_display_name_1, 0);
3883 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_display_name_0, LIBNDR_FLAG_REF_ALLOC);
3884 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_display_name_length));
3885 if (_ptr_display_name_length) {
3886 NDR_PULL_ALLOC(ndr, r->out.display_name_length);
3887 } else {
3888 r->out.display_name_length = NULL;
3890 if (r->out.display_name_length) {
3891 _mem_save_display_name_length_0 = NDR_PULL_GET_MEM_CTX(ndr);
3892 NDR_PULL_SET_MEM_CTX(ndr, r->out.display_name_length, 0);
3893 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.display_name_length));
3894 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_display_name_length_0, 0);
3896 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
3898 return NDR_ERR_SUCCESS;
3901 _PUBLIC_ void ndr_print_svcctl_GetServiceDisplayNameW(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_GetServiceDisplayNameW *r)
3903 ndr_print_struct(ndr, name, "svcctl_GetServiceDisplayNameW");
3904 ndr->depth++;
3905 if (flags & NDR_SET_VALUES) {
3906 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
3908 if (flags & NDR_IN) {
3909 ndr_print_struct(ndr, "in", "svcctl_GetServiceDisplayNameW");
3910 ndr->depth++;
3911 ndr_print_ptr(ndr, "handle", r->in.handle);
3912 ndr->depth++;
3913 ndr_print_policy_handle(ndr, "handle", r->in.handle);
3914 ndr->depth--;
3915 ndr_print_ptr(ndr, "service_name", r->in.service_name);
3916 ndr->depth++;
3917 if (r->in.service_name) {
3918 ndr_print_string(ndr, "service_name", r->in.service_name);
3920 ndr->depth--;
3921 ndr_print_ptr(ndr, "display_name_length", r->in.display_name_length);
3922 ndr->depth++;
3923 if (r->in.display_name_length) {
3924 ndr_print_uint32(ndr, "display_name_length", *r->in.display_name_length);
3926 ndr->depth--;
3927 ndr->depth--;
3929 if (flags & NDR_OUT) {
3930 ndr_print_struct(ndr, "out", "svcctl_GetServiceDisplayNameW");
3931 ndr->depth++;
3932 ndr_print_ptr(ndr, "display_name", r->out.display_name);
3933 ndr->depth++;
3934 ndr_print_ptr(ndr, "display_name", *r->out.display_name);
3935 ndr->depth++;
3936 if (*r->out.display_name) {
3937 ndr_print_string(ndr, "display_name", *r->out.display_name);
3939 ndr->depth--;
3940 ndr->depth--;
3941 ndr_print_ptr(ndr, "display_name_length", r->out.display_name_length);
3942 ndr->depth++;
3943 if (r->out.display_name_length) {
3944 ndr_print_uint32(ndr, "display_name_length", *r->out.display_name_length);
3946 ndr->depth--;
3947 ndr_print_WERROR(ndr, "result", r->out.result);
3948 ndr->depth--;
3950 ndr->depth--;
3953 static enum ndr_err_code ndr_push_svcctl_GetServiceKeyNameW(struct ndr_push *ndr, int flags, const struct svcctl_GetServiceKeyNameW *r)
3955 if (flags & NDR_IN) {
3956 if (r->in.handle == NULL) {
3957 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
3959 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
3960 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.service_name));
3961 if (r->in.service_name) {
3962 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.service_name, CH_UTF16)));
3963 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0));
3964 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.service_name, CH_UTF16)));
3965 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));
3967 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.display_name_length));
3968 if (r->in.display_name_length) {
3969 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->in.display_name_length));
3972 if (flags & NDR_OUT) {
3973 if (r->out.key_name == NULL) {
3974 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
3976 NDR_CHECK(ndr_push_unique_ptr(ndr, *r->out.key_name));
3977 if (*r->out.key_name) {
3978 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(*r->out.key_name, CH_UTF16)));
3979 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0));
3980 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(*r->out.key_name, CH_UTF16)));
3981 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));
3983 NDR_CHECK(ndr_push_unique_ptr(ndr, r->out.display_name_length));
3984 if (r->out.display_name_length) {
3985 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.display_name_length));
3987 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
3989 return NDR_ERR_SUCCESS;
3992 static enum ndr_err_code ndr_pull_svcctl_GetServiceKeyNameW(struct ndr_pull *ndr, int flags, struct svcctl_GetServiceKeyNameW *r)
3994 uint32_t _ptr_service_name;
3995 uint32_t size_service_name_1 = 0;
3996 uint32_t length_service_name_1 = 0;
3997 uint32_t _ptr_key_name;
3998 uint32_t size_key_name_2 = 0;
3999 uint32_t length_key_name_2 = 0;
4000 uint32_t _ptr_display_name_length;
4001 TALLOC_CTX *_mem_save_handle_0;
4002 TALLOC_CTX *_mem_save_service_name_0;
4003 TALLOC_CTX *_mem_save_key_name_0;
4004 TALLOC_CTX *_mem_save_key_name_1;
4005 TALLOC_CTX *_mem_save_display_name_length_0;
4006 if (flags & NDR_IN) {
4007 ZERO_STRUCT(r->out);
4009 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
4010 NDR_PULL_ALLOC(ndr, r->in.handle);
4012 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
4013 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
4014 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
4015 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
4016 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_service_name));
4017 if (_ptr_service_name) {
4018 NDR_PULL_ALLOC(ndr, r->in.service_name);
4019 } else {
4020 r->in.service_name = NULL;
4022 if (r->in.service_name) {
4023 _mem_save_service_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
4024 NDR_PULL_SET_MEM_CTX(ndr, r->in.service_name, 0);
4025 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.service_name));
4026 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.service_name));
4027 size_service_name_1 = ndr_get_array_size(ndr, &r->in.service_name);
4028 length_service_name_1 = ndr_get_array_length(ndr, &r->in.service_name);
4029 if (length_service_name_1 > size_service_name_1) {
4030 return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", size_service_name_1, length_service_name_1);
4032 NDR_CHECK(ndr_check_string_terminator(ndr, length_service_name_1, sizeof(uint16_t)));
4033 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.service_name, length_service_name_1, sizeof(uint16_t), CH_UTF16));
4034 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_service_name_0, 0);
4036 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_display_name_length));
4037 if (_ptr_display_name_length) {
4038 NDR_PULL_ALLOC(ndr, r->in.display_name_length);
4039 } else {
4040 r->in.display_name_length = NULL;
4042 if (r->in.display_name_length) {
4043 _mem_save_display_name_length_0 = NDR_PULL_GET_MEM_CTX(ndr);
4044 NDR_PULL_SET_MEM_CTX(ndr, r->in.display_name_length, 0);
4045 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->in.display_name_length));
4046 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_display_name_length_0, 0);
4048 NDR_PULL_ALLOC(ndr, r->out.key_name);
4049 ZERO_STRUCTP(r->out.key_name);
4051 if (flags & NDR_OUT) {
4052 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
4053 NDR_PULL_ALLOC(ndr, r->out.key_name);
4055 _mem_save_key_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
4056 NDR_PULL_SET_MEM_CTX(ndr, r->out.key_name, LIBNDR_FLAG_REF_ALLOC);
4057 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_key_name));
4058 if (_ptr_key_name) {
4059 NDR_PULL_ALLOC(ndr, *r->out.key_name);
4060 } else {
4061 *r->out.key_name = NULL;
4063 if (*r->out.key_name) {
4064 _mem_save_key_name_1 = NDR_PULL_GET_MEM_CTX(ndr);
4065 NDR_PULL_SET_MEM_CTX(ndr, *r->out.key_name, 0);
4066 NDR_CHECK(ndr_pull_array_size(ndr, r->out.key_name));
4067 NDR_CHECK(ndr_pull_array_length(ndr, r->out.key_name));
4068 size_key_name_2 = ndr_get_array_size(ndr, r->out.key_name);
4069 length_key_name_2 = ndr_get_array_length(ndr, r->out.key_name);
4070 if (length_key_name_2 > size_key_name_2) {
4071 return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", size_key_name_2, length_key_name_2);
4073 NDR_CHECK(ndr_check_string_terminator(ndr, length_key_name_2, sizeof(uint16_t)));
4074 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, r->out.key_name, length_key_name_2, sizeof(uint16_t), CH_UTF16));
4075 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_key_name_1, 0);
4077 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_key_name_0, LIBNDR_FLAG_REF_ALLOC);
4078 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_display_name_length));
4079 if (_ptr_display_name_length) {
4080 NDR_PULL_ALLOC(ndr, r->out.display_name_length);
4081 } else {
4082 r->out.display_name_length = NULL;
4084 if (r->out.display_name_length) {
4085 _mem_save_display_name_length_0 = NDR_PULL_GET_MEM_CTX(ndr);
4086 NDR_PULL_SET_MEM_CTX(ndr, r->out.display_name_length, 0);
4087 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.display_name_length));
4088 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_display_name_length_0, 0);
4090 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
4092 return NDR_ERR_SUCCESS;
4095 _PUBLIC_ void ndr_print_svcctl_GetServiceKeyNameW(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_GetServiceKeyNameW *r)
4097 ndr_print_struct(ndr, name, "svcctl_GetServiceKeyNameW");
4098 ndr->depth++;
4099 if (flags & NDR_SET_VALUES) {
4100 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
4102 if (flags & NDR_IN) {
4103 ndr_print_struct(ndr, "in", "svcctl_GetServiceKeyNameW");
4104 ndr->depth++;
4105 ndr_print_ptr(ndr, "handle", r->in.handle);
4106 ndr->depth++;
4107 ndr_print_policy_handle(ndr, "handle", r->in.handle);
4108 ndr->depth--;
4109 ndr_print_ptr(ndr, "service_name", r->in.service_name);
4110 ndr->depth++;
4111 if (r->in.service_name) {
4112 ndr_print_string(ndr, "service_name", r->in.service_name);
4114 ndr->depth--;
4115 ndr_print_ptr(ndr, "display_name_length", r->in.display_name_length);
4116 ndr->depth++;
4117 if (r->in.display_name_length) {
4118 ndr_print_uint32(ndr, "display_name_length", *r->in.display_name_length);
4120 ndr->depth--;
4121 ndr->depth--;
4123 if (flags & NDR_OUT) {
4124 ndr_print_struct(ndr, "out", "svcctl_GetServiceKeyNameW");
4125 ndr->depth++;
4126 ndr_print_ptr(ndr, "key_name", r->out.key_name);
4127 ndr->depth++;
4128 ndr_print_ptr(ndr, "key_name", *r->out.key_name);
4129 ndr->depth++;
4130 if (*r->out.key_name) {
4131 ndr_print_string(ndr, "key_name", *r->out.key_name);
4133 ndr->depth--;
4134 ndr->depth--;
4135 ndr_print_ptr(ndr, "display_name_length", r->out.display_name_length);
4136 ndr->depth++;
4137 if (r->out.display_name_length) {
4138 ndr_print_uint32(ndr, "display_name_length", *r->out.display_name_length);
4140 ndr->depth--;
4141 ndr_print_WERROR(ndr, "result", r->out.result);
4142 ndr->depth--;
4144 ndr->depth--;
4147 static enum ndr_err_code ndr_push_svcctl_SCSetServiceBitsA(struct ndr_push *ndr, int flags, const struct svcctl_SCSetServiceBitsA *r)
4149 if (flags & NDR_IN) {
4150 if (r->in.handle == NULL) {
4151 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
4153 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
4154 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.bits));
4155 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.bitson));
4156 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.immediate));
4158 if (flags & NDR_OUT) {
4159 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
4161 return NDR_ERR_SUCCESS;
4164 static enum ndr_err_code ndr_pull_svcctl_SCSetServiceBitsA(struct ndr_pull *ndr, int flags, struct svcctl_SCSetServiceBitsA *r)
4166 TALLOC_CTX *_mem_save_handle_0;
4167 if (flags & NDR_IN) {
4168 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
4169 NDR_PULL_ALLOC(ndr, r->in.handle);
4171 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
4172 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
4173 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
4174 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
4175 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.bits));
4176 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.bitson));
4177 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.immediate));
4179 if (flags & NDR_OUT) {
4180 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
4182 return NDR_ERR_SUCCESS;
4185 _PUBLIC_ void ndr_print_svcctl_SCSetServiceBitsA(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_SCSetServiceBitsA *r)
4187 ndr_print_struct(ndr, name, "svcctl_SCSetServiceBitsA");
4188 ndr->depth++;
4189 if (flags & NDR_SET_VALUES) {
4190 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
4192 if (flags & NDR_IN) {
4193 ndr_print_struct(ndr, "in", "svcctl_SCSetServiceBitsA");
4194 ndr->depth++;
4195 ndr_print_ptr(ndr, "handle", r->in.handle);
4196 ndr->depth++;
4197 ndr_print_policy_handle(ndr, "handle", r->in.handle);
4198 ndr->depth--;
4199 ndr_print_uint32(ndr, "bits", r->in.bits);
4200 ndr_print_uint32(ndr, "bitson", r->in.bitson);
4201 ndr_print_uint32(ndr, "immediate", r->in.immediate);
4202 ndr->depth--;
4204 if (flags & NDR_OUT) {
4205 ndr_print_struct(ndr, "out", "svcctl_SCSetServiceBitsA");
4206 ndr->depth++;
4207 ndr_print_WERROR(ndr, "result", r->out.result);
4208 ndr->depth--;
4210 ndr->depth--;
4213 static enum ndr_err_code ndr_push_svcctl_ChangeServiceConfigA(struct ndr_push *ndr, int flags, const struct svcctl_ChangeServiceConfigA *r)
4215 if (flags & NDR_IN) {
4216 if (r->in.handle == NULL) {
4217 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
4219 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
4220 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.type));
4221 NDR_CHECK(ndr_push_svcctl_StartType(ndr, NDR_SCALARS, r->in.start_type));
4222 NDR_CHECK(ndr_push_svcctl_ErrorControl(ndr, NDR_SCALARS, r->in.error_control));
4223 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.binary_path));
4224 if (r->in.binary_path) {
4225 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.binary_path, CH_UTF16)));
4226 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0));
4227 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.binary_path, CH_UTF16)));
4228 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));
4230 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.load_order_group));
4231 if (r->in.load_order_group) {
4232 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.load_order_group, CH_UTF16)));
4233 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0));
4234 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.load_order_group, CH_UTF16)));
4235 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));
4237 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.dependencies));
4238 if (r->in.dependencies) {
4239 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.dependencies, CH_UTF16)));
4240 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0));
4241 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.dependencies, CH_UTF16)));
4242 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.dependencies, ndr_charset_length(r->in.dependencies, CH_UTF16), sizeof(uint16_t), CH_UTF16));
4244 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.service_start_name));
4245 if (r->in.service_start_name) {
4246 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.service_start_name, CH_UTF16)));
4247 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0));
4248 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.service_start_name, CH_UTF16)));
4249 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));
4251 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.password));
4252 if (r->in.password) {
4253 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.password, CH_UTF16)));
4254 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0));
4255 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.password, CH_UTF16)));
4256 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.password, ndr_charset_length(r->in.password, CH_UTF16), sizeof(uint16_t), CH_UTF16));
4258 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.display_name));
4259 if (r->in.display_name) {
4260 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.display_name, CH_UTF16)));
4261 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0));
4262 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.display_name, CH_UTF16)));
4263 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));
4266 if (flags & NDR_OUT) {
4267 if (r->out.tag_id == NULL) {
4268 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
4270 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.tag_id));
4271 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
4273 return NDR_ERR_SUCCESS;
4276 static enum ndr_err_code ndr_pull_svcctl_ChangeServiceConfigA(struct ndr_pull *ndr, int flags, struct svcctl_ChangeServiceConfigA *r)
4278 uint32_t _ptr_binary_path;
4279 uint32_t size_binary_path_1 = 0;
4280 uint32_t length_binary_path_1 = 0;
4281 uint32_t _ptr_load_order_group;
4282 uint32_t size_load_order_group_1 = 0;
4283 uint32_t length_load_order_group_1 = 0;
4284 uint32_t _ptr_dependencies;
4285 uint32_t size_dependencies_1 = 0;
4286 uint32_t length_dependencies_1 = 0;
4287 uint32_t _ptr_service_start_name;
4288 uint32_t size_service_start_name_1 = 0;
4289 uint32_t length_service_start_name_1 = 0;
4290 uint32_t _ptr_password;
4291 uint32_t size_password_1 = 0;
4292 uint32_t length_password_1 = 0;
4293 uint32_t _ptr_display_name;
4294 uint32_t size_display_name_1 = 0;
4295 uint32_t length_display_name_1 = 0;
4296 TALLOC_CTX *_mem_save_handle_0;
4297 TALLOC_CTX *_mem_save_binary_path_0;
4298 TALLOC_CTX *_mem_save_load_order_group_0;
4299 TALLOC_CTX *_mem_save_tag_id_0;
4300 TALLOC_CTX *_mem_save_dependencies_0;
4301 TALLOC_CTX *_mem_save_service_start_name_0;
4302 TALLOC_CTX *_mem_save_password_0;
4303 TALLOC_CTX *_mem_save_display_name_0;
4304 if (flags & NDR_IN) {
4305 ZERO_STRUCT(r->out);
4307 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
4308 NDR_PULL_ALLOC(ndr, r->in.handle);
4310 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
4311 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
4312 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
4313 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
4314 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.type));
4315 NDR_CHECK(ndr_pull_svcctl_StartType(ndr, NDR_SCALARS, &r->in.start_type));
4316 NDR_CHECK(ndr_pull_svcctl_ErrorControl(ndr, NDR_SCALARS, &r->in.error_control));
4317 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_binary_path));
4318 if (_ptr_binary_path) {
4319 NDR_PULL_ALLOC(ndr, r->in.binary_path);
4320 } else {
4321 r->in.binary_path = NULL;
4323 if (r->in.binary_path) {
4324 _mem_save_binary_path_0 = NDR_PULL_GET_MEM_CTX(ndr);
4325 NDR_PULL_SET_MEM_CTX(ndr, r->in.binary_path, 0);
4326 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.binary_path));
4327 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.binary_path));
4328 size_binary_path_1 = ndr_get_array_size(ndr, &r->in.binary_path);
4329 length_binary_path_1 = ndr_get_array_length(ndr, &r->in.binary_path);
4330 if (length_binary_path_1 > size_binary_path_1) {
4331 return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", size_binary_path_1, length_binary_path_1);
4333 NDR_CHECK(ndr_check_string_terminator(ndr, length_binary_path_1, sizeof(uint16_t)));
4334 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.binary_path, length_binary_path_1, sizeof(uint16_t), CH_UTF16));
4335 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_binary_path_0, 0);
4337 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_load_order_group));
4338 if (_ptr_load_order_group) {
4339 NDR_PULL_ALLOC(ndr, r->in.load_order_group);
4340 } else {
4341 r->in.load_order_group = NULL;
4343 if (r->in.load_order_group) {
4344 _mem_save_load_order_group_0 = NDR_PULL_GET_MEM_CTX(ndr);
4345 NDR_PULL_SET_MEM_CTX(ndr, r->in.load_order_group, 0);
4346 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.load_order_group));
4347 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.load_order_group));
4348 size_load_order_group_1 = ndr_get_array_size(ndr, &r->in.load_order_group);
4349 length_load_order_group_1 = ndr_get_array_length(ndr, &r->in.load_order_group);
4350 if (length_load_order_group_1 > size_load_order_group_1) {
4351 return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", size_load_order_group_1, length_load_order_group_1);
4353 NDR_CHECK(ndr_check_string_terminator(ndr, length_load_order_group_1, sizeof(uint16_t)));
4354 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.load_order_group, length_load_order_group_1, sizeof(uint16_t), CH_UTF16));
4355 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_load_order_group_0, 0);
4357 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_dependencies));
4358 if (_ptr_dependencies) {
4359 NDR_PULL_ALLOC(ndr, r->in.dependencies);
4360 } else {
4361 r->in.dependencies = NULL;
4363 if (r->in.dependencies) {
4364 _mem_save_dependencies_0 = NDR_PULL_GET_MEM_CTX(ndr);
4365 NDR_PULL_SET_MEM_CTX(ndr, r->in.dependencies, 0);
4366 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.dependencies));
4367 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.dependencies));
4368 size_dependencies_1 = ndr_get_array_size(ndr, &r->in.dependencies);
4369 length_dependencies_1 = ndr_get_array_length(ndr, &r->in.dependencies);
4370 if (length_dependencies_1 > size_dependencies_1) {
4371 return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", size_dependencies_1, length_dependencies_1);
4373 NDR_CHECK(ndr_check_string_terminator(ndr, length_dependencies_1, sizeof(uint16_t)));
4374 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.dependencies, length_dependencies_1, sizeof(uint16_t), CH_UTF16));
4375 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_dependencies_0, 0);
4377 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_service_start_name));
4378 if (_ptr_service_start_name) {
4379 NDR_PULL_ALLOC(ndr, r->in.service_start_name);
4380 } else {
4381 r->in.service_start_name = NULL;
4383 if (r->in.service_start_name) {
4384 _mem_save_service_start_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
4385 NDR_PULL_SET_MEM_CTX(ndr, r->in.service_start_name, 0);
4386 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.service_start_name));
4387 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.service_start_name));
4388 size_service_start_name_1 = ndr_get_array_size(ndr, &r->in.service_start_name);
4389 length_service_start_name_1 = ndr_get_array_length(ndr, &r->in.service_start_name);
4390 if (length_service_start_name_1 > size_service_start_name_1) {
4391 return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", size_service_start_name_1, length_service_start_name_1);
4393 NDR_CHECK(ndr_check_string_terminator(ndr, length_service_start_name_1, sizeof(uint16_t)));
4394 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.service_start_name, length_service_start_name_1, sizeof(uint16_t), CH_UTF16));
4395 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_service_start_name_0, 0);
4397 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_password));
4398 if (_ptr_password) {
4399 NDR_PULL_ALLOC(ndr, r->in.password);
4400 } else {
4401 r->in.password = NULL;
4403 if (r->in.password) {
4404 _mem_save_password_0 = NDR_PULL_GET_MEM_CTX(ndr);
4405 NDR_PULL_SET_MEM_CTX(ndr, r->in.password, 0);
4406 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.password));
4407 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.password));
4408 size_password_1 = ndr_get_array_size(ndr, &r->in.password);
4409 length_password_1 = ndr_get_array_length(ndr, &r->in.password);
4410 if (length_password_1 > size_password_1) {
4411 return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", size_password_1, length_password_1);
4413 NDR_CHECK(ndr_check_string_terminator(ndr, length_password_1, sizeof(uint16_t)));
4414 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.password, length_password_1, sizeof(uint16_t), CH_UTF16));
4415 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_password_0, 0);
4417 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_display_name));
4418 if (_ptr_display_name) {
4419 NDR_PULL_ALLOC(ndr, r->in.display_name);
4420 } else {
4421 r->in.display_name = NULL;
4423 if (r->in.display_name) {
4424 _mem_save_display_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
4425 NDR_PULL_SET_MEM_CTX(ndr, r->in.display_name, 0);
4426 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.display_name));
4427 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.display_name));
4428 size_display_name_1 = ndr_get_array_size(ndr, &r->in.display_name);
4429 length_display_name_1 = ndr_get_array_length(ndr, &r->in.display_name);
4430 if (length_display_name_1 > size_display_name_1) {
4431 return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", size_display_name_1, length_display_name_1);
4433 NDR_CHECK(ndr_check_string_terminator(ndr, length_display_name_1, sizeof(uint16_t)));
4434 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.display_name, length_display_name_1, sizeof(uint16_t), CH_UTF16));
4435 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_display_name_0, 0);
4437 NDR_PULL_ALLOC(ndr, r->out.tag_id);
4438 ZERO_STRUCTP(r->out.tag_id);
4440 if (flags & NDR_OUT) {
4441 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
4442 NDR_PULL_ALLOC(ndr, r->out.tag_id);
4444 _mem_save_tag_id_0 = NDR_PULL_GET_MEM_CTX(ndr);
4445 NDR_PULL_SET_MEM_CTX(ndr, r->out.tag_id, LIBNDR_FLAG_REF_ALLOC);
4446 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.tag_id));
4447 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_tag_id_0, LIBNDR_FLAG_REF_ALLOC);
4448 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
4450 return NDR_ERR_SUCCESS;
4453 _PUBLIC_ void ndr_print_svcctl_ChangeServiceConfigA(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_ChangeServiceConfigA *r)
4455 ndr_print_struct(ndr, name, "svcctl_ChangeServiceConfigA");
4456 ndr->depth++;
4457 if (flags & NDR_SET_VALUES) {
4458 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
4460 if (flags & NDR_IN) {
4461 ndr_print_struct(ndr, "in", "svcctl_ChangeServiceConfigA");
4462 ndr->depth++;
4463 ndr_print_ptr(ndr, "handle", r->in.handle);
4464 ndr->depth++;
4465 ndr_print_policy_handle(ndr, "handle", r->in.handle);
4466 ndr->depth--;
4467 ndr_print_uint32(ndr, "type", r->in.type);
4468 ndr_print_svcctl_StartType(ndr, "start_type", r->in.start_type);
4469 ndr_print_svcctl_ErrorControl(ndr, "error_control", r->in.error_control);
4470 ndr_print_ptr(ndr, "binary_path", r->in.binary_path);
4471 ndr->depth++;
4472 if (r->in.binary_path) {
4473 ndr_print_string(ndr, "binary_path", r->in.binary_path);
4475 ndr->depth--;
4476 ndr_print_ptr(ndr, "load_order_group", r->in.load_order_group);
4477 ndr->depth++;
4478 if (r->in.load_order_group) {
4479 ndr_print_string(ndr, "load_order_group", r->in.load_order_group);
4481 ndr->depth--;
4482 ndr_print_ptr(ndr, "dependencies", r->in.dependencies);
4483 ndr->depth++;
4484 if (r->in.dependencies) {
4485 ndr_print_string(ndr, "dependencies", r->in.dependencies);
4487 ndr->depth--;
4488 ndr_print_ptr(ndr, "service_start_name", r->in.service_start_name);
4489 ndr->depth++;
4490 if (r->in.service_start_name) {
4491 ndr_print_string(ndr, "service_start_name", r->in.service_start_name);
4493 ndr->depth--;
4494 ndr_print_ptr(ndr, "password", r->in.password);
4495 ndr->depth++;
4496 if (r->in.password) {
4497 ndr_print_string(ndr, "password", r->in.password);
4499 ndr->depth--;
4500 ndr_print_ptr(ndr, "display_name", r->in.display_name);
4501 ndr->depth++;
4502 if (r->in.display_name) {
4503 ndr_print_string(ndr, "display_name", r->in.display_name);
4505 ndr->depth--;
4506 ndr->depth--;
4508 if (flags & NDR_OUT) {
4509 ndr_print_struct(ndr, "out", "svcctl_ChangeServiceConfigA");
4510 ndr->depth++;
4511 ndr_print_ptr(ndr, "tag_id", r->out.tag_id);
4512 ndr->depth++;
4513 ndr_print_uint32(ndr, "tag_id", *r->out.tag_id);
4514 ndr->depth--;
4515 ndr_print_WERROR(ndr, "result", r->out.result);
4516 ndr->depth--;
4518 ndr->depth--;
4521 static enum ndr_err_code ndr_push_svcctl_CreateServiceA(struct ndr_push *ndr, int flags, const struct svcctl_CreateServiceA *r)
4523 if (flags & NDR_IN) {
4524 if (r->in.handle == NULL) {
4525 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
4527 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
4528 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.ServiceName));
4529 if (r->in.ServiceName) {
4530 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.ServiceName, CH_UTF16)));
4531 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0));
4532 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.ServiceName, CH_UTF16)));
4533 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.ServiceName, ndr_charset_length(r->in.ServiceName, CH_UTF16), sizeof(uint16_t), CH_UTF16));
4535 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.DisplayName));
4536 if (r->in.DisplayName) {
4537 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.DisplayName, CH_UTF16)));
4538 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0));
4539 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.DisplayName, CH_UTF16)));
4540 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.DisplayName, ndr_charset_length(r->in.DisplayName, CH_UTF16), sizeof(uint16_t), CH_UTF16));
4542 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.desired_access));
4543 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.type));
4544 NDR_CHECK(ndr_push_svcctl_StartType(ndr, NDR_SCALARS, r->in.start_type));
4545 NDR_CHECK(ndr_push_svcctl_ErrorControl(ndr, NDR_SCALARS, r->in.error_control));
4546 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.binary_path));
4547 if (r->in.binary_path) {
4548 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.binary_path, CH_UTF16)));
4549 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0));
4550 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.binary_path, CH_UTF16)));
4551 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));
4553 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.LoadOrderGroupKey));
4554 if (r->in.LoadOrderGroupKey) {
4555 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.LoadOrderGroupKey, CH_UTF16)));
4556 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0));
4557 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.LoadOrderGroupKey, CH_UTF16)));
4558 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.LoadOrderGroupKey, ndr_charset_length(r->in.LoadOrderGroupKey, CH_UTF16), sizeof(uint16_t), CH_UTF16));
4560 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.dependencies));
4561 if (r->in.dependencies) {
4562 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.dependencies, CH_UTF16)));
4563 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0));
4564 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.dependencies, CH_UTF16)));
4565 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.dependencies, ndr_charset_length(r->in.dependencies, CH_UTF16), sizeof(uint16_t), CH_UTF16));
4567 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.service_start_name));
4568 if (r->in.service_start_name) {
4569 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.service_start_name, CH_UTF16)));
4570 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0));
4571 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.service_start_name, CH_UTF16)));
4572 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));
4574 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.password));
4575 if (r->in.password) {
4576 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.password, CH_UTF16)));
4577 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0));
4578 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.password, CH_UTF16)));
4579 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.password, ndr_charset_length(r->in.password, CH_UTF16), sizeof(uint16_t), CH_UTF16));
4582 if (flags & NDR_OUT) {
4583 NDR_CHECK(ndr_push_unique_ptr(ndr, r->out.TagId));
4584 if (r->out.TagId) {
4585 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.TagId));
4587 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
4589 return NDR_ERR_SUCCESS;
4592 static enum ndr_err_code ndr_pull_svcctl_CreateServiceA(struct ndr_pull *ndr, int flags, struct svcctl_CreateServiceA *r)
4594 uint32_t _ptr_ServiceName;
4595 uint32_t size_ServiceName_1 = 0;
4596 uint32_t length_ServiceName_1 = 0;
4597 uint32_t _ptr_DisplayName;
4598 uint32_t size_DisplayName_1 = 0;
4599 uint32_t length_DisplayName_1 = 0;
4600 uint32_t _ptr_binary_path;
4601 uint32_t size_binary_path_1 = 0;
4602 uint32_t length_binary_path_1 = 0;
4603 uint32_t _ptr_LoadOrderGroupKey;
4604 uint32_t size_LoadOrderGroupKey_1 = 0;
4605 uint32_t length_LoadOrderGroupKey_1 = 0;
4606 uint32_t _ptr_TagId;
4607 uint32_t _ptr_dependencies;
4608 uint32_t size_dependencies_1 = 0;
4609 uint32_t length_dependencies_1 = 0;
4610 uint32_t _ptr_service_start_name;
4611 uint32_t size_service_start_name_1 = 0;
4612 uint32_t length_service_start_name_1 = 0;
4613 uint32_t _ptr_password;
4614 uint32_t size_password_1 = 0;
4615 uint32_t length_password_1 = 0;
4616 TALLOC_CTX *_mem_save_handle_0;
4617 TALLOC_CTX *_mem_save_ServiceName_0;
4618 TALLOC_CTX *_mem_save_DisplayName_0;
4619 TALLOC_CTX *_mem_save_binary_path_0;
4620 TALLOC_CTX *_mem_save_LoadOrderGroupKey_0;
4621 TALLOC_CTX *_mem_save_TagId_0;
4622 TALLOC_CTX *_mem_save_dependencies_0;
4623 TALLOC_CTX *_mem_save_service_start_name_0;
4624 TALLOC_CTX *_mem_save_password_0;
4625 if (flags & NDR_IN) {
4626 ZERO_STRUCT(r->out);
4628 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
4629 NDR_PULL_ALLOC(ndr, r->in.handle);
4631 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
4632 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
4633 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
4634 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
4635 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_ServiceName));
4636 if (_ptr_ServiceName) {
4637 NDR_PULL_ALLOC(ndr, r->in.ServiceName);
4638 } else {
4639 r->in.ServiceName = NULL;
4641 if (r->in.ServiceName) {
4642 _mem_save_ServiceName_0 = NDR_PULL_GET_MEM_CTX(ndr);
4643 NDR_PULL_SET_MEM_CTX(ndr, r->in.ServiceName, 0);
4644 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.ServiceName));
4645 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.ServiceName));
4646 size_ServiceName_1 = ndr_get_array_size(ndr, &r->in.ServiceName);
4647 length_ServiceName_1 = ndr_get_array_length(ndr, &r->in.ServiceName);
4648 if (length_ServiceName_1 > size_ServiceName_1) {
4649 return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", size_ServiceName_1, length_ServiceName_1);
4651 NDR_CHECK(ndr_check_string_terminator(ndr, length_ServiceName_1, sizeof(uint16_t)));
4652 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.ServiceName, length_ServiceName_1, sizeof(uint16_t), CH_UTF16));
4653 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_ServiceName_0, 0);
4655 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_DisplayName));
4656 if (_ptr_DisplayName) {
4657 NDR_PULL_ALLOC(ndr, r->in.DisplayName);
4658 } else {
4659 r->in.DisplayName = NULL;
4661 if (r->in.DisplayName) {
4662 _mem_save_DisplayName_0 = NDR_PULL_GET_MEM_CTX(ndr);
4663 NDR_PULL_SET_MEM_CTX(ndr, r->in.DisplayName, 0);
4664 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.DisplayName));
4665 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.DisplayName));
4666 size_DisplayName_1 = ndr_get_array_size(ndr, &r->in.DisplayName);
4667 length_DisplayName_1 = ndr_get_array_length(ndr, &r->in.DisplayName);
4668 if (length_DisplayName_1 > size_DisplayName_1) {
4669 return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", size_DisplayName_1, length_DisplayName_1);
4671 NDR_CHECK(ndr_check_string_terminator(ndr, length_DisplayName_1, sizeof(uint16_t)));
4672 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.DisplayName, length_DisplayName_1, sizeof(uint16_t), CH_UTF16));
4673 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_DisplayName_0, 0);
4675 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.desired_access));
4676 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.type));
4677 NDR_CHECK(ndr_pull_svcctl_StartType(ndr, NDR_SCALARS, &r->in.start_type));
4678 NDR_CHECK(ndr_pull_svcctl_ErrorControl(ndr, NDR_SCALARS, &r->in.error_control));
4679 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_binary_path));
4680 if (_ptr_binary_path) {
4681 NDR_PULL_ALLOC(ndr, r->in.binary_path);
4682 } else {
4683 r->in.binary_path = NULL;
4685 if (r->in.binary_path) {
4686 _mem_save_binary_path_0 = NDR_PULL_GET_MEM_CTX(ndr);
4687 NDR_PULL_SET_MEM_CTX(ndr, r->in.binary_path, 0);
4688 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.binary_path));
4689 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.binary_path));
4690 size_binary_path_1 = ndr_get_array_size(ndr, &r->in.binary_path);
4691 length_binary_path_1 = ndr_get_array_length(ndr, &r->in.binary_path);
4692 if (length_binary_path_1 > size_binary_path_1) {
4693 return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", size_binary_path_1, length_binary_path_1);
4695 NDR_CHECK(ndr_check_string_terminator(ndr, length_binary_path_1, sizeof(uint16_t)));
4696 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.binary_path, length_binary_path_1, sizeof(uint16_t), CH_UTF16));
4697 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_binary_path_0, 0);
4699 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_LoadOrderGroupKey));
4700 if (_ptr_LoadOrderGroupKey) {
4701 NDR_PULL_ALLOC(ndr, r->in.LoadOrderGroupKey);
4702 } else {
4703 r->in.LoadOrderGroupKey = NULL;
4705 if (r->in.LoadOrderGroupKey) {
4706 _mem_save_LoadOrderGroupKey_0 = NDR_PULL_GET_MEM_CTX(ndr);
4707 NDR_PULL_SET_MEM_CTX(ndr, r->in.LoadOrderGroupKey, 0);
4708 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.LoadOrderGroupKey));
4709 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.LoadOrderGroupKey));
4710 size_LoadOrderGroupKey_1 = ndr_get_array_size(ndr, &r->in.LoadOrderGroupKey);
4711 length_LoadOrderGroupKey_1 = ndr_get_array_length(ndr, &r->in.LoadOrderGroupKey);
4712 if (length_LoadOrderGroupKey_1 > size_LoadOrderGroupKey_1) {
4713 return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", size_LoadOrderGroupKey_1, length_LoadOrderGroupKey_1);
4715 NDR_CHECK(ndr_check_string_terminator(ndr, length_LoadOrderGroupKey_1, sizeof(uint16_t)));
4716 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.LoadOrderGroupKey, length_LoadOrderGroupKey_1, sizeof(uint16_t), CH_UTF16));
4717 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_LoadOrderGroupKey_0, 0);
4719 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_dependencies));
4720 if (_ptr_dependencies) {
4721 NDR_PULL_ALLOC(ndr, r->in.dependencies);
4722 } else {
4723 r->in.dependencies = NULL;
4725 if (r->in.dependencies) {
4726 _mem_save_dependencies_0 = NDR_PULL_GET_MEM_CTX(ndr);
4727 NDR_PULL_SET_MEM_CTX(ndr, r->in.dependencies, 0);
4728 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.dependencies));
4729 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.dependencies));
4730 size_dependencies_1 = ndr_get_array_size(ndr, &r->in.dependencies);
4731 length_dependencies_1 = ndr_get_array_length(ndr, &r->in.dependencies);
4732 if (length_dependencies_1 > size_dependencies_1) {
4733 return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", size_dependencies_1, length_dependencies_1);
4735 NDR_CHECK(ndr_check_string_terminator(ndr, length_dependencies_1, sizeof(uint16_t)));
4736 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.dependencies, length_dependencies_1, sizeof(uint16_t), CH_UTF16));
4737 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_dependencies_0, 0);
4739 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_service_start_name));
4740 if (_ptr_service_start_name) {
4741 NDR_PULL_ALLOC(ndr, r->in.service_start_name);
4742 } else {
4743 r->in.service_start_name = NULL;
4745 if (r->in.service_start_name) {
4746 _mem_save_service_start_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
4747 NDR_PULL_SET_MEM_CTX(ndr, r->in.service_start_name, 0);
4748 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.service_start_name));
4749 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.service_start_name));
4750 size_service_start_name_1 = ndr_get_array_size(ndr, &r->in.service_start_name);
4751 length_service_start_name_1 = ndr_get_array_length(ndr, &r->in.service_start_name);
4752 if (length_service_start_name_1 > size_service_start_name_1) {
4753 return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", size_service_start_name_1, length_service_start_name_1);
4755 NDR_CHECK(ndr_check_string_terminator(ndr, length_service_start_name_1, sizeof(uint16_t)));
4756 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.service_start_name, length_service_start_name_1, sizeof(uint16_t), CH_UTF16));
4757 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_service_start_name_0, 0);
4759 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_password));
4760 if (_ptr_password) {
4761 NDR_PULL_ALLOC(ndr, r->in.password);
4762 } else {
4763 r->in.password = NULL;
4765 if (r->in.password) {
4766 _mem_save_password_0 = NDR_PULL_GET_MEM_CTX(ndr);
4767 NDR_PULL_SET_MEM_CTX(ndr, r->in.password, 0);
4768 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.password));
4769 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.password));
4770 size_password_1 = ndr_get_array_size(ndr, &r->in.password);
4771 length_password_1 = ndr_get_array_length(ndr, &r->in.password);
4772 if (length_password_1 > size_password_1) {
4773 return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", size_password_1, length_password_1);
4775 NDR_CHECK(ndr_check_string_terminator(ndr, length_password_1, sizeof(uint16_t)));
4776 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.password, length_password_1, sizeof(uint16_t), CH_UTF16));
4777 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_password_0, 0);
4780 if (flags & NDR_OUT) {
4781 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_TagId));
4782 if (_ptr_TagId) {
4783 NDR_PULL_ALLOC(ndr, r->out.TagId);
4784 } else {
4785 r->out.TagId = NULL;
4787 if (r->out.TagId) {
4788 _mem_save_TagId_0 = NDR_PULL_GET_MEM_CTX(ndr);
4789 NDR_PULL_SET_MEM_CTX(ndr, r->out.TagId, 0);
4790 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.TagId));
4791 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_TagId_0, 0);
4793 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
4795 return NDR_ERR_SUCCESS;
4798 _PUBLIC_ void ndr_print_svcctl_CreateServiceA(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_CreateServiceA *r)
4800 ndr_print_struct(ndr, name, "svcctl_CreateServiceA");
4801 ndr->depth++;
4802 if (flags & NDR_SET_VALUES) {
4803 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
4805 if (flags & NDR_IN) {
4806 ndr_print_struct(ndr, "in", "svcctl_CreateServiceA");
4807 ndr->depth++;
4808 ndr_print_ptr(ndr, "handle", r->in.handle);
4809 ndr->depth++;
4810 ndr_print_policy_handle(ndr, "handle", r->in.handle);
4811 ndr->depth--;
4812 ndr_print_ptr(ndr, "ServiceName", r->in.ServiceName);
4813 ndr->depth++;
4814 if (r->in.ServiceName) {
4815 ndr_print_string(ndr, "ServiceName", r->in.ServiceName);
4817 ndr->depth--;
4818 ndr_print_ptr(ndr, "DisplayName", r->in.DisplayName);
4819 ndr->depth++;
4820 if (r->in.DisplayName) {
4821 ndr_print_string(ndr, "DisplayName", r->in.DisplayName);
4823 ndr->depth--;
4824 ndr_print_uint32(ndr, "desired_access", r->in.desired_access);
4825 ndr_print_uint32(ndr, "type", r->in.type);
4826 ndr_print_svcctl_StartType(ndr, "start_type", r->in.start_type);
4827 ndr_print_svcctl_ErrorControl(ndr, "error_control", r->in.error_control);
4828 ndr_print_ptr(ndr, "binary_path", r->in.binary_path);
4829 ndr->depth++;
4830 if (r->in.binary_path) {
4831 ndr_print_string(ndr, "binary_path", r->in.binary_path);
4833 ndr->depth--;
4834 ndr_print_ptr(ndr, "LoadOrderGroupKey", r->in.LoadOrderGroupKey);
4835 ndr->depth++;
4836 if (r->in.LoadOrderGroupKey) {
4837 ndr_print_string(ndr, "LoadOrderGroupKey", r->in.LoadOrderGroupKey);
4839 ndr->depth--;
4840 ndr_print_ptr(ndr, "dependencies", r->in.dependencies);
4841 ndr->depth++;
4842 if (r->in.dependencies) {
4843 ndr_print_string(ndr, "dependencies", r->in.dependencies);
4845 ndr->depth--;
4846 ndr_print_ptr(ndr, "service_start_name", r->in.service_start_name);
4847 ndr->depth++;
4848 if (r->in.service_start_name) {
4849 ndr_print_string(ndr, "service_start_name", r->in.service_start_name);
4851 ndr->depth--;
4852 ndr_print_ptr(ndr, "password", r->in.password);
4853 ndr->depth++;
4854 if (r->in.password) {
4855 ndr_print_string(ndr, "password", r->in.password);
4857 ndr->depth--;
4858 ndr->depth--;
4860 if (flags & NDR_OUT) {
4861 ndr_print_struct(ndr, "out", "svcctl_CreateServiceA");
4862 ndr->depth++;
4863 ndr_print_ptr(ndr, "TagId", r->out.TagId);
4864 ndr->depth++;
4865 if (r->out.TagId) {
4866 ndr_print_uint32(ndr, "TagId", *r->out.TagId);
4868 ndr->depth--;
4869 ndr_print_WERROR(ndr, "result", r->out.result);
4870 ndr->depth--;
4872 ndr->depth--;
4875 static enum ndr_err_code ndr_push_svcctl_EnumDependentServicesA(struct ndr_push *ndr, int flags, const struct svcctl_EnumDependentServicesA *r)
4877 if (flags & NDR_IN) {
4878 if (r->in.service == NULL) {
4879 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
4881 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.service));
4882 NDR_CHECK(ndr_push_svcctl_ServiceState(ndr, NDR_SCALARS, r->in.state));
4883 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.offered));
4885 if (flags & NDR_OUT) {
4886 NDR_CHECK(ndr_push_unique_ptr(ndr, r->out.service_status));
4887 if (r->out.service_status) {
4888 NDR_CHECK(ndr_push_ENUM_SERVICE_STATUSA(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.service_status));
4890 if (r->out.needed == NULL) {
4891 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
4893 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.needed));
4894 if (r->out.services_returned == NULL) {
4895 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
4897 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.services_returned));
4898 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
4900 return NDR_ERR_SUCCESS;
4903 static enum ndr_err_code ndr_pull_svcctl_EnumDependentServicesA(struct ndr_pull *ndr, int flags, struct svcctl_EnumDependentServicesA *r)
4905 uint32_t _ptr_service_status;
4906 TALLOC_CTX *_mem_save_service_0;
4907 TALLOC_CTX *_mem_save_service_status_0;
4908 TALLOC_CTX *_mem_save_needed_0;
4909 TALLOC_CTX *_mem_save_services_returned_0;
4910 if (flags & NDR_IN) {
4911 ZERO_STRUCT(r->out);
4913 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
4914 NDR_PULL_ALLOC(ndr, r->in.service);
4916 _mem_save_service_0 = NDR_PULL_GET_MEM_CTX(ndr);
4917 NDR_PULL_SET_MEM_CTX(ndr, r->in.service, LIBNDR_FLAG_REF_ALLOC);
4918 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.service));
4919 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_service_0, LIBNDR_FLAG_REF_ALLOC);
4920 NDR_CHECK(ndr_pull_svcctl_ServiceState(ndr, NDR_SCALARS, &r->in.state));
4921 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.offered));
4922 NDR_PULL_ALLOC(ndr, r->out.needed);
4923 ZERO_STRUCTP(r->out.needed);
4924 NDR_PULL_ALLOC(ndr, r->out.services_returned);
4925 ZERO_STRUCTP(r->out.services_returned);
4927 if (flags & NDR_OUT) {
4928 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_service_status));
4929 if (_ptr_service_status) {
4930 NDR_PULL_ALLOC(ndr, r->out.service_status);
4931 } else {
4932 r->out.service_status = NULL;
4934 if (r->out.service_status) {
4935 _mem_save_service_status_0 = NDR_PULL_GET_MEM_CTX(ndr);
4936 NDR_PULL_SET_MEM_CTX(ndr, r->out.service_status, 0);
4937 NDR_CHECK(ndr_pull_ENUM_SERVICE_STATUSA(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.service_status));
4938 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_service_status_0, 0);
4940 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
4941 NDR_PULL_ALLOC(ndr, r->out.needed);
4943 _mem_save_needed_0 = NDR_PULL_GET_MEM_CTX(ndr);
4944 NDR_PULL_SET_MEM_CTX(ndr, r->out.needed, LIBNDR_FLAG_REF_ALLOC);
4945 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.needed));
4946 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_needed_0, LIBNDR_FLAG_REF_ALLOC);
4947 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
4948 NDR_PULL_ALLOC(ndr, r->out.services_returned);
4950 _mem_save_services_returned_0 = NDR_PULL_GET_MEM_CTX(ndr);
4951 NDR_PULL_SET_MEM_CTX(ndr, r->out.services_returned, LIBNDR_FLAG_REF_ALLOC);
4952 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.services_returned));
4953 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_services_returned_0, LIBNDR_FLAG_REF_ALLOC);
4954 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
4956 return NDR_ERR_SUCCESS;
4959 _PUBLIC_ void ndr_print_svcctl_EnumDependentServicesA(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_EnumDependentServicesA *r)
4961 ndr_print_struct(ndr, name, "svcctl_EnumDependentServicesA");
4962 ndr->depth++;
4963 if (flags & NDR_SET_VALUES) {
4964 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
4966 if (flags & NDR_IN) {
4967 ndr_print_struct(ndr, "in", "svcctl_EnumDependentServicesA");
4968 ndr->depth++;
4969 ndr_print_ptr(ndr, "service", r->in.service);
4970 ndr->depth++;
4971 ndr_print_policy_handle(ndr, "service", r->in.service);
4972 ndr->depth--;
4973 ndr_print_svcctl_ServiceState(ndr, "state", r->in.state);
4974 ndr_print_uint32(ndr, "offered", r->in.offered);
4975 ndr->depth--;
4977 if (flags & NDR_OUT) {
4978 ndr_print_struct(ndr, "out", "svcctl_EnumDependentServicesA");
4979 ndr->depth++;
4980 ndr_print_ptr(ndr, "service_status", r->out.service_status);
4981 ndr->depth++;
4982 if (r->out.service_status) {
4983 ndr_print_ENUM_SERVICE_STATUSA(ndr, "service_status", r->out.service_status);
4985 ndr->depth--;
4986 ndr_print_ptr(ndr, "needed", r->out.needed);
4987 ndr->depth++;
4988 ndr_print_uint32(ndr, "needed", *r->out.needed);
4989 ndr->depth--;
4990 ndr_print_ptr(ndr, "services_returned", r->out.services_returned);
4991 ndr->depth++;
4992 ndr_print_uint32(ndr, "services_returned", *r->out.services_returned);
4993 ndr->depth--;
4994 ndr_print_WERROR(ndr, "result", r->out.result);
4995 ndr->depth--;
4997 ndr->depth--;
5000 static enum ndr_err_code ndr_push_svcctl_EnumServicesStatusA(struct ndr_push *ndr, int flags, const struct svcctl_EnumServicesStatusA *r)
5002 if (flags & NDR_IN) {
5003 if (r->in.handle == NULL) {
5004 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
5006 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
5007 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.type));
5008 NDR_CHECK(ndr_push_svcctl_ServiceState(ndr, NDR_SCALARS, r->in.state));
5009 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.offered));
5010 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.resume_handle));
5011 if (r->in.resume_handle) {
5012 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->in.resume_handle));
5015 if (flags & NDR_OUT) {
5016 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, r->in.offered));
5017 NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->out.service, r->in.offered));
5018 if (r->out.needed == NULL) {
5019 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
5021 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.needed));
5022 if (r->out.services_returned == NULL) {
5023 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
5025 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.services_returned));
5026 NDR_CHECK(ndr_push_unique_ptr(ndr, r->out.resume_handle));
5027 if (r->out.resume_handle) {
5028 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.resume_handle));
5030 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
5032 return NDR_ERR_SUCCESS;
5035 static enum ndr_err_code ndr_pull_svcctl_EnumServicesStatusA(struct ndr_pull *ndr, int flags, struct svcctl_EnumServicesStatusA *r)
5037 uint32_t size_service_0 = 0;
5038 uint32_t _ptr_resume_handle;
5039 TALLOC_CTX *_mem_save_handle_0;
5040 TALLOC_CTX *_mem_save_needed_0;
5041 TALLOC_CTX *_mem_save_services_returned_0;
5042 TALLOC_CTX *_mem_save_resume_handle_0;
5043 if (flags & NDR_IN) {
5044 ZERO_STRUCT(r->out);
5046 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
5047 NDR_PULL_ALLOC(ndr, r->in.handle);
5049 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
5050 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
5051 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
5052 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
5053 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.type));
5054 NDR_CHECK(ndr_pull_svcctl_ServiceState(ndr, NDR_SCALARS, &r->in.state));
5055 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.offered));
5056 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_resume_handle));
5057 if (_ptr_resume_handle) {
5058 NDR_PULL_ALLOC(ndr, r->in.resume_handle);
5059 } else {
5060 r->in.resume_handle = NULL;
5062 if (r->in.resume_handle) {
5063 _mem_save_resume_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
5064 NDR_PULL_SET_MEM_CTX(ndr, r->in.resume_handle, 0);
5065 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->in.resume_handle));
5066 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_resume_handle_0, 0);
5068 NDR_PULL_ALLOC(ndr, r->out.needed);
5069 ZERO_STRUCTP(r->out.needed);
5070 NDR_PULL_ALLOC(ndr, r->out.services_returned);
5071 ZERO_STRUCTP(r->out.services_returned);
5073 if (flags & NDR_OUT) {
5074 NDR_CHECK(ndr_pull_array_size(ndr, &r->out.service));
5075 size_service_0 = ndr_get_array_size(ndr, &r->out.service);
5076 NDR_PULL_ALLOC_N(ndr, r->out.service, size_service_0);
5077 NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->out.service, size_service_0));
5078 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
5079 NDR_PULL_ALLOC(ndr, r->out.needed);
5081 _mem_save_needed_0 = NDR_PULL_GET_MEM_CTX(ndr);
5082 NDR_PULL_SET_MEM_CTX(ndr, r->out.needed, LIBNDR_FLAG_REF_ALLOC);
5083 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.needed));
5084 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_needed_0, LIBNDR_FLAG_REF_ALLOC);
5085 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
5086 NDR_PULL_ALLOC(ndr, r->out.services_returned);
5088 _mem_save_services_returned_0 = NDR_PULL_GET_MEM_CTX(ndr);
5089 NDR_PULL_SET_MEM_CTX(ndr, r->out.services_returned, LIBNDR_FLAG_REF_ALLOC);
5090 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.services_returned));
5091 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_services_returned_0, LIBNDR_FLAG_REF_ALLOC);
5092 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_resume_handle));
5093 if (_ptr_resume_handle) {
5094 NDR_PULL_ALLOC(ndr, r->out.resume_handle);
5095 } else {
5096 r->out.resume_handle = NULL;
5098 if (r->out.resume_handle) {
5099 _mem_save_resume_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
5100 NDR_PULL_SET_MEM_CTX(ndr, r->out.resume_handle, 0);
5101 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.resume_handle));
5102 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_resume_handle_0, 0);
5104 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
5105 if (r->out.service) {
5106 NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->out.service, r->in.offered));
5109 return NDR_ERR_SUCCESS;
5112 _PUBLIC_ void ndr_print_svcctl_EnumServicesStatusA(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_EnumServicesStatusA *r)
5114 ndr_print_struct(ndr, name, "svcctl_EnumServicesStatusA");
5115 ndr->depth++;
5116 if (flags & NDR_SET_VALUES) {
5117 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
5119 if (flags & NDR_IN) {
5120 ndr_print_struct(ndr, "in", "svcctl_EnumServicesStatusA");
5121 ndr->depth++;
5122 ndr_print_ptr(ndr, "handle", r->in.handle);
5123 ndr->depth++;
5124 ndr_print_policy_handle(ndr, "handle", r->in.handle);
5125 ndr->depth--;
5126 ndr_print_uint32(ndr, "type", r->in.type);
5127 ndr_print_svcctl_ServiceState(ndr, "state", r->in.state);
5128 ndr_print_uint32(ndr, "offered", r->in.offered);
5129 ndr_print_ptr(ndr, "resume_handle", r->in.resume_handle);
5130 ndr->depth++;
5131 if (r->in.resume_handle) {
5132 ndr_print_uint32(ndr, "resume_handle", *r->in.resume_handle);
5134 ndr->depth--;
5135 ndr->depth--;
5137 if (flags & NDR_OUT) {
5138 ndr_print_struct(ndr, "out", "svcctl_EnumServicesStatusA");
5139 ndr->depth++;
5140 ndr_print_array_uint8(ndr, "service", r->out.service, r->in.offered);
5141 ndr_print_ptr(ndr, "needed", r->out.needed);
5142 ndr->depth++;
5143 ndr_print_uint32(ndr, "needed", *r->out.needed);
5144 ndr->depth--;
5145 ndr_print_ptr(ndr, "services_returned", r->out.services_returned);
5146 ndr->depth++;
5147 ndr_print_uint32(ndr, "services_returned", *r->out.services_returned);
5148 ndr->depth--;
5149 ndr_print_ptr(ndr, "resume_handle", r->out.resume_handle);
5150 ndr->depth++;
5151 if (r->out.resume_handle) {
5152 ndr_print_uint32(ndr, "resume_handle", *r->out.resume_handle);
5154 ndr->depth--;
5155 ndr_print_WERROR(ndr, "result", r->out.result);
5156 ndr->depth--;
5158 ndr->depth--;
5161 static enum ndr_err_code ndr_push_svcctl_OpenSCManagerA(struct ndr_push *ndr, int flags, const struct svcctl_OpenSCManagerA *r)
5163 if (flags & NDR_IN) {
5164 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.MachineName));
5165 if (r->in.MachineName) {
5166 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.MachineName, CH_UTF16)));
5167 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0));
5168 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.MachineName, CH_UTF16)));
5169 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.MachineName, ndr_charset_length(r->in.MachineName, CH_UTF16), sizeof(uint16_t), CH_UTF16));
5171 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.DatabaseName));
5172 if (r->in.DatabaseName) {
5173 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.DatabaseName, CH_UTF16)));
5174 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0));
5175 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.DatabaseName, CH_UTF16)));
5176 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.DatabaseName, ndr_charset_length(r->in.DatabaseName, CH_UTF16), sizeof(uint16_t), CH_UTF16));
5178 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.access_mask));
5180 if (flags & NDR_OUT) {
5181 if (r->out.handle == NULL) {
5182 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
5184 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->out.handle));
5185 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
5187 return NDR_ERR_SUCCESS;
5190 static enum ndr_err_code ndr_pull_svcctl_OpenSCManagerA(struct ndr_pull *ndr, int flags, struct svcctl_OpenSCManagerA *r)
5192 uint32_t _ptr_MachineName;
5193 uint32_t size_MachineName_1 = 0;
5194 uint32_t length_MachineName_1 = 0;
5195 uint32_t _ptr_DatabaseName;
5196 uint32_t size_DatabaseName_1 = 0;
5197 uint32_t length_DatabaseName_1 = 0;
5198 TALLOC_CTX *_mem_save_MachineName_0;
5199 TALLOC_CTX *_mem_save_DatabaseName_0;
5200 TALLOC_CTX *_mem_save_handle_0;
5201 if (flags & NDR_IN) {
5202 ZERO_STRUCT(r->out);
5204 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_MachineName));
5205 if (_ptr_MachineName) {
5206 NDR_PULL_ALLOC(ndr, r->in.MachineName);
5207 } else {
5208 r->in.MachineName = NULL;
5210 if (r->in.MachineName) {
5211 _mem_save_MachineName_0 = NDR_PULL_GET_MEM_CTX(ndr);
5212 NDR_PULL_SET_MEM_CTX(ndr, r->in.MachineName, 0);
5213 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.MachineName));
5214 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.MachineName));
5215 size_MachineName_1 = ndr_get_array_size(ndr, &r->in.MachineName);
5216 length_MachineName_1 = ndr_get_array_length(ndr, &r->in.MachineName);
5217 if (length_MachineName_1 > size_MachineName_1) {
5218 return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", size_MachineName_1, length_MachineName_1);
5220 NDR_CHECK(ndr_check_string_terminator(ndr, length_MachineName_1, sizeof(uint16_t)));
5221 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.MachineName, length_MachineName_1, sizeof(uint16_t), CH_UTF16));
5222 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_MachineName_0, 0);
5224 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_DatabaseName));
5225 if (_ptr_DatabaseName) {
5226 NDR_PULL_ALLOC(ndr, r->in.DatabaseName);
5227 } else {
5228 r->in.DatabaseName = NULL;
5230 if (r->in.DatabaseName) {
5231 _mem_save_DatabaseName_0 = NDR_PULL_GET_MEM_CTX(ndr);
5232 NDR_PULL_SET_MEM_CTX(ndr, r->in.DatabaseName, 0);
5233 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.DatabaseName));
5234 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.DatabaseName));
5235 size_DatabaseName_1 = ndr_get_array_size(ndr, &r->in.DatabaseName);
5236 length_DatabaseName_1 = ndr_get_array_length(ndr, &r->in.DatabaseName);
5237 if (length_DatabaseName_1 > size_DatabaseName_1) {
5238 return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", size_DatabaseName_1, length_DatabaseName_1);
5240 NDR_CHECK(ndr_check_string_terminator(ndr, length_DatabaseName_1, sizeof(uint16_t)));
5241 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.DatabaseName, length_DatabaseName_1, sizeof(uint16_t), CH_UTF16));
5242 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_DatabaseName_0, 0);
5244 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.access_mask));
5245 NDR_PULL_ALLOC(ndr, r->out.handle);
5246 ZERO_STRUCTP(r->out.handle);
5248 if (flags & NDR_OUT) {
5249 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
5250 NDR_PULL_ALLOC(ndr, r->out.handle);
5252 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
5253 NDR_PULL_SET_MEM_CTX(ndr, r->out.handle, LIBNDR_FLAG_REF_ALLOC);
5254 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->out.handle));
5255 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
5256 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
5258 return NDR_ERR_SUCCESS;
5261 _PUBLIC_ void ndr_print_svcctl_OpenSCManagerA(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_OpenSCManagerA *r)
5263 ndr_print_struct(ndr, name, "svcctl_OpenSCManagerA");
5264 ndr->depth++;
5265 if (flags & NDR_SET_VALUES) {
5266 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
5268 if (flags & NDR_IN) {
5269 ndr_print_struct(ndr, "in", "svcctl_OpenSCManagerA");
5270 ndr->depth++;
5271 ndr_print_ptr(ndr, "MachineName", r->in.MachineName);
5272 ndr->depth++;
5273 if (r->in.MachineName) {
5274 ndr_print_string(ndr, "MachineName", r->in.MachineName);
5276 ndr->depth--;
5277 ndr_print_ptr(ndr, "DatabaseName", r->in.DatabaseName);
5278 ndr->depth++;
5279 if (r->in.DatabaseName) {
5280 ndr_print_string(ndr, "DatabaseName", r->in.DatabaseName);
5282 ndr->depth--;
5283 ndr_print_uint32(ndr, "access_mask", r->in.access_mask);
5284 ndr->depth--;
5286 if (flags & NDR_OUT) {
5287 ndr_print_struct(ndr, "out", "svcctl_OpenSCManagerA");
5288 ndr->depth++;
5289 ndr_print_ptr(ndr, "handle", r->out.handle);
5290 ndr->depth++;
5291 ndr_print_policy_handle(ndr, "handle", r->out.handle);
5292 ndr->depth--;
5293 ndr_print_WERROR(ndr, "result", r->out.result);
5294 ndr->depth--;
5296 ndr->depth--;
5299 static enum ndr_err_code ndr_push_svcctl_OpenServiceA(struct ndr_push *ndr, int flags, const struct svcctl_OpenServiceA *r)
5301 if (flags & NDR_IN) {
5302 if (r->in.scmanager_handle == NULL) {
5303 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
5305 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.scmanager_handle));
5306 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.ServiceName));
5307 if (r->in.ServiceName) {
5308 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.ServiceName, CH_UTF16)));
5309 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0));
5310 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.ServiceName, CH_UTF16)));
5311 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.ServiceName, ndr_charset_length(r->in.ServiceName, CH_UTF16), sizeof(uint16_t), CH_UTF16));
5313 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.access_mask));
5315 if (flags & NDR_OUT) {
5316 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
5318 return NDR_ERR_SUCCESS;
5321 static enum ndr_err_code ndr_pull_svcctl_OpenServiceA(struct ndr_pull *ndr, int flags, struct svcctl_OpenServiceA *r)
5323 uint32_t _ptr_ServiceName;
5324 uint32_t size_ServiceName_1 = 0;
5325 uint32_t length_ServiceName_1 = 0;
5326 TALLOC_CTX *_mem_save_scmanager_handle_0;
5327 TALLOC_CTX *_mem_save_ServiceName_0;
5328 if (flags & NDR_IN) {
5329 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
5330 NDR_PULL_ALLOC(ndr, r->in.scmanager_handle);
5332 _mem_save_scmanager_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
5333 NDR_PULL_SET_MEM_CTX(ndr, r->in.scmanager_handle, LIBNDR_FLAG_REF_ALLOC);
5334 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.scmanager_handle));
5335 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_scmanager_handle_0, LIBNDR_FLAG_REF_ALLOC);
5336 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_ServiceName));
5337 if (_ptr_ServiceName) {
5338 NDR_PULL_ALLOC(ndr, r->in.ServiceName);
5339 } else {
5340 r->in.ServiceName = NULL;
5342 if (r->in.ServiceName) {
5343 _mem_save_ServiceName_0 = NDR_PULL_GET_MEM_CTX(ndr);
5344 NDR_PULL_SET_MEM_CTX(ndr, r->in.ServiceName, 0);
5345 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.ServiceName));
5346 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.ServiceName));
5347 size_ServiceName_1 = ndr_get_array_size(ndr, &r->in.ServiceName);
5348 length_ServiceName_1 = ndr_get_array_length(ndr, &r->in.ServiceName);
5349 if (length_ServiceName_1 > size_ServiceName_1) {
5350 return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", size_ServiceName_1, length_ServiceName_1);
5352 NDR_CHECK(ndr_check_string_terminator(ndr, length_ServiceName_1, sizeof(uint16_t)));
5353 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.ServiceName, length_ServiceName_1, sizeof(uint16_t), CH_UTF16));
5354 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_ServiceName_0, 0);
5356 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.access_mask));
5358 if (flags & NDR_OUT) {
5359 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
5361 return NDR_ERR_SUCCESS;
5364 _PUBLIC_ void ndr_print_svcctl_OpenServiceA(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_OpenServiceA *r)
5366 ndr_print_struct(ndr, name, "svcctl_OpenServiceA");
5367 ndr->depth++;
5368 if (flags & NDR_SET_VALUES) {
5369 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
5371 if (flags & NDR_IN) {
5372 ndr_print_struct(ndr, "in", "svcctl_OpenServiceA");
5373 ndr->depth++;
5374 ndr_print_ptr(ndr, "scmanager_handle", r->in.scmanager_handle);
5375 ndr->depth++;
5376 ndr_print_policy_handle(ndr, "scmanager_handle", r->in.scmanager_handle);
5377 ndr->depth--;
5378 ndr_print_ptr(ndr, "ServiceName", r->in.ServiceName);
5379 ndr->depth++;
5380 if (r->in.ServiceName) {
5381 ndr_print_string(ndr, "ServiceName", r->in.ServiceName);
5383 ndr->depth--;
5384 ndr_print_uint32(ndr, "access_mask", r->in.access_mask);
5385 ndr->depth--;
5387 if (flags & NDR_OUT) {
5388 ndr_print_struct(ndr, "out", "svcctl_OpenServiceA");
5389 ndr->depth++;
5390 ndr_print_WERROR(ndr, "result", r->out.result);
5391 ndr->depth--;
5393 ndr->depth--;
5396 static enum ndr_err_code ndr_push_svcctl_QueryServiceConfigA(struct ndr_push *ndr, int flags, const struct svcctl_QueryServiceConfigA *r)
5398 if (flags & NDR_IN) {
5399 if (r->in.handle == NULL) {
5400 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
5402 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
5403 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.offered));
5405 if (flags & NDR_OUT) {
5406 NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->out.query, r->in.offered));
5407 if (r->out.needed == NULL) {
5408 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
5410 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.needed));
5411 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
5413 return NDR_ERR_SUCCESS;
5416 static enum ndr_err_code ndr_pull_svcctl_QueryServiceConfigA(struct ndr_pull *ndr, int flags, struct svcctl_QueryServiceConfigA *r)
5418 uint32_t size_query_0 = 0;
5419 TALLOC_CTX *_mem_save_handle_0;
5420 TALLOC_CTX *_mem_save_needed_0;
5421 if (flags & NDR_IN) {
5422 ZERO_STRUCT(r->out);
5424 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
5425 NDR_PULL_ALLOC(ndr, r->in.handle);
5427 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
5428 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
5429 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
5430 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
5431 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.offered));
5432 NDR_PULL_ALLOC(ndr, r->out.needed);
5433 ZERO_STRUCTP(r->out.needed);
5435 if (flags & NDR_OUT) {
5436 size_query_0 = r->in.offered;
5437 NDR_PULL_ALLOC_N(ndr, r->out.query, size_query_0);
5438 NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->out.query, size_query_0));
5439 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
5440 NDR_PULL_ALLOC(ndr, r->out.needed);
5442 _mem_save_needed_0 = NDR_PULL_GET_MEM_CTX(ndr);
5443 NDR_PULL_SET_MEM_CTX(ndr, r->out.needed, LIBNDR_FLAG_REF_ALLOC);
5444 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.needed));
5445 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_needed_0, LIBNDR_FLAG_REF_ALLOC);
5446 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
5448 return NDR_ERR_SUCCESS;
5451 _PUBLIC_ void ndr_print_svcctl_QueryServiceConfigA(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_QueryServiceConfigA *r)
5453 ndr_print_struct(ndr, name, "svcctl_QueryServiceConfigA");
5454 ndr->depth++;
5455 if (flags & NDR_SET_VALUES) {
5456 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
5458 if (flags & NDR_IN) {
5459 ndr_print_struct(ndr, "in", "svcctl_QueryServiceConfigA");
5460 ndr->depth++;
5461 ndr_print_ptr(ndr, "handle", r->in.handle);
5462 ndr->depth++;
5463 ndr_print_policy_handle(ndr, "handle", r->in.handle);
5464 ndr->depth--;
5465 ndr_print_uint32(ndr, "offered", r->in.offered);
5466 ndr->depth--;
5468 if (flags & NDR_OUT) {
5469 ndr_print_struct(ndr, "out", "svcctl_QueryServiceConfigA");
5470 ndr->depth++;
5471 ndr_print_array_uint8(ndr, "query", r->out.query, r->in.offered);
5472 ndr_print_ptr(ndr, "needed", r->out.needed);
5473 ndr->depth++;
5474 ndr_print_uint32(ndr, "needed", *r->out.needed);
5475 ndr->depth--;
5476 ndr_print_WERROR(ndr, "result", r->out.result);
5477 ndr->depth--;
5479 ndr->depth--;
5482 static enum ndr_err_code ndr_push_svcctl_QueryServiceLockStatusA(struct ndr_push *ndr, int flags, const struct svcctl_QueryServiceLockStatusA *r)
5484 if (flags & NDR_IN) {
5485 if (r->in.handle == NULL) {
5486 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
5488 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
5489 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.offered));
5491 if (flags & NDR_OUT) {
5492 if (r->out.lock_status == NULL) {
5493 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
5495 NDR_CHECK(ndr_push_SERVICE_LOCK_STATUS(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.lock_status));
5496 if (r->out.needed == NULL) {
5497 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
5499 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.needed));
5500 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
5502 return NDR_ERR_SUCCESS;
5505 static enum ndr_err_code ndr_pull_svcctl_QueryServiceLockStatusA(struct ndr_pull *ndr, int flags, struct svcctl_QueryServiceLockStatusA *r)
5507 TALLOC_CTX *_mem_save_handle_0;
5508 TALLOC_CTX *_mem_save_lock_status_0;
5509 TALLOC_CTX *_mem_save_needed_0;
5510 if (flags & NDR_IN) {
5511 ZERO_STRUCT(r->out);
5513 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
5514 NDR_PULL_ALLOC(ndr, r->in.handle);
5516 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
5517 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
5518 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
5519 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
5520 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.offered));
5521 NDR_PULL_ALLOC(ndr, r->out.lock_status);
5522 ZERO_STRUCTP(r->out.lock_status);
5523 NDR_PULL_ALLOC(ndr, r->out.needed);
5524 ZERO_STRUCTP(r->out.needed);
5526 if (flags & NDR_OUT) {
5527 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
5528 NDR_PULL_ALLOC(ndr, r->out.lock_status);
5530 _mem_save_lock_status_0 = NDR_PULL_GET_MEM_CTX(ndr);
5531 NDR_PULL_SET_MEM_CTX(ndr, r->out.lock_status, LIBNDR_FLAG_REF_ALLOC);
5532 NDR_CHECK(ndr_pull_SERVICE_LOCK_STATUS(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.lock_status));
5533 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_lock_status_0, LIBNDR_FLAG_REF_ALLOC);
5534 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
5535 NDR_PULL_ALLOC(ndr, r->out.needed);
5537 _mem_save_needed_0 = NDR_PULL_GET_MEM_CTX(ndr);
5538 NDR_PULL_SET_MEM_CTX(ndr, r->out.needed, LIBNDR_FLAG_REF_ALLOC);
5539 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.needed));
5540 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_needed_0, LIBNDR_FLAG_REF_ALLOC);
5541 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
5543 return NDR_ERR_SUCCESS;
5546 _PUBLIC_ void ndr_print_svcctl_QueryServiceLockStatusA(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_QueryServiceLockStatusA *r)
5548 ndr_print_struct(ndr, name, "svcctl_QueryServiceLockStatusA");
5549 ndr->depth++;
5550 if (flags & NDR_SET_VALUES) {
5551 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
5553 if (flags & NDR_IN) {
5554 ndr_print_struct(ndr, "in", "svcctl_QueryServiceLockStatusA");
5555 ndr->depth++;
5556 ndr_print_ptr(ndr, "handle", r->in.handle);
5557 ndr->depth++;
5558 ndr_print_policy_handle(ndr, "handle", r->in.handle);
5559 ndr->depth--;
5560 ndr_print_uint32(ndr, "offered", r->in.offered);
5561 ndr->depth--;
5563 if (flags & NDR_OUT) {
5564 ndr_print_struct(ndr, "out", "svcctl_QueryServiceLockStatusA");
5565 ndr->depth++;
5566 ndr_print_ptr(ndr, "lock_status", r->out.lock_status);
5567 ndr->depth++;
5568 ndr_print_SERVICE_LOCK_STATUS(ndr, "lock_status", r->out.lock_status);
5569 ndr->depth--;
5570 ndr_print_ptr(ndr, "needed", r->out.needed);
5571 ndr->depth++;
5572 ndr_print_uint32(ndr, "needed", *r->out.needed);
5573 ndr->depth--;
5574 ndr_print_WERROR(ndr, "result", r->out.result);
5575 ndr->depth--;
5577 ndr->depth--;
5580 static enum ndr_err_code ndr_push_svcctl_StartServiceA(struct ndr_push *ndr, int flags, const struct svcctl_StartServiceA *r)
5582 if (flags & NDR_IN) {
5583 if (r->in.handle == NULL) {
5584 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
5586 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
5587 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.NumArgs));
5588 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.Arguments));
5589 if (r->in.Arguments) {
5590 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.Arguments, CH_UTF16)));
5591 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0));
5592 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.Arguments, CH_UTF16)));
5593 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.Arguments, ndr_charset_length(r->in.Arguments, CH_UTF16), sizeof(uint16_t), CH_UTF16));
5596 if (flags & NDR_OUT) {
5597 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
5599 return NDR_ERR_SUCCESS;
5602 static enum ndr_err_code ndr_pull_svcctl_StartServiceA(struct ndr_pull *ndr, int flags, struct svcctl_StartServiceA *r)
5604 uint32_t _ptr_Arguments;
5605 uint32_t size_Arguments_1 = 0;
5606 uint32_t length_Arguments_1 = 0;
5607 TALLOC_CTX *_mem_save_handle_0;
5608 TALLOC_CTX *_mem_save_Arguments_0;
5609 if (flags & NDR_IN) {
5610 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
5611 NDR_PULL_ALLOC(ndr, r->in.handle);
5613 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
5614 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
5615 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
5616 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
5617 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.NumArgs));
5618 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_Arguments));
5619 if (_ptr_Arguments) {
5620 NDR_PULL_ALLOC(ndr, r->in.Arguments);
5621 } else {
5622 r->in.Arguments = NULL;
5624 if (r->in.Arguments) {
5625 _mem_save_Arguments_0 = NDR_PULL_GET_MEM_CTX(ndr);
5626 NDR_PULL_SET_MEM_CTX(ndr, r->in.Arguments, 0);
5627 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.Arguments));
5628 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.Arguments));
5629 size_Arguments_1 = ndr_get_array_size(ndr, &r->in.Arguments);
5630 length_Arguments_1 = ndr_get_array_length(ndr, &r->in.Arguments);
5631 if (length_Arguments_1 > size_Arguments_1) {
5632 return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", size_Arguments_1, length_Arguments_1);
5634 NDR_CHECK(ndr_check_string_terminator(ndr, length_Arguments_1, sizeof(uint16_t)));
5635 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.Arguments, length_Arguments_1, sizeof(uint16_t), CH_UTF16));
5636 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_Arguments_0, 0);
5639 if (flags & NDR_OUT) {
5640 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
5642 return NDR_ERR_SUCCESS;
5645 _PUBLIC_ void ndr_print_svcctl_StartServiceA(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_StartServiceA *r)
5647 ndr_print_struct(ndr, name, "svcctl_StartServiceA");
5648 ndr->depth++;
5649 if (flags & NDR_SET_VALUES) {
5650 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
5652 if (flags & NDR_IN) {
5653 ndr_print_struct(ndr, "in", "svcctl_StartServiceA");
5654 ndr->depth++;
5655 ndr_print_ptr(ndr, "handle", r->in.handle);
5656 ndr->depth++;
5657 ndr_print_policy_handle(ndr, "handle", r->in.handle);
5658 ndr->depth--;
5659 ndr_print_uint32(ndr, "NumArgs", r->in.NumArgs);
5660 ndr_print_ptr(ndr, "Arguments", r->in.Arguments);
5661 ndr->depth++;
5662 if (r->in.Arguments) {
5663 ndr_print_string(ndr, "Arguments", r->in.Arguments);
5665 ndr->depth--;
5666 ndr->depth--;
5668 if (flags & NDR_OUT) {
5669 ndr_print_struct(ndr, "out", "svcctl_StartServiceA");
5670 ndr->depth++;
5671 ndr_print_WERROR(ndr, "result", r->out.result);
5672 ndr->depth--;
5674 ndr->depth--;
5677 static enum ndr_err_code ndr_push_svcctl_GetServiceDisplayNameA(struct ndr_push *ndr, int flags, const struct svcctl_GetServiceDisplayNameA *r)
5679 if (flags & NDR_IN) {
5680 if (r->in.handle == NULL) {
5681 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
5683 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
5684 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.service_name));
5685 if (r->in.service_name) {
5686 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.service_name, CH_UTF16)));
5687 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0));
5688 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.service_name, CH_UTF16)));
5689 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));
5691 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.display_name_length));
5692 if (r->in.display_name_length) {
5693 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->in.display_name_length));
5696 if (flags & NDR_OUT) {
5697 if (r->out.display_name == NULL) {
5698 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
5700 NDR_CHECK(ndr_push_unique_ptr(ndr, *r->out.display_name));
5701 if (*r->out.display_name) {
5702 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(*r->out.display_name, CH_UTF16)));
5703 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0));
5704 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(*r->out.display_name, CH_UTF16)));
5705 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));
5707 NDR_CHECK(ndr_push_unique_ptr(ndr, r->out.display_name_length));
5708 if (r->out.display_name_length) {
5709 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.display_name_length));
5711 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
5713 return NDR_ERR_SUCCESS;
5716 static enum ndr_err_code ndr_pull_svcctl_GetServiceDisplayNameA(struct ndr_pull *ndr, int flags, struct svcctl_GetServiceDisplayNameA *r)
5718 uint32_t _ptr_service_name;
5719 uint32_t size_service_name_1 = 0;
5720 uint32_t length_service_name_1 = 0;
5721 uint32_t _ptr_display_name;
5722 uint32_t size_display_name_2 = 0;
5723 uint32_t length_display_name_2 = 0;
5724 uint32_t _ptr_display_name_length;
5725 TALLOC_CTX *_mem_save_handle_0;
5726 TALLOC_CTX *_mem_save_service_name_0;
5727 TALLOC_CTX *_mem_save_display_name_0;
5728 TALLOC_CTX *_mem_save_display_name_1;
5729 TALLOC_CTX *_mem_save_display_name_length_0;
5730 if (flags & NDR_IN) {
5731 ZERO_STRUCT(r->out);
5733 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
5734 NDR_PULL_ALLOC(ndr, r->in.handle);
5736 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
5737 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
5738 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
5739 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
5740 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_service_name));
5741 if (_ptr_service_name) {
5742 NDR_PULL_ALLOC(ndr, r->in.service_name);
5743 } else {
5744 r->in.service_name = NULL;
5746 if (r->in.service_name) {
5747 _mem_save_service_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
5748 NDR_PULL_SET_MEM_CTX(ndr, r->in.service_name, 0);
5749 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.service_name));
5750 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.service_name));
5751 size_service_name_1 = ndr_get_array_size(ndr, &r->in.service_name);
5752 length_service_name_1 = ndr_get_array_length(ndr, &r->in.service_name);
5753 if (length_service_name_1 > size_service_name_1) {
5754 return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", size_service_name_1, length_service_name_1);
5756 NDR_CHECK(ndr_check_string_terminator(ndr, length_service_name_1, sizeof(uint16_t)));
5757 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.service_name, length_service_name_1, sizeof(uint16_t), CH_UTF16));
5758 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_service_name_0, 0);
5760 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_display_name_length));
5761 if (_ptr_display_name_length) {
5762 NDR_PULL_ALLOC(ndr, r->in.display_name_length);
5763 } else {
5764 r->in.display_name_length = NULL;
5766 if (r->in.display_name_length) {
5767 _mem_save_display_name_length_0 = NDR_PULL_GET_MEM_CTX(ndr);
5768 NDR_PULL_SET_MEM_CTX(ndr, r->in.display_name_length, 0);
5769 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->in.display_name_length));
5770 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_display_name_length_0, 0);
5772 NDR_PULL_ALLOC(ndr, r->out.display_name);
5773 ZERO_STRUCTP(r->out.display_name);
5775 if (flags & NDR_OUT) {
5776 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
5777 NDR_PULL_ALLOC(ndr, r->out.display_name);
5779 _mem_save_display_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
5780 NDR_PULL_SET_MEM_CTX(ndr, r->out.display_name, LIBNDR_FLAG_REF_ALLOC);
5781 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_display_name));
5782 if (_ptr_display_name) {
5783 NDR_PULL_ALLOC(ndr, *r->out.display_name);
5784 } else {
5785 *r->out.display_name = NULL;
5787 if (*r->out.display_name) {
5788 _mem_save_display_name_1 = NDR_PULL_GET_MEM_CTX(ndr);
5789 NDR_PULL_SET_MEM_CTX(ndr, *r->out.display_name, 0);
5790 NDR_CHECK(ndr_pull_array_size(ndr, r->out.display_name));
5791 NDR_CHECK(ndr_pull_array_length(ndr, r->out.display_name));
5792 size_display_name_2 = ndr_get_array_size(ndr, r->out.display_name);
5793 length_display_name_2 = ndr_get_array_length(ndr, r->out.display_name);
5794 if (length_display_name_2 > size_display_name_2) {
5795 return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", size_display_name_2, length_display_name_2);
5797 NDR_CHECK(ndr_check_string_terminator(ndr, length_display_name_2, sizeof(uint16_t)));
5798 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, r->out.display_name, length_display_name_2, sizeof(uint16_t), CH_UTF16));
5799 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_display_name_1, 0);
5801 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_display_name_0, LIBNDR_FLAG_REF_ALLOC);
5802 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_display_name_length));
5803 if (_ptr_display_name_length) {
5804 NDR_PULL_ALLOC(ndr, r->out.display_name_length);
5805 } else {
5806 r->out.display_name_length = NULL;
5808 if (r->out.display_name_length) {
5809 _mem_save_display_name_length_0 = NDR_PULL_GET_MEM_CTX(ndr);
5810 NDR_PULL_SET_MEM_CTX(ndr, r->out.display_name_length, 0);
5811 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.display_name_length));
5812 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_display_name_length_0, 0);
5814 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
5816 return NDR_ERR_SUCCESS;
5819 _PUBLIC_ void ndr_print_svcctl_GetServiceDisplayNameA(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_GetServiceDisplayNameA *r)
5821 ndr_print_struct(ndr, name, "svcctl_GetServiceDisplayNameA");
5822 ndr->depth++;
5823 if (flags & NDR_SET_VALUES) {
5824 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
5826 if (flags & NDR_IN) {
5827 ndr_print_struct(ndr, "in", "svcctl_GetServiceDisplayNameA");
5828 ndr->depth++;
5829 ndr_print_ptr(ndr, "handle", r->in.handle);
5830 ndr->depth++;
5831 ndr_print_policy_handle(ndr, "handle", r->in.handle);
5832 ndr->depth--;
5833 ndr_print_ptr(ndr, "service_name", r->in.service_name);
5834 ndr->depth++;
5835 if (r->in.service_name) {
5836 ndr_print_string(ndr, "service_name", r->in.service_name);
5838 ndr->depth--;
5839 ndr_print_ptr(ndr, "display_name_length", r->in.display_name_length);
5840 ndr->depth++;
5841 if (r->in.display_name_length) {
5842 ndr_print_uint32(ndr, "display_name_length", *r->in.display_name_length);
5844 ndr->depth--;
5845 ndr->depth--;
5847 if (flags & NDR_OUT) {
5848 ndr_print_struct(ndr, "out", "svcctl_GetServiceDisplayNameA");
5849 ndr->depth++;
5850 ndr_print_ptr(ndr, "display_name", r->out.display_name);
5851 ndr->depth++;
5852 ndr_print_ptr(ndr, "display_name", *r->out.display_name);
5853 ndr->depth++;
5854 if (*r->out.display_name) {
5855 ndr_print_string(ndr, "display_name", *r->out.display_name);
5857 ndr->depth--;
5858 ndr->depth--;
5859 ndr_print_ptr(ndr, "display_name_length", r->out.display_name_length);
5860 ndr->depth++;
5861 if (r->out.display_name_length) {
5862 ndr_print_uint32(ndr, "display_name_length", *r->out.display_name_length);
5864 ndr->depth--;
5865 ndr_print_WERROR(ndr, "result", r->out.result);
5866 ndr->depth--;
5868 ndr->depth--;
5871 static enum ndr_err_code ndr_push_svcctl_GetServiceKeyNameA(struct ndr_push *ndr, int flags, const struct svcctl_GetServiceKeyNameA *r)
5873 if (flags & NDR_IN) {
5874 if (r->in.handle == NULL) {
5875 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
5877 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
5878 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.service_name));
5879 if (r->in.service_name) {
5880 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.service_name, CH_UTF16)));
5881 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0));
5882 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.service_name, CH_UTF16)));
5883 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));
5885 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.display_name_length));
5886 if (r->in.display_name_length) {
5887 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->in.display_name_length));
5890 if (flags & NDR_OUT) {
5891 if (r->out.key_name == NULL) {
5892 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
5894 NDR_CHECK(ndr_push_unique_ptr(ndr, *r->out.key_name));
5895 if (*r->out.key_name) {
5896 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(*r->out.key_name, CH_UTF16)));
5897 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0));
5898 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(*r->out.key_name, CH_UTF16)));
5899 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));
5901 NDR_CHECK(ndr_push_unique_ptr(ndr, r->out.display_name_length));
5902 if (r->out.display_name_length) {
5903 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.display_name_length));
5905 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
5907 return NDR_ERR_SUCCESS;
5910 static enum ndr_err_code ndr_pull_svcctl_GetServiceKeyNameA(struct ndr_pull *ndr, int flags, struct svcctl_GetServiceKeyNameA *r)
5912 uint32_t _ptr_service_name;
5913 uint32_t size_service_name_1 = 0;
5914 uint32_t length_service_name_1 = 0;
5915 uint32_t _ptr_key_name;
5916 uint32_t size_key_name_2 = 0;
5917 uint32_t length_key_name_2 = 0;
5918 uint32_t _ptr_display_name_length;
5919 TALLOC_CTX *_mem_save_handle_0;
5920 TALLOC_CTX *_mem_save_service_name_0;
5921 TALLOC_CTX *_mem_save_key_name_0;
5922 TALLOC_CTX *_mem_save_key_name_1;
5923 TALLOC_CTX *_mem_save_display_name_length_0;
5924 if (flags & NDR_IN) {
5925 ZERO_STRUCT(r->out);
5927 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
5928 NDR_PULL_ALLOC(ndr, r->in.handle);
5930 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
5931 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
5932 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
5933 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
5934 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_service_name));
5935 if (_ptr_service_name) {
5936 NDR_PULL_ALLOC(ndr, r->in.service_name);
5937 } else {
5938 r->in.service_name = NULL;
5940 if (r->in.service_name) {
5941 _mem_save_service_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
5942 NDR_PULL_SET_MEM_CTX(ndr, r->in.service_name, 0);
5943 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.service_name));
5944 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.service_name));
5945 size_service_name_1 = ndr_get_array_size(ndr, &r->in.service_name);
5946 length_service_name_1 = ndr_get_array_length(ndr, &r->in.service_name);
5947 if (length_service_name_1 > size_service_name_1) {
5948 return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", size_service_name_1, length_service_name_1);
5950 NDR_CHECK(ndr_check_string_terminator(ndr, length_service_name_1, sizeof(uint16_t)));
5951 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.service_name, length_service_name_1, sizeof(uint16_t), CH_UTF16));
5952 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_service_name_0, 0);
5954 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_display_name_length));
5955 if (_ptr_display_name_length) {
5956 NDR_PULL_ALLOC(ndr, r->in.display_name_length);
5957 } else {
5958 r->in.display_name_length = NULL;
5960 if (r->in.display_name_length) {
5961 _mem_save_display_name_length_0 = NDR_PULL_GET_MEM_CTX(ndr);
5962 NDR_PULL_SET_MEM_CTX(ndr, r->in.display_name_length, 0);
5963 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->in.display_name_length));
5964 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_display_name_length_0, 0);
5966 NDR_PULL_ALLOC(ndr, r->out.key_name);
5967 ZERO_STRUCTP(r->out.key_name);
5969 if (flags & NDR_OUT) {
5970 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
5971 NDR_PULL_ALLOC(ndr, r->out.key_name);
5973 _mem_save_key_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
5974 NDR_PULL_SET_MEM_CTX(ndr, r->out.key_name, LIBNDR_FLAG_REF_ALLOC);
5975 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_key_name));
5976 if (_ptr_key_name) {
5977 NDR_PULL_ALLOC(ndr, *r->out.key_name);
5978 } else {
5979 *r->out.key_name = NULL;
5981 if (*r->out.key_name) {
5982 _mem_save_key_name_1 = NDR_PULL_GET_MEM_CTX(ndr);
5983 NDR_PULL_SET_MEM_CTX(ndr, *r->out.key_name, 0);
5984 NDR_CHECK(ndr_pull_array_size(ndr, r->out.key_name));
5985 NDR_CHECK(ndr_pull_array_length(ndr, r->out.key_name));
5986 size_key_name_2 = ndr_get_array_size(ndr, r->out.key_name);
5987 length_key_name_2 = ndr_get_array_length(ndr, r->out.key_name);
5988 if (length_key_name_2 > size_key_name_2) {
5989 return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", size_key_name_2, length_key_name_2);
5991 NDR_CHECK(ndr_check_string_terminator(ndr, length_key_name_2, sizeof(uint16_t)));
5992 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, r->out.key_name, length_key_name_2, sizeof(uint16_t), CH_UTF16));
5993 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_key_name_1, 0);
5995 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_key_name_0, LIBNDR_FLAG_REF_ALLOC);
5996 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_display_name_length));
5997 if (_ptr_display_name_length) {
5998 NDR_PULL_ALLOC(ndr, r->out.display_name_length);
5999 } else {
6000 r->out.display_name_length = NULL;
6002 if (r->out.display_name_length) {
6003 _mem_save_display_name_length_0 = NDR_PULL_GET_MEM_CTX(ndr);
6004 NDR_PULL_SET_MEM_CTX(ndr, r->out.display_name_length, 0);
6005 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.display_name_length));
6006 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_display_name_length_0, 0);
6008 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
6010 return NDR_ERR_SUCCESS;
6013 _PUBLIC_ void ndr_print_svcctl_GetServiceKeyNameA(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_GetServiceKeyNameA *r)
6015 ndr_print_struct(ndr, name, "svcctl_GetServiceKeyNameA");
6016 ndr->depth++;
6017 if (flags & NDR_SET_VALUES) {
6018 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
6020 if (flags & NDR_IN) {
6021 ndr_print_struct(ndr, "in", "svcctl_GetServiceKeyNameA");
6022 ndr->depth++;
6023 ndr_print_ptr(ndr, "handle", r->in.handle);
6024 ndr->depth++;
6025 ndr_print_policy_handle(ndr, "handle", r->in.handle);
6026 ndr->depth--;
6027 ndr_print_ptr(ndr, "service_name", r->in.service_name);
6028 ndr->depth++;
6029 if (r->in.service_name) {
6030 ndr_print_string(ndr, "service_name", r->in.service_name);
6032 ndr->depth--;
6033 ndr_print_ptr(ndr, "display_name_length", r->in.display_name_length);
6034 ndr->depth++;
6035 if (r->in.display_name_length) {
6036 ndr_print_uint32(ndr, "display_name_length", *r->in.display_name_length);
6038 ndr->depth--;
6039 ndr->depth--;
6041 if (flags & NDR_OUT) {
6042 ndr_print_struct(ndr, "out", "svcctl_GetServiceKeyNameA");
6043 ndr->depth++;
6044 ndr_print_ptr(ndr, "key_name", r->out.key_name);
6045 ndr->depth++;
6046 ndr_print_ptr(ndr, "key_name", *r->out.key_name);
6047 ndr->depth++;
6048 if (*r->out.key_name) {
6049 ndr_print_string(ndr, "key_name", *r->out.key_name);
6051 ndr->depth--;
6052 ndr->depth--;
6053 ndr_print_ptr(ndr, "display_name_length", r->out.display_name_length);
6054 ndr->depth++;
6055 if (r->out.display_name_length) {
6056 ndr_print_uint32(ndr, "display_name_length", *r->out.display_name_length);
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_svcctl_GetCurrentGroupeStateW(struct ndr_push *ndr, int flags, const struct svcctl_GetCurrentGroupeStateW *r)
6067 if (flags & NDR_IN) {
6069 if (flags & NDR_OUT) {
6070 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
6072 return NDR_ERR_SUCCESS;
6075 static enum ndr_err_code ndr_pull_svcctl_GetCurrentGroupeStateW(struct ndr_pull *ndr, int flags, struct svcctl_GetCurrentGroupeStateW *r)
6077 if (flags & NDR_IN) {
6079 if (flags & NDR_OUT) {
6080 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
6082 return NDR_ERR_SUCCESS;
6085 _PUBLIC_ void ndr_print_svcctl_GetCurrentGroupeStateW(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_GetCurrentGroupeStateW *r)
6087 ndr_print_struct(ndr, name, "svcctl_GetCurrentGroupeStateW");
6088 ndr->depth++;
6089 if (flags & NDR_SET_VALUES) {
6090 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
6092 if (flags & NDR_IN) {
6093 ndr_print_struct(ndr, "in", "svcctl_GetCurrentGroupeStateW");
6094 ndr->depth++;
6095 ndr->depth--;
6097 if (flags & NDR_OUT) {
6098 ndr_print_struct(ndr, "out", "svcctl_GetCurrentGroupeStateW");
6099 ndr->depth++;
6100 ndr_print_WERROR(ndr, "result", r->out.result);
6101 ndr->depth--;
6103 ndr->depth--;
6106 static enum ndr_err_code ndr_push_svcctl_EnumServiceGroupW(struct ndr_push *ndr, int flags, const struct svcctl_EnumServiceGroupW *r)
6108 if (flags & NDR_IN) {
6110 if (flags & NDR_OUT) {
6111 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
6113 return NDR_ERR_SUCCESS;
6116 static enum ndr_err_code ndr_pull_svcctl_EnumServiceGroupW(struct ndr_pull *ndr, int flags, struct svcctl_EnumServiceGroupW *r)
6118 if (flags & NDR_IN) {
6120 if (flags & NDR_OUT) {
6121 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
6123 return NDR_ERR_SUCCESS;
6126 _PUBLIC_ void ndr_print_svcctl_EnumServiceGroupW(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_EnumServiceGroupW *r)
6128 ndr_print_struct(ndr, name, "svcctl_EnumServiceGroupW");
6129 ndr->depth++;
6130 if (flags & NDR_SET_VALUES) {
6131 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
6133 if (flags & NDR_IN) {
6134 ndr_print_struct(ndr, "in", "svcctl_EnumServiceGroupW");
6135 ndr->depth++;
6136 ndr->depth--;
6138 if (flags & NDR_OUT) {
6139 ndr_print_struct(ndr, "out", "svcctl_EnumServiceGroupW");
6140 ndr->depth++;
6141 ndr_print_WERROR(ndr, "result", r->out.result);
6142 ndr->depth--;
6144 ndr->depth--;
6147 static enum ndr_err_code ndr_push_svcctl_ChangeServiceConfig2A(struct ndr_push *ndr, int flags, const struct svcctl_ChangeServiceConfig2A *r)
6149 if (flags & NDR_IN) {
6150 if (r->in.handle == NULL) {
6151 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
6153 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
6154 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.info_level));
6155 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.info));
6156 if (r->in.info) {
6157 NDR_CHECK(ndr_push_uint8(ndr, NDR_SCALARS, *r->in.info));
6160 if (flags & NDR_OUT) {
6161 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
6163 return NDR_ERR_SUCCESS;
6166 static enum ndr_err_code ndr_pull_svcctl_ChangeServiceConfig2A(struct ndr_pull *ndr, int flags, struct svcctl_ChangeServiceConfig2A *r)
6168 uint32_t _ptr_info;
6169 TALLOC_CTX *_mem_save_handle_0;
6170 TALLOC_CTX *_mem_save_info_0;
6171 if (flags & NDR_IN) {
6172 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
6173 NDR_PULL_ALLOC(ndr, r->in.handle);
6175 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
6176 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
6177 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
6178 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
6179 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.info_level));
6180 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_info));
6181 if (_ptr_info) {
6182 NDR_PULL_ALLOC(ndr, r->in.info);
6183 } else {
6184 r->in.info = NULL;
6186 if (r->in.info) {
6187 _mem_save_info_0 = NDR_PULL_GET_MEM_CTX(ndr);
6188 NDR_PULL_SET_MEM_CTX(ndr, r->in.info, 0);
6189 NDR_CHECK(ndr_pull_uint8(ndr, NDR_SCALARS, r->in.info));
6190 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_info_0, 0);
6193 if (flags & NDR_OUT) {
6194 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
6196 return NDR_ERR_SUCCESS;
6199 _PUBLIC_ void ndr_print_svcctl_ChangeServiceConfig2A(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_ChangeServiceConfig2A *r)
6201 ndr_print_struct(ndr, name, "svcctl_ChangeServiceConfig2A");
6202 ndr->depth++;
6203 if (flags & NDR_SET_VALUES) {
6204 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
6206 if (flags & NDR_IN) {
6207 ndr_print_struct(ndr, "in", "svcctl_ChangeServiceConfig2A");
6208 ndr->depth++;
6209 ndr_print_ptr(ndr, "handle", r->in.handle);
6210 ndr->depth++;
6211 ndr_print_policy_handle(ndr, "handle", r->in.handle);
6212 ndr->depth--;
6213 ndr_print_uint32(ndr, "info_level", r->in.info_level);
6214 ndr_print_ptr(ndr, "info", r->in.info);
6215 ndr->depth++;
6216 if (r->in.info) {
6217 ndr_print_uint8(ndr, "info", *r->in.info);
6219 ndr->depth--;
6220 ndr->depth--;
6222 if (flags & NDR_OUT) {
6223 ndr_print_struct(ndr, "out", "svcctl_ChangeServiceConfig2A");
6224 ndr->depth++;
6225 ndr_print_WERROR(ndr, "result", r->out.result);
6226 ndr->depth--;
6228 ndr->depth--;
6231 static enum ndr_err_code ndr_push_svcctl_ChangeServiceConfig2W(struct ndr_push *ndr, int flags, const struct svcctl_ChangeServiceConfig2W *r)
6233 if (flags & NDR_IN) {
6234 if (r->in.handle == NULL) {
6235 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
6237 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
6238 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.info_level));
6239 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.info));
6240 if (r->in.info) {
6241 NDR_CHECK(ndr_push_uint8(ndr, NDR_SCALARS, *r->in.info));
6244 if (flags & NDR_OUT) {
6245 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
6247 return NDR_ERR_SUCCESS;
6250 static enum ndr_err_code ndr_pull_svcctl_ChangeServiceConfig2W(struct ndr_pull *ndr, int flags, struct svcctl_ChangeServiceConfig2W *r)
6252 uint32_t _ptr_info;
6253 TALLOC_CTX *_mem_save_handle_0;
6254 TALLOC_CTX *_mem_save_info_0;
6255 if (flags & NDR_IN) {
6256 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
6257 NDR_PULL_ALLOC(ndr, r->in.handle);
6259 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
6260 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
6261 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
6262 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
6263 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.info_level));
6264 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_info));
6265 if (_ptr_info) {
6266 NDR_PULL_ALLOC(ndr, r->in.info);
6267 } else {
6268 r->in.info = NULL;
6270 if (r->in.info) {
6271 _mem_save_info_0 = NDR_PULL_GET_MEM_CTX(ndr);
6272 NDR_PULL_SET_MEM_CTX(ndr, r->in.info, 0);
6273 NDR_CHECK(ndr_pull_uint8(ndr, NDR_SCALARS, r->in.info));
6274 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_info_0, 0);
6277 if (flags & NDR_OUT) {
6278 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
6280 return NDR_ERR_SUCCESS;
6283 _PUBLIC_ void ndr_print_svcctl_ChangeServiceConfig2W(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_ChangeServiceConfig2W *r)
6285 ndr_print_struct(ndr, name, "svcctl_ChangeServiceConfig2W");
6286 ndr->depth++;
6287 if (flags & NDR_SET_VALUES) {
6288 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
6290 if (flags & NDR_IN) {
6291 ndr_print_struct(ndr, "in", "svcctl_ChangeServiceConfig2W");
6292 ndr->depth++;
6293 ndr_print_ptr(ndr, "handle", r->in.handle);
6294 ndr->depth++;
6295 ndr_print_policy_handle(ndr, "handle", r->in.handle);
6296 ndr->depth--;
6297 ndr_print_uint32(ndr, "info_level", r->in.info_level);
6298 ndr_print_ptr(ndr, "info", r->in.info);
6299 ndr->depth++;
6300 if (r->in.info) {
6301 ndr_print_uint8(ndr, "info", *r->in.info);
6303 ndr->depth--;
6304 ndr->depth--;
6306 if (flags & NDR_OUT) {
6307 ndr_print_struct(ndr, "out", "svcctl_ChangeServiceConfig2W");
6308 ndr->depth++;
6309 ndr_print_WERROR(ndr, "result", r->out.result);
6310 ndr->depth--;
6312 ndr->depth--;
6315 static enum ndr_err_code ndr_push_svcctl_QueryServiceConfig2A(struct ndr_push *ndr, int flags, const struct svcctl_QueryServiceConfig2A *r)
6317 if (flags & NDR_IN) {
6318 if (r->in.handle == NULL) {
6319 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
6321 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
6322 NDR_CHECK(ndr_push_svcctl_ConfigLevel(ndr, NDR_SCALARS, r->in.info_level));
6323 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.offered));
6325 if (flags & NDR_OUT) {
6326 NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->out.buffer, r->in.offered));
6327 if (r->out.needed == NULL) {
6328 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
6330 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.needed));
6331 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
6333 return NDR_ERR_SUCCESS;
6336 static enum ndr_err_code ndr_pull_svcctl_QueryServiceConfig2A(struct ndr_pull *ndr, int flags, struct svcctl_QueryServiceConfig2A *r)
6338 uint32_t size_buffer_0 = 0;
6339 TALLOC_CTX *_mem_save_handle_0;
6340 TALLOC_CTX *_mem_save_needed_0;
6341 if (flags & NDR_IN) {
6342 ZERO_STRUCT(r->out);
6344 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
6345 NDR_PULL_ALLOC(ndr, r->in.handle);
6347 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
6348 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
6349 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
6350 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
6351 NDR_CHECK(ndr_pull_svcctl_ConfigLevel(ndr, NDR_SCALARS, &r->in.info_level));
6352 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.offered));
6353 NDR_PULL_ALLOC(ndr, r->out.needed);
6354 ZERO_STRUCTP(r->out.needed);
6356 if (flags & NDR_OUT) {
6357 size_buffer_0 = r->in.offered;
6358 NDR_PULL_ALLOC_N(ndr, r->out.buffer, size_buffer_0);
6359 NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->out.buffer, size_buffer_0));
6360 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
6361 NDR_PULL_ALLOC(ndr, r->out.needed);
6363 _mem_save_needed_0 = NDR_PULL_GET_MEM_CTX(ndr);
6364 NDR_PULL_SET_MEM_CTX(ndr, r->out.needed, LIBNDR_FLAG_REF_ALLOC);
6365 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.needed));
6366 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_needed_0, LIBNDR_FLAG_REF_ALLOC);
6367 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
6369 return NDR_ERR_SUCCESS;
6372 _PUBLIC_ void ndr_print_svcctl_QueryServiceConfig2A(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_QueryServiceConfig2A *r)
6374 ndr_print_struct(ndr, name, "svcctl_QueryServiceConfig2A");
6375 ndr->depth++;
6376 if (flags & NDR_SET_VALUES) {
6377 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
6379 if (flags & NDR_IN) {
6380 ndr_print_struct(ndr, "in", "svcctl_QueryServiceConfig2A");
6381 ndr->depth++;
6382 ndr_print_ptr(ndr, "handle", r->in.handle);
6383 ndr->depth++;
6384 ndr_print_policy_handle(ndr, "handle", r->in.handle);
6385 ndr->depth--;
6386 ndr_print_svcctl_ConfigLevel(ndr, "info_level", r->in.info_level);
6387 ndr_print_uint32(ndr, "offered", r->in.offered);
6388 ndr->depth--;
6390 if (flags & NDR_OUT) {
6391 ndr_print_struct(ndr, "out", "svcctl_QueryServiceConfig2A");
6392 ndr->depth++;
6393 ndr_print_array_uint8(ndr, "buffer", r->out.buffer, r->in.offered);
6394 ndr_print_ptr(ndr, "needed", r->out.needed);
6395 ndr->depth++;
6396 ndr_print_uint32(ndr, "needed", *r->out.needed);
6397 ndr->depth--;
6398 ndr_print_WERROR(ndr, "result", r->out.result);
6399 ndr->depth--;
6401 ndr->depth--;
6404 static enum ndr_err_code ndr_push_svcctl_QueryServiceConfig2W(struct ndr_push *ndr, int flags, const struct svcctl_QueryServiceConfig2W *r)
6406 if (flags & NDR_IN) {
6407 if (r->in.handle == NULL) {
6408 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
6410 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
6411 NDR_CHECK(ndr_push_svcctl_ConfigLevel(ndr, NDR_SCALARS, r->in.info_level));
6412 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.offered));
6414 if (flags & NDR_OUT) {
6415 if (r->out.buffer == NULL) {
6416 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
6418 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, r->in.offered));
6419 NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->out.buffer, r->in.offered));
6420 if (r->out.needed == NULL) {
6421 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
6423 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.needed));
6424 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
6426 return NDR_ERR_SUCCESS;
6429 static enum ndr_err_code ndr_pull_svcctl_QueryServiceConfig2W(struct ndr_pull *ndr, int flags, struct svcctl_QueryServiceConfig2W *r)
6431 uint32_t size_buffer_1 = 0;
6432 TALLOC_CTX *_mem_save_handle_0;
6433 TALLOC_CTX *_mem_save_needed_0;
6434 if (flags & NDR_IN) {
6435 ZERO_STRUCT(r->out);
6437 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
6438 NDR_PULL_ALLOC(ndr, r->in.handle);
6440 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
6441 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
6442 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
6443 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
6444 NDR_CHECK(ndr_pull_svcctl_ConfigLevel(ndr, NDR_SCALARS, &r->in.info_level));
6445 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.offered));
6446 if (r->in.offered > 8192) {
6447 return ndr_pull_error(ndr, NDR_ERR_RANGE, "value out of range");
6449 NDR_PULL_ALLOC_N(ndr, r->out.buffer, r->in.offered);
6450 memset(r->out.buffer, 0, (r->in.offered) * sizeof(*r->out.buffer));
6451 NDR_PULL_ALLOC(ndr, r->out.needed);
6452 ZERO_STRUCTP(r->out.needed);
6454 if (flags & NDR_OUT) {
6455 NDR_CHECK(ndr_pull_array_size(ndr, &r->out.buffer));
6456 size_buffer_1 = ndr_get_array_size(ndr, &r->out.buffer);
6457 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
6458 NDR_PULL_ALLOC_N(ndr, r->out.buffer, size_buffer_1);
6460 NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->out.buffer, size_buffer_1));
6461 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
6462 NDR_PULL_ALLOC(ndr, r->out.needed);
6464 _mem_save_needed_0 = NDR_PULL_GET_MEM_CTX(ndr);
6465 NDR_PULL_SET_MEM_CTX(ndr, r->out.needed, LIBNDR_FLAG_REF_ALLOC);
6466 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.needed));
6467 if (*r->out.needed > 8192) {
6468 return ndr_pull_error(ndr, NDR_ERR_RANGE, "value out of range");
6470 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_needed_0, LIBNDR_FLAG_REF_ALLOC);
6471 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
6472 if (r->out.buffer) {
6473 NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->out.buffer, r->in.offered));
6476 return NDR_ERR_SUCCESS;
6479 _PUBLIC_ void ndr_print_svcctl_QueryServiceConfig2W(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_QueryServiceConfig2W *r)
6481 ndr_print_struct(ndr, name, "svcctl_QueryServiceConfig2W");
6482 ndr->depth++;
6483 if (flags & NDR_SET_VALUES) {
6484 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
6486 if (flags & NDR_IN) {
6487 ndr_print_struct(ndr, "in", "svcctl_QueryServiceConfig2W");
6488 ndr->depth++;
6489 ndr_print_ptr(ndr, "handle", r->in.handle);
6490 ndr->depth++;
6491 ndr_print_policy_handle(ndr, "handle", r->in.handle);
6492 ndr->depth--;
6493 ndr_print_svcctl_ConfigLevel(ndr, "info_level", r->in.info_level);
6494 ndr_print_uint32(ndr, "offered", r->in.offered);
6495 ndr->depth--;
6497 if (flags & NDR_OUT) {
6498 ndr_print_struct(ndr, "out", "svcctl_QueryServiceConfig2W");
6499 ndr->depth++;
6500 ndr_print_ptr(ndr, "buffer", r->out.buffer);
6501 ndr->depth++;
6502 ndr_print_array_uint8(ndr, "buffer", r->out.buffer, r->in.offered);
6503 ndr->depth--;
6504 ndr_print_ptr(ndr, "needed", r->out.needed);
6505 ndr->depth++;
6506 ndr_print_uint32(ndr, "needed", *r->out.needed);
6507 ndr->depth--;
6508 ndr_print_WERROR(ndr, "result", r->out.result);
6509 ndr->depth--;
6511 ndr->depth--;
6514 static enum ndr_err_code ndr_push_svcctl_QueryServiceStatusEx(struct ndr_push *ndr, int flags, const struct svcctl_QueryServiceStatusEx *r)
6516 if (flags & NDR_IN) {
6517 if (r->in.handle == NULL) {
6518 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
6520 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
6521 NDR_CHECK(ndr_push_svcctl_StatusLevel(ndr, NDR_SCALARS, r->in.info_level));
6522 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.offered));
6524 if (flags & NDR_OUT) {
6525 if (r->out.buffer == NULL) {
6526 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
6528 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, r->in.offered));
6529 NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->out.buffer, r->in.offered));
6530 if (r->out.needed == NULL) {
6531 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
6533 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.needed));
6534 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
6536 return NDR_ERR_SUCCESS;
6539 static enum ndr_err_code ndr_pull_svcctl_QueryServiceStatusEx(struct ndr_pull *ndr, int flags, struct svcctl_QueryServiceStatusEx *r)
6541 uint32_t size_buffer_1 = 0;
6542 TALLOC_CTX *_mem_save_handle_0;
6543 TALLOC_CTX *_mem_save_needed_0;
6544 if (flags & NDR_IN) {
6545 ZERO_STRUCT(r->out);
6547 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
6548 NDR_PULL_ALLOC(ndr, r->in.handle);
6550 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
6551 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
6552 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
6553 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
6554 NDR_CHECK(ndr_pull_svcctl_StatusLevel(ndr, NDR_SCALARS, &r->in.info_level));
6555 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.offered));
6556 if (r->in.offered > 8192) {
6557 return ndr_pull_error(ndr, NDR_ERR_RANGE, "value out of range");
6559 NDR_PULL_ALLOC_N(ndr, r->out.buffer, r->in.offered);
6560 memset(r->out.buffer, 0, (r->in.offered) * sizeof(*r->out.buffer));
6561 NDR_PULL_ALLOC(ndr, r->out.needed);
6562 ZERO_STRUCTP(r->out.needed);
6564 if (flags & NDR_OUT) {
6565 NDR_CHECK(ndr_pull_array_size(ndr, &r->out.buffer));
6566 size_buffer_1 = ndr_get_array_size(ndr, &r->out.buffer);
6567 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
6568 NDR_PULL_ALLOC_N(ndr, r->out.buffer, size_buffer_1);
6570 NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->out.buffer, size_buffer_1));
6571 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
6572 NDR_PULL_ALLOC(ndr, r->out.needed);
6574 _mem_save_needed_0 = NDR_PULL_GET_MEM_CTX(ndr);
6575 NDR_PULL_SET_MEM_CTX(ndr, r->out.needed, LIBNDR_FLAG_REF_ALLOC);
6576 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.needed));
6577 if (*r->out.needed > 8192) {
6578 return ndr_pull_error(ndr, NDR_ERR_RANGE, "value out of range");
6580 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_needed_0, LIBNDR_FLAG_REF_ALLOC);
6581 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
6582 if (r->out.buffer) {
6583 NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->out.buffer, r->in.offered));
6586 return NDR_ERR_SUCCESS;
6589 _PUBLIC_ void ndr_print_svcctl_QueryServiceStatusEx(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_QueryServiceStatusEx *r)
6591 ndr_print_struct(ndr, name, "svcctl_QueryServiceStatusEx");
6592 ndr->depth++;
6593 if (flags & NDR_SET_VALUES) {
6594 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
6596 if (flags & NDR_IN) {
6597 ndr_print_struct(ndr, "in", "svcctl_QueryServiceStatusEx");
6598 ndr->depth++;
6599 ndr_print_ptr(ndr, "handle", r->in.handle);
6600 ndr->depth++;
6601 ndr_print_policy_handle(ndr, "handle", r->in.handle);
6602 ndr->depth--;
6603 ndr_print_svcctl_StatusLevel(ndr, "info_level", r->in.info_level);
6604 ndr_print_uint32(ndr, "offered", r->in.offered);
6605 ndr->depth--;
6607 if (flags & NDR_OUT) {
6608 ndr_print_struct(ndr, "out", "svcctl_QueryServiceStatusEx");
6609 ndr->depth++;
6610 ndr_print_ptr(ndr, "buffer", r->out.buffer);
6611 ndr->depth++;
6612 ndr_print_array_uint8(ndr, "buffer", r->out.buffer, r->in.offered);
6613 ndr->depth--;
6614 ndr_print_ptr(ndr, "needed", r->out.needed);
6615 ndr->depth++;
6616 ndr_print_uint32(ndr, "needed", *r->out.needed);
6617 ndr->depth--;
6618 ndr_print_WERROR(ndr, "result", r->out.result);
6619 ndr->depth--;
6621 ndr->depth--;
6624 static enum ndr_err_code ndr_push_EnumServicesStatusExA(struct ndr_push *ndr, int flags, const struct EnumServicesStatusExA *r)
6626 if (flags & NDR_IN) {
6627 if (r->in.scmanager == NULL) {
6628 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
6630 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.scmanager));
6631 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.info_level));
6632 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.type));
6633 NDR_CHECK(ndr_push_svcctl_ServiceState(ndr, NDR_SCALARS, r->in.state));
6634 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.offered));
6635 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.resume_handle));
6636 if (r->in.resume_handle) {
6637 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->in.resume_handle));
6640 if (flags & NDR_OUT) {
6641 NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->out.services, r->in.offered));
6642 if (r->out.needed == NULL) {
6643 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
6645 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.needed));
6646 if (r->out.service_returned == NULL) {
6647 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
6649 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.service_returned));
6650 NDR_CHECK(ndr_push_unique_ptr(ndr, r->out.resume_handle));
6651 if (r->out.resume_handle) {
6652 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.resume_handle));
6654 if (r->out.group_name == NULL) {
6655 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
6657 NDR_CHECK(ndr_push_unique_ptr(ndr, *r->out.group_name));
6658 if (*r->out.group_name) {
6659 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(*r->out.group_name, CH_UTF16)));
6660 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0));
6661 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(*r->out.group_name, CH_UTF16)));
6662 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));
6664 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
6666 return NDR_ERR_SUCCESS;
6669 static enum ndr_err_code ndr_pull_EnumServicesStatusExA(struct ndr_pull *ndr, int flags, struct EnumServicesStatusExA *r)
6671 uint32_t size_services_0 = 0;
6672 uint32_t _ptr_resume_handle;
6673 uint32_t _ptr_group_name;
6674 uint32_t size_group_name_2 = 0;
6675 uint32_t length_group_name_2 = 0;
6676 TALLOC_CTX *_mem_save_scmanager_0;
6677 TALLOC_CTX *_mem_save_needed_0;
6678 TALLOC_CTX *_mem_save_service_returned_0;
6679 TALLOC_CTX *_mem_save_resume_handle_0;
6680 TALLOC_CTX *_mem_save_group_name_0;
6681 TALLOC_CTX *_mem_save_group_name_1;
6682 if (flags & NDR_IN) {
6683 ZERO_STRUCT(r->out);
6685 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
6686 NDR_PULL_ALLOC(ndr, r->in.scmanager);
6688 _mem_save_scmanager_0 = NDR_PULL_GET_MEM_CTX(ndr);
6689 NDR_PULL_SET_MEM_CTX(ndr, r->in.scmanager, LIBNDR_FLAG_REF_ALLOC);
6690 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.scmanager));
6691 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_scmanager_0, LIBNDR_FLAG_REF_ALLOC);
6692 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.info_level));
6693 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.type));
6694 NDR_CHECK(ndr_pull_svcctl_ServiceState(ndr, NDR_SCALARS, &r->in.state));
6695 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.offered));
6696 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_resume_handle));
6697 if (_ptr_resume_handle) {
6698 NDR_PULL_ALLOC(ndr, r->in.resume_handle);
6699 } else {
6700 r->in.resume_handle = NULL;
6702 if (r->in.resume_handle) {
6703 _mem_save_resume_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
6704 NDR_PULL_SET_MEM_CTX(ndr, r->in.resume_handle, 0);
6705 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->in.resume_handle));
6706 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_resume_handle_0, 0);
6708 NDR_PULL_ALLOC(ndr, r->out.needed);
6709 ZERO_STRUCTP(r->out.needed);
6710 NDR_PULL_ALLOC(ndr, r->out.service_returned);
6711 ZERO_STRUCTP(r->out.service_returned);
6712 NDR_PULL_ALLOC(ndr, r->out.group_name);
6713 ZERO_STRUCTP(r->out.group_name);
6715 if (flags & NDR_OUT) {
6716 size_services_0 = r->in.offered;
6717 NDR_PULL_ALLOC_N(ndr, r->out.services, size_services_0);
6718 NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->out.services, size_services_0));
6719 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
6720 NDR_PULL_ALLOC(ndr, r->out.needed);
6722 _mem_save_needed_0 = NDR_PULL_GET_MEM_CTX(ndr);
6723 NDR_PULL_SET_MEM_CTX(ndr, r->out.needed, LIBNDR_FLAG_REF_ALLOC);
6724 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.needed));
6725 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_needed_0, LIBNDR_FLAG_REF_ALLOC);
6726 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
6727 NDR_PULL_ALLOC(ndr, r->out.service_returned);
6729 _mem_save_service_returned_0 = NDR_PULL_GET_MEM_CTX(ndr);
6730 NDR_PULL_SET_MEM_CTX(ndr, r->out.service_returned, LIBNDR_FLAG_REF_ALLOC);
6731 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.service_returned));
6732 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_service_returned_0, LIBNDR_FLAG_REF_ALLOC);
6733 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_resume_handle));
6734 if (_ptr_resume_handle) {
6735 NDR_PULL_ALLOC(ndr, r->out.resume_handle);
6736 } else {
6737 r->out.resume_handle = NULL;
6739 if (r->out.resume_handle) {
6740 _mem_save_resume_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
6741 NDR_PULL_SET_MEM_CTX(ndr, r->out.resume_handle, 0);
6742 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.resume_handle));
6743 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_resume_handle_0, 0);
6745 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
6746 NDR_PULL_ALLOC(ndr, r->out.group_name);
6748 _mem_save_group_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
6749 NDR_PULL_SET_MEM_CTX(ndr, r->out.group_name, LIBNDR_FLAG_REF_ALLOC);
6750 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_group_name));
6751 if (_ptr_group_name) {
6752 NDR_PULL_ALLOC(ndr, *r->out.group_name);
6753 } else {
6754 *r->out.group_name = NULL;
6756 if (*r->out.group_name) {
6757 _mem_save_group_name_1 = NDR_PULL_GET_MEM_CTX(ndr);
6758 NDR_PULL_SET_MEM_CTX(ndr, *r->out.group_name, 0);
6759 NDR_CHECK(ndr_pull_array_size(ndr, r->out.group_name));
6760 NDR_CHECK(ndr_pull_array_length(ndr, r->out.group_name));
6761 size_group_name_2 = ndr_get_array_size(ndr, r->out.group_name);
6762 length_group_name_2 = ndr_get_array_length(ndr, r->out.group_name);
6763 if (length_group_name_2 > size_group_name_2) {
6764 return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", size_group_name_2, length_group_name_2);
6766 NDR_CHECK(ndr_check_string_terminator(ndr, length_group_name_2, sizeof(uint16_t)));
6767 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, r->out.group_name, length_group_name_2, sizeof(uint16_t), CH_UTF16));
6768 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_group_name_1, 0);
6770 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_group_name_0, LIBNDR_FLAG_REF_ALLOC);
6771 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
6773 return NDR_ERR_SUCCESS;
6776 _PUBLIC_ void ndr_print_EnumServicesStatusExA(struct ndr_print *ndr, const char *name, int flags, const struct EnumServicesStatusExA *r)
6778 ndr_print_struct(ndr, name, "EnumServicesStatusExA");
6779 ndr->depth++;
6780 if (flags & NDR_SET_VALUES) {
6781 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
6783 if (flags & NDR_IN) {
6784 ndr_print_struct(ndr, "in", "EnumServicesStatusExA");
6785 ndr->depth++;
6786 ndr_print_ptr(ndr, "scmanager", r->in.scmanager);
6787 ndr->depth++;
6788 ndr_print_policy_handle(ndr, "scmanager", r->in.scmanager);
6789 ndr->depth--;
6790 ndr_print_uint32(ndr, "info_level", r->in.info_level);
6791 ndr_print_uint32(ndr, "type", r->in.type);
6792 ndr_print_svcctl_ServiceState(ndr, "state", r->in.state);
6793 ndr_print_uint32(ndr, "offered", r->in.offered);
6794 ndr_print_ptr(ndr, "resume_handle", r->in.resume_handle);
6795 ndr->depth++;
6796 if (r->in.resume_handle) {
6797 ndr_print_uint32(ndr, "resume_handle", *r->in.resume_handle);
6799 ndr->depth--;
6800 ndr->depth--;
6802 if (flags & NDR_OUT) {
6803 ndr_print_struct(ndr, "out", "EnumServicesStatusExA");
6804 ndr->depth++;
6805 ndr_print_array_uint8(ndr, "services", r->out.services, r->in.offered);
6806 ndr_print_ptr(ndr, "needed", r->out.needed);
6807 ndr->depth++;
6808 ndr_print_uint32(ndr, "needed", *r->out.needed);
6809 ndr->depth--;
6810 ndr_print_ptr(ndr, "service_returned", r->out.service_returned);
6811 ndr->depth++;
6812 ndr_print_uint32(ndr, "service_returned", *r->out.service_returned);
6813 ndr->depth--;
6814 ndr_print_ptr(ndr, "resume_handle", r->out.resume_handle);
6815 ndr->depth++;
6816 if (r->out.resume_handle) {
6817 ndr_print_uint32(ndr, "resume_handle", *r->out.resume_handle);
6819 ndr->depth--;
6820 ndr_print_ptr(ndr, "group_name", r->out.group_name);
6821 ndr->depth++;
6822 ndr_print_ptr(ndr, "group_name", *r->out.group_name);
6823 ndr->depth++;
6824 if (*r->out.group_name) {
6825 ndr_print_string(ndr, "group_name", *r->out.group_name);
6827 ndr->depth--;
6828 ndr->depth--;
6829 ndr_print_WERROR(ndr, "result", r->out.result);
6830 ndr->depth--;
6832 ndr->depth--;
6835 static enum ndr_err_code ndr_push_EnumServicesStatusExW(struct ndr_push *ndr, int flags, const struct EnumServicesStatusExW *r)
6837 if (flags & NDR_IN) {
6838 if (r->in.scmanager == NULL) {
6839 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
6841 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.scmanager));
6842 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.info_level));
6843 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.type));
6844 NDR_CHECK(ndr_push_svcctl_ServiceState(ndr, NDR_SCALARS, r->in.state));
6845 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.offered));
6846 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.resume_handle));
6847 if (r->in.resume_handle) {
6848 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->in.resume_handle));
6850 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.group_name));
6851 if (r->in.group_name) {
6852 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.group_name, CH_UTF16)));
6853 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0));
6854 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.group_name, CH_UTF16)));
6855 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));
6858 if (flags & NDR_OUT) {
6859 if (r->out.services == NULL) {
6860 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
6862 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, r->in.offered));
6863 NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->out.services, r->in.offered));
6864 if (r->out.needed == NULL) {
6865 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
6867 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.needed));
6868 if (r->out.service_returned == NULL) {
6869 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
6871 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.service_returned));
6872 NDR_CHECK(ndr_push_unique_ptr(ndr, r->out.resume_handle));
6873 if (r->out.resume_handle) {
6874 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.resume_handle));
6876 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
6878 return NDR_ERR_SUCCESS;
6881 static enum ndr_err_code ndr_pull_EnumServicesStatusExW(struct ndr_pull *ndr, int flags, struct EnumServicesStatusExW *r)
6883 uint32_t size_services_1 = 0;
6884 uint32_t _ptr_resume_handle;
6885 uint32_t _ptr_group_name;
6886 uint32_t size_group_name_1 = 0;
6887 uint32_t length_group_name_1 = 0;
6888 TALLOC_CTX *_mem_save_scmanager_0;
6889 TALLOC_CTX *_mem_save_needed_0;
6890 TALLOC_CTX *_mem_save_service_returned_0;
6891 TALLOC_CTX *_mem_save_resume_handle_0;
6892 TALLOC_CTX *_mem_save_group_name_0;
6893 if (flags & NDR_IN) {
6894 ZERO_STRUCT(r->out);
6896 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
6897 NDR_PULL_ALLOC(ndr, r->in.scmanager);
6899 _mem_save_scmanager_0 = NDR_PULL_GET_MEM_CTX(ndr);
6900 NDR_PULL_SET_MEM_CTX(ndr, r->in.scmanager, LIBNDR_FLAG_REF_ALLOC);
6901 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.scmanager));
6902 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_scmanager_0, LIBNDR_FLAG_REF_ALLOC);
6903 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.info_level));
6904 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.type));
6905 NDR_CHECK(ndr_pull_svcctl_ServiceState(ndr, NDR_SCALARS, &r->in.state));
6906 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.offered));
6907 if (r->in.offered > 0x40000) {
6908 return ndr_pull_error(ndr, NDR_ERR_RANGE, "value out of range");
6910 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_resume_handle));
6911 if (_ptr_resume_handle) {
6912 NDR_PULL_ALLOC(ndr, r->in.resume_handle);
6913 } else {
6914 r->in.resume_handle = NULL;
6916 if (r->in.resume_handle) {
6917 _mem_save_resume_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
6918 NDR_PULL_SET_MEM_CTX(ndr, r->in.resume_handle, 0);
6919 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->in.resume_handle));
6920 if (*r->in.resume_handle > 0x40000) {
6921 return ndr_pull_error(ndr, NDR_ERR_RANGE, "value out of range");
6923 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_resume_handle_0, 0);
6925 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_group_name));
6926 if (_ptr_group_name) {
6927 NDR_PULL_ALLOC(ndr, r->in.group_name);
6928 } else {
6929 r->in.group_name = NULL;
6931 if (r->in.group_name) {
6932 _mem_save_group_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
6933 NDR_PULL_SET_MEM_CTX(ndr, r->in.group_name, 0);
6934 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.group_name));
6935 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.group_name));
6936 size_group_name_1 = ndr_get_array_size(ndr, &r->in.group_name);
6937 length_group_name_1 = ndr_get_array_length(ndr, &r->in.group_name);
6938 if (length_group_name_1 > size_group_name_1) {
6939 return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", size_group_name_1, length_group_name_1);
6941 NDR_CHECK(ndr_check_string_terminator(ndr, length_group_name_1, sizeof(uint16_t)));
6942 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.group_name, length_group_name_1, sizeof(uint16_t), CH_UTF16));
6943 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_group_name_0, 0);
6945 NDR_PULL_ALLOC_N(ndr, r->out.services, r->in.offered);
6946 memset(r->out.services, 0, (r->in.offered) * sizeof(*r->out.services));
6947 NDR_PULL_ALLOC(ndr, r->out.needed);
6948 ZERO_STRUCTP(r->out.needed);
6949 NDR_PULL_ALLOC(ndr, r->out.service_returned);
6950 ZERO_STRUCTP(r->out.service_returned);
6952 if (flags & NDR_OUT) {
6953 NDR_CHECK(ndr_pull_array_size(ndr, &r->out.services));
6954 size_services_1 = ndr_get_array_size(ndr, &r->out.services);
6955 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
6956 NDR_PULL_ALLOC_N(ndr, r->out.services, size_services_1);
6958 NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->out.services, size_services_1));
6959 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
6960 NDR_PULL_ALLOC(ndr, r->out.needed);
6962 _mem_save_needed_0 = NDR_PULL_GET_MEM_CTX(ndr);
6963 NDR_PULL_SET_MEM_CTX(ndr, r->out.needed, LIBNDR_FLAG_REF_ALLOC);
6964 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.needed));
6965 if (*r->out.needed > 0x40000) {
6966 return ndr_pull_error(ndr, NDR_ERR_RANGE, "value out of range");
6968 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_needed_0, LIBNDR_FLAG_REF_ALLOC);
6969 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
6970 NDR_PULL_ALLOC(ndr, r->out.service_returned);
6972 _mem_save_service_returned_0 = NDR_PULL_GET_MEM_CTX(ndr);
6973 NDR_PULL_SET_MEM_CTX(ndr, r->out.service_returned, LIBNDR_FLAG_REF_ALLOC);
6974 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.service_returned));
6975 if (*r->out.service_returned > 0x40000) {
6976 return ndr_pull_error(ndr, NDR_ERR_RANGE, "value out of range");
6978 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_service_returned_0, LIBNDR_FLAG_REF_ALLOC);
6979 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_resume_handle));
6980 if (_ptr_resume_handle) {
6981 NDR_PULL_ALLOC(ndr, r->out.resume_handle);
6982 } else {
6983 r->out.resume_handle = NULL;
6985 if (r->out.resume_handle) {
6986 _mem_save_resume_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
6987 NDR_PULL_SET_MEM_CTX(ndr, r->out.resume_handle, 0);
6988 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.resume_handle));
6989 if (*r->out.resume_handle > 0x40000) {
6990 return ndr_pull_error(ndr, NDR_ERR_RANGE, "value out of range");
6992 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_resume_handle_0, 0);
6994 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
6995 if (r->out.services) {
6996 NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->out.services, r->in.offered));
6999 return NDR_ERR_SUCCESS;
7002 _PUBLIC_ void ndr_print_EnumServicesStatusExW(struct ndr_print *ndr, const char *name, int flags, const struct EnumServicesStatusExW *r)
7004 ndr_print_struct(ndr, name, "EnumServicesStatusExW");
7005 ndr->depth++;
7006 if (flags & NDR_SET_VALUES) {
7007 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
7009 if (flags & NDR_IN) {
7010 ndr_print_struct(ndr, "in", "EnumServicesStatusExW");
7011 ndr->depth++;
7012 ndr_print_ptr(ndr, "scmanager", r->in.scmanager);
7013 ndr->depth++;
7014 ndr_print_policy_handle(ndr, "scmanager", r->in.scmanager);
7015 ndr->depth--;
7016 ndr_print_uint32(ndr, "info_level", r->in.info_level);
7017 ndr_print_uint32(ndr, "type", r->in.type);
7018 ndr_print_svcctl_ServiceState(ndr, "state", r->in.state);
7019 ndr_print_uint32(ndr, "offered", r->in.offered);
7020 ndr_print_ptr(ndr, "resume_handle", r->in.resume_handle);
7021 ndr->depth++;
7022 if (r->in.resume_handle) {
7023 ndr_print_uint32(ndr, "resume_handle", *r->in.resume_handle);
7025 ndr->depth--;
7026 ndr_print_ptr(ndr, "group_name", r->in.group_name);
7027 ndr->depth++;
7028 if (r->in.group_name) {
7029 ndr_print_string(ndr, "group_name", r->in.group_name);
7031 ndr->depth--;
7032 ndr->depth--;
7034 if (flags & NDR_OUT) {
7035 ndr_print_struct(ndr, "out", "EnumServicesStatusExW");
7036 ndr->depth++;
7037 ndr_print_ptr(ndr, "services", r->out.services);
7038 ndr->depth++;
7039 ndr_print_array_uint8(ndr, "services", r->out.services, r->in.offered);
7040 ndr->depth--;
7041 ndr_print_ptr(ndr, "needed", r->out.needed);
7042 ndr->depth++;
7043 ndr_print_uint32(ndr, "needed", *r->out.needed);
7044 ndr->depth--;
7045 ndr_print_ptr(ndr, "service_returned", r->out.service_returned);
7046 ndr->depth++;
7047 ndr_print_uint32(ndr, "service_returned", *r->out.service_returned);
7048 ndr->depth--;
7049 ndr_print_ptr(ndr, "resume_handle", r->out.resume_handle);
7050 ndr->depth++;
7051 if (r->out.resume_handle) {
7052 ndr_print_uint32(ndr, "resume_handle", *r->out.resume_handle);
7054 ndr->depth--;
7055 ndr_print_WERROR(ndr, "result", r->out.result);
7056 ndr->depth--;
7058 ndr->depth--;
7061 static enum ndr_err_code ndr_push_svcctl_SCSendTSMessage(struct ndr_push *ndr, int flags, const struct svcctl_SCSendTSMessage *r)
7063 if (flags & NDR_IN) {
7065 if (flags & NDR_OUT) {
7066 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
7068 return NDR_ERR_SUCCESS;
7071 static enum ndr_err_code ndr_pull_svcctl_SCSendTSMessage(struct ndr_pull *ndr, int flags, struct svcctl_SCSendTSMessage *r)
7073 if (flags & NDR_IN) {
7075 if (flags & NDR_OUT) {
7076 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
7078 return NDR_ERR_SUCCESS;
7081 _PUBLIC_ void ndr_print_svcctl_SCSendTSMessage(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_SCSendTSMessage *r)
7083 ndr_print_struct(ndr, name, "svcctl_SCSendTSMessage");
7084 ndr->depth++;
7085 if (flags & NDR_SET_VALUES) {
7086 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
7088 if (flags & NDR_IN) {
7089 ndr_print_struct(ndr, "in", "svcctl_SCSendTSMessage");
7090 ndr->depth++;
7091 ndr->depth--;
7093 if (flags & NDR_OUT) {
7094 ndr_print_struct(ndr, "out", "svcctl_SCSendTSMessage");
7095 ndr->depth++;
7096 ndr_print_WERROR(ndr, "result", r->out.result);
7097 ndr->depth--;
7099 ndr->depth--;
7102 static const struct ndr_interface_call svcctl_calls[] = {
7104 "svcctl_CloseServiceHandle",
7105 sizeof(struct svcctl_CloseServiceHandle),
7106 (ndr_push_flags_fn_t) ndr_push_svcctl_CloseServiceHandle,
7107 (ndr_pull_flags_fn_t) ndr_pull_svcctl_CloseServiceHandle,
7108 (ndr_print_function_t) ndr_print_svcctl_CloseServiceHandle,
7109 false,
7112 "svcctl_ControlService",
7113 sizeof(struct svcctl_ControlService),
7114 (ndr_push_flags_fn_t) ndr_push_svcctl_ControlService,
7115 (ndr_pull_flags_fn_t) ndr_pull_svcctl_ControlService,
7116 (ndr_print_function_t) ndr_print_svcctl_ControlService,
7117 false,
7120 "svcctl_DeleteService",
7121 sizeof(struct svcctl_DeleteService),
7122 (ndr_push_flags_fn_t) ndr_push_svcctl_DeleteService,
7123 (ndr_pull_flags_fn_t) ndr_pull_svcctl_DeleteService,
7124 (ndr_print_function_t) ndr_print_svcctl_DeleteService,
7125 false,
7128 "svcctl_LockServiceDatabase",
7129 sizeof(struct svcctl_LockServiceDatabase),
7130 (ndr_push_flags_fn_t) ndr_push_svcctl_LockServiceDatabase,
7131 (ndr_pull_flags_fn_t) ndr_pull_svcctl_LockServiceDatabase,
7132 (ndr_print_function_t) ndr_print_svcctl_LockServiceDatabase,
7133 false,
7136 "svcctl_QueryServiceObjectSecurity",
7137 sizeof(struct svcctl_QueryServiceObjectSecurity),
7138 (ndr_push_flags_fn_t) ndr_push_svcctl_QueryServiceObjectSecurity,
7139 (ndr_pull_flags_fn_t) ndr_pull_svcctl_QueryServiceObjectSecurity,
7140 (ndr_print_function_t) ndr_print_svcctl_QueryServiceObjectSecurity,
7141 false,
7144 "svcctl_SetServiceObjectSecurity",
7145 sizeof(struct svcctl_SetServiceObjectSecurity),
7146 (ndr_push_flags_fn_t) ndr_push_svcctl_SetServiceObjectSecurity,
7147 (ndr_pull_flags_fn_t) ndr_pull_svcctl_SetServiceObjectSecurity,
7148 (ndr_print_function_t) ndr_print_svcctl_SetServiceObjectSecurity,
7149 false,
7152 "svcctl_QueryServiceStatus",
7153 sizeof(struct svcctl_QueryServiceStatus),
7154 (ndr_push_flags_fn_t) ndr_push_svcctl_QueryServiceStatus,
7155 (ndr_pull_flags_fn_t) ndr_pull_svcctl_QueryServiceStatus,
7156 (ndr_print_function_t) ndr_print_svcctl_QueryServiceStatus,
7157 false,
7160 "svcctl_SetServiceStatus",
7161 sizeof(struct svcctl_SetServiceStatus),
7162 (ndr_push_flags_fn_t) ndr_push_svcctl_SetServiceStatus,
7163 (ndr_pull_flags_fn_t) ndr_pull_svcctl_SetServiceStatus,
7164 (ndr_print_function_t) ndr_print_svcctl_SetServiceStatus,
7165 false,
7168 "svcctl_UnlockServiceDatabase",
7169 sizeof(struct svcctl_UnlockServiceDatabase),
7170 (ndr_push_flags_fn_t) ndr_push_svcctl_UnlockServiceDatabase,
7171 (ndr_pull_flags_fn_t) ndr_pull_svcctl_UnlockServiceDatabase,
7172 (ndr_print_function_t) ndr_print_svcctl_UnlockServiceDatabase,
7173 false,
7176 "svcctl_NotifyBootConfigStatus",
7177 sizeof(struct svcctl_NotifyBootConfigStatus),
7178 (ndr_push_flags_fn_t) ndr_push_svcctl_NotifyBootConfigStatus,
7179 (ndr_pull_flags_fn_t) ndr_pull_svcctl_NotifyBootConfigStatus,
7180 (ndr_print_function_t) ndr_print_svcctl_NotifyBootConfigStatus,
7181 false,
7184 "svcctl_SCSetServiceBitsW",
7185 sizeof(struct svcctl_SCSetServiceBitsW),
7186 (ndr_push_flags_fn_t) ndr_push_svcctl_SCSetServiceBitsW,
7187 (ndr_pull_flags_fn_t) ndr_pull_svcctl_SCSetServiceBitsW,
7188 (ndr_print_function_t) ndr_print_svcctl_SCSetServiceBitsW,
7189 false,
7192 "svcctl_ChangeServiceConfigW",
7193 sizeof(struct svcctl_ChangeServiceConfigW),
7194 (ndr_push_flags_fn_t) ndr_push_svcctl_ChangeServiceConfigW,
7195 (ndr_pull_flags_fn_t) ndr_pull_svcctl_ChangeServiceConfigW,
7196 (ndr_print_function_t) ndr_print_svcctl_ChangeServiceConfigW,
7197 false,
7200 "svcctl_CreateServiceW",
7201 sizeof(struct svcctl_CreateServiceW),
7202 (ndr_push_flags_fn_t) ndr_push_svcctl_CreateServiceW,
7203 (ndr_pull_flags_fn_t) ndr_pull_svcctl_CreateServiceW,
7204 (ndr_print_function_t) ndr_print_svcctl_CreateServiceW,
7205 false,
7208 "svcctl_EnumDependentServicesW",
7209 sizeof(struct svcctl_EnumDependentServicesW),
7210 (ndr_push_flags_fn_t) ndr_push_svcctl_EnumDependentServicesW,
7211 (ndr_pull_flags_fn_t) ndr_pull_svcctl_EnumDependentServicesW,
7212 (ndr_print_function_t) ndr_print_svcctl_EnumDependentServicesW,
7213 false,
7216 "svcctl_EnumServicesStatusW",
7217 sizeof(struct svcctl_EnumServicesStatusW),
7218 (ndr_push_flags_fn_t) ndr_push_svcctl_EnumServicesStatusW,
7219 (ndr_pull_flags_fn_t) ndr_pull_svcctl_EnumServicesStatusW,
7220 (ndr_print_function_t) ndr_print_svcctl_EnumServicesStatusW,
7221 false,
7224 "svcctl_OpenSCManagerW",
7225 sizeof(struct svcctl_OpenSCManagerW),
7226 (ndr_push_flags_fn_t) ndr_push_svcctl_OpenSCManagerW,
7227 (ndr_pull_flags_fn_t) ndr_pull_svcctl_OpenSCManagerW,
7228 (ndr_print_function_t) ndr_print_svcctl_OpenSCManagerW,
7229 false,
7232 "svcctl_OpenServiceW",
7233 sizeof(struct svcctl_OpenServiceW),
7234 (ndr_push_flags_fn_t) ndr_push_svcctl_OpenServiceW,
7235 (ndr_pull_flags_fn_t) ndr_pull_svcctl_OpenServiceW,
7236 (ndr_print_function_t) ndr_print_svcctl_OpenServiceW,
7237 false,
7240 "svcctl_QueryServiceConfigW",
7241 sizeof(struct svcctl_QueryServiceConfigW),
7242 (ndr_push_flags_fn_t) ndr_push_svcctl_QueryServiceConfigW,
7243 (ndr_pull_flags_fn_t) ndr_pull_svcctl_QueryServiceConfigW,
7244 (ndr_print_function_t) ndr_print_svcctl_QueryServiceConfigW,
7245 false,
7248 "svcctl_QueryServiceLockStatusW",
7249 sizeof(struct svcctl_QueryServiceLockStatusW),
7250 (ndr_push_flags_fn_t) ndr_push_svcctl_QueryServiceLockStatusW,
7251 (ndr_pull_flags_fn_t) ndr_pull_svcctl_QueryServiceLockStatusW,
7252 (ndr_print_function_t) ndr_print_svcctl_QueryServiceLockStatusW,
7253 false,
7256 "svcctl_StartServiceW",
7257 sizeof(struct svcctl_StartServiceW),
7258 (ndr_push_flags_fn_t) ndr_push_svcctl_StartServiceW,
7259 (ndr_pull_flags_fn_t) ndr_pull_svcctl_StartServiceW,
7260 (ndr_print_function_t) ndr_print_svcctl_StartServiceW,
7261 false,
7264 "svcctl_GetServiceDisplayNameW",
7265 sizeof(struct svcctl_GetServiceDisplayNameW),
7266 (ndr_push_flags_fn_t) ndr_push_svcctl_GetServiceDisplayNameW,
7267 (ndr_pull_flags_fn_t) ndr_pull_svcctl_GetServiceDisplayNameW,
7268 (ndr_print_function_t) ndr_print_svcctl_GetServiceDisplayNameW,
7269 false,
7272 "svcctl_GetServiceKeyNameW",
7273 sizeof(struct svcctl_GetServiceKeyNameW),
7274 (ndr_push_flags_fn_t) ndr_push_svcctl_GetServiceKeyNameW,
7275 (ndr_pull_flags_fn_t) ndr_pull_svcctl_GetServiceKeyNameW,
7276 (ndr_print_function_t) ndr_print_svcctl_GetServiceKeyNameW,
7277 false,
7280 "svcctl_SCSetServiceBitsA",
7281 sizeof(struct svcctl_SCSetServiceBitsA),
7282 (ndr_push_flags_fn_t) ndr_push_svcctl_SCSetServiceBitsA,
7283 (ndr_pull_flags_fn_t) ndr_pull_svcctl_SCSetServiceBitsA,
7284 (ndr_print_function_t) ndr_print_svcctl_SCSetServiceBitsA,
7285 false,
7288 "svcctl_ChangeServiceConfigA",
7289 sizeof(struct svcctl_ChangeServiceConfigA),
7290 (ndr_push_flags_fn_t) ndr_push_svcctl_ChangeServiceConfigA,
7291 (ndr_pull_flags_fn_t) ndr_pull_svcctl_ChangeServiceConfigA,
7292 (ndr_print_function_t) ndr_print_svcctl_ChangeServiceConfigA,
7293 false,
7296 "svcctl_CreateServiceA",
7297 sizeof(struct svcctl_CreateServiceA),
7298 (ndr_push_flags_fn_t) ndr_push_svcctl_CreateServiceA,
7299 (ndr_pull_flags_fn_t) ndr_pull_svcctl_CreateServiceA,
7300 (ndr_print_function_t) ndr_print_svcctl_CreateServiceA,
7301 false,
7304 "svcctl_EnumDependentServicesA",
7305 sizeof(struct svcctl_EnumDependentServicesA),
7306 (ndr_push_flags_fn_t) ndr_push_svcctl_EnumDependentServicesA,
7307 (ndr_pull_flags_fn_t) ndr_pull_svcctl_EnumDependentServicesA,
7308 (ndr_print_function_t) ndr_print_svcctl_EnumDependentServicesA,
7309 false,
7312 "svcctl_EnumServicesStatusA",
7313 sizeof(struct svcctl_EnumServicesStatusA),
7314 (ndr_push_flags_fn_t) ndr_push_svcctl_EnumServicesStatusA,
7315 (ndr_pull_flags_fn_t) ndr_pull_svcctl_EnumServicesStatusA,
7316 (ndr_print_function_t) ndr_print_svcctl_EnumServicesStatusA,
7317 false,
7320 "svcctl_OpenSCManagerA",
7321 sizeof(struct svcctl_OpenSCManagerA),
7322 (ndr_push_flags_fn_t) ndr_push_svcctl_OpenSCManagerA,
7323 (ndr_pull_flags_fn_t) ndr_pull_svcctl_OpenSCManagerA,
7324 (ndr_print_function_t) ndr_print_svcctl_OpenSCManagerA,
7325 false,
7328 "svcctl_OpenServiceA",
7329 sizeof(struct svcctl_OpenServiceA),
7330 (ndr_push_flags_fn_t) ndr_push_svcctl_OpenServiceA,
7331 (ndr_pull_flags_fn_t) ndr_pull_svcctl_OpenServiceA,
7332 (ndr_print_function_t) ndr_print_svcctl_OpenServiceA,
7333 false,
7336 "svcctl_QueryServiceConfigA",
7337 sizeof(struct svcctl_QueryServiceConfigA),
7338 (ndr_push_flags_fn_t) ndr_push_svcctl_QueryServiceConfigA,
7339 (ndr_pull_flags_fn_t) ndr_pull_svcctl_QueryServiceConfigA,
7340 (ndr_print_function_t) ndr_print_svcctl_QueryServiceConfigA,
7341 false,
7344 "svcctl_QueryServiceLockStatusA",
7345 sizeof(struct svcctl_QueryServiceLockStatusA),
7346 (ndr_push_flags_fn_t) ndr_push_svcctl_QueryServiceLockStatusA,
7347 (ndr_pull_flags_fn_t) ndr_pull_svcctl_QueryServiceLockStatusA,
7348 (ndr_print_function_t) ndr_print_svcctl_QueryServiceLockStatusA,
7349 false,
7352 "svcctl_StartServiceA",
7353 sizeof(struct svcctl_StartServiceA),
7354 (ndr_push_flags_fn_t) ndr_push_svcctl_StartServiceA,
7355 (ndr_pull_flags_fn_t) ndr_pull_svcctl_StartServiceA,
7356 (ndr_print_function_t) ndr_print_svcctl_StartServiceA,
7357 false,
7360 "svcctl_GetServiceDisplayNameA",
7361 sizeof(struct svcctl_GetServiceDisplayNameA),
7362 (ndr_push_flags_fn_t) ndr_push_svcctl_GetServiceDisplayNameA,
7363 (ndr_pull_flags_fn_t) ndr_pull_svcctl_GetServiceDisplayNameA,
7364 (ndr_print_function_t) ndr_print_svcctl_GetServiceDisplayNameA,
7365 false,
7368 "svcctl_GetServiceKeyNameA",
7369 sizeof(struct svcctl_GetServiceKeyNameA),
7370 (ndr_push_flags_fn_t) ndr_push_svcctl_GetServiceKeyNameA,
7371 (ndr_pull_flags_fn_t) ndr_pull_svcctl_GetServiceKeyNameA,
7372 (ndr_print_function_t) ndr_print_svcctl_GetServiceKeyNameA,
7373 false,
7376 "svcctl_GetCurrentGroupeStateW",
7377 sizeof(struct svcctl_GetCurrentGroupeStateW),
7378 (ndr_push_flags_fn_t) ndr_push_svcctl_GetCurrentGroupeStateW,
7379 (ndr_pull_flags_fn_t) ndr_pull_svcctl_GetCurrentGroupeStateW,
7380 (ndr_print_function_t) ndr_print_svcctl_GetCurrentGroupeStateW,
7381 false,
7384 "svcctl_EnumServiceGroupW",
7385 sizeof(struct svcctl_EnumServiceGroupW),
7386 (ndr_push_flags_fn_t) ndr_push_svcctl_EnumServiceGroupW,
7387 (ndr_pull_flags_fn_t) ndr_pull_svcctl_EnumServiceGroupW,
7388 (ndr_print_function_t) ndr_print_svcctl_EnumServiceGroupW,
7389 false,
7392 "svcctl_ChangeServiceConfig2A",
7393 sizeof(struct svcctl_ChangeServiceConfig2A),
7394 (ndr_push_flags_fn_t) ndr_push_svcctl_ChangeServiceConfig2A,
7395 (ndr_pull_flags_fn_t) ndr_pull_svcctl_ChangeServiceConfig2A,
7396 (ndr_print_function_t) ndr_print_svcctl_ChangeServiceConfig2A,
7397 false,
7400 "svcctl_ChangeServiceConfig2W",
7401 sizeof(struct svcctl_ChangeServiceConfig2W),
7402 (ndr_push_flags_fn_t) ndr_push_svcctl_ChangeServiceConfig2W,
7403 (ndr_pull_flags_fn_t) ndr_pull_svcctl_ChangeServiceConfig2W,
7404 (ndr_print_function_t) ndr_print_svcctl_ChangeServiceConfig2W,
7405 false,
7408 "svcctl_QueryServiceConfig2A",
7409 sizeof(struct svcctl_QueryServiceConfig2A),
7410 (ndr_push_flags_fn_t) ndr_push_svcctl_QueryServiceConfig2A,
7411 (ndr_pull_flags_fn_t) ndr_pull_svcctl_QueryServiceConfig2A,
7412 (ndr_print_function_t) ndr_print_svcctl_QueryServiceConfig2A,
7413 false,
7416 "svcctl_QueryServiceConfig2W",
7417 sizeof(struct svcctl_QueryServiceConfig2W),
7418 (ndr_push_flags_fn_t) ndr_push_svcctl_QueryServiceConfig2W,
7419 (ndr_pull_flags_fn_t) ndr_pull_svcctl_QueryServiceConfig2W,
7420 (ndr_print_function_t) ndr_print_svcctl_QueryServiceConfig2W,
7421 false,
7424 "svcctl_QueryServiceStatusEx",
7425 sizeof(struct svcctl_QueryServiceStatusEx),
7426 (ndr_push_flags_fn_t) ndr_push_svcctl_QueryServiceStatusEx,
7427 (ndr_pull_flags_fn_t) ndr_pull_svcctl_QueryServiceStatusEx,
7428 (ndr_print_function_t) ndr_print_svcctl_QueryServiceStatusEx,
7429 false,
7432 "EnumServicesStatusExA",
7433 sizeof(struct EnumServicesStatusExA),
7434 (ndr_push_flags_fn_t) ndr_push_EnumServicesStatusExA,
7435 (ndr_pull_flags_fn_t) ndr_pull_EnumServicesStatusExA,
7436 (ndr_print_function_t) ndr_print_EnumServicesStatusExA,
7437 false,
7440 "EnumServicesStatusExW",
7441 sizeof(struct EnumServicesStatusExW),
7442 (ndr_push_flags_fn_t) ndr_push_EnumServicesStatusExW,
7443 (ndr_pull_flags_fn_t) ndr_pull_EnumServicesStatusExW,
7444 (ndr_print_function_t) ndr_print_EnumServicesStatusExW,
7445 false,
7448 "svcctl_SCSendTSMessage",
7449 sizeof(struct svcctl_SCSendTSMessage),
7450 (ndr_push_flags_fn_t) ndr_push_svcctl_SCSendTSMessage,
7451 (ndr_pull_flags_fn_t) ndr_pull_svcctl_SCSendTSMessage,
7452 (ndr_print_function_t) ndr_print_svcctl_SCSendTSMessage,
7453 false,
7455 { NULL, 0, NULL, NULL, NULL, false }
7458 static const char * const svcctl_endpoint_strings[] = {
7459 "ncacn_np:[\\pipe\\svcctl]",
7460 "ncalrpc:",
7463 static const struct ndr_interface_string_array svcctl_endpoints = {
7464 .count = 2,
7465 .names = svcctl_endpoint_strings
7468 static const char * const svcctl_authservice_strings[] = {
7469 "host",
7472 static const struct ndr_interface_string_array svcctl_authservices = {
7473 .count = 1,
7474 .names = svcctl_authservice_strings
7478 const struct ndr_interface_table ndr_table_svcctl = {
7479 .name = "svcctl",
7480 .syntax_id = {
7481 {0x367abb81,0x9844,0x35f1,{0xad,0x32},{0x98,0xf0,0x38,0x00,0x10,0x03}},
7482 NDR_SVCCTL_VERSION
7484 .helpstring = NDR_SVCCTL_HELPSTRING,
7485 .num_calls = 44,
7486 .calls = svcctl_calls,
7487 .endpoints = &svcctl_endpoints,
7488 .authservices = &svcctl_authservices