r25068: Older samba3 DCs will return DCERPC_FAULT_OP_RNG_ERROR for every opcode on the
[Samba.git] / source / librpc / gen_ndr / ndr_svcctl.c
blobf3ea9862a99753cdd7e345ff635f2f5ace62bfb3
1 /* parser auto-generated by pidl */
3 #include "includes.h"
4 #include "librpc/gen_ndr/ndr_svcctl.h"
6 NTSTATUS ndr_push_SERVICE_LOCK_STATUS(struct ndr_push *ndr, int ndr_flags, const struct SERVICE_LOCK_STATUS *r)
8 if (ndr_flags & NDR_SCALARS) {
9 NDR_CHECK(ndr_push_align(ndr, 4));
10 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->is_locked));
11 NDR_CHECK(ndr_push_unique_ptr(ndr, r->lock_owner));
12 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->lock_duration));
14 if (ndr_flags & NDR_BUFFERS) {
15 if (r->lock_owner) {
16 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->lock_owner, CH_UTF16)));
17 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
18 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->lock_owner, CH_UTF16)));
19 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->lock_owner, ndr_charset_length(r->lock_owner, CH_UTF16), sizeof(uint16_t), CH_UTF16));
22 return NT_STATUS_OK;
25 NTSTATUS ndr_pull_SERVICE_LOCK_STATUS(struct ndr_pull *ndr, int ndr_flags, struct SERVICE_LOCK_STATUS *r)
27 uint32_t _ptr_lock_owner;
28 TALLOC_CTX *_mem_save_lock_owner_0;
29 if (ndr_flags & NDR_SCALARS) {
30 NDR_CHECK(ndr_pull_align(ndr, 4));
31 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->is_locked));
32 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_lock_owner));
33 if (_ptr_lock_owner) {
34 NDR_PULL_ALLOC(ndr, r->lock_owner);
35 } else {
36 r->lock_owner = NULL;
38 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->lock_duration));
40 if (ndr_flags & NDR_BUFFERS) {
41 if (r->lock_owner) {
42 _mem_save_lock_owner_0 = NDR_PULL_GET_MEM_CTX(ndr);
43 NDR_PULL_SET_MEM_CTX(ndr, r->lock_owner, 0);
44 NDR_CHECK(ndr_pull_array_size(ndr, &r->lock_owner));
45 NDR_CHECK(ndr_pull_array_length(ndr, &r->lock_owner));
46 if (ndr_get_array_length(ndr, &r->lock_owner) > ndr_get_array_size(ndr, &r->lock_owner)) {
47 return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->lock_owner), ndr_get_array_length(ndr, &r->lock_owner));
49 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->lock_owner), sizeof(uint16_t)));
50 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->lock_owner, ndr_get_array_length(ndr, &r->lock_owner), sizeof(uint16_t), CH_UTF16));
51 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_lock_owner_0, 0);
54 return NT_STATUS_OK;
57 _PUBLIC_ void ndr_print_SERVICE_LOCK_STATUS(struct ndr_print *ndr, const char *name, const struct SERVICE_LOCK_STATUS *r)
59 ndr_print_struct(ndr, name, "SERVICE_LOCK_STATUS");
60 ndr->depth++;
61 ndr_print_uint32(ndr, "is_locked", r->is_locked);
62 ndr_print_ptr(ndr, "lock_owner", r->lock_owner);
63 ndr->depth++;
64 if (r->lock_owner) {
65 ndr_print_string(ndr, "lock_owner", r->lock_owner);
67 ndr->depth--;
68 ndr_print_uint32(ndr, "lock_duration", r->lock_duration);
69 ndr->depth--;
72 NTSTATUS ndr_push_SERVICE_STATUS(struct ndr_push *ndr, int ndr_flags, const struct SERVICE_STATUS *r)
74 if (ndr_flags & NDR_SCALARS) {
75 NDR_CHECK(ndr_push_align(ndr, 4));
76 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->type));
77 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->state));
78 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->controls_accepted));
79 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->win32_exit_code));
80 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->service_exit_code));
81 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->check_point));
82 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->wait_hint));
84 if (ndr_flags & NDR_BUFFERS) {
86 return NT_STATUS_OK;
89 NTSTATUS ndr_pull_SERVICE_STATUS(struct ndr_pull *ndr, int ndr_flags, struct SERVICE_STATUS *r)
91 if (ndr_flags & NDR_SCALARS) {
92 NDR_CHECK(ndr_pull_align(ndr, 4));
93 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->type));
94 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->state));
95 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->controls_accepted));
96 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->win32_exit_code));
97 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->service_exit_code));
98 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->check_point));
99 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->wait_hint));
101 if (ndr_flags & NDR_BUFFERS) {
103 return NT_STATUS_OK;
106 _PUBLIC_ void ndr_print_SERVICE_STATUS(struct ndr_print *ndr, const char *name, const struct SERVICE_STATUS *r)
108 ndr_print_struct(ndr, name, "SERVICE_STATUS");
109 ndr->depth++;
110 ndr_print_uint32(ndr, "type", r->type);
111 ndr_print_uint32(ndr, "state", r->state);
112 ndr_print_uint32(ndr, "controls_accepted", r->controls_accepted);
113 ndr_print_uint32(ndr, "win32_exit_code", r->win32_exit_code);
114 ndr_print_uint32(ndr, "service_exit_code", r->service_exit_code);
115 ndr_print_uint32(ndr, "check_point", r->check_point);
116 ndr_print_uint32(ndr, "wait_hint", r->wait_hint);
117 ndr->depth--;
120 NTSTATUS ndr_push_ENUM_SERVICE_STATUS(struct ndr_push *ndr, int ndr_flags, const struct ENUM_SERVICE_STATUS *r)
122 if (ndr_flags & NDR_SCALARS) {
123 NDR_CHECK(ndr_push_align(ndr, 4));
125 uint32_t _flags_save_string = ndr->flags;
126 ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_ASCII|LIBNDR_FLAG_STR_NULLTERM);
127 NDR_CHECK(ndr_push_relative_ptr1(ndr, r->service_name));
128 ndr->flags = _flags_save_string;
131 uint32_t _flags_save_string = ndr->flags;
132 ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_ASCII|LIBNDR_FLAG_STR_NULLTERM);
133 NDR_CHECK(ndr_push_relative_ptr1(ndr, r->display_name));
134 ndr->flags = _flags_save_string;
136 NDR_CHECK(ndr_push_SERVICE_STATUS(ndr, NDR_SCALARS, &r->status));
138 if (ndr_flags & NDR_BUFFERS) {
140 uint32_t _flags_save_string = ndr->flags;
141 ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_ASCII|LIBNDR_FLAG_STR_NULLTERM);
142 if (r->service_name) {
143 NDR_CHECK(ndr_push_relative_ptr2(ndr, r->service_name));
144 NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->service_name));
146 ndr->flags = _flags_save_string;
149 uint32_t _flags_save_string = ndr->flags;
150 ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_ASCII|LIBNDR_FLAG_STR_NULLTERM);
151 if (r->display_name) {
152 NDR_CHECK(ndr_push_relative_ptr2(ndr, r->display_name));
153 NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->display_name));
155 ndr->flags = _flags_save_string;
158 return NT_STATUS_OK;
161 NTSTATUS ndr_pull_ENUM_SERVICE_STATUS(struct ndr_pull *ndr, int ndr_flags, struct ENUM_SERVICE_STATUS *r)
163 uint32_t _ptr_service_name;
164 TALLOC_CTX *_mem_save_service_name_0;
165 uint32_t _ptr_display_name;
166 TALLOC_CTX *_mem_save_display_name_0;
167 if (ndr_flags & NDR_SCALARS) {
168 NDR_CHECK(ndr_pull_align(ndr, 4));
170 uint32_t _flags_save_string = ndr->flags;
171 ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_ASCII|LIBNDR_FLAG_STR_NULLTERM);
172 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_service_name));
173 if (_ptr_service_name) {
174 NDR_PULL_ALLOC(ndr, r->service_name);
175 NDR_CHECK(ndr_pull_relative_ptr1(ndr, r->service_name, _ptr_service_name));
176 } else {
177 r->service_name = NULL;
179 ndr->flags = _flags_save_string;
182 uint32_t _flags_save_string = ndr->flags;
183 ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_ASCII|LIBNDR_FLAG_STR_NULLTERM);
184 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_display_name));
185 if (_ptr_display_name) {
186 NDR_PULL_ALLOC(ndr, r->display_name);
187 NDR_CHECK(ndr_pull_relative_ptr1(ndr, r->display_name, _ptr_display_name));
188 } else {
189 r->display_name = NULL;
191 ndr->flags = _flags_save_string;
193 NDR_CHECK(ndr_pull_SERVICE_STATUS(ndr, NDR_SCALARS, &r->status));
195 if (ndr_flags & NDR_BUFFERS) {
197 uint32_t _flags_save_string = ndr->flags;
198 ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_ASCII|LIBNDR_FLAG_STR_NULLTERM);
199 if (r->service_name) {
200 struct ndr_pull_save _relative_save;
201 ndr_pull_save(ndr, &_relative_save);
202 NDR_CHECK(ndr_pull_relative_ptr2(ndr, r->service_name));
203 _mem_save_service_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
204 NDR_PULL_SET_MEM_CTX(ndr, r->service_name, 0);
205 NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->service_name));
206 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_service_name_0, 0);
207 ndr_pull_restore(ndr, &_relative_save);
209 ndr->flags = _flags_save_string;
212 uint32_t _flags_save_string = ndr->flags;
213 ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_ASCII|LIBNDR_FLAG_STR_NULLTERM);
214 if (r->display_name) {
215 struct ndr_pull_save _relative_save;
216 ndr_pull_save(ndr, &_relative_save);
217 NDR_CHECK(ndr_pull_relative_ptr2(ndr, r->display_name));
218 _mem_save_display_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
219 NDR_PULL_SET_MEM_CTX(ndr, r->display_name, 0);
220 NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->display_name));
221 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_display_name_0, 0);
222 ndr_pull_restore(ndr, &_relative_save);
224 ndr->flags = _flags_save_string;
227 return NT_STATUS_OK;
230 _PUBLIC_ void ndr_print_ENUM_SERVICE_STATUS(struct ndr_print *ndr, const char *name, const struct ENUM_SERVICE_STATUS *r)
232 ndr_print_struct(ndr, name, "ENUM_SERVICE_STATUS");
233 ndr->depth++;
234 ndr_print_ptr(ndr, "service_name", r->service_name);
235 ndr->depth++;
236 if (r->service_name) {
237 ndr_print_string(ndr, "service_name", r->service_name);
239 ndr->depth--;
240 ndr_print_ptr(ndr, "display_name", r->display_name);
241 ndr->depth++;
242 if (r->display_name) {
243 ndr_print_string(ndr, "display_name", r->display_name);
245 ndr->depth--;
246 ndr_print_SERVICE_STATUS(ndr, "status", &r->status);
247 ndr->depth--;
250 _PUBLIC_ NTSTATUS ndr_push_svcctl_ServerType(struct ndr_push *ndr, int ndr_flags, uint32_t r)
252 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r));
253 return NT_STATUS_OK;
256 _PUBLIC_ NTSTATUS ndr_pull_svcctl_ServerType(struct ndr_pull *ndr, int ndr_flags, uint32_t *r)
258 uint32_t v;
259 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &v));
260 *r = v;
261 return NT_STATUS_OK;
264 _PUBLIC_ void ndr_print_svcctl_ServerType(struct ndr_print *ndr, const char *name, uint32_t r)
266 ndr_print_uint32(ndr, name, r);
267 ndr->depth++;
268 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_WORKSTATION", SV_TYPE_WORKSTATION, r);
269 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_SERVER", SV_TYPE_SERVER, r);
270 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_SQLSERVER", SV_TYPE_SQLSERVER, r);
271 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_DOMAIN_CTRL", SV_TYPE_DOMAIN_CTRL, r);
272 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_DOMAIN_BAKCTRL", SV_TYPE_DOMAIN_BAKCTRL, r);
273 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_TIME_SOURCE", SV_TYPE_TIME_SOURCE, r);
274 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_AFP", SV_TYPE_AFP, r);
275 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_NOVELL", SV_TYPE_NOVELL, r);
276 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_DOMAIN_MEMBER", SV_TYPE_DOMAIN_MEMBER, r);
277 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_PRINTQ_SERVER", SV_TYPE_PRINTQ_SERVER, r);
278 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_DIALIN_SERVER", SV_TYPE_DIALIN_SERVER, r);
279 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_SERVER_UNIX", SV_TYPE_SERVER_UNIX, r);
280 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_NT", SV_TYPE_NT, r);
281 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_WFW", SV_TYPE_WFW, r);
282 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_SERVER_MFPN", SV_TYPE_SERVER_MFPN, r);
283 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_SERVER_NT", SV_TYPE_SERVER_NT, r);
284 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_POTENTIAL_BROWSER", SV_TYPE_POTENTIAL_BROWSER, r);
285 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_BACKUP_BROWSER", SV_TYPE_BACKUP_BROWSER, r);
286 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_MASTER_BROWSER", SV_TYPE_MASTER_BROWSER, r);
287 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_DOMAIN_MASTER", SV_TYPE_DOMAIN_MASTER, r);
288 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_SERVER_OSF", SV_TYPE_SERVER_OSF, r);
289 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_SERVER_VMS", SV_TYPE_SERVER_VMS, r);
290 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_WIN95_PLUS", SV_TYPE_WIN95_PLUS, r);
291 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_DFS_SERVER", SV_TYPE_DFS_SERVER, r);
292 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_ALTERNATE_XPORT", SV_TYPE_ALTERNATE_XPORT, r);
293 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_LOCAL_LIST_ONLY", SV_TYPE_LOCAL_LIST_ONLY, r);
294 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_DOMAIN_ENUM", SV_TYPE_DOMAIN_ENUM, r);
295 ndr->depth--;
298 NTSTATUS ndr_push_svcctl_CloseServiceHandle(struct ndr_push *ndr, int flags, const struct svcctl_CloseServiceHandle *r)
300 if (flags & NDR_IN) {
301 if (r->in.handle == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
302 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
304 if (flags & NDR_OUT) {
305 if (r->out.handle == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
306 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.handle));
307 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
309 return NT_STATUS_OK;
312 NTSTATUS ndr_pull_svcctl_CloseServiceHandle(struct ndr_pull *ndr, int flags, struct svcctl_CloseServiceHandle *r)
314 TALLOC_CTX *_mem_save_handle_0;
315 if (flags & NDR_IN) {
316 ZERO_STRUCT(r->out);
318 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
319 NDR_PULL_ALLOC(ndr, r->in.handle);
321 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
322 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
323 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
324 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
325 NDR_PULL_ALLOC(ndr, r->out.handle);
326 *r->out.handle = *r->in.handle;
328 if (flags & NDR_OUT) {
329 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
330 NDR_PULL_ALLOC(ndr, r->out.handle);
332 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
333 NDR_PULL_SET_MEM_CTX(ndr, r->out.handle, LIBNDR_FLAG_REF_ALLOC);
334 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.handle));
335 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
336 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
338 return NT_STATUS_OK;
341 _PUBLIC_ void ndr_print_svcctl_CloseServiceHandle(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_CloseServiceHandle *r)
343 ndr_print_struct(ndr, name, "svcctl_CloseServiceHandle");
344 ndr->depth++;
345 if (flags & NDR_SET_VALUES) {
346 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
348 if (flags & NDR_IN) {
349 ndr_print_struct(ndr, "in", "svcctl_CloseServiceHandle");
350 ndr->depth++;
351 ndr_print_ptr(ndr, "handle", r->in.handle);
352 ndr->depth++;
353 ndr_print_policy_handle(ndr, "handle", r->in.handle);
354 ndr->depth--;
355 ndr->depth--;
357 if (flags & NDR_OUT) {
358 ndr_print_struct(ndr, "out", "svcctl_CloseServiceHandle");
359 ndr->depth++;
360 ndr_print_ptr(ndr, "handle", r->out.handle);
361 ndr->depth++;
362 ndr_print_policy_handle(ndr, "handle", r->out.handle);
363 ndr->depth--;
364 ndr_print_WERROR(ndr, "result", r->out.result);
365 ndr->depth--;
367 ndr->depth--;
370 NTSTATUS ndr_push_svcctl_ControlService(struct ndr_push *ndr, int flags, const struct svcctl_ControlService *r)
372 if (flags & NDR_IN) {
373 if (r->in.handle == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
374 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
375 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.control));
377 if (flags & NDR_OUT) {
378 if (r->out.service_status == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
379 NDR_CHECK(ndr_push_SERVICE_STATUS(ndr, NDR_SCALARS, r->out.service_status));
380 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
382 return NT_STATUS_OK;
385 NTSTATUS ndr_pull_svcctl_ControlService(struct ndr_pull *ndr, int flags, struct svcctl_ControlService *r)
387 TALLOC_CTX *_mem_save_handle_0;
388 TALLOC_CTX *_mem_save_service_status_0;
389 if (flags & NDR_IN) {
390 ZERO_STRUCT(r->out);
392 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
393 NDR_PULL_ALLOC(ndr, r->in.handle);
395 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
396 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
397 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
398 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
399 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.control));
400 NDR_PULL_ALLOC(ndr, r->out.service_status);
401 ZERO_STRUCTP(r->out.service_status);
403 if (flags & NDR_OUT) {
404 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
405 NDR_PULL_ALLOC(ndr, r->out.service_status);
407 _mem_save_service_status_0 = NDR_PULL_GET_MEM_CTX(ndr);
408 NDR_PULL_SET_MEM_CTX(ndr, r->out.service_status, LIBNDR_FLAG_REF_ALLOC);
409 NDR_CHECK(ndr_pull_SERVICE_STATUS(ndr, NDR_SCALARS, r->out.service_status));
410 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_service_status_0, LIBNDR_FLAG_REF_ALLOC);
411 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
413 return NT_STATUS_OK;
416 _PUBLIC_ void ndr_print_svcctl_ControlService(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_ControlService *r)
418 ndr_print_struct(ndr, name, "svcctl_ControlService");
419 ndr->depth++;
420 if (flags & NDR_SET_VALUES) {
421 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
423 if (flags & NDR_IN) {
424 ndr_print_struct(ndr, "in", "svcctl_ControlService");
425 ndr->depth++;
426 ndr_print_ptr(ndr, "handle", r->in.handle);
427 ndr->depth++;
428 ndr_print_policy_handle(ndr, "handle", r->in.handle);
429 ndr->depth--;
430 ndr_print_uint32(ndr, "control", r->in.control);
431 ndr->depth--;
433 if (flags & NDR_OUT) {
434 ndr_print_struct(ndr, "out", "svcctl_ControlService");
435 ndr->depth++;
436 ndr_print_ptr(ndr, "service_status", r->out.service_status);
437 ndr->depth++;
438 ndr_print_SERVICE_STATUS(ndr, "service_status", r->out.service_status);
439 ndr->depth--;
440 ndr_print_WERROR(ndr, "result", r->out.result);
441 ndr->depth--;
443 ndr->depth--;
446 NTSTATUS ndr_push_svcctl_DeleteService(struct ndr_push *ndr, int flags, const struct svcctl_DeleteService *r)
448 if (flags & NDR_IN) {
449 if (r->in.handle == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
450 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
452 if (flags & NDR_OUT) {
453 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
455 return NT_STATUS_OK;
458 NTSTATUS ndr_pull_svcctl_DeleteService(struct ndr_pull *ndr, int flags, struct svcctl_DeleteService *r)
460 TALLOC_CTX *_mem_save_handle_0;
461 if (flags & NDR_IN) {
462 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
463 NDR_PULL_ALLOC(ndr, r->in.handle);
465 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
466 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
467 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
468 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
470 if (flags & NDR_OUT) {
471 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
473 return NT_STATUS_OK;
476 _PUBLIC_ void ndr_print_svcctl_DeleteService(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_DeleteService *r)
478 ndr_print_struct(ndr, name, "svcctl_DeleteService");
479 ndr->depth++;
480 if (flags & NDR_SET_VALUES) {
481 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
483 if (flags & NDR_IN) {
484 ndr_print_struct(ndr, "in", "svcctl_DeleteService");
485 ndr->depth++;
486 ndr_print_ptr(ndr, "handle", r->in.handle);
487 ndr->depth++;
488 ndr_print_policy_handle(ndr, "handle", r->in.handle);
489 ndr->depth--;
490 ndr->depth--;
492 if (flags & NDR_OUT) {
493 ndr_print_struct(ndr, "out", "svcctl_DeleteService");
494 ndr->depth++;
495 ndr_print_WERROR(ndr, "result", r->out.result);
496 ndr->depth--;
498 ndr->depth--;
501 NTSTATUS ndr_push_svcctl_LockServiceDatabase(struct ndr_push *ndr, int flags, const struct svcctl_LockServiceDatabase *r)
503 if (flags & NDR_IN) {
504 if (r->in.handle == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
505 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
507 if (flags & NDR_OUT) {
508 if (r->out.lock == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
509 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.lock));
510 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
512 return NT_STATUS_OK;
515 NTSTATUS ndr_pull_svcctl_LockServiceDatabase(struct ndr_pull *ndr, int flags, struct svcctl_LockServiceDatabase *r)
517 TALLOC_CTX *_mem_save_handle_0;
518 TALLOC_CTX *_mem_save_lock_0;
519 if (flags & NDR_IN) {
520 ZERO_STRUCT(r->out);
522 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
523 NDR_PULL_ALLOC(ndr, r->in.handle);
525 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
526 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
527 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
528 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
529 NDR_PULL_ALLOC(ndr, r->out.lock);
530 ZERO_STRUCTP(r->out.lock);
532 if (flags & NDR_OUT) {
533 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
534 NDR_PULL_ALLOC(ndr, r->out.lock);
536 _mem_save_lock_0 = NDR_PULL_GET_MEM_CTX(ndr);
537 NDR_PULL_SET_MEM_CTX(ndr, r->out.lock, LIBNDR_FLAG_REF_ALLOC);
538 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.lock));
539 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_lock_0, LIBNDR_FLAG_REF_ALLOC);
540 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
542 return NT_STATUS_OK;
545 _PUBLIC_ void ndr_print_svcctl_LockServiceDatabase(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_LockServiceDatabase *r)
547 ndr_print_struct(ndr, name, "svcctl_LockServiceDatabase");
548 ndr->depth++;
549 if (flags & NDR_SET_VALUES) {
550 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
552 if (flags & NDR_IN) {
553 ndr_print_struct(ndr, "in", "svcctl_LockServiceDatabase");
554 ndr->depth++;
555 ndr_print_ptr(ndr, "handle", r->in.handle);
556 ndr->depth++;
557 ndr_print_policy_handle(ndr, "handle", r->in.handle);
558 ndr->depth--;
559 ndr->depth--;
561 if (flags & NDR_OUT) {
562 ndr_print_struct(ndr, "out", "svcctl_LockServiceDatabase");
563 ndr->depth++;
564 ndr_print_ptr(ndr, "lock", r->out.lock);
565 ndr->depth++;
566 ndr_print_policy_handle(ndr, "lock", r->out.lock);
567 ndr->depth--;
568 ndr_print_WERROR(ndr, "result", r->out.result);
569 ndr->depth--;
571 ndr->depth--;
574 NTSTATUS ndr_push_svcctl_QueryServiceObjectSecurity(struct ndr_push *ndr, int flags, const struct svcctl_QueryServiceObjectSecurity *r)
576 if (flags & NDR_IN) {
578 if (flags & NDR_OUT) {
579 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
581 return NT_STATUS_OK;
584 NTSTATUS ndr_pull_svcctl_QueryServiceObjectSecurity(struct ndr_pull *ndr, int flags, struct svcctl_QueryServiceObjectSecurity *r)
586 if (flags & NDR_IN) {
588 if (flags & NDR_OUT) {
589 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
591 return NT_STATUS_OK;
594 _PUBLIC_ void ndr_print_svcctl_QueryServiceObjectSecurity(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_QueryServiceObjectSecurity *r)
596 ndr_print_struct(ndr, name, "svcctl_QueryServiceObjectSecurity");
597 ndr->depth++;
598 if (flags & NDR_SET_VALUES) {
599 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
601 if (flags & NDR_IN) {
602 ndr_print_struct(ndr, "in", "svcctl_QueryServiceObjectSecurity");
603 ndr->depth++;
604 ndr->depth--;
606 if (flags & NDR_OUT) {
607 ndr_print_struct(ndr, "out", "svcctl_QueryServiceObjectSecurity");
608 ndr->depth++;
609 ndr_print_WERROR(ndr, "result", r->out.result);
610 ndr->depth--;
612 ndr->depth--;
615 NTSTATUS ndr_push_svcctl_SetServiceObjectSecurity(struct ndr_push *ndr, int flags, const struct svcctl_SetServiceObjectSecurity *r)
617 if (flags & NDR_IN) {
619 if (flags & NDR_OUT) {
620 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
622 return NT_STATUS_OK;
625 NTSTATUS ndr_pull_svcctl_SetServiceObjectSecurity(struct ndr_pull *ndr, int flags, struct svcctl_SetServiceObjectSecurity *r)
627 if (flags & NDR_IN) {
629 if (flags & NDR_OUT) {
630 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
632 return NT_STATUS_OK;
635 _PUBLIC_ void ndr_print_svcctl_SetServiceObjectSecurity(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_SetServiceObjectSecurity *r)
637 ndr_print_struct(ndr, name, "svcctl_SetServiceObjectSecurity");
638 ndr->depth++;
639 if (flags & NDR_SET_VALUES) {
640 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
642 if (flags & NDR_IN) {
643 ndr_print_struct(ndr, "in", "svcctl_SetServiceObjectSecurity");
644 ndr->depth++;
645 ndr->depth--;
647 if (flags & NDR_OUT) {
648 ndr_print_struct(ndr, "out", "svcctl_SetServiceObjectSecurity");
649 ndr->depth++;
650 ndr_print_WERROR(ndr, "result", r->out.result);
651 ndr->depth--;
653 ndr->depth--;
656 NTSTATUS ndr_push_svcctl_QueryServiceStatus(struct ndr_push *ndr, int flags, const struct svcctl_QueryServiceStatus *r)
658 if (flags & NDR_IN) {
659 if (r->in.handle == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
660 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
662 if (flags & NDR_OUT) {
663 if (r->out.service_status == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
664 NDR_CHECK(ndr_push_SERVICE_STATUS(ndr, NDR_SCALARS, r->out.service_status));
665 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
667 return NT_STATUS_OK;
670 NTSTATUS ndr_pull_svcctl_QueryServiceStatus(struct ndr_pull *ndr, int flags, struct svcctl_QueryServiceStatus *r)
672 TALLOC_CTX *_mem_save_handle_0;
673 TALLOC_CTX *_mem_save_service_status_0;
674 if (flags & NDR_IN) {
675 ZERO_STRUCT(r->out);
677 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
678 NDR_PULL_ALLOC(ndr, r->in.handle);
680 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
681 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
682 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
683 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
684 NDR_PULL_ALLOC(ndr, r->out.service_status);
685 ZERO_STRUCTP(r->out.service_status);
687 if (flags & NDR_OUT) {
688 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
689 NDR_PULL_ALLOC(ndr, r->out.service_status);
691 _mem_save_service_status_0 = NDR_PULL_GET_MEM_CTX(ndr);
692 NDR_PULL_SET_MEM_CTX(ndr, r->out.service_status, LIBNDR_FLAG_REF_ALLOC);
693 NDR_CHECK(ndr_pull_SERVICE_STATUS(ndr, NDR_SCALARS, r->out.service_status));
694 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_service_status_0, LIBNDR_FLAG_REF_ALLOC);
695 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
697 return NT_STATUS_OK;
700 _PUBLIC_ void ndr_print_svcctl_QueryServiceStatus(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_QueryServiceStatus *r)
702 ndr_print_struct(ndr, name, "svcctl_QueryServiceStatus");
703 ndr->depth++;
704 if (flags & NDR_SET_VALUES) {
705 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
707 if (flags & NDR_IN) {
708 ndr_print_struct(ndr, "in", "svcctl_QueryServiceStatus");
709 ndr->depth++;
710 ndr_print_ptr(ndr, "handle", r->in.handle);
711 ndr->depth++;
712 ndr_print_policy_handle(ndr, "handle", r->in.handle);
713 ndr->depth--;
714 ndr->depth--;
716 if (flags & NDR_OUT) {
717 ndr_print_struct(ndr, "out", "svcctl_QueryServiceStatus");
718 ndr->depth++;
719 ndr_print_ptr(ndr, "service_status", r->out.service_status);
720 ndr->depth++;
721 ndr_print_SERVICE_STATUS(ndr, "service_status", r->out.service_status);
722 ndr->depth--;
723 ndr_print_WERROR(ndr, "result", r->out.result);
724 ndr->depth--;
726 ndr->depth--;
729 NTSTATUS ndr_push_svcctl_SetServiceStatus(struct ndr_push *ndr, int flags, const struct svcctl_SetServiceStatus *r)
731 if (flags & NDR_IN) {
733 if (flags & NDR_OUT) {
734 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
736 return NT_STATUS_OK;
739 NTSTATUS ndr_pull_svcctl_SetServiceStatus(struct ndr_pull *ndr, int flags, struct svcctl_SetServiceStatus *r)
741 if (flags & NDR_IN) {
743 if (flags & NDR_OUT) {
744 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
746 return NT_STATUS_OK;
749 _PUBLIC_ void ndr_print_svcctl_SetServiceStatus(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_SetServiceStatus *r)
751 ndr_print_struct(ndr, name, "svcctl_SetServiceStatus");
752 ndr->depth++;
753 if (flags & NDR_SET_VALUES) {
754 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
756 if (flags & NDR_IN) {
757 ndr_print_struct(ndr, "in", "svcctl_SetServiceStatus");
758 ndr->depth++;
759 ndr->depth--;
761 if (flags & NDR_OUT) {
762 ndr_print_struct(ndr, "out", "svcctl_SetServiceStatus");
763 ndr->depth++;
764 ndr_print_WERROR(ndr, "result", r->out.result);
765 ndr->depth--;
767 ndr->depth--;
770 NTSTATUS ndr_push_svcctl_UnlockServiceDatabase(struct ndr_push *ndr, int flags, const struct svcctl_UnlockServiceDatabase *r)
772 if (flags & NDR_IN) {
773 if (r->in.lock == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
774 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.lock));
776 if (flags & NDR_OUT) {
777 if (r->out.lock == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
778 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.lock));
779 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
781 return NT_STATUS_OK;
784 NTSTATUS ndr_pull_svcctl_UnlockServiceDatabase(struct ndr_pull *ndr, int flags, struct svcctl_UnlockServiceDatabase *r)
786 TALLOC_CTX *_mem_save_lock_0;
787 if (flags & NDR_IN) {
788 ZERO_STRUCT(r->out);
790 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
791 NDR_PULL_ALLOC(ndr, r->in.lock);
793 _mem_save_lock_0 = NDR_PULL_GET_MEM_CTX(ndr);
794 NDR_PULL_SET_MEM_CTX(ndr, r->in.lock, LIBNDR_FLAG_REF_ALLOC);
795 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.lock));
796 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_lock_0, LIBNDR_FLAG_REF_ALLOC);
797 NDR_PULL_ALLOC(ndr, r->out.lock);
798 *r->out.lock = *r->in.lock;
800 if (flags & NDR_OUT) {
801 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
802 NDR_PULL_ALLOC(ndr, r->out.lock);
804 _mem_save_lock_0 = NDR_PULL_GET_MEM_CTX(ndr);
805 NDR_PULL_SET_MEM_CTX(ndr, r->out.lock, LIBNDR_FLAG_REF_ALLOC);
806 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.lock));
807 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_lock_0, LIBNDR_FLAG_REF_ALLOC);
808 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
810 return NT_STATUS_OK;
813 _PUBLIC_ void ndr_print_svcctl_UnlockServiceDatabase(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_UnlockServiceDatabase *r)
815 ndr_print_struct(ndr, name, "svcctl_UnlockServiceDatabase");
816 ndr->depth++;
817 if (flags & NDR_SET_VALUES) {
818 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
820 if (flags & NDR_IN) {
821 ndr_print_struct(ndr, "in", "svcctl_UnlockServiceDatabase");
822 ndr->depth++;
823 ndr_print_ptr(ndr, "lock", r->in.lock);
824 ndr->depth++;
825 ndr_print_policy_handle(ndr, "lock", r->in.lock);
826 ndr->depth--;
827 ndr->depth--;
829 if (flags & NDR_OUT) {
830 ndr_print_struct(ndr, "out", "svcctl_UnlockServiceDatabase");
831 ndr->depth++;
832 ndr_print_ptr(ndr, "lock", r->out.lock);
833 ndr->depth++;
834 ndr_print_policy_handle(ndr, "lock", r->out.lock);
835 ndr->depth--;
836 ndr_print_WERROR(ndr, "result", r->out.result);
837 ndr->depth--;
839 ndr->depth--;
842 NTSTATUS ndr_push_svcctl_NotifyBootConfigStatus(struct ndr_push *ndr, int flags, const struct svcctl_NotifyBootConfigStatus *r)
844 if (flags & NDR_IN) {
846 if (flags & NDR_OUT) {
847 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
849 return NT_STATUS_OK;
852 NTSTATUS ndr_pull_svcctl_NotifyBootConfigStatus(struct ndr_pull *ndr, int flags, struct svcctl_NotifyBootConfigStatus *r)
854 if (flags & NDR_IN) {
856 if (flags & NDR_OUT) {
857 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
859 return NT_STATUS_OK;
862 _PUBLIC_ void ndr_print_svcctl_NotifyBootConfigStatus(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_NotifyBootConfigStatus *r)
864 ndr_print_struct(ndr, name, "svcctl_NotifyBootConfigStatus");
865 ndr->depth++;
866 if (flags & NDR_SET_VALUES) {
867 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
869 if (flags & NDR_IN) {
870 ndr_print_struct(ndr, "in", "svcctl_NotifyBootConfigStatus");
871 ndr->depth++;
872 ndr->depth--;
874 if (flags & NDR_OUT) {
875 ndr_print_struct(ndr, "out", "svcctl_NotifyBootConfigStatus");
876 ndr->depth++;
877 ndr_print_WERROR(ndr, "result", r->out.result);
878 ndr->depth--;
880 ndr->depth--;
883 NTSTATUS ndr_push_svcctl_SCSetServiceBitsW(struct ndr_push *ndr, int flags, const struct svcctl_SCSetServiceBitsW *r)
885 if (flags & NDR_IN) {
886 if (r->in.handle == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
887 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
888 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.bits));
889 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.bitson));
890 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.immediate));
892 if (flags & NDR_OUT) {
893 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
895 return NT_STATUS_OK;
898 NTSTATUS ndr_pull_svcctl_SCSetServiceBitsW(struct ndr_pull *ndr, int flags, struct svcctl_SCSetServiceBitsW *r)
900 TALLOC_CTX *_mem_save_handle_0;
901 if (flags & NDR_IN) {
902 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
903 NDR_PULL_ALLOC(ndr, r->in.handle);
905 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
906 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
907 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
908 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
909 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.bits));
910 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.bitson));
911 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.immediate));
913 if (flags & NDR_OUT) {
914 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
916 return NT_STATUS_OK;
919 _PUBLIC_ void ndr_print_svcctl_SCSetServiceBitsW(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_SCSetServiceBitsW *r)
921 ndr_print_struct(ndr, name, "svcctl_SCSetServiceBitsW");
922 ndr->depth++;
923 if (flags & NDR_SET_VALUES) {
924 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
926 if (flags & NDR_IN) {
927 ndr_print_struct(ndr, "in", "svcctl_SCSetServiceBitsW");
928 ndr->depth++;
929 ndr_print_ptr(ndr, "handle", r->in.handle);
930 ndr->depth++;
931 ndr_print_policy_handle(ndr, "handle", r->in.handle);
932 ndr->depth--;
933 ndr_print_uint32(ndr, "bits", r->in.bits);
934 ndr_print_uint32(ndr, "bitson", r->in.bitson);
935 ndr_print_uint32(ndr, "immediate", r->in.immediate);
936 ndr->depth--;
938 if (flags & NDR_OUT) {
939 ndr_print_struct(ndr, "out", "svcctl_SCSetServiceBitsW");
940 ndr->depth++;
941 ndr_print_WERROR(ndr, "result", r->out.result);
942 ndr->depth--;
944 ndr->depth--;
947 NTSTATUS ndr_push_svcctl_ChangeServiceConfigW(struct ndr_push *ndr, int flags, const struct svcctl_ChangeServiceConfigW *r)
949 if (flags & NDR_IN) {
950 if (r->in.handle == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
951 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
952 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.type));
953 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.start));
954 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.error));
955 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.binary_path));
956 if (r->in.binary_path) {
957 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.binary_path, CH_UTF16)));
958 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
959 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.binary_path, CH_UTF16)));
960 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));
962 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.load_order_group));
963 if (r->in.load_order_group) {
964 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.load_order_group, CH_UTF16)));
965 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
966 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.load_order_group, CH_UTF16)));
967 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));
969 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.dependencies));
970 if (r->in.dependencies) {
971 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.dependencies, CH_UTF16)));
972 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
973 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.dependencies, CH_UTF16)));
974 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.dependencies, ndr_charset_length(r->in.dependencies, CH_UTF16), sizeof(uint16_t), CH_UTF16));
976 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.service_start_name));
977 if (r->in.service_start_name) {
978 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.service_start_name, CH_UTF16)));
979 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
980 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.service_start_name, CH_UTF16)));
981 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));
983 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.password));
984 if (r->in.password) {
985 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.password, CH_UTF16)));
986 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
987 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.password, CH_UTF16)));
988 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.password, ndr_charset_length(r->in.password, CH_UTF16), sizeof(uint16_t), CH_UTF16));
990 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.display_name));
991 if (r->in.display_name) {
992 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.display_name, CH_UTF16)));
993 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
994 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.display_name, CH_UTF16)));
995 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));
998 if (flags & NDR_OUT) {
999 if (r->out.tag_id == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
1000 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.tag_id));
1001 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
1003 return NT_STATUS_OK;
1006 NTSTATUS ndr_pull_svcctl_ChangeServiceConfigW(struct ndr_pull *ndr, int flags, struct svcctl_ChangeServiceConfigW *r)
1008 uint32_t _ptr_binary_path;
1009 uint32_t _ptr_load_order_group;
1010 uint32_t _ptr_dependencies;
1011 uint32_t _ptr_service_start_name;
1012 uint32_t _ptr_password;
1013 uint32_t _ptr_display_name;
1014 TALLOC_CTX *_mem_save_handle_0;
1015 TALLOC_CTX *_mem_save_binary_path_0;
1016 TALLOC_CTX *_mem_save_load_order_group_0;
1017 TALLOC_CTX *_mem_save_tag_id_0;
1018 TALLOC_CTX *_mem_save_dependencies_0;
1019 TALLOC_CTX *_mem_save_service_start_name_0;
1020 TALLOC_CTX *_mem_save_password_0;
1021 TALLOC_CTX *_mem_save_display_name_0;
1022 if (flags & NDR_IN) {
1023 ZERO_STRUCT(r->out);
1025 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
1026 NDR_PULL_ALLOC(ndr, r->in.handle);
1028 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
1029 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
1030 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
1031 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
1032 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.type));
1033 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.start));
1034 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.error));
1035 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_binary_path));
1036 if (_ptr_binary_path) {
1037 NDR_PULL_ALLOC(ndr, r->in.binary_path);
1038 } else {
1039 r->in.binary_path = NULL;
1041 if (r->in.binary_path) {
1042 _mem_save_binary_path_0 = NDR_PULL_GET_MEM_CTX(ndr);
1043 NDR_PULL_SET_MEM_CTX(ndr, r->in.binary_path, 0);
1044 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.binary_path));
1045 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.binary_path));
1046 if (ndr_get_array_length(ndr, &r->in.binary_path) > ndr_get_array_size(ndr, &r->in.binary_path)) {
1047 return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.binary_path), ndr_get_array_length(ndr, &r->in.binary_path));
1049 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.binary_path), sizeof(uint16_t)));
1050 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.binary_path, ndr_get_array_length(ndr, &r->in.binary_path), sizeof(uint16_t), CH_UTF16));
1051 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_binary_path_0, 0);
1053 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_load_order_group));
1054 if (_ptr_load_order_group) {
1055 NDR_PULL_ALLOC(ndr, r->in.load_order_group);
1056 } else {
1057 r->in.load_order_group = NULL;
1059 if (r->in.load_order_group) {
1060 _mem_save_load_order_group_0 = NDR_PULL_GET_MEM_CTX(ndr);
1061 NDR_PULL_SET_MEM_CTX(ndr, r->in.load_order_group, 0);
1062 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.load_order_group));
1063 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.load_order_group));
1064 if (ndr_get_array_length(ndr, &r->in.load_order_group) > ndr_get_array_size(ndr, &r->in.load_order_group)) {
1065 return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.load_order_group), ndr_get_array_length(ndr, &r->in.load_order_group));
1067 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.load_order_group), sizeof(uint16_t)));
1068 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.load_order_group, ndr_get_array_length(ndr, &r->in.load_order_group), sizeof(uint16_t), CH_UTF16));
1069 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_load_order_group_0, 0);
1071 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_dependencies));
1072 if (_ptr_dependencies) {
1073 NDR_PULL_ALLOC(ndr, r->in.dependencies);
1074 } else {
1075 r->in.dependencies = NULL;
1077 if (r->in.dependencies) {
1078 _mem_save_dependencies_0 = NDR_PULL_GET_MEM_CTX(ndr);
1079 NDR_PULL_SET_MEM_CTX(ndr, r->in.dependencies, 0);
1080 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.dependencies));
1081 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.dependencies));
1082 if (ndr_get_array_length(ndr, &r->in.dependencies) > ndr_get_array_size(ndr, &r->in.dependencies)) {
1083 return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.dependencies), ndr_get_array_length(ndr, &r->in.dependencies));
1085 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.dependencies), sizeof(uint16_t)));
1086 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.dependencies, ndr_get_array_length(ndr, &r->in.dependencies), sizeof(uint16_t), CH_UTF16));
1087 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_dependencies_0, 0);
1089 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_service_start_name));
1090 if (_ptr_service_start_name) {
1091 NDR_PULL_ALLOC(ndr, r->in.service_start_name);
1092 } else {
1093 r->in.service_start_name = NULL;
1095 if (r->in.service_start_name) {
1096 _mem_save_service_start_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
1097 NDR_PULL_SET_MEM_CTX(ndr, r->in.service_start_name, 0);
1098 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.service_start_name));
1099 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.service_start_name));
1100 if (ndr_get_array_length(ndr, &r->in.service_start_name) > ndr_get_array_size(ndr, &r->in.service_start_name)) {
1101 return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.service_start_name), ndr_get_array_length(ndr, &r->in.service_start_name));
1103 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.service_start_name), sizeof(uint16_t)));
1104 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.service_start_name, ndr_get_array_length(ndr, &r->in.service_start_name), sizeof(uint16_t), CH_UTF16));
1105 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_service_start_name_0, 0);
1107 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_password));
1108 if (_ptr_password) {
1109 NDR_PULL_ALLOC(ndr, r->in.password);
1110 } else {
1111 r->in.password = NULL;
1113 if (r->in.password) {
1114 _mem_save_password_0 = NDR_PULL_GET_MEM_CTX(ndr);
1115 NDR_PULL_SET_MEM_CTX(ndr, r->in.password, 0);
1116 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.password));
1117 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.password));
1118 if (ndr_get_array_length(ndr, &r->in.password) > ndr_get_array_size(ndr, &r->in.password)) {
1119 return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.password), ndr_get_array_length(ndr, &r->in.password));
1121 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.password), sizeof(uint16_t)));
1122 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.password, ndr_get_array_length(ndr, &r->in.password), sizeof(uint16_t), CH_UTF16));
1123 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_password_0, 0);
1125 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_display_name));
1126 if (_ptr_display_name) {
1127 NDR_PULL_ALLOC(ndr, r->in.display_name);
1128 } else {
1129 r->in.display_name = NULL;
1131 if (r->in.display_name) {
1132 _mem_save_display_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
1133 NDR_PULL_SET_MEM_CTX(ndr, r->in.display_name, 0);
1134 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.display_name));
1135 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.display_name));
1136 if (ndr_get_array_length(ndr, &r->in.display_name) > ndr_get_array_size(ndr, &r->in.display_name)) {
1137 return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.display_name), ndr_get_array_length(ndr, &r->in.display_name));
1139 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.display_name), sizeof(uint16_t)));
1140 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.display_name, ndr_get_array_length(ndr, &r->in.display_name), sizeof(uint16_t), CH_UTF16));
1141 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_display_name_0, 0);
1143 NDR_PULL_ALLOC(ndr, r->out.tag_id);
1144 ZERO_STRUCTP(r->out.tag_id);
1146 if (flags & NDR_OUT) {
1147 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
1148 NDR_PULL_ALLOC(ndr, r->out.tag_id);
1150 _mem_save_tag_id_0 = NDR_PULL_GET_MEM_CTX(ndr);
1151 NDR_PULL_SET_MEM_CTX(ndr, r->out.tag_id, LIBNDR_FLAG_REF_ALLOC);
1152 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.tag_id));
1153 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_tag_id_0, LIBNDR_FLAG_REF_ALLOC);
1154 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
1156 return NT_STATUS_OK;
1159 _PUBLIC_ void ndr_print_svcctl_ChangeServiceConfigW(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_ChangeServiceConfigW *r)
1161 ndr_print_struct(ndr, name, "svcctl_ChangeServiceConfigW");
1162 ndr->depth++;
1163 if (flags & NDR_SET_VALUES) {
1164 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
1166 if (flags & NDR_IN) {
1167 ndr_print_struct(ndr, "in", "svcctl_ChangeServiceConfigW");
1168 ndr->depth++;
1169 ndr_print_ptr(ndr, "handle", r->in.handle);
1170 ndr->depth++;
1171 ndr_print_policy_handle(ndr, "handle", r->in.handle);
1172 ndr->depth--;
1173 ndr_print_uint32(ndr, "type", r->in.type);
1174 ndr_print_uint32(ndr, "start", r->in.start);
1175 ndr_print_uint32(ndr, "error", r->in.error);
1176 ndr_print_ptr(ndr, "binary_path", r->in.binary_path);
1177 ndr->depth++;
1178 if (r->in.binary_path) {
1179 ndr_print_string(ndr, "binary_path", r->in.binary_path);
1181 ndr->depth--;
1182 ndr_print_ptr(ndr, "load_order_group", r->in.load_order_group);
1183 ndr->depth++;
1184 if (r->in.load_order_group) {
1185 ndr_print_string(ndr, "load_order_group", r->in.load_order_group);
1187 ndr->depth--;
1188 ndr_print_ptr(ndr, "dependencies", r->in.dependencies);
1189 ndr->depth++;
1190 if (r->in.dependencies) {
1191 ndr_print_string(ndr, "dependencies", r->in.dependencies);
1193 ndr->depth--;
1194 ndr_print_ptr(ndr, "service_start_name", r->in.service_start_name);
1195 ndr->depth++;
1196 if (r->in.service_start_name) {
1197 ndr_print_string(ndr, "service_start_name", r->in.service_start_name);
1199 ndr->depth--;
1200 ndr_print_ptr(ndr, "password", r->in.password);
1201 ndr->depth++;
1202 if (r->in.password) {
1203 ndr_print_string(ndr, "password", r->in.password);
1205 ndr->depth--;
1206 ndr_print_ptr(ndr, "display_name", r->in.display_name);
1207 ndr->depth++;
1208 if (r->in.display_name) {
1209 ndr_print_string(ndr, "display_name", r->in.display_name);
1211 ndr->depth--;
1212 ndr->depth--;
1214 if (flags & NDR_OUT) {
1215 ndr_print_struct(ndr, "out", "svcctl_ChangeServiceConfigW");
1216 ndr->depth++;
1217 ndr_print_ptr(ndr, "tag_id", r->out.tag_id);
1218 ndr->depth++;
1219 ndr_print_uint32(ndr, "tag_id", *r->out.tag_id);
1220 ndr->depth--;
1221 ndr_print_WERROR(ndr, "result", r->out.result);
1222 ndr->depth--;
1224 ndr->depth--;
1227 NTSTATUS ndr_push_svcctl_CreateServiceW(struct ndr_push *ndr, int flags, const struct svcctl_CreateServiceW *r)
1229 if (flags & NDR_IN) {
1230 if (r->in.scmanager_handle == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
1231 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.scmanager_handle));
1232 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.ServiceName, CH_UTF16)));
1233 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
1234 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.ServiceName, CH_UTF16)));
1235 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.ServiceName, ndr_charset_length(r->in.ServiceName, CH_UTF16), sizeof(uint16_t), CH_UTF16));
1236 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.DisplayName));
1237 if (r->in.DisplayName) {
1238 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.DisplayName, CH_UTF16)));
1239 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
1240 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.DisplayName, CH_UTF16)));
1241 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.DisplayName, ndr_charset_length(r->in.DisplayName, CH_UTF16), sizeof(uint16_t), CH_UTF16));
1243 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.desired_access));
1244 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.type));
1245 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.start_type));
1246 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.error_control));
1247 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.binary_path, CH_UTF16)));
1248 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
1249 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.binary_path, CH_UTF16)));
1250 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));
1251 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.LoadOrderGroupKey));
1252 if (r->in.LoadOrderGroupKey) {
1253 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.LoadOrderGroupKey, CH_UTF16)));
1254 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
1255 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.LoadOrderGroupKey, CH_UTF16)));
1256 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.LoadOrderGroupKey, ndr_charset_length(r->in.LoadOrderGroupKey, CH_UTF16), sizeof(uint16_t), CH_UTF16));
1258 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.TagId));
1259 if (r->in.TagId) {
1260 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->in.TagId));
1262 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.dependencies));
1263 if (r->in.dependencies) {
1264 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.dependencies_size));
1265 NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->in.dependencies, r->in.dependencies_size));
1267 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.dependencies_size));
1268 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.service_start_name));
1269 if (r->in.service_start_name) {
1270 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.service_start_name, CH_UTF16)));
1271 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
1272 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.service_start_name, CH_UTF16)));
1273 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));
1275 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.password));
1276 if (r->in.password) {
1277 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.password_size));
1278 NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->in.password, r->in.password_size));
1280 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.password_size));
1282 if (flags & NDR_OUT) {
1283 NDR_CHECK(ndr_push_unique_ptr(ndr, r->out.TagId));
1284 if (r->out.TagId) {
1285 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.TagId));
1287 if (r->out.handle == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
1288 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.handle));
1289 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
1291 return NT_STATUS_OK;
1294 NTSTATUS ndr_pull_svcctl_CreateServiceW(struct ndr_pull *ndr, int flags, struct svcctl_CreateServiceW *r)
1296 uint32_t _ptr_DisplayName;
1297 uint32_t _ptr_LoadOrderGroupKey;
1298 uint32_t _ptr_TagId;
1299 uint32_t _ptr_dependencies;
1300 uint32_t _ptr_service_start_name;
1301 uint32_t _ptr_password;
1302 TALLOC_CTX *_mem_save_scmanager_handle_0;
1303 TALLOC_CTX *_mem_save_DisplayName_0;
1304 TALLOC_CTX *_mem_save_LoadOrderGroupKey_0;
1305 TALLOC_CTX *_mem_save_TagId_0;
1306 TALLOC_CTX *_mem_save_dependencies_0;
1307 TALLOC_CTX *_mem_save_service_start_name_0;
1308 TALLOC_CTX *_mem_save_password_0;
1309 TALLOC_CTX *_mem_save_handle_0;
1310 if (flags & NDR_IN) {
1311 ZERO_STRUCT(r->out);
1313 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
1314 NDR_PULL_ALLOC(ndr, r->in.scmanager_handle);
1316 _mem_save_scmanager_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
1317 NDR_PULL_SET_MEM_CTX(ndr, r->in.scmanager_handle, LIBNDR_FLAG_REF_ALLOC);
1318 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.scmanager_handle));
1319 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_scmanager_handle_0, LIBNDR_FLAG_REF_ALLOC);
1320 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.ServiceName));
1321 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.ServiceName));
1322 if (ndr_get_array_length(ndr, &r->in.ServiceName) > ndr_get_array_size(ndr, &r->in.ServiceName)) {
1323 return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.ServiceName), ndr_get_array_length(ndr, &r->in.ServiceName));
1325 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.ServiceName), sizeof(uint16_t)));
1326 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.ServiceName, ndr_get_array_length(ndr, &r->in.ServiceName), sizeof(uint16_t), CH_UTF16));
1327 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_DisplayName));
1328 if (_ptr_DisplayName) {
1329 NDR_PULL_ALLOC(ndr, r->in.DisplayName);
1330 } else {
1331 r->in.DisplayName = NULL;
1333 if (r->in.DisplayName) {
1334 _mem_save_DisplayName_0 = NDR_PULL_GET_MEM_CTX(ndr);
1335 NDR_PULL_SET_MEM_CTX(ndr, r->in.DisplayName, 0);
1336 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.DisplayName));
1337 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.DisplayName));
1338 if (ndr_get_array_length(ndr, &r->in.DisplayName) > ndr_get_array_size(ndr, &r->in.DisplayName)) {
1339 return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.DisplayName), ndr_get_array_length(ndr, &r->in.DisplayName));
1341 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.DisplayName), sizeof(uint16_t)));
1342 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.DisplayName, ndr_get_array_length(ndr, &r->in.DisplayName), sizeof(uint16_t), CH_UTF16));
1343 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_DisplayName_0, 0);
1345 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.desired_access));
1346 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.type));
1347 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.start_type));
1348 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.error_control));
1349 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.binary_path));
1350 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.binary_path));
1351 if (ndr_get_array_length(ndr, &r->in.binary_path) > ndr_get_array_size(ndr, &r->in.binary_path)) {
1352 return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.binary_path), ndr_get_array_length(ndr, &r->in.binary_path));
1354 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.binary_path), sizeof(uint16_t)));
1355 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.binary_path, ndr_get_array_length(ndr, &r->in.binary_path), sizeof(uint16_t), CH_UTF16));
1356 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_LoadOrderGroupKey));
1357 if (_ptr_LoadOrderGroupKey) {
1358 NDR_PULL_ALLOC(ndr, r->in.LoadOrderGroupKey);
1359 } else {
1360 r->in.LoadOrderGroupKey = NULL;
1362 if (r->in.LoadOrderGroupKey) {
1363 _mem_save_LoadOrderGroupKey_0 = NDR_PULL_GET_MEM_CTX(ndr);
1364 NDR_PULL_SET_MEM_CTX(ndr, r->in.LoadOrderGroupKey, 0);
1365 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.LoadOrderGroupKey));
1366 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.LoadOrderGroupKey));
1367 if (ndr_get_array_length(ndr, &r->in.LoadOrderGroupKey) > ndr_get_array_size(ndr, &r->in.LoadOrderGroupKey)) {
1368 return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.LoadOrderGroupKey), ndr_get_array_length(ndr, &r->in.LoadOrderGroupKey));
1370 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.LoadOrderGroupKey), sizeof(uint16_t)));
1371 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.LoadOrderGroupKey, ndr_get_array_length(ndr, &r->in.LoadOrderGroupKey), sizeof(uint16_t), CH_UTF16));
1372 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_LoadOrderGroupKey_0, 0);
1374 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_TagId));
1375 if (_ptr_TagId) {
1376 NDR_PULL_ALLOC(ndr, r->in.TagId);
1377 } else {
1378 r->in.TagId = NULL;
1380 if (r->in.TagId) {
1381 _mem_save_TagId_0 = NDR_PULL_GET_MEM_CTX(ndr);
1382 NDR_PULL_SET_MEM_CTX(ndr, r->in.TagId, 0);
1383 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->in.TagId));
1384 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_TagId_0, 0);
1386 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_dependencies));
1387 if (_ptr_dependencies) {
1388 NDR_PULL_ALLOC(ndr, r->in.dependencies);
1389 } else {
1390 r->in.dependencies = NULL;
1392 if (r->in.dependencies) {
1393 _mem_save_dependencies_0 = NDR_PULL_GET_MEM_CTX(ndr);
1394 NDR_PULL_SET_MEM_CTX(ndr, r->in.dependencies, 0);
1395 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.dependencies));
1396 NDR_PULL_ALLOC_N(ndr, r->in.dependencies, ndr_get_array_size(ndr, &r->in.dependencies));
1397 NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->in.dependencies, ndr_get_array_size(ndr, &r->in.dependencies)));
1398 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_dependencies_0, 0);
1400 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.dependencies_size));
1401 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_service_start_name));
1402 if (_ptr_service_start_name) {
1403 NDR_PULL_ALLOC(ndr, r->in.service_start_name);
1404 } else {
1405 r->in.service_start_name = NULL;
1407 if (r->in.service_start_name) {
1408 _mem_save_service_start_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
1409 NDR_PULL_SET_MEM_CTX(ndr, r->in.service_start_name, 0);
1410 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.service_start_name));
1411 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.service_start_name));
1412 if (ndr_get_array_length(ndr, &r->in.service_start_name) > ndr_get_array_size(ndr, &r->in.service_start_name)) {
1413 return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.service_start_name), ndr_get_array_length(ndr, &r->in.service_start_name));
1415 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.service_start_name), sizeof(uint16_t)));
1416 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.service_start_name, ndr_get_array_length(ndr, &r->in.service_start_name), sizeof(uint16_t), CH_UTF16));
1417 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_service_start_name_0, 0);
1419 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_password));
1420 if (_ptr_password) {
1421 NDR_PULL_ALLOC(ndr, r->in.password);
1422 } else {
1423 r->in.password = NULL;
1425 if (r->in.password) {
1426 _mem_save_password_0 = NDR_PULL_GET_MEM_CTX(ndr);
1427 NDR_PULL_SET_MEM_CTX(ndr, r->in.password, 0);
1428 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.password));
1429 NDR_PULL_ALLOC_N(ndr, r->in.password, ndr_get_array_size(ndr, &r->in.password));
1430 NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->in.password, ndr_get_array_size(ndr, &r->in.password)));
1431 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_password_0, 0);
1433 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.password_size));
1434 NDR_PULL_ALLOC(ndr, r->out.handle);
1435 ZERO_STRUCTP(r->out.handle);
1436 if (r->in.dependencies) {
1437 NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->in.dependencies, r->in.dependencies_size));
1439 if (r->in.password) {
1440 NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->in.password, r->in.password_size));
1443 if (flags & NDR_OUT) {
1444 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_TagId));
1445 if (_ptr_TagId) {
1446 NDR_PULL_ALLOC(ndr, r->out.TagId);
1447 } else {
1448 r->out.TagId = NULL;
1450 if (r->out.TagId) {
1451 _mem_save_TagId_0 = NDR_PULL_GET_MEM_CTX(ndr);
1452 NDR_PULL_SET_MEM_CTX(ndr, r->out.TagId, 0);
1453 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.TagId));
1454 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_TagId_0, 0);
1456 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
1457 NDR_PULL_ALLOC(ndr, r->out.handle);
1459 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
1460 NDR_PULL_SET_MEM_CTX(ndr, r->out.handle, LIBNDR_FLAG_REF_ALLOC);
1461 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.handle));
1462 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
1463 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
1465 return NT_STATUS_OK;
1468 _PUBLIC_ void ndr_print_svcctl_CreateServiceW(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_CreateServiceW *r)
1470 ndr_print_struct(ndr, name, "svcctl_CreateServiceW");
1471 ndr->depth++;
1472 if (flags & NDR_SET_VALUES) {
1473 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
1475 if (flags & NDR_IN) {
1476 ndr_print_struct(ndr, "in", "svcctl_CreateServiceW");
1477 ndr->depth++;
1478 ndr_print_ptr(ndr, "scmanager_handle", r->in.scmanager_handle);
1479 ndr->depth++;
1480 ndr_print_policy_handle(ndr, "scmanager_handle", r->in.scmanager_handle);
1481 ndr->depth--;
1482 ndr_print_string(ndr, "ServiceName", r->in.ServiceName);
1483 ndr_print_ptr(ndr, "DisplayName", r->in.DisplayName);
1484 ndr->depth++;
1485 if (r->in.DisplayName) {
1486 ndr_print_string(ndr, "DisplayName", r->in.DisplayName);
1488 ndr->depth--;
1489 ndr_print_uint32(ndr, "desired_access", r->in.desired_access);
1490 ndr_print_uint32(ndr, "type", r->in.type);
1491 ndr_print_uint32(ndr, "start_type", r->in.start_type);
1492 ndr_print_uint32(ndr, "error_control", r->in.error_control);
1493 ndr_print_string(ndr, "binary_path", r->in.binary_path);
1494 ndr_print_ptr(ndr, "LoadOrderGroupKey", r->in.LoadOrderGroupKey);
1495 ndr->depth++;
1496 if (r->in.LoadOrderGroupKey) {
1497 ndr_print_string(ndr, "LoadOrderGroupKey", r->in.LoadOrderGroupKey);
1499 ndr->depth--;
1500 ndr_print_ptr(ndr, "TagId", r->in.TagId);
1501 ndr->depth++;
1502 if (r->in.TagId) {
1503 ndr_print_uint32(ndr, "TagId", *r->in.TagId);
1505 ndr->depth--;
1506 ndr_print_ptr(ndr, "dependencies", r->in.dependencies);
1507 ndr->depth++;
1508 if (r->in.dependencies) {
1509 ndr_print_array_uint8(ndr, "dependencies", r->in.dependencies, r->in.dependencies_size);
1511 ndr->depth--;
1512 ndr_print_uint32(ndr, "dependencies_size", r->in.dependencies_size);
1513 ndr_print_ptr(ndr, "service_start_name", r->in.service_start_name);
1514 ndr->depth++;
1515 if (r->in.service_start_name) {
1516 ndr_print_string(ndr, "service_start_name", r->in.service_start_name);
1518 ndr->depth--;
1519 ndr_print_ptr(ndr, "password", r->in.password);
1520 ndr->depth++;
1521 if (r->in.password) {
1522 ndr_print_array_uint8(ndr, "password", r->in.password, r->in.password_size);
1524 ndr->depth--;
1525 ndr_print_uint32(ndr, "password_size", r->in.password_size);
1526 ndr->depth--;
1528 if (flags & NDR_OUT) {
1529 ndr_print_struct(ndr, "out", "svcctl_CreateServiceW");
1530 ndr->depth++;
1531 ndr_print_ptr(ndr, "TagId", r->out.TagId);
1532 ndr->depth++;
1533 if (r->out.TagId) {
1534 ndr_print_uint32(ndr, "TagId", *r->out.TagId);
1536 ndr->depth--;
1537 ndr_print_ptr(ndr, "handle", r->out.handle);
1538 ndr->depth++;
1539 ndr_print_policy_handle(ndr, "handle", r->out.handle);
1540 ndr->depth--;
1541 ndr_print_WERROR(ndr, "result", r->out.result);
1542 ndr->depth--;
1544 ndr->depth--;
1547 NTSTATUS ndr_push_svcctl_EnumDependentServicesW(struct ndr_push *ndr, int flags, const struct svcctl_EnumDependentServicesW *r)
1549 if (flags & NDR_IN) {
1550 if (r->in.service == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
1551 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.service));
1552 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.state));
1553 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.buf_size));
1555 if (flags & NDR_OUT) {
1556 NDR_CHECK(ndr_push_unique_ptr(ndr, r->out.service_status));
1557 if (r->out.service_status) {
1558 NDR_CHECK(ndr_push_ENUM_SERVICE_STATUS(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.service_status));
1560 if (r->out.bytes_needed == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
1561 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.bytes_needed));
1562 if (r->out.services_returned == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
1563 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.services_returned));
1564 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
1566 return NT_STATUS_OK;
1569 NTSTATUS ndr_pull_svcctl_EnumDependentServicesW(struct ndr_pull *ndr, int flags, struct svcctl_EnumDependentServicesW *r)
1571 uint32_t _ptr_service_status;
1572 TALLOC_CTX *_mem_save_service_0;
1573 TALLOC_CTX *_mem_save_service_status_0;
1574 TALLOC_CTX *_mem_save_bytes_needed_0;
1575 TALLOC_CTX *_mem_save_services_returned_0;
1576 if (flags & NDR_IN) {
1577 ZERO_STRUCT(r->out);
1579 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
1580 NDR_PULL_ALLOC(ndr, r->in.service);
1582 _mem_save_service_0 = NDR_PULL_GET_MEM_CTX(ndr);
1583 NDR_PULL_SET_MEM_CTX(ndr, r->in.service, LIBNDR_FLAG_REF_ALLOC);
1584 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.service));
1585 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_service_0, LIBNDR_FLAG_REF_ALLOC);
1586 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.state));
1587 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.buf_size));
1588 NDR_PULL_ALLOC(ndr, r->out.bytes_needed);
1589 ZERO_STRUCTP(r->out.bytes_needed);
1590 NDR_PULL_ALLOC(ndr, r->out.services_returned);
1591 ZERO_STRUCTP(r->out.services_returned);
1593 if (flags & NDR_OUT) {
1594 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_service_status));
1595 if (_ptr_service_status) {
1596 NDR_PULL_ALLOC(ndr, r->out.service_status);
1597 } else {
1598 r->out.service_status = NULL;
1600 if (r->out.service_status) {
1601 _mem_save_service_status_0 = NDR_PULL_GET_MEM_CTX(ndr);
1602 NDR_PULL_SET_MEM_CTX(ndr, r->out.service_status, 0);
1603 NDR_CHECK(ndr_pull_ENUM_SERVICE_STATUS(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.service_status));
1604 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_service_status_0, 0);
1606 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
1607 NDR_PULL_ALLOC(ndr, r->out.bytes_needed);
1609 _mem_save_bytes_needed_0 = NDR_PULL_GET_MEM_CTX(ndr);
1610 NDR_PULL_SET_MEM_CTX(ndr, r->out.bytes_needed, LIBNDR_FLAG_REF_ALLOC);
1611 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.bytes_needed));
1612 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_bytes_needed_0, LIBNDR_FLAG_REF_ALLOC);
1613 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
1614 NDR_PULL_ALLOC(ndr, r->out.services_returned);
1616 _mem_save_services_returned_0 = NDR_PULL_GET_MEM_CTX(ndr);
1617 NDR_PULL_SET_MEM_CTX(ndr, r->out.services_returned, LIBNDR_FLAG_REF_ALLOC);
1618 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.services_returned));
1619 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_services_returned_0, LIBNDR_FLAG_REF_ALLOC);
1620 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
1622 return NT_STATUS_OK;
1625 _PUBLIC_ void ndr_print_svcctl_EnumDependentServicesW(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_EnumDependentServicesW *r)
1627 ndr_print_struct(ndr, name, "svcctl_EnumDependentServicesW");
1628 ndr->depth++;
1629 if (flags & NDR_SET_VALUES) {
1630 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
1632 if (flags & NDR_IN) {
1633 ndr_print_struct(ndr, "in", "svcctl_EnumDependentServicesW");
1634 ndr->depth++;
1635 ndr_print_ptr(ndr, "service", r->in.service);
1636 ndr->depth++;
1637 ndr_print_policy_handle(ndr, "service", r->in.service);
1638 ndr->depth--;
1639 ndr_print_uint32(ndr, "state", r->in.state);
1640 ndr_print_uint32(ndr, "buf_size", r->in.buf_size);
1641 ndr->depth--;
1643 if (flags & NDR_OUT) {
1644 ndr_print_struct(ndr, "out", "svcctl_EnumDependentServicesW");
1645 ndr->depth++;
1646 ndr_print_ptr(ndr, "service_status", r->out.service_status);
1647 ndr->depth++;
1648 if (r->out.service_status) {
1649 ndr_print_ENUM_SERVICE_STATUS(ndr, "service_status", r->out.service_status);
1651 ndr->depth--;
1652 ndr_print_ptr(ndr, "bytes_needed", r->out.bytes_needed);
1653 ndr->depth++;
1654 ndr_print_uint32(ndr, "bytes_needed", *r->out.bytes_needed);
1655 ndr->depth--;
1656 ndr_print_ptr(ndr, "services_returned", r->out.services_returned);
1657 ndr->depth++;
1658 ndr_print_uint32(ndr, "services_returned", *r->out.services_returned);
1659 ndr->depth--;
1660 ndr_print_WERROR(ndr, "result", r->out.result);
1661 ndr->depth--;
1663 ndr->depth--;
1666 NTSTATUS ndr_push_svcctl_EnumServicesStatusW(struct ndr_push *ndr, int flags, const struct svcctl_EnumServicesStatusW *r)
1668 if (flags & NDR_IN) {
1669 if (r->in.handle == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
1670 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
1671 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.type));
1672 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.state));
1673 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.buf_size));
1674 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.resume_handle));
1675 if (r->in.resume_handle) {
1676 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->in.resume_handle));
1679 if (flags & NDR_OUT) {
1680 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.buf_size));
1681 NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->out.service, r->in.buf_size));
1682 if (r->out.bytes_needed == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
1683 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.bytes_needed));
1684 if (r->out.services_returned == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
1685 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.services_returned));
1686 NDR_CHECK(ndr_push_unique_ptr(ndr, r->out.resume_handle));
1687 if (r->out.resume_handle) {
1688 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.resume_handle));
1690 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
1692 return NT_STATUS_OK;
1695 NTSTATUS ndr_pull_svcctl_EnumServicesStatusW(struct ndr_pull *ndr, int flags, struct svcctl_EnumServicesStatusW *r)
1697 uint32_t _ptr_resume_handle;
1698 TALLOC_CTX *_mem_save_handle_0;
1699 TALLOC_CTX *_mem_save_bytes_needed_0;
1700 TALLOC_CTX *_mem_save_services_returned_0;
1701 TALLOC_CTX *_mem_save_resume_handle_0;
1702 if (flags & NDR_IN) {
1703 ZERO_STRUCT(r->out);
1705 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
1706 NDR_PULL_ALLOC(ndr, r->in.handle);
1708 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
1709 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
1710 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
1711 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
1712 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.type));
1713 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.state));
1714 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.buf_size));
1715 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_resume_handle));
1716 if (_ptr_resume_handle) {
1717 NDR_PULL_ALLOC(ndr, r->in.resume_handle);
1718 } else {
1719 r->in.resume_handle = NULL;
1721 if (r->in.resume_handle) {
1722 _mem_save_resume_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
1723 NDR_PULL_SET_MEM_CTX(ndr, r->in.resume_handle, 0);
1724 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->in.resume_handle));
1725 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_resume_handle_0, 0);
1727 NDR_PULL_ALLOC(ndr, r->out.bytes_needed);
1728 ZERO_STRUCTP(r->out.bytes_needed);
1729 NDR_PULL_ALLOC(ndr, r->out.services_returned);
1730 ZERO_STRUCTP(r->out.services_returned);
1732 if (flags & NDR_OUT) {
1733 NDR_CHECK(ndr_pull_array_size(ndr, &r->out.service));
1734 NDR_PULL_ALLOC_N(ndr, r->out.service, ndr_get_array_size(ndr, &r->out.service));
1735 NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->out.service, ndr_get_array_size(ndr, &r->out.service)));
1736 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
1737 NDR_PULL_ALLOC(ndr, r->out.bytes_needed);
1739 _mem_save_bytes_needed_0 = NDR_PULL_GET_MEM_CTX(ndr);
1740 NDR_PULL_SET_MEM_CTX(ndr, r->out.bytes_needed, LIBNDR_FLAG_REF_ALLOC);
1741 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.bytes_needed));
1742 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_bytes_needed_0, LIBNDR_FLAG_REF_ALLOC);
1743 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
1744 NDR_PULL_ALLOC(ndr, r->out.services_returned);
1746 _mem_save_services_returned_0 = NDR_PULL_GET_MEM_CTX(ndr);
1747 NDR_PULL_SET_MEM_CTX(ndr, r->out.services_returned, LIBNDR_FLAG_REF_ALLOC);
1748 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.services_returned));
1749 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_services_returned_0, LIBNDR_FLAG_REF_ALLOC);
1750 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_resume_handle));
1751 if (_ptr_resume_handle) {
1752 NDR_PULL_ALLOC(ndr, r->out.resume_handle);
1753 } else {
1754 r->out.resume_handle = NULL;
1756 if (r->out.resume_handle) {
1757 _mem_save_resume_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
1758 NDR_PULL_SET_MEM_CTX(ndr, r->out.resume_handle, 0);
1759 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.resume_handle));
1760 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_resume_handle_0, 0);
1762 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
1763 if (r->out.service) {
1764 NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->out.service, r->in.buf_size));
1767 return NT_STATUS_OK;
1770 _PUBLIC_ void ndr_print_svcctl_EnumServicesStatusW(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_EnumServicesStatusW *r)
1772 ndr_print_struct(ndr, name, "svcctl_EnumServicesStatusW");
1773 ndr->depth++;
1774 if (flags & NDR_SET_VALUES) {
1775 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
1777 if (flags & NDR_IN) {
1778 ndr_print_struct(ndr, "in", "svcctl_EnumServicesStatusW");
1779 ndr->depth++;
1780 ndr_print_ptr(ndr, "handle", r->in.handle);
1781 ndr->depth++;
1782 ndr_print_policy_handle(ndr, "handle", r->in.handle);
1783 ndr->depth--;
1784 ndr_print_uint32(ndr, "type", r->in.type);
1785 ndr_print_uint32(ndr, "state", r->in.state);
1786 ndr_print_uint32(ndr, "buf_size", r->in.buf_size);
1787 ndr_print_ptr(ndr, "resume_handle", r->in.resume_handle);
1788 ndr->depth++;
1789 if (r->in.resume_handle) {
1790 ndr_print_uint32(ndr, "resume_handle", *r->in.resume_handle);
1792 ndr->depth--;
1793 ndr->depth--;
1795 if (flags & NDR_OUT) {
1796 ndr_print_struct(ndr, "out", "svcctl_EnumServicesStatusW");
1797 ndr->depth++;
1798 ndr_print_array_uint8(ndr, "service", r->out.service, r->in.buf_size);
1799 ndr_print_ptr(ndr, "bytes_needed", r->out.bytes_needed);
1800 ndr->depth++;
1801 ndr_print_uint32(ndr, "bytes_needed", *r->out.bytes_needed);
1802 ndr->depth--;
1803 ndr_print_ptr(ndr, "services_returned", r->out.services_returned);
1804 ndr->depth++;
1805 ndr_print_uint32(ndr, "services_returned", *r->out.services_returned);
1806 ndr->depth--;
1807 ndr_print_ptr(ndr, "resume_handle", r->out.resume_handle);
1808 ndr->depth++;
1809 if (r->out.resume_handle) {
1810 ndr_print_uint32(ndr, "resume_handle", *r->out.resume_handle);
1812 ndr->depth--;
1813 ndr_print_WERROR(ndr, "result", r->out.result);
1814 ndr->depth--;
1816 ndr->depth--;
1819 NTSTATUS ndr_push_svcctl_OpenSCManagerW(struct ndr_push *ndr, int flags, const struct svcctl_OpenSCManagerW *r)
1821 if (flags & NDR_IN) {
1822 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.MachineName));
1823 if (r->in.MachineName) {
1824 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.MachineName, CH_UTF16)));
1825 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
1826 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.MachineName, CH_UTF16)));
1827 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.MachineName, ndr_charset_length(r->in.MachineName, CH_UTF16), sizeof(uint16_t), CH_UTF16));
1829 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.DatabaseName));
1830 if (r->in.DatabaseName) {
1831 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.DatabaseName, CH_UTF16)));
1832 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
1833 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.DatabaseName, CH_UTF16)));
1834 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.DatabaseName, ndr_charset_length(r->in.DatabaseName, CH_UTF16), sizeof(uint16_t), CH_UTF16));
1836 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.access_mask));
1838 if (flags & NDR_OUT) {
1839 if (r->out.handle == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
1840 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.handle));
1841 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
1843 return NT_STATUS_OK;
1846 NTSTATUS ndr_pull_svcctl_OpenSCManagerW(struct ndr_pull *ndr, int flags, struct svcctl_OpenSCManagerW *r)
1848 uint32_t _ptr_MachineName;
1849 uint32_t _ptr_DatabaseName;
1850 TALLOC_CTX *_mem_save_MachineName_0;
1851 TALLOC_CTX *_mem_save_DatabaseName_0;
1852 TALLOC_CTX *_mem_save_handle_0;
1853 if (flags & NDR_IN) {
1854 ZERO_STRUCT(r->out);
1856 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_MachineName));
1857 if (_ptr_MachineName) {
1858 NDR_PULL_ALLOC(ndr, r->in.MachineName);
1859 } else {
1860 r->in.MachineName = NULL;
1862 if (r->in.MachineName) {
1863 _mem_save_MachineName_0 = NDR_PULL_GET_MEM_CTX(ndr);
1864 NDR_PULL_SET_MEM_CTX(ndr, r->in.MachineName, 0);
1865 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.MachineName));
1866 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.MachineName));
1867 if (ndr_get_array_length(ndr, &r->in.MachineName) > ndr_get_array_size(ndr, &r->in.MachineName)) {
1868 return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.MachineName), ndr_get_array_length(ndr, &r->in.MachineName));
1870 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.MachineName), sizeof(uint16_t)));
1871 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.MachineName, ndr_get_array_length(ndr, &r->in.MachineName), sizeof(uint16_t), CH_UTF16));
1872 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_MachineName_0, 0);
1874 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_DatabaseName));
1875 if (_ptr_DatabaseName) {
1876 NDR_PULL_ALLOC(ndr, r->in.DatabaseName);
1877 } else {
1878 r->in.DatabaseName = NULL;
1880 if (r->in.DatabaseName) {
1881 _mem_save_DatabaseName_0 = NDR_PULL_GET_MEM_CTX(ndr);
1882 NDR_PULL_SET_MEM_CTX(ndr, r->in.DatabaseName, 0);
1883 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.DatabaseName));
1884 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.DatabaseName));
1885 if (ndr_get_array_length(ndr, &r->in.DatabaseName) > ndr_get_array_size(ndr, &r->in.DatabaseName)) {
1886 return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.DatabaseName), ndr_get_array_length(ndr, &r->in.DatabaseName));
1888 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.DatabaseName), sizeof(uint16_t)));
1889 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.DatabaseName, ndr_get_array_length(ndr, &r->in.DatabaseName), sizeof(uint16_t), CH_UTF16));
1890 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_DatabaseName_0, 0);
1892 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.access_mask));
1893 NDR_PULL_ALLOC(ndr, r->out.handle);
1894 ZERO_STRUCTP(r->out.handle);
1896 if (flags & NDR_OUT) {
1897 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
1898 NDR_PULL_ALLOC(ndr, r->out.handle);
1900 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
1901 NDR_PULL_SET_MEM_CTX(ndr, r->out.handle, LIBNDR_FLAG_REF_ALLOC);
1902 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.handle));
1903 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
1904 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
1906 return NT_STATUS_OK;
1909 _PUBLIC_ void ndr_print_svcctl_OpenSCManagerW(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_OpenSCManagerW *r)
1911 ndr_print_struct(ndr, name, "svcctl_OpenSCManagerW");
1912 ndr->depth++;
1913 if (flags & NDR_SET_VALUES) {
1914 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
1916 if (flags & NDR_IN) {
1917 ndr_print_struct(ndr, "in", "svcctl_OpenSCManagerW");
1918 ndr->depth++;
1919 ndr_print_ptr(ndr, "MachineName", r->in.MachineName);
1920 ndr->depth++;
1921 if (r->in.MachineName) {
1922 ndr_print_string(ndr, "MachineName", r->in.MachineName);
1924 ndr->depth--;
1925 ndr_print_ptr(ndr, "DatabaseName", r->in.DatabaseName);
1926 ndr->depth++;
1927 if (r->in.DatabaseName) {
1928 ndr_print_string(ndr, "DatabaseName", r->in.DatabaseName);
1930 ndr->depth--;
1931 ndr_print_uint32(ndr, "access_mask", r->in.access_mask);
1932 ndr->depth--;
1934 if (flags & NDR_OUT) {
1935 ndr_print_struct(ndr, "out", "svcctl_OpenSCManagerW");
1936 ndr->depth++;
1937 ndr_print_ptr(ndr, "handle", r->out.handle);
1938 ndr->depth++;
1939 ndr_print_policy_handle(ndr, "handle", r->out.handle);
1940 ndr->depth--;
1941 ndr_print_WERROR(ndr, "result", r->out.result);
1942 ndr->depth--;
1944 ndr->depth--;
1947 NTSTATUS ndr_push_svcctl_OpenServiceW(struct ndr_push *ndr, int flags, const struct svcctl_OpenServiceW *r)
1949 if (flags & NDR_IN) {
1950 if (r->in.scmanager_handle == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
1951 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.scmanager_handle));
1952 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.ServiceName, CH_UTF16)));
1953 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
1954 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.ServiceName, CH_UTF16)));
1955 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.ServiceName, ndr_charset_length(r->in.ServiceName, CH_UTF16), sizeof(uint16_t), CH_UTF16));
1956 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.access_mask));
1958 if (flags & NDR_OUT) {
1959 if (r->out.handle == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
1960 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.handle));
1961 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
1963 return NT_STATUS_OK;
1966 NTSTATUS ndr_pull_svcctl_OpenServiceW(struct ndr_pull *ndr, int flags, struct svcctl_OpenServiceW *r)
1968 TALLOC_CTX *_mem_save_scmanager_handle_0;
1969 TALLOC_CTX *_mem_save_handle_0;
1970 if (flags & NDR_IN) {
1971 ZERO_STRUCT(r->out);
1973 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
1974 NDR_PULL_ALLOC(ndr, r->in.scmanager_handle);
1976 _mem_save_scmanager_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
1977 NDR_PULL_SET_MEM_CTX(ndr, r->in.scmanager_handle, LIBNDR_FLAG_REF_ALLOC);
1978 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.scmanager_handle));
1979 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_scmanager_handle_0, LIBNDR_FLAG_REF_ALLOC);
1980 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.ServiceName));
1981 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.ServiceName));
1982 if (ndr_get_array_length(ndr, &r->in.ServiceName) > ndr_get_array_size(ndr, &r->in.ServiceName)) {
1983 return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.ServiceName), ndr_get_array_length(ndr, &r->in.ServiceName));
1985 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.ServiceName), sizeof(uint16_t)));
1986 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.ServiceName, ndr_get_array_length(ndr, &r->in.ServiceName), sizeof(uint16_t), CH_UTF16));
1987 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.access_mask));
1988 NDR_PULL_ALLOC(ndr, r->out.handle);
1989 ZERO_STRUCTP(r->out.handle);
1991 if (flags & NDR_OUT) {
1992 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
1993 NDR_PULL_ALLOC(ndr, r->out.handle);
1995 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
1996 NDR_PULL_SET_MEM_CTX(ndr, r->out.handle, LIBNDR_FLAG_REF_ALLOC);
1997 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.handle));
1998 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
1999 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
2001 return NT_STATUS_OK;
2004 _PUBLIC_ void ndr_print_svcctl_OpenServiceW(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_OpenServiceW *r)
2006 ndr_print_struct(ndr, name, "svcctl_OpenServiceW");
2007 ndr->depth++;
2008 if (flags & NDR_SET_VALUES) {
2009 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
2011 if (flags & NDR_IN) {
2012 ndr_print_struct(ndr, "in", "svcctl_OpenServiceW");
2013 ndr->depth++;
2014 ndr_print_ptr(ndr, "scmanager_handle", r->in.scmanager_handle);
2015 ndr->depth++;
2016 ndr_print_policy_handle(ndr, "scmanager_handle", r->in.scmanager_handle);
2017 ndr->depth--;
2018 ndr_print_string(ndr, "ServiceName", r->in.ServiceName);
2019 ndr_print_uint32(ndr, "access_mask", r->in.access_mask);
2020 ndr->depth--;
2022 if (flags & NDR_OUT) {
2023 ndr_print_struct(ndr, "out", "svcctl_OpenServiceW");
2024 ndr->depth++;
2025 ndr_print_ptr(ndr, "handle", r->out.handle);
2026 ndr->depth++;
2027 ndr_print_policy_handle(ndr, "handle", r->out.handle);
2028 ndr->depth--;
2029 ndr_print_WERROR(ndr, "result", r->out.result);
2030 ndr->depth--;
2032 ndr->depth--;
2035 NTSTATUS ndr_push_svcctl_QueryServiceConfigW(struct ndr_push *ndr, int flags, const struct svcctl_QueryServiceConfigW *r)
2037 if (flags & NDR_IN) {
2038 if (r->in.handle == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
2039 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
2040 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.buf_size));
2042 if (flags & NDR_OUT) {
2043 NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->out.query, r->in.buf_size));
2044 if (r->out.bytes_needed == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
2045 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.bytes_needed));
2046 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
2048 return NT_STATUS_OK;
2051 NTSTATUS ndr_pull_svcctl_QueryServiceConfigW(struct ndr_pull *ndr, int flags, struct svcctl_QueryServiceConfigW *r)
2053 TALLOC_CTX *_mem_save_handle_0;
2054 TALLOC_CTX *_mem_save_bytes_needed_0;
2055 if (flags & NDR_IN) {
2056 ZERO_STRUCT(r->out);
2058 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
2059 NDR_PULL_ALLOC(ndr, r->in.handle);
2061 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
2062 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
2063 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
2064 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
2065 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.buf_size));
2066 NDR_PULL_ALLOC(ndr, r->out.bytes_needed);
2067 ZERO_STRUCTP(r->out.bytes_needed);
2069 if (flags & NDR_OUT) {
2070 NDR_PULL_ALLOC_N(ndr, r->out.query, r->in.buf_size);
2071 NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->out.query, r->in.buf_size));
2072 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
2073 NDR_PULL_ALLOC(ndr, r->out.bytes_needed);
2075 _mem_save_bytes_needed_0 = NDR_PULL_GET_MEM_CTX(ndr);
2076 NDR_PULL_SET_MEM_CTX(ndr, r->out.bytes_needed, LIBNDR_FLAG_REF_ALLOC);
2077 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.bytes_needed));
2078 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_bytes_needed_0, LIBNDR_FLAG_REF_ALLOC);
2079 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
2081 return NT_STATUS_OK;
2084 _PUBLIC_ void ndr_print_svcctl_QueryServiceConfigW(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_QueryServiceConfigW *r)
2086 ndr_print_struct(ndr, name, "svcctl_QueryServiceConfigW");
2087 ndr->depth++;
2088 if (flags & NDR_SET_VALUES) {
2089 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
2091 if (flags & NDR_IN) {
2092 ndr_print_struct(ndr, "in", "svcctl_QueryServiceConfigW");
2093 ndr->depth++;
2094 ndr_print_ptr(ndr, "handle", r->in.handle);
2095 ndr->depth++;
2096 ndr_print_policy_handle(ndr, "handle", r->in.handle);
2097 ndr->depth--;
2098 ndr_print_uint32(ndr, "buf_size", r->in.buf_size);
2099 ndr->depth--;
2101 if (flags & NDR_OUT) {
2102 ndr_print_struct(ndr, "out", "svcctl_QueryServiceConfigW");
2103 ndr->depth++;
2104 ndr_print_array_uint8(ndr, "query", r->out.query, r->in.buf_size);
2105 ndr_print_ptr(ndr, "bytes_needed", r->out.bytes_needed);
2106 ndr->depth++;
2107 ndr_print_uint32(ndr, "bytes_needed", *r->out.bytes_needed);
2108 ndr->depth--;
2109 ndr_print_WERROR(ndr, "result", r->out.result);
2110 ndr->depth--;
2112 ndr->depth--;
2115 NTSTATUS ndr_push_svcctl_QueryServiceLockStatusW(struct ndr_push *ndr, int flags, const struct svcctl_QueryServiceLockStatusW *r)
2117 if (flags & NDR_IN) {
2118 if (r->in.handle == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
2119 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
2120 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.buf_size));
2122 if (flags & NDR_OUT) {
2123 if (r->out.lock_status == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
2124 NDR_CHECK(ndr_push_SERVICE_LOCK_STATUS(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.lock_status));
2125 if (r->out.required_buf_size == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
2126 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.required_buf_size));
2127 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
2129 return NT_STATUS_OK;
2132 NTSTATUS ndr_pull_svcctl_QueryServiceLockStatusW(struct ndr_pull *ndr, int flags, struct svcctl_QueryServiceLockStatusW *r)
2134 TALLOC_CTX *_mem_save_handle_0;
2135 TALLOC_CTX *_mem_save_lock_status_0;
2136 TALLOC_CTX *_mem_save_required_buf_size_0;
2137 if (flags & NDR_IN) {
2138 ZERO_STRUCT(r->out);
2140 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
2141 NDR_PULL_ALLOC(ndr, r->in.handle);
2143 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
2144 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
2145 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
2146 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
2147 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.buf_size));
2148 NDR_PULL_ALLOC(ndr, r->out.lock_status);
2149 ZERO_STRUCTP(r->out.lock_status);
2150 NDR_PULL_ALLOC(ndr, r->out.required_buf_size);
2151 ZERO_STRUCTP(r->out.required_buf_size);
2153 if (flags & NDR_OUT) {
2154 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
2155 NDR_PULL_ALLOC(ndr, r->out.lock_status);
2157 _mem_save_lock_status_0 = NDR_PULL_GET_MEM_CTX(ndr);
2158 NDR_PULL_SET_MEM_CTX(ndr, r->out.lock_status, LIBNDR_FLAG_REF_ALLOC);
2159 NDR_CHECK(ndr_pull_SERVICE_LOCK_STATUS(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.lock_status));
2160 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_lock_status_0, LIBNDR_FLAG_REF_ALLOC);
2161 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
2162 NDR_PULL_ALLOC(ndr, r->out.required_buf_size);
2164 _mem_save_required_buf_size_0 = NDR_PULL_GET_MEM_CTX(ndr);
2165 NDR_PULL_SET_MEM_CTX(ndr, r->out.required_buf_size, LIBNDR_FLAG_REF_ALLOC);
2166 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.required_buf_size));
2167 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_required_buf_size_0, LIBNDR_FLAG_REF_ALLOC);
2168 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
2170 return NT_STATUS_OK;
2173 _PUBLIC_ void ndr_print_svcctl_QueryServiceLockStatusW(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_QueryServiceLockStatusW *r)
2175 ndr_print_struct(ndr, name, "svcctl_QueryServiceLockStatusW");
2176 ndr->depth++;
2177 if (flags & NDR_SET_VALUES) {
2178 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
2180 if (flags & NDR_IN) {
2181 ndr_print_struct(ndr, "in", "svcctl_QueryServiceLockStatusW");
2182 ndr->depth++;
2183 ndr_print_ptr(ndr, "handle", r->in.handle);
2184 ndr->depth++;
2185 ndr_print_policy_handle(ndr, "handle", r->in.handle);
2186 ndr->depth--;
2187 ndr_print_uint32(ndr, "buf_size", r->in.buf_size);
2188 ndr->depth--;
2190 if (flags & NDR_OUT) {
2191 ndr_print_struct(ndr, "out", "svcctl_QueryServiceLockStatusW");
2192 ndr->depth++;
2193 ndr_print_ptr(ndr, "lock_status", r->out.lock_status);
2194 ndr->depth++;
2195 ndr_print_SERVICE_LOCK_STATUS(ndr, "lock_status", r->out.lock_status);
2196 ndr->depth--;
2197 ndr_print_ptr(ndr, "required_buf_size", r->out.required_buf_size);
2198 ndr->depth++;
2199 ndr_print_uint32(ndr, "required_buf_size", *r->out.required_buf_size);
2200 ndr->depth--;
2201 ndr_print_WERROR(ndr, "result", r->out.result);
2202 ndr->depth--;
2204 ndr->depth--;
2207 NTSTATUS ndr_push_svcctl_StartServiceW(struct ndr_push *ndr, int flags, const struct svcctl_StartServiceW *r)
2209 if (flags & NDR_IN) {
2210 if (r->in.handle == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
2211 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
2212 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.NumArgs));
2213 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.Arguments));
2214 if (r->in.Arguments) {
2215 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.Arguments, CH_UTF16)));
2216 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
2217 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.Arguments, CH_UTF16)));
2218 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.Arguments, ndr_charset_length(r->in.Arguments, CH_UTF16), sizeof(uint16_t), CH_UTF16));
2221 if (flags & NDR_OUT) {
2222 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
2224 return NT_STATUS_OK;
2227 NTSTATUS ndr_pull_svcctl_StartServiceW(struct ndr_pull *ndr, int flags, struct svcctl_StartServiceW *r)
2229 uint32_t _ptr_Arguments;
2230 TALLOC_CTX *_mem_save_handle_0;
2231 TALLOC_CTX *_mem_save_Arguments_0;
2232 if (flags & NDR_IN) {
2233 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
2234 NDR_PULL_ALLOC(ndr, r->in.handle);
2236 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
2237 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
2238 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
2239 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
2240 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.NumArgs));
2241 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_Arguments));
2242 if (_ptr_Arguments) {
2243 NDR_PULL_ALLOC(ndr, r->in.Arguments);
2244 } else {
2245 r->in.Arguments = NULL;
2247 if (r->in.Arguments) {
2248 _mem_save_Arguments_0 = NDR_PULL_GET_MEM_CTX(ndr);
2249 NDR_PULL_SET_MEM_CTX(ndr, r->in.Arguments, 0);
2250 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.Arguments));
2251 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.Arguments));
2252 if (ndr_get_array_length(ndr, &r->in.Arguments) > ndr_get_array_size(ndr, &r->in.Arguments)) {
2253 return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.Arguments), ndr_get_array_length(ndr, &r->in.Arguments));
2255 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.Arguments), sizeof(uint16_t)));
2256 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.Arguments, ndr_get_array_length(ndr, &r->in.Arguments), sizeof(uint16_t), CH_UTF16));
2257 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_Arguments_0, 0);
2260 if (flags & NDR_OUT) {
2261 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
2263 return NT_STATUS_OK;
2266 _PUBLIC_ void ndr_print_svcctl_StartServiceW(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_StartServiceW *r)
2268 ndr_print_struct(ndr, name, "svcctl_StartServiceW");
2269 ndr->depth++;
2270 if (flags & NDR_SET_VALUES) {
2271 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
2273 if (flags & NDR_IN) {
2274 ndr_print_struct(ndr, "in", "svcctl_StartServiceW");
2275 ndr->depth++;
2276 ndr_print_ptr(ndr, "handle", r->in.handle);
2277 ndr->depth++;
2278 ndr_print_policy_handle(ndr, "handle", r->in.handle);
2279 ndr->depth--;
2280 ndr_print_uint32(ndr, "NumArgs", r->in.NumArgs);
2281 ndr_print_ptr(ndr, "Arguments", r->in.Arguments);
2282 ndr->depth++;
2283 if (r->in.Arguments) {
2284 ndr_print_string(ndr, "Arguments", r->in.Arguments);
2286 ndr->depth--;
2287 ndr->depth--;
2289 if (flags & NDR_OUT) {
2290 ndr_print_struct(ndr, "out", "svcctl_StartServiceW");
2291 ndr->depth++;
2292 ndr_print_WERROR(ndr, "result", r->out.result);
2293 ndr->depth--;
2295 ndr->depth--;
2298 NTSTATUS ndr_push_svcctl_GetServiceDisplayNameW(struct ndr_push *ndr, int flags, const struct svcctl_GetServiceDisplayNameW *r)
2300 if (flags & NDR_IN) {
2301 if (r->in.handle == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
2302 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
2303 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.service_name));
2304 if (r->in.service_name) {
2305 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.service_name, CH_UTF16)));
2306 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
2307 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.service_name, CH_UTF16)));
2308 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));
2310 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.display_name_length));
2311 if (r->in.display_name_length) {
2312 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->in.display_name_length));
2315 if (flags & NDR_OUT) {
2316 if (r->out.display_name == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
2317 if (*r->out.display_name == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
2318 NDR_CHECK(ndr_push_ref_ptr(ndr));
2319 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(*r->out.display_name, CH_UTF16)));
2320 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
2321 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(*r->out.display_name, CH_UTF16)));
2322 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));
2323 NDR_CHECK(ndr_push_unique_ptr(ndr, r->out.display_name_length));
2324 if (r->out.display_name_length) {
2325 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.display_name_length));
2327 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
2329 return NT_STATUS_OK;
2332 NTSTATUS ndr_pull_svcctl_GetServiceDisplayNameW(struct ndr_pull *ndr, int flags, struct svcctl_GetServiceDisplayNameW *r)
2334 uint32_t _ptr_service_name;
2335 uint32_t _ptr_display_name;
2336 uint32_t _ptr_display_name_length;
2337 TALLOC_CTX *_mem_save_handle_0;
2338 TALLOC_CTX *_mem_save_service_name_0;
2339 TALLOC_CTX *_mem_save_display_name_0;
2340 TALLOC_CTX *_mem_save_display_name_length_0;
2341 if (flags & NDR_IN) {
2342 ZERO_STRUCT(r->out);
2344 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
2345 NDR_PULL_ALLOC(ndr, r->in.handle);
2347 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
2348 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
2349 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
2350 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
2351 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_service_name));
2352 if (_ptr_service_name) {
2353 NDR_PULL_ALLOC(ndr, r->in.service_name);
2354 } else {
2355 r->in.service_name = NULL;
2357 if (r->in.service_name) {
2358 _mem_save_service_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
2359 NDR_PULL_SET_MEM_CTX(ndr, r->in.service_name, 0);
2360 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.service_name));
2361 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.service_name));
2362 if (ndr_get_array_length(ndr, &r->in.service_name) > ndr_get_array_size(ndr, &r->in.service_name)) {
2363 return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.service_name), ndr_get_array_length(ndr, &r->in.service_name));
2365 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.service_name), sizeof(uint16_t)));
2366 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.service_name, ndr_get_array_length(ndr, &r->in.service_name), sizeof(uint16_t), CH_UTF16));
2367 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_service_name_0, 0);
2369 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_display_name_length));
2370 if (_ptr_display_name_length) {
2371 NDR_PULL_ALLOC(ndr, r->in.display_name_length);
2372 } else {
2373 r->in.display_name_length = NULL;
2375 if (r->in.display_name_length) {
2376 _mem_save_display_name_length_0 = NDR_PULL_GET_MEM_CTX(ndr);
2377 NDR_PULL_SET_MEM_CTX(ndr, r->in.display_name_length, 0);
2378 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->in.display_name_length));
2379 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_display_name_length_0, 0);
2381 NDR_PULL_ALLOC(ndr, r->out.display_name);
2382 ZERO_STRUCTP(r->out.display_name);
2384 if (flags & NDR_OUT) {
2385 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
2386 NDR_PULL_ALLOC(ndr, r->out.display_name);
2388 _mem_save_display_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
2389 NDR_PULL_SET_MEM_CTX(ndr, r->out.display_name, LIBNDR_FLAG_REF_ALLOC);
2390 NDR_CHECK(ndr_pull_ref_ptr(ndr, &_ptr_display_name));
2391 NDR_CHECK(ndr_pull_array_size(ndr, r->out.display_name));
2392 NDR_CHECK(ndr_pull_array_length(ndr, r->out.display_name));
2393 if (ndr_get_array_length(ndr, r->out.display_name) > ndr_get_array_size(ndr, r->out.display_name)) {
2394 return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, r->out.display_name), ndr_get_array_length(ndr, r->out.display_name));
2396 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, r->out.display_name), sizeof(uint16_t)));
2397 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, r->out.display_name, ndr_get_array_length(ndr, r->out.display_name), sizeof(uint16_t), CH_UTF16));
2398 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_display_name_0, LIBNDR_FLAG_REF_ALLOC);
2399 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_display_name_length));
2400 if (_ptr_display_name_length) {
2401 NDR_PULL_ALLOC(ndr, r->out.display_name_length);
2402 } else {
2403 r->out.display_name_length = NULL;
2405 if (r->out.display_name_length) {
2406 _mem_save_display_name_length_0 = NDR_PULL_GET_MEM_CTX(ndr);
2407 NDR_PULL_SET_MEM_CTX(ndr, r->out.display_name_length, 0);
2408 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.display_name_length));
2409 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_display_name_length_0, 0);
2411 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
2413 return NT_STATUS_OK;
2416 _PUBLIC_ void ndr_print_svcctl_GetServiceDisplayNameW(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_GetServiceDisplayNameW *r)
2418 ndr_print_struct(ndr, name, "svcctl_GetServiceDisplayNameW");
2419 ndr->depth++;
2420 if (flags & NDR_SET_VALUES) {
2421 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
2423 if (flags & NDR_IN) {
2424 ndr_print_struct(ndr, "in", "svcctl_GetServiceDisplayNameW");
2425 ndr->depth++;
2426 ndr_print_ptr(ndr, "handle", r->in.handle);
2427 ndr->depth++;
2428 ndr_print_policy_handle(ndr, "handle", r->in.handle);
2429 ndr->depth--;
2430 ndr_print_ptr(ndr, "service_name", r->in.service_name);
2431 ndr->depth++;
2432 if (r->in.service_name) {
2433 ndr_print_string(ndr, "service_name", r->in.service_name);
2435 ndr->depth--;
2436 ndr_print_ptr(ndr, "display_name_length", r->in.display_name_length);
2437 ndr->depth++;
2438 if (r->in.display_name_length) {
2439 ndr_print_uint32(ndr, "display_name_length", *r->in.display_name_length);
2441 ndr->depth--;
2442 ndr->depth--;
2444 if (flags & NDR_OUT) {
2445 ndr_print_struct(ndr, "out", "svcctl_GetServiceDisplayNameW");
2446 ndr->depth++;
2447 ndr_print_ptr(ndr, "display_name", r->out.display_name);
2448 ndr->depth++;
2449 ndr_print_ptr(ndr, "display_name", *r->out.display_name);
2450 ndr->depth++;
2451 ndr_print_string(ndr, "display_name", *r->out.display_name);
2452 ndr->depth--;
2453 ndr->depth--;
2454 ndr_print_ptr(ndr, "display_name_length", r->out.display_name_length);
2455 ndr->depth++;
2456 if (r->out.display_name_length) {
2457 ndr_print_uint32(ndr, "display_name_length", *r->out.display_name_length);
2459 ndr->depth--;
2460 ndr_print_WERROR(ndr, "result", r->out.result);
2461 ndr->depth--;
2463 ndr->depth--;
2466 NTSTATUS ndr_push_svcctl_GetServiceKeyNameW(struct ndr_push *ndr, int flags, const struct svcctl_GetServiceKeyNameW *r)
2468 if (flags & NDR_IN) {
2469 if (r->in.handle == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
2470 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
2471 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.service_name));
2472 if (r->in.service_name) {
2473 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.service_name, CH_UTF16)));
2474 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
2475 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.service_name, CH_UTF16)));
2476 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));
2478 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.display_name_length));
2479 if (r->in.display_name_length) {
2480 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->in.display_name_length));
2483 if (flags & NDR_OUT) {
2484 if (r->out.key_name == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
2485 if (*r->out.key_name == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
2486 NDR_CHECK(ndr_push_ref_ptr(ndr));
2487 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(*r->out.key_name, CH_UTF16)));
2488 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
2489 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(*r->out.key_name, CH_UTF16)));
2490 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));
2491 NDR_CHECK(ndr_push_unique_ptr(ndr, r->out.display_name_length));
2492 if (r->out.display_name_length) {
2493 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.display_name_length));
2495 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
2497 return NT_STATUS_OK;
2500 NTSTATUS ndr_pull_svcctl_GetServiceKeyNameW(struct ndr_pull *ndr, int flags, struct svcctl_GetServiceKeyNameW *r)
2502 uint32_t _ptr_service_name;
2503 uint32_t _ptr_key_name;
2504 uint32_t _ptr_display_name_length;
2505 TALLOC_CTX *_mem_save_handle_0;
2506 TALLOC_CTX *_mem_save_service_name_0;
2507 TALLOC_CTX *_mem_save_key_name_0;
2508 TALLOC_CTX *_mem_save_display_name_length_0;
2509 if (flags & NDR_IN) {
2510 ZERO_STRUCT(r->out);
2512 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
2513 NDR_PULL_ALLOC(ndr, r->in.handle);
2515 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
2516 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
2517 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
2518 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
2519 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_service_name));
2520 if (_ptr_service_name) {
2521 NDR_PULL_ALLOC(ndr, r->in.service_name);
2522 } else {
2523 r->in.service_name = NULL;
2525 if (r->in.service_name) {
2526 _mem_save_service_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
2527 NDR_PULL_SET_MEM_CTX(ndr, r->in.service_name, 0);
2528 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.service_name));
2529 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.service_name));
2530 if (ndr_get_array_length(ndr, &r->in.service_name) > ndr_get_array_size(ndr, &r->in.service_name)) {
2531 return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.service_name), ndr_get_array_length(ndr, &r->in.service_name));
2533 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.service_name), sizeof(uint16_t)));
2534 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.service_name, ndr_get_array_length(ndr, &r->in.service_name), sizeof(uint16_t), CH_UTF16));
2535 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_service_name_0, 0);
2537 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_display_name_length));
2538 if (_ptr_display_name_length) {
2539 NDR_PULL_ALLOC(ndr, r->in.display_name_length);
2540 } else {
2541 r->in.display_name_length = NULL;
2543 if (r->in.display_name_length) {
2544 _mem_save_display_name_length_0 = NDR_PULL_GET_MEM_CTX(ndr);
2545 NDR_PULL_SET_MEM_CTX(ndr, r->in.display_name_length, 0);
2546 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->in.display_name_length));
2547 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_display_name_length_0, 0);
2549 NDR_PULL_ALLOC(ndr, r->out.key_name);
2550 ZERO_STRUCTP(r->out.key_name);
2552 if (flags & NDR_OUT) {
2553 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
2554 NDR_PULL_ALLOC(ndr, r->out.key_name);
2556 _mem_save_key_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
2557 NDR_PULL_SET_MEM_CTX(ndr, r->out.key_name, LIBNDR_FLAG_REF_ALLOC);
2558 NDR_CHECK(ndr_pull_ref_ptr(ndr, &_ptr_key_name));
2559 NDR_CHECK(ndr_pull_array_size(ndr, r->out.key_name));
2560 NDR_CHECK(ndr_pull_array_length(ndr, r->out.key_name));
2561 if (ndr_get_array_length(ndr, r->out.key_name) > ndr_get_array_size(ndr, r->out.key_name)) {
2562 return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, r->out.key_name), ndr_get_array_length(ndr, r->out.key_name));
2564 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, r->out.key_name), sizeof(uint16_t)));
2565 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, r->out.key_name, ndr_get_array_length(ndr, r->out.key_name), sizeof(uint16_t), CH_UTF16));
2566 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_key_name_0, LIBNDR_FLAG_REF_ALLOC);
2567 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_display_name_length));
2568 if (_ptr_display_name_length) {
2569 NDR_PULL_ALLOC(ndr, r->out.display_name_length);
2570 } else {
2571 r->out.display_name_length = NULL;
2573 if (r->out.display_name_length) {
2574 _mem_save_display_name_length_0 = NDR_PULL_GET_MEM_CTX(ndr);
2575 NDR_PULL_SET_MEM_CTX(ndr, r->out.display_name_length, 0);
2576 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.display_name_length));
2577 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_display_name_length_0, 0);
2579 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
2581 return NT_STATUS_OK;
2584 _PUBLIC_ void ndr_print_svcctl_GetServiceKeyNameW(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_GetServiceKeyNameW *r)
2586 ndr_print_struct(ndr, name, "svcctl_GetServiceKeyNameW");
2587 ndr->depth++;
2588 if (flags & NDR_SET_VALUES) {
2589 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
2591 if (flags & NDR_IN) {
2592 ndr_print_struct(ndr, "in", "svcctl_GetServiceKeyNameW");
2593 ndr->depth++;
2594 ndr_print_ptr(ndr, "handle", r->in.handle);
2595 ndr->depth++;
2596 ndr_print_policy_handle(ndr, "handle", r->in.handle);
2597 ndr->depth--;
2598 ndr_print_ptr(ndr, "service_name", r->in.service_name);
2599 ndr->depth++;
2600 if (r->in.service_name) {
2601 ndr_print_string(ndr, "service_name", r->in.service_name);
2603 ndr->depth--;
2604 ndr_print_ptr(ndr, "display_name_length", r->in.display_name_length);
2605 ndr->depth++;
2606 if (r->in.display_name_length) {
2607 ndr_print_uint32(ndr, "display_name_length", *r->in.display_name_length);
2609 ndr->depth--;
2610 ndr->depth--;
2612 if (flags & NDR_OUT) {
2613 ndr_print_struct(ndr, "out", "svcctl_GetServiceKeyNameW");
2614 ndr->depth++;
2615 ndr_print_ptr(ndr, "key_name", r->out.key_name);
2616 ndr->depth++;
2617 ndr_print_ptr(ndr, "key_name", *r->out.key_name);
2618 ndr->depth++;
2619 ndr_print_string(ndr, "key_name", *r->out.key_name);
2620 ndr->depth--;
2621 ndr->depth--;
2622 ndr_print_ptr(ndr, "display_name_length", r->out.display_name_length);
2623 ndr->depth++;
2624 if (r->out.display_name_length) {
2625 ndr_print_uint32(ndr, "display_name_length", *r->out.display_name_length);
2627 ndr->depth--;
2628 ndr_print_WERROR(ndr, "result", r->out.result);
2629 ndr->depth--;
2631 ndr->depth--;
2634 NTSTATUS ndr_push_svcctl_SCSetServiceBitsA(struct ndr_push *ndr, int flags, const struct svcctl_SCSetServiceBitsA *r)
2636 if (flags & NDR_IN) {
2637 if (r->in.handle == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
2638 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
2639 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.bits));
2640 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.bitson));
2641 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.immediate));
2643 if (flags & NDR_OUT) {
2644 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
2646 return NT_STATUS_OK;
2649 NTSTATUS ndr_pull_svcctl_SCSetServiceBitsA(struct ndr_pull *ndr, int flags, struct svcctl_SCSetServiceBitsA *r)
2651 TALLOC_CTX *_mem_save_handle_0;
2652 if (flags & NDR_IN) {
2653 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
2654 NDR_PULL_ALLOC(ndr, r->in.handle);
2656 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
2657 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
2658 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
2659 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
2660 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.bits));
2661 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.bitson));
2662 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.immediate));
2664 if (flags & NDR_OUT) {
2665 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
2667 return NT_STATUS_OK;
2670 _PUBLIC_ void ndr_print_svcctl_SCSetServiceBitsA(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_SCSetServiceBitsA *r)
2672 ndr_print_struct(ndr, name, "svcctl_SCSetServiceBitsA");
2673 ndr->depth++;
2674 if (flags & NDR_SET_VALUES) {
2675 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
2677 if (flags & NDR_IN) {
2678 ndr_print_struct(ndr, "in", "svcctl_SCSetServiceBitsA");
2679 ndr->depth++;
2680 ndr_print_ptr(ndr, "handle", r->in.handle);
2681 ndr->depth++;
2682 ndr_print_policy_handle(ndr, "handle", r->in.handle);
2683 ndr->depth--;
2684 ndr_print_uint32(ndr, "bits", r->in.bits);
2685 ndr_print_uint32(ndr, "bitson", r->in.bitson);
2686 ndr_print_uint32(ndr, "immediate", r->in.immediate);
2687 ndr->depth--;
2689 if (flags & NDR_OUT) {
2690 ndr_print_struct(ndr, "out", "svcctl_SCSetServiceBitsA");
2691 ndr->depth++;
2692 ndr_print_WERROR(ndr, "result", r->out.result);
2693 ndr->depth--;
2695 ndr->depth--;
2698 NTSTATUS ndr_push_svcctl_ChangeServiceConfigA(struct ndr_push *ndr, int flags, const struct svcctl_ChangeServiceConfigA *r)
2700 if (flags & NDR_IN) {
2701 if (r->in.handle == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
2702 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
2703 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.type));
2704 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.start));
2705 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.error));
2706 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.binary_path));
2707 if (r->in.binary_path) {
2708 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.binary_path, CH_UTF16)));
2709 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
2710 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.binary_path, CH_UTF16)));
2711 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));
2713 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.load_order_group));
2714 if (r->in.load_order_group) {
2715 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.load_order_group, CH_UTF16)));
2716 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
2717 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.load_order_group, CH_UTF16)));
2718 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));
2720 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.dependencies));
2721 if (r->in.dependencies) {
2722 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.dependencies, CH_UTF16)));
2723 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
2724 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.dependencies, CH_UTF16)));
2725 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.dependencies, ndr_charset_length(r->in.dependencies, CH_UTF16), sizeof(uint16_t), CH_UTF16));
2727 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.service_start_name));
2728 if (r->in.service_start_name) {
2729 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.service_start_name, CH_UTF16)));
2730 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
2731 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.service_start_name, CH_UTF16)));
2732 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));
2734 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.password));
2735 if (r->in.password) {
2736 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.password, CH_UTF16)));
2737 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
2738 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.password, CH_UTF16)));
2739 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.password, ndr_charset_length(r->in.password, CH_UTF16), sizeof(uint16_t), CH_UTF16));
2741 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.display_name));
2742 if (r->in.display_name) {
2743 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.display_name, CH_UTF16)));
2744 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
2745 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.display_name, CH_UTF16)));
2746 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));
2749 if (flags & NDR_OUT) {
2750 if (r->out.tag_id == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
2751 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.tag_id));
2752 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
2754 return NT_STATUS_OK;
2757 NTSTATUS ndr_pull_svcctl_ChangeServiceConfigA(struct ndr_pull *ndr, int flags, struct svcctl_ChangeServiceConfigA *r)
2759 uint32_t _ptr_binary_path;
2760 uint32_t _ptr_load_order_group;
2761 uint32_t _ptr_dependencies;
2762 uint32_t _ptr_service_start_name;
2763 uint32_t _ptr_password;
2764 uint32_t _ptr_display_name;
2765 TALLOC_CTX *_mem_save_handle_0;
2766 TALLOC_CTX *_mem_save_binary_path_0;
2767 TALLOC_CTX *_mem_save_load_order_group_0;
2768 TALLOC_CTX *_mem_save_tag_id_0;
2769 TALLOC_CTX *_mem_save_dependencies_0;
2770 TALLOC_CTX *_mem_save_service_start_name_0;
2771 TALLOC_CTX *_mem_save_password_0;
2772 TALLOC_CTX *_mem_save_display_name_0;
2773 if (flags & NDR_IN) {
2774 ZERO_STRUCT(r->out);
2776 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
2777 NDR_PULL_ALLOC(ndr, r->in.handle);
2779 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
2780 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
2781 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
2782 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
2783 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.type));
2784 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.start));
2785 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.error));
2786 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_binary_path));
2787 if (_ptr_binary_path) {
2788 NDR_PULL_ALLOC(ndr, r->in.binary_path);
2789 } else {
2790 r->in.binary_path = NULL;
2792 if (r->in.binary_path) {
2793 _mem_save_binary_path_0 = NDR_PULL_GET_MEM_CTX(ndr);
2794 NDR_PULL_SET_MEM_CTX(ndr, r->in.binary_path, 0);
2795 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.binary_path));
2796 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.binary_path));
2797 if (ndr_get_array_length(ndr, &r->in.binary_path) > ndr_get_array_size(ndr, &r->in.binary_path)) {
2798 return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.binary_path), ndr_get_array_length(ndr, &r->in.binary_path));
2800 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.binary_path), sizeof(uint16_t)));
2801 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.binary_path, ndr_get_array_length(ndr, &r->in.binary_path), sizeof(uint16_t), CH_UTF16));
2802 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_binary_path_0, 0);
2804 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_load_order_group));
2805 if (_ptr_load_order_group) {
2806 NDR_PULL_ALLOC(ndr, r->in.load_order_group);
2807 } else {
2808 r->in.load_order_group = NULL;
2810 if (r->in.load_order_group) {
2811 _mem_save_load_order_group_0 = NDR_PULL_GET_MEM_CTX(ndr);
2812 NDR_PULL_SET_MEM_CTX(ndr, r->in.load_order_group, 0);
2813 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.load_order_group));
2814 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.load_order_group));
2815 if (ndr_get_array_length(ndr, &r->in.load_order_group) > ndr_get_array_size(ndr, &r->in.load_order_group)) {
2816 return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.load_order_group), ndr_get_array_length(ndr, &r->in.load_order_group));
2818 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.load_order_group), sizeof(uint16_t)));
2819 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.load_order_group, ndr_get_array_length(ndr, &r->in.load_order_group), sizeof(uint16_t), CH_UTF16));
2820 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_load_order_group_0, 0);
2822 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_dependencies));
2823 if (_ptr_dependencies) {
2824 NDR_PULL_ALLOC(ndr, r->in.dependencies);
2825 } else {
2826 r->in.dependencies = NULL;
2828 if (r->in.dependencies) {
2829 _mem_save_dependencies_0 = NDR_PULL_GET_MEM_CTX(ndr);
2830 NDR_PULL_SET_MEM_CTX(ndr, r->in.dependencies, 0);
2831 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.dependencies));
2832 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.dependencies));
2833 if (ndr_get_array_length(ndr, &r->in.dependencies) > ndr_get_array_size(ndr, &r->in.dependencies)) {
2834 return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.dependencies), ndr_get_array_length(ndr, &r->in.dependencies));
2836 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.dependencies), sizeof(uint16_t)));
2837 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.dependencies, ndr_get_array_length(ndr, &r->in.dependencies), sizeof(uint16_t), CH_UTF16));
2838 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_dependencies_0, 0);
2840 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_service_start_name));
2841 if (_ptr_service_start_name) {
2842 NDR_PULL_ALLOC(ndr, r->in.service_start_name);
2843 } else {
2844 r->in.service_start_name = NULL;
2846 if (r->in.service_start_name) {
2847 _mem_save_service_start_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
2848 NDR_PULL_SET_MEM_CTX(ndr, r->in.service_start_name, 0);
2849 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.service_start_name));
2850 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.service_start_name));
2851 if (ndr_get_array_length(ndr, &r->in.service_start_name) > ndr_get_array_size(ndr, &r->in.service_start_name)) {
2852 return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.service_start_name), ndr_get_array_length(ndr, &r->in.service_start_name));
2854 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.service_start_name), sizeof(uint16_t)));
2855 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.service_start_name, ndr_get_array_length(ndr, &r->in.service_start_name), sizeof(uint16_t), CH_UTF16));
2856 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_service_start_name_0, 0);
2858 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_password));
2859 if (_ptr_password) {
2860 NDR_PULL_ALLOC(ndr, r->in.password);
2861 } else {
2862 r->in.password = NULL;
2864 if (r->in.password) {
2865 _mem_save_password_0 = NDR_PULL_GET_MEM_CTX(ndr);
2866 NDR_PULL_SET_MEM_CTX(ndr, r->in.password, 0);
2867 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.password));
2868 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.password));
2869 if (ndr_get_array_length(ndr, &r->in.password) > ndr_get_array_size(ndr, &r->in.password)) {
2870 return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.password), ndr_get_array_length(ndr, &r->in.password));
2872 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.password), sizeof(uint16_t)));
2873 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.password, ndr_get_array_length(ndr, &r->in.password), sizeof(uint16_t), CH_UTF16));
2874 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_password_0, 0);
2876 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_display_name));
2877 if (_ptr_display_name) {
2878 NDR_PULL_ALLOC(ndr, r->in.display_name);
2879 } else {
2880 r->in.display_name = NULL;
2882 if (r->in.display_name) {
2883 _mem_save_display_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
2884 NDR_PULL_SET_MEM_CTX(ndr, r->in.display_name, 0);
2885 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.display_name));
2886 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.display_name));
2887 if (ndr_get_array_length(ndr, &r->in.display_name) > ndr_get_array_size(ndr, &r->in.display_name)) {
2888 return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.display_name), ndr_get_array_length(ndr, &r->in.display_name));
2890 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.display_name), sizeof(uint16_t)));
2891 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.display_name, ndr_get_array_length(ndr, &r->in.display_name), sizeof(uint16_t), CH_UTF16));
2892 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_display_name_0, 0);
2894 NDR_PULL_ALLOC(ndr, r->out.tag_id);
2895 ZERO_STRUCTP(r->out.tag_id);
2897 if (flags & NDR_OUT) {
2898 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
2899 NDR_PULL_ALLOC(ndr, r->out.tag_id);
2901 _mem_save_tag_id_0 = NDR_PULL_GET_MEM_CTX(ndr);
2902 NDR_PULL_SET_MEM_CTX(ndr, r->out.tag_id, LIBNDR_FLAG_REF_ALLOC);
2903 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.tag_id));
2904 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_tag_id_0, LIBNDR_FLAG_REF_ALLOC);
2905 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
2907 return NT_STATUS_OK;
2910 _PUBLIC_ void ndr_print_svcctl_ChangeServiceConfigA(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_ChangeServiceConfigA *r)
2912 ndr_print_struct(ndr, name, "svcctl_ChangeServiceConfigA");
2913 ndr->depth++;
2914 if (flags & NDR_SET_VALUES) {
2915 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
2917 if (flags & NDR_IN) {
2918 ndr_print_struct(ndr, "in", "svcctl_ChangeServiceConfigA");
2919 ndr->depth++;
2920 ndr_print_ptr(ndr, "handle", r->in.handle);
2921 ndr->depth++;
2922 ndr_print_policy_handle(ndr, "handle", r->in.handle);
2923 ndr->depth--;
2924 ndr_print_uint32(ndr, "type", r->in.type);
2925 ndr_print_uint32(ndr, "start", r->in.start);
2926 ndr_print_uint32(ndr, "error", r->in.error);
2927 ndr_print_ptr(ndr, "binary_path", r->in.binary_path);
2928 ndr->depth++;
2929 if (r->in.binary_path) {
2930 ndr_print_string(ndr, "binary_path", r->in.binary_path);
2932 ndr->depth--;
2933 ndr_print_ptr(ndr, "load_order_group", r->in.load_order_group);
2934 ndr->depth++;
2935 if (r->in.load_order_group) {
2936 ndr_print_string(ndr, "load_order_group", r->in.load_order_group);
2938 ndr->depth--;
2939 ndr_print_ptr(ndr, "dependencies", r->in.dependencies);
2940 ndr->depth++;
2941 if (r->in.dependencies) {
2942 ndr_print_string(ndr, "dependencies", r->in.dependencies);
2944 ndr->depth--;
2945 ndr_print_ptr(ndr, "service_start_name", r->in.service_start_name);
2946 ndr->depth++;
2947 if (r->in.service_start_name) {
2948 ndr_print_string(ndr, "service_start_name", r->in.service_start_name);
2950 ndr->depth--;
2951 ndr_print_ptr(ndr, "password", r->in.password);
2952 ndr->depth++;
2953 if (r->in.password) {
2954 ndr_print_string(ndr, "password", r->in.password);
2956 ndr->depth--;
2957 ndr_print_ptr(ndr, "display_name", r->in.display_name);
2958 ndr->depth++;
2959 if (r->in.display_name) {
2960 ndr_print_string(ndr, "display_name", r->in.display_name);
2962 ndr->depth--;
2963 ndr->depth--;
2965 if (flags & NDR_OUT) {
2966 ndr_print_struct(ndr, "out", "svcctl_ChangeServiceConfigA");
2967 ndr->depth++;
2968 ndr_print_ptr(ndr, "tag_id", r->out.tag_id);
2969 ndr->depth++;
2970 ndr_print_uint32(ndr, "tag_id", *r->out.tag_id);
2971 ndr->depth--;
2972 ndr_print_WERROR(ndr, "result", r->out.result);
2973 ndr->depth--;
2975 ndr->depth--;
2978 NTSTATUS ndr_push_svcctl_CreateServiceA(struct ndr_push *ndr, int flags, const struct svcctl_CreateServiceA *r)
2980 if (flags & NDR_IN) {
2981 if (r->in.handle == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
2982 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
2983 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.ServiceName));
2984 if (r->in.ServiceName) {
2985 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.ServiceName, CH_UTF16)));
2986 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
2987 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.ServiceName, CH_UTF16)));
2988 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.ServiceName, ndr_charset_length(r->in.ServiceName, CH_UTF16), sizeof(uint16_t), CH_UTF16));
2990 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.DisplayName));
2991 if (r->in.DisplayName) {
2992 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.DisplayName, CH_UTF16)));
2993 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
2994 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.DisplayName, CH_UTF16)));
2995 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.DisplayName, ndr_charset_length(r->in.DisplayName, CH_UTF16), sizeof(uint16_t), CH_UTF16));
2997 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.desired_access));
2998 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.type));
2999 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.start_type));
3000 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.error_control));
3001 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.binary_path));
3002 if (r->in.binary_path) {
3003 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.binary_path, CH_UTF16)));
3004 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
3005 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.binary_path, CH_UTF16)));
3006 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));
3008 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.LoadOrderGroupKey));
3009 if (r->in.LoadOrderGroupKey) {
3010 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.LoadOrderGroupKey, CH_UTF16)));
3011 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
3012 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.LoadOrderGroupKey, CH_UTF16)));
3013 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.LoadOrderGroupKey, ndr_charset_length(r->in.LoadOrderGroupKey, CH_UTF16), sizeof(uint16_t), CH_UTF16));
3015 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.dependencies));
3016 if (r->in.dependencies) {
3017 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.dependencies, CH_UTF16)));
3018 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
3019 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.dependencies, CH_UTF16)));
3020 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.dependencies, ndr_charset_length(r->in.dependencies, CH_UTF16), sizeof(uint16_t), CH_UTF16));
3022 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.service_start_name));
3023 if (r->in.service_start_name) {
3024 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.service_start_name, CH_UTF16)));
3025 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
3026 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.service_start_name, CH_UTF16)));
3027 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));
3029 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.password));
3030 if (r->in.password) {
3031 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.password, CH_UTF16)));
3032 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
3033 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.password, CH_UTF16)));
3034 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.password, ndr_charset_length(r->in.password, CH_UTF16), sizeof(uint16_t), CH_UTF16));
3037 if (flags & NDR_OUT) {
3038 NDR_CHECK(ndr_push_unique_ptr(ndr, r->out.TagId));
3039 if (r->out.TagId) {
3040 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.TagId));
3042 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
3044 return NT_STATUS_OK;
3047 NTSTATUS ndr_pull_svcctl_CreateServiceA(struct ndr_pull *ndr, int flags, struct svcctl_CreateServiceA *r)
3049 uint32_t _ptr_ServiceName;
3050 uint32_t _ptr_DisplayName;
3051 uint32_t _ptr_binary_path;
3052 uint32_t _ptr_LoadOrderGroupKey;
3053 uint32_t _ptr_TagId;
3054 uint32_t _ptr_dependencies;
3055 uint32_t _ptr_service_start_name;
3056 uint32_t _ptr_password;
3057 TALLOC_CTX *_mem_save_handle_0;
3058 TALLOC_CTX *_mem_save_ServiceName_0;
3059 TALLOC_CTX *_mem_save_DisplayName_0;
3060 TALLOC_CTX *_mem_save_binary_path_0;
3061 TALLOC_CTX *_mem_save_LoadOrderGroupKey_0;
3062 TALLOC_CTX *_mem_save_TagId_0;
3063 TALLOC_CTX *_mem_save_dependencies_0;
3064 TALLOC_CTX *_mem_save_service_start_name_0;
3065 TALLOC_CTX *_mem_save_password_0;
3066 if (flags & NDR_IN) {
3067 ZERO_STRUCT(r->out);
3069 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
3070 NDR_PULL_ALLOC(ndr, r->in.handle);
3072 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
3073 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
3074 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
3075 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
3076 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_ServiceName));
3077 if (_ptr_ServiceName) {
3078 NDR_PULL_ALLOC(ndr, r->in.ServiceName);
3079 } else {
3080 r->in.ServiceName = NULL;
3082 if (r->in.ServiceName) {
3083 _mem_save_ServiceName_0 = NDR_PULL_GET_MEM_CTX(ndr);
3084 NDR_PULL_SET_MEM_CTX(ndr, r->in.ServiceName, 0);
3085 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.ServiceName));
3086 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.ServiceName));
3087 if (ndr_get_array_length(ndr, &r->in.ServiceName) > ndr_get_array_size(ndr, &r->in.ServiceName)) {
3088 return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.ServiceName), ndr_get_array_length(ndr, &r->in.ServiceName));
3090 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.ServiceName), sizeof(uint16_t)));
3091 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.ServiceName, ndr_get_array_length(ndr, &r->in.ServiceName), sizeof(uint16_t), CH_UTF16));
3092 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_ServiceName_0, 0);
3094 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_DisplayName));
3095 if (_ptr_DisplayName) {
3096 NDR_PULL_ALLOC(ndr, r->in.DisplayName);
3097 } else {
3098 r->in.DisplayName = NULL;
3100 if (r->in.DisplayName) {
3101 _mem_save_DisplayName_0 = NDR_PULL_GET_MEM_CTX(ndr);
3102 NDR_PULL_SET_MEM_CTX(ndr, r->in.DisplayName, 0);
3103 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.DisplayName));
3104 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.DisplayName));
3105 if (ndr_get_array_length(ndr, &r->in.DisplayName) > ndr_get_array_size(ndr, &r->in.DisplayName)) {
3106 return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.DisplayName), ndr_get_array_length(ndr, &r->in.DisplayName));
3108 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.DisplayName), sizeof(uint16_t)));
3109 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.DisplayName, ndr_get_array_length(ndr, &r->in.DisplayName), sizeof(uint16_t), CH_UTF16));
3110 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_DisplayName_0, 0);
3112 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.desired_access));
3113 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.type));
3114 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.start_type));
3115 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.error_control));
3116 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_binary_path));
3117 if (_ptr_binary_path) {
3118 NDR_PULL_ALLOC(ndr, r->in.binary_path);
3119 } else {
3120 r->in.binary_path = NULL;
3122 if (r->in.binary_path) {
3123 _mem_save_binary_path_0 = NDR_PULL_GET_MEM_CTX(ndr);
3124 NDR_PULL_SET_MEM_CTX(ndr, r->in.binary_path, 0);
3125 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.binary_path));
3126 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.binary_path));
3127 if (ndr_get_array_length(ndr, &r->in.binary_path) > ndr_get_array_size(ndr, &r->in.binary_path)) {
3128 return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.binary_path), ndr_get_array_length(ndr, &r->in.binary_path));
3130 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.binary_path), sizeof(uint16_t)));
3131 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.binary_path, ndr_get_array_length(ndr, &r->in.binary_path), sizeof(uint16_t), CH_UTF16));
3132 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_binary_path_0, 0);
3134 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_LoadOrderGroupKey));
3135 if (_ptr_LoadOrderGroupKey) {
3136 NDR_PULL_ALLOC(ndr, r->in.LoadOrderGroupKey);
3137 } else {
3138 r->in.LoadOrderGroupKey = NULL;
3140 if (r->in.LoadOrderGroupKey) {
3141 _mem_save_LoadOrderGroupKey_0 = NDR_PULL_GET_MEM_CTX(ndr);
3142 NDR_PULL_SET_MEM_CTX(ndr, r->in.LoadOrderGroupKey, 0);
3143 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.LoadOrderGroupKey));
3144 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.LoadOrderGroupKey));
3145 if (ndr_get_array_length(ndr, &r->in.LoadOrderGroupKey) > ndr_get_array_size(ndr, &r->in.LoadOrderGroupKey)) {
3146 return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.LoadOrderGroupKey), ndr_get_array_length(ndr, &r->in.LoadOrderGroupKey));
3148 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.LoadOrderGroupKey), sizeof(uint16_t)));
3149 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.LoadOrderGroupKey, ndr_get_array_length(ndr, &r->in.LoadOrderGroupKey), sizeof(uint16_t), CH_UTF16));
3150 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_LoadOrderGroupKey_0, 0);
3152 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_dependencies));
3153 if (_ptr_dependencies) {
3154 NDR_PULL_ALLOC(ndr, r->in.dependencies);
3155 } else {
3156 r->in.dependencies = NULL;
3158 if (r->in.dependencies) {
3159 _mem_save_dependencies_0 = NDR_PULL_GET_MEM_CTX(ndr);
3160 NDR_PULL_SET_MEM_CTX(ndr, r->in.dependencies, 0);
3161 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.dependencies));
3162 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.dependencies));
3163 if (ndr_get_array_length(ndr, &r->in.dependencies) > ndr_get_array_size(ndr, &r->in.dependencies)) {
3164 return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.dependencies), ndr_get_array_length(ndr, &r->in.dependencies));
3166 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.dependencies), sizeof(uint16_t)));
3167 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.dependencies, ndr_get_array_length(ndr, &r->in.dependencies), sizeof(uint16_t), CH_UTF16));
3168 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_dependencies_0, 0);
3170 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_service_start_name));
3171 if (_ptr_service_start_name) {
3172 NDR_PULL_ALLOC(ndr, r->in.service_start_name);
3173 } else {
3174 r->in.service_start_name = NULL;
3176 if (r->in.service_start_name) {
3177 _mem_save_service_start_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
3178 NDR_PULL_SET_MEM_CTX(ndr, r->in.service_start_name, 0);
3179 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.service_start_name));
3180 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.service_start_name));
3181 if (ndr_get_array_length(ndr, &r->in.service_start_name) > ndr_get_array_size(ndr, &r->in.service_start_name)) {
3182 return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.service_start_name), ndr_get_array_length(ndr, &r->in.service_start_name));
3184 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.service_start_name), sizeof(uint16_t)));
3185 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.service_start_name, ndr_get_array_length(ndr, &r->in.service_start_name), sizeof(uint16_t), CH_UTF16));
3186 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_service_start_name_0, 0);
3188 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_password));
3189 if (_ptr_password) {
3190 NDR_PULL_ALLOC(ndr, r->in.password);
3191 } else {
3192 r->in.password = NULL;
3194 if (r->in.password) {
3195 _mem_save_password_0 = NDR_PULL_GET_MEM_CTX(ndr);
3196 NDR_PULL_SET_MEM_CTX(ndr, r->in.password, 0);
3197 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.password));
3198 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.password));
3199 if (ndr_get_array_length(ndr, &r->in.password) > ndr_get_array_size(ndr, &r->in.password)) {
3200 return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.password), ndr_get_array_length(ndr, &r->in.password));
3202 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.password), sizeof(uint16_t)));
3203 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.password, ndr_get_array_length(ndr, &r->in.password), sizeof(uint16_t), CH_UTF16));
3204 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_password_0, 0);
3207 if (flags & NDR_OUT) {
3208 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_TagId));
3209 if (_ptr_TagId) {
3210 NDR_PULL_ALLOC(ndr, r->out.TagId);
3211 } else {
3212 r->out.TagId = NULL;
3214 if (r->out.TagId) {
3215 _mem_save_TagId_0 = NDR_PULL_GET_MEM_CTX(ndr);
3216 NDR_PULL_SET_MEM_CTX(ndr, r->out.TagId, 0);
3217 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.TagId));
3218 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_TagId_0, 0);
3220 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
3222 return NT_STATUS_OK;
3225 _PUBLIC_ void ndr_print_svcctl_CreateServiceA(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_CreateServiceA *r)
3227 ndr_print_struct(ndr, name, "svcctl_CreateServiceA");
3228 ndr->depth++;
3229 if (flags & NDR_SET_VALUES) {
3230 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
3232 if (flags & NDR_IN) {
3233 ndr_print_struct(ndr, "in", "svcctl_CreateServiceA");
3234 ndr->depth++;
3235 ndr_print_ptr(ndr, "handle", r->in.handle);
3236 ndr->depth++;
3237 ndr_print_policy_handle(ndr, "handle", r->in.handle);
3238 ndr->depth--;
3239 ndr_print_ptr(ndr, "ServiceName", r->in.ServiceName);
3240 ndr->depth++;
3241 if (r->in.ServiceName) {
3242 ndr_print_string(ndr, "ServiceName", r->in.ServiceName);
3244 ndr->depth--;
3245 ndr_print_ptr(ndr, "DisplayName", r->in.DisplayName);
3246 ndr->depth++;
3247 if (r->in.DisplayName) {
3248 ndr_print_string(ndr, "DisplayName", r->in.DisplayName);
3250 ndr->depth--;
3251 ndr_print_uint32(ndr, "desired_access", r->in.desired_access);
3252 ndr_print_uint32(ndr, "type", r->in.type);
3253 ndr_print_uint32(ndr, "start_type", r->in.start_type);
3254 ndr_print_uint32(ndr, "error_control", r->in.error_control);
3255 ndr_print_ptr(ndr, "binary_path", r->in.binary_path);
3256 ndr->depth++;
3257 if (r->in.binary_path) {
3258 ndr_print_string(ndr, "binary_path", r->in.binary_path);
3260 ndr->depth--;
3261 ndr_print_ptr(ndr, "LoadOrderGroupKey", r->in.LoadOrderGroupKey);
3262 ndr->depth++;
3263 if (r->in.LoadOrderGroupKey) {
3264 ndr_print_string(ndr, "LoadOrderGroupKey", r->in.LoadOrderGroupKey);
3266 ndr->depth--;
3267 ndr_print_ptr(ndr, "dependencies", r->in.dependencies);
3268 ndr->depth++;
3269 if (r->in.dependencies) {
3270 ndr_print_string(ndr, "dependencies", r->in.dependencies);
3272 ndr->depth--;
3273 ndr_print_ptr(ndr, "service_start_name", r->in.service_start_name);
3274 ndr->depth++;
3275 if (r->in.service_start_name) {
3276 ndr_print_string(ndr, "service_start_name", r->in.service_start_name);
3278 ndr->depth--;
3279 ndr_print_ptr(ndr, "password", r->in.password);
3280 ndr->depth++;
3281 if (r->in.password) {
3282 ndr_print_string(ndr, "password", r->in.password);
3284 ndr->depth--;
3285 ndr->depth--;
3287 if (flags & NDR_OUT) {
3288 ndr_print_struct(ndr, "out", "svcctl_CreateServiceA");
3289 ndr->depth++;
3290 ndr_print_ptr(ndr, "TagId", r->out.TagId);
3291 ndr->depth++;
3292 if (r->out.TagId) {
3293 ndr_print_uint32(ndr, "TagId", *r->out.TagId);
3295 ndr->depth--;
3296 ndr_print_WERROR(ndr, "result", r->out.result);
3297 ndr->depth--;
3299 ndr->depth--;
3302 NTSTATUS ndr_push_svcctl_EnumDependentServicesA(struct ndr_push *ndr, int flags, const struct svcctl_EnumDependentServicesA *r)
3304 if (flags & NDR_IN) {
3305 if (r->in.service == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
3306 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.service));
3307 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.state));
3308 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.buf_size));
3310 if (flags & NDR_OUT) {
3311 NDR_CHECK(ndr_push_unique_ptr(ndr, r->out.service_status));
3312 if (r->out.service_status) {
3313 NDR_CHECK(ndr_push_ENUM_SERVICE_STATUS(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.service_status));
3315 if (r->out.bytes_needed == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
3316 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.bytes_needed));
3317 if (r->out.services_returned == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
3318 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.services_returned));
3319 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
3321 return NT_STATUS_OK;
3324 NTSTATUS ndr_pull_svcctl_EnumDependentServicesA(struct ndr_pull *ndr, int flags, struct svcctl_EnumDependentServicesA *r)
3326 uint32_t _ptr_service_status;
3327 TALLOC_CTX *_mem_save_service_0;
3328 TALLOC_CTX *_mem_save_service_status_0;
3329 TALLOC_CTX *_mem_save_bytes_needed_0;
3330 TALLOC_CTX *_mem_save_services_returned_0;
3331 if (flags & NDR_IN) {
3332 ZERO_STRUCT(r->out);
3334 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
3335 NDR_PULL_ALLOC(ndr, r->in.service);
3337 _mem_save_service_0 = NDR_PULL_GET_MEM_CTX(ndr);
3338 NDR_PULL_SET_MEM_CTX(ndr, r->in.service, LIBNDR_FLAG_REF_ALLOC);
3339 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.service));
3340 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_service_0, LIBNDR_FLAG_REF_ALLOC);
3341 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.state));
3342 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.buf_size));
3343 NDR_PULL_ALLOC(ndr, r->out.bytes_needed);
3344 ZERO_STRUCTP(r->out.bytes_needed);
3345 NDR_PULL_ALLOC(ndr, r->out.services_returned);
3346 ZERO_STRUCTP(r->out.services_returned);
3348 if (flags & NDR_OUT) {
3349 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_service_status));
3350 if (_ptr_service_status) {
3351 NDR_PULL_ALLOC(ndr, r->out.service_status);
3352 } else {
3353 r->out.service_status = NULL;
3355 if (r->out.service_status) {
3356 _mem_save_service_status_0 = NDR_PULL_GET_MEM_CTX(ndr);
3357 NDR_PULL_SET_MEM_CTX(ndr, r->out.service_status, 0);
3358 NDR_CHECK(ndr_pull_ENUM_SERVICE_STATUS(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.service_status));
3359 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_service_status_0, 0);
3361 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
3362 NDR_PULL_ALLOC(ndr, r->out.bytes_needed);
3364 _mem_save_bytes_needed_0 = NDR_PULL_GET_MEM_CTX(ndr);
3365 NDR_PULL_SET_MEM_CTX(ndr, r->out.bytes_needed, LIBNDR_FLAG_REF_ALLOC);
3366 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.bytes_needed));
3367 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_bytes_needed_0, LIBNDR_FLAG_REF_ALLOC);
3368 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
3369 NDR_PULL_ALLOC(ndr, r->out.services_returned);
3371 _mem_save_services_returned_0 = NDR_PULL_GET_MEM_CTX(ndr);
3372 NDR_PULL_SET_MEM_CTX(ndr, r->out.services_returned, LIBNDR_FLAG_REF_ALLOC);
3373 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.services_returned));
3374 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_services_returned_0, LIBNDR_FLAG_REF_ALLOC);
3375 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
3377 return NT_STATUS_OK;
3380 _PUBLIC_ void ndr_print_svcctl_EnumDependentServicesA(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_EnumDependentServicesA *r)
3382 ndr_print_struct(ndr, name, "svcctl_EnumDependentServicesA");
3383 ndr->depth++;
3384 if (flags & NDR_SET_VALUES) {
3385 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
3387 if (flags & NDR_IN) {
3388 ndr_print_struct(ndr, "in", "svcctl_EnumDependentServicesA");
3389 ndr->depth++;
3390 ndr_print_ptr(ndr, "service", r->in.service);
3391 ndr->depth++;
3392 ndr_print_policy_handle(ndr, "service", r->in.service);
3393 ndr->depth--;
3394 ndr_print_uint32(ndr, "state", r->in.state);
3395 ndr_print_uint32(ndr, "buf_size", r->in.buf_size);
3396 ndr->depth--;
3398 if (flags & NDR_OUT) {
3399 ndr_print_struct(ndr, "out", "svcctl_EnumDependentServicesA");
3400 ndr->depth++;
3401 ndr_print_ptr(ndr, "service_status", r->out.service_status);
3402 ndr->depth++;
3403 if (r->out.service_status) {
3404 ndr_print_ENUM_SERVICE_STATUS(ndr, "service_status", r->out.service_status);
3406 ndr->depth--;
3407 ndr_print_ptr(ndr, "bytes_needed", r->out.bytes_needed);
3408 ndr->depth++;
3409 ndr_print_uint32(ndr, "bytes_needed", *r->out.bytes_needed);
3410 ndr->depth--;
3411 ndr_print_ptr(ndr, "services_returned", r->out.services_returned);
3412 ndr->depth++;
3413 ndr_print_uint32(ndr, "services_returned", *r->out.services_returned);
3414 ndr->depth--;
3415 ndr_print_WERROR(ndr, "result", r->out.result);
3416 ndr->depth--;
3418 ndr->depth--;
3421 NTSTATUS ndr_push_svcctl_EnumServicesStatusA(struct ndr_push *ndr, int flags, const struct svcctl_EnumServicesStatusA *r)
3423 if (flags & NDR_IN) {
3424 if (r->in.handle == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
3425 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
3426 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.type));
3427 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.state));
3428 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.buf_size));
3429 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.resume_handle));
3430 if (r->in.resume_handle) {
3431 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->in.resume_handle));
3434 if (flags & NDR_OUT) {
3435 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.buf_size));
3436 NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->out.service, r->in.buf_size));
3437 if (r->out.bytes_needed == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
3438 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.bytes_needed));
3439 if (r->out.services_returned == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
3440 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.services_returned));
3441 NDR_CHECK(ndr_push_unique_ptr(ndr, r->out.resume_handle));
3442 if (r->out.resume_handle) {
3443 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.resume_handle));
3445 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
3447 return NT_STATUS_OK;
3450 NTSTATUS ndr_pull_svcctl_EnumServicesStatusA(struct ndr_pull *ndr, int flags, struct svcctl_EnumServicesStatusA *r)
3452 uint32_t _ptr_resume_handle;
3453 TALLOC_CTX *_mem_save_handle_0;
3454 TALLOC_CTX *_mem_save_bytes_needed_0;
3455 TALLOC_CTX *_mem_save_services_returned_0;
3456 TALLOC_CTX *_mem_save_resume_handle_0;
3457 if (flags & NDR_IN) {
3458 ZERO_STRUCT(r->out);
3460 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
3461 NDR_PULL_ALLOC(ndr, r->in.handle);
3463 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
3464 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
3465 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
3466 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
3467 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.type));
3468 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.state));
3469 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.buf_size));
3470 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_resume_handle));
3471 if (_ptr_resume_handle) {
3472 NDR_PULL_ALLOC(ndr, r->in.resume_handle);
3473 } else {
3474 r->in.resume_handle = NULL;
3476 if (r->in.resume_handle) {
3477 _mem_save_resume_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
3478 NDR_PULL_SET_MEM_CTX(ndr, r->in.resume_handle, 0);
3479 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->in.resume_handle));
3480 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_resume_handle_0, 0);
3482 NDR_PULL_ALLOC(ndr, r->out.bytes_needed);
3483 ZERO_STRUCTP(r->out.bytes_needed);
3484 NDR_PULL_ALLOC(ndr, r->out.services_returned);
3485 ZERO_STRUCTP(r->out.services_returned);
3487 if (flags & NDR_OUT) {
3488 NDR_CHECK(ndr_pull_array_size(ndr, &r->out.service));
3489 NDR_PULL_ALLOC_N(ndr, r->out.service, ndr_get_array_size(ndr, &r->out.service));
3490 NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->out.service, ndr_get_array_size(ndr, &r->out.service)));
3491 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
3492 NDR_PULL_ALLOC(ndr, r->out.bytes_needed);
3494 _mem_save_bytes_needed_0 = NDR_PULL_GET_MEM_CTX(ndr);
3495 NDR_PULL_SET_MEM_CTX(ndr, r->out.bytes_needed, LIBNDR_FLAG_REF_ALLOC);
3496 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.bytes_needed));
3497 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_bytes_needed_0, LIBNDR_FLAG_REF_ALLOC);
3498 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
3499 NDR_PULL_ALLOC(ndr, r->out.services_returned);
3501 _mem_save_services_returned_0 = NDR_PULL_GET_MEM_CTX(ndr);
3502 NDR_PULL_SET_MEM_CTX(ndr, r->out.services_returned, LIBNDR_FLAG_REF_ALLOC);
3503 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.services_returned));
3504 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_services_returned_0, LIBNDR_FLAG_REF_ALLOC);
3505 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_resume_handle));
3506 if (_ptr_resume_handle) {
3507 NDR_PULL_ALLOC(ndr, r->out.resume_handle);
3508 } else {
3509 r->out.resume_handle = NULL;
3511 if (r->out.resume_handle) {
3512 _mem_save_resume_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
3513 NDR_PULL_SET_MEM_CTX(ndr, r->out.resume_handle, 0);
3514 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.resume_handle));
3515 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_resume_handle_0, 0);
3517 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
3518 if (r->out.service) {
3519 NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->out.service, r->in.buf_size));
3522 return NT_STATUS_OK;
3525 _PUBLIC_ void ndr_print_svcctl_EnumServicesStatusA(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_EnumServicesStatusA *r)
3527 ndr_print_struct(ndr, name, "svcctl_EnumServicesStatusA");
3528 ndr->depth++;
3529 if (flags & NDR_SET_VALUES) {
3530 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
3532 if (flags & NDR_IN) {
3533 ndr_print_struct(ndr, "in", "svcctl_EnumServicesStatusA");
3534 ndr->depth++;
3535 ndr_print_ptr(ndr, "handle", r->in.handle);
3536 ndr->depth++;
3537 ndr_print_policy_handle(ndr, "handle", r->in.handle);
3538 ndr->depth--;
3539 ndr_print_uint32(ndr, "type", r->in.type);
3540 ndr_print_uint32(ndr, "state", r->in.state);
3541 ndr_print_uint32(ndr, "buf_size", r->in.buf_size);
3542 ndr_print_ptr(ndr, "resume_handle", r->in.resume_handle);
3543 ndr->depth++;
3544 if (r->in.resume_handle) {
3545 ndr_print_uint32(ndr, "resume_handle", *r->in.resume_handle);
3547 ndr->depth--;
3548 ndr->depth--;
3550 if (flags & NDR_OUT) {
3551 ndr_print_struct(ndr, "out", "svcctl_EnumServicesStatusA");
3552 ndr->depth++;
3553 ndr_print_array_uint8(ndr, "service", r->out.service, r->in.buf_size);
3554 ndr_print_ptr(ndr, "bytes_needed", r->out.bytes_needed);
3555 ndr->depth++;
3556 ndr_print_uint32(ndr, "bytes_needed", *r->out.bytes_needed);
3557 ndr->depth--;
3558 ndr_print_ptr(ndr, "services_returned", r->out.services_returned);
3559 ndr->depth++;
3560 ndr_print_uint32(ndr, "services_returned", *r->out.services_returned);
3561 ndr->depth--;
3562 ndr_print_ptr(ndr, "resume_handle", r->out.resume_handle);
3563 ndr->depth++;
3564 if (r->out.resume_handle) {
3565 ndr_print_uint32(ndr, "resume_handle", *r->out.resume_handle);
3567 ndr->depth--;
3568 ndr_print_WERROR(ndr, "result", r->out.result);
3569 ndr->depth--;
3571 ndr->depth--;
3574 NTSTATUS ndr_push_svcctl_OpenSCManagerA(struct ndr_push *ndr, int flags, const struct svcctl_OpenSCManagerA *r)
3576 if (flags & NDR_IN) {
3577 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.MachineName));
3578 if (r->in.MachineName) {
3579 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.MachineName, CH_UTF16)));
3580 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
3581 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.MachineName, CH_UTF16)));
3582 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.MachineName, ndr_charset_length(r->in.MachineName, CH_UTF16), sizeof(uint16_t), CH_UTF16));
3584 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.DatabaseName));
3585 if (r->in.DatabaseName) {
3586 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.DatabaseName, CH_UTF16)));
3587 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
3588 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.DatabaseName, CH_UTF16)));
3589 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.DatabaseName, ndr_charset_length(r->in.DatabaseName, CH_UTF16), sizeof(uint16_t), CH_UTF16));
3591 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.access_mask));
3593 if (flags & NDR_OUT) {
3594 if (r->out.handle == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
3595 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.handle));
3596 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
3598 return NT_STATUS_OK;
3601 NTSTATUS ndr_pull_svcctl_OpenSCManagerA(struct ndr_pull *ndr, int flags, struct svcctl_OpenSCManagerA *r)
3603 uint32_t _ptr_MachineName;
3604 uint32_t _ptr_DatabaseName;
3605 TALLOC_CTX *_mem_save_MachineName_0;
3606 TALLOC_CTX *_mem_save_DatabaseName_0;
3607 TALLOC_CTX *_mem_save_handle_0;
3608 if (flags & NDR_IN) {
3609 ZERO_STRUCT(r->out);
3611 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_MachineName));
3612 if (_ptr_MachineName) {
3613 NDR_PULL_ALLOC(ndr, r->in.MachineName);
3614 } else {
3615 r->in.MachineName = NULL;
3617 if (r->in.MachineName) {
3618 _mem_save_MachineName_0 = NDR_PULL_GET_MEM_CTX(ndr);
3619 NDR_PULL_SET_MEM_CTX(ndr, r->in.MachineName, 0);
3620 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.MachineName));
3621 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.MachineName));
3622 if (ndr_get_array_length(ndr, &r->in.MachineName) > ndr_get_array_size(ndr, &r->in.MachineName)) {
3623 return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.MachineName), ndr_get_array_length(ndr, &r->in.MachineName));
3625 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.MachineName), sizeof(uint16_t)));
3626 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.MachineName, ndr_get_array_length(ndr, &r->in.MachineName), sizeof(uint16_t), CH_UTF16));
3627 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_MachineName_0, 0);
3629 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_DatabaseName));
3630 if (_ptr_DatabaseName) {
3631 NDR_PULL_ALLOC(ndr, r->in.DatabaseName);
3632 } else {
3633 r->in.DatabaseName = NULL;
3635 if (r->in.DatabaseName) {
3636 _mem_save_DatabaseName_0 = NDR_PULL_GET_MEM_CTX(ndr);
3637 NDR_PULL_SET_MEM_CTX(ndr, r->in.DatabaseName, 0);
3638 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.DatabaseName));
3639 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.DatabaseName));
3640 if (ndr_get_array_length(ndr, &r->in.DatabaseName) > ndr_get_array_size(ndr, &r->in.DatabaseName)) {
3641 return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.DatabaseName), ndr_get_array_length(ndr, &r->in.DatabaseName));
3643 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.DatabaseName), sizeof(uint16_t)));
3644 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.DatabaseName, ndr_get_array_length(ndr, &r->in.DatabaseName), sizeof(uint16_t), CH_UTF16));
3645 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_DatabaseName_0, 0);
3647 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.access_mask));
3648 NDR_PULL_ALLOC(ndr, r->out.handle);
3649 ZERO_STRUCTP(r->out.handle);
3651 if (flags & NDR_OUT) {
3652 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
3653 NDR_PULL_ALLOC(ndr, r->out.handle);
3655 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
3656 NDR_PULL_SET_MEM_CTX(ndr, r->out.handle, LIBNDR_FLAG_REF_ALLOC);
3657 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.handle));
3658 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
3659 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
3661 return NT_STATUS_OK;
3664 _PUBLIC_ void ndr_print_svcctl_OpenSCManagerA(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_OpenSCManagerA *r)
3666 ndr_print_struct(ndr, name, "svcctl_OpenSCManagerA");
3667 ndr->depth++;
3668 if (flags & NDR_SET_VALUES) {
3669 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
3671 if (flags & NDR_IN) {
3672 ndr_print_struct(ndr, "in", "svcctl_OpenSCManagerA");
3673 ndr->depth++;
3674 ndr_print_ptr(ndr, "MachineName", r->in.MachineName);
3675 ndr->depth++;
3676 if (r->in.MachineName) {
3677 ndr_print_string(ndr, "MachineName", r->in.MachineName);
3679 ndr->depth--;
3680 ndr_print_ptr(ndr, "DatabaseName", r->in.DatabaseName);
3681 ndr->depth++;
3682 if (r->in.DatabaseName) {
3683 ndr_print_string(ndr, "DatabaseName", r->in.DatabaseName);
3685 ndr->depth--;
3686 ndr_print_uint32(ndr, "access_mask", r->in.access_mask);
3687 ndr->depth--;
3689 if (flags & NDR_OUT) {
3690 ndr_print_struct(ndr, "out", "svcctl_OpenSCManagerA");
3691 ndr->depth++;
3692 ndr_print_ptr(ndr, "handle", r->out.handle);
3693 ndr->depth++;
3694 ndr_print_policy_handle(ndr, "handle", r->out.handle);
3695 ndr->depth--;
3696 ndr_print_WERROR(ndr, "result", r->out.result);
3697 ndr->depth--;
3699 ndr->depth--;
3702 NTSTATUS ndr_push_svcctl_OpenServiceA(struct ndr_push *ndr, int flags, const struct svcctl_OpenServiceA *r)
3704 if (flags & NDR_IN) {
3705 if (r->in.scmanager_handle == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
3706 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.scmanager_handle));
3707 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.ServiceName));
3708 if (r->in.ServiceName) {
3709 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.ServiceName, CH_UTF16)));
3710 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
3711 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.ServiceName, CH_UTF16)));
3712 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.ServiceName, ndr_charset_length(r->in.ServiceName, CH_UTF16), sizeof(uint16_t), CH_UTF16));
3714 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.access_mask));
3716 if (flags & NDR_OUT) {
3717 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
3719 return NT_STATUS_OK;
3722 NTSTATUS ndr_pull_svcctl_OpenServiceA(struct ndr_pull *ndr, int flags, struct svcctl_OpenServiceA *r)
3724 uint32_t _ptr_ServiceName;
3725 TALLOC_CTX *_mem_save_scmanager_handle_0;
3726 TALLOC_CTX *_mem_save_ServiceName_0;
3727 if (flags & NDR_IN) {
3728 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
3729 NDR_PULL_ALLOC(ndr, r->in.scmanager_handle);
3731 _mem_save_scmanager_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
3732 NDR_PULL_SET_MEM_CTX(ndr, r->in.scmanager_handle, LIBNDR_FLAG_REF_ALLOC);
3733 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.scmanager_handle));
3734 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_scmanager_handle_0, LIBNDR_FLAG_REF_ALLOC);
3735 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_ServiceName));
3736 if (_ptr_ServiceName) {
3737 NDR_PULL_ALLOC(ndr, r->in.ServiceName);
3738 } else {
3739 r->in.ServiceName = NULL;
3741 if (r->in.ServiceName) {
3742 _mem_save_ServiceName_0 = NDR_PULL_GET_MEM_CTX(ndr);
3743 NDR_PULL_SET_MEM_CTX(ndr, r->in.ServiceName, 0);
3744 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.ServiceName));
3745 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.ServiceName));
3746 if (ndr_get_array_length(ndr, &r->in.ServiceName) > ndr_get_array_size(ndr, &r->in.ServiceName)) {
3747 return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.ServiceName), ndr_get_array_length(ndr, &r->in.ServiceName));
3749 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.ServiceName), sizeof(uint16_t)));
3750 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.ServiceName, ndr_get_array_length(ndr, &r->in.ServiceName), sizeof(uint16_t), CH_UTF16));
3751 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_ServiceName_0, 0);
3753 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.access_mask));
3755 if (flags & NDR_OUT) {
3756 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
3758 return NT_STATUS_OK;
3761 _PUBLIC_ void ndr_print_svcctl_OpenServiceA(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_OpenServiceA *r)
3763 ndr_print_struct(ndr, name, "svcctl_OpenServiceA");
3764 ndr->depth++;
3765 if (flags & NDR_SET_VALUES) {
3766 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
3768 if (flags & NDR_IN) {
3769 ndr_print_struct(ndr, "in", "svcctl_OpenServiceA");
3770 ndr->depth++;
3771 ndr_print_ptr(ndr, "scmanager_handle", r->in.scmanager_handle);
3772 ndr->depth++;
3773 ndr_print_policy_handle(ndr, "scmanager_handle", r->in.scmanager_handle);
3774 ndr->depth--;
3775 ndr_print_ptr(ndr, "ServiceName", r->in.ServiceName);
3776 ndr->depth++;
3777 if (r->in.ServiceName) {
3778 ndr_print_string(ndr, "ServiceName", r->in.ServiceName);
3780 ndr->depth--;
3781 ndr_print_uint32(ndr, "access_mask", r->in.access_mask);
3782 ndr->depth--;
3784 if (flags & NDR_OUT) {
3785 ndr_print_struct(ndr, "out", "svcctl_OpenServiceA");
3786 ndr->depth++;
3787 ndr_print_WERROR(ndr, "result", r->out.result);
3788 ndr->depth--;
3790 ndr->depth--;
3793 NTSTATUS ndr_push_svcctl_QueryServiceConfigA(struct ndr_push *ndr, int flags, const struct svcctl_QueryServiceConfigA *r)
3795 if (flags & NDR_IN) {
3796 if (r->in.handle == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
3797 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
3798 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.buf_size));
3800 if (flags & NDR_OUT) {
3801 NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->out.query, r->in.buf_size));
3802 if (r->out.bytes_needed == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
3803 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.bytes_needed));
3804 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
3806 return NT_STATUS_OK;
3809 NTSTATUS ndr_pull_svcctl_QueryServiceConfigA(struct ndr_pull *ndr, int flags, struct svcctl_QueryServiceConfigA *r)
3811 TALLOC_CTX *_mem_save_handle_0;
3812 TALLOC_CTX *_mem_save_bytes_needed_0;
3813 if (flags & NDR_IN) {
3814 ZERO_STRUCT(r->out);
3816 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
3817 NDR_PULL_ALLOC(ndr, r->in.handle);
3819 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
3820 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
3821 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
3822 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
3823 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.buf_size));
3824 NDR_PULL_ALLOC(ndr, r->out.bytes_needed);
3825 ZERO_STRUCTP(r->out.bytes_needed);
3827 if (flags & NDR_OUT) {
3828 NDR_PULL_ALLOC_N(ndr, r->out.query, r->in.buf_size);
3829 NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->out.query, r->in.buf_size));
3830 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
3831 NDR_PULL_ALLOC(ndr, r->out.bytes_needed);
3833 _mem_save_bytes_needed_0 = NDR_PULL_GET_MEM_CTX(ndr);
3834 NDR_PULL_SET_MEM_CTX(ndr, r->out.bytes_needed, LIBNDR_FLAG_REF_ALLOC);
3835 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.bytes_needed));
3836 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_bytes_needed_0, LIBNDR_FLAG_REF_ALLOC);
3837 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
3839 return NT_STATUS_OK;
3842 _PUBLIC_ void ndr_print_svcctl_QueryServiceConfigA(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_QueryServiceConfigA *r)
3844 ndr_print_struct(ndr, name, "svcctl_QueryServiceConfigA");
3845 ndr->depth++;
3846 if (flags & NDR_SET_VALUES) {
3847 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
3849 if (flags & NDR_IN) {
3850 ndr_print_struct(ndr, "in", "svcctl_QueryServiceConfigA");
3851 ndr->depth++;
3852 ndr_print_ptr(ndr, "handle", r->in.handle);
3853 ndr->depth++;
3854 ndr_print_policy_handle(ndr, "handle", r->in.handle);
3855 ndr->depth--;
3856 ndr_print_uint32(ndr, "buf_size", r->in.buf_size);
3857 ndr->depth--;
3859 if (flags & NDR_OUT) {
3860 ndr_print_struct(ndr, "out", "svcctl_QueryServiceConfigA");
3861 ndr->depth++;
3862 ndr_print_array_uint8(ndr, "query", r->out.query, r->in.buf_size);
3863 ndr_print_ptr(ndr, "bytes_needed", r->out.bytes_needed);
3864 ndr->depth++;
3865 ndr_print_uint32(ndr, "bytes_needed", *r->out.bytes_needed);
3866 ndr->depth--;
3867 ndr_print_WERROR(ndr, "result", r->out.result);
3868 ndr->depth--;
3870 ndr->depth--;
3873 NTSTATUS ndr_push_svcctl_QueryServiceLockStatusA(struct ndr_push *ndr, int flags, const struct svcctl_QueryServiceLockStatusA *r)
3875 if (flags & NDR_IN) {
3876 if (r->in.handle == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
3877 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
3878 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.buf_size));
3880 if (flags & NDR_OUT) {
3881 if (r->out.lock_status == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
3882 NDR_CHECK(ndr_push_SERVICE_LOCK_STATUS(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.lock_status));
3883 if (r->out.required_buf_size == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
3884 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.required_buf_size));
3885 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
3887 return NT_STATUS_OK;
3890 NTSTATUS ndr_pull_svcctl_QueryServiceLockStatusA(struct ndr_pull *ndr, int flags, struct svcctl_QueryServiceLockStatusA *r)
3892 TALLOC_CTX *_mem_save_handle_0;
3893 TALLOC_CTX *_mem_save_lock_status_0;
3894 TALLOC_CTX *_mem_save_required_buf_size_0;
3895 if (flags & NDR_IN) {
3896 ZERO_STRUCT(r->out);
3898 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
3899 NDR_PULL_ALLOC(ndr, r->in.handle);
3901 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
3902 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
3903 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
3904 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
3905 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.buf_size));
3906 NDR_PULL_ALLOC(ndr, r->out.lock_status);
3907 ZERO_STRUCTP(r->out.lock_status);
3908 NDR_PULL_ALLOC(ndr, r->out.required_buf_size);
3909 ZERO_STRUCTP(r->out.required_buf_size);
3911 if (flags & NDR_OUT) {
3912 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
3913 NDR_PULL_ALLOC(ndr, r->out.lock_status);
3915 _mem_save_lock_status_0 = NDR_PULL_GET_MEM_CTX(ndr);
3916 NDR_PULL_SET_MEM_CTX(ndr, r->out.lock_status, LIBNDR_FLAG_REF_ALLOC);
3917 NDR_CHECK(ndr_pull_SERVICE_LOCK_STATUS(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.lock_status));
3918 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_lock_status_0, LIBNDR_FLAG_REF_ALLOC);
3919 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
3920 NDR_PULL_ALLOC(ndr, r->out.required_buf_size);
3922 _mem_save_required_buf_size_0 = NDR_PULL_GET_MEM_CTX(ndr);
3923 NDR_PULL_SET_MEM_CTX(ndr, r->out.required_buf_size, LIBNDR_FLAG_REF_ALLOC);
3924 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.required_buf_size));
3925 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_required_buf_size_0, LIBNDR_FLAG_REF_ALLOC);
3926 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
3928 return NT_STATUS_OK;
3931 _PUBLIC_ void ndr_print_svcctl_QueryServiceLockStatusA(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_QueryServiceLockStatusA *r)
3933 ndr_print_struct(ndr, name, "svcctl_QueryServiceLockStatusA");
3934 ndr->depth++;
3935 if (flags & NDR_SET_VALUES) {
3936 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
3938 if (flags & NDR_IN) {
3939 ndr_print_struct(ndr, "in", "svcctl_QueryServiceLockStatusA");
3940 ndr->depth++;
3941 ndr_print_ptr(ndr, "handle", r->in.handle);
3942 ndr->depth++;
3943 ndr_print_policy_handle(ndr, "handle", r->in.handle);
3944 ndr->depth--;
3945 ndr_print_uint32(ndr, "buf_size", r->in.buf_size);
3946 ndr->depth--;
3948 if (flags & NDR_OUT) {
3949 ndr_print_struct(ndr, "out", "svcctl_QueryServiceLockStatusA");
3950 ndr->depth++;
3951 ndr_print_ptr(ndr, "lock_status", r->out.lock_status);
3952 ndr->depth++;
3953 ndr_print_SERVICE_LOCK_STATUS(ndr, "lock_status", r->out.lock_status);
3954 ndr->depth--;
3955 ndr_print_ptr(ndr, "required_buf_size", r->out.required_buf_size);
3956 ndr->depth++;
3957 ndr_print_uint32(ndr, "required_buf_size", *r->out.required_buf_size);
3958 ndr->depth--;
3959 ndr_print_WERROR(ndr, "result", r->out.result);
3960 ndr->depth--;
3962 ndr->depth--;
3965 NTSTATUS ndr_push_svcctl_StartServiceA(struct ndr_push *ndr, int flags, const struct svcctl_StartServiceA *r)
3967 if (flags & NDR_IN) {
3968 if (r->in.handle == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
3969 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
3970 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.NumArgs));
3971 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.Arguments));
3972 if (r->in.Arguments) {
3973 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.Arguments, CH_UTF16)));
3974 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
3975 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.Arguments, CH_UTF16)));
3976 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.Arguments, ndr_charset_length(r->in.Arguments, CH_UTF16), sizeof(uint16_t), CH_UTF16));
3979 if (flags & NDR_OUT) {
3980 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
3982 return NT_STATUS_OK;
3985 NTSTATUS ndr_pull_svcctl_StartServiceA(struct ndr_pull *ndr, int flags, struct svcctl_StartServiceA *r)
3987 uint32_t _ptr_Arguments;
3988 TALLOC_CTX *_mem_save_handle_0;
3989 TALLOC_CTX *_mem_save_Arguments_0;
3990 if (flags & NDR_IN) {
3991 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
3992 NDR_PULL_ALLOC(ndr, r->in.handle);
3994 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
3995 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
3996 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
3997 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
3998 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.NumArgs));
3999 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_Arguments));
4000 if (_ptr_Arguments) {
4001 NDR_PULL_ALLOC(ndr, r->in.Arguments);
4002 } else {
4003 r->in.Arguments = NULL;
4005 if (r->in.Arguments) {
4006 _mem_save_Arguments_0 = NDR_PULL_GET_MEM_CTX(ndr);
4007 NDR_PULL_SET_MEM_CTX(ndr, r->in.Arguments, 0);
4008 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.Arguments));
4009 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.Arguments));
4010 if (ndr_get_array_length(ndr, &r->in.Arguments) > ndr_get_array_size(ndr, &r->in.Arguments)) {
4011 return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.Arguments), ndr_get_array_length(ndr, &r->in.Arguments));
4013 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.Arguments), sizeof(uint16_t)));
4014 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.Arguments, ndr_get_array_length(ndr, &r->in.Arguments), sizeof(uint16_t), CH_UTF16));
4015 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_Arguments_0, 0);
4018 if (flags & NDR_OUT) {
4019 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
4021 return NT_STATUS_OK;
4024 _PUBLIC_ void ndr_print_svcctl_StartServiceA(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_StartServiceA *r)
4026 ndr_print_struct(ndr, name, "svcctl_StartServiceA");
4027 ndr->depth++;
4028 if (flags & NDR_SET_VALUES) {
4029 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
4031 if (flags & NDR_IN) {
4032 ndr_print_struct(ndr, "in", "svcctl_StartServiceA");
4033 ndr->depth++;
4034 ndr_print_ptr(ndr, "handle", r->in.handle);
4035 ndr->depth++;
4036 ndr_print_policy_handle(ndr, "handle", r->in.handle);
4037 ndr->depth--;
4038 ndr_print_uint32(ndr, "NumArgs", r->in.NumArgs);
4039 ndr_print_ptr(ndr, "Arguments", r->in.Arguments);
4040 ndr->depth++;
4041 if (r->in.Arguments) {
4042 ndr_print_string(ndr, "Arguments", r->in.Arguments);
4044 ndr->depth--;
4045 ndr->depth--;
4047 if (flags & NDR_OUT) {
4048 ndr_print_struct(ndr, "out", "svcctl_StartServiceA");
4049 ndr->depth++;
4050 ndr_print_WERROR(ndr, "result", r->out.result);
4051 ndr->depth--;
4053 ndr->depth--;
4056 NTSTATUS ndr_push_svcctl_GetServiceDisplayNameA(struct ndr_push *ndr, int flags, const struct svcctl_GetServiceDisplayNameA *r)
4058 if (flags & NDR_IN) {
4059 if (r->in.handle == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
4060 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
4061 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.service_name));
4062 if (r->in.service_name) {
4063 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.service_name, CH_UTF16)));
4064 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
4065 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.service_name, CH_UTF16)));
4066 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));
4068 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.display_name_length));
4069 if (r->in.display_name_length) {
4070 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->in.display_name_length));
4073 if (flags & NDR_OUT) {
4074 if (r->out.display_name == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
4075 if (*r->out.display_name == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
4076 NDR_CHECK(ndr_push_ref_ptr(ndr));
4077 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(*r->out.display_name, CH_UTF16)));
4078 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
4079 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(*r->out.display_name, CH_UTF16)));
4080 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));
4081 NDR_CHECK(ndr_push_unique_ptr(ndr, r->out.display_name_length));
4082 if (r->out.display_name_length) {
4083 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.display_name_length));
4085 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
4087 return NT_STATUS_OK;
4090 NTSTATUS ndr_pull_svcctl_GetServiceDisplayNameA(struct ndr_pull *ndr, int flags, struct svcctl_GetServiceDisplayNameA *r)
4092 uint32_t _ptr_service_name;
4093 uint32_t _ptr_display_name;
4094 uint32_t _ptr_display_name_length;
4095 TALLOC_CTX *_mem_save_handle_0;
4096 TALLOC_CTX *_mem_save_service_name_0;
4097 TALLOC_CTX *_mem_save_display_name_0;
4098 TALLOC_CTX *_mem_save_display_name_length_0;
4099 if (flags & NDR_IN) {
4100 ZERO_STRUCT(r->out);
4102 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
4103 NDR_PULL_ALLOC(ndr, r->in.handle);
4105 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
4106 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
4107 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
4108 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
4109 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_service_name));
4110 if (_ptr_service_name) {
4111 NDR_PULL_ALLOC(ndr, r->in.service_name);
4112 } else {
4113 r->in.service_name = NULL;
4115 if (r->in.service_name) {
4116 _mem_save_service_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
4117 NDR_PULL_SET_MEM_CTX(ndr, r->in.service_name, 0);
4118 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.service_name));
4119 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.service_name));
4120 if (ndr_get_array_length(ndr, &r->in.service_name) > ndr_get_array_size(ndr, &r->in.service_name)) {
4121 return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.service_name), ndr_get_array_length(ndr, &r->in.service_name));
4123 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.service_name), sizeof(uint16_t)));
4124 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.service_name, ndr_get_array_length(ndr, &r->in.service_name), sizeof(uint16_t), CH_UTF16));
4125 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_service_name_0, 0);
4127 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_display_name_length));
4128 if (_ptr_display_name_length) {
4129 NDR_PULL_ALLOC(ndr, r->in.display_name_length);
4130 } else {
4131 r->in.display_name_length = NULL;
4133 if (r->in.display_name_length) {
4134 _mem_save_display_name_length_0 = NDR_PULL_GET_MEM_CTX(ndr);
4135 NDR_PULL_SET_MEM_CTX(ndr, r->in.display_name_length, 0);
4136 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->in.display_name_length));
4137 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_display_name_length_0, 0);
4139 NDR_PULL_ALLOC(ndr, r->out.display_name);
4140 ZERO_STRUCTP(r->out.display_name);
4142 if (flags & NDR_OUT) {
4143 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
4144 NDR_PULL_ALLOC(ndr, r->out.display_name);
4146 _mem_save_display_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
4147 NDR_PULL_SET_MEM_CTX(ndr, r->out.display_name, LIBNDR_FLAG_REF_ALLOC);
4148 NDR_CHECK(ndr_pull_ref_ptr(ndr, &_ptr_display_name));
4149 NDR_CHECK(ndr_pull_array_size(ndr, r->out.display_name));
4150 NDR_CHECK(ndr_pull_array_length(ndr, r->out.display_name));
4151 if (ndr_get_array_length(ndr, r->out.display_name) > ndr_get_array_size(ndr, r->out.display_name)) {
4152 return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, r->out.display_name), ndr_get_array_length(ndr, r->out.display_name));
4154 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, r->out.display_name), sizeof(uint16_t)));
4155 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, r->out.display_name, ndr_get_array_length(ndr, r->out.display_name), sizeof(uint16_t), CH_UTF16));
4156 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_display_name_0, LIBNDR_FLAG_REF_ALLOC);
4157 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_display_name_length));
4158 if (_ptr_display_name_length) {
4159 NDR_PULL_ALLOC(ndr, r->out.display_name_length);
4160 } else {
4161 r->out.display_name_length = NULL;
4163 if (r->out.display_name_length) {
4164 _mem_save_display_name_length_0 = NDR_PULL_GET_MEM_CTX(ndr);
4165 NDR_PULL_SET_MEM_CTX(ndr, r->out.display_name_length, 0);
4166 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.display_name_length));
4167 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_display_name_length_0, 0);
4169 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
4171 return NT_STATUS_OK;
4174 _PUBLIC_ void ndr_print_svcctl_GetServiceDisplayNameA(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_GetServiceDisplayNameA *r)
4176 ndr_print_struct(ndr, name, "svcctl_GetServiceDisplayNameA");
4177 ndr->depth++;
4178 if (flags & NDR_SET_VALUES) {
4179 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
4181 if (flags & NDR_IN) {
4182 ndr_print_struct(ndr, "in", "svcctl_GetServiceDisplayNameA");
4183 ndr->depth++;
4184 ndr_print_ptr(ndr, "handle", r->in.handle);
4185 ndr->depth++;
4186 ndr_print_policy_handle(ndr, "handle", r->in.handle);
4187 ndr->depth--;
4188 ndr_print_ptr(ndr, "service_name", r->in.service_name);
4189 ndr->depth++;
4190 if (r->in.service_name) {
4191 ndr_print_string(ndr, "service_name", r->in.service_name);
4193 ndr->depth--;
4194 ndr_print_ptr(ndr, "display_name_length", r->in.display_name_length);
4195 ndr->depth++;
4196 if (r->in.display_name_length) {
4197 ndr_print_uint32(ndr, "display_name_length", *r->in.display_name_length);
4199 ndr->depth--;
4200 ndr->depth--;
4202 if (flags & NDR_OUT) {
4203 ndr_print_struct(ndr, "out", "svcctl_GetServiceDisplayNameA");
4204 ndr->depth++;
4205 ndr_print_ptr(ndr, "display_name", r->out.display_name);
4206 ndr->depth++;
4207 ndr_print_ptr(ndr, "display_name", *r->out.display_name);
4208 ndr->depth++;
4209 ndr_print_string(ndr, "display_name", *r->out.display_name);
4210 ndr->depth--;
4211 ndr->depth--;
4212 ndr_print_ptr(ndr, "display_name_length", r->out.display_name_length);
4213 ndr->depth++;
4214 if (r->out.display_name_length) {
4215 ndr_print_uint32(ndr, "display_name_length", *r->out.display_name_length);
4217 ndr->depth--;
4218 ndr_print_WERROR(ndr, "result", r->out.result);
4219 ndr->depth--;
4221 ndr->depth--;
4224 NTSTATUS ndr_push_svcctl_GetServiceKeyNameA(struct ndr_push *ndr, int flags, const struct svcctl_GetServiceKeyNameA *r)
4226 if (flags & NDR_IN) {
4227 if (r->in.handle == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
4228 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
4229 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.service_name));
4230 if (r->in.service_name) {
4231 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.service_name, CH_UTF16)));
4232 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
4233 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.service_name, CH_UTF16)));
4234 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));
4236 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.display_name_length));
4237 if (r->in.display_name_length) {
4238 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->in.display_name_length));
4241 if (flags & NDR_OUT) {
4242 if (r->out.key_name == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
4243 if (*r->out.key_name == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
4244 NDR_CHECK(ndr_push_ref_ptr(ndr));
4245 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(*r->out.key_name, CH_UTF16)));
4246 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
4247 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(*r->out.key_name, CH_UTF16)));
4248 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));
4249 NDR_CHECK(ndr_push_unique_ptr(ndr, r->out.display_name_length));
4250 if (r->out.display_name_length) {
4251 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.display_name_length));
4253 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
4255 return NT_STATUS_OK;
4258 NTSTATUS ndr_pull_svcctl_GetServiceKeyNameA(struct ndr_pull *ndr, int flags, struct svcctl_GetServiceKeyNameA *r)
4260 uint32_t _ptr_service_name;
4261 uint32_t _ptr_key_name;
4262 uint32_t _ptr_display_name_length;
4263 TALLOC_CTX *_mem_save_handle_0;
4264 TALLOC_CTX *_mem_save_service_name_0;
4265 TALLOC_CTX *_mem_save_key_name_0;
4266 TALLOC_CTX *_mem_save_display_name_length_0;
4267 if (flags & NDR_IN) {
4268 ZERO_STRUCT(r->out);
4270 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
4271 NDR_PULL_ALLOC(ndr, r->in.handle);
4273 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
4274 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
4275 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
4276 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
4277 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_service_name));
4278 if (_ptr_service_name) {
4279 NDR_PULL_ALLOC(ndr, r->in.service_name);
4280 } else {
4281 r->in.service_name = NULL;
4283 if (r->in.service_name) {
4284 _mem_save_service_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
4285 NDR_PULL_SET_MEM_CTX(ndr, r->in.service_name, 0);
4286 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.service_name));
4287 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.service_name));
4288 if (ndr_get_array_length(ndr, &r->in.service_name) > ndr_get_array_size(ndr, &r->in.service_name)) {
4289 return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.service_name), ndr_get_array_length(ndr, &r->in.service_name));
4291 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.service_name), sizeof(uint16_t)));
4292 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.service_name, ndr_get_array_length(ndr, &r->in.service_name), sizeof(uint16_t), CH_UTF16));
4293 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_service_name_0, 0);
4295 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_display_name_length));
4296 if (_ptr_display_name_length) {
4297 NDR_PULL_ALLOC(ndr, r->in.display_name_length);
4298 } else {
4299 r->in.display_name_length = NULL;
4301 if (r->in.display_name_length) {
4302 _mem_save_display_name_length_0 = NDR_PULL_GET_MEM_CTX(ndr);
4303 NDR_PULL_SET_MEM_CTX(ndr, r->in.display_name_length, 0);
4304 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->in.display_name_length));
4305 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_display_name_length_0, 0);
4307 NDR_PULL_ALLOC(ndr, r->out.key_name);
4308 ZERO_STRUCTP(r->out.key_name);
4310 if (flags & NDR_OUT) {
4311 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
4312 NDR_PULL_ALLOC(ndr, r->out.key_name);
4314 _mem_save_key_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
4315 NDR_PULL_SET_MEM_CTX(ndr, r->out.key_name, LIBNDR_FLAG_REF_ALLOC);
4316 NDR_CHECK(ndr_pull_ref_ptr(ndr, &_ptr_key_name));
4317 NDR_CHECK(ndr_pull_array_size(ndr, r->out.key_name));
4318 NDR_CHECK(ndr_pull_array_length(ndr, r->out.key_name));
4319 if (ndr_get_array_length(ndr, r->out.key_name) > ndr_get_array_size(ndr, r->out.key_name)) {
4320 return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, r->out.key_name), ndr_get_array_length(ndr, r->out.key_name));
4322 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, r->out.key_name), sizeof(uint16_t)));
4323 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, r->out.key_name, ndr_get_array_length(ndr, r->out.key_name), sizeof(uint16_t), CH_UTF16));
4324 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_key_name_0, LIBNDR_FLAG_REF_ALLOC);
4325 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_display_name_length));
4326 if (_ptr_display_name_length) {
4327 NDR_PULL_ALLOC(ndr, r->out.display_name_length);
4328 } else {
4329 r->out.display_name_length = NULL;
4331 if (r->out.display_name_length) {
4332 _mem_save_display_name_length_0 = NDR_PULL_GET_MEM_CTX(ndr);
4333 NDR_PULL_SET_MEM_CTX(ndr, r->out.display_name_length, 0);
4334 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.display_name_length));
4335 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_display_name_length_0, 0);
4337 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
4339 return NT_STATUS_OK;
4342 _PUBLIC_ void ndr_print_svcctl_GetServiceKeyNameA(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_GetServiceKeyNameA *r)
4344 ndr_print_struct(ndr, name, "svcctl_GetServiceKeyNameA");
4345 ndr->depth++;
4346 if (flags & NDR_SET_VALUES) {
4347 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
4349 if (flags & NDR_IN) {
4350 ndr_print_struct(ndr, "in", "svcctl_GetServiceKeyNameA");
4351 ndr->depth++;
4352 ndr_print_ptr(ndr, "handle", r->in.handle);
4353 ndr->depth++;
4354 ndr_print_policy_handle(ndr, "handle", r->in.handle);
4355 ndr->depth--;
4356 ndr_print_ptr(ndr, "service_name", r->in.service_name);
4357 ndr->depth++;
4358 if (r->in.service_name) {
4359 ndr_print_string(ndr, "service_name", r->in.service_name);
4361 ndr->depth--;
4362 ndr_print_ptr(ndr, "display_name_length", r->in.display_name_length);
4363 ndr->depth++;
4364 if (r->in.display_name_length) {
4365 ndr_print_uint32(ndr, "display_name_length", *r->in.display_name_length);
4367 ndr->depth--;
4368 ndr->depth--;
4370 if (flags & NDR_OUT) {
4371 ndr_print_struct(ndr, "out", "svcctl_GetServiceKeyNameA");
4372 ndr->depth++;
4373 ndr_print_ptr(ndr, "key_name", r->out.key_name);
4374 ndr->depth++;
4375 ndr_print_ptr(ndr, "key_name", *r->out.key_name);
4376 ndr->depth++;
4377 ndr_print_string(ndr, "key_name", *r->out.key_name);
4378 ndr->depth--;
4379 ndr->depth--;
4380 ndr_print_ptr(ndr, "display_name_length", r->out.display_name_length);
4381 ndr->depth++;
4382 if (r->out.display_name_length) {
4383 ndr_print_uint32(ndr, "display_name_length", *r->out.display_name_length);
4385 ndr->depth--;
4386 ndr_print_WERROR(ndr, "result", r->out.result);
4387 ndr->depth--;
4389 ndr->depth--;
4392 NTSTATUS ndr_push_svcctl_GetCurrentGroupeStateW(struct ndr_push *ndr, int flags, const struct svcctl_GetCurrentGroupeStateW *r)
4394 if (flags & NDR_IN) {
4396 if (flags & NDR_OUT) {
4397 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
4399 return NT_STATUS_OK;
4402 NTSTATUS ndr_pull_svcctl_GetCurrentGroupeStateW(struct ndr_pull *ndr, int flags, struct svcctl_GetCurrentGroupeStateW *r)
4404 if (flags & NDR_IN) {
4406 if (flags & NDR_OUT) {
4407 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
4409 return NT_STATUS_OK;
4412 _PUBLIC_ void ndr_print_svcctl_GetCurrentGroupeStateW(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_GetCurrentGroupeStateW *r)
4414 ndr_print_struct(ndr, name, "svcctl_GetCurrentGroupeStateW");
4415 ndr->depth++;
4416 if (flags & NDR_SET_VALUES) {
4417 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
4419 if (flags & NDR_IN) {
4420 ndr_print_struct(ndr, "in", "svcctl_GetCurrentGroupeStateW");
4421 ndr->depth++;
4422 ndr->depth--;
4424 if (flags & NDR_OUT) {
4425 ndr_print_struct(ndr, "out", "svcctl_GetCurrentGroupeStateW");
4426 ndr->depth++;
4427 ndr_print_WERROR(ndr, "result", r->out.result);
4428 ndr->depth--;
4430 ndr->depth--;
4433 NTSTATUS ndr_push_svcctl_EnumServiceGroupW(struct ndr_push *ndr, int flags, const struct svcctl_EnumServiceGroupW *r)
4435 if (flags & NDR_IN) {
4437 if (flags & NDR_OUT) {
4438 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
4440 return NT_STATUS_OK;
4443 NTSTATUS ndr_pull_svcctl_EnumServiceGroupW(struct ndr_pull *ndr, int flags, struct svcctl_EnumServiceGroupW *r)
4445 if (flags & NDR_IN) {
4447 if (flags & NDR_OUT) {
4448 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
4450 return NT_STATUS_OK;
4453 _PUBLIC_ void ndr_print_svcctl_EnumServiceGroupW(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_EnumServiceGroupW *r)
4455 ndr_print_struct(ndr, name, "svcctl_EnumServiceGroupW");
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_EnumServiceGroupW");
4462 ndr->depth++;
4463 ndr->depth--;
4465 if (flags & NDR_OUT) {
4466 ndr_print_struct(ndr, "out", "svcctl_EnumServiceGroupW");
4467 ndr->depth++;
4468 ndr_print_WERROR(ndr, "result", r->out.result);
4469 ndr->depth--;
4471 ndr->depth--;
4474 NTSTATUS ndr_push_svcctl_ChangeServiceConfig2A(struct ndr_push *ndr, int flags, const struct svcctl_ChangeServiceConfig2A *r)
4476 if (flags & NDR_IN) {
4477 if (r->in.handle == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
4478 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
4479 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.info_level));
4480 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.info));
4481 if (r->in.info) {
4482 NDR_CHECK(ndr_push_uint8(ndr, NDR_SCALARS, *r->in.info));
4485 if (flags & NDR_OUT) {
4486 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
4488 return NT_STATUS_OK;
4491 NTSTATUS ndr_pull_svcctl_ChangeServiceConfig2A(struct ndr_pull *ndr, int flags, struct svcctl_ChangeServiceConfig2A *r)
4493 uint32_t _ptr_info;
4494 TALLOC_CTX *_mem_save_handle_0;
4495 TALLOC_CTX *_mem_save_info_0;
4496 if (flags & NDR_IN) {
4497 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
4498 NDR_PULL_ALLOC(ndr, r->in.handle);
4500 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
4501 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
4502 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
4503 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
4504 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.info_level));
4505 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_info));
4506 if (_ptr_info) {
4507 NDR_PULL_ALLOC(ndr, r->in.info);
4508 } else {
4509 r->in.info = NULL;
4511 if (r->in.info) {
4512 _mem_save_info_0 = NDR_PULL_GET_MEM_CTX(ndr);
4513 NDR_PULL_SET_MEM_CTX(ndr, r->in.info, 0);
4514 NDR_CHECK(ndr_pull_uint8(ndr, NDR_SCALARS, r->in.info));
4515 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_info_0, 0);
4518 if (flags & NDR_OUT) {
4519 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
4521 return NT_STATUS_OK;
4524 _PUBLIC_ void ndr_print_svcctl_ChangeServiceConfig2A(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_ChangeServiceConfig2A *r)
4526 ndr_print_struct(ndr, name, "svcctl_ChangeServiceConfig2A");
4527 ndr->depth++;
4528 if (flags & NDR_SET_VALUES) {
4529 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
4531 if (flags & NDR_IN) {
4532 ndr_print_struct(ndr, "in", "svcctl_ChangeServiceConfig2A");
4533 ndr->depth++;
4534 ndr_print_ptr(ndr, "handle", r->in.handle);
4535 ndr->depth++;
4536 ndr_print_policy_handle(ndr, "handle", r->in.handle);
4537 ndr->depth--;
4538 ndr_print_uint32(ndr, "info_level", r->in.info_level);
4539 ndr_print_ptr(ndr, "info", r->in.info);
4540 ndr->depth++;
4541 if (r->in.info) {
4542 ndr_print_uint8(ndr, "info", *r->in.info);
4544 ndr->depth--;
4545 ndr->depth--;
4547 if (flags & NDR_OUT) {
4548 ndr_print_struct(ndr, "out", "svcctl_ChangeServiceConfig2A");
4549 ndr->depth++;
4550 ndr_print_WERROR(ndr, "result", r->out.result);
4551 ndr->depth--;
4553 ndr->depth--;
4556 NTSTATUS ndr_push_svcctl_ChangeServiceConfig2W(struct ndr_push *ndr, int flags, const struct svcctl_ChangeServiceConfig2W *r)
4558 if (flags & NDR_IN) {
4559 if (r->in.handle == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
4560 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
4561 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.info_level));
4562 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.info));
4563 if (r->in.info) {
4564 NDR_CHECK(ndr_push_uint8(ndr, NDR_SCALARS, *r->in.info));
4567 if (flags & NDR_OUT) {
4568 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
4570 return NT_STATUS_OK;
4573 NTSTATUS ndr_pull_svcctl_ChangeServiceConfig2W(struct ndr_pull *ndr, int flags, struct svcctl_ChangeServiceConfig2W *r)
4575 uint32_t _ptr_info;
4576 TALLOC_CTX *_mem_save_handle_0;
4577 TALLOC_CTX *_mem_save_info_0;
4578 if (flags & NDR_IN) {
4579 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
4580 NDR_PULL_ALLOC(ndr, r->in.handle);
4582 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
4583 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
4584 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
4585 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
4586 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.info_level));
4587 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_info));
4588 if (_ptr_info) {
4589 NDR_PULL_ALLOC(ndr, r->in.info);
4590 } else {
4591 r->in.info = NULL;
4593 if (r->in.info) {
4594 _mem_save_info_0 = NDR_PULL_GET_MEM_CTX(ndr);
4595 NDR_PULL_SET_MEM_CTX(ndr, r->in.info, 0);
4596 NDR_CHECK(ndr_pull_uint8(ndr, NDR_SCALARS, r->in.info));
4597 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_info_0, 0);
4600 if (flags & NDR_OUT) {
4601 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
4603 return NT_STATUS_OK;
4606 _PUBLIC_ void ndr_print_svcctl_ChangeServiceConfig2W(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_ChangeServiceConfig2W *r)
4608 ndr_print_struct(ndr, name, "svcctl_ChangeServiceConfig2W");
4609 ndr->depth++;
4610 if (flags & NDR_SET_VALUES) {
4611 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
4613 if (flags & NDR_IN) {
4614 ndr_print_struct(ndr, "in", "svcctl_ChangeServiceConfig2W");
4615 ndr->depth++;
4616 ndr_print_ptr(ndr, "handle", r->in.handle);
4617 ndr->depth++;
4618 ndr_print_policy_handle(ndr, "handle", r->in.handle);
4619 ndr->depth--;
4620 ndr_print_uint32(ndr, "info_level", r->in.info_level);
4621 ndr_print_ptr(ndr, "info", r->in.info);
4622 ndr->depth++;
4623 if (r->in.info) {
4624 ndr_print_uint8(ndr, "info", *r->in.info);
4626 ndr->depth--;
4627 ndr->depth--;
4629 if (flags & NDR_OUT) {
4630 ndr_print_struct(ndr, "out", "svcctl_ChangeServiceConfig2W");
4631 ndr->depth++;
4632 ndr_print_WERROR(ndr, "result", r->out.result);
4633 ndr->depth--;
4635 ndr->depth--;
4638 NTSTATUS ndr_push_svcctl_QueryServiceConfig2A(struct ndr_push *ndr, int flags, const struct svcctl_QueryServiceConfig2A *r)
4640 if (flags & NDR_IN) {
4641 if (r->in.handle == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
4642 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
4643 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.info_level));
4644 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.buf_size));
4646 if (flags & NDR_OUT) {
4647 NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->out.buffer, r->in.buf_size));
4648 if (r->out.bytes_needed == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
4649 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.bytes_needed));
4650 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
4652 return NT_STATUS_OK;
4655 NTSTATUS ndr_pull_svcctl_QueryServiceConfig2A(struct ndr_pull *ndr, int flags, struct svcctl_QueryServiceConfig2A *r)
4657 TALLOC_CTX *_mem_save_handle_0;
4658 TALLOC_CTX *_mem_save_bytes_needed_0;
4659 if (flags & NDR_IN) {
4660 ZERO_STRUCT(r->out);
4662 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
4663 NDR_PULL_ALLOC(ndr, r->in.handle);
4665 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
4666 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
4667 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
4668 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
4669 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.info_level));
4670 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.buf_size));
4671 NDR_PULL_ALLOC(ndr, r->out.bytes_needed);
4672 ZERO_STRUCTP(r->out.bytes_needed);
4674 if (flags & NDR_OUT) {
4675 NDR_PULL_ALLOC_N(ndr, r->out.buffer, r->in.buf_size);
4676 NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->out.buffer, r->in.buf_size));
4677 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
4678 NDR_PULL_ALLOC(ndr, r->out.bytes_needed);
4680 _mem_save_bytes_needed_0 = NDR_PULL_GET_MEM_CTX(ndr);
4681 NDR_PULL_SET_MEM_CTX(ndr, r->out.bytes_needed, LIBNDR_FLAG_REF_ALLOC);
4682 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.bytes_needed));
4683 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_bytes_needed_0, LIBNDR_FLAG_REF_ALLOC);
4684 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
4686 return NT_STATUS_OK;
4689 _PUBLIC_ void ndr_print_svcctl_QueryServiceConfig2A(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_QueryServiceConfig2A *r)
4691 ndr_print_struct(ndr, name, "svcctl_QueryServiceConfig2A");
4692 ndr->depth++;
4693 if (flags & NDR_SET_VALUES) {
4694 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
4696 if (flags & NDR_IN) {
4697 ndr_print_struct(ndr, "in", "svcctl_QueryServiceConfig2A");
4698 ndr->depth++;
4699 ndr_print_ptr(ndr, "handle", r->in.handle);
4700 ndr->depth++;
4701 ndr_print_policy_handle(ndr, "handle", r->in.handle);
4702 ndr->depth--;
4703 ndr_print_uint32(ndr, "info_level", r->in.info_level);
4704 ndr_print_uint32(ndr, "buf_size", r->in.buf_size);
4705 ndr->depth--;
4707 if (flags & NDR_OUT) {
4708 ndr_print_struct(ndr, "out", "svcctl_QueryServiceConfig2A");
4709 ndr->depth++;
4710 ndr_print_array_uint8(ndr, "buffer", r->out.buffer, r->in.buf_size);
4711 ndr_print_ptr(ndr, "bytes_needed", r->out.bytes_needed);
4712 ndr->depth++;
4713 ndr_print_uint32(ndr, "bytes_needed", *r->out.bytes_needed);
4714 ndr->depth--;
4715 ndr_print_WERROR(ndr, "result", r->out.result);
4716 ndr->depth--;
4718 ndr->depth--;
4721 NTSTATUS ndr_push_svcctl_QueryServiceConfig2W(struct ndr_push *ndr, int flags, const struct svcctl_QueryServiceConfig2W *r)
4723 if (flags & NDR_IN) {
4724 if (r->in.handle == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
4725 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
4726 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.info_level));
4727 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.buf_size));
4729 if (flags & NDR_OUT) {
4730 NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->out.buffer, r->in.buf_size));
4731 if (r->out.bytes_needed == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
4732 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.bytes_needed));
4733 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
4735 return NT_STATUS_OK;
4738 NTSTATUS ndr_pull_svcctl_QueryServiceConfig2W(struct ndr_pull *ndr, int flags, struct svcctl_QueryServiceConfig2W *r)
4740 TALLOC_CTX *_mem_save_handle_0;
4741 TALLOC_CTX *_mem_save_bytes_needed_0;
4742 if (flags & NDR_IN) {
4743 ZERO_STRUCT(r->out);
4745 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
4746 NDR_PULL_ALLOC(ndr, r->in.handle);
4748 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
4749 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
4750 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
4751 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
4752 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.info_level));
4753 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.buf_size));
4754 NDR_PULL_ALLOC(ndr, r->out.bytes_needed);
4755 ZERO_STRUCTP(r->out.bytes_needed);
4757 if (flags & NDR_OUT) {
4758 NDR_PULL_ALLOC_N(ndr, r->out.buffer, r->in.buf_size);
4759 NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->out.buffer, r->in.buf_size));
4760 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
4761 NDR_PULL_ALLOC(ndr, r->out.bytes_needed);
4763 _mem_save_bytes_needed_0 = NDR_PULL_GET_MEM_CTX(ndr);
4764 NDR_PULL_SET_MEM_CTX(ndr, r->out.bytes_needed, LIBNDR_FLAG_REF_ALLOC);
4765 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.bytes_needed));
4766 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_bytes_needed_0, LIBNDR_FLAG_REF_ALLOC);
4767 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
4769 return NT_STATUS_OK;
4772 _PUBLIC_ void ndr_print_svcctl_QueryServiceConfig2W(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_QueryServiceConfig2W *r)
4774 ndr_print_struct(ndr, name, "svcctl_QueryServiceConfig2W");
4775 ndr->depth++;
4776 if (flags & NDR_SET_VALUES) {
4777 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
4779 if (flags & NDR_IN) {
4780 ndr_print_struct(ndr, "in", "svcctl_QueryServiceConfig2W");
4781 ndr->depth++;
4782 ndr_print_ptr(ndr, "handle", r->in.handle);
4783 ndr->depth++;
4784 ndr_print_policy_handle(ndr, "handle", r->in.handle);
4785 ndr->depth--;
4786 ndr_print_uint32(ndr, "info_level", r->in.info_level);
4787 ndr_print_uint32(ndr, "buf_size", r->in.buf_size);
4788 ndr->depth--;
4790 if (flags & NDR_OUT) {
4791 ndr_print_struct(ndr, "out", "svcctl_QueryServiceConfig2W");
4792 ndr->depth++;
4793 ndr_print_array_uint8(ndr, "buffer", r->out.buffer, r->in.buf_size);
4794 ndr_print_ptr(ndr, "bytes_needed", r->out.bytes_needed);
4795 ndr->depth++;
4796 ndr_print_uint32(ndr, "bytes_needed", *r->out.bytes_needed);
4797 ndr->depth--;
4798 ndr_print_WERROR(ndr, "result", r->out.result);
4799 ndr->depth--;
4801 ndr->depth--;
4804 NTSTATUS ndr_push_svcctl_QueryServiceStatusEx(struct ndr_push *ndr, int flags, const struct svcctl_QueryServiceStatusEx *r)
4806 if (flags & NDR_IN) {
4807 if (r->in.handle == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
4808 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
4809 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.info_level));
4810 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.buf_size));
4812 if (flags & NDR_OUT) {
4813 NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->out.buffer, r->in.buf_size));
4814 if (r->out.bytes_needed == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
4815 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.bytes_needed));
4816 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
4818 return NT_STATUS_OK;
4821 NTSTATUS ndr_pull_svcctl_QueryServiceStatusEx(struct ndr_pull *ndr, int flags, struct svcctl_QueryServiceStatusEx *r)
4823 TALLOC_CTX *_mem_save_handle_0;
4824 TALLOC_CTX *_mem_save_bytes_needed_0;
4825 if (flags & NDR_IN) {
4826 ZERO_STRUCT(r->out);
4828 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
4829 NDR_PULL_ALLOC(ndr, r->in.handle);
4831 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
4832 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
4833 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
4834 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
4835 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.info_level));
4836 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.buf_size));
4837 NDR_PULL_ALLOC(ndr, r->out.bytes_needed);
4838 ZERO_STRUCTP(r->out.bytes_needed);
4840 if (flags & NDR_OUT) {
4841 NDR_PULL_ALLOC_N(ndr, r->out.buffer, r->in.buf_size);
4842 NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->out.buffer, r->in.buf_size));
4843 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
4844 NDR_PULL_ALLOC(ndr, r->out.bytes_needed);
4846 _mem_save_bytes_needed_0 = NDR_PULL_GET_MEM_CTX(ndr);
4847 NDR_PULL_SET_MEM_CTX(ndr, r->out.bytes_needed, LIBNDR_FLAG_REF_ALLOC);
4848 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.bytes_needed));
4849 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_bytes_needed_0, LIBNDR_FLAG_REF_ALLOC);
4850 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
4852 return NT_STATUS_OK;
4855 _PUBLIC_ void ndr_print_svcctl_QueryServiceStatusEx(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_QueryServiceStatusEx *r)
4857 ndr_print_struct(ndr, name, "svcctl_QueryServiceStatusEx");
4858 ndr->depth++;
4859 if (flags & NDR_SET_VALUES) {
4860 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
4862 if (flags & NDR_IN) {
4863 ndr_print_struct(ndr, "in", "svcctl_QueryServiceStatusEx");
4864 ndr->depth++;
4865 ndr_print_ptr(ndr, "handle", r->in.handle);
4866 ndr->depth++;
4867 ndr_print_policy_handle(ndr, "handle", r->in.handle);
4868 ndr->depth--;
4869 ndr_print_uint32(ndr, "info_level", r->in.info_level);
4870 ndr_print_uint32(ndr, "buf_size", r->in.buf_size);
4871 ndr->depth--;
4873 if (flags & NDR_OUT) {
4874 ndr_print_struct(ndr, "out", "svcctl_QueryServiceStatusEx");
4875 ndr->depth++;
4876 ndr_print_array_uint8(ndr, "buffer", r->out.buffer, r->in.buf_size);
4877 ndr_print_ptr(ndr, "bytes_needed", r->out.bytes_needed);
4878 ndr->depth++;
4879 ndr_print_uint32(ndr, "bytes_needed", *r->out.bytes_needed);
4880 ndr->depth--;
4881 ndr_print_WERROR(ndr, "result", r->out.result);
4882 ndr->depth--;
4884 ndr->depth--;
4887 NTSTATUS ndr_push_EnumServicesStatusExA(struct ndr_push *ndr, int flags, const struct EnumServicesStatusExA *r)
4889 if (flags & NDR_IN) {
4890 if (r->in.scmanager == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
4891 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.scmanager));
4892 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.info_level));
4893 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.type));
4894 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.state));
4895 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.buf_size));
4896 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.resume_handle));
4897 if (r->in.resume_handle) {
4898 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->in.resume_handle));
4901 if (flags & NDR_OUT) {
4902 NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->out.services, r->in.buf_size));
4903 if (r->out.bytes_needed == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
4904 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.bytes_needed));
4905 if (r->out.service_returned == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
4906 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.service_returned));
4907 NDR_CHECK(ndr_push_unique_ptr(ndr, r->out.resume_handle));
4908 if (r->out.resume_handle) {
4909 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.resume_handle));
4911 if (r->out.group_name == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
4912 if (*r->out.group_name == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
4913 NDR_CHECK(ndr_push_ref_ptr(ndr));
4914 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(*r->out.group_name, CH_UTF16)));
4915 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
4916 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(*r->out.group_name, CH_UTF16)));
4917 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));
4918 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
4920 return NT_STATUS_OK;
4923 NTSTATUS ndr_pull_EnumServicesStatusExA(struct ndr_pull *ndr, int flags, struct EnumServicesStatusExA *r)
4925 uint32_t _ptr_resume_handle;
4926 uint32_t _ptr_group_name;
4927 TALLOC_CTX *_mem_save_scmanager_0;
4928 TALLOC_CTX *_mem_save_bytes_needed_0;
4929 TALLOC_CTX *_mem_save_service_returned_0;
4930 TALLOC_CTX *_mem_save_resume_handle_0;
4931 TALLOC_CTX *_mem_save_group_name_0;
4932 if (flags & NDR_IN) {
4933 ZERO_STRUCT(r->out);
4935 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
4936 NDR_PULL_ALLOC(ndr, r->in.scmanager);
4938 _mem_save_scmanager_0 = NDR_PULL_GET_MEM_CTX(ndr);
4939 NDR_PULL_SET_MEM_CTX(ndr, r->in.scmanager, LIBNDR_FLAG_REF_ALLOC);
4940 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.scmanager));
4941 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_scmanager_0, LIBNDR_FLAG_REF_ALLOC);
4942 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.info_level));
4943 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.type));
4944 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.state));
4945 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.buf_size));
4946 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_resume_handle));
4947 if (_ptr_resume_handle) {
4948 NDR_PULL_ALLOC(ndr, r->in.resume_handle);
4949 } else {
4950 r->in.resume_handle = NULL;
4952 if (r->in.resume_handle) {
4953 _mem_save_resume_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
4954 NDR_PULL_SET_MEM_CTX(ndr, r->in.resume_handle, 0);
4955 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->in.resume_handle));
4956 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_resume_handle_0, 0);
4958 NDR_PULL_ALLOC(ndr, r->out.bytes_needed);
4959 ZERO_STRUCTP(r->out.bytes_needed);
4960 NDR_PULL_ALLOC(ndr, r->out.service_returned);
4961 ZERO_STRUCTP(r->out.service_returned);
4962 NDR_PULL_ALLOC(ndr, r->out.group_name);
4963 ZERO_STRUCTP(r->out.group_name);
4965 if (flags & NDR_OUT) {
4966 NDR_PULL_ALLOC_N(ndr, r->out.services, r->in.buf_size);
4967 NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->out.services, r->in.buf_size));
4968 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
4969 NDR_PULL_ALLOC(ndr, r->out.bytes_needed);
4971 _mem_save_bytes_needed_0 = NDR_PULL_GET_MEM_CTX(ndr);
4972 NDR_PULL_SET_MEM_CTX(ndr, r->out.bytes_needed, LIBNDR_FLAG_REF_ALLOC);
4973 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.bytes_needed));
4974 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_bytes_needed_0, LIBNDR_FLAG_REF_ALLOC);
4975 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
4976 NDR_PULL_ALLOC(ndr, r->out.service_returned);
4978 _mem_save_service_returned_0 = NDR_PULL_GET_MEM_CTX(ndr);
4979 NDR_PULL_SET_MEM_CTX(ndr, r->out.service_returned, LIBNDR_FLAG_REF_ALLOC);
4980 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.service_returned));
4981 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_service_returned_0, LIBNDR_FLAG_REF_ALLOC);
4982 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_resume_handle));
4983 if (_ptr_resume_handle) {
4984 NDR_PULL_ALLOC(ndr, r->out.resume_handle);
4985 } else {
4986 r->out.resume_handle = NULL;
4988 if (r->out.resume_handle) {
4989 _mem_save_resume_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
4990 NDR_PULL_SET_MEM_CTX(ndr, r->out.resume_handle, 0);
4991 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.resume_handle));
4992 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_resume_handle_0, 0);
4994 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
4995 NDR_PULL_ALLOC(ndr, r->out.group_name);
4997 _mem_save_group_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
4998 NDR_PULL_SET_MEM_CTX(ndr, r->out.group_name, LIBNDR_FLAG_REF_ALLOC);
4999 NDR_CHECK(ndr_pull_ref_ptr(ndr, &_ptr_group_name));
5000 NDR_CHECK(ndr_pull_array_size(ndr, r->out.group_name));
5001 NDR_CHECK(ndr_pull_array_length(ndr, r->out.group_name));
5002 if (ndr_get_array_length(ndr, r->out.group_name) > ndr_get_array_size(ndr, r->out.group_name)) {
5003 return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, r->out.group_name), ndr_get_array_length(ndr, r->out.group_name));
5005 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, r->out.group_name), sizeof(uint16_t)));
5006 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, r->out.group_name, ndr_get_array_length(ndr, r->out.group_name), sizeof(uint16_t), CH_UTF16));
5007 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_group_name_0, LIBNDR_FLAG_REF_ALLOC);
5008 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
5010 return NT_STATUS_OK;
5013 _PUBLIC_ void ndr_print_EnumServicesStatusExA(struct ndr_print *ndr, const char *name, int flags, const struct EnumServicesStatusExA *r)
5015 ndr_print_struct(ndr, name, "EnumServicesStatusExA");
5016 ndr->depth++;
5017 if (flags & NDR_SET_VALUES) {
5018 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
5020 if (flags & NDR_IN) {
5021 ndr_print_struct(ndr, "in", "EnumServicesStatusExA");
5022 ndr->depth++;
5023 ndr_print_ptr(ndr, "scmanager", r->in.scmanager);
5024 ndr->depth++;
5025 ndr_print_policy_handle(ndr, "scmanager", r->in.scmanager);
5026 ndr->depth--;
5027 ndr_print_uint32(ndr, "info_level", r->in.info_level);
5028 ndr_print_uint32(ndr, "type", r->in.type);
5029 ndr_print_uint32(ndr, "state", r->in.state);
5030 ndr_print_uint32(ndr, "buf_size", r->in.buf_size);
5031 ndr_print_ptr(ndr, "resume_handle", r->in.resume_handle);
5032 ndr->depth++;
5033 if (r->in.resume_handle) {
5034 ndr_print_uint32(ndr, "resume_handle", *r->in.resume_handle);
5036 ndr->depth--;
5037 ndr->depth--;
5039 if (flags & NDR_OUT) {
5040 ndr_print_struct(ndr, "out", "EnumServicesStatusExA");
5041 ndr->depth++;
5042 ndr_print_array_uint8(ndr, "services", r->out.services, r->in.buf_size);
5043 ndr_print_ptr(ndr, "bytes_needed", r->out.bytes_needed);
5044 ndr->depth++;
5045 ndr_print_uint32(ndr, "bytes_needed", *r->out.bytes_needed);
5046 ndr->depth--;
5047 ndr_print_ptr(ndr, "service_returned", r->out.service_returned);
5048 ndr->depth++;
5049 ndr_print_uint32(ndr, "service_returned", *r->out.service_returned);
5050 ndr->depth--;
5051 ndr_print_ptr(ndr, "resume_handle", r->out.resume_handle);
5052 ndr->depth++;
5053 if (r->out.resume_handle) {
5054 ndr_print_uint32(ndr, "resume_handle", *r->out.resume_handle);
5056 ndr->depth--;
5057 ndr_print_ptr(ndr, "group_name", r->out.group_name);
5058 ndr->depth++;
5059 ndr_print_ptr(ndr, "group_name", *r->out.group_name);
5060 ndr->depth++;
5061 ndr_print_string(ndr, "group_name", *r->out.group_name);
5062 ndr->depth--;
5063 ndr->depth--;
5064 ndr_print_WERROR(ndr, "result", r->out.result);
5065 ndr->depth--;
5067 ndr->depth--;
5070 NTSTATUS ndr_push_EnumServicesStatusExW(struct ndr_push *ndr, int flags, const struct EnumServicesStatusExW *r)
5072 if (flags & NDR_IN) {
5073 if (r->in.scmanager == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
5074 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.scmanager));
5075 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.info_level));
5076 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.type));
5077 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.state));
5078 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.buf_size));
5079 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.resume_handle));
5080 if (r->in.resume_handle) {
5081 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->in.resume_handle));
5084 if (flags & NDR_OUT) {
5085 NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->out.services, r->in.buf_size));
5086 if (r->out.bytes_needed == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
5087 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.bytes_needed));
5088 if (r->out.service_returned == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
5089 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.service_returned));
5090 NDR_CHECK(ndr_push_unique_ptr(ndr, r->out.resume_handle));
5091 if (r->out.resume_handle) {
5092 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.resume_handle));
5094 if (r->out.group_name == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
5095 if (*r->out.group_name == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
5096 NDR_CHECK(ndr_push_ref_ptr(ndr));
5097 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(*r->out.group_name, CH_UTF16)));
5098 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
5099 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(*r->out.group_name, CH_UTF16)));
5100 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));
5101 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
5103 return NT_STATUS_OK;
5106 NTSTATUS ndr_pull_EnumServicesStatusExW(struct ndr_pull *ndr, int flags, struct EnumServicesStatusExW *r)
5108 uint32_t _ptr_resume_handle;
5109 uint32_t _ptr_group_name;
5110 TALLOC_CTX *_mem_save_scmanager_0;
5111 TALLOC_CTX *_mem_save_bytes_needed_0;
5112 TALLOC_CTX *_mem_save_service_returned_0;
5113 TALLOC_CTX *_mem_save_resume_handle_0;
5114 TALLOC_CTX *_mem_save_group_name_0;
5115 if (flags & NDR_IN) {
5116 ZERO_STRUCT(r->out);
5118 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
5119 NDR_PULL_ALLOC(ndr, r->in.scmanager);
5121 _mem_save_scmanager_0 = NDR_PULL_GET_MEM_CTX(ndr);
5122 NDR_PULL_SET_MEM_CTX(ndr, r->in.scmanager, LIBNDR_FLAG_REF_ALLOC);
5123 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.scmanager));
5124 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_scmanager_0, LIBNDR_FLAG_REF_ALLOC);
5125 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.info_level));
5126 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.type));
5127 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.state));
5128 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.buf_size));
5129 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_resume_handle));
5130 if (_ptr_resume_handle) {
5131 NDR_PULL_ALLOC(ndr, r->in.resume_handle);
5132 } else {
5133 r->in.resume_handle = NULL;
5135 if (r->in.resume_handle) {
5136 _mem_save_resume_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
5137 NDR_PULL_SET_MEM_CTX(ndr, r->in.resume_handle, 0);
5138 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->in.resume_handle));
5139 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_resume_handle_0, 0);
5141 NDR_PULL_ALLOC(ndr, r->out.bytes_needed);
5142 ZERO_STRUCTP(r->out.bytes_needed);
5143 NDR_PULL_ALLOC(ndr, r->out.service_returned);
5144 ZERO_STRUCTP(r->out.service_returned);
5145 NDR_PULL_ALLOC(ndr, r->out.group_name);
5146 ZERO_STRUCTP(r->out.group_name);
5148 if (flags & NDR_OUT) {
5149 NDR_PULL_ALLOC_N(ndr, r->out.services, r->in.buf_size);
5150 NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->out.services, r->in.buf_size));
5151 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
5152 NDR_PULL_ALLOC(ndr, r->out.bytes_needed);
5154 _mem_save_bytes_needed_0 = NDR_PULL_GET_MEM_CTX(ndr);
5155 NDR_PULL_SET_MEM_CTX(ndr, r->out.bytes_needed, LIBNDR_FLAG_REF_ALLOC);
5156 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.bytes_needed));
5157 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_bytes_needed_0, LIBNDR_FLAG_REF_ALLOC);
5158 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
5159 NDR_PULL_ALLOC(ndr, r->out.service_returned);
5161 _mem_save_service_returned_0 = NDR_PULL_GET_MEM_CTX(ndr);
5162 NDR_PULL_SET_MEM_CTX(ndr, r->out.service_returned, LIBNDR_FLAG_REF_ALLOC);
5163 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.service_returned));
5164 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_service_returned_0, LIBNDR_FLAG_REF_ALLOC);
5165 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_resume_handle));
5166 if (_ptr_resume_handle) {
5167 NDR_PULL_ALLOC(ndr, r->out.resume_handle);
5168 } else {
5169 r->out.resume_handle = NULL;
5171 if (r->out.resume_handle) {
5172 _mem_save_resume_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
5173 NDR_PULL_SET_MEM_CTX(ndr, r->out.resume_handle, 0);
5174 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.resume_handle));
5175 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_resume_handle_0, 0);
5177 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
5178 NDR_PULL_ALLOC(ndr, r->out.group_name);
5180 _mem_save_group_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
5181 NDR_PULL_SET_MEM_CTX(ndr, r->out.group_name, LIBNDR_FLAG_REF_ALLOC);
5182 NDR_CHECK(ndr_pull_ref_ptr(ndr, &_ptr_group_name));
5183 NDR_CHECK(ndr_pull_array_size(ndr, r->out.group_name));
5184 NDR_CHECK(ndr_pull_array_length(ndr, r->out.group_name));
5185 if (ndr_get_array_length(ndr, r->out.group_name) > ndr_get_array_size(ndr, r->out.group_name)) {
5186 return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, r->out.group_name), ndr_get_array_length(ndr, r->out.group_name));
5188 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, r->out.group_name), sizeof(uint16_t)));
5189 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, r->out.group_name, ndr_get_array_length(ndr, r->out.group_name), sizeof(uint16_t), CH_UTF16));
5190 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_group_name_0, LIBNDR_FLAG_REF_ALLOC);
5191 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
5193 return NT_STATUS_OK;
5196 _PUBLIC_ void ndr_print_EnumServicesStatusExW(struct ndr_print *ndr, const char *name, int flags, const struct EnumServicesStatusExW *r)
5198 ndr_print_struct(ndr, name, "EnumServicesStatusExW");
5199 ndr->depth++;
5200 if (flags & NDR_SET_VALUES) {
5201 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
5203 if (flags & NDR_IN) {
5204 ndr_print_struct(ndr, "in", "EnumServicesStatusExW");
5205 ndr->depth++;
5206 ndr_print_ptr(ndr, "scmanager", r->in.scmanager);
5207 ndr->depth++;
5208 ndr_print_policy_handle(ndr, "scmanager", r->in.scmanager);
5209 ndr->depth--;
5210 ndr_print_uint32(ndr, "info_level", r->in.info_level);
5211 ndr_print_uint32(ndr, "type", r->in.type);
5212 ndr_print_uint32(ndr, "state", r->in.state);
5213 ndr_print_uint32(ndr, "buf_size", r->in.buf_size);
5214 ndr_print_ptr(ndr, "resume_handle", r->in.resume_handle);
5215 ndr->depth++;
5216 if (r->in.resume_handle) {
5217 ndr_print_uint32(ndr, "resume_handle", *r->in.resume_handle);
5219 ndr->depth--;
5220 ndr->depth--;
5222 if (flags & NDR_OUT) {
5223 ndr_print_struct(ndr, "out", "EnumServicesStatusExW");
5224 ndr->depth++;
5225 ndr_print_array_uint8(ndr, "services", r->out.services, r->in.buf_size);
5226 ndr_print_ptr(ndr, "bytes_needed", r->out.bytes_needed);
5227 ndr->depth++;
5228 ndr_print_uint32(ndr, "bytes_needed", *r->out.bytes_needed);
5229 ndr->depth--;
5230 ndr_print_ptr(ndr, "service_returned", r->out.service_returned);
5231 ndr->depth++;
5232 ndr_print_uint32(ndr, "service_returned", *r->out.service_returned);
5233 ndr->depth--;
5234 ndr_print_ptr(ndr, "resume_handle", r->out.resume_handle);
5235 ndr->depth++;
5236 if (r->out.resume_handle) {
5237 ndr_print_uint32(ndr, "resume_handle", *r->out.resume_handle);
5239 ndr->depth--;
5240 ndr_print_ptr(ndr, "group_name", r->out.group_name);
5241 ndr->depth++;
5242 ndr_print_ptr(ndr, "group_name", *r->out.group_name);
5243 ndr->depth++;
5244 ndr_print_string(ndr, "group_name", *r->out.group_name);
5245 ndr->depth--;
5246 ndr->depth--;
5247 ndr_print_WERROR(ndr, "result", r->out.result);
5248 ndr->depth--;
5250 ndr->depth--;
5253 NTSTATUS ndr_push_svcctl_SCSendTSMessage(struct ndr_push *ndr, int flags, const struct svcctl_SCSendTSMessage *r)
5255 if (flags & NDR_IN) {
5257 if (flags & NDR_OUT) {
5258 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
5260 return NT_STATUS_OK;
5263 NTSTATUS ndr_pull_svcctl_SCSendTSMessage(struct ndr_pull *ndr, int flags, struct svcctl_SCSendTSMessage *r)
5265 if (flags & NDR_IN) {
5267 if (flags & NDR_OUT) {
5268 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
5270 return NT_STATUS_OK;
5273 _PUBLIC_ void ndr_print_svcctl_SCSendTSMessage(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_SCSendTSMessage *r)
5275 ndr_print_struct(ndr, name, "svcctl_SCSendTSMessage");
5276 ndr->depth++;
5277 if (flags & NDR_SET_VALUES) {
5278 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
5280 if (flags & NDR_IN) {
5281 ndr_print_struct(ndr, "in", "svcctl_SCSendTSMessage");
5282 ndr->depth++;
5283 ndr->depth--;
5285 if (flags & NDR_OUT) {
5286 ndr_print_struct(ndr, "out", "svcctl_SCSendTSMessage");
5287 ndr->depth++;
5288 ndr_print_WERROR(ndr, "result", r->out.result);
5289 ndr->depth--;
5291 ndr->depth--;
5294 const struct dcerpc_interface_call svcctl_calls[] = {
5296 "svcctl_CloseServiceHandle",
5297 sizeof(struct svcctl_CloseServiceHandle),
5298 (ndr_push_flags_fn_t) ndr_push_svcctl_CloseServiceHandle,
5299 (ndr_pull_flags_fn_t) ndr_pull_svcctl_CloseServiceHandle,
5300 (ndr_print_function_t) ndr_print_svcctl_CloseServiceHandle,
5301 False,
5304 "svcctl_ControlService",
5305 sizeof(struct svcctl_ControlService),
5306 (ndr_push_flags_fn_t) ndr_push_svcctl_ControlService,
5307 (ndr_pull_flags_fn_t) ndr_pull_svcctl_ControlService,
5308 (ndr_print_function_t) ndr_print_svcctl_ControlService,
5309 False,
5312 "svcctl_DeleteService",
5313 sizeof(struct svcctl_DeleteService),
5314 (ndr_push_flags_fn_t) ndr_push_svcctl_DeleteService,
5315 (ndr_pull_flags_fn_t) ndr_pull_svcctl_DeleteService,
5316 (ndr_print_function_t) ndr_print_svcctl_DeleteService,
5317 False,
5320 "svcctl_LockServiceDatabase",
5321 sizeof(struct svcctl_LockServiceDatabase),
5322 (ndr_push_flags_fn_t) ndr_push_svcctl_LockServiceDatabase,
5323 (ndr_pull_flags_fn_t) ndr_pull_svcctl_LockServiceDatabase,
5324 (ndr_print_function_t) ndr_print_svcctl_LockServiceDatabase,
5325 False,
5328 "svcctl_QueryServiceObjectSecurity",
5329 sizeof(struct svcctl_QueryServiceObjectSecurity),
5330 (ndr_push_flags_fn_t) ndr_push_svcctl_QueryServiceObjectSecurity,
5331 (ndr_pull_flags_fn_t) ndr_pull_svcctl_QueryServiceObjectSecurity,
5332 (ndr_print_function_t) ndr_print_svcctl_QueryServiceObjectSecurity,
5333 False,
5336 "svcctl_SetServiceObjectSecurity",
5337 sizeof(struct svcctl_SetServiceObjectSecurity),
5338 (ndr_push_flags_fn_t) ndr_push_svcctl_SetServiceObjectSecurity,
5339 (ndr_pull_flags_fn_t) ndr_pull_svcctl_SetServiceObjectSecurity,
5340 (ndr_print_function_t) ndr_print_svcctl_SetServiceObjectSecurity,
5341 False,
5344 "svcctl_QueryServiceStatus",
5345 sizeof(struct svcctl_QueryServiceStatus),
5346 (ndr_push_flags_fn_t) ndr_push_svcctl_QueryServiceStatus,
5347 (ndr_pull_flags_fn_t) ndr_pull_svcctl_QueryServiceStatus,
5348 (ndr_print_function_t) ndr_print_svcctl_QueryServiceStatus,
5349 False,
5352 "svcctl_SetServiceStatus",
5353 sizeof(struct svcctl_SetServiceStatus),
5354 (ndr_push_flags_fn_t) ndr_push_svcctl_SetServiceStatus,
5355 (ndr_pull_flags_fn_t) ndr_pull_svcctl_SetServiceStatus,
5356 (ndr_print_function_t) ndr_print_svcctl_SetServiceStatus,
5357 False,
5360 "svcctl_UnlockServiceDatabase",
5361 sizeof(struct svcctl_UnlockServiceDatabase),
5362 (ndr_push_flags_fn_t) ndr_push_svcctl_UnlockServiceDatabase,
5363 (ndr_pull_flags_fn_t) ndr_pull_svcctl_UnlockServiceDatabase,
5364 (ndr_print_function_t) ndr_print_svcctl_UnlockServiceDatabase,
5365 False,
5368 "svcctl_NotifyBootConfigStatus",
5369 sizeof(struct svcctl_NotifyBootConfigStatus),
5370 (ndr_push_flags_fn_t) ndr_push_svcctl_NotifyBootConfigStatus,
5371 (ndr_pull_flags_fn_t) ndr_pull_svcctl_NotifyBootConfigStatus,
5372 (ndr_print_function_t) ndr_print_svcctl_NotifyBootConfigStatus,
5373 False,
5376 "svcctl_SCSetServiceBitsW",
5377 sizeof(struct svcctl_SCSetServiceBitsW),
5378 (ndr_push_flags_fn_t) ndr_push_svcctl_SCSetServiceBitsW,
5379 (ndr_pull_flags_fn_t) ndr_pull_svcctl_SCSetServiceBitsW,
5380 (ndr_print_function_t) ndr_print_svcctl_SCSetServiceBitsW,
5381 False,
5384 "svcctl_ChangeServiceConfigW",
5385 sizeof(struct svcctl_ChangeServiceConfigW),
5386 (ndr_push_flags_fn_t) ndr_push_svcctl_ChangeServiceConfigW,
5387 (ndr_pull_flags_fn_t) ndr_pull_svcctl_ChangeServiceConfigW,
5388 (ndr_print_function_t) ndr_print_svcctl_ChangeServiceConfigW,
5389 False,
5392 "svcctl_CreateServiceW",
5393 sizeof(struct svcctl_CreateServiceW),
5394 (ndr_push_flags_fn_t) ndr_push_svcctl_CreateServiceW,
5395 (ndr_pull_flags_fn_t) ndr_pull_svcctl_CreateServiceW,
5396 (ndr_print_function_t) ndr_print_svcctl_CreateServiceW,
5397 False,
5400 "svcctl_EnumDependentServicesW",
5401 sizeof(struct svcctl_EnumDependentServicesW),
5402 (ndr_push_flags_fn_t) ndr_push_svcctl_EnumDependentServicesW,
5403 (ndr_pull_flags_fn_t) ndr_pull_svcctl_EnumDependentServicesW,
5404 (ndr_print_function_t) ndr_print_svcctl_EnumDependentServicesW,
5405 False,
5408 "svcctl_EnumServicesStatusW",
5409 sizeof(struct svcctl_EnumServicesStatusW),
5410 (ndr_push_flags_fn_t) ndr_push_svcctl_EnumServicesStatusW,
5411 (ndr_pull_flags_fn_t) ndr_pull_svcctl_EnumServicesStatusW,
5412 (ndr_print_function_t) ndr_print_svcctl_EnumServicesStatusW,
5413 False,
5416 "svcctl_OpenSCManagerW",
5417 sizeof(struct svcctl_OpenSCManagerW),
5418 (ndr_push_flags_fn_t) ndr_push_svcctl_OpenSCManagerW,
5419 (ndr_pull_flags_fn_t) ndr_pull_svcctl_OpenSCManagerW,
5420 (ndr_print_function_t) ndr_print_svcctl_OpenSCManagerW,
5421 False,
5424 "svcctl_OpenServiceW",
5425 sizeof(struct svcctl_OpenServiceW),
5426 (ndr_push_flags_fn_t) ndr_push_svcctl_OpenServiceW,
5427 (ndr_pull_flags_fn_t) ndr_pull_svcctl_OpenServiceW,
5428 (ndr_print_function_t) ndr_print_svcctl_OpenServiceW,
5429 False,
5432 "svcctl_QueryServiceConfigW",
5433 sizeof(struct svcctl_QueryServiceConfigW),
5434 (ndr_push_flags_fn_t) ndr_push_svcctl_QueryServiceConfigW,
5435 (ndr_pull_flags_fn_t) ndr_pull_svcctl_QueryServiceConfigW,
5436 (ndr_print_function_t) ndr_print_svcctl_QueryServiceConfigW,
5437 False,
5440 "svcctl_QueryServiceLockStatusW",
5441 sizeof(struct svcctl_QueryServiceLockStatusW),
5442 (ndr_push_flags_fn_t) ndr_push_svcctl_QueryServiceLockStatusW,
5443 (ndr_pull_flags_fn_t) ndr_pull_svcctl_QueryServiceLockStatusW,
5444 (ndr_print_function_t) ndr_print_svcctl_QueryServiceLockStatusW,
5445 False,
5448 "svcctl_StartServiceW",
5449 sizeof(struct svcctl_StartServiceW),
5450 (ndr_push_flags_fn_t) ndr_push_svcctl_StartServiceW,
5451 (ndr_pull_flags_fn_t) ndr_pull_svcctl_StartServiceW,
5452 (ndr_print_function_t) ndr_print_svcctl_StartServiceW,
5453 False,
5456 "svcctl_GetServiceDisplayNameW",
5457 sizeof(struct svcctl_GetServiceDisplayNameW),
5458 (ndr_push_flags_fn_t) ndr_push_svcctl_GetServiceDisplayNameW,
5459 (ndr_pull_flags_fn_t) ndr_pull_svcctl_GetServiceDisplayNameW,
5460 (ndr_print_function_t) ndr_print_svcctl_GetServiceDisplayNameW,
5461 False,
5464 "svcctl_GetServiceKeyNameW",
5465 sizeof(struct svcctl_GetServiceKeyNameW),
5466 (ndr_push_flags_fn_t) ndr_push_svcctl_GetServiceKeyNameW,
5467 (ndr_pull_flags_fn_t) ndr_pull_svcctl_GetServiceKeyNameW,
5468 (ndr_print_function_t) ndr_print_svcctl_GetServiceKeyNameW,
5469 False,
5472 "svcctl_SCSetServiceBitsA",
5473 sizeof(struct svcctl_SCSetServiceBitsA),
5474 (ndr_push_flags_fn_t) ndr_push_svcctl_SCSetServiceBitsA,
5475 (ndr_pull_flags_fn_t) ndr_pull_svcctl_SCSetServiceBitsA,
5476 (ndr_print_function_t) ndr_print_svcctl_SCSetServiceBitsA,
5477 False,
5480 "svcctl_ChangeServiceConfigA",
5481 sizeof(struct svcctl_ChangeServiceConfigA),
5482 (ndr_push_flags_fn_t) ndr_push_svcctl_ChangeServiceConfigA,
5483 (ndr_pull_flags_fn_t) ndr_pull_svcctl_ChangeServiceConfigA,
5484 (ndr_print_function_t) ndr_print_svcctl_ChangeServiceConfigA,
5485 False,
5488 "svcctl_CreateServiceA",
5489 sizeof(struct svcctl_CreateServiceA),
5490 (ndr_push_flags_fn_t) ndr_push_svcctl_CreateServiceA,
5491 (ndr_pull_flags_fn_t) ndr_pull_svcctl_CreateServiceA,
5492 (ndr_print_function_t) ndr_print_svcctl_CreateServiceA,
5493 False,
5496 "svcctl_EnumDependentServicesA",
5497 sizeof(struct svcctl_EnumDependentServicesA),
5498 (ndr_push_flags_fn_t) ndr_push_svcctl_EnumDependentServicesA,
5499 (ndr_pull_flags_fn_t) ndr_pull_svcctl_EnumDependentServicesA,
5500 (ndr_print_function_t) ndr_print_svcctl_EnumDependentServicesA,
5501 False,
5504 "svcctl_EnumServicesStatusA",
5505 sizeof(struct svcctl_EnumServicesStatusA),
5506 (ndr_push_flags_fn_t) ndr_push_svcctl_EnumServicesStatusA,
5507 (ndr_pull_flags_fn_t) ndr_pull_svcctl_EnumServicesStatusA,
5508 (ndr_print_function_t) ndr_print_svcctl_EnumServicesStatusA,
5509 False,
5512 "svcctl_OpenSCManagerA",
5513 sizeof(struct svcctl_OpenSCManagerA),
5514 (ndr_push_flags_fn_t) ndr_push_svcctl_OpenSCManagerA,
5515 (ndr_pull_flags_fn_t) ndr_pull_svcctl_OpenSCManagerA,
5516 (ndr_print_function_t) ndr_print_svcctl_OpenSCManagerA,
5517 False,
5520 "svcctl_OpenServiceA",
5521 sizeof(struct svcctl_OpenServiceA),
5522 (ndr_push_flags_fn_t) ndr_push_svcctl_OpenServiceA,
5523 (ndr_pull_flags_fn_t) ndr_pull_svcctl_OpenServiceA,
5524 (ndr_print_function_t) ndr_print_svcctl_OpenServiceA,
5525 False,
5528 "svcctl_QueryServiceConfigA",
5529 sizeof(struct svcctl_QueryServiceConfigA),
5530 (ndr_push_flags_fn_t) ndr_push_svcctl_QueryServiceConfigA,
5531 (ndr_pull_flags_fn_t) ndr_pull_svcctl_QueryServiceConfigA,
5532 (ndr_print_function_t) ndr_print_svcctl_QueryServiceConfigA,
5533 False,
5536 "svcctl_QueryServiceLockStatusA",
5537 sizeof(struct svcctl_QueryServiceLockStatusA),
5538 (ndr_push_flags_fn_t) ndr_push_svcctl_QueryServiceLockStatusA,
5539 (ndr_pull_flags_fn_t) ndr_pull_svcctl_QueryServiceLockStatusA,
5540 (ndr_print_function_t) ndr_print_svcctl_QueryServiceLockStatusA,
5541 False,
5544 "svcctl_StartServiceA",
5545 sizeof(struct svcctl_StartServiceA),
5546 (ndr_push_flags_fn_t) ndr_push_svcctl_StartServiceA,
5547 (ndr_pull_flags_fn_t) ndr_pull_svcctl_StartServiceA,
5548 (ndr_print_function_t) ndr_print_svcctl_StartServiceA,
5549 False,
5552 "svcctl_GetServiceDisplayNameA",
5553 sizeof(struct svcctl_GetServiceDisplayNameA),
5554 (ndr_push_flags_fn_t) ndr_push_svcctl_GetServiceDisplayNameA,
5555 (ndr_pull_flags_fn_t) ndr_pull_svcctl_GetServiceDisplayNameA,
5556 (ndr_print_function_t) ndr_print_svcctl_GetServiceDisplayNameA,
5557 False,
5560 "svcctl_GetServiceKeyNameA",
5561 sizeof(struct svcctl_GetServiceKeyNameA),
5562 (ndr_push_flags_fn_t) ndr_push_svcctl_GetServiceKeyNameA,
5563 (ndr_pull_flags_fn_t) ndr_pull_svcctl_GetServiceKeyNameA,
5564 (ndr_print_function_t) ndr_print_svcctl_GetServiceKeyNameA,
5565 False,
5568 "svcctl_GetCurrentGroupeStateW",
5569 sizeof(struct svcctl_GetCurrentGroupeStateW),
5570 (ndr_push_flags_fn_t) ndr_push_svcctl_GetCurrentGroupeStateW,
5571 (ndr_pull_flags_fn_t) ndr_pull_svcctl_GetCurrentGroupeStateW,
5572 (ndr_print_function_t) ndr_print_svcctl_GetCurrentGroupeStateW,
5573 False,
5576 "svcctl_EnumServiceGroupW",
5577 sizeof(struct svcctl_EnumServiceGroupW),
5578 (ndr_push_flags_fn_t) ndr_push_svcctl_EnumServiceGroupW,
5579 (ndr_pull_flags_fn_t) ndr_pull_svcctl_EnumServiceGroupW,
5580 (ndr_print_function_t) ndr_print_svcctl_EnumServiceGroupW,
5581 False,
5584 "svcctl_ChangeServiceConfig2A",
5585 sizeof(struct svcctl_ChangeServiceConfig2A),
5586 (ndr_push_flags_fn_t) ndr_push_svcctl_ChangeServiceConfig2A,
5587 (ndr_pull_flags_fn_t) ndr_pull_svcctl_ChangeServiceConfig2A,
5588 (ndr_print_function_t) ndr_print_svcctl_ChangeServiceConfig2A,
5589 False,
5592 "svcctl_ChangeServiceConfig2W",
5593 sizeof(struct svcctl_ChangeServiceConfig2W),
5594 (ndr_push_flags_fn_t) ndr_push_svcctl_ChangeServiceConfig2W,
5595 (ndr_pull_flags_fn_t) ndr_pull_svcctl_ChangeServiceConfig2W,
5596 (ndr_print_function_t) ndr_print_svcctl_ChangeServiceConfig2W,
5597 False,
5600 "svcctl_QueryServiceConfig2A",
5601 sizeof(struct svcctl_QueryServiceConfig2A),
5602 (ndr_push_flags_fn_t) ndr_push_svcctl_QueryServiceConfig2A,
5603 (ndr_pull_flags_fn_t) ndr_pull_svcctl_QueryServiceConfig2A,
5604 (ndr_print_function_t) ndr_print_svcctl_QueryServiceConfig2A,
5605 False,
5608 "svcctl_QueryServiceConfig2W",
5609 sizeof(struct svcctl_QueryServiceConfig2W),
5610 (ndr_push_flags_fn_t) ndr_push_svcctl_QueryServiceConfig2W,
5611 (ndr_pull_flags_fn_t) ndr_pull_svcctl_QueryServiceConfig2W,
5612 (ndr_print_function_t) ndr_print_svcctl_QueryServiceConfig2W,
5613 False,
5616 "svcctl_QueryServiceStatusEx",
5617 sizeof(struct svcctl_QueryServiceStatusEx),
5618 (ndr_push_flags_fn_t) ndr_push_svcctl_QueryServiceStatusEx,
5619 (ndr_pull_flags_fn_t) ndr_pull_svcctl_QueryServiceStatusEx,
5620 (ndr_print_function_t) ndr_print_svcctl_QueryServiceStatusEx,
5621 False,
5624 "EnumServicesStatusExA",
5625 sizeof(struct EnumServicesStatusExA),
5626 (ndr_push_flags_fn_t) ndr_push_EnumServicesStatusExA,
5627 (ndr_pull_flags_fn_t) ndr_pull_EnumServicesStatusExA,
5628 (ndr_print_function_t) ndr_print_EnumServicesStatusExA,
5629 False,
5632 "EnumServicesStatusExW",
5633 sizeof(struct EnumServicesStatusExW),
5634 (ndr_push_flags_fn_t) ndr_push_EnumServicesStatusExW,
5635 (ndr_pull_flags_fn_t) ndr_pull_EnumServicesStatusExW,
5636 (ndr_print_function_t) ndr_print_EnumServicesStatusExW,
5637 False,
5640 "svcctl_SCSendTSMessage",
5641 sizeof(struct svcctl_SCSendTSMessage),
5642 (ndr_push_flags_fn_t) ndr_push_svcctl_SCSendTSMessage,
5643 (ndr_pull_flags_fn_t) ndr_pull_svcctl_SCSendTSMessage,
5644 (ndr_print_function_t) ndr_print_svcctl_SCSendTSMessage,
5645 False,
5647 { NULL, 0, NULL, NULL, NULL, False }
5650 const char * const svcctl_endpoint_strings[] = {
5651 "ncacn_np:[\\pipe\\svcctl]",
5652 "ncalrpc:",
5655 const struct dcerpc_endpoint_list svcctl_endpoints = {
5656 .count = 2,
5657 .names = svcctl_endpoint_strings
5660 const char * const svcctl_authservice_strings[] = {
5661 "host",
5664 const struct dcerpc_authservice_list svcctl_authservices = {
5665 .count = 2,
5666 .names = svcctl_authservice_strings
5670 const struct dcerpc_interface_table dcerpc_table_svcctl = {
5671 .name = "svcctl",
5672 .syntax_id = {
5673 {0x367abb81,0x9844,0x35f1,{0xad,0x32},{0x98,0xf0,0x38,0x00,0x10,0x03}},
5674 DCERPC_SVCCTL_VERSION
5676 .helpstring = DCERPC_SVCCTL_HELPSTRING,
5677 .num_calls = 44,
5678 .calls = svcctl_calls,
5679 .endpoints = &svcctl_endpoints,
5680 .authservices = &svcctl_authservices