1 /* parser auto-generated by pidl */
4 #include "../librpc/gen_ndr/ndr_svcctl.h"
6 #include "librpc/gen_ndr/ndr_misc.h"
7 #include "librpc/gen_ndr/ndr_security.h"
8 static enum ndr_err_code ndr_push_SERVICE_LOCK_STATUS(struct ndr_push *ndr, int ndr_flags, const struct SERVICE_LOCK_STATUS *r)
10 if (ndr_flags & NDR_SCALARS) {
11 NDR_CHECK(ndr_push_align(ndr, 4));
12 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->is_locked));
13 NDR_CHECK(ndr_push_unique_ptr(ndr, r->lock_owner));
14 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->lock_duration));
16 if (ndr_flags & NDR_BUFFERS) {
18 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->lock_owner, CH_UTF16)));
19 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
20 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->lock_owner, CH_UTF16)));
21 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->lock_owner, ndr_charset_length(r->lock_owner, CH_UTF16), sizeof(uint16_t), CH_UTF16));
24 return NDR_ERR_SUCCESS;
27 static enum ndr_err_code ndr_pull_SERVICE_LOCK_STATUS(struct ndr_pull *ndr, int ndr_flags, struct SERVICE_LOCK_STATUS *r)
29 uint32_t _ptr_lock_owner;
30 TALLOC_CTX *_mem_save_lock_owner_0;
31 if (ndr_flags & NDR_SCALARS) {
32 NDR_CHECK(ndr_pull_align(ndr, 4));
33 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->is_locked));
34 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_lock_owner));
35 if (_ptr_lock_owner) {
36 NDR_PULL_ALLOC(ndr, r->lock_owner);
40 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->lock_duration));
42 if (ndr_flags & NDR_BUFFERS) {
44 _mem_save_lock_owner_0 = NDR_PULL_GET_MEM_CTX(ndr);
45 NDR_PULL_SET_MEM_CTX(ndr, r->lock_owner, 0);
46 NDR_CHECK(ndr_pull_array_size(ndr, &r->lock_owner));
47 NDR_CHECK(ndr_pull_array_length(ndr, &r->lock_owner));
48 if (ndr_get_array_length(ndr, &r->lock_owner) > ndr_get_array_size(ndr, &r->lock_owner)) {
49 return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->lock_owner), ndr_get_array_length(ndr, &r->lock_owner));
51 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->lock_owner), sizeof(uint16_t)));
52 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->lock_owner, ndr_get_array_length(ndr, &r->lock_owner), sizeof(uint16_t), CH_UTF16));
53 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_lock_owner_0, 0);
56 return NDR_ERR_SUCCESS;
59 _PUBLIC_ void ndr_print_SERVICE_LOCK_STATUS(struct ndr_print *ndr, const char *name, const struct SERVICE_LOCK_STATUS *r)
61 ndr_print_struct(ndr, name, "SERVICE_LOCK_STATUS");
63 ndr_print_uint32(ndr, "is_locked", r->is_locked);
64 ndr_print_ptr(ndr, "lock_owner", r->lock_owner);
67 ndr_print_string(ndr, "lock_owner", r->lock_owner);
70 ndr_print_uint32(ndr, "lock_duration", r->lock_duration);
74 static enum ndr_err_code ndr_push_SERVICE_STATUS(struct ndr_push *ndr, int ndr_flags, const struct SERVICE_STATUS *r)
76 if (ndr_flags & NDR_SCALARS) {
77 NDR_CHECK(ndr_push_align(ndr, 4));
78 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->type));
79 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->state));
80 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->controls_accepted));
81 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->win32_exit_code));
82 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->service_exit_code));
83 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->check_point));
84 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->wait_hint));
86 if (ndr_flags & NDR_BUFFERS) {
88 return NDR_ERR_SUCCESS;
91 static enum ndr_err_code ndr_pull_SERVICE_STATUS(struct ndr_pull *ndr, int ndr_flags, struct SERVICE_STATUS *r)
93 if (ndr_flags & NDR_SCALARS) {
94 NDR_CHECK(ndr_pull_align(ndr, 4));
95 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->type));
96 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->state));
97 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->controls_accepted));
98 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->win32_exit_code));
99 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->service_exit_code));
100 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->check_point));
101 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->wait_hint));
103 if (ndr_flags & NDR_BUFFERS) {
105 return NDR_ERR_SUCCESS;
108 _PUBLIC_ void ndr_print_SERVICE_STATUS(struct ndr_print *ndr, const char *name, const struct SERVICE_STATUS *r)
110 ndr_print_struct(ndr, name, "SERVICE_STATUS");
112 ndr_print_uint32(ndr, "type", r->type);
113 ndr_print_uint32(ndr, "state", r->state);
114 ndr_print_uint32(ndr, "controls_accepted", r->controls_accepted);
115 ndr_print_WERROR(ndr, "win32_exit_code", r->win32_exit_code);
116 ndr_print_uint32(ndr, "service_exit_code", r->service_exit_code);
117 ndr_print_uint32(ndr, "check_point", r->check_point);
118 ndr_print_uint32(ndr, "wait_hint", r->wait_hint);
122 static enum ndr_err_code ndr_push_ENUM_SERVICE_STATUS(struct ndr_push *ndr, int ndr_flags, const struct ENUM_SERVICE_STATUS *r)
124 if (ndr_flags & NDR_SCALARS) {
125 NDR_CHECK(ndr_push_align(ndr, 4));
127 uint32_t _flags_save_string = ndr->flags;
128 ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_ASCII|LIBNDR_FLAG_STR_NULLTERM);
129 NDR_CHECK(ndr_push_relative_ptr1(ndr, r->service_name));
130 ndr->flags = _flags_save_string;
133 uint32_t _flags_save_string = ndr->flags;
134 ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_ASCII|LIBNDR_FLAG_STR_NULLTERM);
135 NDR_CHECK(ndr_push_relative_ptr1(ndr, r->display_name));
136 ndr->flags = _flags_save_string;
138 NDR_CHECK(ndr_push_SERVICE_STATUS(ndr, NDR_SCALARS, &r->status));
140 if (ndr_flags & NDR_BUFFERS) {
142 uint32_t _flags_save_string = ndr->flags;
143 ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_ASCII|LIBNDR_FLAG_STR_NULLTERM);
144 if (r->service_name) {
145 NDR_CHECK(ndr_push_relative_ptr2(ndr, r->service_name));
146 NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->service_name));
148 ndr->flags = _flags_save_string;
151 uint32_t _flags_save_string = ndr->flags;
152 ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_ASCII|LIBNDR_FLAG_STR_NULLTERM);
153 if (r->display_name) {
154 NDR_CHECK(ndr_push_relative_ptr2(ndr, r->display_name));
155 NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->display_name));
157 ndr->flags = _flags_save_string;
160 return NDR_ERR_SUCCESS;
163 static enum ndr_err_code ndr_pull_ENUM_SERVICE_STATUS(struct ndr_pull *ndr, int ndr_flags, struct ENUM_SERVICE_STATUS *r)
165 uint32_t _ptr_service_name;
166 TALLOC_CTX *_mem_save_service_name_0;
167 uint32_t _ptr_display_name;
168 TALLOC_CTX *_mem_save_display_name_0;
169 if (ndr_flags & NDR_SCALARS) {
170 NDR_CHECK(ndr_pull_align(ndr, 4));
172 uint32_t _flags_save_string = ndr->flags;
173 ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_ASCII|LIBNDR_FLAG_STR_NULLTERM);
174 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_service_name));
175 if (_ptr_service_name) {
176 NDR_PULL_ALLOC(ndr, r->service_name);
177 NDR_CHECK(ndr_pull_relative_ptr1(ndr, r->service_name, _ptr_service_name));
179 r->service_name = NULL;
181 ndr->flags = _flags_save_string;
184 uint32_t _flags_save_string = ndr->flags;
185 ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_ASCII|LIBNDR_FLAG_STR_NULLTERM);
186 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_display_name));
187 if (_ptr_display_name) {
188 NDR_PULL_ALLOC(ndr, r->display_name);
189 NDR_CHECK(ndr_pull_relative_ptr1(ndr, r->display_name, _ptr_display_name));
191 r->display_name = NULL;
193 ndr->flags = _flags_save_string;
195 NDR_CHECK(ndr_pull_SERVICE_STATUS(ndr, NDR_SCALARS, &r->status));
197 if (ndr_flags & NDR_BUFFERS) {
199 uint32_t _flags_save_string = ndr->flags;
200 ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_ASCII|LIBNDR_FLAG_STR_NULLTERM);
201 if (r->service_name) {
202 uint32_t _relative_save_offset;
203 _relative_save_offset = ndr->offset;
204 NDR_CHECK(ndr_pull_relative_ptr2(ndr, r->service_name));
205 _mem_save_service_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
206 NDR_PULL_SET_MEM_CTX(ndr, r->service_name, 0);
207 NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->service_name));
208 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_service_name_0, 0);
209 ndr->offset = _relative_save_offset;
211 ndr->flags = _flags_save_string;
214 uint32_t _flags_save_string = ndr->flags;
215 ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_ASCII|LIBNDR_FLAG_STR_NULLTERM);
216 if (r->display_name) {
217 uint32_t _relative_save_offset;
218 _relative_save_offset = ndr->offset;
219 NDR_CHECK(ndr_pull_relative_ptr2(ndr, r->display_name));
220 _mem_save_display_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
221 NDR_PULL_SET_MEM_CTX(ndr, r->display_name, 0);
222 NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->display_name));
223 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_display_name_0, 0);
224 ndr->offset = _relative_save_offset;
226 ndr->flags = _flags_save_string;
229 return NDR_ERR_SUCCESS;
232 _PUBLIC_ void ndr_print_ENUM_SERVICE_STATUS(struct ndr_print *ndr, const char *name, const struct ENUM_SERVICE_STATUS *r)
234 ndr_print_struct(ndr, name, "ENUM_SERVICE_STATUS");
236 ndr_print_ptr(ndr, "service_name", r->service_name);
238 if (r->service_name) {
239 ndr_print_string(ndr, "service_name", r->service_name);
242 ndr_print_ptr(ndr, "display_name", r->display_name);
244 if (r->display_name) {
245 ndr_print_string(ndr, "display_name", r->display_name);
248 ndr_print_SERVICE_STATUS(ndr, "status", &r->status);
252 _PUBLIC_ enum ndr_err_code ndr_push_svcctl_ServerType(struct ndr_push *ndr, int ndr_flags, uint32_t r)
254 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r));
255 return NDR_ERR_SUCCESS;
258 _PUBLIC_ enum ndr_err_code ndr_pull_svcctl_ServerType(struct ndr_pull *ndr, int ndr_flags, uint32_t *r)
261 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &v));
263 return NDR_ERR_SUCCESS;
266 _PUBLIC_ void ndr_print_svcctl_ServerType(struct ndr_print *ndr, const char *name, uint32_t r)
268 ndr_print_uint32(ndr, name, r);
270 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_WORKSTATION", SV_TYPE_WORKSTATION, r);
271 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_SERVER", SV_TYPE_SERVER, r);
272 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_SQLSERVER", SV_TYPE_SQLSERVER, r);
273 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_DOMAIN_CTRL", SV_TYPE_DOMAIN_CTRL, r);
274 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_DOMAIN_BAKCTRL", SV_TYPE_DOMAIN_BAKCTRL, r);
275 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_TIME_SOURCE", SV_TYPE_TIME_SOURCE, r);
276 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_AFP", SV_TYPE_AFP, r);
277 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_NOVELL", SV_TYPE_NOVELL, r);
278 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_DOMAIN_MEMBER", SV_TYPE_DOMAIN_MEMBER, r);
279 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_PRINTQ_SERVER", SV_TYPE_PRINTQ_SERVER, r);
280 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_DIALIN_SERVER", SV_TYPE_DIALIN_SERVER, r);
281 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_SERVER_UNIX", SV_TYPE_SERVER_UNIX, r);
282 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_NT", SV_TYPE_NT, r);
283 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_WFW", SV_TYPE_WFW, r);
284 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_SERVER_MFPN", SV_TYPE_SERVER_MFPN, r);
285 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_SERVER_NT", SV_TYPE_SERVER_NT, r);
286 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_POTENTIAL_BROWSER", SV_TYPE_POTENTIAL_BROWSER, r);
287 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_BACKUP_BROWSER", SV_TYPE_BACKUP_BROWSER, r);
288 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_MASTER_BROWSER", SV_TYPE_MASTER_BROWSER, r);
289 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_DOMAIN_MASTER", SV_TYPE_DOMAIN_MASTER, r);
290 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_SERVER_OSF", SV_TYPE_SERVER_OSF, r);
291 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_SERVER_VMS", SV_TYPE_SERVER_VMS, r);
292 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_WIN95_PLUS", SV_TYPE_WIN95_PLUS, r);
293 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_DFS_SERVER", SV_TYPE_DFS_SERVER, r);
294 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_ALTERNATE_XPORT", SV_TYPE_ALTERNATE_XPORT, r);
295 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_LOCAL_LIST_ONLY", SV_TYPE_LOCAL_LIST_ONLY, r);
296 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_DOMAIN_ENUM", SV_TYPE_DOMAIN_ENUM, r);
300 static enum ndr_err_code ndr_push_SERVICE_CONTROL(struct ndr_push *ndr, int ndr_flags, enum SERVICE_CONTROL r)
302 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r));
303 return NDR_ERR_SUCCESS;
306 static enum ndr_err_code ndr_pull_SERVICE_CONTROL(struct ndr_pull *ndr, int ndr_flags, enum SERVICE_CONTROL *r)
309 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &v));
311 return NDR_ERR_SUCCESS;
314 _PUBLIC_ void ndr_print_SERVICE_CONTROL(struct ndr_print *ndr, const char *name, enum SERVICE_CONTROL r)
316 const char *val = NULL;
319 case SVCCTL_CONTROL_STOP: val = "SVCCTL_CONTROL_STOP"; break;
320 case SVCCTL_CONTROL_PAUSE: val = "SVCCTL_CONTROL_PAUSE"; break;
321 case SVCCTL_CONTROL_CONTINUE: val = "SVCCTL_CONTROL_CONTINUE"; break;
322 case SVCCTL_CONTROL_INTERROGATE: val = "SVCCTL_CONTROL_INTERROGATE"; break;
323 case SVCCTL_CONTROL_SHUTDOWN: val = "SVCCTL_CONTROL_SHUTDOWN"; break;
325 ndr_print_enum(ndr, name, "ENUM", val, r);
328 static enum ndr_err_code ndr_push_svcctl_MgrAccessMask(struct ndr_push *ndr, int ndr_flags, uint32_t r)
330 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r));
331 return NDR_ERR_SUCCESS;
334 static enum ndr_err_code ndr_pull_svcctl_MgrAccessMask(struct ndr_pull *ndr, int ndr_flags, uint32_t *r)
337 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &v));
339 return NDR_ERR_SUCCESS;
342 _PUBLIC_ void ndr_print_svcctl_MgrAccessMask(struct ndr_print *ndr, const char *name, uint32_t r)
344 ndr_print_uint32(ndr, name, r);
346 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SC_RIGHT_MGR_CONNECT", SC_RIGHT_MGR_CONNECT, r);
347 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SC_RIGHT_MGR_CREATE_SERVICE", SC_RIGHT_MGR_CREATE_SERVICE, r);
348 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SC_RIGHT_MGR_ENUMERATE_SERVICE", SC_RIGHT_MGR_ENUMERATE_SERVICE, r);
349 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SC_RIGHT_MGR_LOCK", SC_RIGHT_MGR_LOCK, r);
350 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SC_RIGHT_MGR_QUERY_LOCK_STATUS", SC_RIGHT_MGR_QUERY_LOCK_STATUS, r);
351 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SC_RIGHT_MGR_MODIFY_BOOT_CONFIG", SC_RIGHT_MGR_MODIFY_BOOT_CONFIG, r);
355 static enum ndr_err_code ndr_push_svcctl_ServiceAccessMask(struct ndr_push *ndr, int ndr_flags, uint32_t r)
357 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r));
358 return NDR_ERR_SUCCESS;
361 static enum ndr_err_code ndr_pull_svcctl_ServiceAccessMask(struct ndr_pull *ndr, int ndr_flags, uint32_t *r)
364 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &v));
366 return NDR_ERR_SUCCESS;
369 _PUBLIC_ void ndr_print_svcctl_ServiceAccessMask(struct ndr_print *ndr, const char *name, uint32_t r)
371 ndr_print_uint32(ndr, name, r);
373 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SC_RIGHT_SVC_QUERY_CONFIG", SC_RIGHT_SVC_QUERY_CONFIG, r);
374 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SC_RIGHT_SVC_CHANGE_CONFIG", SC_RIGHT_SVC_CHANGE_CONFIG, r);
375 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SC_RIGHT_SVC_QUERY_STATUS", SC_RIGHT_SVC_QUERY_STATUS, r);
376 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SC_RIGHT_SVC_ENUMERATE_DEPENDENTS", SC_RIGHT_SVC_ENUMERATE_DEPENDENTS, r);
377 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SC_RIGHT_SVC_START", SC_RIGHT_SVC_START, r);
378 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SC_RIGHT_SVC_STOP", SC_RIGHT_SVC_STOP, r);
379 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SC_RIGHT_SVC_PAUSE_CONTINUE", SC_RIGHT_SVC_PAUSE_CONTINUE, r);
380 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SC_RIGHT_SVC_INTERROGATE", SC_RIGHT_SVC_INTERROGATE, r);
381 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SC_RIGHT_SVC_USER_DEFINED_CONTROL", SC_RIGHT_SVC_USER_DEFINED_CONTROL, r);
385 _PUBLIC_ enum ndr_err_code ndr_push_QUERY_SERVICE_CONFIG(struct ndr_push *ndr, int ndr_flags, const struct QUERY_SERVICE_CONFIG *r)
387 if (ndr_flags & NDR_SCALARS) {
388 NDR_CHECK(ndr_push_align(ndr, 4));
389 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->service_type));
390 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->start_type));
391 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->error_control));
392 NDR_CHECK(ndr_push_unique_ptr(ndr, r->executablepath));
393 NDR_CHECK(ndr_push_unique_ptr(ndr, r->loadordergroup));
394 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->tag_id));
395 NDR_CHECK(ndr_push_unique_ptr(ndr, r->dependencies));
396 NDR_CHECK(ndr_push_unique_ptr(ndr, r->startname));
397 NDR_CHECK(ndr_push_unique_ptr(ndr, r->displayname));
399 if (ndr_flags & NDR_BUFFERS) {
400 if (r->executablepath) {
401 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->executablepath, CH_UTF16)));
402 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
403 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->executablepath, CH_UTF16)));
404 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->executablepath, ndr_charset_length(r->executablepath, CH_UTF16), sizeof(uint16_t), CH_UTF16));
406 if (r->loadordergroup) {
407 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->loadordergroup, CH_UTF16)));
408 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
409 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->loadordergroup, CH_UTF16)));
410 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->loadordergroup, ndr_charset_length(r->loadordergroup, CH_UTF16), sizeof(uint16_t), CH_UTF16));
412 if (r->dependencies) {
413 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->dependencies, CH_UTF16)));
414 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
415 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->dependencies, CH_UTF16)));
416 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->dependencies, ndr_charset_length(r->dependencies, CH_UTF16), sizeof(uint16_t), CH_UTF16));
419 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->startname, CH_UTF16)));
420 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
421 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->startname, CH_UTF16)));
422 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->startname, ndr_charset_length(r->startname, CH_UTF16), sizeof(uint16_t), CH_UTF16));
424 if (r->displayname) {
425 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->displayname, CH_UTF16)));
426 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
427 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->displayname, CH_UTF16)));
428 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->displayname, ndr_charset_length(r->displayname, CH_UTF16), sizeof(uint16_t), CH_UTF16));
431 return NDR_ERR_SUCCESS;
434 _PUBLIC_ enum ndr_err_code ndr_pull_QUERY_SERVICE_CONFIG(struct ndr_pull *ndr, int ndr_flags, struct QUERY_SERVICE_CONFIG *r)
436 uint32_t _ptr_executablepath;
437 TALLOC_CTX *_mem_save_executablepath_0;
438 uint32_t _ptr_loadordergroup;
439 TALLOC_CTX *_mem_save_loadordergroup_0;
440 uint32_t _ptr_dependencies;
441 TALLOC_CTX *_mem_save_dependencies_0;
442 uint32_t _ptr_startname;
443 TALLOC_CTX *_mem_save_startname_0;
444 uint32_t _ptr_displayname;
445 TALLOC_CTX *_mem_save_displayname_0;
446 if (ndr_flags & NDR_SCALARS) {
447 NDR_CHECK(ndr_pull_align(ndr, 4));
448 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->service_type));
449 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->start_type));
450 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->error_control));
451 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_executablepath));
452 if (_ptr_executablepath) {
453 NDR_PULL_ALLOC(ndr, r->executablepath);
455 r->executablepath = NULL;
457 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_loadordergroup));
458 if (_ptr_loadordergroup) {
459 NDR_PULL_ALLOC(ndr, r->loadordergroup);
461 r->loadordergroup = NULL;
463 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->tag_id));
464 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_dependencies));
465 if (_ptr_dependencies) {
466 NDR_PULL_ALLOC(ndr, r->dependencies);
468 r->dependencies = NULL;
470 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_startname));
471 if (_ptr_startname) {
472 NDR_PULL_ALLOC(ndr, r->startname);
476 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_displayname));
477 if (_ptr_displayname) {
478 NDR_PULL_ALLOC(ndr, r->displayname);
480 r->displayname = NULL;
483 if (ndr_flags & NDR_BUFFERS) {
484 if (r->executablepath) {
485 _mem_save_executablepath_0 = NDR_PULL_GET_MEM_CTX(ndr);
486 NDR_PULL_SET_MEM_CTX(ndr, r->executablepath, 0);
487 NDR_CHECK(ndr_pull_array_size(ndr, &r->executablepath));
488 NDR_CHECK(ndr_pull_array_length(ndr, &r->executablepath));
489 if (ndr_get_array_length(ndr, &r->executablepath) > ndr_get_array_size(ndr, &r->executablepath)) {
490 return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->executablepath), ndr_get_array_length(ndr, &r->executablepath));
492 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->executablepath), sizeof(uint16_t)));
493 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->executablepath, ndr_get_array_length(ndr, &r->executablepath), sizeof(uint16_t), CH_UTF16));
494 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_executablepath_0, 0);
496 if (r->loadordergroup) {
497 _mem_save_loadordergroup_0 = NDR_PULL_GET_MEM_CTX(ndr);
498 NDR_PULL_SET_MEM_CTX(ndr, r->loadordergroup, 0);
499 NDR_CHECK(ndr_pull_array_size(ndr, &r->loadordergroup));
500 NDR_CHECK(ndr_pull_array_length(ndr, &r->loadordergroup));
501 if (ndr_get_array_length(ndr, &r->loadordergroup) > ndr_get_array_size(ndr, &r->loadordergroup)) {
502 return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->loadordergroup), ndr_get_array_length(ndr, &r->loadordergroup));
504 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->loadordergroup), sizeof(uint16_t)));
505 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->loadordergroup, ndr_get_array_length(ndr, &r->loadordergroup), sizeof(uint16_t), CH_UTF16));
506 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_loadordergroup_0, 0);
508 if (r->dependencies) {
509 _mem_save_dependencies_0 = NDR_PULL_GET_MEM_CTX(ndr);
510 NDR_PULL_SET_MEM_CTX(ndr, r->dependencies, 0);
511 NDR_CHECK(ndr_pull_array_size(ndr, &r->dependencies));
512 NDR_CHECK(ndr_pull_array_length(ndr, &r->dependencies));
513 if (ndr_get_array_length(ndr, &r->dependencies) > ndr_get_array_size(ndr, &r->dependencies)) {
514 return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->dependencies), ndr_get_array_length(ndr, &r->dependencies));
516 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->dependencies), sizeof(uint16_t)));
517 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->dependencies, ndr_get_array_length(ndr, &r->dependencies), sizeof(uint16_t), CH_UTF16));
518 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_dependencies_0, 0);
521 _mem_save_startname_0 = NDR_PULL_GET_MEM_CTX(ndr);
522 NDR_PULL_SET_MEM_CTX(ndr, r->startname, 0);
523 NDR_CHECK(ndr_pull_array_size(ndr, &r->startname));
524 NDR_CHECK(ndr_pull_array_length(ndr, &r->startname));
525 if (ndr_get_array_length(ndr, &r->startname) > ndr_get_array_size(ndr, &r->startname)) {
526 return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->startname), ndr_get_array_length(ndr, &r->startname));
528 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->startname), sizeof(uint16_t)));
529 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->startname, ndr_get_array_length(ndr, &r->startname), sizeof(uint16_t), CH_UTF16));
530 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_startname_0, 0);
532 if (r->displayname) {
533 _mem_save_displayname_0 = NDR_PULL_GET_MEM_CTX(ndr);
534 NDR_PULL_SET_MEM_CTX(ndr, r->displayname, 0);
535 NDR_CHECK(ndr_pull_array_size(ndr, &r->displayname));
536 NDR_CHECK(ndr_pull_array_length(ndr, &r->displayname));
537 if (ndr_get_array_length(ndr, &r->displayname) > ndr_get_array_size(ndr, &r->displayname)) {
538 return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->displayname), ndr_get_array_length(ndr, &r->displayname));
540 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->displayname), sizeof(uint16_t)));
541 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->displayname, ndr_get_array_length(ndr, &r->displayname), sizeof(uint16_t), CH_UTF16));
542 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_displayname_0, 0);
545 return NDR_ERR_SUCCESS;
548 _PUBLIC_ void ndr_print_QUERY_SERVICE_CONFIG(struct ndr_print *ndr, const char *name, const struct QUERY_SERVICE_CONFIG *r)
550 ndr_print_struct(ndr, name, "QUERY_SERVICE_CONFIG");
552 ndr_print_uint32(ndr, "service_type", r->service_type);
553 ndr_print_uint32(ndr, "start_type", r->start_type);
554 ndr_print_uint32(ndr, "error_control", r->error_control);
555 ndr_print_ptr(ndr, "executablepath", r->executablepath);
557 if (r->executablepath) {
558 ndr_print_string(ndr, "executablepath", r->executablepath);
561 ndr_print_ptr(ndr, "loadordergroup", r->loadordergroup);
563 if (r->loadordergroup) {
564 ndr_print_string(ndr, "loadordergroup", r->loadordergroup);
567 ndr_print_uint32(ndr, "tag_id", r->tag_id);
568 ndr_print_ptr(ndr, "dependencies", r->dependencies);
570 if (r->dependencies) {
571 ndr_print_string(ndr, "dependencies", r->dependencies);
574 ndr_print_ptr(ndr, "startname", r->startname);
577 ndr_print_string(ndr, "startname", r->startname);
580 ndr_print_ptr(ndr, "displayname", r->displayname);
582 if (r->displayname) {
583 ndr_print_string(ndr, "displayname", r->displayname);
589 _PUBLIC_ size_t ndr_size_QUERY_SERVICE_CONFIG(const struct QUERY_SERVICE_CONFIG *r, struct smb_iconv_convenience *ic, int flags)
591 return ndr_size_struct(r, flags, (ndr_push_flags_fn_t)ndr_push_QUERY_SERVICE_CONFIG, ic);
594 static enum ndr_err_code ndr_push_svcctl_ConfigLevel(struct ndr_push *ndr, int ndr_flags, enum svcctl_ConfigLevel r)
596 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r));
597 return NDR_ERR_SUCCESS;
600 static enum ndr_err_code ndr_pull_svcctl_ConfigLevel(struct ndr_pull *ndr, int ndr_flags, enum svcctl_ConfigLevel *r)
603 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &v));
605 return NDR_ERR_SUCCESS;
608 _PUBLIC_ void ndr_print_svcctl_ConfigLevel(struct ndr_print *ndr, const char *name, enum svcctl_ConfigLevel r)
610 const char *val = NULL;
613 case SERVICE_CONFIG_DESCRIPTION: val = "SERVICE_CONFIG_DESCRIPTION"; break;
614 case SERVICE_CONFIG_FAILURE_ACTIONS: val = "SERVICE_CONFIG_FAILURE_ACTIONS"; break;
616 ndr_print_enum(ndr, name, "ENUM", val, r);
619 static enum ndr_err_code ndr_push_svcctl_StatusLevel(struct ndr_push *ndr, int ndr_flags, enum svcctl_StatusLevel r)
621 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r));
622 return NDR_ERR_SUCCESS;
625 static enum ndr_err_code ndr_pull_svcctl_StatusLevel(struct ndr_pull *ndr, int ndr_flags, enum svcctl_StatusLevel *r)
628 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &v));
630 return NDR_ERR_SUCCESS;
633 _PUBLIC_ void ndr_print_svcctl_StatusLevel(struct ndr_print *ndr, const char *name, enum svcctl_StatusLevel r)
635 const char *val = NULL;
638 case SVC_STATUS_PROCESS_INFO: val = "SVC_STATUS_PROCESS_INFO"; break;
640 ndr_print_enum(ndr, name, "ENUM", val, r);
643 static enum ndr_err_code ndr_push_svcctl_CloseServiceHandle(struct ndr_push *ndr, int flags, const struct svcctl_CloseServiceHandle *r)
645 if (flags & NDR_IN) {
646 if (r->in.handle == NULL) {
647 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
649 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
651 if (flags & NDR_OUT) {
652 if (r->out.handle == NULL) {
653 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
655 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->out.handle));
656 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
658 return NDR_ERR_SUCCESS;
661 static enum ndr_err_code ndr_pull_svcctl_CloseServiceHandle(struct ndr_pull *ndr, int flags, struct svcctl_CloseServiceHandle *r)
663 TALLOC_CTX *_mem_save_handle_0;
664 if (flags & NDR_IN) {
667 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
668 NDR_PULL_ALLOC(ndr, r->in.handle);
670 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
671 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
672 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
673 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
674 NDR_PULL_ALLOC(ndr, r->out.handle);
675 *r->out.handle = *r->in.handle;
677 if (flags & NDR_OUT) {
678 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
679 NDR_PULL_ALLOC(ndr, r->out.handle);
681 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
682 NDR_PULL_SET_MEM_CTX(ndr, r->out.handle, LIBNDR_FLAG_REF_ALLOC);
683 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->out.handle));
684 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
685 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
687 return NDR_ERR_SUCCESS;
690 _PUBLIC_ void ndr_print_svcctl_CloseServiceHandle(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_CloseServiceHandle *r)
692 ndr_print_struct(ndr, name, "svcctl_CloseServiceHandle");
694 if (flags & NDR_SET_VALUES) {
695 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
697 if (flags & NDR_IN) {
698 ndr_print_struct(ndr, "in", "svcctl_CloseServiceHandle");
700 ndr_print_ptr(ndr, "handle", r->in.handle);
702 ndr_print_policy_handle(ndr, "handle", r->in.handle);
706 if (flags & NDR_OUT) {
707 ndr_print_struct(ndr, "out", "svcctl_CloseServiceHandle");
709 ndr_print_ptr(ndr, "handle", r->out.handle);
711 ndr_print_policy_handle(ndr, "handle", r->out.handle);
713 ndr_print_WERROR(ndr, "result", r->out.result);
719 static enum ndr_err_code ndr_push_svcctl_ControlService(struct ndr_push *ndr, int flags, const struct svcctl_ControlService *r)
721 if (flags & NDR_IN) {
722 if (r->in.handle == NULL) {
723 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
725 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
726 NDR_CHECK(ndr_push_SERVICE_CONTROL(ndr, NDR_SCALARS, r->in.control));
728 if (flags & NDR_OUT) {
729 if (r->out.service_status == NULL) {
730 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
732 NDR_CHECK(ndr_push_SERVICE_STATUS(ndr, NDR_SCALARS, r->out.service_status));
733 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
735 return NDR_ERR_SUCCESS;
738 static enum ndr_err_code ndr_pull_svcctl_ControlService(struct ndr_pull *ndr, int flags, struct svcctl_ControlService *r)
740 TALLOC_CTX *_mem_save_handle_0;
741 TALLOC_CTX *_mem_save_service_status_0;
742 if (flags & NDR_IN) {
745 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
746 NDR_PULL_ALLOC(ndr, r->in.handle);
748 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
749 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
750 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
751 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
752 NDR_CHECK(ndr_pull_SERVICE_CONTROL(ndr, NDR_SCALARS, &r->in.control));
753 NDR_PULL_ALLOC(ndr, r->out.service_status);
754 ZERO_STRUCTP(r->out.service_status);
756 if (flags & NDR_OUT) {
757 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
758 NDR_PULL_ALLOC(ndr, r->out.service_status);
760 _mem_save_service_status_0 = NDR_PULL_GET_MEM_CTX(ndr);
761 NDR_PULL_SET_MEM_CTX(ndr, r->out.service_status, LIBNDR_FLAG_REF_ALLOC);
762 NDR_CHECK(ndr_pull_SERVICE_STATUS(ndr, NDR_SCALARS, r->out.service_status));
763 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_service_status_0, LIBNDR_FLAG_REF_ALLOC);
764 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
766 return NDR_ERR_SUCCESS;
769 _PUBLIC_ void ndr_print_svcctl_ControlService(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_ControlService *r)
771 ndr_print_struct(ndr, name, "svcctl_ControlService");
773 if (flags & NDR_SET_VALUES) {
774 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
776 if (flags & NDR_IN) {
777 ndr_print_struct(ndr, "in", "svcctl_ControlService");
779 ndr_print_ptr(ndr, "handle", r->in.handle);
781 ndr_print_policy_handle(ndr, "handle", r->in.handle);
783 ndr_print_SERVICE_CONTROL(ndr, "control", r->in.control);
786 if (flags & NDR_OUT) {
787 ndr_print_struct(ndr, "out", "svcctl_ControlService");
789 ndr_print_ptr(ndr, "service_status", r->out.service_status);
791 ndr_print_SERVICE_STATUS(ndr, "service_status", r->out.service_status);
793 ndr_print_WERROR(ndr, "result", r->out.result);
799 static enum ndr_err_code ndr_push_svcctl_DeleteService(struct ndr_push *ndr, int flags, const struct svcctl_DeleteService *r)
801 if (flags & NDR_IN) {
802 if (r->in.handle == NULL) {
803 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
805 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
807 if (flags & NDR_OUT) {
808 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
810 return NDR_ERR_SUCCESS;
813 static enum ndr_err_code ndr_pull_svcctl_DeleteService(struct ndr_pull *ndr, int flags, struct svcctl_DeleteService *r)
815 TALLOC_CTX *_mem_save_handle_0;
816 if (flags & NDR_IN) {
817 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
818 NDR_PULL_ALLOC(ndr, r->in.handle);
820 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
821 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
822 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
823 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
825 if (flags & NDR_OUT) {
826 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
828 return NDR_ERR_SUCCESS;
831 _PUBLIC_ void ndr_print_svcctl_DeleteService(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_DeleteService *r)
833 ndr_print_struct(ndr, name, "svcctl_DeleteService");
835 if (flags & NDR_SET_VALUES) {
836 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
838 if (flags & NDR_IN) {
839 ndr_print_struct(ndr, "in", "svcctl_DeleteService");
841 ndr_print_ptr(ndr, "handle", r->in.handle);
843 ndr_print_policy_handle(ndr, "handle", r->in.handle);
847 if (flags & NDR_OUT) {
848 ndr_print_struct(ndr, "out", "svcctl_DeleteService");
850 ndr_print_WERROR(ndr, "result", r->out.result);
856 static enum ndr_err_code ndr_push_svcctl_LockServiceDatabase(struct ndr_push *ndr, int flags, const struct svcctl_LockServiceDatabase *r)
858 if (flags & NDR_IN) {
859 if (r->in.handle == NULL) {
860 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
862 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
864 if (flags & NDR_OUT) {
865 if (r->out.lock == NULL) {
866 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
868 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->out.lock));
869 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
871 return NDR_ERR_SUCCESS;
874 static enum ndr_err_code ndr_pull_svcctl_LockServiceDatabase(struct ndr_pull *ndr, int flags, struct svcctl_LockServiceDatabase *r)
876 TALLOC_CTX *_mem_save_handle_0;
877 TALLOC_CTX *_mem_save_lock_0;
878 if (flags & NDR_IN) {
881 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
882 NDR_PULL_ALLOC(ndr, r->in.handle);
884 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
885 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
886 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
887 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
888 NDR_PULL_ALLOC(ndr, r->out.lock);
889 ZERO_STRUCTP(r->out.lock);
891 if (flags & NDR_OUT) {
892 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
893 NDR_PULL_ALLOC(ndr, r->out.lock);
895 _mem_save_lock_0 = NDR_PULL_GET_MEM_CTX(ndr);
896 NDR_PULL_SET_MEM_CTX(ndr, r->out.lock, LIBNDR_FLAG_REF_ALLOC);
897 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->out.lock));
898 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_lock_0, LIBNDR_FLAG_REF_ALLOC);
899 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
901 return NDR_ERR_SUCCESS;
904 _PUBLIC_ void ndr_print_svcctl_LockServiceDatabase(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_LockServiceDatabase *r)
906 ndr_print_struct(ndr, name, "svcctl_LockServiceDatabase");
908 if (flags & NDR_SET_VALUES) {
909 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
911 if (flags & NDR_IN) {
912 ndr_print_struct(ndr, "in", "svcctl_LockServiceDatabase");
914 ndr_print_ptr(ndr, "handle", r->in.handle);
916 ndr_print_policy_handle(ndr, "handle", r->in.handle);
920 if (flags & NDR_OUT) {
921 ndr_print_struct(ndr, "out", "svcctl_LockServiceDatabase");
923 ndr_print_ptr(ndr, "lock", r->out.lock);
925 ndr_print_policy_handle(ndr, "lock", r->out.lock);
927 ndr_print_WERROR(ndr, "result", r->out.result);
933 static enum ndr_err_code ndr_push_svcctl_QueryServiceObjectSecurity(struct ndr_push *ndr, int flags, const struct svcctl_QueryServiceObjectSecurity *r)
935 if (flags & NDR_IN) {
936 if (r->in.handle == NULL) {
937 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
939 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
940 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.security_flags));
941 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.buffer_size));
943 if (flags & NDR_OUT) {
944 if (r->out.buffer == NULL) {
945 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
947 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.buffer_size));
948 NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->out.buffer, r->in.buffer_size));
949 if (r->out.needed == NULL) {
950 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
952 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.needed));
953 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
955 return NDR_ERR_SUCCESS;
958 static enum ndr_err_code ndr_pull_svcctl_QueryServiceObjectSecurity(struct ndr_pull *ndr, int flags, struct svcctl_QueryServiceObjectSecurity *r)
960 TALLOC_CTX *_mem_save_handle_0;
961 TALLOC_CTX *_mem_save_needed_0;
962 if (flags & NDR_IN) {
965 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
966 NDR_PULL_ALLOC(ndr, r->in.handle);
968 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
969 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
970 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
971 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
972 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.security_flags));
973 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.buffer_size));
974 if (r->in.buffer_size < 0 || r->in.buffer_size > 0x40000) {
975 return ndr_pull_error(ndr, NDR_ERR_RANGE, "value out of range");
977 NDR_PULL_ALLOC_N(ndr, r->out.buffer, r->in.buffer_size);
978 memset(CONST_DISCARD(struct svcctl_QueryServiceObjectSecurity *,r->out.buffer), 0, (r->in.buffer_size) * sizeof(*r->out.buffer));
979 NDR_PULL_ALLOC(ndr, r->out.needed);
980 ZERO_STRUCTP(r->out.needed);
982 if (flags & NDR_OUT) {
983 NDR_CHECK(ndr_pull_array_size(ndr, &r->out.buffer));
984 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
985 NDR_PULL_ALLOC_N(ndr, r->out.buffer, ndr_get_array_size(ndr, &r->out.buffer));
987 NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->out.buffer, ndr_get_array_size(ndr, &r->out.buffer)));
988 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
989 NDR_PULL_ALLOC(ndr, r->out.needed);
991 _mem_save_needed_0 = NDR_PULL_GET_MEM_CTX(ndr);
992 NDR_PULL_SET_MEM_CTX(ndr, r->out.needed, LIBNDR_FLAG_REF_ALLOC);
993 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.needed));
994 if (*r->out.needed < 0 || *r->out.needed > 0x40000) {
995 return ndr_pull_error(ndr, NDR_ERR_RANGE, "value out of range");
997 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_needed_0, LIBNDR_FLAG_REF_ALLOC);
998 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
1000 NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->out.buffer, r->in.buffer_size));
1003 return NDR_ERR_SUCCESS;
1006 _PUBLIC_ void ndr_print_svcctl_QueryServiceObjectSecurity(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_QueryServiceObjectSecurity *r)
1008 ndr_print_struct(ndr, name, "svcctl_QueryServiceObjectSecurity");
1010 if (flags & NDR_SET_VALUES) {
1011 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
1013 if (flags & NDR_IN) {
1014 ndr_print_struct(ndr, "in", "svcctl_QueryServiceObjectSecurity");
1016 ndr_print_ptr(ndr, "handle", r->in.handle);
1018 ndr_print_policy_handle(ndr, "handle", r->in.handle);
1020 ndr_print_uint32(ndr, "security_flags", r->in.security_flags);
1021 ndr_print_uint32(ndr, "buffer_size", r->in.buffer_size);
1024 if (flags & NDR_OUT) {
1025 ndr_print_struct(ndr, "out", "svcctl_QueryServiceObjectSecurity");
1027 ndr_print_ptr(ndr, "buffer", r->out.buffer);
1029 ndr_print_array_uint8(ndr, "buffer", r->out.buffer, r->in.buffer_size);
1031 ndr_print_ptr(ndr, "needed", r->out.needed);
1033 ndr_print_uint32(ndr, "needed", *r->out.needed);
1035 ndr_print_WERROR(ndr, "result", r->out.result);
1041 static enum ndr_err_code ndr_push_svcctl_SetServiceObjectSecurity(struct ndr_push *ndr, int flags, const struct svcctl_SetServiceObjectSecurity *r)
1043 if (flags & NDR_IN) {
1044 if (r->in.handle == NULL) {
1045 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
1047 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
1048 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.security_flags));
1049 if (r->in.buffer == NULL) {
1050 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
1052 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.buffer_size));
1053 NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->in.buffer, r->in.buffer_size));
1054 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.buffer_size));
1056 if (flags & NDR_OUT) {
1057 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
1059 return NDR_ERR_SUCCESS;
1062 static enum ndr_err_code ndr_pull_svcctl_SetServiceObjectSecurity(struct ndr_pull *ndr, int flags, struct svcctl_SetServiceObjectSecurity *r)
1064 TALLOC_CTX *_mem_save_handle_0;
1065 if (flags & NDR_IN) {
1066 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
1067 NDR_PULL_ALLOC(ndr, r->in.handle);
1069 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
1070 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
1071 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
1072 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
1073 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.security_flags));
1074 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.buffer));
1075 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
1076 NDR_PULL_ALLOC_N(ndr, r->in.buffer, ndr_get_array_size(ndr, &r->in.buffer));
1078 NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->in.buffer, ndr_get_array_size(ndr, &r->in.buffer)));
1079 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.buffer_size));
1081 NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->in.buffer, r->in.buffer_size));
1084 if (flags & NDR_OUT) {
1085 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
1087 return NDR_ERR_SUCCESS;
1090 _PUBLIC_ void ndr_print_svcctl_SetServiceObjectSecurity(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_SetServiceObjectSecurity *r)
1092 ndr_print_struct(ndr, name, "svcctl_SetServiceObjectSecurity");
1094 if (flags & NDR_SET_VALUES) {
1095 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
1097 if (flags & NDR_IN) {
1098 ndr_print_struct(ndr, "in", "svcctl_SetServiceObjectSecurity");
1100 ndr_print_ptr(ndr, "handle", r->in.handle);
1102 ndr_print_policy_handle(ndr, "handle", r->in.handle);
1104 ndr_print_uint32(ndr, "security_flags", r->in.security_flags);
1105 ndr_print_ptr(ndr, "buffer", r->in.buffer);
1107 ndr_print_array_uint8(ndr, "buffer", r->in.buffer, r->in.buffer_size);
1109 ndr_print_uint32(ndr, "buffer_size", r->in.buffer_size);
1112 if (flags & NDR_OUT) {
1113 ndr_print_struct(ndr, "out", "svcctl_SetServiceObjectSecurity");
1115 ndr_print_WERROR(ndr, "result", r->out.result);
1121 static enum ndr_err_code ndr_push_svcctl_QueryServiceStatus(struct ndr_push *ndr, int flags, const struct svcctl_QueryServiceStatus *r)
1123 if (flags & NDR_IN) {
1124 if (r->in.handle == NULL) {
1125 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
1127 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
1129 if (flags & NDR_OUT) {
1130 if (r->out.service_status == NULL) {
1131 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
1133 NDR_CHECK(ndr_push_SERVICE_STATUS(ndr, NDR_SCALARS, r->out.service_status));
1134 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
1136 return NDR_ERR_SUCCESS;
1139 static enum ndr_err_code ndr_pull_svcctl_QueryServiceStatus(struct ndr_pull *ndr, int flags, struct svcctl_QueryServiceStatus *r)
1141 TALLOC_CTX *_mem_save_handle_0;
1142 TALLOC_CTX *_mem_save_service_status_0;
1143 if (flags & NDR_IN) {
1144 ZERO_STRUCT(r->out);
1146 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
1147 NDR_PULL_ALLOC(ndr, r->in.handle);
1149 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
1150 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
1151 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
1152 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
1153 NDR_PULL_ALLOC(ndr, r->out.service_status);
1154 ZERO_STRUCTP(r->out.service_status);
1156 if (flags & NDR_OUT) {
1157 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
1158 NDR_PULL_ALLOC(ndr, r->out.service_status);
1160 _mem_save_service_status_0 = NDR_PULL_GET_MEM_CTX(ndr);
1161 NDR_PULL_SET_MEM_CTX(ndr, r->out.service_status, LIBNDR_FLAG_REF_ALLOC);
1162 NDR_CHECK(ndr_pull_SERVICE_STATUS(ndr, NDR_SCALARS, r->out.service_status));
1163 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_service_status_0, LIBNDR_FLAG_REF_ALLOC);
1164 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
1166 return NDR_ERR_SUCCESS;
1169 _PUBLIC_ void ndr_print_svcctl_QueryServiceStatus(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_QueryServiceStatus *r)
1171 ndr_print_struct(ndr, name, "svcctl_QueryServiceStatus");
1173 if (flags & NDR_SET_VALUES) {
1174 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
1176 if (flags & NDR_IN) {
1177 ndr_print_struct(ndr, "in", "svcctl_QueryServiceStatus");
1179 ndr_print_ptr(ndr, "handle", r->in.handle);
1181 ndr_print_policy_handle(ndr, "handle", r->in.handle);
1185 if (flags & NDR_OUT) {
1186 ndr_print_struct(ndr, "out", "svcctl_QueryServiceStatus");
1188 ndr_print_ptr(ndr, "service_status", r->out.service_status);
1190 ndr_print_SERVICE_STATUS(ndr, "service_status", r->out.service_status);
1192 ndr_print_WERROR(ndr, "result", r->out.result);
1198 static enum ndr_err_code ndr_push_svcctl_SetServiceStatus(struct ndr_push *ndr, int flags, const struct svcctl_SetServiceStatus *r)
1200 if (flags & NDR_IN) {
1202 if (flags & NDR_OUT) {
1203 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
1205 return NDR_ERR_SUCCESS;
1208 static enum ndr_err_code ndr_pull_svcctl_SetServiceStatus(struct ndr_pull *ndr, int flags, struct svcctl_SetServiceStatus *r)
1210 if (flags & NDR_IN) {
1212 if (flags & NDR_OUT) {
1213 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
1215 return NDR_ERR_SUCCESS;
1218 _PUBLIC_ void ndr_print_svcctl_SetServiceStatus(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_SetServiceStatus *r)
1220 ndr_print_struct(ndr, name, "svcctl_SetServiceStatus");
1222 if (flags & NDR_SET_VALUES) {
1223 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
1225 if (flags & NDR_IN) {
1226 ndr_print_struct(ndr, "in", "svcctl_SetServiceStatus");
1230 if (flags & NDR_OUT) {
1231 ndr_print_struct(ndr, "out", "svcctl_SetServiceStatus");
1233 ndr_print_WERROR(ndr, "result", r->out.result);
1239 static enum ndr_err_code ndr_push_svcctl_UnlockServiceDatabase(struct ndr_push *ndr, int flags, const struct svcctl_UnlockServiceDatabase *r)
1241 if (flags & NDR_IN) {
1242 if (r->in.lock == NULL) {
1243 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
1245 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.lock));
1247 if (flags & NDR_OUT) {
1248 if (r->out.lock == NULL) {
1249 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
1251 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->out.lock));
1252 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
1254 return NDR_ERR_SUCCESS;
1257 static enum ndr_err_code ndr_pull_svcctl_UnlockServiceDatabase(struct ndr_pull *ndr, int flags, struct svcctl_UnlockServiceDatabase *r)
1259 TALLOC_CTX *_mem_save_lock_0;
1260 if (flags & NDR_IN) {
1261 ZERO_STRUCT(r->out);
1263 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
1264 NDR_PULL_ALLOC(ndr, r->in.lock);
1266 _mem_save_lock_0 = NDR_PULL_GET_MEM_CTX(ndr);
1267 NDR_PULL_SET_MEM_CTX(ndr, r->in.lock, LIBNDR_FLAG_REF_ALLOC);
1268 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.lock));
1269 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_lock_0, LIBNDR_FLAG_REF_ALLOC);
1270 NDR_PULL_ALLOC(ndr, r->out.lock);
1271 *r->out.lock = *r->in.lock;
1273 if (flags & NDR_OUT) {
1274 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
1275 NDR_PULL_ALLOC(ndr, r->out.lock);
1277 _mem_save_lock_0 = NDR_PULL_GET_MEM_CTX(ndr);
1278 NDR_PULL_SET_MEM_CTX(ndr, r->out.lock, LIBNDR_FLAG_REF_ALLOC);
1279 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->out.lock));
1280 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_lock_0, LIBNDR_FLAG_REF_ALLOC);
1281 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
1283 return NDR_ERR_SUCCESS;
1286 _PUBLIC_ void ndr_print_svcctl_UnlockServiceDatabase(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_UnlockServiceDatabase *r)
1288 ndr_print_struct(ndr, name, "svcctl_UnlockServiceDatabase");
1290 if (flags & NDR_SET_VALUES) {
1291 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
1293 if (flags & NDR_IN) {
1294 ndr_print_struct(ndr, "in", "svcctl_UnlockServiceDatabase");
1296 ndr_print_ptr(ndr, "lock", r->in.lock);
1298 ndr_print_policy_handle(ndr, "lock", r->in.lock);
1302 if (flags & NDR_OUT) {
1303 ndr_print_struct(ndr, "out", "svcctl_UnlockServiceDatabase");
1305 ndr_print_ptr(ndr, "lock", r->out.lock);
1307 ndr_print_policy_handle(ndr, "lock", r->out.lock);
1309 ndr_print_WERROR(ndr, "result", r->out.result);
1315 static enum ndr_err_code ndr_push_svcctl_NotifyBootConfigStatus(struct ndr_push *ndr, int flags, const struct svcctl_NotifyBootConfigStatus *r)
1317 if (flags & NDR_IN) {
1319 if (flags & NDR_OUT) {
1320 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
1322 return NDR_ERR_SUCCESS;
1325 static enum ndr_err_code ndr_pull_svcctl_NotifyBootConfigStatus(struct ndr_pull *ndr, int flags, struct svcctl_NotifyBootConfigStatus *r)
1327 if (flags & NDR_IN) {
1329 if (flags & NDR_OUT) {
1330 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
1332 return NDR_ERR_SUCCESS;
1335 _PUBLIC_ void ndr_print_svcctl_NotifyBootConfigStatus(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_NotifyBootConfigStatus *r)
1337 ndr_print_struct(ndr, name, "svcctl_NotifyBootConfigStatus");
1339 if (flags & NDR_SET_VALUES) {
1340 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
1342 if (flags & NDR_IN) {
1343 ndr_print_struct(ndr, "in", "svcctl_NotifyBootConfigStatus");
1347 if (flags & NDR_OUT) {
1348 ndr_print_struct(ndr, "out", "svcctl_NotifyBootConfigStatus");
1350 ndr_print_WERROR(ndr, "result", r->out.result);
1356 static enum ndr_err_code ndr_push_svcctl_SCSetServiceBitsW(struct ndr_push *ndr, int flags, const struct svcctl_SCSetServiceBitsW *r)
1358 if (flags & NDR_IN) {
1359 if (r->in.handle == NULL) {
1360 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
1362 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
1363 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.bits));
1364 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.bitson));
1365 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.immediate));
1367 if (flags & NDR_OUT) {
1368 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
1370 return NDR_ERR_SUCCESS;
1373 static enum ndr_err_code ndr_pull_svcctl_SCSetServiceBitsW(struct ndr_pull *ndr, int flags, struct svcctl_SCSetServiceBitsW *r)
1375 TALLOC_CTX *_mem_save_handle_0;
1376 if (flags & NDR_IN) {
1377 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
1378 NDR_PULL_ALLOC(ndr, r->in.handle);
1380 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
1381 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
1382 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
1383 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
1384 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.bits));
1385 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.bitson));
1386 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.immediate));
1388 if (flags & NDR_OUT) {
1389 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
1391 return NDR_ERR_SUCCESS;
1394 _PUBLIC_ void ndr_print_svcctl_SCSetServiceBitsW(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_SCSetServiceBitsW *r)
1396 ndr_print_struct(ndr, name, "svcctl_SCSetServiceBitsW");
1398 if (flags & NDR_SET_VALUES) {
1399 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
1401 if (flags & NDR_IN) {
1402 ndr_print_struct(ndr, "in", "svcctl_SCSetServiceBitsW");
1404 ndr_print_ptr(ndr, "handle", r->in.handle);
1406 ndr_print_policy_handle(ndr, "handle", r->in.handle);
1408 ndr_print_uint32(ndr, "bits", r->in.bits);
1409 ndr_print_uint32(ndr, "bitson", r->in.bitson);
1410 ndr_print_uint32(ndr, "immediate", r->in.immediate);
1413 if (flags & NDR_OUT) {
1414 ndr_print_struct(ndr, "out", "svcctl_SCSetServiceBitsW");
1416 ndr_print_WERROR(ndr, "result", r->out.result);
1422 static enum ndr_err_code ndr_push_svcctl_ChangeServiceConfigW(struct ndr_push *ndr, int flags, const struct svcctl_ChangeServiceConfigW *r)
1424 if (flags & NDR_IN) {
1425 if (r->in.handle == NULL) {
1426 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
1428 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
1429 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.type));
1430 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.start));
1431 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.error));
1432 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.binary_path));
1433 if (r->in.binary_path) {
1434 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.binary_path, CH_UTF16)));
1435 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
1436 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.binary_path, CH_UTF16)));
1437 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));
1439 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.load_order_group));
1440 if (r->in.load_order_group) {
1441 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.load_order_group, CH_UTF16)));
1442 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
1443 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.load_order_group, CH_UTF16)));
1444 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));
1446 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.dependencies));
1447 if (r->in.dependencies) {
1448 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.dependencies, CH_UTF16)));
1449 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
1450 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.dependencies, CH_UTF16)));
1451 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.dependencies, ndr_charset_length(r->in.dependencies, CH_UTF16), sizeof(uint16_t), CH_UTF16));
1453 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.service_start_name));
1454 if (r->in.service_start_name) {
1455 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.service_start_name, CH_UTF16)));
1456 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
1457 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.service_start_name, CH_UTF16)));
1458 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));
1460 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.password));
1461 if (r->in.password) {
1462 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.password, CH_UTF16)));
1463 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
1464 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.password, CH_UTF16)));
1465 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.password, ndr_charset_length(r->in.password, CH_UTF16), sizeof(uint16_t), CH_UTF16));
1467 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.display_name));
1468 if (r->in.display_name) {
1469 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.display_name, CH_UTF16)));
1470 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
1471 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.display_name, CH_UTF16)));
1472 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));
1475 if (flags & NDR_OUT) {
1476 if (r->out.tag_id == NULL) {
1477 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
1479 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.tag_id));
1480 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
1482 return NDR_ERR_SUCCESS;
1485 static enum ndr_err_code ndr_pull_svcctl_ChangeServiceConfigW(struct ndr_pull *ndr, int flags, struct svcctl_ChangeServiceConfigW *r)
1487 uint32_t _ptr_binary_path;
1488 uint32_t _ptr_load_order_group;
1489 uint32_t _ptr_dependencies;
1490 uint32_t _ptr_service_start_name;
1491 uint32_t _ptr_password;
1492 uint32_t _ptr_display_name;
1493 TALLOC_CTX *_mem_save_handle_0;
1494 TALLOC_CTX *_mem_save_binary_path_0;
1495 TALLOC_CTX *_mem_save_load_order_group_0;
1496 TALLOC_CTX *_mem_save_tag_id_0;
1497 TALLOC_CTX *_mem_save_dependencies_0;
1498 TALLOC_CTX *_mem_save_service_start_name_0;
1499 TALLOC_CTX *_mem_save_password_0;
1500 TALLOC_CTX *_mem_save_display_name_0;
1501 if (flags & NDR_IN) {
1502 ZERO_STRUCT(r->out);
1504 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
1505 NDR_PULL_ALLOC(ndr, r->in.handle);
1507 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
1508 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
1509 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
1510 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
1511 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.type));
1512 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.start));
1513 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.error));
1514 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_binary_path));
1515 if (_ptr_binary_path) {
1516 NDR_PULL_ALLOC(ndr, r->in.binary_path);
1518 r->in.binary_path = NULL;
1520 if (r->in.binary_path) {
1521 _mem_save_binary_path_0 = NDR_PULL_GET_MEM_CTX(ndr);
1522 NDR_PULL_SET_MEM_CTX(ndr, r->in.binary_path, 0);
1523 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.binary_path));
1524 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.binary_path));
1525 if (ndr_get_array_length(ndr, &r->in.binary_path) > ndr_get_array_size(ndr, &r->in.binary_path)) {
1526 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));
1528 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.binary_path), sizeof(uint16_t)));
1529 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));
1530 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_binary_path_0, 0);
1532 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_load_order_group));
1533 if (_ptr_load_order_group) {
1534 NDR_PULL_ALLOC(ndr, r->in.load_order_group);
1536 r->in.load_order_group = NULL;
1538 if (r->in.load_order_group) {
1539 _mem_save_load_order_group_0 = NDR_PULL_GET_MEM_CTX(ndr);
1540 NDR_PULL_SET_MEM_CTX(ndr, r->in.load_order_group, 0);
1541 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.load_order_group));
1542 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.load_order_group));
1543 if (ndr_get_array_length(ndr, &r->in.load_order_group) > ndr_get_array_size(ndr, &r->in.load_order_group)) {
1544 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));
1546 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.load_order_group), sizeof(uint16_t)));
1547 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));
1548 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_load_order_group_0, 0);
1550 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_dependencies));
1551 if (_ptr_dependencies) {
1552 NDR_PULL_ALLOC(ndr, r->in.dependencies);
1554 r->in.dependencies = NULL;
1556 if (r->in.dependencies) {
1557 _mem_save_dependencies_0 = NDR_PULL_GET_MEM_CTX(ndr);
1558 NDR_PULL_SET_MEM_CTX(ndr, r->in.dependencies, 0);
1559 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.dependencies));
1560 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.dependencies));
1561 if (ndr_get_array_length(ndr, &r->in.dependencies) > ndr_get_array_size(ndr, &r->in.dependencies)) {
1562 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));
1564 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.dependencies), sizeof(uint16_t)));
1565 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.dependencies, ndr_get_array_length(ndr, &r->in.dependencies), sizeof(uint16_t), CH_UTF16));
1566 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_dependencies_0, 0);
1568 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_service_start_name));
1569 if (_ptr_service_start_name) {
1570 NDR_PULL_ALLOC(ndr, r->in.service_start_name);
1572 r->in.service_start_name = NULL;
1574 if (r->in.service_start_name) {
1575 _mem_save_service_start_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
1576 NDR_PULL_SET_MEM_CTX(ndr, r->in.service_start_name, 0);
1577 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.service_start_name));
1578 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.service_start_name));
1579 if (ndr_get_array_length(ndr, &r->in.service_start_name) > ndr_get_array_size(ndr, &r->in.service_start_name)) {
1580 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));
1582 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.service_start_name), sizeof(uint16_t)));
1583 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));
1584 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_service_start_name_0, 0);
1586 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_password));
1587 if (_ptr_password) {
1588 NDR_PULL_ALLOC(ndr, r->in.password);
1590 r->in.password = NULL;
1592 if (r->in.password) {
1593 _mem_save_password_0 = NDR_PULL_GET_MEM_CTX(ndr);
1594 NDR_PULL_SET_MEM_CTX(ndr, r->in.password, 0);
1595 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.password));
1596 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.password));
1597 if (ndr_get_array_length(ndr, &r->in.password) > ndr_get_array_size(ndr, &r->in.password)) {
1598 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));
1600 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.password), sizeof(uint16_t)));
1601 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.password, ndr_get_array_length(ndr, &r->in.password), sizeof(uint16_t), CH_UTF16));
1602 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_password_0, 0);
1604 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_display_name));
1605 if (_ptr_display_name) {
1606 NDR_PULL_ALLOC(ndr, r->in.display_name);
1608 r->in.display_name = NULL;
1610 if (r->in.display_name) {
1611 _mem_save_display_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
1612 NDR_PULL_SET_MEM_CTX(ndr, r->in.display_name, 0);
1613 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.display_name));
1614 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.display_name));
1615 if (ndr_get_array_length(ndr, &r->in.display_name) > ndr_get_array_size(ndr, &r->in.display_name)) {
1616 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));
1618 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.display_name), sizeof(uint16_t)));
1619 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));
1620 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_display_name_0, 0);
1622 NDR_PULL_ALLOC(ndr, r->out.tag_id);
1623 ZERO_STRUCTP(r->out.tag_id);
1625 if (flags & NDR_OUT) {
1626 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
1627 NDR_PULL_ALLOC(ndr, r->out.tag_id);
1629 _mem_save_tag_id_0 = NDR_PULL_GET_MEM_CTX(ndr);
1630 NDR_PULL_SET_MEM_CTX(ndr, r->out.tag_id, LIBNDR_FLAG_REF_ALLOC);
1631 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.tag_id));
1632 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_tag_id_0, LIBNDR_FLAG_REF_ALLOC);
1633 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
1635 return NDR_ERR_SUCCESS;
1638 _PUBLIC_ void ndr_print_svcctl_ChangeServiceConfigW(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_ChangeServiceConfigW *r)
1640 ndr_print_struct(ndr, name, "svcctl_ChangeServiceConfigW");
1642 if (flags & NDR_SET_VALUES) {
1643 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
1645 if (flags & NDR_IN) {
1646 ndr_print_struct(ndr, "in", "svcctl_ChangeServiceConfigW");
1648 ndr_print_ptr(ndr, "handle", r->in.handle);
1650 ndr_print_policy_handle(ndr, "handle", r->in.handle);
1652 ndr_print_uint32(ndr, "type", r->in.type);
1653 ndr_print_uint32(ndr, "start", r->in.start);
1654 ndr_print_uint32(ndr, "error", r->in.error);
1655 ndr_print_ptr(ndr, "binary_path", r->in.binary_path);
1657 if (r->in.binary_path) {
1658 ndr_print_string(ndr, "binary_path", r->in.binary_path);
1661 ndr_print_ptr(ndr, "load_order_group", r->in.load_order_group);
1663 if (r->in.load_order_group) {
1664 ndr_print_string(ndr, "load_order_group", r->in.load_order_group);
1667 ndr_print_ptr(ndr, "dependencies", r->in.dependencies);
1669 if (r->in.dependencies) {
1670 ndr_print_string(ndr, "dependencies", r->in.dependencies);
1673 ndr_print_ptr(ndr, "service_start_name", r->in.service_start_name);
1675 if (r->in.service_start_name) {
1676 ndr_print_string(ndr, "service_start_name", r->in.service_start_name);
1679 ndr_print_ptr(ndr, "password", r->in.password);
1681 if (r->in.password) {
1682 ndr_print_string(ndr, "password", r->in.password);
1685 ndr_print_ptr(ndr, "display_name", r->in.display_name);
1687 if (r->in.display_name) {
1688 ndr_print_string(ndr, "display_name", r->in.display_name);
1693 if (flags & NDR_OUT) {
1694 ndr_print_struct(ndr, "out", "svcctl_ChangeServiceConfigW");
1696 ndr_print_ptr(ndr, "tag_id", r->out.tag_id);
1698 ndr_print_uint32(ndr, "tag_id", *r->out.tag_id);
1700 ndr_print_WERROR(ndr, "result", r->out.result);
1706 static enum ndr_err_code ndr_push_svcctl_CreateServiceW(struct ndr_push *ndr, int flags, const struct svcctl_CreateServiceW *r)
1708 if (flags & NDR_IN) {
1709 if (r->in.scmanager_handle == NULL) {
1710 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
1712 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.scmanager_handle));
1713 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.ServiceName, CH_UTF16)));
1714 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
1715 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.ServiceName, CH_UTF16)));
1716 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.ServiceName, ndr_charset_length(r->in.ServiceName, CH_UTF16), sizeof(uint16_t), CH_UTF16));
1717 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.DisplayName));
1718 if (r->in.DisplayName) {
1719 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.DisplayName, CH_UTF16)));
1720 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
1721 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.DisplayName, CH_UTF16)));
1722 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.DisplayName, ndr_charset_length(r->in.DisplayName, CH_UTF16), sizeof(uint16_t), CH_UTF16));
1724 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.desired_access));
1725 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.type));
1726 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.start_type));
1727 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.error_control));
1728 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.binary_path, CH_UTF16)));
1729 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
1730 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.binary_path, CH_UTF16)));
1731 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));
1732 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.LoadOrderGroupKey));
1733 if (r->in.LoadOrderGroupKey) {
1734 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.LoadOrderGroupKey, CH_UTF16)));
1735 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
1736 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.LoadOrderGroupKey, CH_UTF16)));
1737 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.LoadOrderGroupKey, ndr_charset_length(r->in.LoadOrderGroupKey, CH_UTF16), sizeof(uint16_t), CH_UTF16));
1739 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.TagId));
1741 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->in.TagId));
1743 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.dependencies));
1744 if (r->in.dependencies) {
1745 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.dependencies_size));
1746 NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->in.dependencies, r->in.dependencies_size));
1748 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.dependencies_size));
1749 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.service_start_name));
1750 if (r->in.service_start_name) {
1751 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.service_start_name, CH_UTF16)));
1752 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
1753 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.service_start_name, CH_UTF16)));
1754 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));
1756 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.password));
1757 if (r->in.password) {
1758 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.password_size));
1759 NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->in.password, r->in.password_size));
1761 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.password_size));
1763 if (flags & NDR_OUT) {
1764 NDR_CHECK(ndr_push_unique_ptr(ndr, r->out.TagId));
1766 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.TagId));
1768 if (r->out.handle == NULL) {
1769 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
1771 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->out.handle));
1772 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
1774 return NDR_ERR_SUCCESS;
1777 static enum ndr_err_code ndr_pull_svcctl_CreateServiceW(struct ndr_pull *ndr, int flags, struct svcctl_CreateServiceW *r)
1779 uint32_t _ptr_DisplayName;
1780 uint32_t _ptr_LoadOrderGroupKey;
1781 uint32_t _ptr_TagId;
1782 uint32_t _ptr_dependencies;
1783 uint32_t _ptr_service_start_name;
1784 uint32_t _ptr_password;
1785 TALLOC_CTX *_mem_save_scmanager_handle_0;
1786 TALLOC_CTX *_mem_save_DisplayName_0;
1787 TALLOC_CTX *_mem_save_LoadOrderGroupKey_0;
1788 TALLOC_CTX *_mem_save_TagId_0;
1789 TALLOC_CTX *_mem_save_dependencies_0;
1790 TALLOC_CTX *_mem_save_service_start_name_0;
1791 TALLOC_CTX *_mem_save_password_0;
1792 TALLOC_CTX *_mem_save_handle_0;
1793 if (flags & NDR_IN) {
1794 ZERO_STRUCT(r->out);
1796 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
1797 NDR_PULL_ALLOC(ndr, r->in.scmanager_handle);
1799 _mem_save_scmanager_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
1800 NDR_PULL_SET_MEM_CTX(ndr, r->in.scmanager_handle, LIBNDR_FLAG_REF_ALLOC);
1801 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.scmanager_handle));
1802 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_scmanager_handle_0, LIBNDR_FLAG_REF_ALLOC);
1803 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.ServiceName));
1804 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.ServiceName));
1805 if (ndr_get_array_length(ndr, &r->in.ServiceName) > ndr_get_array_size(ndr, &r->in.ServiceName)) {
1806 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));
1808 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.ServiceName), sizeof(uint16_t)));
1809 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.ServiceName, ndr_get_array_length(ndr, &r->in.ServiceName), sizeof(uint16_t), CH_UTF16));
1810 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_DisplayName));
1811 if (_ptr_DisplayName) {
1812 NDR_PULL_ALLOC(ndr, r->in.DisplayName);
1814 r->in.DisplayName = NULL;
1816 if (r->in.DisplayName) {
1817 _mem_save_DisplayName_0 = NDR_PULL_GET_MEM_CTX(ndr);
1818 NDR_PULL_SET_MEM_CTX(ndr, r->in.DisplayName, 0);
1819 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.DisplayName));
1820 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.DisplayName));
1821 if (ndr_get_array_length(ndr, &r->in.DisplayName) > ndr_get_array_size(ndr, &r->in.DisplayName)) {
1822 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));
1824 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.DisplayName), sizeof(uint16_t)));
1825 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.DisplayName, ndr_get_array_length(ndr, &r->in.DisplayName), sizeof(uint16_t), CH_UTF16));
1826 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_DisplayName_0, 0);
1828 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.desired_access));
1829 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.type));
1830 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.start_type));
1831 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.error_control));
1832 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.binary_path));
1833 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.binary_path));
1834 if (ndr_get_array_length(ndr, &r->in.binary_path) > ndr_get_array_size(ndr, &r->in.binary_path)) {
1835 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));
1837 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.binary_path), sizeof(uint16_t)));
1838 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));
1839 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_LoadOrderGroupKey));
1840 if (_ptr_LoadOrderGroupKey) {
1841 NDR_PULL_ALLOC(ndr, r->in.LoadOrderGroupKey);
1843 r->in.LoadOrderGroupKey = NULL;
1845 if (r->in.LoadOrderGroupKey) {
1846 _mem_save_LoadOrderGroupKey_0 = NDR_PULL_GET_MEM_CTX(ndr);
1847 NDR_PULL_SET_MEM_CTX(ndr, r->in.LoadOrderGroupKey, 0);
1848 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.LoadOrderGroupKey));
1849 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.LoadOrderGroupKey));
1850 if (ndr_get_array_length(ndr, &r->in.LoadOrderGroupKey) > ndr_get_array_size(ndr, &r->in.LoadOrderGroupKey)) {
1851 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));
1853 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.LoadOrderGroupKey), sizeof(uint16_t)));
1854 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.LoadOrderGroupKey, ndr_get_array_length(ndr, &r->in.LoadOrderGroupKey), sizeof(uint16_t), CH_UTF16));
1855 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_LoadOrderGroupKey_0, 0);
1857 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_TagId));
1859 NDR_PULL_ALLOC(ndr, r->in.TagId);
1864 _mem_save_TagId_0 = NDR_PULL_GET_MEM_CTX(ndr);
1865 NDR_PULL_SET_MEM_CTX(ndr, r->in.TagId, 0);
1866 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->in.TagId));
1867 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_TagId_0, 0);
1869 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_dependencies));
1870 if (_ptr_dependencies) {
1871 NDR_PULL_ALLOC(ndr, r->in.dependencies);
1873 r->in.dependencies = NULL;
1875 if (r->in.dependencies) {
1876 _mem_save_dependencies_0 = NDR_PULL_GET_MEM_CTX(ndr);
1877 NDR_PULL_SET_MEM_CTX(ndr, r->in.dependencies, 0);
1878 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.dependencies));
1879 NDR_PULL_ALLOC_N(ndr, r->in.dependencies, ndr_get_array_size(ndr, &r->in.dependencies));
1880 NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->in.dependencies, ndr_get_array_size(ndr, &r->in.dependencies)));
1881 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_dependencies_0, 0);
1883 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.dependencies_size));
1884 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_service_start_name));
1885 if (_ptr_service_start_name) {
1886 NDR_PULL_ALLOC(ndr, r->in.service_start_name);
1888 r->in.service_start_name = NULL;
1890 if (r->in.service_start_name) {
1891 _mem_save_service_start_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
1892 NDR_PULL_SET_MEM_CTX(ndr, r->in.service_start_name, 0);
1893 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.service_start_name));
1894 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.service_start_name));
1895 if (ndr_get_array_length(ndr, &r->in.service_start_name) > ndr_get_array_size(ndr, &r->in.service_start_name)) {
1896 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));
1898 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.service_start_name), sizeof(uint16_t)));
1899 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));
1900 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_service_start_name_0, 0);
1902 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_password));
1903 if (_ptr_password) {
1904 NDR_PULL_ALLOC(ndr, r->in.password);
1906 r->in.password = NULL;
1908 if (r->in.password) {
1909 _mem_save_password_0 = NDR_PULL_GET_MEM_CTX(ndr);
1910 NDR_PULL_SET_MEM_CTX(ndr, r->in.password, 0);
1911 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.password));
1912 NDR_PULL_ALLOC_N(ndr, r->in.password, ndr_get_array_size(ndr, &r->in.password));
1913 NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->in.password, ndr_get_array_size(ndr, &r->in.password)));
1914 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_password_0, 0);
1916 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.password_size));
1917 NDR_PULL_ALLOC(ndr, r->out.handle);
1918 ZERO_STRUCTP(r->out.handle);
1919 if (r->in.dependencies) {
1920 NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->in.dependencies, r->in.dependencies_size));
1922 if (r->in.password) {
1923 NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->in.password, r->in.password_size));
1926 if (flags & NDR_OUT) {
1927 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_TagId));
1929 NDR_PULL_ALLOC(ndr, r->out.TagId);
1931 r->out.TagId = NULL;
1934 _mem_save_TagId_0 = NDR_PULL_GET_MEM_CTX(ndr);
1935 NDR_PULL_SET_MEM_CTX(ndr, r->out.TagId, 0);
1936 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.TagId));
1937 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_TagId_0, 0);
1939 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
1940 NDR_PULL_ALLOC(ndr, r->out.handle);
1942 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
1943 NDR_PULL_SET_MEM_CTX(ndr, r->out.handle, LIBNDR_FLAG_REF_ALLOC);
1944 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->out.handle));
1945 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
1946 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
1948 return NDR_ERR_SUCCESS;
1951 _PUBLIC_ void ndr_print_svcctl_CreateServiceW(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_CreateServiceW *r)
1953 ndr_print_struct(ndr, name, "svcctl_CreateServiceW");
1955 if (flags & NDR_SET_VALUES) {
1956 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
1958 if (flags & NDR_IN) {
1959 ndr_print_struct(ndr, "in", "svcctl_CreateServiceW");
1961 ndr_print_ptr(ndr, "scmanager_handle", r->in.scmanager_handle);
1963 ndr_print_policy_handle(ndr, "scmanager_handle", r->in.scmanager_handle);
1965 ndr_print_string(ndr, "ServiceName", r->in.ServiceName);
1966 ndr_print_ptr(ndr, "DisplayName", r->in.DisplayName);
1968 if (r->in.DisplayName) {
1969 ndr_print_string(ndr, "DisplayName", r->in.DisplayName);
1972 ndr_print_uint32(ndr, "desired_access", r->in.desired_access);
1973 ndr_print_uint32(ndr, "type", r->in.type);
1974 ndr_print_uint32(ndr, "start_type", r->in.start_type);
1975 ndr_print_uint32(ndr, "error_control", r->in.error_control);
1976 ndr_print_string(ndr, "binary_path", r->in.binary_path);
1977 ndr_print_ptr(ndr, "LoadOrderGroupKey", r->in.LoadOrderGroupKey);
1979 if (r->in.LoadOrderGroupKey) {
1980 ndr_print_string(ndr, "LoadOrderGroupKey", r->in.LoadOrderGroupKey);
1983 ndr_print_ptr(ndr, "TagId", r->in.TagId);
1986 ndr_print_uint32(ndr, "TagId", *r->in.TagId);
1989 ndr_print_ptr(ndr, "dependencies", r->in.dependencies);
1991 if (r->in.dependencies) {
1992 ndr_print_array_uint8(ndr, "dependencies", r->in.dependencies, r->in.dependencies_size);
1995 ndr_print_uint32(ndr, "dependencies_size", r->in.dependencies_size);
1996 ndr_print_ptr(ndr, "service_start_name", r->in.service_start_name);
1998 if (r->in.service_start_name) {
1999 ndr_print_string(ndr, "service_start_name", r->in.service_start_name);
2002 ndr_print_ptr(ndr, "password", r->in.password);
2004 if (r->in.password) {
2005 ndr_print_array_uint8(ndr, "password", r->in.password, r->in.password_size);
2008 ndr_print_uint32(ndr, "password_size", r->in.password_size);
2011 if (flags & NDR_OUT) {
2012 ndr_print_struct(ndr, "out", "svcctl_CreateServiceW");
2014 ndr_print_ptr(ndr, "TagId", r->out.TagId);
2017 ndr_print_uint32(ndr, "TagId", *r->out.TagId);
2020 ndr_print_ptr(ndr, "handle", r->out.handle);
2022 ndr_print_policy_handle(ndr, "handle", r->out.handle);
2024 ndr_print_WERROR(ndr, "result", r->out.result);
2030 static enum ndr_err_code ndr_push_svcctl_EnumDependentServicesW(struct ndr_push *ndr, int flags, const struct svcctl_EnumDependentServicesW *r)
2032 if (flags & NDR_IN) {
2033 if (r->in.service == NULL) {
2034 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
2036 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.service));
2037 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.state));
2038 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.buf_size));
2040 if (flags & NDR_OUT) {
2041 if (r->out.service_status == NULL) {
2042 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
2044 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.buf_size));
2045 NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->out.service_status, r->in.buf_size));
2046 if (r->out.bytes_needed == NULL) {
2047 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
2049 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.bytes_needed));
2050 if (r->out.services_returned == NULL) {
2051 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
2053 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.services_returned));
2054 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
2056 return NDR_ERR_SUCCESS;
2059 static enum ndr_err_code ndr_pull_svcctl_EnumDependentServicesW(struct ndr_pull *ndr, int flags, struct svcctl_EnumDependentServicesW *r)
2061 TALLOC_CTX *_mem_save_service_0;
2062 TALLOC_CTX *_mem_save_bytes_needed_0;
2063 TALLOC_CTX *_mem_save_services_returned_0;
2064 if (flags & NDR_IN) {
2065 ZERO_STRUCT(r->out);
2067 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
2068 NDR_PULL_ALLOC(ndr, r->in.service);
2070 _mem_save_service_0 = NDR_PULL_GET_MEM_CTX(ndr);
2071 NDR_PULL_SET_MEM_CTX(ndr, r->in.service, LIBNDR_FLAG_REF_ALLOC);
2072 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.service));
2073 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_service_0, LIBNDR_FLAG_REF_ALLOC);
2074 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.state));
2075 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.buf_size));
2076 if (r->in.buf_size < 0 || r->in.buf_size > 0x40000) {
2077 return ndr_pull_error(ndr, NDR_ERR_RANGE, "value out of range");
2079 NDR_PULL_ALLOC_N(ndr, r->out.service_status, r->in.buf_size);
2080 memset(CONST_DISCARD(struct svcctl_EnumDependentServicesW *,r->out.service_status), 0, (r->in.buf_size) * sizeof(*r->out.service_status));
2081 NDR_PULL_ALLOC(ndr, r->out.bytes_needed);
2082 ZERO_STRUCTP(r->out.bytes_needed);
2083 NDR_PULL_ALLOC(ndr, r->out.services_returned);
2084 ZERO_STRUCTP(r->out.services_returned);
2086 if (flags & NDR_OUT) {
2087 NDR_CHECK(ndr_pull_array_size(ndr, &r->out.service_status));
2088 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
2089 NDR_PULL_ALLOC_N(ndr, r->out.service_status, ndr_get_array_size(ndr, &r->out.service_status));
2091 NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->out.service_status, ndr_get_array_size(ndr, &r->out.service_status)));
2092 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
2093 NDR_PULL_ALLOC(ndr, r->out.bytes_needed);
2095 _mem_save_bytes_needed_0 = NDR_PULL_GET_MEM_CTX(ndr);
2096 NDR_PULL_SET_MEM_CTX(ndr, r->out.bytes_needed, LIBNDR_FLAG_REF_ALLOC);
2097 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.bytes_needed));
2098 if (*r->out.bytes_needed < 0 || *r->out.bytes_needed > 0x40000) {
2099 return ndr_pull_error(ndr, NDR_ERR_RANGE, "value out of range");
2101 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_bytes_needed_0, LIBNDR_FLAG_REF_ALLOC);
2102 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
2103 NDR_PULL_ALLOC(ndr, r->out.services_returned);
2105 _mem_save_services_returned_0 = NDR_PULL_GET_MEM_CTX(ndr);
2106 NDR_PULL_SET_MEM_CTX(ndr, r->out.services_returned, LIBNDR_FLAG_REF_ALLOC);
2107 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.services_returned));
2108 if (*r->out.services_returned < 0 || *r->out.services_returned > 0x40000) {
2109 return ndr_pull_error(ndr, NDR_ERR_RANGE, "value out of range");
2111 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_services_returned_0, LIBNDR_FLAG_REF_ALLOC);
2112 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
2113 if (r->out.service_status) {
2114 NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->out.service_status, r->in.buf_size));
2117 return NDR_ERR_SUCCESS;
2120 _PUBLIC_ void ndr_print_svcctl_EnumDependentServicesW(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_EnumDependentServicesW *r)
2122 ndr_print_struct(ndr, name, "svcctl_EnumDependentServicesW");
2124 if (flags & NDR_SET_VALUES) {
2125 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
2127 if (flags & NDR_IN) {
2128 ndr_print_struct(ndr, "in", "svcctl_EnumDependentServicesW");
2130 ndr_print_ptr(ndr, "service", r->in.service);
2132 ndr_print_policy_handle(ndr, "service", r->in.service);
2134 ndr_print_uint32(ndr, "state", r->in.state);
2135 ndr_print_uint32(ndr, "buf_size", r->in.buf_size);
2138 if (flags & NDR_OUT) {
2139 ndr_print_struct(ndr, "out", "svcctl_EnumDependentServicesW");
2141 ndr_print_ptr(ndr, "service_status", r->out.service_status);
2143 ndr_print_array_uint8(ndr, "service_status", r->out.service_status, r->in.buf_size);
2145 ndr_print_ptr(ndr, "bytes_needed", r->out.bytes_needed);
2147 ndr_print_uint32(ndr, "bytes_needed", *r->out.bytes_needed);
2149 ndr_print_ptr(ndr, "services_returned", r->out.services_returned);
2151 ndr_print_uint32(ndr, "services_returned", *r->out.services_returned);
2153 ndr_print_WERROR(ndr, "result", r->out.result);
2159 static enum ndr_err_code ndr_push_svcctl_EnumServicesStatusW(struct ndr_push *ndr, int flags, const struct svcctl_EnumServicesStatusW *r)
2161 if (flags & NDR_IN) {
2162 if (r->in.handle == NULL) {
2163 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
2165 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
2166 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.type));
2167 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.state));
2168 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.buf_size));
2169 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.resume_handle));
2170 if (r->in.resume_handle) {
2171 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->in.resume_handle));
2174 if (flags & NDR_OUT) {
2175 if (r->out.service == NULL) {
2176 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
2178 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.buf_size));
2179 NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->out.service, r->in.buf_size));
2180 if (r->out.bytes_needed == NULL) {
2181 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
2183 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.bytes_needed));
2184 if (r->out.services_returned == NULL) {
2185 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
2187 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.services_returned));
2188 NDR_CHECK(ndr_push_unique_ptr(ndr, r->out.resume_handle));
2189 if (r->out.resume_handle) {
2190 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.resume_handle));
2192 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
2194 return NDR_ERR_SUCCESS;
2197 static enum ndr_err_code ndr_pull_svcctl_EnumServicesStatusW(struct ndr_pull *ndr, int flags, struct svcctl_EnumServicesStatusW *r)
2199 uint32_t _ptr_resume_handle;
2200 TALLOC_CTX *_mem_save_handle_0;
2201 TALLOC_CTX *_mem_save_bytes_needed_0;
2202 TALLOC_CTX *_mem_save_services_returned_0;
2203 TALLOC_CTX *_mem_save_resume_handle_0;
2204 if (flags & NDR_IN) {
2205 ZERO_STRUCT(r->out);
2207 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
2208 NDR_PULL_ALLOC(ndr, r->in.handle);
2210 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
2211 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
2212 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
2213 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
2214 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.type));
2215 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.state));
2216 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.buf_size));
2217 if (r->in.buf_size < 0 || r->in.buf_size > 262144) {
2218 return ndr_pull_error(ndr, NDR_ERR_RANGE, "value out of range");
2220 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_resume_handle));
2221 if (_ptr_resume_handle) {
2222 NDR_PULL_ALLOC(ndr, r->in.resume_handle);
2224 r->in.resume_handle = NULL;
2226 if (r->in.resume_handle) {
2227 _mem_save_resume_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
2228 NDR_PULL_SET_MEM_CTX(ndr, r->in.resume_handle, 0);
2229 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->in.resume_handle));
2230 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_resume_handle_0, 0);
2232 NDR_PULL_ALLOC_N(ndr, r->out.service, r->in.buf_size);
2233 memset(CONST_DISCARD(struct svcctl_EnumServicesStatusW *,r->out.service), 0, (r->in.buf_size) * sizeof(*r->out.service));
2234 NDR_PULL_ALLOC(ndr, r->out.bytes_needed);
2235 ZERO_STRUCTP(r->out.bytes_needed);
2236 NDR_PULL_ALLOC(ndr, r->out.services_returned);
2237 ZERO_STRUCTP(r->out.services_returned);
2239 if (flags & NDR_OUT) {
2240 NDR_CHECK(ndr_pull_array_size(ndr, &r->out.service));
2241 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
2242 NDR_PULL_ALLOC_N(ndr, r->out.service, ndr_get_array_size(ndr, &r->out.service));
2244 NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->out.service, ndr_get_array_size(ndr, &r->out.service)));
2245 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
2246 NDR_PULL_ALLOC(ndr, r->out.bytes_needed);
2248 _mem_save_bytes_needed_0 = NDR_PULL_GET_MEM_CTX(ndr);
2249 NDR_PULL_SET_MEM_CTX(ndr, r->out.bytes_needed, LIBNDR_FLAG_REF_ALLOC);
2250 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.bytes_needed));
2251 if (*r->out.bytes_needed < 0 || *r->out.bytes_needed > 262144) {
2252 return ndr_pull_error(ndr, NDR_ERR_RANGE, "value out of range");
2254 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_bytes_needed_0, LIBNDR_FLAG_REF_ALLOC);
2255 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
2256 NDR_PULL_ALLOC(ndr, r->out.services_returned);
2258 _mem_save_services_returned_0 = NDR_PULL_GET_MEM_CTX(ndr);
2259 NDR_PULL_SET_MEM_CTX(ndr, r->out.services_returned, LIBNDR_FLAG_REF_ALLOC);
2260 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.services_returned));
2261 if (*r->out.services_returned < 0 || *r->out.services_returned > 262144) {
2262 return ndr_pull_error(ndr, NDR_ERR_RANGE, "value out of range");
2264 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_services_returned_0, LIBNDR_FLAG_REF_ALLOC);
2265 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_resume_handle));
2266 if (_ptr_resume_handle) {
2267 NDR_PULL_ALLOC(ndr, r->out.resume_handle);
2269 r->out.resume_handle = NULL;
2271 if (r->out.resume_handle) {
2272 _mem_save_resume_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
2273 NDR_PULL_SET_MEM_CTX(ndr, r->out.resume_handle, 0);
2274 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.resume_handle));
2275 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_resume_handle_0, 0);
2277 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
2278 if (r->out.service) {
2279 NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->out.service, r->in.buf_size));
2282 return NDR_ERR_SUCCESS;
2285 _PUBLIC_ void ndr_print_svcctl_EnumServicesStatusW(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_EnumServicesStatusW *r)
2287 ndr_print_struct(ndr, name, "svcctl_EnumServicesStatusW");
2289 if (flags & NDR_SET_VALUES) {
2290 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
2292 if (flags & NDR_IN) {
2293 ndr_print_struct(ndr, "in", "svcctl_EnumServicesStatusW");
2295 ndr_print_ptr(ndr, "handle", r->in.handle);
2297 ndr_print_policy_handle(ndr, "handle", r->in.handle);
2299 ndr_print_uint32(ndr, "type", r->in.type);
2300 ndr_print_uint32(ndr, "state", r->in.state);
2301 ndr_print_uint32(ndr, "buf_size", r->in.buf_size);
2302 ndr_print_ptr(ndr, "resume_handle", r->in.resume_handle);
2304 if (r->in.resume_handle) {
2305 ndr_print_uint32(ndr, "resume_handle", *r->in.resume_handle);
2310 if (flags & NDR_OUT) {
2311 ndr_print_struct(ndr, "out", "svcctl_EnumServicesStatusW");
2313 ndr_print_ptr(ndr, "service", r->out.service);
2315 ndr_print_array_uint8(ndr, "service", r->out.service, r->in.buf_size);
2317 ndr_print_ptr(ndr, "bytes_needed", r->out.bytes_needed);
2319 ndr_print_uint32(ndr, "bytes_needed", *r->out.bytes_needed);
2321 ndr_print_ptr(ndr, "services_returned", r->out.services_returned);
2323 ndr_print_uint32(ndr, "services_returned", *r->out.services_returned);
2325 ndr_print_ptr(ndr, "resume_handle", r->out.resume_handle);
2327 if (r->out.resume_handle) {
2328 ndr_print_uint32(ndr, "resume_handle", *r->out.resume_handle);
2331 ndr_print_WERROR(ndr, "result", r->out.result);
2337 static enum ndr_err_code ndr_push_svcctl_OpenSCManagerW(struct ndr_push *ndr, int flags, const struct svcctl_OpenSCManagerW *r)
2339 if (flags & NDR_IN) {
2340 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.MachineName));
2341 if (r->in.MachineName) {
2342 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.MachineName, CH_UTF16)));
2343 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
2344 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.MachineName, CH_UTF16)));
2345 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.MachineName, ndr_charset_length(r->in.MachineName, CH_UTF16), sizeof(uint16_t), CH_UTF16));
2347 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.DatabaseName));
2348 if (r->in.DatabaseName) {
2349 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.DatabaseName, CH_UTF16)));
2350 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
2351 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.DatabaseName, CH_UTF16)));
2352 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.DatabaseName, ndr_charset_length(r->in.DatabaseName, CH_UTF16), sizeof(uint16_t), CH_UTF16));
2354 NDR_CHECK(ndr_push_svcctl_MgrAccessMask(ndr, NDR_SCALARS, r->in.access_mask));
2356 if (flags & NDR_OUT) {
2357 if (r->out.handle == NULL) {
2358 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
2360 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->out.handle));
2361 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
2363 return NDR_ERR_SUCCESS;
2366 static enum ndr_err_code ndr_pull_svcctl_OpenSCManagerW(struct ndr_pull *ndr, int flags, struct svcctl_OpenSCManagerW *r)
2368 uint32_t _ptr_MachineName;
2369 uint32_t _ptr_DatabaseName;
2370 TALLOC_CTX *_mem_save_MachineName_0;
2371 TALLOC_CTX *_mem_save_DatabaseName_0;
2372 TALLOC_CTX *_mem_save_handle_0;
2373 if (flags & NDR_IN) {
2374 ZERO_STRUCT(r->out);
2376 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_MachineName));
2377 if (_ptr_MachineName) {
2378 NDR_PULL_ALLOC(ndr, r->in.MachineName);
2380 r->in.MachineName = NULL;
2382 if (r->in.MachineName) {
2383 _mem_save_MachineName_0 = NDR_PULL_GET_MEM_CTX(ndr);
2384 NDR_PULL_SET_MEM_CTX(ndr, r->in.MachineName, 0);
2385 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.MachineName));
2386 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.MachineName));
2387 if (ndr_get_array_length(ndr, &r->in.MachineName) > ndr_get_array_size(ndr, &r->in.MachineName)) {
2388 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));
2390 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.MachineName), sizeof(uint16_t)));
2391 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.MachineName, ndr_get_array_length(ndr, &r->in.MachineName), sizeof(uint16_t), CH_UTF16));
2392 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_MachineName_0, 0);
2394 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_DatabaseName));
2395 if (_ptr_DatabaseName) {
2396 NDR_PULL_ALLOC(ndr, r->in.DatabaseName);
2398 r->in.DatabaseName = NULL;
2400 if (r->in.DatabaseName) {
2401 _mem_save_DatabaseName_0 = NDR_PULL_GET_MEM_CTX(ndr);
2402 NDR_PULL_SET_MEM_CTX(ndr, r->in.DatabaseName, 0);
2403 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.DatabaseName));
2404 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.DatabaseName));
2405 if (ndr_get_array_length(ndr, &r->in.DatabaseName) > ndr_get_array_size(ndr, &r->in.DatabaseName)) {
2406 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));
2408 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.DatabaseName), sizeof(uint16_t)));
2409 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.DatabaseName, ndr_get_array_length(ndr, &r->in.DatabaseName), sizeof(uint16_t), CH_UTF16));
2410 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_DatabaseName_0, 0);
2412 NDR_CHECK(ndr_pull_svcctl_MgrAccessMask(ndr, NDR_SCALARS, &r->in.access_mask));
2413 NDR_PULL_ALLOC(ndr, r->out.handle);
2414 ZERO_STRUCTP(r->out.handle);
2416 if (flags & NDR_OUT) {
2417 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
2418 NDR_PULL_ALLOC(ndr, r->out.handle);
2420 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
2421 NDR_PULL_SET_MEM_CTX(ndr, r->out.handle, LIBNDR_FLAG_REF_ALLOC);
2422 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->out.handle));
2423 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
2424 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
2426 return NDR_ERR_SUCCESS;
2429 _PUBLIC_ void ndr_print_svcctl_OpenSCManagerW(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_OpenSCManagerW *r)
2431 ndr_print_struct(ndr, name, "svcctl_OpenSCManagerW");
2433 if (flags & NDR_SET_VALUES) {
2434 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
2436 if (flags & NDR_IN) {
2437 ndr_print_struct(ndr, "in", "svcctl_OpenSCManagerW");
2439 ndr_print_ptr(ndr, "MachineName", r->in.MachineName);
2441 if (r->in.MachineName) {
2442 ndr_print_string(ndr, "MachineName", r->in.MachineName);
2445 ndr_print_ptr(ndr, "DatabaseName", r->in.DatabaseName);
2447 if (r->in.DatabaseName) {
2448 ndr_print_string(ndr, "DatabaseName", r->in.DatabaseName);
2451 ndr_print_svcctl_MgrAccessMask(ndr, "access_mask", r->in.access_mask);
2454 if (flags & NDR_OUT) {
2455 ndr_print_struct(ndr, "out", "svcctl_OpenSCManagerW");
2457 ndr_print_ptr(ndr, "handle", r->out.handle);
2459 ndr_print_policy_handle(ndr, "handle", r->out.handle);
2461 ndr_print_WERROR(ndr, "result", r->out.result);
2467 static enum ndr_err_code ndr_push_svcctl_OpenServiceW(struct ndr_push *ndr, int flags, const struct svcctl_OpenServiceW *r)
2469 if (flags & NDR_IN) {
2470 if (r->in.scmanager_handle == NULL) {
2471 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
2473 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.scmanager_handle));
2474 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.ServiceName, CH_UTF16)));
2475 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
2476 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.ServiceName, CH_UTF16)));
2477 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.ServiceName, ndr_charset_length(r->in.ServiceName, CH_UTF16), sizeof(uint16_t), CH_UTF16));
2478 NDR_CHECK(ndr_push_svcctl_ServiceAccessMask(ndr, NDR_SCALARS, r->in.access_mask));
2480 if (flags & NDR_OUT) {
2481 if (r->out.handle == NULL) {
2482 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
2484 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->out.handle));
2485 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
2487 return NDR_ERR_SUCCESS;
2490 static enum ndr_err_code ndr_pull_svcctl_OpenServiceW(struct ndr_pull *ndr, int flags, struct svcctl_OpenServiceW *r)
2492 TALLOC_CTX *_mem_save_scmanager_handle_0;
2493 TALLOC_CTX *_mem_save_handle_0;
2494 if (flags & NDR_IN) {
2495 ZERO_STRUCT(r->out);
2497 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
2498 NDR_PULL_ALLOC(ndr, r->in.scmanager_handle);
2500 _mem_save_scmanager_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
2501 NDR_PULL_SET_MEM_CTX(ndr, r->in.scmanager_handle, LIBNDR_FLAG_REF_ALLOC);
2502 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.scmanager_handle));
2503 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_scmanager_handle_0, LIBNDR_FLAG_REF_ALLOC);
2504 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.ServiceName));
2505 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.ServiceName));
2506 if (ndr_get_array_length(ndr, &r->in.ServiceName) > ndr_get_array_size(ndr, &r->in.ServiceName)) {
2507 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));
2509 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.ServiceName), sizeof(uint16_t)));
2510 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.ServiceName, ndr_get_array_length(ndr, &r->in.ServiceName), sizeof(uint16_t), CH_UTF16));
2511 NDR_CHECK(ndr_pull_svcctl_ServiceAccessMask(ndr, NDR_SCALARS, &r->in.access_mask));
2512 NDR_PULL_ALLOC(ndr, r->out.handle);
2513 ZERO_STRUCTP(r->out.handle);
2515 if (flags & NDR_OUT) {
2516 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
2517 NDR_PULL_ALLOC(ndr, r->out.handle);
2519 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
2520 NDR_PULL_SET_MEM_CTX(ndr, r->out.handle, LIBNDR_FLAG_REF_ALLOC);
2521 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->out.handle));
2522 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
2523 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
2525 return NDR_ERR_SUCCESS;
2528 _PUBLIC_ void ndr_print_svcctl_OpenServiceW(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_OpenServiceW *r)
2530 ndr_print_struct(ndr, name, "svcctl_OpenServiceW");
2532 if (flags & NDR_SET_VALUES) {
2533 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
2535 if (flags & NDR_IN) {
2536 ndr_print_struct(ndr, "in", "svcctl_OpenServiceW");
2538 ndr_print_ptr(ndr, "scmanager_handle", r->in.scmanager_handle);
2540 ndr_print_policy_handle(ndr, "scmanager_handle", r->in.scmanager_handle);
2542 ndr_print_string(ndr, "ServiceName", r->in.ServiceName);
2543 ndr_print_svcctl_ServiceAccessMask(ndr, "access_mask", r->in.access_mask);
2546 if (flags & NDR_OUT) {
2547 ndr_print_struct(ndr, "out", "svcctl_OpenServiceW");
2549 ndr_print_ptr(ndr, "handle", r->out.handle);
2551 ndr_print_policy_handle(ndr, "handle", r->out.handle);
2553 ndr_print_WERROR(ndr, "result", r->out.result);
2559 static enum ndr_err_code ndr_push_svcctl_QueryServiceConfigW(struct ndr_push *ndr, int flags, const struct svcctl_QueryServiceConfigW *r)
2561 if (flags & NDR_IN) {
2562 if (r->in.handle == NULL) {
2563 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
2565 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
2566 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.buf_size));
2568 if (flags & NDR_OUT) {
2569 if (r->out.query == NULL) {
2570 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
2572 NDR_CHECK(ndr_push_QUERY_SERVICE_CONFIG(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.query));
2573 if (r->out.bytes_needed == NULL) {
2574 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
2576 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.bytes_needed));
2577 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
2579 return NDR_ERR_SUCCESS;
2582 static enum ndr_err_code ndr_pull_svcctl_QueryServiceConfigW(struct ndr_pull *ndr, int flags, struct svcctl_QueryServiceConfigW *r)
2584 TALLOC_CTX *_mem_save_handle_0;
2585 TALLOC_CTX *_mem_save_query_0;
2586 TALLOC_CTX *_mem_save_bytes_needed_0;
2587 if (flags & NDR_IN) {
2588 ZERO_STRUCT(r->out);
2590 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
2591 NDR_PULL_ALLOC(ndr, r->in.handle);
2593 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
2594 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
2595 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
2596 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
2597 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.buf_size));
2598 if (r->in.buf_size < 0 || r->in.buf_size > 8192) {
2599 return ndr_pull_error(ndr, NDR_ERR_RANGE, "value out of range");
2601 NDR_PULL_ALLOC(ndr, r->out.query);
2602 ZERO_STRUCTP(r->out.query);
2603 NDR_PULL_ALLOC(ndr, r->out.bytes_needed);
2604 ZERO_STRUCTP(r->out.bytes_needed);
2606 if (flags & NDR_OUT) {
2607 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
2608 NDR_PULL_ALLOC(ndr, r->out.query);
2610 _mem_save_query_0 = NDR_PULL_GET_MEM_CTX(ndr);
2611 NDR_PULL_SET_MEM_CTX(ndr, r->out.query, LIBNDR_FLAG_REF_ALLOC);
2612 NDR_CHECK(ndr_pull_QUERY_SERVICE_CONFIG(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.query));
2613 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_query_0, LIBNDR_FLAG_REF_ALLOC);
2614 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
2615 NDR_PULL_ALLOC(ndr, r->out.bytes_needed);
2617 _mem_save_bytes_needed_0 = NDR_PULL_GET_MEM_CTX(ndr);
2618 NDR_PULL_SET_MEM_CTX(ndr, r->out.bytes_needed, LIBNDR_FLAG_REF_ALLOC);
2619 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.bytes_needed));
2620 if (*r->out.bytes_needed < 0 || *r->out.bytes_needed > 8192) {
2621 return ndr_pull_error(ndr, NDR_ERR_RANGE, "value out of range");
2623 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_bytes_needed_0, LIBNDR_FLAG_REF_ALLOC);
2624 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
2626 return NDR_ERR_SUCCESS;
2629 _PUBLIC_ void ndr_print_svcctl_QueryServiceConfigW(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_QueryServiceConfigW *r)
2631 ndr_print_struct(ndr, name, "svcctl_QueryServiceConfigW");
2633 if (flags & NDR_SET_VALUES) {
2634 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
2636 if (flags & NDR_IN) {
2637 ndr_print_struct(ndr, "in", "svcctl_QueryServiceConfigW");
2639 ndr_print_ptr(ndr, "handle", r->in.handle);
2641 ndr_print_policy_handle(ndr, "handle", r->in.handle);
2643 ndr_print_uint32(ndr, "buf_size", r->in.buf_size);
2646 if (flags & NDR_OUT) {
2647 ndr_print_struct(ndr, "out", "svcctl_QueryServiceConfigW");
2649 ndr_print_ptr(ndr, "query", r->out.query);
2651 ndr_print_QUERY_SERVICE_CONFIG(ndr, "query", r->out.query);
2653 ndr_print_ptr(ndr, "bytes_needed", r->out.bytes_needed);
2655 ndr_print_uint32(ndr, "bytes_needed", *r->out.bytes_needed);
2657 ndr_print_WERROR(ndr, "result", r->out.result);
2663 static enum ndr_err_code ndr_push_svcctl_QueryServiceLockStatusW(struct ndr_push *ndr, int flags, const struct svcctl_QueryServiceLockStatusW *r)
2665 if (flags & NDR_IN) {
2666 if (r->in.handle == NULL) {
2667 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
2669 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
2670 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.buf_size));
2672 if (flags & NDR_OUT) {
2673 if (r->out.lock_status == NULL) {
2674 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
2676 NDR_CHECK(ndr_push_SERVICE_LOCK_STATUS(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.lock_status));
2677 if (r->out.required_buf_size == NULL) {
2678 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
2680 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.required_buf_size));
2681 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
2683 return NDR_ERR_SUCCESS;
2686 static enum ndr_err_code ndr_pull_svcctl_QueryServiceLockStatusW(struct ndr_pull *ndr, int flags, struct svcctl_QueryServiceLockStatusW *r)
2688 TALLOC_CTX *_mem_save_handle_0;
2689 TALLOC_CTX *_mem_save_lock_status_0;
2690 TALLOC_CTX *_mem_save_required_buf_size_0;
2691 if (flags & NDR_IN) {
2692 ZERO_STRUCT(r->out);
2694 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
2695 NDR_PULL_ALLOC(ndr, r->in.handle);
2697 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
2698 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
2699 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
2700 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
2701 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.buf_size));
2702 NDR_PULL_ALLOC(ndr, r->out.lock_status);
2703 ZERO_STRUCTP(r->out.lock_status);
2704 NDR_PULL_ALLOC(ndr, r->out.required_buf_size);
2705 ZERO_STRUCTP(r->out.required_buf_size);
2707 if (flags & NDR_OUT) {
2708 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
2709 NDR_PULL_ALLOC(ndr, r->out.lock_status);
2711 _mem_save_lock_status_0 = NDR_PULL_GET_MEM_CTX(ndr);
2712 NDR_PULL_SET_MEM_CTX(ndr, r->out.lock_status, LIBNDR_FLAG_REF_ALLOC);
2713 NDR_CHECK(ndr_pull_SERVICE_LOCK_STATUS(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.lock_status));
2714 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_lock_status_0, LIBNDR_FLAG_REF_ALLOC);
2715 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
2716 NDR_PULL_ALLOC(ndr, r->out.required_buf_size);
2718 _mem_save_required_buf_size_0 = NDR_PULL_GET_MEM_CTX(ndr);
2719 NDR_PULL_SET_MEM_CTX(ndr, r->out.required_buf_size, LIBNDR_FLAG_REF_ALLOC);
2720 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.required_buf_size));
2721 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_required_buf_size_0, LIBNDR_FLAG_REF_ALLOC);
2722 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
2724 return NDR_ERR_SUCCESS;
2727 _PUBLIC_ void ndr_print_svcctl_QueryServiceLockStatusW(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_QueryServiceLockStatusW *r)
2729 ndr_print_struct(ndr, name, "svcctl_QueryServiceLockStatusW");
2731 if (flags & NDR_SET_VALUES) {
2732 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
2734 if (flags & NDR_IN) {
2735 ndr_print_struct(ndr, "in", "svcctl_QueryServiceLockStatusW");
2737 ndr_print_ptr(ndr, "handle", r->in.handle);
2739 ndr_print_policy_handle(ndr, "handle", r->in.handle);
2741 ndr_print_uint32(ndr, "buf_size", r->in.buf_size);
2744 if (flags & NDR_OUT) {
2745 ndr_print_struct(ndr, "out", "svcctl_QueryServiceLockStatusW");
2747 ndr_print_ptr(ndr, "lock_status", r->out.lock_status);
2749 ndr_print_SERVICE_LOCK_STATUS(ndr, "lock_status", r->out.lock_status);
2751 ndr_print_ptr(ndr, "required_buf_size", r->out.required_buf_size);
2753 ndr_print_uint32(ndr, "required_buf_size", *r->out.required_buf_size);
2755 ndr_print_WERROR(ndr, "result", r->out.result);
2761 static enum ndr_err_code ndr_push_svcctl_StartServiceW(struct ndr_push *ndr, int flags, const struct svcctl_StartServiceW *r)
2763 if (flags & NDR_IN) {
2764 if (r->in.handle == NULL) {
2765 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
2767 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
2768 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.NumArgs));
2769 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.Arguments));
2770 if (r->in.Arguments) {
2771 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.Arguments, CH_UTF16)));
2772 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
2773 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.Arguments, CH_UTF16)));
2774 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.Arguments, ndr_charset_length(r->in.Arguments, CH_UTF16), sizeof(uint16_t), CH_UTF16));
2777 if (flags & NDR_OUT) {
2778 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
2780 return NDR_ERR_SUCCESS;
2783 static enum ndr_err_code ndr_pull_svcctl_StartServiceW(struct ndr_pull *ndr, int flags, struct svcctl_StartServiceW *r)
2785 uint32_t _ptr_Arguments;
2786 TALLOC_CTX *_mem_save_handle_0;
2787 TALLOC_CTX *_mem_save_Arguments_0;
2788 if (flags & NDR_IN) {
2789 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
2790 NDR_PULL_ALLOC(ndr, r->in.handle);
2792 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
2793 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
2794 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
2795 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
2796 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.NumArgs));
2797 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_Arguments));
2798 if (_ptr_Arguments) {
2799 NDR_PULL_ALLOC(ndr, r->in.Arguments);
2801 r->in.Arguments = NULL;
2803 if (r->in.Arguments) {
2804 _mem_save_Arguments_0 = NDR_PULL_GET_MEM_CTX(ndr);
2805 NDR_PULL_SET_MEM_CTX(ndr, r->in.Arguments, 0);
2806 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.Arguments));
2807 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.Arguments));
2808 if (ndr_get_array_length(ndr, &r->in.Arguments) > ndr_get_array_size(ndr, &r->in.Arguments)) {
2809 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));
2811 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.Arguments), sizeof(uint16_t)));
2812 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.Arguments, ndr_get_array_length(ndr, &r->in.Arguments), sizeof(uint16_t), CH_UTF16));
2813 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_Arguments_0, 0);
2816 if (flags & NDR_OUT) {
2817 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
2819 return NDR_ERR_SUCCESS;
2822 _PUBLIC_ void ndr_print_svcctl_StartServiceW(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_StartServiceW *r)
2824 ndr_print_struct(ndr, name, "svcctl_StartServiceW");
2826 if (flags & NDR_SET_VALUES) {
2827 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
2829 if (flags & NDR_IN) {
2830 ndr_print_struct(ndr, "in", "svcctl_StartServiceW");
2832 ndr_print_ptr(ndr, "handle", r->in.handle);
2834 ndr_print_policy_handle(ndr, "handle", r->in.handle);
2836 ndr_print_uint32(ndr, "NumArgs", r->in.NumArgs);
2837 ndr_print_ptr(ndr, "Arguments", r->in.Arguments);
2839 if (r->in.Arguments) {
2840 ndr_print_string(ndr, "Arguments", r->in.Arguments);
2845 if (flags & NDR_OUT) {
2846 ndr_print_struct(ndr, "out", "svcctl_StartServiceW");
2848 ndr_print_WERROR(ndr, "result", r->out.result);
2854 static enum ndr_err_code ndr_push_svcctl_GetServiceDisplayNameW(struct ndr_push *ndr, int flags, const struct svcctl_GetServiceDisplayNameW *r)
2856 if (flags & NDR_IN) {
2857 if (r->in.handle == NULL) {
2858 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
2860 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
2861 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.service_name));
2862 if (r->in.service_name) {
2863 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.service_name, CH_UTF16)));
2864 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
2865 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.service_name, CH_UTF16)));
2866 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));
2868 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.display_name_length));
2869 if (r->in.display_name_length) {
2870 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->in.display_name_length));
2873 if (flags & NDR_OUT) {
2874 if (r->out.display_name == NULL) {
2875 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
2877 NDR_CHECK(ndr_push_unique_ptr(ndr, *r->out.display_name));
2878 if (*r->out.display_name) {
2879 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(*r->out.display_name, CH_UTF16)));
2880 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
2881 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(*r->out.display_name, CH_UTF16)));
2882 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));
2884 NDR_CHECK(ndr_push_unique_ptr(ndr, r->out.display_name_length));
2885 if (r->out.display_name_length) {
2886 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.display_name_length));
2888 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
2890 return NDR_ERR_SUCCESS;
2893 static enum ndr_err_code ndr_pull_svcctl_GetServiceDisplayNameW(struct ndr_pull *ndr, int flags, struct svcctl_GetServiceDisplayNameW *r)
2895 uint32_t _ptr_service_name;
2896 uint32_t _ptr_display_name;
2897 uint32_t _ptr_display_name_length;
2898 TALLOC_CTX *_mem_save_handle_0;
2899 TALLOC_CTX *_mem_save_service_name_0;
2900 TALLOC_CTX *_mem_save_display_name_0;
2901 TALLOC_CTX *_mem_save_display_name_1;
2902 TALLOC_CTX *_mem_save_display_name_length_0;
2903 if (flags & NDR_IN) {
2904 ZERO_STRUCT(r->out);
2906 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
2907 NDR_PULL_ALLOC(ndr, r->in.handle);
2909 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
2910 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
2911 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
2912 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
2913 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_service_name));
2914 if (_ptr_service_name) {
2915 NDR_PULL_ALLOC(ndr, r->in.service_name);
2917 r->in.service_name = NULL;
2919 if (r->in.service_name) {
2920 _mem_save_service_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
2921 NDR_PULL_SET_MEM_CTX(ndr, r->in.service_name, 0);
2922 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.service_name));
2923 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.service_name));
2924 if (ndr_get_array_length(ndr, &r->in.service_name) > ndr_get_array_size(ndr, &r->in.service_name)) {
2925 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));
2927 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.service_name), sizeof(uint16_t)));
2928 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));
2929 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_service_name_0, 0);
2931 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_display_name_length));
2932 if (_ptr_display_name_length) {
2933 NDR_PULL_ALLOC(ndr, r->in.display_name_length);
2935 r->in.display_name_length = NULL;
2937 if (r->in.display_name_length) {
2938 _mem_save_display_name_length_0 = NDR_PULL_GET_MEM_CTX(ndr);
2939 NDR_PULL_SET_MEM_CTX(ndr, r->in.display_name_length, 0);
2940 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->in.display_name_length));
2941 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_display_name_length_0, 0);
2943 NDR_PULL_ALLOC(ndr, r->out.display_name);
2944 ZERO_STRUCTP(r->out.display_name);
2946 if (flags & NDR_OUT) {
2947 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
2948 NDR_PULL_ALLOC(ndr, r->out.display_name);
2950 _mem_save_display_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
2951 NDR_PULL_SET_MEM_CTX(ndr, r->out.display_name, LIBNDR_FLAG_REF_ALLOC);
2952 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_display_name));
2953 if (_ptr_display_name) {
2954 NDR_PULL_ALLOC(ndr, *r->out.display_name);
2956 *r->out.display_name = NULL;
2958 if (*r->out.display_name) {
2959 _mem_save_display_name_1 = NDR_PULL_GET_MEM_CTX(ndr);
2960 NDR_PULL_SET_MEM_CTX(ndr, *r->out.display_name, 0);
2961 NDR_CHECK(ndr_pull_array_size(ndr, r->out.display_name));
2962 NDR_CHECK(ndr_pull_array_length(ndr, r->out.display_name));
2963 if (ndr_get_array_length(ndr, r->out.display_name) > ndr_get_array_size(ndr, r->out.display_name)) {
2964 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));
2966 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, r->out.display_name), sizeof(uint16_t)));
2967 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));
2968 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_display_name_1, 0);
2970 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_display_name_0, LIBNDR_FLAG_REF_ALLOC);
2971 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_display_name_length));
2972 if (_ptr_display_name_length) {
2973 NDR_PULL_ALLOC(ndr, r->out.display_name_length);
2975 r->out.display_name_length = NULL;
2977 if (r->out.display_name_length) {
2978 _mem_save_display_name_length_0 = NDR_PULL_GET_MEM_CTX(ndr);
2979 NDR_PULL_SET_MEM_CTX(ndr, r->out.display_name_length, 0);
2980 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.display_name_length));
2981 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_display_name_length_0, 0);
2983 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
2985 return NDR_ERR_SUCCESS;
2988 _PUBLIC_ void ndr_print_svcctl_GetServiceDisplayNameW(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_GetServiceDisplayNameW *r)
2990 ndr_print_struct(ndr, name, "svcctl_GetServiceDisplayNameW");
2992 if (flags & NDR_SET_VALUES) {
2993 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
2995 if (flags & NDR_IN) {
2996 ndr_print_struct(ndr, "in", "svcctl_GetServiceDisplayNameW");
2998 ndr_print_ptr(ndr, "handle", r->in.handle);
3000 ndr_print_policy_handle(ndr, "handle", r->in.handle);
3002 ndr_print_ptr(ndr, "service_name", r->in.service_name);
3004 if (r->in.service_name) {
3005 ndr_print_string(ndr, "service_name", r->in.service_name);
3008 ndr_print_ptr(ndr, "display_name_length", r->in.display_name_length);
3010 if (r->in.display_name_length) {
3011 ndr_print_uint32(ndr, "display_name_length", *r->in.display_name_length);
3016 if (flags & NDR_OUT) {
3017 ndr_print_struct(ndr, "out", "svcctl_GetServiceDisplayNameW");
3019 ndr_print_ptr(ndr, "display_name", r->out.display_name);
3021 ndr_print_ptr(ndr, "display_name", *r->out.display_name);
3023 if (*r->out.display_name) {
3024 ndr_print_string(ndr, "display_name", *r->out.display_name);
3028 ndr_print_ptr(ndr, "display_name_length", r->out.display_name_length);
3030 if (r->out.display_name_length) {
3031 ndr_print_uint32(ndr, "display_name_length", *r->out.display_name_length);
3034 ndr_print_WERROR(ndr, "result", r->out.result);
3040 static enum ndr_err_code ndr_push_svcctl_GetServiceKeyNameW(struct ndr_push *ndr, int flags, const struct svcctl_GetServiceKeyNameW *r)
3042 if (flags & NDR_IN) {
3043 if (r->in.handle == NULL) {
3044 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
3046 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
3047 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.service_name));
3048 if (r->in.service_name) {
3049 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.service_name, CH_UTF16)));
3050 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
3051 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.service_name, CH_UTF16)));
3052 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));
3054 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.display_name_length));
3055 if (r->in.display_name_length) {
3056 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->in.display_name_length));
3059 if (flags & NDR_OUT) {
3060 if (r->out.key_name == NULL) {
3061 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
3063 NDR_CHECK(ndr_push_unique_ptr(ndr, *r->out.key_name));
3064 if (*r->out.key_name) {
3065 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(*r->out.key_name, CH_UTF16)));
3066 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
3067 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(*r->out.key_name, CH_UTF16)));
3068 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));
3070 NDR_CHECK(ndr_push_unique_ptr(ndr, r->out.display_name_length));
3071 if (r->out.display_name_length) {
3072 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.display_name_length));
3074 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
3076 return NDR_ERR_SUCCESS;
3079 static enum ndr_err_code ndr_pull_svcctl_GetServiceKeyNameW(struct ndr_pull *ndr, int flags, struct svcctl_GetServiceKeyNameW *r)
3081 uint32_t _ptr_service_name;
3082 uint32_t _ptr_key_name;
3083 uint32_t _ptr_display_name_length;
3084 TALLOC_CTX *_mem_save_handle_0;
3085 TALLOC_CTX *_mem_save_service_name_0;
3086 TALLOC_CTX *_mem_save_key_name_0;
3087 TALLOC_CTX *_mem_save_key_name_1;
3088 TALLOC_CTX *_mem_save_display_name_length_0;
3089 if (flags & NDR_IN) {
3090 ZERO_STRUCT(r->out);
3092 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
3093 NDR_PULL_ALLOC(ndr, r->in.handle);
3095 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
3096 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
3097 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
3098 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
3099 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_service_name));
3100 if (_ptr_service_name) {
3101 NDR_PULL_ALLOC(ndr, r->in.service_name);
3103 r->in.service_name = NULL;
3105 if (r->in.service_name) {
3106 _mem_save_service_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
3107 NDR_PULL_SET_MEM_CTX(ndr, r->in.service_name, 0);
3108 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.service_name));
3109 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.service_name));
3110 if (ndr_get_array_length(ndr, &r->in.service_name) > ndr_get_array_size(ndr, &r->in.service_name)) {
3111 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));
3113 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.service_name), sizeof(uint16_t)));
3114 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));
3115 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_service_name_0, 0);
3117 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_display_name_length));
3118 if (_ptr_display_name_length) {
3119 NDR_PULL_ALLOC(ndr, r->in.display_name_length);
3121 r->in.display_name_length = NULL;
3123 if (r->in.display_name_length) {
3124 _mem_save_display_name_length_0 = NDR_PULL_GET_MEM_CTX(ndr);
3125 NDR_PULL_SET_MEM_CTX(ndr, r->in.display_name_length, 0);
3126 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->in.display_name_length));
3127 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_display_name_length_0, 0);
3129 NDR_PULL_ALLOC(ndr, r->out.key_name);
3130 ZERO_STRUCTP(r->out.key_name);
3132 if (flags & NDR_OUT) {
3133 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
3134 NDR_PULL_ALLOC(ndr, r->out.key_name);
3136 _mem_save_key_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
3137 NDR_PULL_SET_MEM_CTX(ndr, r->out.key_name, LIBNDR_FLAG_REF_ALLOC);
3138 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_key_name));
3139 if (_ptr_key_name) {
3140 NDR_PULL_ALLOC(ndr, *r->out.key_name);
3142 *r->out.key_name = NULL;
3144 if (*r->out.key_name) {
3145 _mem_save_key_name_1 = NDR_PULL_GET_MEM_CTX(ndr);
3146 NDR_PULL_SET_MEM_CTX(ndr, *r->out.key_name, 0);
3147 NDR_CHECK(ndr_pull_array_size(ndr, r->out.key_name));
3148 NDR_CHECK(ndr_pull_array_length(ndr, r->out.key_name));
3149 if (ndr_get_array_length(ndr, r->out.key_name) > ndr_get_array_size(ndr, r->out.key_name)) {
3150 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));
3152 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, r->out.key_name), sizeof(uint16_t)));
3153 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));
3154 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_key_name_1, 0);
3156 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_key_name_0, LIBNDR_FLAG_REF_ALLOC);
3157 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_display_name_length));
3158 if (_ptr_display_name_length) {
3159 NDR_PULL_ALLOC(ndr, r->out.display_name_length);
3161 r->out.display_name_length = NULL;
3163 if (r->out.display_name_length) {
3164 _mem_save_display_name_length_0 = NDR_PULL_GET_MEM_CTX(ndr);
3165 NDR_PULL_SET_MEM_CTX(ndr, r->out.display_name_length, 0);
3166 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.display_name_length));
3167 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_display_name_length_0, 0);
3169 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
3171 return NDR_ERR_SUCCESS;
3174 _PUBLIC_ void ndr_print_svcctl_GetServiceKeyNameW(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_GetServiceKeyNameW *r)
3176 ndr_print_struct(ndr, name, "svcctl_GetServiceKeyNameW");
3178 if (flags & NDR_SET_VALUES) {
3179 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
3181 if (flags & NDR_IN) {
3182 ndr_print_struct(ndr, "in", "svcctl_GetServiceKeyNameW");
3184 ndr_print_ptr(ndr, "handle", r->in.handle);
3186 ndr_print_policy_handle(ndr, "handle", r->in.handle);
3188 ndr_print_ptr(ndr, "service_name", r->in.service_name);
3190 if (r->in.service_name) {
3191 ndr_print_string(ndr, "service_name", r->in.service_name);
3194 ndr_print_ptr(ndr, "display_name_length", r->in.display_name_length);
3196 if (r->in.display_name_length) {
3197 ndr_print_uint32(ndr, "display_name_length", *r->in.display_name_length);
3202 if (flags & NDR_OUT) {
3203 ndr_print_struct(ndr, "out", "svcctl_GetServiceKeyNameW");
3205 ndr_print_ptr(ndr, "key_name", r->out.key_name);
3207 ndr_print_ptr(ndr, "key_name", *r->out.key_name);
3209 if (*r->out.key_name) {
3210 ndr_print_string(ndr, "key_name", *r->out.key_name);
3214 ndr_print_ptr(ndr, "display_name_length", r->out.display_name_length);
3216 if (r->out.display_name_length) {
3217 ndr_print_uint32(ndr, "display_name_length", *r->out.display_name_length);
3220 ndr_print_WERROR(ndr, "result", r->out.result);
3226 static enum ndr_err_code ndr_push_svcctl_SCSetServiceBitsA(struct ndr_push *ndr, int flags, const struct svcctl_SCSetServiceBitsA *r)
3228 if (flags & NDR_IN) {
3229 if (r->in.handle == NULL) {
3230 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
3232 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
3233 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.bits));
3234 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.bitson));
3235 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.immediate));
3237 if (flags & NDR_OUT) {
3238 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
3240 return NDR_ERR_SUCCESS;
3243 static enum ndr_err_code ndr_pull_svcctl_SCSetServiceBitsA(struct ndr_pull *ndr, int flags, struct svcctl_SCSetServiceBitsA *r)
3245 TALLOC_CTX *_mem_save_handle_0;
3246 if (flags & NDR_IN) {
3247 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
3248 NDR_PULL_ALLOC(ndr, r->in.handle);
3250 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
3251 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
3252 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
3253 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
3254 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.bits));
3255 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.bitson));
3256 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.immediate));
3258 if (flags & NDR_OUT) {
3259 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
3261 return NDR_ERR_SUCCESS;
3264 _PUBLIC_ void ndr_print_svcctl_SCSetServiceBitsA(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_SCSetServiceBitsA *r)
3266 ndr_print_struct(ndr, name, "svcctl_SCSetServiceBitsA");
3268 if (flags & NDR_SET_VALUES) {
3269 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
3271 if (flags & NDR_IN) {
3272 ndr_print_struct(ndr, "in", "svcctl_SCSetServiceBitsA");
3274 ndr_print_ptr(ndr, "handle", r->in.handle);
3276 ndr_print_policy_handle(ndr, "handle", r->in.handle);
3278 ndr_print_uint32(ndr, "bits", r->in.bits);
3279 ndr_print_uint32(ndr, "bitson", r->in.bitson);
3280 ndr_print_uint32(ndr, "immediate", r->in.immediate);
3283 if (flags & NDR_OUT) {
3284 ndr_print_struct(ndr, "out", "svcctl_SCSetServiceBitsA");
3286 ndr_print_WERROR(ndr, "result", r->out.result);
3292 static enum ndr_err_code ndr_push_svcctl_ChangeServiceConfigA(struct ndr_push *ndr, int flags, const struct svcctl_ChangeServiceConfigA *r)
3294 if (flags & NDR_IN) {
3295 if (r->in.handle == NULL) {
3296 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
3298 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
3299 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.type));
3300 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.start));
3301 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.error));
3302 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.binary_path));
3303 if (r->in.binary_path) {
3304 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.binary_path, CH_UTF16)));
3305 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
3306 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.binary_path, CH_UTF16)));
3307 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));
3309 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.load_order_group));
3310 if (r->in.load_order_group) {
3311 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.load_order_group, CH_UTF16)));
3312 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
3313 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.load_order_group, CH_UTF16)));
3314 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));
3316 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.dependencies));
3317 if (r->in.dependencies) {
3318 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.dependencies, CH_UTF16)));
3319 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
3320 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.dependencies, CH_UTF16)));
3321 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.dependencies, ndr_charset_length(r->in.dependencies, CH_UTF16), sizeof(uint16_t), CH_UTF16));
3323 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.service_start_name));
3324 if (r->in.service_start_name) {
3325 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.service_start_name, CH_UTF16)));
3326 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
3327 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.service_start_name, CH_UTF16)));
3328 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));
3330 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.password));
3331 if (r->in.password) {
3332 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.password, CH_UTF16)));
3333 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
3334 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.password, CH_UTF16)));
3335 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.password, ndr_charset_length(r->in.password, CH_UTF16), sizeof(uint16_t), CH_UTF16));
3337 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.display_name));
3338 if (r->in.display_name) {
3339 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.display_name, CH_UTF16)));
3340 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
3341 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.display_name, CH_UTF16)));
3342 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));
3345 if (flags & NDR_OUT) {
3346 if (r->out.tag_id == NULL) {
3347 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
3349 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.tag_id));
3350 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
3352 return NDR_ERR_SUCCESS;
3355 static enum ndr_err_code ndr_pull_svcctl_ChangeServiceConfigA(struct ndr_pull *ndr, int flags, struct svcctl_ChangeServiceConfigA *r)
3357 uint32_t _ptr_binary_path;
3358 uint32_t _ptr_load_order_group;
3359 uint32_t _ptr_dependencies;
3360 uint32_t _ptr_service_start_name;
3361 uint32_t _ptr_password;
3362 uint32_t _ptr_display_name;
3363 TALLOC_CTX *_mem_save_handle_0;
3364 TALLOC_CTX *_mem_save_binary_path_0;
3365 TALLOC_CTX *_mem_save_load_order_group_0;
3366 TALLOC_CTX *_mem_save_tag_id_0;
3367 TALLOC_CTX *_mem_save_dependencies_0;
3368 TALLOC_CTX *_mem_save_service_start_name_0;
3369 TALLOC_CTX *_mem_save_password_0;
3370 TALLOC_CTX *_mem_save_display_name_0;
3371 if (flags & NDR_IN) {
3372 ZERO_STRUCT(r->out);
3374 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
3375 NDR_PULL_ALLOC(ndr, r->in.handle);
3377 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
3378 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
3379 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
3380 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
3381 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.type));
3382 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.start));
3383 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.error));
3384 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_binary_path));
3385 if (_ptr_binary_path) {
3386 NDR_PULL_ALLOC(ndr, r->in.binary_path);
3388 r->in.binary_path = NULL;
3390 if (r->in.binary_path) {
3391 _mem_save_binary_path_0 = NDR_PULL_GET_MEM_CTX(ndr);
3392 NDR_PULL_SET_MEM_CTX(ndr, r->in.binary_path, 0);
3393 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.binary_path));
3394 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.binary_path));
3395 if (ndr_get_array_length(ndr, &r->in.binary_path) > ndr_get_array_size(ndr, &r->in.binary_path)) {
3396 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));
3398 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.binary_path), sizeof(uint16_t)));
3399 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));
3400 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_binary_path_0, 0);
3402 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_load_order_group));
3403 if (_ptr_load_order_group) {
3404 NDR_PULL_ALLOC(ndr, r->in.load_order_group);
3406 r->in.load_order_group = NULL;
3408 if (r->in.load_order_group) {
3409 _mem_save_load_order_group_0 = NDR_PULL_GET_MEM_CTX(ndr);
3410 NDR_PULL_SET_MEM_CTX(ndr, r->in.load_order_group, 0);
3411 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.load_order_group));
3412 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.load_order_group));
3413 if (ndr_get_array_length(ndr, &r->in.load_order_group) > ndr_get_array_size(ndr, &r->in.load_order_group)) {
3414 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));
3416 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.load_order_group), sizeof(uint16_t)));
3417 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));
3418 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_load_order_group_0, 0);
3420 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_dependencies));
3421 if (_ptr_dependencies) {
3422 NDR_PULL_ALLOC(ndr, r->in.dependencies);
3424 r->in.dependencies = NULL;
3426 if (r->in.dependencies) {
3427 _mem_save_dependencies_0 = NDR_PULL_GET_MEM_CTX(ndr);
3428 NDR_PULL_SET_MEM_CTX(ndr, r->in.dependencies, 0);
3429 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.dependencies));
3430 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.dependencies));
3431 if (ndr_get_array_length(ndr, &r->in.dependencies) > ndr_get_array_size(ndr, &r->in.dependencies)) {
3432 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));
3434 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.dependencies), sizeof(uint16_t)));
3435 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.dependencies, ndr_get_array_length(ndr, &r->in.dependencies), sizeof(uint16_t), CH_UTF16));
3436 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_dependencies_0, 0);
3438 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_service_start_name));
3439 if (_ptr_service_start_name) {
3440 NDR_PULL_ALLOC(ndr, r->in.service_start_name);
3442 r->in.service_start_name = NULL;
3444 if (r->in.service_start_name) {
3445 _mem_save_service_start_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
3446 NDR_PULL_SET_MEM_CTX(ndr, r->in.service_start_name, 0);
3447 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.service_start_name));
3448 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.service_start_name));
3449 if (ndr_get_array_length(ndr, &r->in.service_start_name) > ndr_get_array_size(ndr, &r->in.service_start_name)) {
3450 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));
3452 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.service_start_name), sizeof(uint16_t)));
3453 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));
3454 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_service_start_name_0, 0);
3456 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_password));
3457 if (_ptr_password) {
3458 NDR_PULL_ALLOC(ndr, r->in.password);
3460 r->in.password = NULL;
3462 if (r->in.password) {
3463 _mem_save_password_0 = NDR_PULL_GET_MEM_CTX(ndr);
3464 NDR_PULL_SET_MEM_CTX(ndr, r->in.password, 0);
3465 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.password));
3466 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.password));
3467 if (ndr_get_array_length(ndr, &r->in.password) > ndr_get_array_size(ndr, &r->in.password)) {
3468 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));
3470 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.password), sizeof(uint16_t)));
3471 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.password, ndr_get_array_length(ndr, &r->in.password), sizeof(uint16_t), CH_UTF16));
3472 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_password_0, 0);
3474 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_display_name));
3475 if (_ptr_display_name) {
3476 NDR_PULL_ALLOC(ndr, r->in.display_name);
3478 r->in.display_name = NULL;
3480 if (r->in.display_name) {
3481 _mem_save_display_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
3482 NDR_PULL_SET_MEM_CTX(ndr, r->in.display_name, 0);
3483 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.display_name));
3484 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.display_name));
3485 if (ndr_get_array_length(ndr, &r->in.display_name) > ndr_get_array_size(ndr, &r->in.display_name)) {
3486 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));
3488 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.display_name), sizeof(uint16_t)));
3489 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));
3490 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_display_name_0, 0);
3492 NDR_PULL_ALLOC(ndr, r->out.tag_id);
3493 ZERO_STRUCTP(r->out.tag_id);
3495 if (flags & NDR_OUT) {
3496 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
3497 NDR_PULL_ALLOC(ndr, r->out.tag_id);
3499 _mem_save_tag_id_0 = NDR_PULL_GET_MEM_CTX(ndr);
3500 NDR_PULL_SET_MEM_CTX(ndr, r->out.tag_id, LIBNDR_FLAG_REF_ALLOC);
3501 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.tag_id));
3502 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_tag_id_0, LIBNDR_FLAG_REF_ALLOC);
3503 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
3505 return NDR_ERR_SUCCESS;
3508 _PUBLIC_ void ndr_print_svcctl_ChangeServiceConfigA(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_ChangeServiceConfigA *r)
3510 ndr_print_struct(ndr, name, "svcctl_ChangeServiceConfigA");
3512 if (flags & NDR_SET_VALUES) {
3513 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
3515 if (flags & NDR_IN) {
3516 ndr_print_struct(ndr, "in", "svcctl_ChangeServiceConfigA");
3518 ndr_print_ptr(ndr, "handle", r->in.handle);
3520 ndr_print_policy_handle(ndr, "handle", r->in.handle);
3522 ndr_print_uint32(ndr, "type", r->in.type);
3523 ndr_print_uint32(ndr, "start", r->in.start);
3524 ndr_print_uint32(ndr, "error", r->in.error);
3525 ndr_print_ptr(ndr, "binary_path", r->in.binary_path);
3527 if (r->in.binary_path) {
3528 ndr_print_string(ndr, "binary_path", r->in.binary_path);
3531 ndr_print_ptr(ndr, "load_order_group", r->in.load_order_group);
3533 if (r->in.load_order_group) {
3534 ndr_print_string(ndr, "load_order_group", r->in.load_order_group);
3537 ndr_print_ptr(ndr, "dependencies", r->in.dependencies);
3539 if (r->in.dependencies) {
3540 ndr_print_string(ndr, "dependencies", r->in.dependencies);
3543 ndr_print_ptr(ndr, "service_start_name", r->in.service_start_name);
3545 if (r->in.service_start_name) {
3546 ndr_print_string(ndr, "service_start_name", r->in.service_start_name);
3549 ndr_print_ptr(ndr, "password", r->in.password);
3551 if (r->in.password) {
3552 ndr_print_string(ndr, "password", r->in.password);
3555 ndr_print_ptr(ndr, "display_name", r->in.display_name);
3557 if (r->in.display_name) {
3558 ndr_print_string(ndr, "display_name", r->in.display_name);
3563 if (flags & NDR_OUT) {
3564 ndr_print_struct(ndr, "out", "svcctl_ChangeServiceConfigA");
3566 ndr_print_ptr(ndr, "tag_id", r->out.tag_id);
3568 ndr_print_uint32(ndr, "tag_id", *r->out.tag_id);
3570 ndr_print_WERROR(ndr, "result", r->out.result);
3576 static enum ndr_err_code ndr_push_svcctl_CreateServiceA(struct ndr_push *ndr, int flags, const struct svcctl_CreateServiceA *r)
3578 if (flags & NDR_IN) {
3579 if (r->in.handle == NULL) {
3580 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
3582 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
3583 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.ServiceName));
3584 if (r->in.ServiceName) {
3585 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.ServiceName, CH_UTF16)));
3586 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
3587 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.ServiceName, CH_UTF16)));
3588 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.ServiceName, ndr_charset_length(r->in.ServiceName, CH_UTF16), sizeof(uint16_t), CH_UTF16));
3590 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.DisplayName));
3591 if (r->in.DisplayName) {
3592 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.DisplayName, CH_UTF16)));
3593 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
3594 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.DisplayName, CH_UTF16)));
3595 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.DisplayName, ndr_charset_length(r->in.DisplayName, CH_UTF16), sizeof(uint16_t), CH_UTF16));
3597 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.desired_access));
3598 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.type));
3599 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.start_type));
3600 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.error_control));
3601 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.binary_path));
3602 if (r->in.binary_path) {
3603 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.binary_path, CH_UTF16)));
3604 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
3605 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.binary_path, CH_UTF16)));
3606 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));
3608 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.LoadOrderGroupKey));
3609 if (r->in.LoadOrderGroupKey) {
3610 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.LoadOrderGroupKey, CH_UTF16)));
3611 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
3612 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.LoadOrderGroupKey, CH_UTF16)));
3613 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.LoadOrderGroupKey, ndr_charset_length(r->in.LoadOrderGroupKey, CH_UTF16), sizeof(uint16_t), CH_UTF16));
3615 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.dependencies));
3616 if (r->in.dependencies) {
3617 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.dependencies, CH_UTF16)));
3618 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
3619 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.dependencies, CH_UTF16)));
3620 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.dependencies, ndr_charset_length(r->in.dependencies, CH_UTF16), sizeof(uint16_t), CH_UTF16));
3622 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.service_start_name));
3623 if (r->in.service_start_name) {
3624 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.service_start_name, CH_UTF16)));
3625 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
3626 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.service_start_name, CH_UTF16)));
3627 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));
3629 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.password));
3630 if (r->in.password) {
3631 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.password, CH_UTF16)));
3632 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
3633 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.password, CH_UTF16)));
3634 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.password, ndr_charset_length(r->in.password, CH_UTF16), sizeof(uint16_t), CH_UTF16));
3637 if (flags & NDR_OUT) {
3638 NDR_CHECK(ndr_push_unique_ptr(ndr, r->out.TagId));
3640 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.TagId));
3642 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
3644 return NDR_ERR_SUCCESS;
3647 static enum ndr_err_code ndr_pull_svcctl_CreateServiceA(struct ndr_pull *ndr, int flags, struct svcctl_CreateServiceA *r)
3649 uint32_t _ptr_ServiceName;
3650 uint32_t _ptr_DisplayName;
3651 uint32_t _ptr_binary_path;
3652 uint32_t _ptr_LoadOrderGroupKey;
3653 uint32_t _ptr_TagId;
3654 uint32_t _ptr_dependencies;
3655 uint32_t _ptr_service_start_name;
3656 uint32_t _ptr_password;
3657 TALLOC_CTX *_mem_save_handle_0;
3658 TALLOC_CTX *_mem_save_ServiceName_0;
3659 TALLOC_CTX *_mem_save_DisplayName_0;
3660 TALLOC_CTX *_mem_save_binary_path_0;
3661 TALLOC_CTX *_mem_save_LoadOrderGroupKey_0;
3662 TALLOC_CTX *_mem_save_TagId_0;
3663 TALLOC_CTX *_mem_save_dependencies_0;
3664 TALLOC_CTX *_mem_save_service_start_name_0;
3665 TALLOC_CTX *_mem_save_password_0;
3666 if (flags & NDR_IN) {
3667 ZERO_STRUCT(r->out);
3669 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
3670 NDR_PULL_ALLOC(ndr, r->in.handle);
3672 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
3673 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
3674 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
3675 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
3676 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_ServiceName));
3677 if (_ptr_ServiceName) {
3678 NDR_PULL_ALLOC(ndr, r->in.ServiceName);
3680 r->in.ServiceName = NULL;
3682 if (r->in.ServiceName) {
3683 _mem_save_ServiceName_0 = NDR_PULL_GET_MEM_CTX(ndr);
3684 NDR_PULL_SET_MEM_CTX(ndr, r->in.ServiceName, 0);
3685 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.ServiceName));
3686 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.ServiceName));
3687 if (ndr_get_array_length(ndr, &r->in.ServiceName) > ndr_get_array_size(ndr, &r->in.ServiceName)) {
3688 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));
3690 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.ServiceName), sizeof(uint16_t)));
3691 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.ServiceName, ndr_get_array_length(ndr, &r->in.ServiceName), sizeof(uint16_t), CH_UTF16));
3692 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_ServiceName_0, 0);
3694 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_DisplayName));
3695 if (_ptr_DisplayName) {
3696 NDR_PULL_ALLOC(ndr, r->in.DisplayName);
3698 r->in.DisplayName = NULL;
3700 if (r->in.DisplayName) {
3701 _mem_save_DisplayName_0 = NDR_PULL_GET_MEM_CTX(ndr);
3702 NDR_PULL_SET_MEM_CTX(ndr, r->in.DisplayName, 0);
3703 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.DisplayName));
3704 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.DisplayName));
3705 if (ndr_get_array_length(ndr, &r->in.DisplayName) > ndr_get_array_size(ndr, &r->in.DisplayName)) {
3706 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));
3708 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.DisplayName), sizeof(uint16_t)));
3709 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.DisplayName, ndr_get_array_length(ndr, &r->in.DisplayName), sizeof(uint16_t), CH_UTF16));
3710 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_DisplayName_0, 0);
3712 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.desired_access));
3713 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.type));
3714 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.start_type));
3715 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.error_control));
3716 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_binary_path));
3717 if (_ptr_binary_path) {
3718 NDR_PULL_ALLOC(ndr, r->in.binary_path);
3720 r->in.binary_path = NULL;
3722 if (r->in.binary_path) {
3723 _mem_save_binary_path_0 = NDR_PULL_GET_MEM_CTX(ndr);
3724 NDR_PULL_SET_MEM_CTX(ndr, r->in.binary_path, 0);
3725 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.binary_path));
3726 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.binary_path));
3727 if (ndr_get_array_length(ndr, &r->in.binary_path) > ndr_get_array_size(ndr, &r->in.binary_path)) {
3728 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));
3730 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.binary_path), sizeof(uint16_t)));
3731 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));
3732 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_binary_path_0, 0);
3734 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_LoadOrderGroupKey));
3735 if (_ptr_LoadOrderGroupKey) {
3736 NDR_PULL_ALLOC(ndr, r->in.LoadOrderGroupKey);
3738 r->in.LoadOrderGroupKey = NULL;
3740 if (r->in.LoadOrderGroupKey) {
3741 _mem_save_LoadOrderGroupKey_0 = NDR_PULL_GET_MEM_CTX(ndr);
3742 NDR_PULL_SET_MEM_CTX(ndr, r->in.LoadOrderGroupKey, 0);
3743 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.LoadOrderGroupKey));
3744 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.LoadOrderGroupKey));
3745 if (ndr_get_array_length(ndr, &r->in.LoadOrderGroupKey) > ndr_get_array_size(ndr, &r->in.LoadOrderGroupKey)) {
3746 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));
3748 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.LoadOrderGroupKey), sizeof(uint16_t)));
3749 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.LoadOrderGroupKey, ndr_get_array_length(ndr, &r->in.LoadOrderGroupKey), sizeof(uint16_t), CH_UTF16));
3750 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_LoadOrderGroupKey_0, 0);
3752 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_dependencies));
3753 if (_ptr_dependencies) {
3754 NDR_PULL_ALLOC(ndr, r->in.dependencies);
3756 r->in.dependencies = NULL;
3758 if (r->in.dependencies) {
3759 _mem_save_dependencies_0 = NDR_PULL_GET_MEM_CTX(ndr);
3760 NDR_PULL_SET_MEM_CTX(ndr, r->in.dependencies, 0);
3761 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.dependencies));
3762 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.dependencies));
3763 if (ndr_get_array_length(ndr, &r->in.dependencies) > ndr_get_array_size(ndr, &r->in.dependencies)) {
3764 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));
3766 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.dependencies), sizeof(uint16_t)));
3767 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.dependencies, ndr_get_array_length(ndr, &r->in.dependencies), sizeof(uint16_t), CH_UTF16));
3768 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_dependencies_0, 0);
3770 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_service_start_name));
3771 if (_ptr_service_start_name) {
3772 NDR_PULL_ALLOC(ndr, r->in.service_start_name);
3774 r->in.service_start_name = NULL;
3776 if (r->in.service_start_name) {
3777 _mem_save_service_start_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
3778 NDR_PULL_SET_MEM_CTX(ndr, r->in.service_start_name, 0);
3779 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.service_start_name));
3780 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.service_start_name));
3781 if (ndr_get_array_length(ndr, &r->in.service_start_name) > ndr_get_array_size(ndr, &r->in.service_start_name)) {
3782 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));
3784 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.service_start_name), sizeof(uint16_t)));
3785 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));
3786 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_service_start_name_0, 0);
3788 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_password));
3789 if (_ptr_password) {
3790 NDR_PULL_ALLOC(ndr, r->in.password);
3792 r->in.password = NULL;
3794 if (r->in.password) {
3795 _mem_save_password_0 = NDR_PULL_GET_MEM_CTX(ndr);
3796 NDR_PULL_SET_MEM_CTX(ndr, r->in.password, 0);
3797 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.password));
3798 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.password));
3799 if (ndr_get_array_length(ndr, &r->in.password) > ndr_get_array_size(ndr, &r->in.password)) {
3800 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));
3802 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.password), sizeof(uint16_t)));
3803 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.password, ndr_get_array_length(ndr, &r->in.password), sizeof(uint16_t), CH_UTF16));
3804 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_password_0, 0);
3807 if (flags & NDR_OUT) {
3808 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_TagId));
3810 NDR_PULL_ALLOC(ndr, r->out.TagId);
3812 r->out.TagId = NULL;
3815 _mem_save_TagId_0 = NDR_PULL_GET_MEM_CTX(ndr);
3816 NDR_PULL_SET_MEM_CTX(ndr, r->out.TagId, 0);
3817 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.TagId));
3818 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_TagId_0, 0);
3820 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
3822 return NDR_ERR_SUCCESS;
3825 _PUBLIC_ void ndr_print_svcctl_CreateServiceA(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_CreateServiceA *r)
3827 ndr_print_struct(ndr, name, "svcctl_CreateServiceA");
3829 if (flags & NDR_SET_VALUES) {
3830 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
3832 if (flags & NDR_IN) {
3833 ndr_print_struct(ndr, "in", "svcctl_CreateServiceA");
3835 ndr_print_ptr(ndr, "handle", r->in.handle);
3837 ndr_print_policy_handle(ndr, "handle", r->in.handle);
3839 ndr_print_ptr(ndr, "ServiceName", r->in.ServiceName);
3841 if (r->in.ServiceName) {
3842 ndr_print_string(ndr, "ServiceName", r->in.ServiceName);
3845 ndr_print_ptr(ndr, "DisplayName", r->in.DisplayName);
3847 if (r->in.DisplayName) {
3848 ndr_print_string(ndr, "DisplayName", r->in.DisplayName);
3851 ndr_print_uint32(ndr, "desired_access", r->in.desired_access);
3852 ndr_print_uint32(ndr, "type", r->in.type);
3853 ndr_print_uint32(ndr, "start_type", r->in.start_type);
3854 ndr_print_uint32(ndr, "error_control", r->in.error_control);
3855 ndr_print_ptr(ndr, "binary_path", r->in.binary_path);
3857 if (r->in.binary_path) {
3858 ndr_print_string(ndr, "binary_path", r->in.binary_path);
3861 ndr_print_ptr(ndr, "LoadOrderGroupKey", r->in.LoadOrderGroupKey);
3863 if (r->in.LoadOrderGroupKey) {
3864 ndr_print_string(ndr, "LoadOrderGroupKey", r->in.LoadOrderGroupKey);
3867 ndr_print_ptr(ndr, "dependencies", r->in.dependencies);
3869 if (r->in.dependencies) {
3870 ndr_print_string(ndr, "dependencies", r->in.dependencies);
3873 ndr_print_ptr(ndr, "service_start_name", r->in.service_start_name);
3875 if (r->in.service_start_name) {
3876 ndr_print_string(ndr, "service_start_name", r->in.service_start_name);
3879 ndr_print_ptr(ndr, "password", r->in.password);
3881 if (r->in.password) {
3882 ndr_print_string(ndr, "password", r->in.password);
3887 if (flags & NDR_OUT) {
3888 ndr_print_struct(ndr, "out", "svcctl_CreateServiceA");
3890 ndr_print_ptr(ndr, "TagId", r->out.TagId);
3893 ndr_print_uint32(ndr, "TagId", *r->out.TagId);
3896 ndr_print_WERROR(ndr, "result", r->out.result);
3902 static enum ndr_err_code ndr_push_svcctl_EnumDependentServicesA(struct ndr_push *ndr, int flags, const struct svcctl_EnumDependentServicesA *r)
3904 if (flags & NDR_IN) {
3905 if (r->in.service == NULL) {
3906 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
3908 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.service));
3909 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.state));
3910 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.buf_size));
3912 if (flags & NDR_OUT) {
3913 NDR_CHECK(ndr_push_unique_ptr(ndr, r->out.service_status));
3914 if (r->out.service_status) {
3915 NDR_CHECK(ndr_push_ENUM_SERVICE_STATUS(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.service_status));
3917 if (r->out.bytes_needed == NULL) {
3918 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
3920 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.bytes_needed));
3921 if (r->out.services_returned == NULL) {
3922 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
3924 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.services_returned));
3925 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
3927 return NDR_ERR_SUCCESS;
3930 static enum ndr_err_code ndr_pull_svcctl_EnumDependentServicesA(struct ndr_pull *ndr, int flags, struct svcctl_EnumDependentServicesA *r)
3932 uint32_t _ptr_service_status;
3933 TALLOC_CTX *_mem_save_service_0;
3934 TALLOC_CTX *_mem_save_service_status_0;
3935 TALLOC_CTX *_mem_save_bytes_needed_0;
3936 TALLOC_CTX *_mem_save_services_returned_0;
3937 if (flags & NDR_IN) {
3938 ZERO_STRUCT(r->out);
3940 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
3941 NDR_PULL_ALLOC(ndr, r->in.service);
3943 _mem_save_service_0 = NDR_PULL_GET_MEM_CTX(ndr);
3944 NDR_PULL_SET_MEM_CTX(ndr, r->in.service, LIBNDR_FLAG_REF_ALLOC);
3945 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.service));
3946 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_service_0, LIBNDR_FLAG_REF_ALLOC);
3947 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.state));
3948 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.buf_size));
3949 NDR_PULL_ALLOC(ndr, r->out.bytes_needed);
3950 ZERO_STRUCTP(r->out.bytes_needed);
3951 NDR_PULL_ALLOC(ndr, r->out.services_returned);
3952 ZERO_STRUCTP(r->out.services_returned);
3954 if (flags & NDR_OUT) {
3955 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_service_status));
3956 if (_ptr_service_status) {
3957 NDR_PULL_ALLOC(ndr, r->out.service_status);
3959 r->out.service_status = NULL;
3961 if (r->out.service_status) {
3962 _mem_save_service_status_0 = NDR_PULL_GET_MEM_CTX(ndr);
3963 NDR_PULL_SET_MEM_CTX(ndr, r->out.service_status, 0);
3964 NDR_CHECK(ndr_pull_ENUM_SERVICE_STATUS(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.service_status));
3965 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_service_status_0, 0);
3967 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
3968 NDR_PULL_ALLOC(ndr, r->out.bytes_needed);
3970 _mem_save_bytes_needed_0 = NDR_PULL_GET_MEM_CTX(ndr);
3971 NDR_PULL_SET_MEM_CTX(ndr, r->out.bytes_needed, LIBNDR_FLAG_REF_ALLOC);
3972 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.bytes_needed));
3973 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_bytes_needed_0, LIBNDR_FLAG_REF_ALLOC);
3974 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
3975 NDR_PULL_ALLOC(ndr, r->out.services_returned);
3977 _mem_save_services_returned_0 = NDR_PULL_GET_MEM_CTX(ndr);
3978 NDR_PULL_SET_MEM_CTX(ndr, r->out.services_returned, LIBNDR_FLAG_REF_ALLOC);
3979 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.services_returned));
3980 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_services_returned_0, LIBNDR_FLAG_REF_ALLOC);
3981 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
3983 return NDR_ERR_SUCCESS;
3986 _PUBLIC_ void ndr_print_svcctl_EnumDependentServicesA(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_EnumDependentServicesA *r)
3988 ndr_print_struct(ndr, name, "svcctl_EnumDependentServicesA");
3990 if (flags & NDR_SET_VALUES) {
3991 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
3993 if (flags & NDR_IN) {
3994 ndr_print_struct(ndr, "in", "svcctl_EnumDependentServicesA");
3996 ndr_print_ptr(ndr, "service", r->in.service);
3998 ndr_print_policy_handle(ndr, "service", r->in.service);
4000 ndr_print_uint32(ndr, "state", r->in.state);
4001 ndr_print_uint32(ndr, "buf_size", r->in.buf_size);
4004 if (flags & NDR_OUT) {
4005 ndr_print_struct(ndr, "out", "svcctl_EnumDependentServicesA");
4007 ndr_print_ptr(ndr, "service_status", r->out.service_status);
4009 if (r->out.service_status) {
4010 ndr_print_ENUM_SERVICE_STATUS(ndr, "service_status", r->out.service_status);
4013 ndr_print_ptr(ndr, "bytes_needed", r->out.bytes_needed);
4015 ndr_print_uint32(ndr, "bytes_needed", *r->out.bytes_needed);
4017 ndr_print_ptr(ndr, "services_returned", r->out.services_returned);
4019 ndr_print_uint32(ndr, "services_returned", *r->out.services_returned);
4021 ndr_print_WERROR(ndr, "result", r->out.result);
4027 static enum ndr_err_code ndr_push_svcctl_EnumServicesStatusA(struct ndr_push *ndr, int flags, const struct svcctl_EnumServicesStatusA *r)
4029 if (flags & NDR_IN) {
4030 if (r->in.handle == NULL) {
4031 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
4033 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
4034 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.type));
4035 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.state));
4036 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.buf_size));
4037 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.resume_handle));
4038 if (r->in.resume_handle) {
4039 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->in.resume_handle));
4042 if (flags & NDR_OUT) {
4043 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.buf_size));
4044 NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->out.service, r->in.buf_size));
4045 if (r->out.bytes_needed == NULL) {
4046 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
4048 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.bytes_needed));
4049 if (r->out.services_returned == NULL) {
4050 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
4052 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.services_returned));
4053 NDR_CHECK(ndr_push_unique_ptr(ndr, r->out.resume_handle));
4054 if (r->out.resume_handle) {
4055 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.resume_handle));
4057 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
4059 return NDR_ERR_SUCCESS;
4062 static enum ndr_err_code ndr_pull_svcctl_EnumServicesStatusA(struct ndr_pull *ndr, int flags, struct svcctl_EnumServicesStatusA *r)
4064 uint32_t _ptr_resume_handle;
4065 TALLOC_CTX *_mem_save_handle_0;
4066 TALLOC_CTX *_mem_save_bytes_needed_0;
4067 TALLOC_CTX *_mem_save_services_returned_0;
4068 TALLOC_CTX *_mem_save_resume_handle_0;
4069 if (flags & NDR_IN) {
4070 ZERO_STRUCT(r->out);
4072 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
4073 NDR_PULL_ALLOC(ndr, r->in.handle);
4075 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
4076 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
4077 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
4078 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
4079 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.type));
4080 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.state));
4081 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.buf_size));
4082 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_resume_handle));
4083 if (_ptr_resume_handle) {
4084 NDR_PULL_ALLOC(ndr, r->in.resume_handle);
4086 r->in.resume_handle = NULL;
4088 if (r->in.resume_handle) {
4089 _mem_save_resume_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
4090 NDR_PULL_SET_MEM_CTX(ndr, r->in.resume_handle, 0);
4091 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->in.resume_handle));
4092 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_resume_handle_0, 0);
4094 NDR_PULL_ALLOC(ndr, r->out.bytes_needed);
4095 ZERO_STRUCTP(r->out.bytes_needed);
4096 NDR_PULL_ALLOC(ndr, r->out.services_returned);
4097 ZERO_STRUCTP(r->out.services_returned);
4099 if (flags & NDR_OUT) {
4100 NDR_CHECK(ndr_pull_array_size(ndr, &r->out.service));
4101 NDR_PULL_ALLOC_N(ndr, r->out.service, ndr_get_array_size(ndr, &r->out.service));
4102 NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->out.service, ndr_get_array_size(ndr, &r->out.service)));
4103 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
4104 NDR_PULL_ALLOC(ndr, r->out.bytes_needed);
4106 _mem_save_bytes_needed_0 = NDR_PULL_GET_MEM_CTX(ndr);
4107 NDR_PULL_SET_MEM_CTX(ndr, r->out.bytes_needed, LIBNDR_FLAG_REF_ALLOC);
4108 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.bytes_needed));
4109 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_bytes_needed_0, LIBNDR_FLAG_REF_ALLOC);
4110 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
4111 NDR_PULL_ALLOC(ndr, r->out.services_returned);
4113 _mem_save_services_returned_0 = NDR_PULL_GET_MEM_CTX(ndr);
4114 NDR_PULL_SET_MEM_CTX(ndr, r->out.services_returned, LIBNDR_FLAG_REF_ALLOC);
4115 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.services_returned));
4116 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_services_returned_0, LIBNDR_FLAG_REF_ALLOC);
4117 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_resume_handle));
4118 if (_ptr_resume_handle) {
4119 NDR_PULL_ALLOC(ndr, r->out.resume_handle);
4121 r->out.resume_handle = NULL;
4123 if (r->out.resume_handle) {
4124 _mem_save_resume_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
4125 NDR_PULL_SET_MEM_CTX(ndr, r->out.resume_handle, 0);
4126 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.resume_handle));
4127 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_resume_handle_0, 0);
4129 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
4130 if (r->out.service) {
4131 NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->out.service, r->in.buf_size));
4134 return NDR_ERR_SUCCESS;
4137 _PUBLIC_ void ndr_print_svcctl_EnumServicesStatusA(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_EnumServicesStatusA *r)
4139 ndr_print_struct(ndr, name, "svcctl_EnumServicesStatusA");
4141 if (flags & NDR_SET_VALUES) {
4142 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
4144 if (flags & NDR_IN) {
4145 ndr_print_struct(ndr, "in", "svcctl_EnumServicesStatusA");
4147 ndr_print_ptr(ndr, "handle", r->in.handle);
4149 ndr_print_policy_handle(ndr, "handle", r->in.handle);
4151 ndr_print_uint32(ndr, "type", r->in.type);
4152 ndr_print_uint32(ndr, "state", r->in.state);
4153 ndr_print_uint32(ndr, "buf_size", r->in.buf_size);
4154 ndr_print_ptr(ndr, "resume_handle", r->in.resume_handle);
4156 if (r->in.resume_handle) {
4157 ndr_print_uint32(ndr, "resume_handle", *r->in.resume_handle);
4162 if (flags & NDR_OUT) {
4163 ndr_print_struct(ndr, "out", "svcctl_EnumServicesStatusA");
4165 ndr_print_array_uint8(ndr, "service", r->out.service, r->in.buf_size);
4166 ndr_print_ptr(ndr, "bytes_needed", r->out.bytes_needed);
4168 ndr_print_uint32(ndr, "bytes_needed", *r->out.bytes_needed);
4170 ndr_print_ptr(ndr, "services_returned", r->out.services_returned);
4172 ndr_print_uint32(ndr, "services_returned", *r->out.services_returned);
4174 ndr_print_ptr(ndr, "resume_handle", r->out.resume_handle);
4176 if (r->out.resume_handle) {
4177 ndr_print_uint32(ndr, "resume_handle", *r->out.resume_handle);
4180 ndr_print_WERROR(ndr, "result", r->out.result);
4186 static enum ndr_err_code ndr_push_svcctl_OpenSCManagerA(struct ndr_push *ndr, int flags, const struct svcctl_OpenSCManagerA *r)
4188 if (flags & NDR_IN) {
4189 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.MachineName));
4190 if (r->in.MachineName) {
4191 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.MachineName, CH_UTF16)));
4192 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
4193 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.MachineName, CH_UTF16)));
4194 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.MachineName, ndr_charset_length(r->in.MachineName, CH_UTF16), sizeof(uint16_t), CH_UTF16));
4196 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.DatabaseName));
4197 if (r->in.DatabaseName) {
4198 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.DatabaseName, CH_UTF16)));
4199 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
4200 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.DatabaseName, CH_UTF16)));
4201 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.DatabaseName, ndr_charset_length(r->in.DatabaseName, CH_UTF16), sizeof(uint16_t), CH_UTF16));
4203 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.access_mask));
4205 if (flags & NDR_OUT) {
4206 if (r->out.handle == NULL) {
4207 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
4209 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->out.handle));
4210 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
4212 return NDR_ERR_SUCCESS;
4215 static enum ndr_err_code ndr_pull_svcctl_OpenSCManagerA(struct ndr_pull *ndr, int flags, struct svcctl_OpenSCManagerA *r)
4217 uint32_t _ptr_MachineName;
4218 uint32_t _ptr_DatabaseName;
4219 TALLOC_CTX *_mem_save_MachineName_0;
4220 TALLOC_CTX *_mem_save_DatabaseName_0;
4221 TALLOC_CTX *_mem_save_handle_0;
4222 if (flags & NDR_IN) {
4223 ZERO_STRUCT(r->out);
4225 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_MachineName));
4226 if (_ptr_MachineName) {
4227 NDR_PULL_ALLOC(ndr, r->in.MachineName);
4229 r->in.MachineName = NULL;
4231 if (r->in.MachineName) {
4232 _mem_save_MachineName_0 = NDR_PULL_GET_MEM_CTX(ndr);
4233 NDR_PULL_SET_MEM_CTX(ndr, r->in.MachineName, 0);
4234 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.MachineName));
4235 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.MachineName));
4236 if (ndr_get_array_length(ndr, &r->in.MachineName) > ndr_get_array_size(ndr, &r->in.MachineName)) {
4237 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));
4239 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.MachineName), sizeof(uint16_t)));
4240 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.MachineName, ndr_get_array_length(ndr, &r->in.MachineName), sizeof(uint16_t), CH_UTF16));
4241 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_MachineName_0, 0);
4243 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_DatabaseName));
4244 if (_ptr_DatabaseName) {
4245 NDR_PULL_ALLOC(ndr, r->in.DatabaseName);
4247 r->in.DatabaseName = NULL;
4249 if (r->in.DatabaseName) {
4250 _mem_save_DatabaseName_0 = NDR_PULL_GET_MEM_CTX(ndr);
4251 NDR_PULL_SET_MEM_CTX(ndr, r->in.DatabaseName, 0);
4252 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.DatabaseName));
4253 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.DatabaseName));
4254 if (ndr_get_array_length(ndr, &r->in.DatabaseName) > ndr_get_array_size(ndr, &r->in.DatabaseName)) {
4255 return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.DatabaseName), ndr_get_array_length(ndr, &r->in.DatabaseName));
4257 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.DatabaseName), sizeof(uint16_t)));
4258 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.DatabaseName, ndr_get_array_length(ndr, &r->in.DatabaseName), sizeof(uint16_t), CH_UTF16));
4259 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_DatabaseName_0, 0);
4261 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.access_mask));
4262 NDR_PULL_ALLOC(ndr, r->out.handle);
4263 ZERO_STRUCTP(r->out.handle);
4265 if (flags & NDR_OUT) {
4266 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
4267 NDR_PULL_ALLOC(ndr, r->out.handle);
4269 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
4270 NDR_PULL_SET_MEM_CTX(ndr, r->out.handle, LIBNDR_FLAG_REF_ALLOC);
4271 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->out.handle));
4272 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
4273 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
4275 return NDR_ERR_SUCCESS;
4278 _PUBLIC_ void ndr_print_svcctl_OpenSCManagerA(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_OpenSCManagerA *r)
4280 ndr_print_struct(ndr, name, "svcctl_OpenSCManagerA");
4282 if (flags & NDR_SET_VALUES) {
4283 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
4285 if (flags & NDR_IN) {
4286 ndr_print_struct(ndr, "in", "svcctl_OpenSCManagerA");
4288 ndr_print_ptr(ndr, "MachineName", r->in.MachineName);
4290 if (r->in.MachineName) {
4291 ndr_print_string(ndr, "MachineName", r->in.MachineName);
4294 ndr_print_ptr(ndr, "DatabaseName", r->in.DatabaseName);
4296 if (r->in.DatabaseName) {
4297 ndr_print_string(ndr, "DatabaseName", r->in.DatabaseName);
4300 ndr_print_uint32(ndr, "access_mask", r->in.access_mask);
4303 if (flags & NDR_OUT) {
4304 ndr_print_struct(ndr, "out", "svcctl_OpenSCManagerA");
4306 ndr_print_ptr(ndr, "handle", r->out.handle);
4308 ndr_print_policy_handle(ndr, "handle", r->out.handle);
4310 ndr_print_WERROR(ndr, "result", r->out.result);
4316 static enum ndr_err_code ndr_push_svcctl_OpenServiceA(struct ndr_push *ndr, int flags, const struct svcctl_OpenServiceA *r)
4318 if (flags & NDR_IN) {
4319 if (r->in.scmanager_handle == NULL) {
4320 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
4322 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.scmanager_handle));
4323 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.ServiceName));
4324 if (r->in.ServiceName) {
4325 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.ServiceName, CH_UTF16)));
4326 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
4327 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.ServiceName, CH_UTF16)));
4328 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.ServiceName, ndr_charset_length(r->in.ServiceName, CH_UTF16), sizeof(uint16_t), CH_UTF16));
4330 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.access_mask));
4332 if (flags & NDR_OUT) {
4333 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
4335 return NDR_ERR_SUCCESS;
4338 static enum ndr_err_code ndr_pull_svcctl_OpenServiceA(struct ndr_pull *ndr, int flags, struct svcctl_OpenServiceA *r)
4340 uint32_t _ptr_ServiceName;
4341 TALLOC_CTX *_mem_save_scmanager_handle_0;
4342 TALLOC_CTX *_mem_save_ServiceName_0;
4343 if (flags & NDR_IN) {
4344 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
4345 NDR_PULL_ALLOC(ndr, r->in.scmanager_handle);
4347 _mem_save_scmanager_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
4348 NDR_PULL_SET_MEM_CTX(ndr, r->in.scmanager_handle, LIBNDR_FLAG_REF_ALLOC);
4349 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.scmanager_handle));
4350 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_scmanager_handle_0, LIBNDR_FLAG_REF_ALLOC);
4351 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_ServiceName));
4352 if (_ptr_ServiceName) {
4353 NDR_PULL_ALLOC(ndr, r->in.ServiceName);
4355 r->in.ServiceName = NULL;
4357 if (r->in.ServiceName) {
4358 _mem_save_ServiceName_0 = NDR_PULL_GET_MEM_CTX(ndr);
4359 NDR_PULL_SET_MEM_CTX(ndr, r->in.ServiceName, 0);
4360 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.ServiceName));
4361 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.ServiceName));
4362 if (ndr_get_array_length(ndr, &r->in.ServiceName) > ndr_get_array_size(ndr, &r->in.ServiceName)) {
4363 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));
4365 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.ServiceName), sizeof(uint16_t)));
4366 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.ServiceName, ndr_get_array_length(ndr, &r->in.ServiceName), sizeof(uint16_t), CH_UTF16));
4367 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_ServiceName_0, 0);
4369 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.access_mask));
4371 if (flags & NDR_OUT) {
4372 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
4374 return NDR_ERR_SUCCESS;
4377 _PUBLIC_ void ndr_print_svcctl_OpenServiceA(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_OpenServiceA *r)
4379 ndr_print_struct(ndr, name, "svcctl_OpenServiceA");
4381 if (flags & NDR_SET_VALUES) {
4382 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
4384 if (flags & NDR_IN) {
4385 ndr_print_struct(ndr, "in", "svcctl_OpenServiceA");
4387 ndr_print_ptr(ndr, "scmanager_handle", r->in.scmanager_handle);
4389 ndr_print_policy_handle(ndr, "scmanager_handle", r->in.scmanager_handle);
4391 ndr_print_ptr(ndr, "ServiceName", r->in.ServiceName);
4393 if (r->in.ServiceName) {
4394 ndr_print_string(ndr, "ServiceName", r->in.ServiceName);
4397 ndr_print_uint32(ndr, "access_mask", r->in.access_mask);
4400 if (flags & NDR_OUT) {
4401 ndr_print_struct(ndr, "out", "svcctl_OpenServiceA");
4403 ndr_print_WERROR(ndr, "result", r->out.result);
4409 static enum ndr_err_code ndr_push_svcctl_QueryServiceConfigA(struct ndr_push *ndr, int flags, const struct svcctl_QueryServiceConfigA *r)
4411 if (flags & NDR_IN) {
4412 if (r->in.handle == NULL) {
4413 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
4415 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
4416 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.buf_size));
4418 if (flags & NDR_OUT) {
4419 NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->out.query, r->in.buf_size));
4420 if (r->out.bytes_needed == NULL) {
4421 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
4423 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.bytes_needed));
4424 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
4426 return NDR_ERR_SUCCESS;
4429 static enum ndr_err_code ndr_pull_svcctl_QueryServiceConfigA(struct ndr_pull *ndr, int flags, struct svcctl_QueryServiceConfigA *r)
4431 TALLOC_CTX *_mem_save_handle_0;
4432 TALLOC_CTX *_mem_save_bytes_needed_0;
4433 if (flags & NDR_IN) {
4434 ZERO_STRUCT(r->out);
4436 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
4437 NDR_PULL_ALLOC(ndr, r->in.handle);
4439 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
4440 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
4441 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
4442 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
4443 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.buf_size));
4444 NDR_PULL_ALLOC(ndr, r->out.bytes_needed);
4445 ZERO_STRUCTP(r->out.bytes_needed);
4447 if (flags & NDR_OUT) {
4448 NDR_PULL_ALLOC_N(ndr, r->out.query, r->in.buf_size);
4449 NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->out.query, r->in.buf_size));
4450 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
4451 NDR_PULL_ALLOC(ndr, r->out.bytes_needed);
4453 _mem_save_bytes_needed_0 = NDR_PULL_GET_MEM_CTX(ndr);
4454 NDR_PULL_SET_MEM_CTX(ndr, r->out.bytes_needed, LIBNDR_FLAG_REF_ALLOC);
4455 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.bytes_needed));
4456 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_bytes_needed_0, LIBNDR_FLAG_REF_ALLOC);
4457 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
4459 return NDR_ERR_SUCCESS;
4462 _PUBLIC_ void ndr_print_svcctl_QueryServiceConfigA(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_QueryServiceConfigA *r)
4464 ndr_print_struct(ndr, name, "svcctl_QueryServiceConfigA");
4466 if (flags & NDR_SET_VALUES) {
4467 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
4469 if (flags & NDR_IN) {
4470 ndr_print_struct(ndr, "in", "svcctl_QueryServiceConfigA");
4472 ndr_print_ptr(ndr, "handle", r->in.handle);
4474 ndr_print_policy_handle(ndr, "handle", r->in.handle);
4476 ndr_print_uint32(ndr, "buf_size", r->in.buf_size);
4479 if (flags & NDR_OUT) {
4480 ndr_print_struct(ndr, "out", "svcctl_QueryServiceConfigA");
4482 ndr_print_array_uint8(ndr, "query", r->out.query, r->in.buf_size);
4483 ndr_print_ptr(ndr, "bytes_needed", r->out.bytes_needed);
4485 ndr_print_uint32(ndr, "bytes_needed", *r->out.bytes_needed);
4487 ndr_print_WERROR(ndr, "result", r->out.result);
4493 static enum ndr_err_code ndr_push_svcctl_QueryServiceLockStatusA(struct ndr_push *ndr, int flags, const struct svcctl_QueryServiceLockStatusA *r)
4495 if (flags & NDR_IN) {
4496 if (r->in.handle == NULL) {
4497 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
4499 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
4500 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.buf_size));
4502 if (flags & NDR_OUT) {
4503 if (r->out.lock_status == NULL) {
4504 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
4506 NDR_CHECK(ndr_push_SERVICE_LOCK_STATUS(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.lock_status));
4507 if (r->out.required_buf_size == NULL) {
4508 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
4510 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.required_buf_size));
4511 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
4513 return NDR_ERR_SUCCESS;
4516 static enum ndr_err_code ndr_pull_svcctl_QueryServiceLockStatusA(struct ndr_pull *ndr, int flags, struct svcctl_QueryServiceLockStatusA *r)
4518 TALLOC_CTX *_mem_save_handle_0;
4519 TALLOC_CTX *_mem_save_lock_status_0;
4520 TALLOC_CTX *_mem_save_required_buf_size_0;
4521 if (flags & NDR_IN) {
4522 ZERO_STRUCT(r->out);
4524 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
4525 NDR_PULL_ALLOC(ndr, r->in.handle);
4527 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
4528 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
4529 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
4530 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
4531 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.buf_size));
4532 NDR_PULL_ALLOC(ndr, r->out.lock_status);
4533 ZERO_STRUCTP(r->out.lock_status);
4534 NDR_PULL_ALLOC(ndr, r->out.required_buf_size);
4535 ZERO_STRUCTP(r->out.required_buf_size);
4537 if (flags & NDR_OUT) {
4538 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
4539 NDR_PULL_ALLOC(ndr, r->out.lock_status);
4541 _mem_save_lock_status_0 = NDR_PULL_GET_MEM_CTX(ndr);
4542 NDR_PULL_SET_MEM_CTX(ndr, r->out.lock_status, LIBNDR_FLAG_REF_ALLOC);
4543 NDR_CHECK(ndr_pull_SERVICE_LOCK_STATUS(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.lock_status));
4544 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_lock_status_0, LIBNDR_FLAG_REF_ALLOC);
4545 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
4546 NDR_PULL_ALLOC(ndr, r->out.required_buf_size);
4548 _mem_save_required_buf_size_0 = NDR_PULL_GET_MEM_CTX(ndr);
4549 NDR_PULL_SET_MEM_CTX(ndr, r->out.required_buf_size, LIBNDR_FLAG_REF_ALLOC);
4550 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.required_buf_size));
4551 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_required_buf_size_0, LIBNDR_FLAG_REF_ALLOC);
4552 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
4554 return NDR_ERR_SUCCESS;
4557 _PUBLIC_ void ndr_print_svcctl_QueryServiceLockStatusA(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_QueryServiceLockStatusA *r)
4559 ndr_print_struct(ndr, name, "svcctl_QueryServiceLockStatusA");
4561 if (flags & NDR_SET_VALUES) {
4562 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
4564 if (flags & NDR_IN) {
4565 ndr_print_struct(ndr, "in", "svcctl_QueryServiceLockStatusA");
4567 ndr_print_ptr(ndr, "handle", r->in.handle);
4569 ndr_print_policy_handle(ndr, "handle", r->in.handle);
4571 ndr_print_uint32(ndr, "buf_size", r->in.buf_size);
4574 if (flags & NDR_OUT) {
4575 ndr_print_struct(ndr, "out", "svcctl_QueryServiceLockStatusA");
4577 ndr_print_ptr(ndr, "lock_status", r->out.lock_status);
4579 ndr_print_SERVICE_LOCK_STATUS(ndr, "lock_status", r->out.lock_status);
4581 ndr_print_ptr(ndr, "required_buf_size", r->out.required_buf_size);
4583 ndr_print_uint32(ndr, "required_buf_size", *r->out.required_buf_size);
4585 ndr_print_WERROR(ndr, "result", r->out.result);
4591 static enum ndr_err_code ndr_push_svcctl_StartServiceA(struct ndr_push *ndr, int flags, const struct svcctl_StartServiceA *r)
4593 if (flags & NDR_IN) {
4594 if (r->in.handle == NULL) {
4595 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
4597 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
4598 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.NumArgs));
4599 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.Arguments));
4600 if (r->in.Arguments) {
4601 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.Arguments, CH_UTF16)));
4602 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
4603 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.Arguments, CH_UTF16)));
4604 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.Arguments, ndr_charset_length(r->in.Arguments, CH_UTF16), sizeof(uint16_t), CH_UTF16));
4607 if (flags & NDR_OUT) {
4608 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
4610 return NDR_ERR_SUCCESS;
4613 static enum ndr_err_code ndr_pull_svcctl_StartServiceA(struct ndr_pull *ndr, int flags, struct svcctl_StartServiceA *r)
4615 uint32_t _ptr_Arguments;
4616 TALLOC_CTX *_mem_save_handle_0;
4617 TALLOC_CTX *_mem_save_Arguments_0;
4618 if (flags & NDR_IN) {
4619 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
4620 NDR_PULL_ALLOC(ndr, r->in.handle);
4622 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
4623 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
4624 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
4625 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
4626 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.NumArgs));
4627 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_Arguments));
4628 if (_ptr_Arguments) {
4629 NDR_PULL_ALLOC(ndr, r->in.Arguments);
4631 r->in.Arguments = NULL;
4633 if (r->in.Arguments) {
4634 _mem_save_Arguments_0 = NDR_PULL_GET_MEM_CTX(ndr);
4635 NDR_PULL_SET_MEM_CTX(ndr, r->in.Arguments, 0);
4636 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.Arguments));
4637 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.Arguments));
4638 if (ndr_get_array_length(ndr, &r->in.Arguments) > ndr_get_array_size(ndr, &r->in.Arguments)) {
4639 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));
4641 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.Arguments), sizeof(uint16_t)));
4642 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.Arguments, ndr_get_array_length(ndr, &r->in.Arguments), sizeof(uint16_t), CH_UTF16));
4643 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_Arguments_0, 0);
4646 if (flags & NDR_OUT) {
4647 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
4649 return NDR_ERR_SUCCESS;
4652 _PUBLIC_ void ndr_print_svcctl_StartServiceA(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_StartServiceA *r)
4654 ndr_print_struct(ndr, name, "svcctl_StartServiceA");
4656 if (flags & NDR_SET_VALUES) {
4657 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
4659 if (flags & NDR_IN) {
4660 ndr_print_struct(ndr, "in", "svcctl_StartServiceA");
4662 ndr_print_ptr(ndr, "handle", r->in.handle);
4664 ndr_print_policy_handle(ndr, "handle", r->in.handle);
4666 ndr_print_uint32(ndr, "NumArgs", r->in.NumArgs);
4667 ndr_print_ptr(ndr, "Arguments", r->in.Arguments);
4669 if (r->in.Arguments) {
4670 ndr_print_string(ndr, "Arguments", r->in.Arguments);
4675 if (flags & NDR_OUT) {
4676 ndr_print_struct(ndr, "out", "svcctl_StartServiceA");
4678 ndr_print_WERROR(ndr, "result", r->out.result);
4684 static enum ndr_err_code ndr_push_svcctl_GetServiceDisplayNameA(struct ndr_push *ndr, int flags, const struct svcctl_GetServiceDisplayNameA *r)
4686 if (flags & NDR_IN) {
4687 if (r->in.handle == NULL) {
4688 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
4690 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
4691 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.service_name));
4692 if (r->in.service_name) {
4693 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.service_name, CH_UTF16)));
4694 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
4695 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.service_name, CH_UTF16)));
4696 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));
4698 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.display_name_length));
4699 if (r->in.display_name_length) {
4700 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->in.display_name_length));
4703 if (flags & NDR_OUT) {
4704 if (r->out.display_name == NULL) {
4705 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
4707 NDR_CHECK(ndr_push_unique_ptr(ndr, *r->out.display_name));
4708 if (*r->out.display_name) {
4709 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(*r->out.display_name, CH_UTF16)));
4710 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
4711 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(*r->out.display_name, CH_UTF16)));
4712 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));
4714 NDR_CHECK(ndr_push_unique_ptr(ndr, r->out.display_name_length));
4715 if (r->out.display_name_length) {
4716 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.display_name_length));
4718 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
4720 return NDR_ERR_SUCCESS;
4723 static enum ndr_err_code ndr_pull_svcctl_GetServiceDisplayNameA(struct ndr_pull *ndr, int flags, struct svcctl_GetServiceDisplayNameA *r)
4725 uint32_t _ptr_service_name;
4726 uint32_t _ptr_display_name;
4727 uint32_t _ptr_display_name_length;
4728 TALLOC_CTX *_mem_save_handle_0;
4729 TALLOC_CTX *_mem_save_service_name_0;
4730 TALLOC_CTX *_mem_save_display_name_0;
4731 TALLOC_CTX *_mem_save_display_name_1;
4732 TALLOC_CTX *_mem_save_display_name_length_0;
4733 if (flags & NDR_IN) {
4734 ZERO_STRUCT(r->out);
4736 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
4737 NDR_PULL_ALLOC(ndr, r->in.handle);
4739 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
4740 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
4741 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
4742 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
4743 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_service_name));
4744 if (_ptr_service_name) {
4745 NDR_PULL_ALLOC(ndr, r->in.service_name);
4747 r->in.service_name = NULL;
4749 if (r->in.service_name) {
4750 _mem_save_service_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
4751 NDR_PULL_SET_MEM_CTX(ndr, r->in.service_name, 0);
4752 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.service_name));
4753 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.service_name));
4754 if (ndr_get_array_length(ndr, &r->in.service_name) > ndr_get_array_size(ndr, &r->in.service_name)) {
4755 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));
4757 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.service_name), sizeof(uint16_t)));
4758 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));
4759 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_service_name_0, 0);
4761 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_display_name_length));
4762 if (_ptr_display_name_length) {
4763 NDR_PULL_ALLOC(ndr, r->in.display_name_length);
4765 r->in.display_name_length = NULL;
4767 if (r->in.display_name_length) {
4768 _mem_save_display_name_length_0 = NDR_PULL_GET_MEM_CTX(ndr);
4769 NDR_PULL_SET_MEM_CTX(ndr, r->in.display_name_length, 0);
4770 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->in.display_name_length));
4771 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_display_name_length_0, 0);
4773 NDR_PULL_ALLOC(ndr, r->out.display_name);
4774 ZERO_STRUCTP(r->out.display_name);
4776 if (flags & NDR_OUT) {
4777 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
4778 NDR_PULL_ALLOC(ndr, r->out.display_name);
4780 _mem_save_display_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
4781 NDR_PULL_SET_MEM_CTX(ndr, r->out.display_name, LIBNDR_FLAG_REF_ALLOC);
4782 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_display_name));
4783 if (_ptr_display_name) {
4784 NDR_PULL_ALLOC(ndr, *r->out.display_name);
4786 *r->out.display_name = NULL;
4788 if (*r->out.display_name) {
4789 _mem_save_display_name_1 = NDR_PULL_GET_MEM_CTX(ndr);
4790 NDR_PULL_SET_MEM_CTX(ndr, *r->out.display_name, 0);
4791 NDR_CHECK(ndr_pull_array_size(ndr, r->out.display_name));
4792 NDR_CHECK(ndr_pull_array_length(ndr, r->out.display_name));
4793 if (ndr_get_array_length(ndr, r->out.display_name) > ndr_get_array_size(ndr, r->out.display_name)) {
4794 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));
4796 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, r->out.display_name), sizeof(uint16_t)));
4797 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));
4798 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_display_name_1, 0);
4800 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_display_name_0, LIBNDR_FLAG_REF_ALLOC);
4801 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_display_name_length));
4802 if (_ptr_display_name_length) {
4803 NDR_PULL_ALLOC(ndr, r->out.display_name_length);
4805 r->out.display_name_length = NULL;
4807 if (r->out.display_name_length) {
4808 _mem_save_display_name_length_0 = NDR_PULL_GET_MEM_CTX(ndr);
4809 NDR_PULL_SET_MEM_CTX(ndr, r->out.display_name_length, 0);
4810 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.display_name_length));
4811 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_display_name_length_0, 0);
4813 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
4815 return NDR_ERR_SUCCESS;
4818 _PUBLIC_ void ndr_print_svcctl_GetServiceDisplayNameA(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_GetServiceDisplayNameA *r)
4820 ndr_print_struct(ndr, name, "svcctl_GetServiceDisplayNameA");
4822 if (flags & NDR_SET_VALUES) {
4823 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
4825 if (flags & NDR_IN) {
4826 ndr_print_struct(ndr, "in", "svcctl_GetServiceDisplayNameA");
4828 ndr_print_ptr(ndr, "handle", r->in.handle);
4830 ndr_print_policy_handle(ndr, "handle", r->in.handle);
4832 ndr_print_ptr(ndr, "service_name", r->in.service_name);
4834 if (r->in.service_name) {
4835 ndr_print_string(ndr, "service_name", r->in.service_name);
4838 ndr_print_ptr(ndr, "display_name_length", r->in.display_name_length);
4840 if (r->in.display_name_length) {
4841 ndr_print_uint32(ndr, "display_name_length", *r->in.display_name_length);
4846 if (flags & NDR_OUT) {
4847 ndr_print_struct(ndr, "out", "svcctl_GetServiceDisplayNameA");
4849 ndr_print_ptr(ndr, "display_name", r->out.display_name);
4851 ndr_print_ptr(ndr, "display_name", *r->out.display_name);
4853 if (*r->out.display_name) {
4854 ndr_print_string(ndr, "display_name", *r->out.display_name);
4858 ndr_print_ptr(ndr, "display_name_length", r->out.display_name_length);
4860 if (r->out.display_name_length) {
4861 ndr_print_uint32(ndr, "display_name_length", *r->out.display_name_length);
4864 ndr_print_WERROR(ndr, "result", r->out.result);
4870 static enum ndr_err_code ndr_push_svcctl_GetServiceKeyNameA(struct ndr_push *ndr, int flags, const struct svcctl_GetServiceKeyNameA *r)
4872 if (flags & NDR_IN) {
4873 if (r->in.handle == NULL) {
4874 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
4876 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
4877 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.service_name));
4878 if (r->in.service_name) {
4879 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.service_name, CH_UTF16)));
4880 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
4881 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.service_name, CH_UTF16)));
4882 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));
4884 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.display_name_length));
4885 if (r->in.display_name_length) {
4886 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->in.display_name_length));
4889 if (flags & NDR_OUT) {
4890 if (r->out.key_name == NULL) {
4891 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
4893 NDR_CHECK(ndr_push_unique_ptr(ndr, *r->out.key_name));
4894 if (*r->out.key_name) {
4895 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(*r->out.key_name, CH_UTF16)));
4896 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
4897 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(*r->out.key_name, CH_UTF16)));
4898 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));
4900 NDR_CHECK(ndr_push_unique_ptr(ndr, r->out.display_name_length));
4901 if (r->out.display_name_length) {
4902 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.display_name_length));
4904 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
4906 return NDR_ERR_SUCCESS;
4909 static enum ndr_err_code ndr_pull_svcctl_GetServiceKeyNameA(struct ndr_pull *ndr, int flags, struct svcctl_GetServiceKeyNameA *r)
4911 uint32_t _ptr_service_name;
4912 uint32_t _ptr_key_name;
4913 uint32_t _ptr_display_name_length;
4914 TALLOC_CTX *_mem_save_handle_0;
4915 TALLOC_CTX *_mem_save_service_name_0;
4916 TALLOC_CTX *_mem_save_key_name_0;
4917 TALLOC_CTX *_mem_save_key_name_1;
4918 TALLOC_CTX *_mem_save_display_name_length_0;
4919 if (flags & NDR_IN) {
4920 ZERO_STRUCT(r->out);
4922 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
4923 NDR_PULL_ALLOC(ndr, r->in.handle);
4925 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
4926 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
4927 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
4928 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
4929 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_service_name));
4930 if (_ptr_service_name) {
4931 NDR_PULL_ALLOC(ndr, r->in.service_name);
4933 r->in.service_name = NULL;
4935 if (r->in.service_name) {
4936 _mem_save_service_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
4937 NDR_PULL_SET_MEM_CTX(ndr, r->in.service_name, 0);
4938 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.service_name));
4939 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.service_name));
4940 if (ndr_get_array_length(ndr, &r->in.service_name) > ndr_get_array_size(ndr, &r->in.service_name)) {
4941 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));
4943 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.service_name), sizeof(uint16_t)));
4944 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));
4945 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_service_name_0, 0);
4947 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_display_name_length));
4948 if (_ptr_display_name_length) {
4949 NDR_PULL_ALLOC(ndr, r->in.display_name_length);
4951 r->in.display_name_length = NULL;
4953 if (r->in.display_name_length) {
4954 _mem_save_display_name_length_0 = NDR_PULL_GET_MEM_CTX(ndr);
4955 NDR_PULL_SET_MEM_CTX(ndr, r->in.display_name_length, 0);
4956 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->in.display_name_length));
4957 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_display_name_length_0, 0);
4959 NDR_PULL_ALLOC(ndr, r->out.key_name);
4960 ZERO_STRUCTP(r->out.key_name);
4962 if (flags & NDR_OUT) {
4963 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
4964 NDR_PULL_ALLOC(ndr, r->out.key_name);
4966 _mem_save_key_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
4967 NDR_PULL_SET_MEM_CTX(ndr, r->out.key_name, LIBNDR_FLAG_REF_ALLOC);
4968 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_key_name));
4969 if (_ptr_key_name) {
4970 NDR_PULL_ALLOC(ndr, *r->out.key_name);
4972 *r->out.key_name = NULL;
4974 if (*r->out.key_name) {
4975 _mem_save_key_name_1 = NDR_PULL_GET_MEM_CTX(ndr);
4976 NDR_PULL_SET_MEM_CTX(ndr, *r->out.key_name, 0);
4977 NDR_CHECK(ndr_pull_array_size(ndr, r->out.key_name));
4978 NDR_CHECK(ndr_pull_array_length(ndr, r->out.key_name));
4979 if (ndr_get_array_length(ndr, r->out.key_name) > ndr_get_array_size(ndr, r->out.key_name)) {
4980 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));
4982 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, r->out.key_name), sizeof(uint16_t)));
4983 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));
4984 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_key_name_1, 0);
4986 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_key_name_0, LIBNDR_FLAG_REF_ALLOC);
4987 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_display_name_length));
4988 if (_ptr_display_name_length) {
4989 NDR_PULL_ALLOC(ndr, r->out.display_name_length);
4991 r->out.display_name_length = NULL;
4993 if (r->out.display_name_length) {
4994 _mem_save_display_name_length_0 = NDR_PULL_GET_MEM_CTX(ndr);
4995 NDR_PULL_SET_MEM_CTX(ndr, r->out.display_name_length, 0);
4996 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.display_name_length));
4997 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_display_name_length_0, 0);
4999 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
5001 return NDR_ERR_SUCCESS;
5004 _PUBLIC_ void ndr_print_svcctl_GetServiceKeyNameA(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_GetServiceKeyNameA *r)
5006 ndr_print_struct(ndr, name, "svcctl_GetServiceKeyNameA");
5008 if (flags & NDR_SET_VALUES) {
5009 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
5011 if (flags & NDR_IN) {
5012 ndr_print_struct(ndr, "in", "svcctl_GetServiceKeyNameA");
5014 ndr_print_ptr(ndr, "handle", r->in.handle);
5016 ndr_print_policy_handle(ndr, "handle", r->in.handle);
5018 ndr_print_ptr(ndr, "service_name", r->in.service_name);
5020 if (r->in.service_name) {
5021 ndr_print_string(ndr, "service_name", r->in.service_name);
5024 ndr_print_ptr(ndr, "display_name_length", r->in.display_name_length);
5026 if (r->in.display_name_length) {
5027 ndr_print_uint32(ndr, "display_name_length", *r->in.display_name_length);
5032 if (flags & NDR_OUT) {
5033 ndr_print_struct(ndr, "out", "svcctl_GetServiceKeyNameA");
5035 ndr_print_ptr(ndr, "key_name", r->out.key_name);
5037 ndr_print_ptr(ndr, "key_name", *r->out.key_name);
5039 if (*r->out.key_name) {
5040 ndr_print_string(ndr, "key_name", *r->out.key_name);
5044 ndr_print_ptr(ndr, "display_name_length", r->out.display_name_length);
5046 if (r->out.display_name_length) {
5047 ndr_print_uint32(ndr, "display_name_length", *r->out.display_name_length);
5050 ndr_print_WERROR(ndr, "result", r->out.result);
5056 static enum ndr_err_code ndr_push_svcctl_GetCurrentGroupeStateW(struct ndr_push *ndr, int flags, const struct svcctl_GetCurrentGroupeStateW *r)
5058 if (flags & NDR_IN) {
5060 if (flags & NDR_OUT) {
5061 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
5063 return NDR_ERR_SUCCESS;
5066 static enum ndr_err_code ndr_pull_svcctl_GetCurrentGroupeStateW(struct ndr_pull *ndr, int flags, struct svcctl_GetCurrentGroupeStateW *r)
5068 if (flags & NDR_IN) {
5070 if (flags & NDR_OUT) {
5071 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
5073 return NDR_ERR_SUCCESS;
5076 _PUBLIC_ void ndr_print_svcctl_GetCurrentGroupeStateW(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_GetCurrentGroupeStateW *r)
5078 ndr_print_struct(ndr, name, "svcctl_GetCurrentGroupeStateW");
5080 if (flags & NDR_SET_VALUES) {
5081 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
5083 if (flags & NDR_IN) {
5084 ndr_print_struct(ndr, "in", "svcctl_GetCurrentGroupeStateW");
5088 if (flags & NDR_OUT) {
5089 ndr_print_struct(ndr, "out", "svcctl_GetCurrentGroupeStateW");
5091 ndr_print_WERROR(ndr, "result", r->out.result);
5097 static enum ndr_err_code ndr_push_svcctl_EnumServiceGroupW(struct ndr_push *ndr, int flags, const struct svcctl_EnumServiceGroupW *r)
5099 if (flags & NDR_IN) {
5101 if (flags & NDR_OUT) {
5102 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
5104 return NDR_ERR_SUCCESS;
5107 static enum ndr_err_code ndr_pull_svcctl_EnumServiceGroupW(struct ndr_pull *ndr, int flags, struct svcctl_EnumServiceGroupW *r)
5109 if (flags & NDR_IN) {
5111 if (flags & NDR_OUT) {
5112 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
5114 return NDR_ERR_SUCCESS;
5117 _PUBLIC_ void ndr_print_svcctl_EnumServiceGroupW(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_EnumServiceGroupW *r)
5119 ndr_print_struct(ndr, name, "svcctl_EnumServiceGroupW");
5121 if (flags & NDR_SET_VALUES) {
5122 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
5124 if (flags & NDR_IN) {
5125 ndr_print_struct(ndr, "in", "svcctl_EnumServiceGroupW");
5129 if (flags & NDR_OUT) {
5130 ndr_print_struct(ndr, "out", "svcctl_EnumServiceGroupW");
5132 ndr_print_WERROR(ndr, "result", r->out.result);
5138 static enum ndr_err_code ndr_push_svcctl_ChangeServiceConfig2A(struct ndr_push *ndr, int flags, const struct svcctl_ChangeServiceConfig2A *r)
5140 if (flags & NDR_IN) {
5141 if (r->in.handle == NULL) {
5142 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
5144 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
5145 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.info_level));
5146 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.info));
5148 NDR_CHECK(ndr_push_uint8(ndr, NDR_SCALARS, *r->in.info));
5151 if (flags & NDR_OUT) {
5152 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
5154 return NDR_ERR_SUCCESS;
5157 static enum ndr_err_code ndr_pull_svcctl_ChangeServiceConfig2A(struct ndr_pull *ndr, int flags, struct svcctl_ChangeServiceConfig2A *r)
5160 TALLOC_CTX *_mem_save_handle_0;
5161 TALLOC_CTX *_mem_save_info_0;
5162 if (flags & NDR_IN) {
5163 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
5164 NDR_PULL_ALLOC(ndr, r->in.handle);
5166 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
5167 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
5168 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
5169 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
5170 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.info_level));
5171 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_info));
5173 NDR_PULL_ALLOC(ndr, r->in.info);
5178 _mem_save_info_0 = NDR_PULL_GET_MEM_CTX(ndr);
5179 NDR_PULL_SET_MEM_CTX(ndr, r->in.info, 0);
5180 NDR_CHECK(ndr_pull_uint8(ndr, NDR_SCALARS, r->in.info));
5181 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_info_0, 0);
5184 if (flags & NDR_OUT) {
5185 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
5187 return NDR_ERR_SUCCESS;
5190 _PUBLIC_ void ndr_print_svcctl_ChangeServiceConfig2A(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_ChangeServiceConfig2A *r)
5192 ndr_print_struct(ndr, name, "svcctl_ChangeServiceConfig2A");
5194 if (flags & NDR_SET_VALUES) {
5195 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
5197 if (flags & NDR_IN) {
5198 ndr_print_struct(ndr, "in", "svcctl_ChangeServiceConfig2A");
5200 ndr_print_ptr(ndr, "handle", r->in.handle);
5202 ndr_print_policy_handle(ndr, "handle", r->in.handle);
5204 ndr_print_uint32(ndr, "info_level", r->in.info_level);
5205 ndr_print_ptr(ndr, "info", r->in.info);
5208 ndr_print_uint8(ndr, "info", *r->in.info);
5213 if (flags & NDR_OUT) {
5214 ndr_print_struct(ndr, "out", "svcctl_ChangeServiceConfig2A");
5216 ndr_print_WERROR(ndr, "result", r->out.result);
5222 static enum ndr_err_code ndr_push_svcctl_ChangeServiceConfig2W(struct ndr_push *ndr, int flags, const struct svcctl_ChangeServiceConfig2W *r)
5224 if (flags & NDR_IN) {
5225 if (r->in.handle == NULL) {
5226 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
5228 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
5229 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.info_level));
5230 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.info));
5232 NDR_CHECK(ndr_push_uint8(ndr, NDR_SCALARS, *r->in.info));
5235 if (flags & NDR_OUT) {
5236 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
5238 return NDR_ERR_SUCCESS;
5241 static enum ndr_err_code ndr_pull_svcctl_ChangeServiceConfig2W(struct ndr_pull *ndr, int flags, struct svcctl_ChangeServiceConfig2W *r)
5244 TALLOC_CTX *_mem_save_handle_0;
5245 TALLOC_CTX *_mem_save_info_0;
5246 if (flags & NDR_IN) {
5247 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
5248 NDR_PULL_ALLOC(ndr, r->in.handle);
5250 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
5251 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
5252 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
5253 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
5254 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.info_level));
5255 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_info));
5257 NDR_PULL_ALLOC(ndr, r->in.info);
5262 _mem_save_info_0 = NDR_PULL_GET_MEM_CTX(ndr);
5263 NDR_PULL_SET_MEM_CTX(ndr, r->in.info, 0);
5264 NDR_CHECK(ndr_pull_uint8(ndr, NDR_SCALARS, r->in.info));
5265 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_info_0, 0);
5268 if (flags & NDR_OUT) {
5269 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
5271 return NDR_ERR_SUCCESS;
5274 _PUBLIC_ void ndr_print_svcctl_ChangeServiceConfig2W(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_ChangeServiceConfig2W *r)
5276 ndr_print_struct(ndr, name, "svcctl_ChangeServiceConfig2W");
5278 if (flags & NDR_SET_VALUES) {
5279 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
5281 if (flags & NDR_IN) {
5282 ndr_print_struct(ndr, "in", "svcctl_ChangeServiceConfig2W");
5284 ndr_print_ptr(ndr, "handle", r->in.handle);
5286 ndr_print_policy_handle(ndr, "handle", r->in.handle);
5288 ndr_print_uint32(ndr, "info_level", r->in.info_level);
5289 ndr_print_ptr(ndr, "info", r->in.info);
5292 ndr_print_uint8(ndr, "info", *r->in.info);
5297 if (flags & NDR_OUT) {
5298 ndr_print_struct(ndr, "out", "svcctl_ChangeServiceConfig2W");
5300 ndr_print_WERROR(ndr, "result", r->out.result);
5306 static enum ndr_err_code ndr_push_svcctl_QueryServiceConfig2A(struct ndr_push *ndr, int flags, const struct svcctl_QueryServiceConfig2A *r)
5308 if (flags & NDR_IN) {
5309 if (r->in.handle == NULL) {
5310 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
5312 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
5313 NDR_CHECK(ndr_push_svcctl_ConfigLevel(ndr, NDR_SCALARS, r->in.info_level));
5314 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.buf_size));
5316 if (flags & NDR_OUT) {
5317 NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->out.buffer, r->in.buf_size));
5318 if (r->out.bytes_needed == NULL) {
5319 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
5321 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.bytes_needed));
5322 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
5324 return NDR_ERR_SUCCESS;
5327 static enum ndr_err_code ndr_pull_svcctl_QueryServiceConfig2A(struct ndr_pull *ndr, int flags, struct svcctl_QueryServiceConfig2A *r)
5329 TALLOC_CTX *_mem_save_handle_0;
5330 TALLOC_CTX *_mem_save_bytes_needed_0;
5331 if (flags & NDR_IN) {
5332 ZERO_STRUCT(r->out);
5334 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
5335 NDR_PULL_ALLOC(ndr, r->in.handle);
5337 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
5338 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
5339 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
5340 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
5341 NDR_CHECK(ndr_pull_svcctl_ConfigLevel(ndr, NDR_SCALARS, &r->in.info_level));
5342 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.buf_size));
5343 NDR_PULL_ALLOC(ndr, r->out.bytes_needed);
5344 ZERO_STRUCTP(r->out.bytes_needed);
5346 if (flags & NDR_OUT) {
5347 NDR_PULL_ALLOC_N(ndr, r->out.buffer, r->in.buf_size);
5348 NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->out.buffer, r->in.buf_size));
5349 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
5350 NDR_PULL_ALLOC(ndr, r->out.bytes_needed);
5352 _mem_save_bytes_needed_0 = NDR_PULL_GET_MEM_CTX(ndr);
5353 NDR_PULL_SET_MEM_CTX(ndr, r->out.bytes_needed, LIBNDR_FLAG_REF_ALLOC);
5354 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.bytes_needed));
5355 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_bytes_needed_0, LIBNDR_FLAG_REF_ALLOC);
5356 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
5358 return NDR_ERR_SUCCESS;
5361 _PUBLIC_ void ndr_print_svcctl_QueryServiceConfig2A(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_QueryServiceConfig2A *r)
5363 ndr_print_struct(ndr, name, "svcctl_QueryServiceConfig2A");
5365 if (flags & NDR_SET_VALUES) {
5366 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
5368 if (flags & NDR_IN) {
5369 ndr_print_struct(ndr, "in", "svcctl_QueryServiceConfig2A");
5371 ndr_print_ptr(ndr, "handle", r->in.handle);
5373 ndr_print_policy_handle(ndr, "handle", r->in.handle);
5375 ndr_print_svcctl_ConfigLevel(ndr, "info_level", r->in.info_level);
5376 ndr_print_uint32(ndr, "buf_size", r->in.buf_size);
5379 if (flags & NDR_OUT) {
5380 ndr_print_struct(ndr, "out", "svcctl_QueryServiceConfig2A");
5382 ndr_print_array_uint8(ndr, "buffer", r->out.buffer, r->in.buf_size);
5383 ndr_print_ptr(ndr, "bytes_needed", r->out.bytes_needed);
5385 ndr_print_uint32(ndr, "bytes_needed", *r->out.bytes_needed);
5387 ndr_print_WERROR(ndr, "result", r->out.result);
5393 static enum ndr_err_code ndr_push_svcctl_QueryServiceConfig2W(struct ndr_push *ndr, int flags, const struct svcctl_QueryServiceConfig2W *r)
5395 if (flags & NDR_IN) {
5396 if (r->in.handle == NULL) {
5397 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
5399 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
5400 NDR_CHECK(ndr_push_svcctl_ConfigLevel(ndr, NDR_SCALARS, r->in.info_level));
5401 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.buf_size));
5403 if (flags & NDR_OUT) {
5404 if (r->out.buffer == NULL) {
5405 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
5407 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.buf_size));
5408 NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->out.buffer, r->in.buf_size));
5409 if (r->out.bytes_needed == NULL) {
5410 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
5412 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.bytes_needed));
5413 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
5415 return NDR_ERR_SUCCESS;
5418 static enum ndr_err_code ndr_pull_svcctl_QueryServiceConfig2W(struct ndr_pull *ndr, int flags, struct svcctl_QueryServiceConfig2W *r)
5420 TALLOC_CTX *_mem_save_handle_0;
5421 TALLOC_CTX *_mem_save_bytes_needed_0;
5422 if (flags & NDR_IN) {
5423 ZERO_STRUCT(r->out);
5425 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
5426 NDR_PULL_ALLOC(ndr, r->in.handle);
5428 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
5429 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
5430 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
5431 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
5432 NDR_CHECK(ndr_pull_svcctl_ConfigLevel(ndr, NDR_SCALARS, &r->in.info_level));
5433 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.buf_size));
5434 if (r->in.buf_size < 0 || r->in.buf_size > 8192) {
5435 return ndr_pull_error(ndr, NDR_ERR_RANGE, "value out of range");
5437 NDR_PULL_ALLOC_N(ndr, r->out.buffer, r->in.buf_size);
5438 memset(CONST_DISCARD(struct svcctl_QueryServiceConfig2W *,r->out.buffer), 0, (r->in.buf_size) * sizeof(*r->out.buffer));
5439 NDR_PULL_ALLOC(ndr, r->out.bytes_needed);
5440 ZERO_STRUCTP(r->out.bytes_needed);
5442 if (flags & NDR_OUT) {
5443 NDR_CHECK(ndr_pull_array_size(ndr, &r->out.buffer));
5444 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
5445 NDR_PULL_ALLOC_N(ndr, r->out.buffer, ndr_get_array_size(ndr, &r->out.buffer));
5447 NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->out.buffer, ndr_get_array_size(ndr, &r->out.buffer)));
5448 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
5449 NDR_PULL_ALLOC(ndr, r->out.bytes_needed);
5451 _mem_save_bytes_needed_0 = NDR_PULL_GET_MEM_CTX(ndr);
5452 NDR_PULL_SET_MEM_CTX(ndr, r->out.bytes_needed, LIBNDR_FLAG_REF_ALLOC);
5453 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.bytes_needed));
5454 if (*r->out.bytes_needed < 0 || *r->out.bytes_needed > 8192) {
5455 return ndr_pull_error(ndr, NDR_ERR_RANGE, "value out of range");
5457 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_bytes_needed_0, LIBNDR_FLAG_REF_ALLOC);
5458 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
5459 if (r->out.buffer) {
5460 NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->out.buffer, r->in.buf_size));
5463 return NDR_ERR_SUCCESS;
5466 _PUBLIC_ void ndr_print_svcctl_QueryServiceConfig2W(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_QueryServiceConfig2W *r)
5468 ndr_print_struct(ndr, name, "svcctl_QueryServiceConfig2W");
5470 if (flags & NDR_SET_VALUES) {
5471 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
5473 if (flags & NDR_IN) {
5474 ndr_print_struct(ndr, "in", "svcctl_QueryServiceConfig2W");
5476 ndr_print_ptr(ndr, "handle", r->in.handle);
5478 ndr_print_policy_handle(ndr, "handle", r->in.handle);
5480 ndr_print_svcctl_ConfigLevel(ndr, "info_level", r->in.info_level);
5481 ndr_print_uint32(ndr, "buf_size", r->in.buf_size);
5484 if (flags & NDR_OUT) {
5485 ndr_print_struct(ndr, "out", "svcctl_QueryServiceConfig2W");
5487 ndr_print_ptr(ndr, "buffer", r->out.buffer);
5489 ndr_print_array_uint8(ndr, "buffer", r->out.buffer, r->in.buf_size);
5491 ndr_print_ptr(ndr, "bytes_needed", r->out.bytes_needed);
5493 ndr_print_uint32(ndr, "bytes_needed", *r->out.bytes_needed);
5495 ndr_print_WERROR(ndr, "result", r->out.result);
5501 static enum ndr_err_code ndr_push_svcctl_QueryServiceStatusEx(struct ndr_push *ndr, int flags, const struct svcctl_QueryServiceStatusEx *r)
5503 if (flags & NDR_IN) {
5504 if (r->in.handle == NULL) {
5505 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
5507 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
5508 NDR_CHECK(ndr_push_svcctl_StatusLevel(ndr, NDR_SCALARS, r->in.info_level));
5509 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.buf_size));
5511 if (flags & NDR_OUT) {
5512 if (r->out.buffer == NULL) {
5513 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
5515 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.buf_size));
5516 NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->out.buffer, r->in.buf_size));
5517 if (r->out.bytes_needed == NULL) {
5518 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
5520 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.bytes_needed));
5521 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
5523 return NDR_ERR_SUCCESS;
5526 static enum ndr_err_code ndr_pull_svcctl_QueryServiceStatusEx(struct ndr_pull *ndr, int flags, struct svcctl_QueryServiceStatusEx *r)
5528 TALLOC_CTX *_mem_save_handle_0;
5529 TALLOC_CTX *_mem_save_bytes_needed_0;
5530 if (flags & NDR_IN) {
5531 ZERO_STRUCT(r->out);
5533 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
5534 NDR_PULL_ALLOC(ndr, r->in.handle);
5536 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
5537 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
5538 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
5539 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
5540 NDR_CHECK(ndr_pull_svcctl_StatusLevel(ndr, NDR_SCALARS, &r->in.info_level));
5541 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.buf_size));
5542 if (r->in.buf_size < 0 || r->in.buf_size > 8192) {
5543 return ndr_pull_error(ndr, NDR_ERR_RANGE, "value out of range");
5545 NDR_PULL_ALLOC_N(ndr, r->out.buffer, r->in.buf_size);
5546 memset(CONST_DISCARD(struct svcctl_QueryServiceStatusEx *,r->out.buffer), 0, (r->in.buf_size) * sizeof(*r->out.buffer));
5547 NDR_PULL_ALLOC(ndr, r->out.bytes_needed);
5548 ZERO_STRUCTP(r->out.bytes_needed);
5550 if (flags & NDR_OUT) {
5551 NDR_CHECK(ndr_pull_array_size(ndr, &r->out.buffer));
5552 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
5553 NDR_PULL_ALLOC_N(ndr, r->out.buffer, ndr_get_array_size(ndr, &r->out.buffer));
5555 NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->out.buffer, ndr_get_array_size(ndr, &r->out.buffer)));
5556 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
5557 NDR_PULL_ALLOC(ndr, r->out.bytes_needed);
5559 _mem_save_bytes_needed_0 = NDR_PULL_GET_MEM_CTX(ndr);
5560 NDR_PULL_SET_MEM_CTX(ndr, r->out.bytes_needed, LIBNDR_FLAG_REF_ALLOC);
5561 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.bytes_needed));
5562 if (*r->out.bytes_needed < 0 || *r->out.bytes_needed > 8192) {
5563 return ndr_pull_error(ndr, NDR_ERR_RANGE, "value out of range");
5565 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_bytes_needed_0, LIBNDR_FLAG_REF_ALLOC);
5566 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
5567 if (r->out.buffer) {
5568 NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->out.buffer, r->in.buf_size));
5571 return NDR_ERR_SUCCESS;
5574 _PUBLIC_ void ndr_print_svcctl_QueryServiceStatusEx(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_QueryServiceStatusEx *r)
5576 ndr_print_struct(ndr, name, "svcctl_QueryServiceStatusEx");
5578 if (flags & NDR_SET_VALUES) {
5579 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
5581 if (flags & NDR_IN) {
5582 ndr_print_struct(ndr, "in", "svcctl_QueryServiceStatusEx");
5584 ndr_print_ptr(ndr, "handle", r->in.handle);
5586 ndr_print_policy_handle(ndr, "handle", r->in.handle);
5588 ndr_print_svcctl_StatusLevel(ndr, "info_level", r->in.info_level);
5589 ndr_print_uint32(ndr, "buf_size", r->in.buf_size);
5592 if (flags & NDR_OUT) {
5593 ndr_print_struct(ndr, "out", "svcctl_QueryServiceStatusEx");
5595 ndr_print_ptr(ndr, "buffer", r->out.buffer);
5597 ndr_print_array_uint8(ndr, "buffer", r->out.buffer, r->in.buf_size);
5599 ndr_print_ptr(ndr, "bytes_needed", r->out.bytes_needed);
5601 ndr_print_uint32(ndr, "bytes_needed", *r->out.bytes_needed);
5603 ndr_print_WERROR(ndr, "result", r->out.result);
5609 static enum ndr_err_code ndr_push_EnumServicesStatusExA(struct ndr_push *ndr, int flags, const struct EnumServicesStatusExA *r)
5611 if (flags & NDR_IN) {
5612 if (r->in.scmanager == NULL) {
5613 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
5615 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.scmanager));
5616 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.info_level));
5617 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.type));
5618 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.state));
5619 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.buf_size));
5620 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.resume_handle));
5621 if (r->in.resume_handle) {
5622 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->in.resume_handle));
5625 if (flags & NDR_OUT) {
5626 NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->out.services, r->in.buf_size));
5627 if (r->out.bytes_needed == NULL) {
5628 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
5630 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.bytes_needed));
5631 if (r->out.service_returned == NULL) {
5632 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
5634 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.service_returned));
5635 NDR_CHECK(ndr_push_unique_ptr(ndr, r->out.resume_handle));
5636 if (r->out.resume_handle) {
5637 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.resume_handle));
5639 if (r->out.group_name == NULL) {
5640 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
5642 NDR_CHECK(ndr_push_unique_ptr(ndr, *r->out.group_name));
5643 if (*r->out.group_name) {
5644 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(*r->out.group_name, CH_UTF16)));
5645 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
5646 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(*r->out.group_name, CH_UTF16)));
5647 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));
5649 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
5651 return NDR_ERR_SUCCESS;
5654 static enum ndr_err_code ndr_pull_EnumServicesStatusExA(struct ndr_pull *ndr, int flags, struct EnumServicesStatusExA *r)
5656 uint32_t _ptr_resume_handle;
5657 uint32_t _ptr_group_name;
5658 TALLOC_CTX *_mem_save_scmanager_0;
5659 TALLOC_CTX *_mem_save_bytes_needed_0;
5660 TALLOC_CTX *_mem_save_service_returned_0;
5661 TALLOC_CTX *_mem_save_resume_handle_0;
5662 TALLOC_CTX *_mem_save_group_name_0;
5663 TALLOC_CTX *_mem_save_group_name_1;
5664 if (flags & NDR_IN) {
5665 ZERO_STRUCT(r->out);
5667 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
5668 NDR_PULL_ALLOC(ndr, r->in.scmanager);
5670 _mem_save_scmanager_0 = NDR_PULL_GET_MEM_CTX(ndr);
5671 NDR_PULL_SET_MEM_CTX(ndr, r->in.scmanager, LIBNDR_FLAG_REF_ALLOC);
5672 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.scmanager));
5673 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_scmanager_0, LIBNDR_FLAG_REF_ALLOC);
5674 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.info_level));
5675 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.type));
5676 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.state));
5677 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.buf_size));
5678 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_resume_handle));
5679 if (_ptr_resume_handle) {
5680 NDR_PULL_ALLOC(ndr, r->in.resume_handle);
5682 r->in.resume_handle = NULL;
5684 if (r->in.resume_handle) {
5685 _mem_save_resume_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
5686 NDR_PULL_SET_MEM_CTX(ndr, r->in.resume_handle, 0);
5687 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->in.resume_handle));
5688 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_resume_handle_0, 0);
5690 NDR_PULL_ALLOC(ndr, r->out.bytes_needed);
5691 ZERO_STRUCTP(r->out.bytes_needed);
5692 NDR_PULL_ALLOC(ndr, r->out.service_returned);
5693 ZERO_STRUCTP(r->out.service_returned);
5694 NDR_PULL_ALLOC(ndr, r->out.group_name);
5695 ZERO_STRUCTP(r->out.group_name);
5697 if (flags & NDR_OUT) {
5698 NDR_PULL_ALLOC_N(ndr, r->out.services, r->in.buf_size);
5699 NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->out.services, r->in.buf_size));
5700 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
5701 NDR_PULL_ALLOC(ndr, r->out.bytes_needed);
5703 _mem_save_bytes_needed_0 = NDR_PULL_GET_MEM_CTX(ndr);
5704 NDR_PULL_SET_MEM_CTX(ndr, r->out.bytes_needed, LIBNDR_FLAG_REF_ALLOC);
5705 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.bytes_needed));
5706 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_bytes_needed_0, LIBNDR_FLAG_REF_ALLOC);
5707 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
5708 NDR_PULL_ALLOC(ndr, r->out.service_returned);
5710 _mem_save_service_returned_0 = NDR_PULL_GET_MEM_CTX(ndr);
5711 NDR_PULL_SET_MEM_CTX(ndr, r->out.service_returned, LIBNDR_FLAG_REF_ALLOC);
5712 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.service_returned));
5713 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_service_returned_0, LIBNDR_FLAG_REF_ALLOC);
5714 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_resume_handle));
5715 if (_ptr_resume_handle) {
5716 NDR_PULL_ALLOC(ndr, r->out.resume_handle);
5718 r->out.resume_handle = NULL;
5720 if (r->out.resume_handle) {
5721 _mem_save_resume_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
5722 NDR_PULL_SET_MEM_CTX(ndr, r->out.resume_handle, 0);
5723 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.resume_handle));
5724 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_resume_handle_0, 0);
5726 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
5727 NDR_PULL_ALLOC(ndr, r->out.group_name);
5729 _mem_save_group_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
5730 NDR_PULL_SET_MEM_CTX(ndr, r->out.group_name, LIBNDR_FLAG_REF_ALLOC);
5731 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_group_name));
5732 if (_ptr_group_name) {
5733 NDR_PULL_ALLOC(ndr, *r->out.group_name);
5735 *r->out.group_name = NULL;
5737 if (*r->out.group_name) {
5738 _mem_save_group_name_1 = NDR_PULL_GET_MEM_CTX(ndr);
5739 NDR_PULL_SET_MEM_CTX(ndr, *r->out.group_name, 0);
5740 NDR_CHECK(ndr_pull_array_size(ndr, r->out.group_name));
5741 NDR_CHECK(ndr_pull_array_length(ndr, r->out.group_name));
5742 if (ndr_get_array_length(ndr, r->out.group_name) > ndr_get_array_size(ndr, r->out.group_name)) {
5743 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));
5745 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, r->out.group_name), sizeof(uint16_t)));
5746 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));
5747 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_group_name_1, 0);
5749 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_group_name_0, LIBNDR_FLAG_REF_ALLOC);
5750 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
5752 return NDR_ERR_SUCCESS;
5755 _PUBLIC_ void ndr_print_EnumServicesStatusExA(struct ndr_print *ndr, const char *name, int flags, const struct EnumServicesStatusExA *r)
5757 ndr_print_struct(ndr, name, "EnumServicesStatusExA");
5759 if (flags & NDR_SET_VALUES) {
5760 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
5762 if (flags & NDR_IN) {
5763 ndr_print_struct(ndr, "in", "EnumServicesStatusExA");
5765 ndr_print_ptr(ndr, "scmanager", r->in.scmanager);
5767 ndr_print_policy_handle(ndr, "scmanager", r->in.scmanager);
5769 ndr_print_uint32(ndr, "info_level", r->in.info_level);
5770 ndr_print_uint32(ndr, "type", r->in.type);
5771 ndr_print_uint32(ndr, "state", r->in.state);
5772 ndr_print_uint32(ndr, "buf_size", r->in.buf_size);
5773 ndr_print_ptr(ndr, "resume_handle", r->in.resume_handle);
5775 if (r->in.resume_handle) {
5776 ndr_print_uint32(ndr, "resume_handle", *r->in.resume_handle);
5781 if (flags & NDR_OUT) {
5782 ndr_print_struct(ndr, "out", "EnumServicesStatusExA");
5784 ndr_print_array_uint8(ndr, "services", r->out.services, r->in.buf_size);
5785 ndr_print_ptr(ndr, "bytes_needed", r->out.bytes_needed);
5787 ndr_print_uint32(ndr, "bytes_needed", *r->out.bytes_needed);
5789 ndr_print_ptr(ndr, "service_returned", r->out.service_returned);
5791 ndr_print_uint32(ndr, "service_returned", *r->out.service_returned);
5793 ndr_print_ptr(ndr, "resume_handle", r->out.resume_handle);
5795 if (r->out.resume_handle) {
5796 ndr_print_uint32(ndr, "resume_handle", *r->out.resume_handle);
5799 ndr_print_ptr(ndr, "group_name", r->out.group_name);
5801 ndr_print_ptr(ndr, "group_name", *r->out.group_name);
5803 if (*r->out.group_name) {
5804 ndr_print_string(ndr, "group_name", *r->out.group_name);
5808 ndr_print_WERROR(ndr, "result", r->out.result);
5814 static enum ndr_err_code ndr_push_EnumServicesStatusExW(struct ndr_push *ndr, int flags, const struct EnumServicesStatusExW *r)
5816 if (flags & NDR_IN) {
5817 if (r->in.scmanager == NULL) {
5818 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
5820 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.scmanager));
5821 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.info_level));
5822 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.type));
5823 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.state));
5824 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.buf_size));
5825 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.resume_handle));
5826 if (r->in.resume_handle) {
5827 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->in.resume_handle));
5829 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.group_name));
5830 if (r->in.group_name) {
5831 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.group_name, CH_UTF16)));
5832 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
5833 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.group_name, CH_UTF16)));
5834 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.group_name, ndr_charset_length(r->in.group_name, CH_UTF16), sizeof(uint16_t), CH_UTF16));
5837 if (flags & NDR_OUT) {
5838 if (r->out.services == NULL) {
5839 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
5841 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.buf_size));
5842 NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->out.services, r->in.buf_size));
5843 if (r->out.bytes_needed == NULL) {
5844 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
5846 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.bytes_needed));
5847 if (r->out.service_returned == NULL) {
5848 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
5850 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.service_returned));
5851 NDR_CHECK(ndr_push_unique_ptr(ndr, r->out.resume_handle));
5852 if (r->out.resume_handle) {
5853 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.resume_handle));
5855 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
5857 return NDR_ERR_SUCCESS;
5860 static enum ndr_err_code ndr_pull_EnumServicesStatusExW(struct ndr_pull *ndr, int flags, struct EnumServicesStatusExW *r)
5862 uint32_t _ptr_resume_handle;
5863 uint32_t _ptr_group_name;
5864 TALLOC_CTX *_mem_save_scmanager_0;
5865 TALLOC_CTX *_mem_save_bytes_needed_0;
5866 TALLOC_CTX *_mem_save_service_returned_0;
5867 TALLOC_CTX *_mem_save_resume_handle_0;
5868 TALLOC_CTX *_mem_save_group_name_0;
5869 if (flags & NDR_IN) {
5870 ZERO_STRUCT(r->out);
5872 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
5873 NDR_PULL_ALLOC(ndr, r->in.scmanager);
5875 _mem_save_scmanager_0 = NDR_PULL_GET_MEM_CTX(ndr);
5876 NDR_PULL_SET_MEM_CTX(ndr, r->in.scmanager, LIBNDR_FLAG_REF_ALLOC);
5877 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.scmanager));
5878 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_scmanager_0, LIBNDR_FLAG_REF_ALLOC);
5879 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.info_level));
5880 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.type));
5881 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.state));
5882 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.buf_size));
5883 if (r->in.buf_size < 0 || r->in.buf_size > 262144) {
5884 return ndr_pull_error(ndr, NDR_ERR_RANGE, "value out of range");
5886 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_resume_handle));
5887 if (_ptr_resume_handle) {
5888 NDR_PULL_ALLOC(ndr, r->in.resume_handle);
5890 r->in.resume_handle = NULL;
5892 if (r->in.resume_handle) {
5893 _mem_save_resume_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
5894 NDR_PULL_SET_MEM_CTX(ndr, r->in.resume_handle, 0);
5895 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->in.resume_handle));
5896 if (*r->in.resume_handle < 0 || *r->in.resume_handle > 262144) {
5897 return ndr_pull_error(ndr, NDR_ERR_RANGE, "value out of range");
5899 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_resume_handle_0, 0);
5901 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_group_name));
5902 if (_ptr_group_name) {
5903 NDR_PULL_ALLOC(ndr, r->in.group_name);
5905 r->in.group_name = NULL;
5907 if (r->in.group_name) {
5908 _mem_save_group_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
5909 NDR_PULL_SET_MEM_CTX(ndr, r->in.group_name, 0);
5910 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.group_name));
5911 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.group_name));
5912 if (ndr_get_array_length(ndr, &r->in.group_name) > ndr_get_array_size(ndr, &r->in.group_name)) {
5913 return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.group_name), ndr_get_array_length(ndr, &r->in.group_name));
5915 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.group_name), sizeof(uint16_t)));
5916 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.group_name, ndr_get_array_length(ndr, &r->in.group_name), sizeof(uint16_t), CH_UTF16));
5917 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_group_name_0, 0);
5919 NDR_PULL_ALLOC_N(ndr, r->out.services, r->in.buf_size);
5920 memset(CONST_DISCARD(struct EnumServicesStatusExW *,r->out.services), 0, (r->in.buf_size) * sizeof(*r->out.services));
5921 NDR_PULL_ALLOC(ndr, r->out.bytes_needed);
5922 ZERO_STRUCTP(r->out.bytes_needed);
5923 NDR_PULL_ALLOC(ndr, r->out.service_returned);
5924 ZERO_STRUCTP(r->out.service_returned);
5926 if (flags & NDR_OUT) {
5927 NDR_CHECK(ndr_pull_array_size(ndr, &r->out.services));
5928 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
5929 NDR_PULL_ALLOC_N(ndr, r->out.services, ndr_get_array_size(ndr, &r->out.services));
5931 NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->out.services, ndr_get_array_size(ndr, &r->out.services)));
5932 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
5933 NDR_PULL_ALLOC(ndr, r->out.bytes_needed);
5935 _mem_save_bytes_needed_0 = NDR_PULL_GET_MEM_CTX(ndr);
5936 NDR_PULL_SET_MEM_CTX(ndr, r->out.bytes_needed, LIBNDR_FLAG_REF_ALLOC);
5937 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.bytes_needed));
5938 if (*r->out.bytes_needed < 0 || *r->out.bytes_needed > 262144) {
5939 return ndr_pull_error(ndr, NDR_ERR_RANGE, "value out of range");
5941 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_bytes_needed_0, LIBNDR_FLAG_REF_ALLOC);
5942 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
5943 NDR_PULL_ALLOC(ndr, r->out.service_returned);
5945 _mem_save_service_returned_0 = NDR_PULL_GET_MEM_CTX(ndr);
5946 NDR_PULL_SET_MEM_CTX(ndr, r->out.service_returned, LIBNDR_FLAG_REF_ALLOC);
5947 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.service_returned));
5948 if (*r->out.service_returned < 0 || *r->out.service_returned > 262144) {
5949 return ndr_pull_error(ndr, NDR_ERR_RANGE, "value out of range");
5951 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_service_returned_0, LIBNDR_FLAG_REF_ALLOC);
5952 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_resume_handle));
5953 if (_ptr_resume_handle) {
5954 NDR_PULL_ALLOC(ndr, r->out.resume_handle);
5956 r->out.resume_handle = NULL;
5958 if (r->out.resume_handle) {
5959 _mem_save_resume_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
5960 NDR_PULL_SET_MEM_CTX(ndr, r->out.resume_handle, 0);
5961 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.resume_handle));
5962 if (*r->out.resume_handle < 0 || *r->out.resume_handle > 262144) {
5963 return ndr_pull_error(ndr, NDR_ERR_RANGE, "value out of range");
5965 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_resume_handle_0, 0);
5967 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
5968 if (r->out.services) {
5969 NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->out.services, r->in.buf_size));
5972 return NDR_ERR_SUCCESS;
5975 _PUBLIC_ void ndr_print_EnumServicesStatusExW(struct ndr_print *ndr, const char *name, int flags, const struct EnumServicesStatusExW *r)
5977 ndr_print_struct(ndr, name, "EnumServicesStatusExW");
5979 if (flags & NDR_SET_VALUES) {
5980 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
5982 if (flags & NDR_IN) {
5983 ndr_print_struct(ndr, "in", "EnumServicesStatusExW");
5985 ndr_print_ptr(ndr, "scmanager", r->in.scmanager);
5987 ndr_print_policy_handle(ndr, "scmanager", r->in.scmanager);
5989 ndr_print_uint32(ndr, "info_level", r->in.info_level);
5990 ndr_print_uint32(ndr, "type", r->in.type);
5991 ndr_print_uint32(ndr, "state", r->in.state);
5992 ndr_print_uint32(ndr, "buf_size", r->in.buf_size);
5993 ndr_print_ptr(ndr, "resume_handle", r->in.resume_handle);
5995 if (r->in.resume_handle) {
5996 ndr_print_uint32(ndr, "resume_handle", *r->in.resume_handle);
5999 ndr_print_ptr(ndr, "group_name", r->in.group_name);
6001 if (r->in.group_name) {
6002 ndr_print_string(ndr, "group_name", r->in.group_name);
6007 if (flags & NDR_OUT) {
6008 ndr_print_struct(ndr, "out", "EnumServicesStatusExW");
6010 ndr_print_ptr(ndr, "services", r->out.services);
6012 ndr_print_array_uint8(ndr, "services", r->out.services, r->in.buf_size);
6014 ndr_print_ptr(ndr, "bytes_needed", r->out.bytes_needed);
6016 ndr_print_uint32(ndr, "bytes_needed", *r->out.bytes_needed);
6018 ndr_print_ptr(ndr, "service_returned", r->out.service_returned);
6020 ndr_print_uint32(ndr, "service_returned", *r->out.service_returned);
6022 ndr_print_ptr(ndr, "resume_handle", r->out.resume_handle);
6024 if (r->out.resume_handle) {
6025 ndr_print_uint32(ndr, "resume_handle", *r->out.resume_handle);
6028 ndr_print_WERROR(ndr, "result", r->out.result);
6034 static enum ndr_err_code ndr_push_svcctl_SCSendTSMessage(struct ndr_push *ndr, int flags, const struct svcctl_SCSendTSMessage *r)
6036 if (flags & NDR_IN) {
6038 if (flags & NDR_OUT) {
6039 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
6041 return NDR_ERR_SUCCESS;
6044 static enum ndr_err_code ndr_pull_svcctl_SCSendTSMessage(struct ndr_pull *ndr, int flags, struct svcctl_SCSendTSMessage *r)
6046 if (flags & NDR_IN) {
6048 if (flags & NDR_OUT) {
6049 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
6051 return NDR_ERR_SUCCESS;
6054 _PUBLIC_ void ndr_print_svcctl_SCSendTSMessage(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_SCSendTSMessage *r)
6056 ndr_print_struct(ndr, name, "svcctl_SCSendTSMessage");
6058 if (flags & NDR_SET_VALUES) {
6059 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
6061 if (flags & NDR_IN) {
6062 ndr_print_struct(ndr, "in", "svcctl_SCSendTSMessage");
6066 if (flags & NDR_OUT) {
6067 ndr_print_struct(ndr, "out", "svcctl_SCSendTSMessage");
6069 ndr_print_WERROR(ndr, "result", r->out.result);
6075 static const struct ndr_interface_call svcctl_calls[] = {
6077 "svcctl_CloseServiceHandle",
6078 sizeof(struct svcctl_CloseServiceHandle),
6079 (ndr_push_flags_fn_t) ndr_push_svcctl_CloseServiceHandle,
6080 (ndr_pull_flags_fn_t) ndr_pull_svcctl_CloseServiceHandle,
6081 (ndr_print_function_t) ndr_print_svcctl_CloseServiceHandle,
6085 "svcctl_ControlService",
6086 sizeof(struct svcctl_ControlService),
6087 (ndr_push_flags_fn_t) ndr_push_svcctl_ControlService,
6088 (ndr_pull_flags_fn_t) ndr_pull_svcctl_ControlService,
6089 (ndr_print_function_t) ndr_print_svcctl_ControlService,
6093 "svcctl_DeleteService",
6094 sizeof(struct svcctl_DeleteService),
6095 (ndr_push_flags_fn_t) ndr_push_svcctl_DeleteService,
6096 (ndr_pull_flags_fn_t) ndr_pull_svcctl_DeleteService,
6097 (ndr_print_function_t) ndr_print_svcctl_DeleteService,
6101 "svcctl_LockServiceDatabase",
6102 sizeof(struct svcctl_LockServiceDatabase),
6103 (ndr_push_flags_fn_t) ndr_push_svcctl_LockServiceDatabase,
6104 (ndr_pull_flags_fn_t) ndr_pull_svcctl_LockServiceDatabase,
6105 (ndr_print_function_t) ndr_print_svcctl_LockServiceDatabase,
6109 "svcctl_QueryServiceObjectSecurity",
6110 sizeof(struct svcctl_QueryServiceObjectSecurity),
6111 (ndr_push_flags_fn_t) ndr_push_svcctl_QueryServiceObjectSecurity,
6112 (ndr_pull_flags_fn_t) ndr_pull_svcctl_QueryServiceObjectSecurity,
6113 (ndr_print_function_t) ndr_print_svcctl_QueryServiceObjectSecurity,
6117 "svcctl_SetServiceObjectSecurity",
6118 sizeof(struct svcctl_SetServiceObjectSecurity),
6119 (ndr_push_flags_fn_t) ndr_push_svcctl_SetServiceObjectSecurity,
6120 (ndr_pull_flags_fn_t) ndr_pull_svcctl_SetServiceObjectSecurity,
6121 (ndr_print_function_t) ndr_print_svcctl_SetServiceObjectSecurity,
6125 "svcctl_QueryServiceStatus",
6126 sizeof(struct svcctl_QueryServiceStatus),
6127 (ndr_push_flags_fn_t) ndr_push_svcctl_QueryServiceStatus,
6128 (ndr_pull_flags_fn_t) ndr_pull_svcctl_QueryServiceStatus,
6129 (ndr_print_function_t) ndr_print_svcctl_QueryServiceStatus,
6133 "svcctl_SetServiceStatus",
6134 sizeof(struct svcctl_SetServiceStatus),
6135 (ndr_push_flags_fn_t) ndr_push_svcctl_SetServiceStatus,
6136 (ndr_pull_flags_fn_t) ndr_pull_svcctl_SetServiceStatus,
6137 (ndr_print_function_t) ndr_print_svcctl_SetServiceStatus,
6141 "svcctl_UnlockServiceDatabase",
6142 sizeof(struct svcctl_UnlockServiceDatabase),
6143 (ndr_push_flags_fn_t) ndr_push_svcctl_UnlockServiceDatabase,
6144 (ndr_pull_flags_fn_t) ndr_pull_svcctl_UnlockServiceDatabase,
6145 (ndr_print_function_t) ndr_print_svcctl_UnlockServiceDatabase,
6149 "svcctl_NotifyBootConfigStatus",
6150 sizeof(struct svcctl_NotifyBootConfigStatus),
6151 (ndr_push_flags_fn_t) ndr_push_svcctl_NotifyBootConfigStatus,
6152 (ndr_pull_flags_fn_t) ndr_pull_svcctl_NotifyBootConfigStatus,
6153 (ndr_print_function_t) ndr_print_svcctl_NotifyBootConfigStatus,
6157 "svcctl_SCSetServiceBitsW",
6158 sizeof(struct svcctl_SCSetServiceBitsW),
6159 (ndr_push_flags_fn_t) ndr_push_svcctl_SCSetServiceBitsW,
6160 (ndr_pull_flags_fn_t) ndr_pull_svcctl_SCSetServiceBitsW,
6161 (ndr_print_function_t) ndr_print_svcctl_SCSetServiceBitsW,
6165 "svcctl_ChangeServiceConfigW",
6166 sizeof(struct svcctl_ChangeServiceConfigW),
6167 (ndr_push_flags_fn_t) ndr_push_svcctl_ChangeServiceConfigW,
6168 (ndr_pull_flags_fn_t) ndr_pull_svcctl_ChangeServiceConfigW,
6169 (ndr_print_function_t) ndr_print_svcctl_ChangeServiceConfigW,
6173 "svcctl_CreateServiceW",
6174 sizeof(struct svcctl_CreateServiceW),
6175 (ndr_push_flags_fn_t) ndr_push_svcctl_CreateServiceW,
6176 (ndr_pull_flags_fn_t) ndr_pull_svcctl_CreateServiceW,
6177 (ndr_print_function_t) ndr_print_svcctl_CreateServiceW,
6181 "svcctl_EnumDependentServicesW",
6182 sizeof(struct svcctl_EnumDependentServicesW),
6183 (ndr_push_flags_fn_t) ndr_push_svcctl_EnumDependentServicesW,
6184 (ndr_pull_flags_fn_t) ndr_pull_svcctl_EnumDependentServicesW,
6185 (ndr_print_function_t) ndr_print_svcctl_EnumDependentServicesW,
6189 "svcctl_EnumServicesStatusW",
6190 sizeof(struct svcctl_EnumServicesStatusW),
6191 (ndr_push_flags_fn_t) ndr_push_svcctl_EnumServicesStatusW,
6192 (ndr_pull_flags_fn_t) ndr_pull_svcctl_EnumServicesStatusW,
6193 (ndr_print_function_t) ndr_print_svcctl_EnumServicesStatusW,
6197 "svcctl_OpenSCManagerW",
6198 sizeof(struct svcctl_OpenSCManagerW),
6199 (ndr_push_flags_fn_t) ndr_push_svcctl_OpenSCManagerW,
6200 (ndr_pull_flags_fn_t) ndr_pull_svcctl_OpenSCManagerW,
6201 (ndr_print_function_t) ndr_print_svcctl_OpenSCManagerW,
6205 "svcctl_OpenServiceW",
6206 sizeof(struct svcctl_OpenServiceW),
6207 (ndr_push_flags_fn_t) ndr_push_svcctl_OpenServiceW,
6208 (ndr_pull_flags_fn_t) ndr_pull_svcctl_OpenServiceW,
6209 (ndr_print_function_t) ndr_print_svcctl_OpenServiceW,
6213 "svcctl_QueryServiceConfigW",
6214 sizeof(struct svcctl_QueryServiceConfigW),
6215 (ndr_push_flags_fn_t) ndr_push_svcctl_QueryServiceConfigW,
6216 (ndr_pull_flags_fn_t) ndr_pull_svcctl_QueryServiceConfigW,
6217 (ndr_print_function_t) ndr_print_svcctl_QueryServiceConfigW,
6221 "svcctl_QueryServiceLockStatusW",
6222 sizeof(struct svcctl_QueryServiceLockStatusW),
6223 (ndr_push_flags_fn_t) ndr_push_svcctl_QueryServiceLockStatusW,
6224 (ndr_pull_flags_fn_t) ndr_pull_svcctl_QueryServiceLockStatusW,
6225 (ndr_print_function_t) ndr_print_svcctl_QueryServiceLockStatusW,
6229 "svcctl_StartServiceW",
6230 sizeof(struct svcctl_StartServiceW),
6231 (ndr_push_flags_fn_t) ndr_push_svcctl_StartServiceW,
6232 (ndr_pull_flags_fn_t) ndr_pull_svcctl_StartServiceW,
6233 (ndr_print_function_t) ndr_print_svcctl_StartServiceW,
6237 "svcctl_GetServiceDisplayNameW",
6238 sizeof(struct svcctl_GetServiceDisplayNameW),
6239 (ndr_push_flags_fn_t) ndr_push_svcctl_GetServiceDisplayNameW,
6240 (ndr_pull_flags_fn_t) ndr_pull_svcctl_GetServiceDisplayNameW,
6241 (ndr_print_function_t) ndr_print_svcctl_GetServiceDisplayNameW,
6245 "svcctl_GetServiceKeyNameW",
6246 sizeof(struct svcctl_GetServiceKeyNameW),
6247 (ndr_push_flags_fn_t) ndr_push_svcctl_GetServiceKeyNameW,
6248 (ndr_pull_flags_fn_t) ndr_pull_svcctl_GetServiceKeyNameW,
6249 (ndr_print_function_t) ndr_print_svcctl_GetServiceKeyNameW,
6253 "svcctl_SCSetServiceBitsA",
6254 sizeof(struct svcctl_SCSetServiceBitsA),
6255 (ndr_push_flags_fn_t) ndr_push_svcctl_SCSetServiceBitsA,
6256 (ndr_pull_flags_fn_t) ndr_pull_svcctl_SCSetServiceBitsA,
6257 (ndr_print_function_t) ndr_print_svcctl_SCSetServiceBitsA,
6261 "svcctl_ChangeServiceConfigA",
6262 sizeof(struct svcctl_ChangeServiceConfigA),
6263 (ndr_push_flags_fn_t) ndr_push_svcctl_ChangeServiceConfigA,
6264 (ndr_pull_flags_fn_t) ndr_pull_svcctl_ChangeServiceConfigA,
6265 (ndr_print_function_t) ndr_print_svcctl_ChangeServiceConfigA,
6269 "svcctl_CreateServiceA",
6270 sizeof(struct svcctl_CreateServiceA),
6271 (ndr_push_flags_fn_t) ndr_push_svcctl_CreateServiceA,
6272 (ndr_pull_flags_fn_t) ndr_pull_svcctl_CreateServiceA,
6273 (ndr_print_function_t) ndr_print_svcctl_CreateServiceA,
6277 "svcctl_EnumDependentServicesA",
6278 sizeof(struct svcctl_EnumDependentServicesA),
6279 (ndr_push_flags_fn_t) ndr_push_svcctl_EnumDependentServicesA,
6280 (ndr_pull_flags_fn_t) ndr_pull_svcctl_EnumDependentServicesA,
6281 (ndr_print_function_t) ndr_print_svcctl_EnumDependentServicesA,
6285 "svcctl_EnumServicesStatusA",
6286 sizeof(struct svcctl_EnumServicesStatusA),
6287 (ndr_push_flags_fn_t) ndr_push_svcctl_EnumServicesStatusA,
6288 (ndr_pull_flags_fn_t) ndr_pull_svcctl_EnumServicesStatusA,
6289 (ndr_print_function_t) ndr_print_svcctl_EnumServicesStatusA,
6293 "svcctl_OpenSCManagerA",
6294 sizeof(struct svcctl_OpenSCManagerA),
6295 (ndr_push_flags_fn_t) ndr_push_svcctl_OpenSCManagerA,
6296 (ndr_pull_flags_fn_t) ndr_pull_svcctl_OpenSCManagerA,
6297 (ndr_print_function_t) ndr_print_svcctl_OpenSCManagerA,
6301 "svcctl_OpenServiceA",
6302 sizeof(struct svcctl_OpenServiceA),
6303 (ndr_push_flags_fn_t) ndr_push_svcctl_OpenServiceA,
6304 (ndr_pull_flags_fn_t) ndr_pull_svcctl_OpenServiceA,
6305 (ndr_print_function_t) ndr_print_svcctl_OpenServiceA,
6309 "svcctl_QueryServiceConfigA",
6310 sizeof(struct svcctl_QueryServiceConfigA),
6311 (ndr_push_flags_fn_t) ndr_push_svcctl_QueryServiceConfigA,
6312 (ndr_pull_flags_fn_t) ndr_pull_svcctl_QueryServiceConfigA,
6313 (ndr_print_function_t) ndr_print_svcctl_QueryServiceConfigA,
6317 "svcctl_QueryServiceLockStatusA",
6318 sizeof(struct svcctl_QueryServiceLockStatusA),
6319 (ndr_push_flags_fn_t) ndr_push_svcctl_QueryServiceLockStatusA,
6320 (ndr_pull_flags_fn_t) ndr_pull_svcctl_QueryServiceLockStatusA,
6321 (ndr_print_function_t) ndr_print_svcctl_QueryServiceLockStatusA,
6325 "svcctl_StartServiceA",
6326 sizeof(struct svcctl_StartServiceA),
6327 (ndr_push_flags_fn_t) ndr_push_svcctl_StartServiceA,
6328 (ndr_pull_flags_fn_t) ndr_pull_svcctl_StartServiceA,
6329 (ndr_print_function_t) ndr_print_svcctl_StartServiceA,
6333 "svcctl_GetServiceDisplayNameA",
6334 sizeof(struct svcctl_GetServiceDisplayNameA),
6335 (ndr_push_flags_fn_t) ndr_push_svcctl_GetServiceDisplayNameA,
6336 (ndr_pull_flags_fn_t) ndr_pull_svcctl_GetServiceDisplayNameA,
6337 (ndr_print_function_t) ndr_print_svcctl_GetServiceDisplayNameA,
6341 "svcctl_GetServiceKeyNameA",
6342 sizeof(struct svcctl_GetServiceKeyNameA),
6343 (ndr_push_flags_fn_t) ndr_push_svcctl_GetServiceKeyNameA,
6344 (ndr_pull_flags_fn_t) ndr_pull_svcctl_GetServiceKeyNameA,
6345 (ndr_print_function_t) ndr_print_svcctl_GetServiceKeyNameA,
6349 "svcctl_GetCurrentGroupeStateW",
6350 sizeof(struct svcctl_GetCurrentGroupeStateW),
6351 (ndr_push_flags_fn_t) ndr_push_svcctl_GetCurrentGroupeStateW,
6352 (ndr_pull_flags_fn_t) ndr_pull_svcctl_GetCurrentGroupeStateW,
6353 (ndr_print_function_t) ndr_print_svcctl_GetCurrentGroupeStateW,
6357 "svcctl_EnumServiceGroupW",
6358 sizeof(struct svcctl_EnumServiceGroupW),
6359 (ndr_push_flags_fn_t) ndr_push_svcctl_EnumServiceGroupW,
6360 (ndr_pull_flags_fn_t) ndr_pull_svcctl_EnumServiceGroupW,
6361 (ndr_print_function_t) ndr_print_svcctl_EnumServiceGroupW,
6365 "svcctl_ChangeServiceConfig2A",
6366 sizeof(struct svcctl_ChangeServiceConfig2A),
6367 (ndr_push_flags_fn_t) ndr_push_svcctl_ChangeServiceConfig2A,
6368 (ndr_pull_flags_fn_t) ndr_pull_svcctl_ChangeServiceConfig2A,
6369 (ndr_print_function_t) ndr_print_svcctl_ChangeServiceConfig2A,
6373 "svcctl_ChangeServiceConfig2W",
6374 sizeof(struct svcctl_ChangeServiceConfig2W),
6375 (ndr_push_flags_fn_t) ndr_push_svcctl_ChangeServiceConfig2W,
6376 (ndr_pull_flags_fn_t) ndr_pull_svcctl_ChangeServiceConfig2W,
6377 (ndr_print_function_t) ndr_print_svcctl_ChangeServiceConfig2W,
6381 "svcctl_QueryServiceConfig2A",
6382 sizeof(struct svcctl_QueryServiceConfig2A),
6383 (ndr_push_flags_fn_t) ndr_push_svcctl_QueryServiceConfig2A,
6384 (ndr_pull_flags_fn_t) ndr_pull_svcctl_QueryServiceConfig2A,
6385 (ndr_print_function_t) ndr_print_svcctl_QueryServiceConfig2A,
6389 "svcctl_QueryServiceConfig2W",
6390 sizeof(struct svcctl_QueryServiceConfig2W),
6391 (ndr_push_flags_fn_t) ndr_push_svcctl_QueryServiceConfig2W,
6392 (ndr_pull_flags_fn_t) ndr_pull_svcctl_QueryServiceConfig2W,
6393 (ndr_print_function_t) ndr_print_svcctl_QueryServiceConfig2W,
6397 "svcctl_QueryServiceStatusEx",
6398 sizeof(struct svcctl_QueryServiceStatusEx),
6399 (ndr_push_flags_fn_t) ndr_push_svcctl_QueryServiceStatusEx,
6400 (ndr_pull_flags_fn_t) ndr_pull_svcctl_QueryServiceStatusEx,
6401 (ndr_print_function_t) ndr_print_svcctl_QueryServiceStatusEx,
6405 "EnumServicesStatusExA",
6406 sizeof(struct EnumServicesStatusExA),
6407 (ndr_push_flags_fn_t) ndr_push_EnumServicesStatusExA,
6408 (ndr_pull_flags_fn_t) ndr_pull_EnumServicesStatusExA,
6409 (ndr_print_function_t) ndr_print_EnumServicesStatusExA,
6413 "EnumServicesStatusExW",
6414 sizeof(struct EnumServicesStatusExW),
6415 (ndr_push_flags_fn_t) ndr_push_EnumServicesStatusExW,
6416 (ndr_pull_flags_fn_t) ndr_pull_EnumServicesStatusExW,
6417 (ndr_print_function_t) ndr_print_EnumServicesStatusExW,
6421 "svcctl_SCSendTSMessage",
6422 sizeof(struct svcctl_SCSendTSMessage),
6423 (ndr_push_flags_fn_t) ndr_push_svcctl_SCSendTSMessage,
6424 (ndr_pull_flags_fn_t) ndr_pull_svcctl_SCSendTSMessage,
6425 (ndr_print_function_t) ndr_print_svcctl_SCSendTSMessage,
6428 { NULL, 0, NULL, NULL, NULL, false }
6431 static const char * const svcctl_endpoint_strings[] = {
6432 "ncacn_np:[\\pipe\\svcctl]",
6436 static const struct ndr_interface_string_array svcctl_endpoints = {
6438 .names = svcctl_endpoint_strings
6441 static const char * const svcctl_authservice_strings[] = {
6445 static const struct ndr_interface_string_array svcctl_authservices = {
6447 .names = svcctl_authservice_strings
6451 const struct ndr_interface_table ndr_table_svcctl = {
6454 {0x367abb81,0x9844,0x35f1,{0xad,0x32},{0x98,0xf0,0x38,0x00,0x10,0x03}},
6457 .helpstring = NDR_SVCCTL_HELPSTRING,
6459 .calls = svcctl_calls,
6460 .endpoints = &svcctl_endpoints,
6461 .authservices = &svcctl_authservices