libwbclient: add wbcBlob and wbcNamedBlob.
[Samba.git] / source / librpc / gen_ndr / ndr_svcctl.c
blobaef361e195ffbaa94e6624ed8a2e69967fa2c232
1 /* parser auto-generated by pidl */
3 #include "includes.h"
4 #include "librpc/gen_ndr/ndr_svcctl.h"
6 static enum ndr_err_code ndr_push_SERVICE_LOCK_STATUS(struct ndr_push *ndr, int ndr_flags, const struct SERVICE_LOCK_STATUS *r)
8 if (ndr_flags & NDR_SCALARS) {
9 NDR_CHECK(ndr_push_align(ndr, 4));
10 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->is_locked));
11 NDR_CHECK(ndr_push_unique_ptr(ndr, r->lock_owner));
12 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->lock_duration));
14 if (ndr_flags & NDR_BUFFERS) {
15 if (r->lock_owner) {
16 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->lock_owner, CH_UTF16)));
17 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
18 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->lock_owner, CH_UTF16)));
19 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->lock_owner, ndr_charset_length(r->lock_owner, CH_UTF16), sizeof(uint16_t), CH_UTF16));
22 return NDR_ERR_SUCCESS;
25 static enum ndr_err_code ndr_pull_SERVICE_LOCK_STATUS(struct ndr_pull *ndr, int ndr_flags, struct SERVICE_LOCK_STATUS *r)
27 uint32_t _ptr_lock_owner;
28 TALLOC_CTX *_mem_save_lock_owner_0;
29 if (ndr_flags & NDR_SCALARS) {
30 NDR_CHECK(ndr_pull_align(ndr, 4));
31 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->is_locked));
32 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_lock_owner));
33 if (_ptr_lock_owner) {
34 NDR_PULL_ALLOC(ndr, r->lock_owner);
35 } else {
36 r->lock_owner = NULL;
38 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->lock_duration));
40 if (ndr_flags & NDR_BUFFERS) {
41 if (r->lock_owner) {
42 _mem_save_lock_owner_0 = NDR_PULL_GET_MEM_CTX(ndr);
43 NDR_PULL_SET_MEM_CTX(ndr, r->lock_owner, 0);
44 NDR_CHECK(ndr_pull_array_size(ndr, &r->lock_owner));
45 NDR_CHECK(ndr_pull_array_length(ndr, &r->lock_owner));
46 if (ndr_get_array_length(ndr, &r->lock_owner) > ndr_get_array_size(ndr, &r->lock_owner)) {
47 return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->lock_owner), ndr_get_array_length(ndr, &r->lock_owner));
49 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->lock_owner), sizeof(uint16_t)));
50 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->lock_owner, ndr_get_array_length(ndr, &r->lock_owner), sizeof(uint16_t), CH_UTF16));
51 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_lock_owner_0, 0);
54 return NDR_ERR_SUCCESS;
57 _PUBLIC_ void ndr_print_SERVICE_LOCK_STATUS(struct ndr_print *ndr, const char *name, const struct SERVICE_LOCK_STATUS *r)
59 ndr_print_struct(ndr, name, "SERVICE_LOCK_STATUS");
60 ndr->depth++;
61 ndr_print_uint32(ndr, "is_locked", r->is_locked);
62 ndr_print_ptr(ndr, "lock_owner", r->lock_owner);
63 ndr->depth++;
64 if (r->lock_owner) {
65 ndr_print_string(ndr, "lock_owner", r->lock_owner);
67 ndr->depth--;
68 ndr_print_uint32(ndr, "lock_duration", r->lock_duration);
69 ndr->depth--;
72 static enum ndr_err_code ndr_push_SERVICE_STATUS(struct ndr_push *ndr, int ndr_flags, const struct SERVICE_STATUS *r)
74 if (ndr_flags & NDR_SCALARS) {
75 NDR_CHECK(ndr_push_align(ndr, 4));
76 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->type));
77 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->state));
78 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->controls_accepted));
79 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->win32_exit_code));
80 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->service_exit_code));
81 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->check_point));
82 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->wait_hint));
84 if (ndr_flags & NDR_BUFFERS) {
86 return NDR_ERR_SUCCESS;
89 static enum ndr_err_code ndr_pull_SERVICE_STATUS(struct ndr_pull *ndr, int ndr_flags, struct SERVICE_STATUS *r)
91 if (ndr_flags & NDR_SCALARS) {
92 NDR_CHECK(ndr_pull_align(ndr, 4));
93 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->type));
94 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->state));
95 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->controls_accepted));
96 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->win32_exit_code));
97 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->service_exit_code));
98 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->check_point));
99 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->wait_hint));
101 if (ndr_flags & NDR_BUFFERS) {
103 return NDR_ERR_SUCCESS;
106 _PUBLIC_ void ndr_print_SERVICE_STATUS(struct ndr_print *ndr, const char *name, const struct SERVICE_STATUS *r)
108 ndr_print_struct(ndr, name, "SERVICE_STATUS");
109 ndr->depth++;
110 ndr_print_uint32(ndr, "type", r->type);
111 ndr_print_uint32(ndr, "state", r->state);
112 ndr_print_uint32(ndr, "controls_accepted", r->controls_accepted);
113 ndr_print_WERROR(ndr, "win32_exit_code", r->win32_exit_code);
114 ndr_print_uint32(ndr, "service_exit_code", r->service_exit_code);
115 ndr_print_uint32(ndr, "check_point", r->check_point);
116 ndr_print_uint32(ndr, "wait_hint", r->wait_hint);
117 ndr->depth--;
120 static enum ndr_err_code ndr_push_ENUM_SERVICE_STATUS(struct ndr_push *ndr, int ndr_flags, const struct ENUM_SERVICE_STATUS *r)
122 if (ndr_flags & NDR_SCALARS) {
123 NDR_CHECK(ndr_push_align(ndr, 4));
125 uint32_t _flags_save_string = ndr->flags;
126 ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_ASCII|LIBNDR_FLAG_STR_NULLTERM);
127 NDR_CHECK(ndr_push_relative_ptr1(ndr, r->service_name));
128 ndr->flags = _flags_save_string;
131 uint32_t _flags_save_string = ndr->flags;
132 ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_ASCII|LIBNDR_FLAG_STR_NULLTERM);
133 NDR_CHECK(ndr_push_relative_ptr1(ndr, r->display_name));
134 ndr->flags = _flags_save_string;
136 NDR_CHECK(ndr_push_SERVICE_STATUS(ndr, NDR_SCALARS, &r->status));
138 if (ndr_flags & NDR_BUFFERS) {
140 uint32_t _flags_save_string = ndr->flags;
141 ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_ASCII|LIBNDR_FLAG_STR_NULLTERM);
142 if (r->service_name) {
143 NDR_CHECK(ndr_push_relative_ptr2(ndr, r->service_name));
144 NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->service_name));
146 ndr->flags = _flags_save_string;
149 uint32_t _flags_save_string = ndr->flags;
150 ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_ASCII|LIBNDR_FLAG_STR_NULLTERM);
151 if (r->display_name) {
152 NDR_CHECK(ndr_push_relative_ptr2(ndr, r->display_name));
153 NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->display_name));
155 ndr->flags = _flags_save_string;
158 return NDR_ERR_SUCCESS;
161 static enum ndr_err_code ndr_pull_ENUM_SERVICE_STATUS(struct ndr_pull *ndr, int ndr_flags, struct ENUM_SERVICE_STATUS *r)
163 uint32_t _ptr_service_name;
164 TALLOC_CTX *_mem_save_service_name_0;
165 uint32_t _ptr_display_name;
166 TALLOC_CTX *_mem_save_display_name_0;
167 if (ndr_flags & NDR_SCALARS) {
168 NDR_CHECK(ndr_pull_align(ndr, 4));
170 uint32_t _flags_save_string = ndr->flags;
171 ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_ASCII|LIBNDR_FLAG_STR_NULLTERM);
172 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_service_name));
173 if (_ptr_service_name) {
174 NDR_PULL_ALLOC(ndr, r->service_name);
175 NDR_CHECK(ndr_pull_relative_ptr1(ndr, r->service_name, _ptr_service_name));
176 } else {
177 r->service_name = NULL;
179 ndr->flags = _flags_save_string;
182 uint32_t _flags_save_string = ndr->flags;
183 ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_ASCII|LIBNDR_FLAG_STR_NULLTERM);
184 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_display_name));
185 if (_ptr_display_name) {
186 NDR_PULL_ALLOC(ndr, r->display_name);
187 NDR_CHECK(ndr_pull_relative_ptr1(ndr, r->display_name, _ptr_display_name));
188 } else {
189 r->display_name = NULL;
191 ndr->flags = _flags_save_string;
193 NDR_CHECK(ndr_pull_SERVICE_STATUS(ndr, NDR_SCALARS, &r->status));
195 if (ndr_flags & NDR_BUFFERS) {
197 uint32_t _flags_save_string = ndr->flags;
198 ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_ASCII|LIBNDR_FLAG_STR_NULLTERM);
199 if (r->service_name) {
200 uint32_t _relative_save_offset;
201 _relative_save_offset = ndr->offset;
202 NDR_CHECK(ndr_pull_relative_ptr2(ndr, r->service_name));
203 _mem_save_service_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
204 NDR_PULL_SET_MEM_CTX(ndr, r->service_name, 0);
205 NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->service_name));
206 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_service_name_0, 0);
207 ndr->offset = _relative_save_offset;
209 ndr->flags = _flags_save_string;
212 uint32_t _flags_save_string = ndr->flags;
213 ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_ASCII|LIBNDR_FLAG_STR_NULLTERM);
214 if (r->display_name) {
215 uint32_t _relative_save_offset;
216 _relative_save_offset = ndr->offset;
217 NDR_CHECK(ndr_pull_relative_ptr2(ndr, r->display_name));
218 _mem_save_display_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
219 NDR_PULL_SET_MEM_CTX(ndr, r->display_name, 0);
220 NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->display_name));
221 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_display_name_0, 0);
222 ndr->offset = _relative_save_offset;
224 ndr->flags = _flags_save_string;
227 return NDR_ERR_SUCCESS;
230 _PUBLIC_ void ndr_print_ENUM_SERVICE_STATUS(struct ndr_print *ndr, const char *name, const struct ENUM_SERVICE_STATUS *r)
232 ndr_print_struct(ndr, name, "ENUM_SERVICE_STATUS");
233 ndr->depth++;
234 ndr_print_ptr(ndr, "service_name", r->service_name);
235 ndr->depth++;
236 if (r->service_name) {
237 ndr_print_string(ndr, "service_name", r->service_name);
239 ndr->depth--;
240 ndr_print_ptr(ndr, "display_name", r->display_name);
241 ndr->depth++;
242 if (r->display_name) {
243 ndr_print_string(ndr, "display_name", r->display_name);
245 ndr->depth--;
246 ndr_print_SERVICE_STATUS(ndr, "status", &r->status);
247 ndr->depth--;
250 _PUBLIC_ enum ndr_err_code ndr_push_svcctl_ServerType(struct ndr_push *ndr, int ndr_flags, uint32_t r)
252 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r));
253 return NDR_ERR_SUCCESS;
256 _PUBLIC_ enum ndr_err_code ndr_pull_svcctl_ServerType(struct ndr_pull *ndr, int ndr_flags, uint32_t *r)
258 uint32_t v;
259 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &v));
260 *r = v;
261 return NDR_ERR_SUCCESS;
264 _PUBLIC_ void ndr_print_svcctl_ServerType(struct ndr_print *ndr, const char *name, uint32_t r)
266 ndr_print_uint32(ndr, name, r);
267 ndr->depth++;
268 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_WORKSTATION", SV_TYPE_WORKSTATION, r);
269 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_SERVER", SV_TYPE_SERVER, r);
270 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_SQLSERVER", SV_TYPE_SQLSERVER, r);
271 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_DOMAIN_CTRL", SV_TYPE_DOMAIN_CTRL, r);
272 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_DOMAIN_BAKCTRL", SV_TYPE_DOMAIN_BAKCTRL, r);
273 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_TIME_SOURCE", SV_TYPE_TIME_SOURCE, r);
274 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_AFP", SV_TYPE_AFP, r);
275 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_NOVELL", SV_TYPE_NOVELL, r);
276 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_DOMAIN_MEMBER", SV_TYPE_DOMAIN_MEMBER, r);
277 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_PRINTQ_SERVER", SV_TYPE_PRINTQ_SERVER, r);
278 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_DIALIN_SERVER", SV_TYPE_DIALIN_SERVER, r);
279 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_SERVER_UNIX", SV_TYPE_SERVER_UNIX, r);
280 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_NT", SV_TYPE_NT, r);
281 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_WFW", SV_TYPE_WFW, r);
282 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_SERVER_MFPN", SV_TYPE_SERVER_MFPN, r);
283 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_SERVER_NT", SV_TYPE_SERVER_NT, r);
284 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_POTENTIAL_BROWSER", SV_TYPE_POTENTIAL_BROWSER, r);
285 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_BACKUP_BROWSER", SV_TYPE_BACKUP_BROWSER, r);
286 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_MASTER_BROWSER", SV_TYPE_MASTER_BROWSER, r);
287 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_DOMAIN_MASTER", SV_TYPE_DOMAIN_MASTER, r);
288 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_SERVER_OSF", SV_TYPE_SERVER_OSF, r);
289 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_SERVER_VMS", SV_TYPE_SERVER_VMS, r);
290 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_WIN95_PLUS", SV_TYPE_WIN95_PLUS, r);
291 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_DFS_SERVER", SV_TYPE_DFS_SERVER, r);
292 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_ALTERNATE_XPORT", SV_TYPE_ALTERNATE_XPORT, r);
293 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_LOCAL_LIST_ONLY", SV_TYPE_LOCAL_LIST_ONLY, r);
294 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_DOMAIN_ENUM", SV_TYPE_DOMAIN_ENUM, r);
295 ndr->depth--;
298 static enum ndr_err_code ndr_push_svcctl_MgrAccessMask(struct ndr_push *ndr, int ndr_flags, uint32_t r)
300 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r));
301 return NDR_ERR_SUCCESS;
304 static enum ndr_err_code ndr_pull_svcctl_MgrAccessMask(struct ndr_pull *ndr, int ndr_flags, uint32_t *r)
306 uint32_t v;
307 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &v));
308 *r = v;
309 return NDR_ERR_SUCCESS;
312 _PUBLIC_ void ndr_print_svcctl_MgrAccessMask(struct ndr_print *ndr, const char *name, uint32_t r)
314 ndr_print_uint32(ndr, name, r);
315 ndr->depth++;
316 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SC_RIGHT_MGR_CONNECT", SC_RIGHT_MGR_CONNECT, r);
317 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SC_RIGHT_MGR_CREATE_SERVICE", SC_RIGHT_MGR_CREATE_SERVICE, r);
318 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SC_RIGHT_MGR_ENUMERATE_SERVICE", SC_RIGHT_MGR_ENUMERATE_SERVICE, r);
319 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SC_RIGHT_MGR_LOCK", SC_RIGHT_MGR_LOCK, r);
320 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SC_RIGHT_MGR_QUERY_LOCK_STATUS", SC_RIGHT_MGR_QUERY_LOCK_STATUS, r);
321 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SC_RIGHT_MGR_MODIFY_BOOT_CONFIG", SC_RIGHT_MGR_MODIFY_BOOT_CONFIG, r);
322 ndr->depth--;
325 static enum ndr_err_code ndr_push_svcctl_ServiceAccessMask(struct ndr_push *ndr, int ndr_flags, uint32_t r)
327 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r));
328 return NDR_ERR_SUCCESS;
331 static enum ndr_err_code ndr_pull_svcctl_ServiceAccessMask(struct ndr_pull *ndr, int ndr_flags, uint32_t *r)
333 uint32_t v;
334 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &v));
335 *r = v;
336 return NDR_ERR_SUCCESS;
339 _PUBLIC_ void ndr_print_svcctl_ServiceAccessMask(struct ndr_print *ndr, const char *name, uint32_t r)
341 ndr_print_uint32(ndr, name, r);
342 ndr->depth++;
343 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SC_RIGHT_SVC_QUERY_CONFIG", SC_RIGHT_SVC_QUERY_CONFIG, r);
344 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SC_RIGHT_SVC_CHANGE_CONFIG", SC_RIGHT_SVC_CHANGE_CONFIG, r);
345 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SC_RIGHT_SVC_QUERY_STATUS", SC_RIGHT_SVC_QUERY_STATUS, r);
346 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SC_RIGHT_SVC_ENUMERATE_DEPENDENTS", SC_RIGHT_SVC_ENUMERATE_DEPENDENTS, r);
347 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SC_RIGHT_SVC_START", SC_RIGHT_SVC_START, r);
348 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SC_RIGHT_SVC_STOP", SC_RIGHT_SVC_STOP, r);
349 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SC_RIGHT_SVC_PAUSE_CONTINUE", SC_RIGHT_SVC_PAUSE_CONTINUE, r);
350 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SC_RIGHT_SVC_INTERROGATE", SC_RIGHT_SVC_INTERROGATE, r);
351 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SC_RIGHT_SVC_USER_DEFINED_CONTROL", SC_RIGHT_SVC_USER_DEFINED_CONTROL, r);
352 ndr->depth--;
355 _PUBLIC_ enum ndr_err_code ndr_push_QUERY_SERVICE_CONFIG(struct ndr_push *ndr, int ndr_flags, const struct QUERY_SERVICE_CONFIG *r)
357 if (ndr_flags & NDR_SCALARS) {
358 NDR_CHECK(ndr_push_align(ndr, 4));
359 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->service_type));
360 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->start_type));
361 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->error_control));
362 NDR_CHECK(ndr_push_unique_ptr(ndr, r->executablepath));
363 NDR_CHECK(ndr_push_unique_ptr(ndr, r->loadordergroup));
364 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->tag_id));
365 NDR_CHECK(ndr_push_unique_ptr(ndr, r->dependencies));
366 NDR_CHECK(ndr_push_unique_ptr(ndr, r->startname));
367 NDR_CHECK(ndr_push_unique_ptr(ndr, r->displayname));
369 if (ndr_flags & NDR_BUFFERS) {
370 if (r->executablepath) {
371 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->executablepath, CH_UTF16)));
372 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
373 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->executablepath, CH_UTF16)));
374 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->executablepath, ndr_charset_length(r->executablepath, CH_UTF16), sizeof(uint16_t), CH_UTF16));
376 if (r->loadordergroup) {
377 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->loadordergroup, CH_UTF16)));
378 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
379 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->loadordergroup, CH_UTF16)));
380 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->loadordergroup, ndr_charset_length(r->loadordergroup, CH_UTF16), sizeof(uint16_t), CH_UTF16));
382 if (r->dependencies) {
383 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->dependencies, CH_UTF16)));
384 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
385 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->dependencies, CH_UTF16)));
386 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->dependencies, ndr_charset_length(r->dependencies, CH_UTF16), sizeof(uint16_t), CH_UTF16));
388 if (r->startname) {
389 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->startname, CH_UTF16)));
390 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
391 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->startname, CH_UTF16)));
392 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->startname, ndr_charset_length(r->startname, CH_UTF16), sizeof(uint16_t), CH_UTF16));
394 if (r->displayname) {
395 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->displayname, CH_UTF16)));
396 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
397 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->displayname, CH_UTF16)));
398 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->displayname, ndr_charset_length(r->displayname, CH_UTF16), sizeof(uint16_t), CH_UTF16));
401 return NDR_ERR_SUCCESS;
404 _PUBLIC_ enum ndr_err_code ndr_pull_QUERY_SERVICE_CONFIG(struct ndr_pull *ndr, int ndr_flags, struct QUERY_SERVICE_CONFIG *r)
406 uint32_t _ptr_executablepath;
407 TALLOC_CTX *_mem_save_executablepath_0;
408 uint32_t _ptr_loadordergroup;
409 TALLOC_CTX *_mem_save_loadordergroup_0;
410 uint32_t _ptr_dependencies;
411 TALLOC_CTX *_mem_save_dependencies_0;
412 uint32_t _ptr_startname;
413 TALLOC_CTX *_mem_save_startname_0;
414 uint32_t _ptr_displayname;
415 TALLOC_CTX *_mem_save_displayname_0;
416 if (ndr_flags & NDR_SCALARS) {
417 NDR_CHECK(ndr_pull_align(ndr, 4));
418 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->service_type));
419 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->start_type));
420 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->error_control));
421 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_executablepath));
422 if (_ptr_executablepath) {
423 NDR_PULL_ALLOC(ndr, r->executablepath);
424 } else {
425 r->executablepath = NULL;
427 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_loadordergroup));
428 if (_ptr_loadordergroup) {
429 NDR_PULL_ALLOC(ndr, r->loadordergroup);
430 } else {
431 r->loadordergroup = NULL;
433 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->tag_id));
434 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_dependencies));
435 if (_ptr_dependencies) {
436 NDR_PULL_ALLOC(ndr, r->dependencies);
437 } else {
438 r->dependencies = NULL;
440 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_startname));
441 if (_ptr_startname) {
442 NDR_PULL_ALLOC(ndr, r->startname);
443 } else {
444 r->startname = NULL;
446 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_displayname));
447 if (_ptr_displayname) {
448 NDR_PULL_ALLOC(ndr, r->displayname);
449 } else {
450 r->displayname = NULL;
453 if (ndr_flags & NDR_BUFFERS) {
454 if (r->executablepath) {
455 _mem_save_executablepath_0 = NDR_PULL_GET_MEM_CTX(ndr);
456 NDR_PULL_SET_MEM_CTX(ndr, r->executablepath, 0);
457 NDR_CHECK(ndr_pull_array_size(ndr, &r->executablepath));
458 NDR_CHECK(ndr_pull_array_length(ndr, &r->executablepath));
459 if (ndr_get_array_length(ndr, &r->executablepath) > ndr_get_array_size(ndr, &r->executablepath)) {
460 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));
462 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->executablepath), sizeof(uint16_t)));
463 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->executablepath, ndr_get_array_length(ndr, &r->executablepath), sizeof(uint16_t), CH_UTF16));
464 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_executablepath_0, 0);
466 if (r->loadordergroup) {
467 _mem_save_loadordergroup_0 = NDR_PULL_GET_MEM_CTX(ndr);
468 NDR_PULL_SET_MEM_CTX(ndr, r->loadordergroup, 0);
469 NDR_CHECK(ndr_pull_array_size(ndr, &r->loadordergroup));
470 NDR_CHECK(ndr_pull_array_length(ndr, &r->loadordergroup));
471 if (ndr_get_array_length(ndr, &r->loadordergroup) > ndr_get_array_size(ndr, &r->loadordergroup)) {
472 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));
474 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->loadordergroup), sizeof(uint16_t)));
475 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->loadordergroup, ndr_get_array_length(ndr, &r->loadordergroup), sizeof(uint16_t), CH_UTF16));
476 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_loadordergroup_0, 0);
478 if (r->dependencies) {
479 _mem_save_dependencies_0 = NDR_PULL_GET_MEM_CTX(ndr);
480 NDR_PULL_SET_MEM_CTX(ndr, r->dependencies, 0);
481 NDR_CHECK(ndr_pull_array_size(ndr, &r->dependencies));
482 NDR_CHECK(ndr_pull_array_length(ndr, &r->dependencies));
483 if (ndr_get_array_length(ndr, &r->dependencies) > ndr_get_array_size(ndr, &r->dependencies)) {
484 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));
486 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->dependencies), sizeof(uint16_t)));
487 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->dependencies, ndr_get_array_length(ndr, &r->dependencies), sizeof(uint16_t), CH_UTF16));
488 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_dependencies_0, 0);
490 if (r->startname) {
491 _mem_save_startname_0 = NDR_PULL_GET_MEM_CTX(ndr);
492 NDR_PULL_SET_MEM_CTX(ndr, r->startname, 0);
493 NDR_CHECK(ndr_pull_array_size(ndr, &r->startname));
494 NDR_CHECK(ndr_pull_array_length(ndr, &r->startname));
495 if (ndr_get_array_length(ndr, &r->startname) > ndr_get_array_size(ndr, &r->startname)) {
496 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));
498 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->startname), sizeof(uint16_t)));
499 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->startname, ndr_get_array_length(ndr, &r->startname), sizeof(uint16_t), CH_UTF16));
500 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_startname_0, 0);
502 if (r->displayname) {
503 _mem_save_displayname_0 = NDR_PULL_GET_MEM_CTX(ndr);
504 NDR_PULL_SET_MEM_CTX(ndr, r->displayname, 0);
505 NDR_CHECK(ndr_pull_array_size(ndr, &r->displayname));
506 NDR_CHECK(ndr_pull_array_length(ndr, &r->displayname));
507 if (ndr_get_array_length(ndr, &r->displayname) > ndr_get_array_size(ndr, &r->displayname)) {
508 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));
510 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->displayname), sizeof(uint16_t)));
511 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->displayname, ndr_get_array_length(ndr, &r->displayname), sizeof(uint16_t), CH_UTF16));
512 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_displayname_0, 0);
515 return NDR_ERR_SUCCESS;
518 _PUBLIC_ void ndr_print_QUERY_SERVICE_CONFIG(struct ndr_print *ndr, const char *name, const struct QUERY_SERVICE_CONFIG *r)
520 ndr_print_struct(ndr, name, "QUERY_SERVICE_CONFIG");
521 ndr->depth++;
522 ndr_print_uint32(ndr, "service_type", r->service_type);
523 ndr_print_uint32(ndr, "start_type", r->start_type);
524 ndr_print_uint32(ndr, "error_control", r->error_control);
525 ndr_print_ptr(ndr, "executablepath", r->executablepath);
526 ndr->depth++;
527 if (r->executablepath) {
528 ndr_print_string(ndr, "executablepath", r->executablepath);
530 ndr->depth--;
531 ndr_print_ptr(ndr, "loadordergroup", r->loadordergroup);
532 ndr->depth++;
533 if (r->loadordergroup) {
534 ndr_print_string(ndr, "loadordergroup", r->loadordergroup);
536 ndr->depth--;
537 ndr_print_uint32(ndr, "tag_id", r->tag_id);
538 ndr_print_ptr(ndr, "dependencies", r->dependencies);
539 ndr->depth++;
540 if (r->dependencies) {
541 ndr_print_string(ndr, "dependencies", r->dependencies);
543 ndr->depth--;
544 ndr_print_ptr(ndr, "startname", r->startname);
545 ndr->depth++;
546 if (r->startname) {
547 ndr_print_string(ndr, "startname", r->startname);
549 ndr->depth--;
550 ndr_print_ptr(ndr, "displayname", r->displayname);
551 ndr->depth++;
552 if (r->displayname) {
553 ndr_print_string(ndr, "displayname", r->displayname);
555 ndr->depth--;
556 ndr->depth--;
559 _PUBLIC_ size_t ndr_size_QUERY_SERVICE_CONFIG(const struct QUERY_SERVICE_CONFIG *r, int flags)
561 return ndr_size_struct(r, flags, (ndr_push_flags_fn_t)ndr_push_QUERY_SERVICE_CONFIG);
564 static enum ndr_err_code ndr_push_svcctl_CloseServiceHandle(struct ndr_push *ndr, int flags, const struct svcctl_CloseServiceHandle *r)
566 if (flags & NDR_IN) {
567 if (r->in.handle == NULL) {
568 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
570 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
572 if (flags & NDR_OUT) {
573 if (r->out.handle == NULL) {
574 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
576 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.handle));
577 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
579 return NDR_ERR_SUCCESS;
582 static enum ndr_err_code ndr_pull_svcctl_CloseServiceHandle(struct ndr_pull *ndr, int flags, struct svcctl_CloseServiceHandle *r)
584 TALLOC_CTX *_mem_save_handle_0;
585 if (flags & NDR_IN) {
586 ZERO_STRUCT(r->out);
588 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
589 NDR_PULL_ALLOC(ndr, r->in.handle);
591 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
592 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
593 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
594 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
595 NDR_PULL_ALLOC(ndr, r->out.handle);
596 *r->out.handle = *r->in.handle;
598 if (flags & NDR_OUT) {
599 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
600 NDR_PULL_ALLOC(ndr, r->out.handle);
602 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
603 NDR_PULL_SET_MEM_CTX(ndr, r->out.handle, LIBNDR_FLAG_REF_ALLOC);
604 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.handle));
605 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
606 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
608 return NDR_ERR_SUCCESS;
611 _PUBLIC_ void ndr_print_svcctl_CloseServiceHandle(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_CloseServiceHandle *r)
613 ndr_print_struct(ndr, name, "svcctl_CloseServiceHandle");
614 ndr->depth++;
615 if (flags & NDR_SET_VALUES) {
616 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
618 if (flags & NDR_IN) {
619 ndr_print_struct(ndr, "in", "svcctl_CloseServiceHandle");
620 ndr->depth++;
621 ndr_print_ptr(ndr, "handle", r->in.handle);
622 ndr->depth++;
623 ndr_print_policy_handle(ndr, "handle", r->in.handle);
624 ndr->depth--;
625 ndr->depth--;
627 if (flags & NDR_OUT) {
628 ndr_print_struct(ndr, "out", "svcctl_CloseServiceHandle");
629 ndr->depth++;
630 ndr_print_ptr(ndr, "handle", r->out.handle);
631 ndr->depth++;
632 ndr_print_policy_handle(ndr, "handle", r->out.handle);
633 ndr->depth--;
634 ndr_print_WERROR(ndr, "result", r->out.result);
635 ndr->depth--;
637 ndr->depth--;
640 static enum ndr_err_code ndr_push_svcctl_ControlService(struct ndr_push *ndr, int flags, const struct svcctl_ControlService *r)
642 if (flags & NDR_IN) {
643 if (r->in.handle == NULL) {
644 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
646 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
647 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.control));
649 if (flags & NDR_OUT) {
650 if (r->out.service_status == NULL) {
651 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
653 NDR_CHECK(ndr_push_SERVICE_STATUS(ndr, NDR_SCALARS, r->out.service_status));
654 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
656 return NDR_ERR_SUCCESS;
659 static enum ndr_err_code ndr_pull_svcctl_ControlService(struct ndr_pull *ndr, int flags, struct svcctl_ControlService *r)
661 TALLOC_CTX *_mem_save_handle_0;
662 TALLOC_CTX *_mem_save_service_status_0;
663 if (flags & NDR_IN) {
664 ZERO_STRUCT(r->out);
666 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
667 NDR_PULL_ALLOC(ndr, r->in.handle);
669 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
670 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
671 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
672 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
673 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.control));
674 NDR_PULL_ALLOC(ndr, r->out.service_status);
675 ZERO_STRUCTP(r->out.service_status);
677 if (flags & NDR_OUT) {
678 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
679 NDR_PULL_ALLOC(ndr, r->out.service_status);
681 _mem_save_service_status_0 = NDR_PULL_GET_MEM_CTX(ndr);
682 NDR_PULL_SET_MEM_CTX(ndr, r->out.service_status, LIBNDR_FLAG_REF_ALLOC);
683 NDR_CHECK(ndr_pull_SERVICE_STATUS(ndr, NDR_SCALARS, r->out.service_status));
684 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_service_status_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_ControlService(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_ControlService *r)
692 ndr_print_struct(ndr, name, "svcctl_ControlService");
693 ndr->depth++;
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_ControlService");
699 ndr->depth++;
700 ndr_print_ptr(ndr, "handle", r->in.handle);
701 ndr->depth++;
702 ndr_print_policy_handle(ndr, "handle", r->in.handle);
703 ndr->depth--;
704 ndr_print_uint32(ndr, "control", r->in.control);
705 ndr->depth--;
707 if (flags & NDR_OUT) {
708 ndr_print_struct(ndr, "out", "svcctl_ControlService");
709 ndr->depth++;
710 ndr_print_ptr(ndr, "service_status", r->out.service_status);
711 ndr->depth++;
712 ndr_print_SERVICE_STATUS(ndr, "service_status", r->out.service_status);
713 ndr->depth--;
714 ndr_print_WERROR(ndr, "result", r->out.result);
715 ndr->depth--;
717 ndr->depth--;
720 static enum ndr_err_code ndr_push_svcctl_DeleteService(struct ndr_push *ndr, int flags, const struct svcctl_DeleteService *r)
722 if (flags & NDR_IN) {
723 if (r->in.handle == NULL) {
724 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
726 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
728 if (flags & NDR_OUT) {
729 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
731 return NDR_ERR_SUCCESS;
734 static enum ndr_err_code ndr_pull_svcctl_DeleteService(struct ndr_pull *ndr, int flags, struct svcctl_DeleteService *r)
736 TALLOC_CTX *_mem_save_handle_0;
737 if (flags & NDR_IN) {
738 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
739 NDR_PULL_ALLOC(ndr, r->in.handle);
741 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
742 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
743 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
744 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
746 if (flags & NDR_OUT) {
747 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
749 return NDR_ERR_SUCCESS;
752 _PUBLIC_ void ndr_print_svcctl_DeleteService(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_DeleteService *r)
754 ndr_print_struct(ndr, name, "svcctl_DeleteService");
755 ndr->depth++;
756 if (flags & NDR_SET_VALUES) {
757 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
759 if (flags & NDR_IN) {
760 ndr_print_struct(ndr, "in", "svcctl_DeleteService");
761 ndr->depth++;
762 ndr_print_ptr(ndr, "handle", r->in.handle);
763 ndr->depth++;
764 ndr_print_policy_handle(ndr, "handle", r->in.handle);
765 ndr->depth--;
766 ndr->depth--;
768 if (flags & NDR_OUT) {
769 ndr_print_struct(ndr, "out", "svcctl_DeleteService");
770 ndr->depth++;
771 ndr_print_WERROR(ndr, "result", r->out.result);
772 ndr->depth--;
774 ndr->depth--;
777 static enum ndr_err_code ndr_push_svcctl_LockServiceDatabase(struct ndr_push *ndr, int flags, const struct svcctl_LockServiceDatabase *r)
779 if (flags & NDR_IN) {
780 if (r->in.handle == NULL) {
781 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
783 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
785 if (flags & NDR_OUT) {
786 if (r->out.lock == NULL) {
787 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
789 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.lock));
790 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
792 return NDR_ERR_SUCCESS;
795 static enum ndr_err_code ndr_pull_svcctl_LockServiceDatabase(struct ndr_pull *ndr, int flags, struct svcctl_LockServiceDatabase *r)
797 TALLOC_CTX *_mem_save_handle_0;
798 TALLOC_CTX *_mem_save_lock_0;
799 if (flags & NDR_IN) {
800 ZERO_STRUCT(r->out);
802 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
803 NDR_PULL_ALLOC(ndr, r->in.handle);
805 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
806 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
807 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
808 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
809 NDR_PULL_ALLOC(ndr, r->out.lock);
810 ZERO_STRUCTP(r->out.lock);
812 if (flags & NDR_OUT) {
813 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
814 NDR_PULL_ALLOC(ndr, r->out.lock);
816 _mem_save_lock_0 = NDR_PULL_GET_MEM_CTX(ndr);
817 NDR_PULL_SET_MEM_CTX(ndr, r->out.lock, LIBNDR_FLAG_REF_ALLOC);
818 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.lock));
819 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_lock_0, LIBNDR_FLAG_REF_ALLOC);
820 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
822 return NDR_ERR_SUCCESS;
825 _PUBLIC_ void ndr_print_svcctl_LockServiceDatabase(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_LockServiceDatabase *r)
827 ndr_print_struct(ndr, name, "svcctl_LockServiceDatabase");
828 ndr->depth++;
829 if (flags & NDR_SET_VALUES) {
830 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
832 if (flags & NDR_IN) {
833 ndr_print_struct(ndr, "in", "svcctl_LockServiceDatabase");
834 ndr->depth++;
835 ndr_print_ptr(ndr, "handle", r->in.handle);
836 ndr->depth++;
837 ndr_print_policy_handle(ndr, "handle", r->in.handle);
838 ndr->depth--;
839 ndr->depth--;
841 if (flags & NDR_OUT) {
842 ndr_print_struct(ndr, "out", "svcctl_LockServiceDatabase");
843 ndr->depth++;
844 ndr_print_ptr(ndr, "lock", r->out.lock);
845 ndr->depth++;
846 ndr_print_policy_handle(ndr, "lock", r->out.lock);
847 ndr->depth--;
848 ndr_print_WERROR(ndr, "result", r->out.result);
849 ndr->depth--;
851 ndr->depth--;
854 static enum ndr_err_code ndr_push_svcctl_QueryServiceObjectSecurity(struct ndr_push *ndr, int flags, const struct svcctl_QueryServiceObjectSecurity *r)
856 if (flags & NDR_IN) {
857 if (r->in.handle == NULL) {
858 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
860 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
861 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.security_flags));
862 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.buffer_size));
864 if (flags & NDR_OUT) {
865 if (r->out.buffer == NULL) {
866 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
868 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.buffer_size));
869 NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->out.buffer, r->in.buffer_size));
870 if (r->out.needed == NULL) {
871 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
873 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.needed));
874 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
876 return NDR_ERR_SUCCESS;
879 static enum ndr_err_code ndr_pull_svcctl_QueryServiceObjectSecurity(struct ndr_pull *ndr, int flags, struct svcctl_QueryServiceObjectSecurity *r)
881 TALLOC_CTX *_mem_save_handle_0;
882 TALLOC_CTX *_mem_save_needed_0;
883 if (flags & NDR_IN) {
884 ZERO_STRUCT(r->out);
886 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
887 NDR_PULL_ALLOC(ndr, r->in.handle);
889 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
890 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
891 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
892 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
893 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.security_flags));
894 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.buffer_size));
895 if (r->in.buffer_size < 0 || r->in.buffer_size > 0x40000) {
896 return ndr_pull_error(ndr, NDR_ERR_RANGE, "value out of range");
898 NDR_PULL_ALLOC_N(ndr, r->out.buffer, r->in.buffer_size);
899 memset(r->out.buffer, 0, (r->in.buffer_size) * sizeof(*r->out.buffer));
900 NDR_PULL_ALLOC(ndr, r->out.needed);
901 ZERO_STRUCTP(r->out.needed);
903 if (flags & NDR_OUT) {
904 NDR_CHECK(ndr_pull_array_size(ndr, &r->out.buffer));
905 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
906 NDR_PULL_ALLOC_N(ndr, r->out.buffer, ndr_get_array_size(ndr, &r->out.buffer));
908 NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->out.buffer, ndr_get_array_size(ndr, &r->out.buffer)));
909 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
910 NDR_PULL_ALLOC(ndr, r->out.needed);
912 _mem_save_needed_0 = NDR_PULL_GET_MEM_CTX(ndr);
913 NDR_PULL_SET_MEM_CTX(ndr, r->out.needed, LIBNDR_FLAG_REF_ALLOC);
914 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.needed));
915 if (*r->out.needed < 0 || *r->out.needed > 0x40000) {
916 return ndr_pull_error(ndr, NDR_ERR_RANGE, "value out of range");
918 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_needed_0, LIBNDR_FLAG_REF_ALLOC);
919 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
920 if (r->out.buffer) {
921 NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->out.buffer, r->in.buffer_size));
924 return NDR_ERR_SUCCESS;
927 _PUBLIC_ void ndr_print_svcctl_QueryServiceObjectSecurity(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_QueryServiceObjectSecurity *r)
929 ndr_print_struct(ndr, name, "svcctl_QueryServiceObjectSecurity");
930 ndr->depth++;
931 if (flags & NDR_SET_VALUES) {
932 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
934 if (flags & NDR_IN) {
935 ndr_print_struct(ndr, "in", "svcctl_QueryServiceObjectSecurity");
936 ndr->depth++;
937 ndr_print_ptr(ndr, "handle", r->in.handle);
938 ndr->depth++;
939 ndr_print_policy_handle(ndr, "handle", r->in.handle);
940 ndr->depth--;
941 ndr_print_uint32(ndr, "security_flags", r->in.security_flags);
942 ndr_print_uint32(ndr, "buffer_size", r->in.buffer_size);
943 ndr->depth--;
945 if (flags & NDR_OUT) {
946 ndr_print_struct(ndr, "out", "svcctl_QueryServiceObjectSecurity");
947 ndr->depth++;
948 ndr_print_ptr(ndr, "buffer", r->out.buffer);
949 ndr->depth++;
950 ndr_print_array_uint8(ndr, "buffer", r->out.buffer, r->in.buffer_size);
951 ndr->depth--;
952 ndr_print_ptr(ndr, "needed", r->out.needed);
953 ndr->depth++;
954 ndr_print_uint32(ndr, "needed", *r->out.needed);
955 ndr->depth--;
956 ndr_print_WERROR(ndr, "result", r->out.result);
957 ndr->depth--;
959 ndr->depth--;
962 static enum ndr_err_code ndr_push_svcctl_SetServiceObjectSecurity(struct ndr_push *ndr, int flags, const struct svcctl_SetServiceObjectSecurity *r)
964 if (flags & NDR_IN) {
965 if (r->in.handle == NULL) {
966 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
968 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
969 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.security_flags));
970 if (r->in.buffer == NULL) {
971 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
973 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.buffer_size));
974 NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->in.buffer, r->in.buffer_size));
975 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.buffer_size));
977 if (flags & NDR_OUT) {
978 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
980 return NDR_ERR_SUCCESS;
983 static enum ndr_err_code ndr_pull_svcctl_SetServiceObjectSecurity(struct ndr_pull *ndr, int flags, struct svcctl_SetServiceObjectSecurity *r)
985 TALLOC_CTX *_mem_save_handle_0;
986 if (flags & NDR_IN) {
987 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
988 NDR_PULL_ALLOC(ndr, r->in.handle);
990 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
991 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
992 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
993 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
994 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.security_flags));
995 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.buffer));
996 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
997 NDR_PULL_ALLOC_N(ndr, r->in.buffer, ndr_get_array_size(ndr, &r->in.buffer));
999 NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->in.buffer, ndr_get_array_size(ndr, &r->in.buffer)));
1000 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.buffer_size));
1001 if (r->in.buffer) {
1002 NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->in.buffer, r->in.buffer_size));
1005 if (flags & NDR_OUT) {
1006 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
1008 return NDR_ERR_SUCCESS;
1011 _PUBLIC_ void ndr_print_svcctl_SetServiceObjectSecurity(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_SetServiceObjectSecurity *r)
1013 ndr_print_struct(ndr, name, "svcctl_SetServiceObjectSecurity");
1014 ndr->depth++;
1015 if (flags & NDR_SET_VALUES) {
1016 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
1018 if (flags & NDR_IN) {
1019 ndr_print_struct(ndr, "in", "svcctl_SetServiceObjectSecurity");
1020 ndr->depth++;
1021 ndr_print_ptr(ndr, "handle", r->in.handle);
1022 ndr->depth++;
1023 ndr_print_policy_handle(ndr, "handle", r->in.handle);
1024 ndr->depth--;
1025 ndr_print_uint32(ndr, "security_flags", r->in.security_flags);
1026 ndr_print_ptr(ndr, "buffer", r->in.buffer);
1027 ndr->depth++;
1028 ndr_print_array_uint8(ndr, "buffer", r->in.buffer, r->in.buffer_size);
1029 ndr->depth--;
1030 ndr_print_uint32(ndr, "buffer_size", r->in.buffer_size);
1031 ndr->depth--;
1033 if (flags & NDR_OUT) {
1034 ndr_print_struct(ndr, "out", "svcctl_SetServiceObjectSecurity");
1035 ndr->depth++;
1036 ndr_print_WERROR(ndr, "result", r->out.result);
1037 ndr->depth--;
1039 ndr->depth--;
1042 static enum ndr_err_code ndr_push_svcctl_QueryServiceStatus(struct ndr_push *ndr, int flags, const struct svcctl_QueryServiceStatus *r)
1044 if (flags & NDR_IN) {
1045 if (r->in.handle == NULL) {
1046 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
1048 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
1050 if (flags & NDR_OUT) {
1051 if (r->out.service_status == NULL) {
1052 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
1054 NDR_CHECK(ndr_push_SERVICE_STATUS(ndr, NDR_SCALARS, r->out.service_status));
1055 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
1057 return NDR_ERR_SUCCESS;
1060 static enum ndr_err_code ndr_pull_svcctl_QueryServiceStatus(struct ndr_pull *ndr, int flags, struct svcctl_QueryServiceStatus *r)
1062 TALLOC_CTX *_mem_save_handle_0;
1063 TALLOC_CTX *_mem_save_service_status_0;
1064 if (flags & NDR_IN) {
1065 ZERO_STRUCT(r->out);
1067 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
1068 NDR_PULL_ALLOC(ndr, r->in.handle);
1070 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
1071 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
1072 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
1073 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
1074 NDR_PULL_ALLOC(ndr, r->out.service_status);
1075 ZERO_STRUCTP(r->out.service_status);
1077 if (flags & NDR_OUT) {
1078 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
1079 NDR_PULL_ALLOC(ndr, r->out.service_status);
1081 _mem_save_service_status_0 = NDR_PULL_GET_MEM_CTX(ndr);
1082 NDR_PULL_SET_MEM_CTX(ndr, r->out.service_status, LIBNDR_FLAG_REF_ALLOC);
1083 NDR_CHECK(ndr_pull_SERVICE_STATUS(ndr, NDR_SCALARS, r->out.service_status));
1084 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_service_status_0, LIBNDR_FLAG_REF_ALLOC);
1085 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
1087 return NDR_ERR_SUCCESS;
1090 _PUBLIC_ void ndr_print_svcctl_QueryServiceStatus(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_QueryServiceStatus *r)
1092 ndr_print_struct(ndr, name, "svcctl_QueryServiceStatus");
1093 ndr->depth++;
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_QueryServiceStatus");
1099 ndr->depth++;
1100 ndr_print_ptr(ndr, "handle", r->in.handle);
1101 ndr->depth++;
1102 ndr_print_policy_handle(ndr, "handle", r->in.handle);
1103 ndr->depth--;
1104 ndr->depth--;
1106 if (flags & NDR_OUT) {
1107 ndr_print_struct(ndr, "out", "svcctl_QueryServiceStatus");
1108 ndr->depth++;
1109 ndr_print_ptr(ndr, "service_status", r->out.service_status);
1110 ndr->depth++;
1111 ndr_print_SERVICE_STATUS(ndr, "service_status", r->out.service_status);
1112 ndr->depth--;
1113 ndr_print_WERROR(ndr, "result", r->out.result);
1114 ndr->depth--;
1116 ndr->depth--;
1119 static enum ndr_err_code ndr_push_svcctl_SetServiceStatus(struct ndr_push *ndr, int flags, const struct svcctl_SetServiceStatus *r)
1121 if (flags & NDR_IN) {
1123 if (flags & NDR_OUT) {
1124 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
1126 return NDR_ERR_SUCCESS;
1129 static enum ndr_err_code ndr_pull_svcctl_SetServiceStatus(struct ndr_pull *ndr, int flags, struct svcctl_SetServiceStatus *r)
1131 if (flags & NDR_IN) {
1133 if (flags & NDR_OUT) {
1134 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
1136 return NDR_ERR_SUCCESS;
1139 _PUBLIC_ void ndr_print_svcctl_SetServiceStatus(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_SetServiceStatus *r)
1141 ndr_print_struct(ndr, name, "svcctl_SetServiceStatus");
1142 ndr->depth++;
1143 if (flags & NDR_SET_VALUES) {
1144 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
1146 if (flags & NDR_IN) {
1147 ndr_print_struct(ndr, "in", "svcctl_SetServiceStatus");
1148 ndr->depth++;
1149 ndr->depth--;
1151 if (flags & NDR_OUT) {
1152 ndr_print_struct(ndr, "out", "svcctl_SetServiceStatus");
1153 ndr->depth++;
1154 ndr_print_WERROR(ndr, "result", r->out.result);
1155 ndr->depth--;
1157 ndr->depth--;
1160 static enum ndr_err_code ndr_push_svcctl_UnlockServiceDatabase(struct ndr_push *ndr, int flags, const struct svcctl_UnlockServiceDatabase *r)
1162 if (flags & NDR_IN) {
1163 if (r->in.lock == NULL) {
1164 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
1166 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.lock));
1168 if (flags & NDR_OUT) {
1169 if (r->out.lock == NULL) {
1170 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
1172 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.lock));
1173 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
1175 return NDR_ERR_SUCCESS;
1178 static enum ndr_err_code ndr_pull_svcctl_UnlockServiceDatabase(struct ndr_pull *ndr, int flags, struct svcctl_UnlockServiceDatabase *r)
1180 TALLOC_CTX *_mem_save_lock_0;
1181 if (flags & NDR_IN) {
1182 ZERO_STRUCT(r->out);
1184 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
1185 NDR_PULL_ALLOC(ndr, r->in.lock);
1187 _mem_save_lock_0 = NDR_PULL_GET_MEM_CTX(ndr);
1188 NDR_PULL_SET_MEM_CTX(ndr, r->in.lock, LIBNDR_FLAG_REF_ALLOC);
1189 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.lock));
1190 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_lock_0, LIBNDR_FLAG_REF_ALLOC);
1191 NDR_PULL_ALLOC(ndr, r->out.lock);
1192 *r->out.lock = *r->in.lock;
1194 if (flags & NDR_OUT) {
1195 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
1196 NDR_PULL_ALLOC(ndr, r->out.lock);
1198 _mem_save_lock_0 = NDR_PULL_GET_MEM_CTX(ndr);
1199 NDR_PULL_SET_MEM_CTX(ndr, r->out.lock, LIBNDR_FLAG_REF_ALLOC);
1200 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.lock));
1201 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_lock_0, LIBNDR_FLAG_REF_ALLOC);
1202 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
1204 return NDR_ERR_SUCCESS;
1207 _PUBLIC_ void ndr_print_svcctl_UnlockServiceDatabase(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_UnlockServiceDatabase *r)
1209 ndr_print_struct(ndr, name, "svcctl_UnlockServiceDatabase");
1210 ndr->depth++;
1211 if (flags & NDR_SET_VALUES) {
1212 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
1214 if (flags & NDR_IN) {
1215 ndr_print_struct(ndr, "in", "svcctl_UnlockServiceDatabase");
1216 ndr->depth++;
1217 ndr_print_ptr(ndr, "lock", r->in.lock);
1218 ndr->depth++;
1219 ndr_print_policy_handle(ndr, "lock", r->in.lock);
1220 ndr->depth--;
1221 ndr->depth--;
1223 if (flags & NDR_OUT) {
1224 ndr_print_struct(ndr, "out", "svcctl_UnlockServiceDatabase");
1225 ndr->depth++;
1226 ndr_print_ptr(ndr, "lock", r->out.lock);
1227 ndr->depth++;
1228 ndr_print_policy_handle(ndr, "lock", r->out.lock);
1229 ndr->depth--;
1230 ndr_print_WERROR(ndr, "result", r->out.result);
1231 ndr->depth--;
1233 ndr->depth--;
1236 static enum ndr_err_code ndr_push_svcctl_NotifyBootConfigStatus(struct ndr_push *ndr, int flags, const struct svcctl_NotifyBootConfigStatus *r)
1238 if (flags & NDR_IN) {
1240 if (flags & NDR_OUT) {
1241 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
1243 return NDR_ERR_SUCCESS;
1246 static enum ndr_err_code ndr_pull_svcctl_NotifyBootConfigStatus(struct ndr_pull *ndr, int flags, struct svcctl_NotifyBootConfigStatus *r)
1248 if (flags & NDR_IN) {
1250 if (flags & NDR_OUT) {
1251 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
1253 return NDR_ERR_SUCCESS;
1256 _PUBLIC_ void ndr_print_svcctl_NotifyBootConfigStatus(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_NotifyBootConfigStatus *r)
1258 ndr_print_struct(ndr, name, "svcctl_NotifyBootConfigStatus");
1259 ndr->depth++;
1260 if (flags & NDR_SET_VALUES) {
1261 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
1263 if (flags & NDR_IN) {
1264 ndr_print_struct(ndr, "in", "svcctl_NotifyBootConfigStatus");
1265 ndr->depth++;
1266 ndr->depth--;
1268 if (flags & NDR_OUT) {
1269 ndr_print_struct(ndr, "out", "svcctl_NotifyBootConfigStatus");
1270 ndr->depth++;
1271 ndr_print_WERROR(ndr, "result", r->out.result);
1272 ndr->depth--;
1274 ndr->depth--;
1277 static enum ndr_err_code ndr_push_svcctl_SCSetServiceBitsW(struct ndr_push *ndr, int flags, const struct svcctl_SCSetServiceBitsW *r)
1279 if (flags & NDR_IN) {
1280 if (r->in.handle == NULL) {
1281 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
1283 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
1284 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.bits));
1285 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.bitson));
1286 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.immediate));
1288 if (flags & NDR_OUT) {
1289 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
1291 return NDR_ERR_SUCCESS;
1294 static enum ndr_err_code ndr_pull_svcctl_SCSetServiceBitsW(struct ndr_pull *ndr, int flags, struct svcctl_SCSetServiceBitsW *r)
1296 TALLOC_CTX *_mem_save_handle_0;
1297 if (flags & NDR_IN) {
1298 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
1299 NDR_PULL_ALLOC(ndr, r->in.handle);
1301 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
1302 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
1303 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
1304 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
1305 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.bits));
1306 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.bitson));
1307 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.immediate));
1309 if (flags & NDR_OUT) {
1310 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
1312 return NDR_ERR_SUCCESS;
1315 _PUBLIC_ void ndr_print_svcctl_SCSetServiceBitsW(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_SCSetServiceBitsW *r)
1317 ndr_print_struct(ndr, name, "svcctl_SCSetServiceBitsW");
1318 ndr->depth++;
1319 if (flags & NDR_SET_VALUES) {
1320 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
1322 if (flags & NDR_IN) {
1323 ndr_print_struct(ndr, "in", "svcctl_SCSetServiceBitsW");
1324 ndr->depth++;
1325 ndr_print_ptr(ndr, "handle", r->in.handle);
1326 ndr->depth++;
1327 ndr_print_policy_handle(ndr, "handle", r->in.handle);
1328 ndr->depth--;
1329 ndr_print_uint32(ndr, "bits", r->in.bits);
1330 ndr_print_uint32(ndr, "bitson", r->in.bitson);
1331 ndr_print_uint32(ndr, "immediate", r->in.immediate);
1332 ndr->depth--;
1334 if (flags & NDR_OUT) {
1335 ndr_print_struct(ndr, "out", "svcctl_SCSetServiceBitsW");
1336 ndr->depth++;
1337 ndr_print_WERROR(ndr, "result", r->out.result);
1338 ndr->depth--;
1340 ndr->depth--;
1343 static enum ndr_err_code ndr_push_svcctl_ChangeServiceConfigW(struct ndr_push *ndr, int flags, const struct svcctl_ChangeServiceConfigW *r)
1345 if (flags & NDR_IN) {
1346 if (r->in.handle == NULL) {
1347 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
1349 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
1350 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.type));
1351 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.start));
1352 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.error));
1353 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.binary_path));
1354 if (r->in.binary_path) {
1355 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.binary_path, CH_UTF16)));
1356 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
1357 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.binary_path, CH_UTF16)));
1358 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));
1360 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.load_order_group));
1361 if (r->in.load_order_group) {
1362 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.load_order_group, CH_UTF16)));
1363 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
1364 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.load_order_group, CH_UTF16)));
1365 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));
1367 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.dependencies));
1368 if (r->in.dependencies) {
1369 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.dependencies, CH_UTF16)));
1370 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
1371 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.dependencies, CH_UTF16)));
1372 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.dependencies, ndr_charset_length(r->in.dependencies, CH_UTF16), sizeof(uint16_t), CH_UTF16));
1374 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.service_start_name));
1375 if (r->in.service_start_name) {
1376 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.service_start_name, CH_UTF16)));
1377 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
1378 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.service_start_name, CH_UTF16)));
1379 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));
1381 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.password));
1382 if (r->in.password) {
1383 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.password, CH_UTF16)));
1384 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
1385 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.password, CH_UTF16)));
1386 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.password, ndr_charset_length(r->in.password, CH_UTF16), sizeof(uint16_t), CH_UTF16));
1388 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.display_name));
1389 if (r->in.display_name) {
1390 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.display_name, CH_UTF16)));
1391 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
1392 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.display_name, CH_UTF16)));
1393 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));
1396 if (flags & NDR_OUT) {
1397 if (r->out.tag_id == NULL) {
1398 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
1400 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.tag_id));
1401 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
1403 return NDR_ERR_SUCCESS;
1406 static enum ndr_err_code ndr_pull_svcctl_ChangeServiceConfigW(struct ndr_pull *ndr, int flags, struct svcctl_ChangeServiceConfigW *r)
1408 uint32_t _ptr_binary_path;
1409 uint32_t _ptr_load_order_group;
1410 uint32_t _ptr_dependencies;
1411 uint32_t _ptr_service_start_name;
1412 uint32_t _ptr_password;
1413 uint32_t _ptr_display_name;
1414 TALLOC_CTX *_mem_save_handle_0;
1415 TALLOC_CTX *_mem_save_binary_path_0;
1416 TALLOC_CTX *_mem_save_load_order_group_0;
1417 TALLOC_CTX *_mem_save_tag_id_0;
1418 TALLOC_CTX *_mem_save_dependencies_0;
1419 TALLOC_CTX *_mem_save_service_start_name_0;
1420 TALLOC_CTX *_mem_save_password_0;
1421 TALLOC_CTX *_mem_save_display_name_0;
1422 if (flags & NDR_IN) {
1423 ZERO_STRUCT(r->out);
1425 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
1426 NDR_PULL_ALLOC(ndr, r->in.handle);
1428 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
1429 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
1430 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
1431 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
1432 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.type));
1433 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.start));
1434 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.error));
1435 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_binary_path));
1436 if (_ptr_binary_path) {
1437 NDR_PULL_ALLOC(ndr, r->in.binary_path);
1438 } else {
1439 r->in.binary_path = NULL;
1441 if (r->in.binary_path) {
1442 _mem_save_binary_path_0 = NDR_PULL_GET_MEM_CTX(ndr);
1443 NDR_PULL_SET_MEM_CTX(ndr, r->in.binary_path, 0);
1444 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.binary_path));
1445 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.binary_path));
1446 if (ndr_get_array_length(ndr, &r->in.binary_path) > ndr_get_array_size(ndr, &r->in.binary_path)) {
1447 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));
1449 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.binary_path), sizeof(uint16_t)));
1450 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));
1451 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_binary_path_0, 0);
1453 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_load_order_group));
1454 if (_ptr_load_order_group) {
1455 NDR_PULL_ALLOC(ndr, r->in.load_order_group);
1456 } else {
1457 r->in.load_order_group = NULL;
1459 if (r->in.load_order_group) {
1460 _mem_save_load_order_group_0 = NDR_PULL_GET_MEM_CTX(ndr);
1461 NDR_PULL_SET_MEM_CTX(ndr, r->in.load_order_group, 0);
1462 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.load_order_group));
1463 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.load_order_group));
1464 if (ndr_get_array_length(ndr, &r->in.load_order_group) > ndr_get_array_size(ndr, &r->in.load_order_group)) {
1465 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));
1467 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.load_order_group), sizeof(uint16_t)));
1468 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));
1469 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_load_order_group_0, 0);
1471 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_dependencies));
1472 if (_ptr_dependencies) {
1473 NDR_PULL_ALLOC(ndr, r->in.dependencies);
1474 } else {
1475 r->in.dependencies = NULL;
1477 if (r->in.dependencies) {
1478 _mem_save_dependencies_0 = NDR_PULL_GET_MEM_CTX(ndr);
1479 NDR_PULL_SET_MEM_CTX(ndr, r->in.dependencies, 0);
1480 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.dependencies));
1481 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.dependencies));
1482 if (ndr_get_array_length(ndr, &r->in.dependencies) > ndr_get_array_size(ndr, &r->in.dependencies)) {
1483 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));
1485 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.dependencies), sizeof(uint16_t)));
1486 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.dependencies, ndr_get_array_length(ndr, &r->in.dependencies), sizeof(uint16_t), CH_UTF16));
1487 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_dependencies_0, 0);
1489 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_service_start_name));
1490 if (_ptr_service_start_name) {
1491 NDR_PULL_ALLOC(ndr, r->in.service_start_name);
1492 } else {
1493 r->in.service_start_name = NULL;
1495 if (r->in.service_start_name) {
1496 _mem_save_service_start_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
1497 NDR_PULL_SET_MEM_CTX(ndr, r->in.service_start_name, 0);
1498 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.service_start_name));
1499 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.service_start_name));
1500 if (ndr_get_array_length(ndr, &r->in.service_start_name) > ndr_get_array_size(ndr, &r->in.service_start_name)) {
1501 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));
1503 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.service_start_name), sizeof(uint16_t)));
1504 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));
1505 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_service_start_name_0, 0);
1507 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_password));
1508 if (_ptr_password) {
1509 NDR_PULL_ALLOC(ndr, r->in.password);
1510 } else {
1511 r->in.password = NULL;
1513 if (r->in.password) {
1514 _mem_save_password_0 = NDR_PULL_GET_MEM_CTX(ndr);
1515 NDR_PULL_SET_MEM_CTX(ndr, r->in.password, 0);
1516 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.password));
1517 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.password));
1518 if (ndr_get_array_length(ndr, &r->in.password) > ndr_get_array_size(ndr, &r->in.password)) {
1519 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));
1521 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.password), sizeof(uint16_t)));
1522 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.password, ndr_get_array_length(ndr, &r->in.password), sizeof(uint16_t), CH_UTF16));
1523 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_password_0, 0);
1525 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_display_name));
1526 if (_ptr_display_name) {
1527 NDR_PULL_ALLOC(ndr, r->in.display_name);
1528 } else {
1529 r->in.display_name = NULL;
1531 if (r->in.display_name) {
1532 _mem_save_display_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
1533 NDR_PULL_SET_MEM_CTX(ndr, r->in.display_name, 0);
1534 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.display_name));
1535 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.display_name));
1536 if (ndr_get_array_length(ndr, &r->in.display_name) > ndr_get_array_size(ndr, &r->in.display_name)) {
1537 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));
1539 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.display_name), sizeof(uint16_t)));
1540 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));
1541 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_display_name_0, 0);
1543 NDR_PULL_ALLOC(ndr, r->out.tag_id);
1544 ZERO_STRUCTP(r->out.tag_id);
1546 if (flags & NDR_OUT) {
1547 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
1548 NDR_PULL_ALLOC(ndr, r->out.tag_id);
1550 _mem_save_tag_id_0 = NDR_PULL_GET_MEM_CTX(ndr);
1551 NDR_PULL_SET_MEM_CTX(ndr, r->out.tag_id, LIBNDR_FLAG_REF_ALLOC);
1552 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.tag_id));
1553 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_tag_id_0, LIBNDR_FLAG_REF_ALLOC);
1554 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
1556 return NDR_ERR_SUCCESS;
1559 _PUBLIC_ void ndr_print_svcctl_ChangeServiceConfigW(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_ChangeServiceConfigW *r)
1561 ndr_print_struct(ndr, name, "svcctl_ChangeServiceConfigW");
1562 ndr->depth++;
1563 if (flags & NDR_SET_VALUES) {
1564 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
1566 if (flags & NDR_IN) {
1567 ndr_print_struct(ndr, "in", "svcctl_ChangeServiceConfigW");
1568 ndr->depth++;
1569 ndr_print_ptr(ndr, "handle", r->in.handle);
1570 ndr->depth++;
1571 ndr_print_policy_handle(ndr, "handle", r->in.handle);
1572 ndr->depth--;
1573 ndr_print_uint32(ndr, "type", r->in.type);
1574 ndr_print_uint32(ndr, "start", r->in.start);
1575 ndr_print_uint32(ndr, "error", r->in.error);
1576 ndr_print_ptr(ndr, "binary_path", r->in.binary_path);
1577 ndr->depth++;
1578 if (r->in.binary_path) {
1579 ndr_print_string(ndr, "binary_path", r->in.binary_path);
1581 ndr->depth--;
1582 ndr_print_ptr(ndr, "load_order_group", r->in.load_order_group);
1583 ndr->depth++;
1584 if (r->in.load_order_group) {
1585 ndr_print_string(ndr, "load_order_group", r->in.load_order_group);
1587 ndr->depth--;
1588 ndr_print_ptr(ndr, "dependencies", r->in.dependencies);
1589 ndr->depth++;
1590 if (r->in.dependencies) {
1591 ndr_print_string(ndr, "dependencies", r->in.dependencies);
1593 ndr->depth--;
1594 ndr_print_ptr(ndr, "service_start_name", r->in.service_start_name);
1595 ndr->depth++;
1596 if (r->in.service_start_name) {
1597 ndr_print_string(ndr, "service_start_name", r->in.service_start_name);
1599 ndr->depth--;
1600 ndr_print_ptr(ndr, "password", r->in.password);
1601 ndr->depth++;
1602 if (r->in.password) {
1603 ndr_print_string(ndr, "password", r->in.password);
1605 ndr->depth--;
1606 ndr_print_ptr(ndr, "display_name", r->in.display_name);
1607 ndr->depth++;
1608 if (r->in.display_name) {
1609 ndr_print_string(ndr, "display_name", r->in.display_name);
1611 ndr->depth--;
1612 ndr->depth--;
1614 if (flags & NDR_OUT) {
1615 ndr_print_struct(ndr, "out", "svcctl_ChangeServiceConfigW");
1616 ndr->depth++;
1617 ndr_print_ptr(ndr, "tag_id", r->out.tag_id);
1618 ndr->depth++;
1619 ndr_print_uint32(ndr, "tag_id", *r->out.tag_id);
1620 ndr->depth--;
1621 ndr_print_WERROR(ndr, "result", r->out.result);
1622 ndr->depth--;
1624 ndr->depth--;
1627 static enum ndr_err_code ndr_push_svcctl_CreateServiceW(struct ndr_push *ndr, int flags, const struct svcctl_CreateServiceW *r)
1629 if (flags & NDR_IN) {
1630 if (r->in.scmanager_handle == NULL) {
1631 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
1633 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.scmanager_handle));
1634 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.ServiceName, CH_UTF16)));
1635 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
1636 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.ServiceName, CH_UTF16)));
1637 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.ServiceName, ndr_charset_length(r->in.ServiceName, CH_UTF16), sizeof(uint16_t), CH_UTF16));
1638 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.DisplayName));
1639 if (r->in.DisplayName) {
1640 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.DisplayName, CH_UTF16)));
1641 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
1642 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.DisplayName, CH_UTF16)));
1643 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.DisplayName, ndr_charset_length(r->in.DisplayName, CH_UTF16), sizeof(uint16_t), CH_UTF16));
1645 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.desired_access));
1646 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.type));
1647 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.start_type));
1648 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.error_control));
1649 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.binary_path, CH_UTF16)));
1650 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
1651 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.binary_path, CH_UTF16)));
1652 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));
1653 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.LoadOrderGroupKey));
1654 if (r->in.LoadOrderGroupKey) {
1655 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.LoadOrderGroupKey, CH_UTF16)));
1656 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
1657 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.LoadOrderGroupKey, CH_UTF16)));
1658 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.LoadOrderGroupKey, ndr_charset_length(r->in.LoadOrderGroupKey, CH_UTF16), sizeof(uint16_t), CH_UTF16));
1660 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.TagId));
1661 if (r->in.TagId) {
1662 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->in.TagId));
1664 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.dependencies));
1665 if (r->in.dependencies) {
1666 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.dependencies_size));
1667 NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->in.dependencies, r->in.dependencies_size));
1669 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.dependencies_size));
1670 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.service_start_name));
1671 if (r->in.service_start_name) {
1672 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.service_start_name, CH_UTF16)));
1673 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
1674 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.service_start_name, CH_UTF16)));
1675 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));
1677 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.password));
1678 if (r->in.password) {
1679 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.password_size));
1680 NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->in.password, r->in.password_size));
1682 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.password_size));
1684 if (flags & NDR_OUT) {
1685 NDR_CHECK(ndr_push_unique_ptr(ndr, r->out.TagId));
1686 if (r->out.TagId) {
1687 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.TagId));
1689 if (r->out.handle == NULL) {
1690 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
1692 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.handle));
1693 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
1695 return NDR_ERR_SUCCESS;
1698 static enum ndr_err_code ndr_pull_svcctl_CreateServiceW(struct ndr_pull *ndr, int flags, struct svcctl_CreateServiceW *r)
1700 uint32_t _ptr_DisplayName;
1701 uint32_t _ptr_LoadOrderGroupKey;
1702 uint32_t _ptr_TagId;
1703 uint32_t _ptr_dependencies;
1704 uint32_t _ptr_service_start_name;
1705 uint32_t _ptr_password;
1706 TALLOC_CTX *_mem_save_scmanager_handle_0;
1707 TALLOC_CTX *_mem_save_DisplayName_0;
1708 TALLOC_CTX *_mem_save_LoadOrderGroupKey_0;
1709 TALLOC_CTX *_mem_save_TagId_0;
1710 TALLOC_CTX *_mem_save_dependencies_0;
1711 TALLOC_CTX *_mem_save_service_start_name_0;
1712 TALLOC_CTX *_mem_save_password_0;
1713 TALLOC_CTX *_mem_save_handle_0;
1714 if (flags & NDR_IN) {
1715 ZERO_STRUCT(r->out);
1717 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
1718 NDR_PULL_ALLOC(ndr, r->in.scmanager_handle);
1720 _mem_save_scmanager_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
1721 NDR_PULL_SET_MEM_CTX(ndr, r->in.scmanager_handle, LIBNDR_FLAG_REF_ALLOC);
1722 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.scmanager_handle));
1723 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_scmanager_handle_0, LIBNDR_FLAG_REF_ALLOC);
1724 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.ServiceName));
1725 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.ServiceName));
1726 if (ndr_get_array_length(ndr, &r->in.ServiceName) > ndr_get_array_size(ndr, &r->in.ServiceName)) {
1727 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));
1729 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.ServiceName), sizeof(uint16_t)));
1730 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.ServiceName, ndr_get_array_length(ndr, &r->in.ServiceName), sizeof(uint16_t), CH_UTF16));
1731 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_DisplayName));
1732 if (_ptr_DisplayName) {
1733 NDR_PULL_ALLOC(ndr, r->in.DisplayName);
1734 } else {
1735 r->in.DisplayName = NULL;
1737 if (r->in.DisplayName) {
1738 _mem_save_DisplayName_0 = NDR_PULL_GET_MEM_CTX(ndr);
1739 NDR_PULL_SET_MEM_CTX(ndr, r->in.DisplayName, 0);
1740 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.DisplayName));
1741 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.DisplayName));
1742 if (ndr_get_array_length(ndr, &r->in.DisplayName) > ndr_get_array_size(ndr, &r->in.DisplayName)) {
1743 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));
1745 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.DisplayName), sizeof(uint16_t)));
1746 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.DisplayName, ndr_get_array_length(ndr, &r->in.DisplayName), sizeof(uint16_t), CH_UTF16));
1747 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_DisplayName_0, 0);
1749 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.desired_access));
1750 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.type));
1751 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.start_type));
1752 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.error_control));
1753 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.binary_path));
1754 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.binary_path));
1755 if (ndr_get_array_length(ndr, &r->in.binary_path) > ndr_get_array_size(ndr, &r->in.binary_path)) {
1756 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));
1758 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.binary_path), sizeof(uint16_t)));
1759 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));
1760 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_LoadOrderGroupKey));
1761 if (_ptr_LoadOrderGroupKey) {
1762 NDR_PULL_ALLOC(ndr, r->in.LoadOrderGroupKey);
1763 } else {
1764 r->in.LoadOrderGroupKey = NULL;
1766 if (r->in.LoadOrderGroupKey) {
1767 _mem_save_LoadOrderGroupKey_0 = NDR_PULL_GET_MEM_CTX(ndr);
1768 NDR_PULL_SET_MEM_CTX(ndr, r->in.LoadOrderGroupKey, 0);
1769 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.LoadOrderGroupKey));
1770 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.LoadOrderGroupKey));
1771 if (ndr_get_array_length(ndr, &r->in.LoadOrderGroupKey) > ndr_get_array_size(ndr, &r->in.LoadOrderGroupKey)) {
1772 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));
1774 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.LoadOrderGroupKey), sizeof(uint16_t)));
1775 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.LoadOrderGroupKey, ndr_get_array_length(ndr, &r->in.LoadOrderGroupKey), sizeof(uint16_t), CH_UTF16));
1776 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_LoadOrderGroupKey_0, 0);
1778 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_TagId));
1779 if (_ptr_TagId) {
1780 NDR_PULL_ALLOC(ndr, r->in.TagId);
1781 } else {
1782 r->in.TagId = NULL;
1784 if (r->in.TagId) {
1785 _mem_save_TagId_0 = NDR_PULL_GET_MEM_CTX(ndr);
1786 NDR_PULL_SET_MEM_CTX(ndr, r->in.TagId, 0);
1787 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->in.TagId));
1788 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_TagId_0, 0);
1790 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_dependencies));
1791 if (_ptr_dependencies) {
1792 NDR_PULL_ALLOC(ndr, r->in.dependencies);
1793 } else {
1794 r->in.dependencies = NULL;
1796 if (r->in.dependencies) {
1797 _mem_save_dependencies_0 = NDR_PULL_GET_MEM_CTX(ndr);
1798 NDR_PULL_SET_MEM_CTX(ndr, r->in.dependencies, 0);
1799 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.dependencies));
1800 NDR_PULL_ALLOC_N(ndr, r->in.dependencies, ndr_get_array_size(ndr, &r->in.dependencies));
1801 NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->in.dependencies, ndr_get_array_size(ndr, &r->in.dependencies)));
1802 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_dependencies_0, 0);
1804 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.dependencies_size));
1805 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_service_start_name));
1806 if (_ptr_service_start_name) {
1807 NDR_PULL_ALLOC(ndr, r->in.service_start_name);
1808 } else {
1809 r->in.service_start_name = NULL;
1811 if (r->in.service_start_name) {
1812 _mem_save_service_start_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
1813 NDR_PULL_SET_MEM_CTX(ndr, r->in.service_start_name, 0);
1814 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.service_start_name));
1815 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.service_start_name));
1816 if (ndr_get_array_length(ndr, &r->in.service_start_name) > ndr_get_array_size(ndr, &r->in.service_start_name)) {
1817 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));
1819 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.service_start_name), sizeof(uint16_t)));
1820 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));
1821 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_service_start_name_0, 0);
1823 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_password));
1824 if (_ptr_password) {
1825 NDR_PULL_ALLOC(ndr, r->in.password);
1826 } else {
1827 r->in.password = NULL;
1829 if (r->in.password) {
1830 _mem_save_password_0 = NDR_PULL_GET_MEM_CTX(ndr);
1831 NDR_PULL_SET_MEM_CTX(ndr, r->in.password, 0);
1832 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.password));
1833 NDR_PULL_ALLOC_N(ndr, r->in.password, ndr_get_array_size(ndr, &r->in.password));
1834 NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->in.password, ndr_get_array_size(ndr, &r->in.password)));
1835 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_password_0, 0);
1837 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.password_size));
1838 NDR_PULL_ALLOC(ndr, r->out.handle);
1839 ZERO_STRUCTP(r->out.handle);
1840 if (r->in.dependencies) {
1841 NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->in.dependencies, r->in.dependencies_size));
1843 if (r->in.password) {
1844 NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->in.password, r->in.password_size));
1847 if (flags & NDR_OUT) {
1848 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_TagId));
1849 if (_ptr_TagId) {
1850 NDR_PULL_ALLOC(ndr, r->out.TagId);
1851 } else {
1852 r->out.TagId = NULL;
1854 if (r->out.TagId) {
1855 _mem_save_TagId_0 = NDR_PULL_GET_MEM_CTX(ndr);
1856 NDR_PULL_SET_MEM_CTX(ndr, r->out.TagId, 0);
1857 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.TagId));
1858 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_TagId_0, 0);
1860 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
1861 NDR_PULL_ALLOC(ndr, r->out.handle);
1863 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
1864 NDR_PULL_SET_MEM_CTX(ndr, r->out.handle, LIBNDR_FLAG_REF_ALLOC);
1865 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.handle));
1866 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
1867 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
1869 return NDR_ERR_SUCCESS;
1872 _PUBLIC_ void ndr_print_svcctl_CreateServiceW(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_CreateServiceW *r)
1874 ndr_print_struct(ndr, name, "svcctl_CreateServiceW");
1875 ndr->depth++;
1876 if (flags & NDR_SET_VALUES) {
1877 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
1879 if (flags & NDR_IN) {
1880 ndr_print_struct(ndr, "in", "svcctl_CreateServiceW");
1881 ndr->depth++;
1882 ndr_print_ptr(ndr, "scmanager_handle", r->in.scmanager_handle);
1883 ndr->depth++;
1884 ndr_print_policy_handle(ndr, "scmanager_handle", r->in.scmanager_handle);
1885 ndr->depth--;
1886 ndr_print_string(ndr, "ServiceName", r->in.ServiceName);
1887 ndr_print_ptr(ndr, "DisplayName", r->in.DisplayName);
1888 ndr->depth++;
1889 if (r->in.DisplayName) {
1890 ndr_print_string(ndr, "DisplayName", r->in.DisplayName);
1892 ndr->depth--;
1893 ndr_print_uint32(ndr, "desired_access", r->in.desired_access);
1894 ndr_print_uint32(ndr, "type", r->in.type);
1895 ndr_print_uint32(ndr, "start_type", r->in.start_type);
1896 ndr_print_uint32(ndr, "error_control", r->in.error_control);
1897 ndr_print_string(ndr, "binary_path", r->in.binary_path);
1898 ndr_print_ptr(ndr, "LoadOrderGroupKey", r->in.LoadOrderGroupKey);
1899 ndr->depth++;
1900 if (r->in.LoadOrderGroupKey) {
1901 ndr_print_string(ndr, "LoadOrderGroupKey", r->in.LoadOrderGroupKey);
1903 ndr->depth--;
1904 ndr_print_ptr(ndr, "TagId", r->in.TagId);
1905 ndr->depth++;
1906 if (r->in.TagId) {
1907 ndr_print_uint32(ndr, "TagId", *r->in.TagId);
1909 ndr->depth--;
1910 ndr_print_ptr(ndr, "dependencies", r->in.dependencies);
1911 ndr->depth++;
1912 if (r->in.dependencies) {
1913 ndr_print_array_uint8(ndr, "dependencies", r->in.dependencies, r->in.dependencies_size);
1915 ndr->depth--;
1916 ndr_print_uint32(ndr, "dependencies_size", r->in.dependencies_size);
1917 ndr_print_ptr(ndr, "service_start_name", r->in.service_start_name);
1918 ndr->depth++;
1919 if (r->in.service_start_name) {
1920 ndr_print_string(ndr, "service_start_name", r->in.service_start_name);
1922 ndr->depth--;
1923 ndr_print_ptr(ndr, "password", r->in.password);
1924 ndr->depth++;
1925 if (r->in.password) {
1926 ndr_print_array_uint8(ndr, "password", r->in.password, r->in.password_size);
1928 ndr->depth--;
1929 ndr_print_uint32(ndr, "password_size", r->in.password_size);
1930 ndr->depth--;
1932 if (flags & NDR_OUT) {
1933 ndr_print_struct(ndr, "out", "svcctl_CreateServiceW");
1934 ndr->depth++;
1935 ndr_print_ptr(ndr, "TagId", r->out.TagId);
1936 ndr->depth++;
1937 if (r->out.TagId) {
1938 ndr_print_uint32(ndr, "TagId", *r->out.TagId);
1940 ndr->depth--;
1941 ndr_print_ptr(ndr, "handle", r->out.handle);
1942 ndr->depth++;
1943 ndr_print_policy_handle(ndr, "handle", r->out.handle);
1944 ndr->depth--;
1945 ndr_print_WERROR(ndr, "result", r->out.result);
1946 ndr->depth--;
1948 ndr->depth--;
1951 static enum ndr_err_code ndr_push_svcctl_EnumDependentServicesW(struct ndr_push *ndr, int flags, const struct svcctl_EnumDependentServicesW *r)
1953 if (flags & NDR_IN) {
1954 if (r->in.service == NULL) {
1955 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
1957 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.service));
1958 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.state));
1959 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.buf_size));
1961 if (flags & NDR_OUT) {
1962 if (r->out.service_status == NULL) {
1963 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
1965 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.buf_size));
1966 NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->out.service_status, r->in.buf_size));
1967 if (r->out.bytes_needed == NULL) {
1968 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
1970 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.bytes_needed));
1971 if (r->out.services_returned == NULL) {
1972 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
1974 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.services_returned));
1975 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
1977 return NDR_ERR_SUCCESS;
1980 static enum ndr_err_code ndr_pull_svcctl_EnumDependentServicesW(struct ndr_pull *ndr, int flags, struct svcctl_EnumDependentServicesW *r)
1982 TALLOC_CTX *_mem_save_service_0;
1983 TALLOC_CTX *_mem_save_bytes_needed_0;
1984 TALLOC_CTX *_mem_save_services_returned_0;
1985 if (flags & NDR_IN) {
1986 ZERO_STRUCT(r->out);
1988 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
1989 NDR_PULL_ALLOC(ndr, r->in.service);
1991 _mem_save_service_0 = NDR_PULL_GET_MEM_CTX(ndr);
1992 NDR_PULL_SET_MEM_CTX(ndr, r->in.service, LIBNDR_FLAG_REF_ALLOC);
1993 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.service));
1994 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_service_0, LIBNDR_FLAG_REF_ALLOC);
1995 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.state));
1996 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.buf_size));
1997 if (r->in.buf_size < 0 || r->in.buf_size > 0x40000) {
1998 return ndr_pull_error(ndr, NDR_ERR_RANGE, "value out of range");
2000 NDR_PULL_ALLOC_N(ndr, r->out.service_status, r->in.buf_size);
2001 memset(r->out.service_status, 0, (r->in.buf_size) * sizeof(*r->out.service_status));
2002 NDR_PULL_ALLOC(ndr, r->out.bytes_needed);
2003 ZERO_STRUCTP(r->out.bytes_needed);
2004 NDR_PULL_ALLOC(ndr, r->out.services_returned);
2005 ZERO_STRUCTP(r->out.services_returned);
2007 if (flags & NDR_OUT) {
2008 NDR_CHECK(ndr_pull_array_size(ndr, &r->out.service_status));
2009 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
2010 NDR_PULL_ALLOC_N(ndr, r->out.service_status, ndr_get_array_size(ndr, &r->out.service_status));
2012 NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->out.service_status, ndr_get_array_size(ndr, &r->out.service_status)));
2013 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
2014 NDR_PULL_ALLOC(ndr, r->out.bytes_needed);
2016 _mem_save_bytes_needed_0 = NDR_PULL_GET_MEM_CTX(ndr);
2017 NDR_PULL_SET_MEM_CTX(ndr, r->out.bytes_needed, LIBNDR_FLAG_REF_ALLOC);
2018 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.bytes_needed));
2019 if (*r->out.bytes_needed < 0 || *r->out.bytes_needed > 0x40000) {
2020 return ndr_pull_error(ndr, NDR_ERR_RANGE, "value out of range");
2022 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_bytes_needed_0, LIBNDR_FLAG_REF_ALLOC);
2023 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
2024 NDR_PULL_ALLOC(ndr, r->out.services_returned);
2026 _mem_save_services_returned_0 = NDR_PULL_GET_MEM_CTX(ndr);
2027 NDR_PULL_SET_MEM_CTX(ndr, r->out.services_returned, LIBNDR_FLAG_REF_ALLOC);
2028 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.services_returned));
2029 if (*r->out.services_returned < 0 || *r->out.services_returned > 0x40000) {
2030 return ndr_pull_error(ndr, NDR_ERR_RANGE, "value out of range");
2032 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_services_returned_0, LIBNDR_FLAG_REF_ALLOC);
2033 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
2034 if (r->out.service_status) {
2035 NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->out.service_status, r->in.buf_size));
2038 return NDR_ERR_SUCCESS;
2041 _PUBLIC_ void ndr_print_svcctl_EnumDependentServicesW(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_EnumDependentServicesW *r)
2043 ndr_print_struct(ndr, name, "svcctl_EnumDependentServicesW");
2044 ndr->depth++;
2045 if (flags & NDR_SET_VALUES) {
2046 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
2048 if (flags & NDR_IN) {
2049 ndr_print_struct(ndr, "in", "svcctl_EnumDependentServicesW");
2050 ndr->depth++;
2051 ndr_print_ptr(ndr, "service", r->in.service);
2052 ndr->depth++;
2053 ndr_print_policy_handle(ndr, "service", r->in.service);
2054 ndr->depth--;
2055 ndr_print_uint32(ndr, "state", r->in.state);
2056 ndr_print_uint32(ndr, "buf_size", r->in.buf_size);
2057 ndr->depth--;
2059 if (flags & NDR_OUT) {
2060 ndr_print_struct(ndr, "out", "svcctl_EnumDependentServicesW");
2061 ndr->depth++;
2062 ndr_print_ptr(ndr, "service_status", r->out.service_status);
2063 ndr->depth++;
2064 ndr_print_array_uint8(ndr, "service_status", r->out.service_status, r->in.buf_size);
2065 ndr->depth--;
2066 ndr_print_ptr(ndr, "bytes_needed", r->out.bytes_needed);
2067 ndr->depth++;
2068 ndr_print_uint32(ndr, "bytes_needed", *r->out.bytes_needed);
2069 ndr->depth--;
2070 ndr_print_ptr(ndr, "services_returned", r->out.services_returned);
2071 ndr->depth++;
2072 ndr_print_uint32(ndr, "services_returned", *r->out.services_returned);
2073 ndr->depth--;
2074 ndr_print_WERROR(ndr, "result", r->out.result);
2075 ndr->depth--;
2077 ndr->depth--;
2080 static enum ndr_err_code ndr_push_svcctl_EnumServicesStatusW(struct ndr_push *ndr, int flags, const struct svcctl_EnumServicesStatusW *r)
2082 if (flags & NDR_IN) {
2083 if (r->in.handle == NULL) {
2084 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
2086 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
2087 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.type));
2088 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.state));
2089 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.buf_size));
2090 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.resume_handle));
2091 if (r->in.resume_handle) {
2092 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->in.resume_handle));
2095 if (flags & NDR_OUT) {
2096 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.buf_size));
2097 NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->out.service, r->in.buf_size));
2098 if (r->out.bytes_needed == NULL) {
2099 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
2101 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.bytes_needed));
2102 if (r->out.services_returned == NULL) {
2103 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
2105 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.services_returned));
2106 NDR_CHECK(ndr_push_unique_ptr(ndr, r->out.resume_handle));
2107 if (r->out.resume_handle) {
2108 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.resume_handle));
2110 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
2112 return NDR_ERR_SUCCESS;
2115 static enum ndr_err_code ndr_pull_svcctl_EnumServicesStatusW(struct ndr_pull *ndr, int flags, struct svcctl_EnumServicesStatusW *r)
2117 uint32_t _ptr_resume_handle;
2118 TALLOC_CTX *_mem_save_handle_0;
2119 TALLOC_CTX *_mem_save_bytes_needed_0;
2120 TALLOC_CTX *_mem_save_services_returned_0;
2121 TALLOC_CTX *_mem_save_resume_handle_0;
2122 if (flags & NDR_IN) {
2123 ZERO_STRUCT(r->out);
2125 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
2126 NDR_PULL_ALLOC(ndr, r->in.handle);
2128 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
2129 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
2130 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
2131 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
2132 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.type));
2133 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.state));
2134 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.buf_size));
2135 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_resume_handle));
2136 if (_ptr_resume_handle) {
2137 NDR_PULL_ALLOC(ndr, r->in.resume_handle);
2138 } else {
2139 r->in.resume_handle = NULL;
2141 if (r->in.resume_handle) {
2142 _mem_save_resume_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
2143 NDR_PULL_SET_MEM_CTX(ndr, r->in.resume_handle, 0);
2144 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->in.resume_handle));
2145 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_resume_handle_0, 0);
2147 NDR_PULL_ALLOC(ndr, r->out.bytes_needed);
2148 ZERO_STRUCTP(r->out.bytes_needed);
2149 NDR_PULL_ALLOC(ndr, r->out.services_returned);
2150 ZERO_STRUCTP(r->out.services_returned);
2152 if (flags & NDR_OUT) {
2153 NDR_CHECK(ndr_pull_array_size(ndr, &r->out.service));
2154 NDR_PULL_ALLOC_N(ndr, r->out.service, ndr_get_array_size(ndr, &r->out.service));
2155 NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->out.service, ndr_get_array_size(ndr, &r->out.service)));
2156 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
2157 NDR_PULL_ALLOC(ndr, r->out.bytes_needed);
2159 _mem_save_bytes_needed_0 = NDR_PULL_GET_MEM_CTX(ndr);
2160 NDR_PULL_SET_MEM_CTX(ndr, r->out.bytes_needed, LIBNDR_FLAG_REF_ALLOC);
2161 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.bytes_needed));
2162 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_bytes_needed_0, LIBNDR_FLAG_REF_ALLOC);
2163 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
2164 NDR_PULL_ALLOC(ndr, r->out.services_returned);
2166 _mem_save_services_returned_0 = NDR_PULL_GET_MEM_CTX(ndr);
2167 NDR_PULL_SET_MEM_CTX(ndr, r->out.services_returned, LIBNDR_FLAG_REF_ALLOC);
2168 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.services_returned));
2169 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_services_returned_0, LIBNDR_FLAG_REF_ALLOC);
2170 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_resume_handle));
2171 if (_ptr_resume_handle) {
2172 NDR_PULL_ALLOC(ndr, r->out.resume_handle);
2173 } else {
2174 r->out.resume_handle = NULL;
2176 if (r->out.resume_handle) {
2177 _mem_save_resume_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
2178 NDR_PULL_SET_MEM_CTX(ndr, r->out.resume_handle, 0);
2179 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.resume_handle));
2180 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_resume_handle_0, 0);
2182 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
2183 if (r->out.service) {
2184 NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->out.service, r->in.buf_size));
2187 return NDR_ERR_SUCCESS;
2190 _PUBLIC_ void ndr_print_svcctl_EnumServicesStatusW(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_EnumServicesStatusW *r)
2192 ndr_print_struct(ndr, name, "svcctl_EnumServicesStatusW");
2193 ndr->depth++;
2194 if (flags & NDR_SET_VALUES) {
2195 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
2197 if (flags & NDR_IN) {
2198 ndr_print_struct(ndr, "in", "svcctl_EnumServicesStatusW");
2199 ndr->depth++;
2200 ndr_print_ptr(ndr, "handle", r->in.handle);
2201 ndr->depth++;
2202 ndr_print_policy_handle(ndr, "handle", r->in.handle);
2203 ndr->depth--;
2204 ndr_print_uint32(ndr, "type", r->in.type);
2205 ndr_print_uint32(ndr, "state", r->in.state);
2206 ndr_print_uint32(ndr, "buf_size", r->in.buf_size);
2207 ndr_print_ptr(ndr, "resume_handle", r->in.resume_handle);
2208 ndr->depth++;
2209 if (r->in.resume_handle) {
2210 ndr_print_uint32(ndr, "resume_handle", *r->in.resume_handle);
2212 ndr->depth--;
2213 ndr->depth--;
2215 if (flags & NDR_OUT) {
2216 ndr_print_struct(ndr, "out", "svcctl_EnumServicesStatusW");
2217 ndr->depth++;
2218 ndr_print_array_uint8(ndr, "service", r->out.service, r->in.buf_size);
2219 ndr_print_ptr(ndr, "bytes_needed", r->out.bytes_needed);
2220 ndr->depth++;
2221 ndr_print_uint32(ndr, "bytes_needed", *r->out.bytes_needed);
2222 ndr->depth--;
2223 ndr_print_ptr(ndr, "services_returned", r->out.services_returned);
2224 ndr->depth++;
2225 ndr_print_uint32(ndr, "services_returned", *r->out.services_returned);
2226 ndr->depth--;
2227 ndr_print_ptr(ndr, "resume_handle", r->out.resume_handle);
2228 ndr->depth++;
2229 if (r->out.resume_handle) {
2230 ndr_print_uint32(ndr, "resume_handle", *r->out.resume_handle);
2232 ndr->depth--;
2233 ndr_print_WERROR(ndr, "result", r->out.result);
2234 ndr->depth--;
2236 ndr->depth--;
2239 static enum ndr_err_code ndr_push_svcctl_OpenSCManagerW(struct ndr_push *ndr, int flags, const struct svcctl_OpenSCManagerW *r)
2241 if (flags & NDR_IN) {
2242 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.MachineName));
2243 if (r->in.MachineName) {
2244 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.MachineName, CH_UTF16)));
2245 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
2246 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.MachineName, CH_UTF16)));
2247 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.MachineName, ndr_charset_length(r->in.MachineName, CH_UTF16), sizeof(uint16_t), CH_UTF16));
2249 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.DatabaseName));
2250 if (r->in.DatabaseName) {
2251 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.DatabaseName, CH_UTF16)));
2252 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
2253 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.DatabaseName, CH_UTF16)));
2254 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.DatabaseName, ndr_charset_length(r->in.DatabaseName, CH_UTF16), sizeof(uint16_t), CH_UTF16));
2256 NDR_CHECK(ndr_push_svcctl_MgrAccessMask(ndr, NDR_SCALARS, r->in.access_mask));
2258 if (flags & NDR_OUT) {
2259 if (r->out.handle == NULL) {
2260 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
2262 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.handle));
2263 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
2265 return NDR_ERR_SUCCESS;
2268 static enum ndr_err_code ndr_pull_svcctl_OpenSCManagerW(struct ndr_pull *ndr, int flags, struct svcctl_OpenSCManagerW *r)
2270 uint32_t _ptr_MachineName;
2271 uint32_t _ptr_DatabaseName;
2272 TALLOC_CTX *_mem_save_MachineName_0;
2273 TALLOC_CTX *_mem_save_DatabaseName_0;
2274 TALLOC_CTX *_mem_save_handle_0;
2275 if (flags & NDR_IN) {
2276 ZERO_STRUCT(r->out);
2278 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_MachineName));
2279 if (_ptr_MachineName) {
2280 NDR_PULL_ALLOC(ndr, r->in.MachineName);
2281 } else {
2282 r->in.MachineName = NULL;
2284 if (r->in.MachineName) {
2285 _mem_save_MachineName_0 = NDR_PULL_GET_MEM_CTX(ndr);
2286 NDR_PULL_SET_MEM_CTX(ndr, r->in.MachineName, 0);
2287 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.MachineName));
2288 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.MachineName));
2289 if (ndr_get_array_length(ndr, &r->in.MachineName) > ndr_get_array_size(ndr, &r->in.MachineName)) {
2290 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));
2292 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.MachineName), sizeof(uint16_t)));
2293 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.MachineName, ndr_get_array_length(ndr, &r->in.MachineName), sizeof(uint16_t), CH_UTF16));
2294 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_MachineName_0, 0);
2296 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_DatabaseName));
2297 if (_ptr_DatabaseName) {
2298 NDR_PULL_ALLOC(ndr, r->in.DatabaseName);
2299 } else {
2300 r->in.DatabaseName = NULL;
2302 if (r->in.DatabaseName) {
2303 _mem_save_DatabaseName_0 = NDR_PULL_GET_MEM_CTX(ndr);
2304 NDR_PULL_SET_MEM_CTX(ndr, r->in.DatabaseName, 0);
2305 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.DatabaseName));
2306 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.DatabaseName));
2307 if (ndr_get_array_length(ndr, &r->in.DatabaseName) > ndr_get_array_size(ndr, &r->in.DatabaseName)) {
2308 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));
2310 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.DatabaseName), sizeof(uint16_t)));
2311 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.DatabaseName, ndr_get_array_length(ndr, &r->in.DatabaseName), sizeof(uint16_t), CH_UTF16));
2312 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_DatabaseName_0, 0);
2314 NDR_CHECK(ndr_pull_svcctl_MgrAccessMask(ndr, NDR_SCALARS, &r->in.access_mask));
2315 NDR_PULL_ALLOC(ndr, r->out.handle);
2316 ZERO_STRUCTP(r->out.handle);
2318 if (flags & NDR_OUT) {
2319 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
2320 NDR_PULL_ALLOC(ndr, r->out.handle);
2322 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
2323 NDR_PULL_SET_MEM_CTX(ndr, r->out.handle, LIBNDR_FLAG_REF_ALLOC);
2324 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.handle));
2325 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
2326 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
2328 return NDR_ERR_SUCCESS;
2331 _PUBLIC_ void ndr_print_svcctl_OpenSCManagerW(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_OpenSCManagerW *r)
2333 ndr_print_struct(ndr, name, "svcctl_OpenSCManagerW");
2334 ndr->depth++;
2335 if (flags & NDR_SET_VALUES) {
2336 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
2338 if (flags & NDR_IN) {
2339 ndr_print_struct(ndr, "in", "svcctl_OpenSCManagerW");
2340 ndr->depth++;
2341 ndr_print_ptr(ndr, "MachineName", r->in.MachineName);
2342 ndr->depth++;
2343 if (r->in.MachineName) {
2344 ndr_print_string(ndr, "MachineName", r->in.MachineName);
2346 ndr->depth--;
2347 ndr_print_ptr(ndr, "DatabaseName", r->in.DatabaseName);
2348 ndr->depth++;
2349 if (r->in.DatabaseName) {
2350 ndr_print_string(ndr, "DatabaseName", r->in.DatabaseName);
2352 ndr->depth--;
2353 ndr_print_svcctl_MgrAccessMask(ndr, "access_mask", r->in.access_mask);
2354 ndr->depth--;
2356 if (flags & NDR_OUT) {
2357 ndr_print_struct(ndr, "out", "svcctl_OpenSCManagerW");
2358 ndr->depth++;
2359 ndr_print_ptr(ndr, "handle", r->out.handle);
2360 ndr->depth++;
2361 ndr_print_policy_handle(ndr, "handle", r->out.handle);
2362 ndr->depth--;
2363 ndr_print_WERROR(ndr, "result", r->out.result);
2364 ndr->depth--;
2366 ndr->depth--;
2369 static enum ndr_err_code ndr_push_svcctl_OpenServiceW(struct ndr_push *ndr, int flags, const struct svcctl_OpenServiceW *r)
2371 if (flags & NDR_IN) {
2372 if (r->in.scmanager_handle == NULL) {
2373 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
2375 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.scmanager_handle));
2376 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.ServiceName, CH_UTF16)));
2377 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
2378 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.ServiceName, CH_UTF16)));
2379 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.ServiceName, ndr_charset_length(r->in.ServiceName, CH_UTF16), sizeof(uint16_t), CH_UTF16));
2380 NDR_CHECK(ndr_push_svcctl_ServiceAccessMask(ndr, NDR_SCALARS, r->in.access_mask));
2382 if (flags & NDR_OUT) {
2383 if (r->out.handle == NULL) {
2384 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
2386 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.handle));
2387 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
2389 return NDR_ERR_SUCCESS;
2392 static enum ndr_err_code ndr_pull_svcctl_OpenServiceW(struct ndr_pull *ndr, int flags, struct svcctl_OpenServiceW *r)
2394 TALLOC_CTX *_mem_save_scmanager_handle_0;
2395 TALLOC_CTX *_mem_save_handle_0;
2396 if (flags & NDR_IN) {
2397 ZERO_STRUCT(r->out);
2399 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
2400 NDR_PULL_ALLOC(ndr, r->in.scmanager_handle);
2402 _mem_save_scmanager_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
2403 NDR_PULL_SET_MEM_CTX(ndr, r->in.scmanager_handle, LIBNDR_FLAG_REF_ALLOC);
2404 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.scmanager_handle));
2405 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_scmanager_handle_0, LIBNDR_FLAG_REF_ALLOC);
2406 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.ServiceName));
2407 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.ServiceName));
2408 if (ndr_get_array_length(ndr, &r->in.ServiceName) > ndr_get_array_size(ndr, &r->in.ServiceName)) {
2409 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));
2411 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.ServiceName), sizeof(uint16_t)));
2412 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.ServiceName, ndr_get_array_length(ndr, &r->in.ServiceName), sizeof(uint16_t), CH_UTF16));
2413 NDR_CHECK(ndr_pull_svcctl_ServiceAccessMask(ndr, NDR_SCALARS, &r->in.access_mask));
2414 NDR_PULL_ALLOC(ndr, r->out.handle);
2415 ZERO_STRUCTP(r->out.handle);
2417 if (flags & NDR_OUT) {
2418 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
2419 NDR_PULL_ALLOC(ndr, r->out.handle);
2421 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
2422 NDR_PULL_SET_MEM_CTX(ndr, r->out.handle, LIBNDR_FLAG_REF_ALLOC);
2423 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.handle));
2424 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
2425 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
2427 return NDR_ERR_SUCCESS;
2430 _PUBLIC_ void ndr_print_svcctl_OpenServiceW(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_OpenServiceW *r)
2432 ndr_print_struct(ndr, name, "svcctl_OpenServiceW");
2433 ndr->depth++;
2434 if (flags & NDR_SET_VALUES) {
2435 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
2437 if (flags & NDR_IN) {
2438 ndr_print_struct(ndr, "in", "svcctl_OpenServiceW");
2439 ndr->depth++;
2440 ndr_print_ptr(ndr, "scmanager_handle", r->in.scmanager_handle);
2441 ndr->depth++;
2442 ndr_print_policy_handle(ndr, "scmanager_handle", r->in.scmanager_handle);
2443 ndr->depth--;
2444 ndr_print_string(ndr, "ServiceName", r->in.ServiceName);
2445 ndr_print_svcctl_ServiceAccessMask(ndr, "access_mask", r->in.access_mask);
2446 ndr->depth--;
2448 if (flags & NDR_OUT) {
2449 ndr_print_struct(ndr, "out", "svcctl_OpenServiceW");
2450 ndr->depth++;
2451 ndr_print_ptr(ndr, "handle", r->out.handle);
2452 ndr->depth++;
2453 ndr_print_policy_handle(ndr, "handle", r->out.handle);
2454 ndr->depth--;
2455 ndr_print_WERROR(ndr, "result", r->out.result);
2456 ndr->depth--;
2458 ndr->depth--;
2461 static enum ndr_err_code ndr_push_svcctl_QueryServiceConfigW(struct ndr_push *ndr, int flags, const struct svcctl_QueryServiceConfigW *r)
2463 if (flags & NDR_IN) {
2464 if (r->in.handle == NULL) {
2465 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
2467 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
2468 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.buf_size));
2470 if (flags & NDR_OUT) {
2471 if (r->out.query == NULL) {
2472 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
2474 NDR_CHECK(ndr_push_QUERY_SERVICE_CONFIG(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.query));
2475 if (r->out.bytes_needed == NULL) {
2476 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
2478 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.bytes_needed));
2479 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
2481 return NDR_ERR_SUCCESS;
2484 static enum ndr_err_code ndr_pull_svcctl_QueryServiceConfigW(struct ndr_pull *ndr, int flags, struct svcctl_QueryServiceConfigW *r)
2486 TALLOC_CTX *_mem_save_handle_0;
2487 TALLOC_CTX *_mem_save_query_0;
2488 TALLOC_CTX *_mem_save_bytes_needed_0;
2489 if (flags & NDR_IN) {
2490 ZERO_STRUCT(r->out);
2492 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
2493 NDR_PULL_ALLOC(ndr, r->in.handle);
2495 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
2496 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
2497 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
2498 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
2499 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.buf_size));
2500 if (r->in.buf_size < 0 || r->in.buf_size > 8192) {
2501 return ndr_pull_error(ndr, NDR_ERR_RANGE, "value out of range");
2503 NDR_PULL_ALLOC(ndr, r->out.query);
2504 ZERO_STRUCTP(r->out.query);
2505 NDR_PULL_ALLOC(ndr, r->out.bytes_needed);
2506 ZERO_STRUCTP(r->out.bytes_needed);
2508 if (flags & NDR_OUT) {
2509 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
2510 NDR_PULL_ALLOC(ndr, r->out.query);
2512 _mem_save_query_0 = NDR_PULL_GET_MEM_CTX(ndr);
2513 NDR_PULL_SET_MEM_CTX(ndr, r->out.query, LIBNDR_FLAG_REF_ALLOC);
2514 NDR_CHECK(ndr_pull_QUERY_SERVICE_CONFIG(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.query));
2515 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_query_0, LIBNDR_FLAG_REF_ALLOC);
2516 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
2517 NDR_PULL_ALLOC(ndr, r->out.bytes_needed);
2519 _mem_save_bytes_needed_0 = NDR_PULL_GET_MEM_CTX(ndr);
2520 NDR_PULL_SET_MEM_CTX(ndr, r->out.bytes_needed, LIBNDR_FLAG_REF_ALLOC);
2521 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.bytes_needed));
2522 if (*r->out.bytes_needed < 0 || *r->out.bytes_needed > 8192) {
2523 return ndr_pull_error(ndr, NDR_ERR_RANGE, "value out of range");
2525 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_bytes_needed_0, LIBNDR_FLAG_REF_ALLOC);
2526 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
2528 return NDR_ERR_SUCCESS;
2531 _PUBLIC_ void ndr_print_svcctl_QueryServiceConfigW(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_QueryServiceConfigW *r)
2533 ndr_print_struct(ndr, name, "svcctl_QueryServiceConfigW");
2534 ndr->depth++;
2535 if (flags & NDR_SET_VALUES) {
2536 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
2538 if (flags & NDR_IN) {
2539 ndr_print_struct(ndr, "in", "svcctl_QueryServiceConfigW");
2540 ndr->depth++;
2541 ndr_print_ptr(ndr, "handle", r->in.handle);
2542 ndr->depth++;
2543 ndr_print_policy_handle(ndr, "handle", r->in.handle);
2544 ndr->depth--;
2545 ndr_print_uint32(ndr, "buf_size", r->in.buf_size);
2546 ndr->depth--;
2548 if (flags & NDR_OUT) {
2549 ndr_print_struct(ndr, "out", "svcctl_QueryServiceConfigW");
2550 ndr->depth++;
2551 ndr_print_ptr(ndr, "query", r->out.query);
2552 ndr->depth++;
2553 ndr_print_QUERY_SERVICE_CONFIG(ndr, "query", r->out.query);
2554 ndr->depth--;
2555 ndr_print_ptr(ndr, "bytes_needed", r->out.bytes_needed);
2556 ndr->depth++;
2557 ndr_print_uint32(ndr, "bytes_needed", *r->out.bytes_needed);
2558 ndr->depth--;
2559 ndr_print_WERROR(ndr, "result", r->out.result);
2560 ndr->depth--;
2562 ndr->depth--;
2565 static enum ndr_err_code ndr_push_svcctl_QueryServiceLockStatusW(struct ndr_push *ndr, int flags, const struct svcctl_QueryServiceLockStatusW *r)
2567 if (flags & NDR_IN) {
2568 if (r->in.handle == NULL) {
2569 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
2571 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
2572 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.buf_size));
2574 if (flags & NDR_OUT) {
2575 if (r->out.lock_status == NULL) {
2576 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
2578 NDR_CHECK(ndr_push_SERVICE_LOCK_STATUS(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.lock_status));
2579 if (r->out.required_buf_size == NULL) {
2580 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
2582 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.required_buf_size));
2583 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
2585 return NDR_ERR_SUCCESS;
2588 static enum ndr_err_code ndr_pull_svcctl_QueryServiceLockStatusW(struct ndr_pull *ndr, int flags, struct svcctl_QueryServiceLockStatusW *r)
2590 TALLOC_CTX *_mem_save_handle_0;
2591 TALLOC_CTX *_mem_save_lock_status_0;
2592 TALLOC_CTX *_mem_save_required_buf_size_0;
2593 if (flags & NDR_IN) {
2594 ZERO_STRUCT(r->out);
2596 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
2597 NDR_PULL_ALLOC(ndr, r->in.handle);
2599 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
2600 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
2601 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
2602 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
2603 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.buf_size));
2604 NDR_PULL_ALLOC(ndr, r->out.lock_status);
2605 ZERO_STRUCTP(r->out.lock_status);
2606 NDR_PULL_ALLOC(ndr, r->out.required_buf_size);
2607 ZERO_STRUCTP(r->out.required_buf_size);
2609 if (flags & NDR_OUT) {
2610 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
2611 NDR_PULL_ALLOC(ndr, r->out.lock_status);
2613 _mem_save_lock_status_0 = NDR_PULL_GET_MEM_CTX(ndr);
2614 NDR_PULL_SET_MEM_CTX(ndr, r->out.lock_status, LIBNDR_FLAG_REF_ALLOC);
2615 NDR_CHECK(ndr_pull_SERVICE_LOCK_STATUS(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.lock_status));
2616 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_lock_status_0, LIBNDR_FLAG_REF_ALLOC);
2617 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
2618 NDR_PULL_ALLOC(ndr, r->out.required_buf_size);
2620 _mem_save_required_buf_size_0 = NDR_PULL_GET_MEM_CTX(ndr);
2621 NDR_PULL_SET_MEM_CTX(ndr, r->out.required_buf_size, LIBNDR_FLAG_REF_ALLOC);
2622 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.required_buf_size));
2623 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_required_buf_size_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_QueryServiceLockStatusW(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_QueryServiceLockStatusW *r)
2631 ndr_print_struct(ndr, name, "svcctl_QueryServiceLockStatusW");
2632 ndr->depth++;
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_QueryServiceLockStatusW");
2638 ndr->depth++;
2639 ndr_print_ptr(ndr, "handle", r->in.handle);
2640 ndr->depth++;
2641 ndr_print_policy_handle(ndr, "handle", r->in.handle);
2642 ndr->depth--;
2643 ndr_print_uint32(ndr, "buf_size", r->in.buf_size);
2644 ndr->depth--;
2646 if (flags & NDR_OUT) {
2647 ndr_print_struct(ndr, "out", "svcctl_QueryServiceLockStatusW");
2648 ndr->depth++;
2649 ndr_print_ptr(ndr, "lock_status", r->out.lock_status);
2650 ndr->depth++;
2651 ndr_print_SERVICE_LOCK_STATUS(ndr, "lock_status", r->out.lock_status);
2652 ndr->depth--;
2653 ndr_print_ptr(ndr, "required_buf_size", r->out.required_buf_size);
2654 ndr->depth++;
2655 ndr_print_uint32(ndr, "required_buf_size", *r->out.required_buf_size);
2656 ndr->depth--;
2657 ndr_print_WERROR(ndr, "result", r->out.result);
2658 ndr->depth--;
2660 ndr->depth--;
2663 static enum ndr_err_code ndr_push_svcctl_StartServiceW(struct ndr_push *ndr, int flags, const struct svcctl_StartServiceW *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|NDR_BUFFERS, r->in.handle));
2670 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.NumArgs));
2671 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.Arguments));
2672 if (r->in.Arguments) {
2673 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.Arguments, CH_UTF16)));
2674 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
2675 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.Arguments, CH_UTF16)));
2676 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.Arguments, ndr_charset_length(r->in.Arguments, CH_UTF16), sizeof(uint16_t), CH_UTF16));
2679 if (flags & NDR_OUT) {
2680 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
2682 return NDR_ERR_SUCCESS;
2685 static enum ndr_err_code ndr_pull_svcctl_StartServiceW(struct ndr_pull *ndr, int flags, struct svcctl_StartServiceW *r)
2687 uint32_t _ptr_Arguments;
2688 TALLOC_CTX *_mem_save_handle_0;
2689 TALLOC_CTX *_mem_save_Arguments_0;
2690 if (flags & NDR_IN) {
2691 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
2692 NDR_PULL_ALLOC(ndr, r->in.handle);
2694 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
2695 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
2696 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
2697 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
2698 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.NumArgs));
2699 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_Arguments));
2700 if (_ptr_Arguments) {
2701 NDR_PULL_ALLOC(ndr, r->in.Arguments);
2702 } else {
2703 r->in.Arguments = NULL;
2705 if (r->in.Arguments) {
2706 _mem_save_Arguments_0 = NDR_PULL_GET_MEM_CTX(ndr);
2707 NDR_PULL_SET_MEM_CTX(ndr, r->in.Arguments, 0);
2708 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.Arguments));
2709 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.Arguments));
2710 if (ndr_get_array_length(ndr, &r->in.Arguments) > ndr_get_array_size(ndr, &r->in.Arguments)) {
2711 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));
2713 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.Arguments), sizeof(uint16_t)));
2714 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.Arguments, ndr_get_array_length(ndr, &r->in.Arguments), sizeof(uint16_t), CH_UTF16));
2715 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_Arguments_0, 0);
2718 if (flags & NDR_OUT) {
2719 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
2721 return NDR_ERR_SUCCESS;
2724 _PUBLIC_ void ndr_print_svcctl_StartServiceW(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_StartServiceW *r)
2726 ndr_print_struct(ndr, name, "svcctl_StartServiceW");
2727 ndr->depth++;
2728 if (flags & NDR_SET_VALUES) {
2729 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
2731 if (flags & NDR_IN) {
2732 ndr_print_struct(ndr, "in", "svcctl_StartServiceW");
2733 ndr->depth++;
2734 ndr_print_ptr(ndr, "handle", r->in.handle);
2735 ndr->depth++;
2736 ndr_print_policy_handle(ndr, "handle", r->in.handle);
2737 ndr->depth--;
2738 ndr_print_uint32(ndr, "NumArgs", r->in.NumArgs);
2739 ndr_print_ptr(ndr, "Arguments", r->in.Arguments);
2740 ndr->depth++;
2741 if (r->in.Arguments) {
2742 ndr_print_string(ndr, "Arguments", r->in.Arguments);
2744 ndr->depth--;
2745 ndr->depth--;
2747 if (flags & NDR_OUT) {
2748 ndr_print_struct(ndr, "out", "svcctl_StartServiceW");
2749 ndr->depth++;
2750 ndr_print_WERROR(ndr, "result", r->out.result);
2751 ndr->depth--;
2753 ndr->depth--;
2756 static enum ndr_err_code ndr_push_svcctl_GetServiceDisplayNameW(struct ndr_push *ndr, int flags, const struct svcctl_GetServiceDisplayNameW *r)
2758 if (flags & NDR_IN) {
2759 if (r->in.handle == NULL) {
2760 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
2762 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
2763 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.service_name));
2764 if (r->in.service_name) {
2765 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.service_name, CH_UTF16)));
2766 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
2767 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.service_name, CH_UTF16)));
2768 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));
2770 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.display_name_length));
2771 if (r->in.display_name_length) {
2772 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->in.display_name_length));
2775 if (flags & NDR_OUT) {
2776 if (r->out.display_name == NULL) {
2777 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
2779 NDR_CHECK(ndr_push_unique_ptr(ndr, *r->out.display_name));
2780 if (*r->out.display_name) {
2781 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(*r->out.display_name, CH_UTF16)));
2782 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
2783 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(*r->out.display_name, CH_UTF16)));
2784 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));
2786 NDR_CHECK(ndr_push_unique_ptr(ndr, r->out.display_name_length));
2787 if (r->out.display_name_length) {
2788 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.display_name_length));
2790 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
2792 return NDR_ERR_SUCCESS;
2795 static enum ndr_err_code ndr_pull_svcctl_GetServiceDisplayNameW(struct ndr_pull *ndr, int flags, struct svcctl_GetServiceDisplayNameW *r)
2797 uint32_t _ptr_service_name;
2798 uint32_t _ptr_display_name;
2799 uint32_t _ptr_display_name_length;
2800 TALLOC_CTX *_mem_save_handle_0;
2801 TALLOC_CTX *_mem_save_service_name_0;
2802 TALLOC_CTX *_mem_save_display_name_0;
2803 TALLOC_CTX *_mem_save_display_name_1;
2804 TALLOC_CTX *_mem_save_display_name_length_0;
2805 if (flags & NDR_IN) {
2806 ZERO_STRUCT(r->out);
2808 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
2809 NDR_PULL_ALLOC(ndr, r->in.handle);
2811 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
2812 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
2813 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
2814 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
2815 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_service_name));
2816 if (_ptr_service_name) {
2817 NDR_PULL_ALLOC(ndr, r->in.service_name);
2818 } else {
2819 r->in.service_name = NULL;
2821 if (r->in.service_name) {
2822 _mem_save_service_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
2823 NDR_PULL_SET_MEM_CTX(ndr, r->in.service_name, 0);
2824 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.service_name));
2825 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.service_name));
2826 if (ndr_get_array_length(ndr, &r->in.service_name) > ndr_get_array_size(ndr, &r->in.service_name)) {
2827 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));
2829 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.service_name), sizeof(uint16_t)));
2830 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));
2831 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_service_name_0, 0);
2833 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_display_name_length));
2834 if (_ptr_display_name_length) {
2835 NDR_PULL_ALLOC(ndr, r->in.display_name_length);
2836 } else {
2837 r->in.display_name_length = NULL;
2839 if (r->in.display_name_length) {
2840 _mem_save_display_name_length_0 = NDR_PULL_GET_MEM_CTX(ndr);
2841 NDR_PULL_SET_MEM_CTX(ndr, r->in.display_name_length, 0);
2842 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->in.display_name_length));
2843 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_display_name_length_0, 0);
2845 NDR_PULL_ALLOC(ndr, r->out.display_name);
2846 ZERO_STRUCTP(r->out.display_name);
2848 if (flags & NDR_OUT) {
2849 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
2850 NDR_PULL_ALLOC(ndr, r->out.display_name);
2852 _mem_save_display_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
2853 NDR_PULL_SET_MEM_CTX(ndr, r->out.display_name, LIBNDR_FLAG_REF_ALLOC);
2854 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_display_name));
2855 if (_ptr_display_name) {
2856 NDR_PULL_ALLOC(ndr, *r->out.display_name);
2857 } else {
2858 *r->out.display_name = NULL;
2860 if (*r->out.display_name) {
2861 _mem_save_display_name_1 = NDR_PULL_GET_MEM_CTX(ndr);
2862 NDR_PULL_SET_MEM_CTX(ndr, *r->out.display_name, 0);
2863 NDR_CHECK(ndr_pull_array_size(ndr, r->out.display_name));
2864 NDR_CHECK(ndr_pull_array_length(ndr, r->out.display_name));
2865 if (ndr_get_array_length(ndr, r->out.display_name) > ndr_get_array_size(ndr, r->out.display_name)) {
2866 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));
2868 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, r->out.display_name), sizeof(uint16_t)));
2869 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));
2870 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_display_name_1, 0);
2872 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_display_name_0, LIBNDR_FLAG_REF_ALLOC);
2873 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_display_name_length));
2874 if (_ptr_display_name_length) {
2875 NDR_PULL_ALLOC(ndr, r->out.display_name_length);
2876 } else {
2877 r->out.display_name_length = NULL;
2879 if (r->out.display_name_length) {
2880 _mem_save_display_name_length_0 = NDR_PULL_GET_MEM_CTX(ndr);
2881 NDR_PULL_SET_MEM_CTX(ndr, r->out.display_name_length, 0);
2882 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.display_name_length));
2883 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_display_name_length_0, 0);
2885 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
2887 return NDR_ERR_SUCCESS;
2890 _PUBLIC_ void ndr_print_svcctl_GetServiceDisplayNameW(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_GetServiceDisplayNameW *r)
2892 ndr_print_struct(ndr, name, "svcctl_GetServiceDisplayNameW");
2893 ndr->depth++;
2894 if (flags & NDR_SET_VALUES) {
2895 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
2897 if (flags & NDR_IN) {
2898 ndr_print_struct(ndr, "in", "svcctl_GetServiceDisplayNameW");
2899 ndr->depth++;
2900 ndr_print_ptr(ndr, "handle", r->in.handle);
2901 ndr->depth++;
2902 ndr_print_policy_handle(ndr, "handle", r->in.handle);
2903 ndr->depth--;
2904 ndr_print_ptr(ndr, "service_name", r->in.service_name);
2905 ndr->depth++;
2906 if (r->in.service_name) {
2907 ndr_print_string(ndr, "service_name", r->in.service_name);
2909 ndr->depth--;
2910 ndr_print_ptr(ndr, "display_name_length", r->in.display_name_length);
2911 ndr->depth++;
2912 if (r->in.display_name_length) {
2913 ndr_print_uint32(ndr, "display_name_length", *r->in.display_name_length);
2915 ndr->depth--;
2916 ndr->depth--;
2918 if (flags & NDR_OUT) {
2919 ndr_print_struct(ndr, "out", "svcctl_GetServiceDisplayNameW");
2920 ndr->depth++;
2921 ndr_print_ptr(ndr, "display_name", r->out.display_name);
2922 ndr->depth++;
2923 ndr_print_ptr(ndr, "display_name", *r->out.display_name);
2924 ndr->depth++;
2925 if (*r->out.display_name) {
2926 ndr_print_string(ndr, "display_name", *r->out.display_name);
2928 ndr->depth--;
2929 ndr->depth--;
2930 ndr_print_ptr(ndr, "display_name_length", r->out.display_name_length);
2931 ndr->depth++;
2932 if (r->out.display_name_length) {
2933 ndr_print_uint32(ndr, "display_name_length", *r->out.display_name_length);
2935 ndr->depth--;
2936 ndr_print_WERROR(ndr, "result", r->out.result);
2937 ndr->depth--;
2939 ndr->depth--;
2942 static enum ndr_err_code ndr_push_svcctl_GetServiceKeyNameW(struct ndr_push *ndr, int flags, const struct svcctl_GetServiceKeyNameW *r)
2944 if (flags & NDR_IN) {
2945 if (r->in.handle == NULL) {
2946 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
2948 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
2949 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.service_name));
2950 if (r->in.service_name) {
2951 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.service_name, CH_UTF16)));
2952 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
2953 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.service_name, CH_UTF16)));
2954 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));
2956 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.display_name_length));
2957 if (r->in.display_name_length) {
2958 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->in.display_name_length));
2961 if (flags & NDR_OUT) {
2962 if (r->out.key_name == NULL) {
2963 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
2965 NDR_CHECK(ndr_push_unique_ptr(ndr, *r->out.key_name));
2966 if (*r->out.key_name) {
2967 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(*r->out.key_name, CH_UTF16)));
2968 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
2969 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(*r->out.key_name, CH_UTF16)));
2970 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));
2972 NDR_CHECK(ndr_push_unique_ptr(ndr, r->out.display_name_length));
2973 if (r->out.display_name_length) {
2974 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.display_name_length));
2976 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
2978 return NDR_ERR_SUCCESS;
2981 static enum ndr_err_code ndr_pull_svcctl_GetServiceKeyNameW(struct ndr_pull *ndr, int flags, struct svcctl_GetServiceKeyNameW *r)
2983 uint32_t _ptr_service_name;
2984 uint32_t _ptr_key_name;
2985 uint32_t _ptr_display_name_length;
2986 TALLOC_CTX *_mem_save_handle_0;
2987 TALLOC_CTX *_mem_save_service_name_0;
2988 TALLOC_CTX *_mem_save_key_name_0;
2989 TALLOC_CTX *_mem_save_key_name_1;
2990 TALLOC_CTX *_mem_save_display_name_length_0;
2991 if (flags & NDR_IN) {
2992 ZERO_STRUCT(r->out);
2994 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
2995 NDR_PULL_ALLOC(ndr, r->in.handle);
2997 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
2998 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
2999 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
3000 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
3001 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_service_name));
3002 if (_ptr_service_name) {
3003 NDR_PULL_ALLOC(ndr, r->in.service_name);
3004 } else {
3005 r->in.service_name = NULL;
3007 if (r->in.service_name) {
3008 _mem_save_service_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
3009 NDR_PULL_SET_MEM_CTX(ndr, r->in.service_name, 0);
3010 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.service_name));
3011 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.service_name));
3012 if (ndr_get_array_length(ndr, &r->in.service_name) > ndr_get_array_size(ndr, &r->in.service_name)) {
3013 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));
3015 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.service_name), sizeof(uint16_t)));
3016 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));
3017 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_service_name_0, 0);
3019 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_display_name_length));
3020 if (_ptr_display_name_length) {
3021 NDR_PULL_ALLOC(ndr, r->in.display_name_length);
3022 } else {
3023 r->in.display_name_length = NULL;
3025 if (r->in.display_name_length) {
3026 _mem_save_display_name_length_0 = NDR_PULL_GET_MEM_CTX(ndr);
3027 NDR_PULL_SET_MEM_CTX(ndr, r->in.display_name_length, 0);
3028 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->in.display_name_length));
3029 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_display_name_length_0, 0);
3031 NDR_PULL_ALLOC(ndr, r->out.key_name);
3032 ZERO_STRUCTP(r->out.key_name);
3034 if (flags & NDR_OUT) {
3035 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
3036 NDR_PULL_ALLOC(ndr, r->out.key_name);
3038 _mem_save_key_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
3039 NDR_PULL_SET_MEM_CTX(ndr, r->out.key_name, LIBNDR_FLAG_REF_ALLOC);
3040 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_key_name));
3041 if (_ptr_key_name) {
3042 NDR_PULL_ALLOC(ndr, *r->out.key_name);
3043 } else {
3044 *r->out.key_name = NULL;
3046 if (*r->out.key_name) {
3047 _mem_save_key_name_1 = NDR_PULL_GET_MEM_CTX(ndr);
3048 NDR_PULL_SET_MEM_CTX(ndr, *r->out.key_name, 0);
3049 NDR_CHECK(ndr_pull_array_size(ndr, r->out.key_name));
3050 NDR_CHECK(ndr_pull_array_length(ndr, r->out.key_name));
3051 if (ndr_get_array_length(ndr, r->out.key_name) > ndr_get_array_size(ndr, r->out.key_name)) {
3052 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));
3054 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, r->out.key_name), sizeof(uint16_t)));
3055 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));
3056 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_key_name_1, 0);
3058 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_key_name_0, LIBNDR_FLAG_REF_ALLOC);
3059 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_display_name_length));
3060 if (_ptr_display_name_length) {
3061 NDR_PULL_ALLOC(ndr, r->out.display_name_length);
3062 } else {
3063 r->out.display_name_length = NULL;
3065 if (r->out.display_name_length) {
3066 _mem_save_display_name_length_0 = NDR_PULL_GET_MEM_CTX(ndr);
3067 NDR_PULL_SET_MEM_CTX(ndr, r->out.display_name_length, 0);
3068 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.display_name_length));
3069 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_display_name_length_0, 0);
3071 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
3073 return NDR_ERR_SUCCESS;
3076 _PUBLIC_ void ndr_print_svcctl_GetServiceKeyNameW(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_GetServiceKeyNameW *r)
3078 ndr_print_struct(ndr, name, "svcctl_GetServiceKeyNameW");
3079 ndr->depth++;
3080 if (flags & NDR_SET_VALUES) {
3081 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
3083 if (flags & NDR_IN) {
3084 ndr_print_struct(ndr, "in", "svcctl_GetServiceKeyNameW");
3085 ndr->depth++;
3086 ndr_print_ptr(ndr, "handle", r->in.handle);
3087 ndr->depth++;
3088 ndr_print_policy_handle(ndr, "handle", r->in.handle);
3089 ndr->depth--;
3090 ndr_print_ptr(ndr, "service_name", r->in.service_name);
3091 ndr->depth++;
3092 if (r->in.service_name) {
3093 ndr_print_string(ndr, "service_name", r->in.service_name);
3095 ndr->depth--;
3096 ndr_print_ptr(ndr, "display_name_length", r->in.display_name_length);
3097 ndr->depth++;
3098 if (r->in.display_name_length) {
3099 ndr_print_uint32(ndr, "display_name_length", *r->in.display_name_length);
3101 ndr->depth--;
3102 ndr->depth--;
3104 if (flags & NDR_OUT) {
3105 ndr_print_struct(ndr, "out", "svcctl_GetServiceKeyNameW");
3106 ndr->depth++;
3107 ndr_print_ptr(ndr, "key_name", r->out.key_name);
3108 ndr->depth++;
3109 ndr_print_ptr(ndr, "key_name", *r->out.key_name);
3110 ndr->depth++;
3111 if (*r->out.key_name) {
3112 ndr_print_string(ndr, "key_name", *r->out.key_name);
3114 ndr->depth--;
3115 ndr->depth--;
3116 ndr_print_ptr(ndr, "display_name_length", r->out.display_name_length);
3117 ndr->depth++;
3118 if (r->out.display_name_length) {
3119 ndr_print_uint32(ndr, "display_name_length", *r->out.display_name_length);
3121 ndr->depth--;
3122 ndr_print_WERROR(ndr, "result", r->out.result);
3123 ndr->depth--;
3125 ndr->depth--;
3128 static enum ndr_err_code ndr_push_svcctl_SCSetServiceBitsA(struct ndr_push *ndr, int flags, const struct svcctl_SCSetServiceBitsA *r)
3130 if (flags & NDR_IN) {
3131 if (r->in.handle == NULL) {
3132 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
3134 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
3135 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.bits));
3136 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.bitson));
3137 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.immediate));
3139 if (flags & NDR_OUT) {
3140 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
3142 return NDR_ERR_SUCCESS;
3145 static enum ndr_err_code ndr_pull_svcctl_SCSetServiceBitsA(struct ndr_pull *ndr, int flags, struct svcctl_SCSetServiceBitsA *r)
3147 TALLOC_CTX *_mem_save_handle_0;
3148 if (flags & NDR_IN) {
3149 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
3150 NDR_PULL_ALLOC(ndr, r->in.handle);
3152 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
3153 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
3154 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
3155 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
3156 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.bits));
3157 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.bitson));
3158 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.immediate));
3160 if (flags & NDR_OUT) {
3161 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
3163 return NDR_ERR_SUCCESS;
3166 _PUBLIC_ void ndr_print_svcctl_SCSetServiceBitsA(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_SCSetServiceBitsA *r)
3168 ndr_print_struct(ndr, name, "svcctl_SCSetServiceBitsA");
3169 ndr->depth++;
3170 if (flags & NDR_SET_VALUES) {
3171 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
3173 if (flags & NDR_IN) {
3174 ndr_print_struct(ndr, "in", "svcctl_SCSetServiceBitsA");
3175 ndr->depth++;
3176 ndr_print_ptr(ndr, "handle", r->in.handle);
3177 ndr->depth++;
3178 ndr_print_policy_handle(ndr, "handle", r->in.handle);
3179 ndr->depth--;
3180 ndr_print_uint32(ndr, "bits", r->in.bits);
3181 ndr_print_uint32(ndr, "bitson", r->in.bitson);
3182 ndr_print_uint32(ndr, "immediate", r->in.immediate);
3183 ndr->depth--;
3185 if (flags & NDR_OUT) {
3186 ndr_print_struct(ndr, "out", "svcctl_SCSetServiceBitsA");
3187 ndr->depth++;
3188 ndr_print_WERROR(ndr, "result", r->out.result);
3189 ndr->depth--;
3191 ndr->depth--;
3194 static enum ndr_err_code ndr_push_svcctl_ChangeServiceConfigA(struct ndr_push *ndr, int flags, const struct svcctl_ChangeServiceConfigA *r)
3196 if (flags & NDR_IN) {
3197 if (r->in.handle == NULL) {
3198 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
3200 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
3201 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.type));
3202 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.start));
3203 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.error));
3204 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.binary_path));
3205 if (r->in.binary_path) {
3206 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.binary_path, CH_UTF16)));
3207 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
3208 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.binary_path, CH_UTF16)));
3209 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));
3211 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.load_order_group));
3212 if (r->in.load_order_group) {
3213 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.load_order_group, CH_UTF16)));
3214 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
3215 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.load_order_group, CH_UTF16)));
3216 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));
3218 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.dependencies));
3219 if (r->in.dependencies) {
3220 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.dependencies, CH_UTF16)));
3221 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
3222 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.dependencies, CH_UTF16)));
3223 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.dependencies, ndr_charset_length(r->in.dependencies, CH_UTF16), sizeof(uint16_t), CH_UTF16));
3225 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.service_start_name));
3226 if (r->in.service_start_name) {
3227 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.service_start_name, CH_UTF16)));
3228 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
3229 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.service_start_name, CH_UTF16)));
3230 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));
3232 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.password));
3233 if (r->in.password) {
3234 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.password, CH_UTF16)));
3235 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
3236 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.password, CH_UTF16)));
3237 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.password, ndr_charset_length(r->in.password, CH_UTF16), sizeof(uint16_t), CH_UTF16));
3239 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.display_name));
3240 if (r->in.display_name) {
3241 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.display_name, CH_UTF16)));
3242 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
3243 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.display_name, CH_UTF16)));
3244 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));
3247 if (flags & NDR_OUT) {
3248 if (r->out.tag_id == NULL) {
3249 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
3251 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.tag_id));
3252 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
3254 return NDR_ERR_SUCCESS;
3257 static enum ndr_err_code ndr_pull_svcctl_ChangeServiceConfigA(struct ndr_pull *ndr, int flags, struct svcctl_ChangeServiceConfigA *r)
3259 uint32_t _ptr_binary_path;
3260 uint32_t _ptr_load_order_group;
3261 uint32_t _ptr_dependencies;
3262 uint32_t _ptr_service_start_name;
3263 uint32_t _ptr_password;
3264 uint32_t _ptr_display_name;
3265 TALLOC_CTX *_mem_save_handle_0;
3266 TALLOC_CTX *_mem_save_binary_path_0;
3267 TALLOC_CTX *_mem_save_load_order_group_0;
3268 TALLOC_CTX *_mem_save_tag_id_0;
3269 TALLOC_CTX *_mem_save_dependencies_0;
3270 TALLOC_CTX *_mem_save_service_start_name_0;
3271 TALLOC_CTX *_mem_save_password_0;
3272 TALLOC_CTX *_mem_save_display_name_0;
3273 if (flags & NDR_IN) {
3274 ZERO_STRUCT(r->out);
3276 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
3277 NDR_PULL_ALLOC(ndr, r->in.handle);
3279 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
3280 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
3281 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
3282 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
3283 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.type));
3284 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.start));
3285 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.error));
3286 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_binary_path));
3287 if (_ptr_binary_path) {
3288 NDR_PULL_ALLOC(ndr, r->in.binary_path);
3289 } else {
3290 r->in.binary_path = NULL;
3292 if (r->in.binary_path) {
3293 _mem_save_binary_path_0 = NDR_PULL_GET_MEM_CTX(ndr);
3294 NDR_PULL_SET_MEM_CTX(ndr, r->in.binary_path, 0);
3295 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.binary_path));
3296 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.binary_path));
3297 if (ndr_get_array_length(ndr, &r->in.binary_path) > ndr_get_array_size(ndr, &r->in.binary_path)) {
3298 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));
3300 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.binary_path), sizeof(uint16_t)));
3301 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));
3302 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_binary_path_0, 0);
3304 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_load_order_group));
3305 if (_ptr_load_order_group) {
3306 NDR_PULL_ALLOC(ndr, r->in.load_order_group);
3307 } else {
3308 r->in.load_order_group = NULL;
3310 if (r->in.load_order_group) {
3311 _mem_save_load_order_group_0 = NDR_PULL_GET_MEM_CTX(ndr);
3312 NDR_PULL_SET_MEM_CTX(ndr, r->in.load_order_group, 0);
3313 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.load_order_group));
3314 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.load_order_group));
3315 if (ndr_get_array_length(ndr, &r->in.load_order_group) > ndr_get_array_size(ndr, &r->in.load_order_group)) {
3316 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));
3318 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.load_order_group), sizeof(uint16_t)));
3319 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));
3320 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_load_order_group_0, 0);
3322 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_dependencies));
3323 if (_ptr_dependencies) {
3324 NDR_PULL_ALLOC(ndr, r->in.dependencies);
3325 } else {
3326 r->in.dependencies = NULL;
3328 if (r->in.dependencies) {
3329 _mem_save_dependencies_0 = NDR_PULL_GET_MEM_CTX(ndr);
3330 NDR_PULL_SET_MEM_CTX(ndr, r->in.dependencies, 0);
3331 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.dependencies));
3332 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.dependencies));
3333 if (ndr_get_array_length(ndr, &r->in.dependencies) > ndr_get_array_size(ndr, &r->in.dependencies)) {
3334 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));
3336 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.dependencies), sizeof(uint16_t)));
3337 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.dependencies, ndr_get_array_length(ndr, &r->in.dependencies), sizeof(uint16_t), CH_UTF16));
3338 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_dependencies_0, 0);
3340 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_service_start_name));
3341 if (_ptr_service_start_name) {
3342 NDR_PULL_ALLOC(ndr, r->in.service_start_name);
3343 } else {
3344 r->in.service_start_name = NULL;
3346 if (r->in.service_start_name) {
3347 _mem_save_service_start_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
3348 NDR_PULL_SET_MEM_CTX(ndr, r->in.service_start_name, 0);
3349 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.service_start_name));
3350 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.service_start_name));
3351 if (ndr_get_array_length(ndr, &r->in.service_start_name) > ndr_get_array_size(ndr, &r->in.service_start_name)) {
3352 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));
3354 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.service_start_name), sizeof(uint16_t)));
3355 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));
3356 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_service_start_name_0, 0);
3358 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_password));
3359 if (_ptr_password) {
3360 NDR_PULL_ALLOC(ndr, r->in.password);
3361 } else {
3362 r->in.password = NULL;
3364 if (r->in.password) {
3365 _mem_save_password_0 = NDR_PULL_GET_MEM_CTX(ndr);
3366 NDR_PULL_SET_MEM_CTX(ndr, r->in.password, 0);
3367 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.password));
3368 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.password));
3369 if (ndr_get_array_length(ndr, &r->in.password) > ndr_get_array_size(ndr, &r->in.password)) {
3370 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));
3372 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.password), sizeof(uint16_t)));
3373 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.password, ndr_get_array_length(ndr, &r->in.password), sizeof(uint16_t), CH_UTF16));
3374 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_password_0, 0);
3376 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_display_name));
3377 if (_ptr_display_name) {
3378 NDR_PULL_ALLOC(ndr, r->in.display_name);
3379 } else {
3380 r->in.display_name = NULL;
3382 if (r->in.display_name) {
3383 _mem_save_display_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
3384 NDR_PULL_SET_MEM_CTX(ndr, r->in.display_name, 0);
3385 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.display_name));
3386 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.display_name));
3387 if (ndr_get_array_length(ndr, &r->in.display_name) > ndr_get_array_size(ndr, &r->in.display_name)) {
3388 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));
3390 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.display_name), sizeof(uint16_t)));
3391 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));
3392 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_display_name_0, 0);
3394 NDR_PULL_ALLOC(ndr, r->out.tag_id);
3395 ZERO_STRUCTP(r->out.tag_id);
3397 if (flags & NDR_OUT) {
3398 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
3399 NDR_PULL_ALLOC(ndr, r->out.tag_id);
3401 _mem_save_tag_id_0 = NDR_PULL_GET_MEM_CTX(ndr);
3402 NDR_PULL_SET_MEM_CTX(ndr, r->out.tag_id, LIBNDR_FLAG_REF_ALLOC);
3403 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.tag_id));
3404 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_tag_id_0, LIBNDR_FLAG_REF_ALLOC);
3405 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
3407 return NDR_ERR_SUCCESS;
3410 _PUBLIC_ void ndr_print_svcctl_ChangeServiceConfigA(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_ChangeServiceConfigA *r)
3412 ndr_print_struct(ndr, name, "svcctl_ChangeServiceConfigA");
3413 ndr->depth++;
3414 if (flags & NDR_SET_VALUES) {
3415 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
3417 if (flags & NDR_IN) {
3418 ndr_print_struct(ndr, "in", "svcctl_ChangeServiceConfigA");
3419 ndr->depth++;
3420 ndr_print_ptr(ndr, "handle", r->in.handle);
3421 ndr->depth++;
3422 ndr_print_policy_handle(ndr, "handle", r->in.handle);
3423 ndr->depth--;
3424 ndr_print_uint32(ndr, "type", r->in.type);
3425 ndr_print_uint32(ndr, "start", r->in.start);
3426 ndr_print_uint32(ndr, "error", r->in.error);
3427 ndr_print_ptr(ndr, "binary_path", r->in.binary_path);
3428 ndr->depth++;
3429 if (r->in.binary_path) {
3430 ndr_print_string(ndr, "binary_path", r->in.binary_path);
3432 ndr->depth--;
3433 ndr_print_ptr(ndr, "load_order_group", r->in.load_order_group);
3434 ndr->depth++;
3435 if (r->in.load_order_group) {
3436 ndr_print_string(ndr, "load_order_group", r->in.load_order_group);
3438 ndr->depth--;
3439 ndr_print_ptr(ndr, "dependencies", r->in.dependencies);
3440 ndr->depth++;
3441 if (r->in.dependencies) {
3442 ndr_print_string(ndr, "dependencies", r->in.dependencies);
3444 ndr->depth--;
3445 ndr_print_ptr(ndr, "service_start_name", r->in.service_start_name);
3446 ndr->depth++;
3447 if (r->in.service_start_name) {
3448 ndr_print_string(ndr, "service_start_name", r->in.service_start_name);
3450 ndr->depth--;
3451 ndr_print_ptr(ndr, "password", r->in.password);
3452 ndr->depth++;
3453 if (r->in.password) {
3454 ndr_print_string(ndr, "password", r->in.password);
3456 ndr->depth--;
3457 ndr_print_ptr(ndr, "display_name", r->in.display_name);
3458 ndr->depth++;
3459 if (r->in.display_name) {
3460 ndr_print_string(ndr, "display_name", r->in.display_name);
3462 ndr->depth--;
3463 ndr->depth--;
3465 if (flags & NDR_OUT) {
3466 ndr_print_struct(ndr, "out", "svcctl_ChangeServiceConfigA");
3467 ndr->depth++;
3468 ndr_print_ptr(ndr, "tag_id", r->out.tag_id);
3469 ndr->depth++;
3470 ndr_print_uint32(ndr, "tag_id", *r->out.tag_id);
3471 ndr->depth--;
3472 ndr_print_WERROR(ndr, "result", r->out.result);
3473 ndr->depth--;
3475 ndr->depth--;
3478 static enum ndr_err_code ndr_push_svcctl_CreateServiceA(struct ndr_push *ndr, int flags, const struct svcctl_CreateServiceA *r)
3480 if (flags & NDR_IN) {
3481 if (r->in.handle == NULL) {
3482 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
3484 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
3485 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.ServiceName));
3486 if (r->in.ServiceName) {
3487 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.ServiceName, CH_UTF16)));
3488 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
3489 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.ServiceName, CH_UTF16)));
3490 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.ServiceName, ndr_charset_length(r->in.ServiceName, CH_UTF16), sizeof(uint16_t), CH_UTF16));
3492 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.DisplayName));
3493 if (r->in.DisplayName) {
3494 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.DisplayName, CH_UTF16)));
3495 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
3496 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.DisplayName, CH_UTF16)));
3497 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.DisplayName, ndr_charset_length(r->in.DisplayName, CH_UTF16), sizeof(uint16_t), CH_UTF16));
3499 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.desired_access));
3500 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.type));
3501 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.start_type));
3502 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.error_control));
3503 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.binary_path));
3504 if (r->in.binary_path) {
3505 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.binary_path, CH_UTF16)));
3506 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
3507 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.binary_path, CH_UTF16)));
3508 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));
3510 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.LoadOrderGroupKey));
3511 if (r->in.LoadOrderGroupKey) {
3512 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.LoadOrderGroupKey, CH_UTF16)));
3513 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
3514 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.LoadOrderGroupKey, CH_UTF16)));
3515 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.LoadOrderGroupKey, ndr_charset_length(r->in.LoadOrderGroupKey, CH_UTF16), sizeof(uint16_t), CH_UTF16));
3517 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.dependencies));
3518 if (r->in.dependencies) {
3519 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.dependencies, CH_UTF16)));
3520 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
3521 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.dependencies, CH_UTF16)));
3522 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.dependencies, ndr_charset_length(r->in.dependencies, CH_UTF16), sizeof(uint16_t), CH_UTF16));
3524 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.service_start_name));
3525 if (r->in.service_start_name) {
3526 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.service_start_name, CH_UTF16)));
3527 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
3528 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.service_start_name, CH_UTF16)));
3529 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));
3531 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.password));
3532 if (r->in.password) {
3533 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.password, CH_UTF16)));
3534 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
3535 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.password, CH_UTF16)));
3536 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.password, ndr_charset_length(r->in.password, CH_UTF16), sizeof(uint16_t), CH_UTF16));
3539 if (flags & NDR_OUT) {
3540 NDR_CHECK(ndr_push_unique_ptr(ndr, r->out.TagId));
3541 if (r->out.TagId) {
3542 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.TagId));
3544 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
3546 return NDR_ERR_SUCCESS;
3549 static enum ndr_err_code ndr_pull_svcctl_CreateServiceA(struct ndr_pull *ndr, int flags, struct svcctl_CreateServiceA *r)
3551 uint32_t _ptr_ServiceName;
3552 uint32_t _ptr_DisplayName;
3553 uint32_t _ptr_binary_path;
3554 uint32_t _ptr_LoadOrderGroupKey;
3555 uint32_t _ptr_TagId;
3556 uint32_t _ptr_dependencies;
3557 uint32_t _ptr_service_start_name;
3558 uint32_t _ptr_password;
3559 TALLOC_CTX *_mem_save_handle_0;
3560 TALLOC_CTX *_mem_save_ServiceName_0;
3561 TALLOC_CTX *_mem_save_DisplayName_0;
3562 TALLOC_CTX *_mem_save_binary_path_0;
3563 TALLOC_CTX *_mem_save_LoadOrderGroupKey_0;
3564 TALLOC_CTX *_mem_save_TagId_0;
3565 TALLOC_CTX *_mem_save_dependencies_0;
3566 TALLOC_CTX *_mem_save_service_start_name_0;
3567 TALLOC_CTX *_mem_save_password_0;
3568 if (flags & NDR_IN) {
3569 ZERO_STRUCT(r->out);
3571 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
3572 NDR_PULL_ALLOC(ndr, r->in.handle);
3574 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
3575 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
3576 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
3577 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
3578 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_ServiceName));
3579 if (_ptr_ServiceName) {
3580 NDR_PULL_ALLOC(ndr, r->in.ServiceName);
3581 } else {
3582 r->in.ServiceName = NULL;
3584 if (r->in.ServiceName) {
3585 _mem_save_ServiceName_0 = NDR_PULL_GET_MEM_CTX(ndr);
3586 NDR_PULL_SET_MEM_CTX(ndr, r->in.ServiceName, 0);
3587 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.ServiceName));
3588 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.ServiceName));
3589 if (ndr_get_array_length(ndr, &r->in.ServiceName) > ndr_get_array_size(ndr, &r->in.ServiceName)) {
3590 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));
3592 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.ServiceName), sizeof(uint16_t)));
3593 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.ServiceName, ndr_get_array_length(ndr, &r->in.ServiceName), sizeof(uint16_t), CH_UTF16));
3594 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_ServiceName_0, 0);
3596 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_DisplayName));
3597 if (_ptr_DisplayName) {
3598 NDR_PULL_ALLOC(ndr, r->in.DisplayName);
3599 } else {
3600 r->in.DisplayName = NULL;
3602 if (r->in.DisplayName) {
3603 _mem_save_DisplayName_0 = NDR_PULL_GET_MEM_CTX(ndr);
3604 NDR_PULL_SET_MEM_CTX(ndr, r->in.DisplayName, 0);
3605 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.DisplayName));
3606 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.DisplayName));
3607 if (ndr_get_array_length(ndr, &r->in.DisplayName) > ndr_get_array_size(ndr, &r->in.DisplayName)) {
3608 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));
3610 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.DisplayName), sizeof(uint16_t)));
3611 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.DisplayName, ndr_get_array_length(ndr, &r->in.DisplayName), sizeof(uint16_t), CH_UTF16));
3612 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_DisplayName_0, 0);
3614 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.desired_access));
3615 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.type));
3616 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.start_type));
3617 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.error_control));
3618 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_binary_path));
3619 if (_ptr_binary_path) {
3620 NDR_PULL_ALLOC(ndr, r->in.binary_path);
3621 } else {
3622 r->in.binary_path = NULL;
3624 if (r->in.binary_path) {
3625 _mem_save_binary_path_0 = NDR_PULL_GET_MEM_CTX(ndr);
3626 NDR_PULL_SET_MEM_CTX(ndr, r->in.binary_path, 0);
3627 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.binary_path));
3628 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.binary_path));
3629 if (ndr_get_array_length(ndr, &r->in.binary_path) > ndr_get_array_size(ndr, &r->in.binary_path)) {
3630 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));
3632 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.binary_path), sizeof(uint16_t)));
3633 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));
3634 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_binary_path_0, 0);
3636 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_LoadOrderGroupKey));
3637 if (_ptr_LoadOrderGroupKey) {
3638 NDR_PULL_ALLOC(ndr, r->in.LoadOrderGroupKey);
3639 } else {
3640 r->in.LoadOrderGroupKey = NULL;
3642 if (r->in.LoadOrderGroupKey) {
3643 _mem_save_LoadOrderGroupKey_0 = NDR_PULL_GET_MEM_CTX(ndr);
3644 NDR_PULL_SET_MEM_CTX(ndr, r->in.LoadOrderGroupKey, 0);
3645 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.LoadOrderGroupKey));
3646 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.LoadOrderGroupKey));
3647 if (ndr_get_array_length(ndr, &r->in.LoadOrderGroupKey) > ndr_get_array_size(ndr, &r->in.LoadOrderGroupKey)) {
3648 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));
3650 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.LoadOrderGroupKey), sizeof(uint16_t)));
3651 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.LoadOrderGroupKey, ndr_get_array_length(ndr, &r->in.LoadOrderGroupKey), sizeof(uint16_t), CH_UTF16));
3652 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_LoadOrderGroupKey_0, 0);
3654 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_dependencies));
3655 if (_ptr_dependencies) {
3656 NDR_PULL_ALLOC(ndr, r->in.dependencies);
3657 } else {
3658 r->in.dependencies = NULL;
3660 if (r->in.dependencies) {
3661 _mem_save_dependencies_0 = NDR_PULL_GET_MEM_CTX(ndr);
3662 NDR_PULL_SET_MEM_CTX(ndr, r->in.dependencies, 0);
3663 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.dependencies));
3664 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.dependencies));
3665 if (ndr_get_array_length(ndr, &r->in.dependencies) > ndr_get_array_size(ndr, &r->in.dependencies)) {
3666 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));
3668 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.dependencies), sizeof(uint16_t)));
3669 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.dependencies, ndr_get_array_length(ndr, &r->in.dependencies), sizeof(uint16_t), CH_UTF16));
3670 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_dependencies_0, 0);
3672 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_service_start_name));
3673 if (_ptr_service_start_name) {
3674 NDR_PULL_ALLOC(ndr, r->in.service_start_name);
3675 } else {
3676 r->in.service_start_name = NULL;
3678 if (r->in.service_start_name) {
3679 _mem_save_service_start_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
3680 NDR_PULL_SET_MEM_CTX(ndr, r->in.service_start_name, 0);
3681 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.service_start_name));
3682 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.service_start_name));
3683 if (ndr_get_array_length(ndr, &r->in.service_start_name) > ndr_get_array_size(ndr, &r->in.service_start_name)) {
3684 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));
3686 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.service_start_name), sizeof(uint16_t)));
3687 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));
3688 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_service_start_name_0, 0);
3690 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_password));
3691 if (_ptr_password) {
3692 NDR_PULL_ALLOC(ndr, r->in.password);
3693 } else {
3694 r->in.password = NULL;
3696 if (r->in.password) {
3697 _mem_save_password_0 = NDR_PULL_GET_MEM_CTX(ndr);
3698 NDR_PULL_SET_MEM_CTX(ndr, r->in.password, 0);
3699 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.password));
3700 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.password));
3701 if (ndr_get_array_length(ndr, &r->in.password) > ndr_get_array_size(ndr, &r->in.password)) {
3702 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));
3704 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.password), sizeof(uint16_t)));
3705 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.password, ndr_get_array_length(ndr, &r->in.password), sizeof(uint16_t), CH_UTF16));
3706 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_password_0, 0);
3709 if (flags & NDR_OUT) {
3710 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_TagId));
3711 if (_ptr_TagId) {
3712 NDR_PULL_ALLOC(ndr, r->out.TagId);
3713 } else {
3714 r->out.TagId = NULL;
3716 if (r->out.TagId) {
3717 _mem_save_TagId_0 = NDR_PULL_GET_MEM_CTX(ndr);
3718 NDR_PULL_SET_MEM_CTX(ndr, r->out.TagId, 0);
3719 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.TagId));
3720 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_TagId_0, 0);
3722 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
3724 return NDR_ERR_SUCCESS;
3727 _PUBLIC_ void ndr_print_svcctl_CreateServiceA(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_CreateServiceA *r)
3729 ndr_print_struct(ndr, name, "svcctl_CreateServiceA");
3730 ndr->depth++;
3731 if (flags & NDR_SET_VALUES) {
3732 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
3734 if (flags & NDR_IN) {
3735 ndr_print_struct(ndr, "in", "svcctl_CreateServiceA");
3736 ndr->depth++;
3737 ndr_print_ptr(ndr, "handle", r->in.handle);
3738 ndr->depth++;
3739 ndr_print_policy_handle(ndr, "handle", r->in.handle);
3740 ndr->depth--;
3741 ndr_print_ptr(ndr, "ServiceName", r->in.ServiceName);
3742 ndr->depth++;
3743 if (r->in.ServiceName) {
3744 ndr_print_string(ndr, "ServiceName", r->in.ServiceName);
3746 ndr->depth--;
3747 ndr_print_ptr(ndr, "DisplayName", r->in.DisplayName);
3748 ndr->depth++;
3749 if (r->in.DisplayName) {
3750 ndr_print_string(ndr, "DisplayName", r->in.DisplayName);
3752 ndr->depth--;
3753 ndr_print_uint32(ndr, "desired_access", r->in.desired_access);
3754 ndr_print_uint32(ndr, "type", r->in.type);
3755 ndr_print_uint32(ndr, "start_type", r->in.start_type);
3756 ndr_print_uint32(ndr, "error_control", r->in.error_control);
3757 ndr_print_ptr(ndr, "binary_path", r->in.binary_path);
3758 ndr->depth++;
3759 if (r->in.binary_path) {
3760 ndr_print_string(ndr, "binary_path", r->in.binary_path);
3762 ndr->depth--;
3763 ndr_print_ptr(ndr, "LoadOrderGroupKey", r->in.LoadOrderGroupKey);
3764 ndr->depth++;
3765 if (r->in.LoadOrderGroupKey) {
3766 ndr_print_string(ndr, "LoadOrderGroupKey", r->in.LoadOrderGroupKey);
3768 ndr->depth--;
3769 ndr_print_ptr(ndr, "dependencies", r->in.dependencies);
3770 ndr->depth++;
3771 if (r->in.dependencies) {
3772 ndr_print_string(ndr, "dependencies", r->in.dependencies);
3774 ndr->depth--;
3775 ndr_print_ptr(ndr, "service_start_name", r->in.service_start_name);
3776 ndr->depth++;
3777 if (r->in.service_start_name) {
3778 ndr_print_string(ndr, "service_start_name", r->in.service_start_name);
3780 ndr->depth--;
3781 ndr_print_ptr(ndr, "password", r->in.password);
3782 ndr->depth++;
3783 if (r->in.password) {
3784 ndr_print_string(ndr, "password", r->in.password);
3786 ndr->depth--;
3787 ndr->depth--;
3789 if (flags & NDR_OUT) {
3790 ndr_print_struct(ndr, "out", "svcctl_CreateServiceA");
3791 ndr->depth++;
3792 ndr_print_ptr(ndr, "TagId", r->out.TagId);
3793 ndr->depth++;
3794 if (r->out.TagId) {
3795 ndr_print_uint32(ndr, "TagId", *r->out.TagId);
3797 ndr->depth--;
3798 ndr_print_WERROR(ndr, "result", r->out.result);
3799 ndr->depth--;
3801 ndr->depth--;
3804 static enum ndr_err_code ndr_push_svcctl_EnumDependentServicesA(struct ndr_push *ndr, int flags, const struct svcctl_EnumDependentServicesA *r)
3806 if (flags & NDR_IN) {
3807 if (r->in.service == NULL) {
3808 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
3810 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.service));
3811 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.state));
3812 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.buf_size));
3814 if (flags & NDR_OUT) {
3815 NDR_CHECK(ndr_push_unique_ptr(ndr, r->out.service_status));
3816 if (r->out.service_status) {
3817 NDR_CHECK(ndr_push_ENUM_SERVICE_STATUS(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.service_status));
3819 if (r->out.bytes_needed == NULL) {
3820 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
3822 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.bytes_needed));
3823 if (r->out.services_returned == NULL) {
3824 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
3826 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.services_returned));
3827 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
3829 return NDR_ERR_SUCCESS;
3832 static enum ndr_err_code ndr_pull_svcctl_EnumDependentServicesA(struct ndr_pull *ndr, int flags, struct svcctl_EnumDependentServicesA *r)
3834 uint32_t _ptr_service_status;
3835 TALLOC_CTX *_mem_save_service_0;
3836 TALLOC_CTX *_mem_save_service_status_0;
3837 TALLOC_CTX *_mem_save_bytes_needed_0;
3838 TALLOC_CTX *_mem_save_services_returned_0;
3839 if (flags & NDR_IN) {
3840 ZERO_STRUCT(r->out);
3842 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
3843 NDR_PULL_ALLOC(ndr, r->in.service);
3845 _mem_save_service_0 = NDR_PULL_GET_MEM_CTX(ndr);
3846 NDR_PULL_SET_MEM_CTX(ndr, r->in.service, LIBNDR_FLAG_REF_ALLOC);
3847 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.service));
3848 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_service_0, LIBNDR_FLAG_REF_ALLOC);
3849 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.state));
3850 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.buf_size));
3851 NDR_PULL_ALLOC(ndr, r->out.bytes_needed);
3852 ZERO_STRUCTP(r->out.bytes_needed);
3853 NDR_PULL_ALLOC(ndr, r->out.services_returned);
3854 ZERO_STRUCTP(r->out.services_returned);
3856 if (flags & NDR_OUT) {
3857 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_service_status));
3858 if (_ptr_service_status) {
3859 NDR_PULL_ALLOC(ndr, r->out.service_status);
3860 } else {
3861 r->out.service_status = NULL;
3863 if (r->out.service_status) {
3864 _mem_save_service_status_0 = NDR_PULL_GET_MEM_CTX(ndr);
3865 NDR_PULL_SET_MEM_CTX(ndr, r->out.service_status, 0);
3866 NDR_CHECK(ndr_pull_ENUM_SERVICE_STATUS(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.service_status));
3867 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_service_status_0, 0);
3869 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
3870 NDR_PULL_ALLOC(ndr, r->out.bytes_needed);
3872 _mem_save_bytes_needed_0 = NDR_PULL_GET_MEM_CTX(ndr);
3873 NDR_PULL_SET_MEM_CTX(ndr, r->out.bytes_needed, LIBNDR_FLAG_REF_ALLOC);
3874 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.bytes_needed));
3875 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_bytes_needed_0, LIBNDR_FLAG_REF_ALLOC);
3876 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
3877 NDR_PULL_ALLOC(ndr, r->out.services_returned);
3879 _mem_save_services_returned_0 = NDR_PULL_GET_MEM_CTX(ndr);
3880 NDR_PULL_SET_MEM_CTX(ndr, r->out.services_returned, LIBNDR_FLAG_REF_ALLOC);
3881 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.services_returned));
3882 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_services_returned_0, LIBNDR_FLAG_REF_ALLOC);
3883 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
3885 return NDR_ERR_SUCCESS;
3888 _PUBLIC_ void ndr_print_svcctl_EnumDependentServicesA(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_EnumDependentServicesA *r)
3890 ndr_print_struct(ndr, name, "svcctl_EnumDependentServicesA");
3891 ndr->depth++;
3892 if (flags & NDR_SET_VALUES) {
3893 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
3895 if (flags & NDR_IN) {
3896 ndr_print_struct(ndr, "in", "svcctl_EnumDependentServicesA");
3897 ndr->depth++;
3898 ndr_print_ptr(ndr, "service", r->in.service);
3899 ndr->depth++;
3900 ndr_print_policy_handle(ndr, "service", r->in.service);
3901 ndr->depth--;
3902 ndr_print_uint32(ndr, "state", r->in.state);
3903 ndr_print_uint32(ndr, "buf_size", r->in.buf_size);
3904 ndr->depth--;
3906 if (flags & NDR_OUT) {
3907 ndr_print_struct(ndr, "out", "svcctl_EnumDependentServicesA");
3908 ndr->depth++;
3909 ndr_print_ptr(ndr, "service_status", r->out.service_status);
3910 ndr->depth++;
3911 if (r->out.service_status) {
3912 ndr_print_ENUM_SERVICE_STATUS(ndr, "service_status", r->out.service_status);
3914 ndr->depth--;
3915 ndr_print_ptr(ndr, "bytes_needed", r->out.bytes_needed);
3916 ndr->depth++;
3917 ndr_print_uint32(ndr, "bytes_needed", *r->out.bytes_needed);
3918 ndr->depth--;
3919 ndr_print_ptr(ndr, "services_returned", r->out.services_returned);
3920 ndr->depth++;
3921 ndr_print_uint32(ndr, "services_returned", *r->out.services_returned);
3922 ndr->depth--;
3923 ndr_print_WERROR(ndr, "result", r->out.result);
3924 ndr->depth--;
3926 ndr->depth--;
3929 static enum ndr_err_code ndr_push_svcctl_EnumServicesStatusA(struct ndr_push *ndr, int flags, const struct svcctl_EnumServicesStatusA *r)
3931 if (flags & NDR_IN) {
3932 if (r->in.handle == NULL) {
3933 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
3935 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
3936 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.type));
3937 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.state));
3938 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.buf_size));
3939 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.resume_handle));
3940 if (r->in.resume_handle) {
3941 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->in.resume_handle));
3944 if (flags & NDR_OUT) {
3945 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.buf_size));
3946 NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->out.service, r->in.buf_size));
3947 if (r->out.bytes_needed == NULL) {
3948 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
3950 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.bytes_needed));
3951 if (r->out.services_returned == NULL) {
3952 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
3954 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.services_returned));
3955 NDR_CHECK(ndr_push_unique_ptr(ndr, r->out.resume_handle));
3956 if (r->out.resume_handle) {
3957 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.resume_handle));
3959 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
3961 return NDR_ERR_SUCCESS;
3964 static enum ndr_err_code ndr_pull_svcctl_EnumServicesStatusA(struct ndr_pull *ndr, int flags, struct svcctl_EnumServicesStatusA *r)
3966 uint32_t _ptr_resume_handle;
3967 TALLOC_CTX *_mem_save_handle_0;
3968 TALLOC_CTX *_mem_save_bytes_needed_0;
3969 TALLOC_CTX *_mem_save_services_returned_0;
3970 TALLOC_CTX *_mem_save_resume_handle_0;
3971 if (flags & NDR_IN) {
3972 ZERO_STRUCT(r->out);
3974 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
3975 NDR_PULL_ALLOC(ndr, r->in.handle);
3977 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
3978 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
3979 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
3980 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
3981 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.type));
3982 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.state));
3983 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.buf_size));
3984 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_resume_handle));
3985 if (_ptr_resume_handle) {
3986 NDR_PULL_ALLOC(ndr, r->in.resume_handle);
3987 } else {
3988 r->in.resume_handle = NULL;
3990 if (r->in.resume_handle) {
3991 _mem_save_resume_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
3992 NDR_PULL_SET_MEM_CTX(ndr, r->in.resume_handle, 0);
3993 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->in.resume_handle));
3994 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_resume_handle_0, 0);
3996 NDR_PULL_ALLOC(ndr, r->out.bytes_needed);
3997 ZERO_STRUCTP(r->out.bytes_needed);
3998 NDR_PULL_ALLOC(ndr, r->out.services_returned);
3999 ZERO_STRUCTP(r->out.services_returned);
4001 if (flags & NDR_OUT) {
4002 NDR_CHECK(ndr_pull_array_size(ndr, &r->out.service));
4003 NDR_PULL_ALLOC_N(ndr, r->out.service, ndr_get_array_size(ndr, &r->out.service));
4004 NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->out.service, ndr_get_array_size(ndr, &r->out.service)));
4005 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
4006 NDR_PULL_ALLOC(ndr, r->out.bytes_needed);
4008 _mem_save_bytes_needed_0 = NDR_PULL_GET_MEM_CTX(ndr);
4009 NDR_PULL_SET_MEM_CTX(ndr, r->out.bytes_needed, LIBNDR_FLAG_REF_ALLOC);
4010 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.bytes_needed));
4011 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_bytes_needed_0, LIBNDR_FLAG_REF_ALLOC);
4012 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
4013 NDR_PULL_ALLOC(ndr, r->out.services_returned);
4015 _mem_save_services_returned_0 = NDR_PULL_GET_MEM_CTX(ndr);
4016 NDR_PULL_SET_MEM_CTX(ndr, r->out.services_returned, LIBNDR_FLAG_REF_ALLOC);
4017 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.services_returned));
4018 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_services_returned_0, LIBNDR_FLAG_REF_ALLOC);
4019 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_resume_handle));
4020 if (_ptr_resume_handle) {
4021 NDR_PULL_ALLOC(ndr, r->out.resume_handle);
4022 } else {
4023 r->out.resume_handle = NULL;
4025 if (r->out.resume_handle) {
4026 _mem_save_resume_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
4027 NDR_PULL_SET_MEM_CTX(ndr, r->out.resume_handle, 0);
4028 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.resume_handle));
4029 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_resume_handle_0, 0);
4031 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
4032 if (r->out.service) {
4033 NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->out.service, r->in.buf_size));
4036 return NDR_ERR_SUCCESS;
4039 _PUBLIC_ void ndr_print_svcctl_EnumServicesStatusA(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_EnumServicesStatusA *r)
4041 ndr_print_struct(ndr, name, "svcctl_EnumServicesStatusA");
4042 ndr->depth++;
4043 if (flags & NDR_SET_VALUES) {
4044 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
4046 if (flags & NDR_IN) {
4047 ndr_print_struct(ndr, "in", "svcctl_EnumServicesStatusA");
4048 ndr->depth++;
4049 ndr_print_ptr(ndr, "handle", r->in.handle);
4050 ndr->depth++;
4051 ndr_print_policy_handle(ndr, "handle", r->in.handle);
4052 ndr->depth--;
4053 ndr_print_uint32(ndr, "type", r->in.type);
4054 ndr_print_uint32(ndr, "state", r->in.state);
4055 ndr_print_uint32(ndr, "buf_size", r->in.buf_size);
4056 ndr_print_ptr(ndr, "resume_handle", r->in.resume_handle);
4057 ndr->depth++;
4058 if (r->in.resume_handle) {
4059 ndr_print_uint32(ndr, "resume_handle", *r->in.resume_handle);
4061 ndr->depth--;
4062 ndr->depth--;
4064 if (flags & NDR_OUT) {
4065 ndr_print_struct(ndr, "out", "svcctl_EnumServicesStatusA");
4066 ndr->depth++;
4067 ndr_print_array_uint8(ndr, "service", r->out.service, r->in.buf_size);
4068 ndr_print_ptr(ndr, "bytes_needed", r->out.bytes_needed);
4069 ndr->depth++;
4070 ndr_print_uint32(ndr, "bytes_needed", *r->out.bytes_needed);
4071 ndr->depth--;
4072 ndr_print_ptr(ndr, "services_returned", r->out.services_returned);
4073 ndr->depth++;
4074 ndr_print_uint32(ndr, "services_returned", *r->out.services_returned);
4075 ndr->depth--;
4076 ndr_print_ptr(ndr, "resume_handle", r->out.resume_handle);
4077 ndr->depth++;
4078 if (r->out.resume_handle) {
4079 ndr_print_uint32(ndr, "resume_handle", *r->out.resume_handle);
4081 ndr->depth--;
4082 ndr_print_WERROR(ndr, "result", r->out.result);
4083 ndr->depth--;
4085 ndr->depth--;
4088 static enum ndr_err_code ndr_push_svcctl_OpenSCManagerA(struct ndr_push *ndr, int flags, const struct svcctl_OpenSCManagerA *r)
4090 if (flags & NDR_IN) {
4091 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.MachineName));
4092 if (r->in.MachineName) {
4093 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.MachineName, CH_UTF16)));
4094 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
4095 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.MachineName, CH_UTF16)));
4096 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.MachineName, ndr_charset_length(r->in.MachineName, CH_UTF16), sizeof(uint16_t), CH_UTF16));
4098 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.DatabaseName));
4099 if (r->in.DatabaseName) {
4100 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.DatabaseName, CH_UTF16)));
4101 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
4102 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.DatabaseName, CH_UTF16)));
4103 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.DatabaseName, ndr_charset_length(r->in.DatabaseName, CH_UTF16), sizeof(uint16_t), CH_UTF16));
4105 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.access_mask));
4107 if (flags & NDR_OUT) {
4108 if (r->out.handle == NULL) {
4109 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
4111 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.handle));
4112 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
4114 return NDR_ERR_SUCCESS;
4117 static enum ndr_err_code ndr_pull_svcctl_OpenSCManagerA(struct ndr_pull *ndr, int flags, struct svcctl_OpenSCManagerA *r)
4119 uint32_t _ptr_MachineName;
4120 uint32_t _ptr_DatabaseName;
4121 TALLOC_CTX *_mem_save_MachineName_0;
4122 TALLOC_CTX *_mem_save_DatabaseName_0;
4123 TALLOC_CTX *_mem_save_handle_0;
4124 if (flags & NDR_IN) {
4125 ZERO_STRUCT(r->out);
4127 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_MachineName));
4128 if (_ptr_MachineName) {
4129 NDR_PULL_ALLOC(ndr, r->in.MachineName);
4130 } else {
4131 r->in.MachineName = NULL;
4133 if (r->in.MachineName) {
4134 _mem_save_MachineName_0 = NDR_PULL_GET_MEM_CTX(ndr);
4135 NDR_PULL_SET_MEM_CTX(ndr, r->in.MachineName, 0);
4136 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.MachineName));
4137 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.MachineName));
4138 if (ndr_get_array_length(ndr, &r->in.MachineName) > ndr_get_array_size(ndr, &r->in.MachineName)) {
4139 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));
4141 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.MachineName), sizeof(uint16_t)));
4142 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.MachineName, ndr_get_array_length(ndr, &r->in.MachineName), sizeof(uint16_t), CH_UTF16));
4143 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_MachineName_0, 0);
4145 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_DatabaseName));
4146 if (_ptr_DatabaseName) {
4147 NDR_PULL_ALLOC(ndr, r->in.DatabaseName);
4148 } else {
4149 r->in.DatabaseName = NULL;
4151 if (r->in.DatabaseName) {
4152 _mem_save_DatabaseName_0 = NDR_PULL_GET_MEM_CTX(ndr);
4153 NDR_PULL_SET_MEM_CTX(ndr, r->in.DatabaseName, 0);
4154 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.DatabaseName));
4155 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.DatabaseName));
4156 if (ndr_get_array_length(ndr, &r->in.DatabaseName) > ndr_get_array_size(ndr, &r->in.DatabaseName)) {
4157 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));
4159 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.DatabaseName), sizeof(uint16_t)));
4160 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.DatabaseName, ndr_get_array_length(ndr, &r->in.DatabaseName), sizeof(uint16_t), CH_UTF16));
4161 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_DatabaseName_0, 0);
4163 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.access_mask));
4164 NDR_PULL_ALLOC(ndr, r->out.handle);
4165 ZERO_STRUCTP(r->out.handle);
4167 if (flags & NDR_OUT) {
4168 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
4169 NDR_PULL_ALLOC(ndr, r->out.handle);
4171 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
4172 NDR_PULL_SET_MEM_CTX(ndr, r->out.handle, LIBNDR_FLAG_REF_ALLOC);
4173 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.handle));
4174 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
4175 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
4177 return NDR_ERR_SUCCESS;
4180 _PUBLIC_ void ndr_print_svcctl_OpenSCManagerA(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_OpenSCManagerA *r)
4182 ndr_print_struct(ndr, name, "svcctl_OpenSCManagerA");
4183 ndr->depth++;
4184 if (flags & NDR_SET_VALUES) {
4185 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
4187 if (flags & NDR_IN) {
4188 ndr_print_struct(ndr, "in", "svcctl_OpenSCManagerA");
4189 ndr->depth++;
4190 ndr_print_ptr(ndr, "MachineName", r->in.MachineName);
4191 ndr->depth++;
4192 if (r->in.MachineName) {
4193 ndr_print_string(ndr, "MachineName", r->in.MachineName);
4195 ndr->depth--;
4196 ndr_print_ptr(ndr, "DatabaseName", r->in.DatabaseName);
4197 ndr->depth++;
4198 if (r->in.DatabaseName) {
4199 ndr_print_string(ndr, "DatabaseName", r->in.DatabaseName);
4201 ndr->depth--;
4202 ndr_print_uint32(ndr, "access_mask", r->in.access_mask);
4203 ndr->depth--;
4205 if (flags & NDR_OUT) {
4206 ndr_print_struct(ndr, "out", "svcctl_OpenSCManagerA");
4207 ndr->depth++;
4208 ndr_print_ptr(ndr, "handle", r->out.handle);
4209 ndr->depth++;
4210 ndr_print_policy_handle(ndr, "handle", r->out.handle);
4211 ndr->depth--;
4212 ndr_print_WERROR(ndr, "result", r->out.result);
4213 ndr->depth--;
4215 ndr->depth--;
4218 static enum ndr_err_code ndr_push_svcctl_OpenServiceA(struct ndr_push *ndr, int flags, const struct svcctl_OpenServiceA *r)
4220 if (flags & NDR_IN) {
4221 if (r->in.scmanager_handle == NULL) {
4222 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
4224 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.scmanager_handle));
4225 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.ServiceName));
4226 if (r->in.ServiceName) {
4227 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.ServiceName, CH_UTF16)));
4228 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
4229 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.ServiceName, CH_UTF16)));
4230 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.ServiceName, ndr_charset_length(r->in.ServiceName, CH_UTF16), sizeof(uint16_t), CH_UTF16));
4232 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.access_mask));
4234 if (flags & NDR_OUT) {
4235 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
4237 return NDR_ERR_SUCCESS;
4240 static enum ndr_err_code ndr_pull_svcctl_OpenServiceA(struct ndr_pull *ndr, int flags, struct svcctl_OpenServiceA *r)
4242 uint32_t _ptr_ServiceName;
4243 TALLOC_CTX *_mem_save_scmanager_handle_0;
4244 TALLOC_CTX *_mem_save_ServiceName_0;
4245 if (flags & NDR_IN) {
4246 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
4247 NDR_PULL_ALLOC(ndr, r->in.scmanager_handle);
4249 _mem_save_scmanager_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
4250 NDR_PULL_SET_MEM_CTX(ndr, r->in.scmanager_handle, LIBNDR_FLAG_REF_ALLOC);
4251 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.scmanager_handle));
4252 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_scmanager_handle_0, LIBNDR_FLAG_REF_ALLOC);
4253 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_ServiceName));
4254 if (_ptr_ServiceName) {
4255 NDR_PULL_ALLOC(ndr, r->in.ServiceName);
4256 } else {
4257 r->in.ServiceName = NULL;
4259 if (r->in.ServiceName) {
4260 _mem_save_ServiceName_0 = NDR_PULL_GET_MEM_CTX(ndr);
4261 NDR_PULL_SET_MEM_CTX(ndr, r->in.ServiceName, 0);
4262 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.ServiceName));
4263 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.ServiceName));
4264 if (ndr_get_array_length(ndr, &r->in.ServiceName) > ndr_get_array_size(ndr, &r->in.ServiceName)) {
4265 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));
4267 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.ServiceName), sizeof(uint16_t)));
4268 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.ServiceName, ndr_get_array_length(ndr, &r->in.ServiceName), sizeof(uint16_t), CH_UTF16));
4269 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_ServiceName_0, 0);
4271 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.access_mask));
4273 if (flags & NDR_OUT) {
4274 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
4276 return NDR_ERR_SUCCESS;
4279 _PUBLIC_ void ndr_print_svcctl_OpenServiceA(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_OpenServiceA *r)
4281 ndr_print_struct(ndr, name, "svcctl_OpenServiceA");
4282 ndr->depth++;
4283 if (flags & NDR_SET_VALUES) {
4284 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
4286 if (flags & NDR_IN) {
4287 ndr_print_struct(ndr, "in", "svcctl_OpenServiceA");
4288 ndr->depth++;
4289 ndr_print_ptr(ndr, "scmanager_handle", r->in.scmanager_handle);
4290 ndr->depth++;
4291 ndr_print_policy_handle(ndr, "scmanager_handle", r->in.scmanager_handle);
4292 ndr->depth--;
4293 ndr_print_ptr(ndr, "ServiceName", r->in.ServiceName);
4294 ndr->depth++;
4295 if (r->in.ServiceName) {
4296 ndr_print_string(ndr, "ServiceName", r->in.ServiceName);
4298 ndr->depth--;
4299 ndr_print_uint32(ndr, "access_mask", r->in.access_mask);
4300 ndr->depth--;
4302 if (flags & NDR_OUT) {
4303 ndr_print_struct(ndr, "out", "svcctl_OpenServiceA");
4304 ndr->depth++;
4305 ndr_print_WERROR(ndr, "result", r->out.result);
4306 ndr->depth--;
4308 ndr->depth--;
4311 static enum ndr_err_code ndr_push_svcctl_QueryServiceConfigA(struct ndr_push *ndr, int flags, const struct svcctl_QueryServiceConfigA *r)
4313 if (flags & NDR_IN) {
4314 if (r->in.handle == NULL) {
4315 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
4317 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
4318 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.buf_size));
4320 if (flags & NDR_OUT) {
4321 NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->out.query, r->in.buf_size));
4322 if (r->out.bytes_needed == NULL) {
4323 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
4325 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.bytes_needed));
4326 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
4328 return NDR_ERR_SUCCESS;
4331 static enum ndr_err_code ndr_pull_svcctl_QueryServiceConfigA(struct ndr_pull *ndr, int flags, struct svcctl_QueryServiceConfigA *r)
4333 TALLOC_CTX *_mem_save_handle_0;
4334 TALLOC_CTX *_mem_save_bytes_needed_0;
4335 if (flags & NDR_IN) {
4336 ZERO_STRUCT(r->out);
4338 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
4339 NDR_PULL_ALLOC(ndr, r->in.handle);
4341 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
4342 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
4343 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
4344 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
4345 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.buf_size));
4346 NDR_PULL_ALLOC(ndr, r->out.bytes_needed);
4347 ZERO_STRUCTP(r->out.bytes_needed);
4349 if (flags & NDR_OUT) {
4350 NDR_PULL_ALLOC_N(ndr, r->out.query, r->in.buf_size);
4351 NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->out.query, r->in.buf_size));
4352 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
4353 NDR_PULL_ALLOC(ndr, r->out.bytes_needed);
4355 _mem_save_bytes_needed_0 = NDR_PULL_GET_MEM_CTX(ndr);
4356 NDR_PULL_SET_MEM_CTX(ndr, r->out.bytes_needed, LIBNDR_FLAG_REF_ALLOC);
4357 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.bytes_needed));
4358 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_bytes_needed_0, LIBNDR_FLAG_REF_ALLOC);
4359 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
4361 return NDR_ERR_SUCCESS;
4364 _PUBLIC_ void ndr_print_svcctl_QueryServiceConfigA(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_QueryServiceConfigA *r)
4366 ndr_print_struct(ndr, name, "svcctl_QueryServiceConfigA");
4367 ndr->depth++;
4368 if (flags & NDR_SET_VALUES) {
4369 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
4371 if (flags & NDR_IN) {
4372 ndr_print_struct(ndr, "in", "svcctl_QueryServiceConfigA");
4373 ndr->depth++;
4374 ndr_print_ptr(ndr, "handle", r->in.handle);
4375 ndr->depth++;
4376 ndr_print_policy_handle(ndr, "handle", r->in.handle);
4377 ndr->depth--;
4378 ndr_print_uint32(ndr, "buf_size", r->in.buf_size);
4379 ndr->depth--;
4381 if (flags & NDR_OUT) {
4382 ndr_print_struct(ndr, "out", "svcctl_QueryServiceConfigA");
4383 ndr->depth++;
4384 ndr_print_array_uint8(ndr, "query", r->out.query, r->in.buf_size);
4385 ndr_print_ptr(ndr, "bytes_needed", r->out.bytes_needed);
4386 ndr->depth++;
4387 ndr_print_uint32(ndr, "bytes_needed", *r->out.bytes_needed);
4388 ndr->depth--;
4389 ndr_print_WERROR(ndr, "result", r->out.result);
4390 ndr->depth--;
4392 ndr->depth--;
4395 static enum ndr_err_code ndr_push_svcctl_QueryServiceLockStatusA(struct ndr_push *ndr, int flags, const struct svcctl_QueryServiceLockStatusA *r)
4397 if (flags & NDR_IN) {
4398 if (r->in.handle == NULL) {
4399 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
4401 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
4402 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.buf_size));
4404 if (flags & NDR_OUT) {
4405 if (r->out.lock_status == NULL) {
4406 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
4408 NDR_CHECK(ndr_push_SERVICE_LOCK_STATUS(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.lock_status));
4409 if (r->out.required_buf_size == NULL) {
4410 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
4412 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.required_buf_size));
4413 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
4415 return NDR_ERR_SUCCESS;
4418 static enum ndr_err_code ndr_pull_svcctl_QueryServiceLockStatusA(struct ndr_pull *ndr, int flags, struct svcctl_QueryServiceLockStatusA *r)
4420 TALLOC_CTX *_mem_save_handle_0;
4421 TALLOC_CTX *_mem_save_lock_status_0;
4422 TALLOC_CTX *_mem_save_required_buf_size_0;
4423 if (flags & NDR_IN) {
4424 ZERO_STRUCT(r->out);
4426 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
4427 NDR_PULL_ALLOC(ndr, r->in.handle);
4429 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
4430 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
4431 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
4432 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
4433 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.buf_size));
4434 NDR_PULL_ALLOC(ndr, r->out.lock_status);
4435 ZERO_STRUCTP(r->out.lock_status);
4436 NDR_PULL_ALLOC(ndr, r->out.required_buf_size);
4437 ZERO_STRUCTP(r->out.required_buf_size);
4439 if (flags & NDR_OUT) {
4440 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
4441 NDR_PULL_ALLOC(ndr, r->out.lock_status);
4443 _mem_save_lock_status_0 = NDR_PULL_GET_MEM_CTX(ndr);
4444 NDR_PULL_SET_MEM_CTX(ndr, r->out.lock_status, LIBNDR_FLAG_REF_ALLOC);
4445 NDR_CHECK(ndr_pull_SERVICE_LOCK_STATUS(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.lock_status));
4446 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_lock_status_0, LIBNDR_FLAG_REF_ALLOC);
4447 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
4448 NDR_PULL_ALLOC(ndr, r->out.required_buf_size);
4450 _mem_save_required_buf_size_0 = NDR_PULL_GET_MEM_CTX(ndr);
4451 NDR_PULL_SET_MEM_CTX(ndr, r->out.required_buf_size, LIBNDR_FLAG_REF_ALLOC);
4452 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.required_buf_size));
4453 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_required_buf_size_0, LIBNDR_FLAG_REF_ALLOC);
4454 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
4456 return NDR_ERR_SUCCESS;
4459 _PUBLIC_ void ndr_print_svcctl_QueryServiceLockStatusA(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_QueryServiceLockStatusA *r)
4461 ndr_print_struct(ndr, name, "svcctl_QueryServiceLockStatusA");
4462 ndr->depth++;
4463 if (flags & NDR_SET_VALUES) {
4464 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
4466 if (flags & NDR_IN) {
4467 ndr_print_struct(ndr, "in", "svcctl_QueryServiceLockStatusA");
4468 ndr->depth++;
4469 ndr_print_ptr(ndr, "handle", r->in.handle);
4470 ndr->depth++;
4471 ndr_print_policy_handle(ndr, "handle", r->in.handle);
4472 ndr->depth--;
4473 ndr_print_uint32(ndr, "buf_size", r->in.buf_size);
4474 ndr->depth--;
4476 if (flags & NDR_OUT) {
4477 ndr_print_struct(ndr, "out", "svcctl_QueryServiceLockStatusA");
4478 ndr->depth++;
4479 ndr_print_ptr(ndr, "lock_status", r->out.lock_status);
4480 ndr->depth++;
4481 ndr_print_SERVICE_LOCK_STATUS(ndr, "lock_status", r->out.lock_status);
4482 ndr->depth--;
4483 ndr_print_ptr(ndr, "required_buf_size", r->out.required_buf_size);
4484 ndr->depth++;
4485 ndr_print_uint32(ndr, "required_buf_size", *r->out.required_buf_size);
4486 ndr->depth--;
4487 ndr_print_WERROR(ndr, "result", r->out.result);
4488 ndr->depth--;
4490 ndr->depth--;
4493 static enum ndr_err_code ndr_push_svcctl_StartServiceA(struct ndr_push *ndr, int flags, const struct svcctl_StartServiceA *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|NDR_BUFFERS, r->in.handle));
4500 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.NumArgs));
4501 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.Arguments));
4502 if (r->in.Arguments) {
4503 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.Arguments, CH_UTF16)));
4504 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
4505 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.Arguments, CH_UTF16)));
4506 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.Arguments, ndr_charset_length(r->in.Arguments, CH_UTF16), sizeof(uint16_t), CH_UTF16));
4509 if (flags & NDR_OUT) {
4510 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
4512 return NDR_ERR_SUCCESS;
4515 static enum ndr_err_code ndr_pull_svcctl_StartServiceA(struct ndr_pull *ndr, int flags, struct svcctl_StartServiceA *r)
4517 uint32_t _ptr_Arguments;
4518 TALLOC_CTX *_mem_save_handle_0;
4519 TALLOC_CTX *_mem_save_Arguments_0;
4520 if (flags & NDR_IN) {
4521 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
4522 NDR_PULL_ALLOC(ndr, r->in.handle);
4524 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
4525 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
4526 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
4527 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
4528 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.NumArgs));
4529 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_Arguments));
4530 if (_ptr_Arguments) {
4531 NDR_PULL_ALLOC(ndr, r->in.Arguments);
4532 } else {
4533 r->in.Arguments = NULL;
4535 if (r->in.Arguments) {
4536 _mem_save_Arguments_0 = NDR_PULL_GET_MEM_CTX(ndr);
4537 NDR_PULL_SET_MEM_CTX(ndr, r->in.Arguments, 0);
4538 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.Arguments));
4539 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.Arguments));
4540 if (ndr_get_array_length(ndr, &r->in.Arguments) > ndr_get_array_size(ndr, &r->in.Arguments)) {
4541 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));
4543 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.Arguments), sizeof(uint16_t)));
4544 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.Arguments, ndr_get_array_length(ndr, &r->in.Arguments), sizeof(uint16_t), CH_UTF16));
4545 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_Arguments_0, 0);
4548 if (flags & NDR_OUT) {
4549 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
4551 return NDR_ERR_SUCCESS;
4554 _PUBLIC_ void ndr_print_svcctl_StartServiceA(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_StartServiceA *r)
4556 ndr_print_struct(ndr, name, "svcctl_StartServiceA");
4557 ndr->depth++;
4558 if (flags & NDR_SET_VALUES) {
4559 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
4561 if (flags & NDR_IN) {
4562 ndr_print_struct(ndr, "in", "svcctl_StartServiceA");
4563 ndr->depth++;
4564 ndr_print_ptr(ndr, "handle", r->in.handle);
4565 ndr->depth++;
4566 ndr_print_policy_handle(ndr, "handle", r->in.handle);
4567 ndr->depth--;
4568 ndr_print_uint32(ndr, "NumArgs", r->in.NumArgs);
4569 ndr_print_ptr(ndr, "Arguments", r->in.Arguments);
4570 ndr->depth++;
4571 if (r->in.Arguments) {
4572 ndr_print_string(ndr, "Arguments", r->in.Arguments);
4574 ndr->depth--;
4575 ndr->depth--;
4577 if (flags & NDR_OUT) {
4578 ndr_print_struct(ndr, "out", "svcctl_StartServiceA");
4579 ndr->depth++;
4580 ndr_print_WERROR(ndr, "result", r->out.result);
4581 ndr->depth--;
4583 ndr->depth--;
4586 static enum ndr_err_code ndr_push_svcctl_GetServiceDisplayNameA(struct ndr_push *ndr, int flags, const struct svcctl_GetServiceDisplayNameA *r)
4588 if (flags & NDR_IN) {
4589 if (r->in.handle == NULL) {
4590 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
4592 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
4593 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.service_name));
4594 if (r->in.service_name) {
4595 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.service_name, CH_UTF16)));
4596 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
4597 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.service_name, CH_UTF16)));
4598 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));
4600 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.display_name_length));
4601 if (r->in.display_name_length) {
4602 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->in.display_name_length));
4605 if (flags & NDR_OUT) {
4606 if (r->out.display_name == NULL) {
4607 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
4609 NDR_CHECK(ndr_push_unique_ptr(ndr, *r->out.display_name));
4610 if (*r->out.display_name) {
4611 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(*r->out.display_name, CH_UTF16)));
4612 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
4613 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(*r->out.display_name, CH_UTF16)));
4614 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));
4616 NDR_CHECK(ndr_push_unique_ptr(ndr, r->out.display_name_length));
4617 if (r->out.display_name_length) {
4618 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.display_name_length));
4620 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
4622 return NDR_ERR_SUCCESS;
4625 static enum ndr_err_code ndr_pull_svcctl_GetServiceDisplayNameA(struct ndr_pull *ndr, int flags, struct svcctl_GetServiceDisplayNameA *r)
4627 uint32_t _ptr_service_name;
4628 uint32_t _ptr_display_name;
4629 uint32_t _ptr_display_name_length;
4630 TALLOC_CTX *_mem_save_handle_0;
4631 TALLOC_CTX *_mem_save_service_name_0;
4632 TALLOC_CTX *_mem_save_display_name_0;
4633 TALLOC_CTX *_mem_save_display_name_1;
4634 TALLOC_CTX *_mem_save_display_name_length_0;
4635 if (flags & NDR_IN) {
4636 ZERO_STRUCT(r->out);
4638 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
4639 NDR_PULL_ALLOC(ndr, r->in.handle);
4641 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
4642 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
4643 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
4644 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
4645 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_service_name));
4646 if (_ptr_service_name) {
4647 NDR_PULL_ALLOC(ndr, r->in.service_name);
4648 } else {
4649 r->in.service_name = NULL;
4651 if (r->in.service_name) {
4652 _mem_save_service_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
4653 NDR_PULL_SET_MEM_CTX(ndr, r->in.service_name, 0);
4654 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.service_name));
4655 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.service_name));
4656 if (ndr_get_array_length(ndr, &r->in.service_name) > ndr_get_array_size(ndr, &r->in.service_name)) {
4657 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));
4659 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.service_name), sizeof(uint16_t)));
4660 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));
4661 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_service_name_0, 0);
4663 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_display_name_length));
4664 if (_ptr_display_name_length) {
4665 NDR_PULL_ALLOC(ndr, r->in.display_name_length);
4666 } else {
4667 r->in.display_name_length = NULL;
4669 if (r->in.display_name_length) {
4670 _mem_save_display_name_length_0 = NDR_PULL_GET_MEM_CTX(ndr);
4671 NDR_PULL_SET_MEM_CTX(ndr, r->in.display_name_length, 0);
4672 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->in.display_name_length));
4673 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_display_name_length_0, 0);
4675 NDR_PULL_ALLOC(ndr, r->out.display_name);
4676 ZERO_STRUCTP(r->out.display_name);
4678 if (flags & NDR_OUT) {
4679 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
4680 NDR_PULL_ALLOC(ndr, r->out.display_name);
4682 _mem_save_display_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
4683 NDR_PULL_SET_MEM_CTX(ndr, r->out.display_name, LIBNDR_FLAG_REF_ALLOC);
4684 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_display_name));
4685 if (_ptr_display_name) {
4686 NDR_PULL_ALLOC(ndr, *r->out.display_name);
4687 } else {
4688 *r->out.display_name = NULL;
4690 if (*r->out.display_name) {
4691 _mem_save_display_name_1 = NDR_PULL_GET_MEM_CTX(ndr);
4692 NDR_PULL_SET_MEM_CTX(ndr, *r->out.display_name, 0);
4693 NDR_CHECK(ndr_pull_array_size(ndr, r->out.display_name));
4694 NDR_CHECK(ndr_pull_array_length(ndr, r->out.display_name));
4695 if (ndr_get_array_length(ndr, r->out.display_name) > ndr_get_array_size(ndr, r->out.display_name)) {
4696 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));
4698 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, r->out.display_name), sizeof(uint16_t)));
4699 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));
4700 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_display_name_1, 0);
4702 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_display_name_0, LIBNDR_FLAG_REF_ALLOC);
4703 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_display_name_length));
4704 if (_ptr_display_name_length) {
4705 NDR_PULL_ALLOC(ndr, r->out.display_name_length);
4706 } else {
4707 r->out.display_name_length = NULL;
4709 if (r->out.display_name_length) {
4710 _mem_save_display_name_length_0 = NDR_PULL_GET_MEM_CTX(ndr);
4711 NDR_PULL_SET_MEM_CTX(ndr, r->out.display_name_length, 0);
4712 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.display_name_length));
4713 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_display_name_length_0, 0);
4715 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
4717 return NDR_ERR_SUCCESS;
4720 _PUBLIC_ void ndr_print_svcctl_GetServiceDisplayNameA(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_GetServiceDisplayNameA *r)
4722 ndr_print_struct(ndr, name, "svcctl_GetServiceDisplayNameA");
4723 ndr->depth++;
4724 if (flags & NDR_SET_VALUES) {
4725 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
4727 if (flags & NDR_IN) {
4728 ndr_print_struct(ndr, "in", "svcctl_GetServiceDisplayNameA");
4729 ndr->depth++;
4730 ndr_print_ptr(ndr, "handle", r->in.handle);
4731 ndr->depth++;
4732 ndr_print_policy_handle(ndr, "handle", r->in.handle);
4733 ndr->depth--;
4734 ndr_print_ptr(ndr, "service_name", r->in.service_name);
4735 ndr->depth++;
4736 if (r->in.service_name) {
4737 ndr_print_string(ndr, "service_name", r->in.service_name);
4739 ndr->depth--;
4740 ndr_print_ptr(ndr, "display_name_length", r->in.display_name_length);
4741 ndr->depth++;
4742 if (r->in.display_name_length) {
4743 ndr_print_uint32(ndr, "display_name_length", *r->in.display_name_length);
4745 ndr->depth--;
4746 ndr->depth--;
4748 if (flags & NDR_OUT) {
4749 ndr_print_struct(ndr, "out", "svcctl_GetServiceDisplayNameA");
4750 ndr->depth++;
4751 ndr_print_ptr(ndr, "display_name", r->out.display_name);
4752 ndr->depth++;
4753 ndr_print_ptr(ndr, "display_name", *r->out.display_name);
4754 ndr->depth++;
4755 if (*r->out.display_name) {
4756 ndr_print_string(ndr, "display_name", *r->out.display_name);
4758 ndr->depth--;
4759 ndr->depth--;
4760 ndr_print_ptr(ndr, "display_name_length", r->out.display_name_length);
4761 ndr->depth++;
4762 if (r->out.display_name_length) {
4763 ndr_print_uint32(ndr, "display_name_length", *r->out.display_name_length);
4765 ndr->depth--;
4766 ndr_print_WERROR(ndr, "result", r->out.result);
4767 ndr->depth--;
4769 ndr->depth--;
4772 static enum ndr_err_code ndr_push_svcctl_GetServiceKeyNameA(struct ndr_push *ndr, int flags, const struct svcctl_GetServiceKeyNameA *r)
4774 if (flags & NDR_IN) {
4775 if (r->in.handle == NULL) {
4776 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
4778 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
4779 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.service_name));
4780 if (r->in.service_name) {
4781 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.service_name, CH_UTF16)));
4782 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
4783 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.service_name, CH_UTF16)));
4784 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));
4786 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.display_name_length));
4787 if (r->in.display_name_length) {
4788 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->in.display_name_length));
4791 if (flags & NDR_OUT) {
4792 if (r->out.key_name == NULL) {
4793 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
4795 NDR_CHECK(ndr_push_unique_ptr(ndr, *r->out.key_name));
4796 if (*r->out.key_name) {
4797 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(*r->out.key_name, CH_UTF16)));
4798 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
4799 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(*r->out.key_name, CH_UTF16)));
4800 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));
4802 NDR_CHECK(ndr_push_unique_ptr(ndr, r->out.display_name_length));
4803 if (r->out.display_name_length) {
4804 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.display_name_length));
4806 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
4808 return NDR_ERR_SUCCESS;
4811 static enum ndr_err_code ndr_pull_svcctl_GetServiceKeyNameA(struct ndr_pull *ndr, int flags, struct svcctl_GetServiceKeyNameA *r)
4813 uint32_t _ptr_service_name;
4814 uint32_t _ptr_key_name;
4815 uint32_t _ptr_display_name_length;
4816 TALLOC_CTX *_mem_save_handle_0;
4817 TALLOC_CTX *_mem_save_service_name_0;
4818 TALLOC_CTX *_mem_save_key_name_0;
4819 TALLOC_CTX *_mem_save_key_name_1;
4820 TALLOC_CTX *_mem_save_display_name_length_0;
4821 if (flags & NDR_IN) {
4822 ZERO_STRUCT(r->out);
4824 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
4825 NDR_PULL_ALLOC(ndr, r->in.handle);
4827 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
4828 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
4829 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
4830 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
4831 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_service_name));
4832 if (_ptr_service_name) {
4833 NDR_PULL_ALLOC(ndr, r->in.service_name);
4834 } else {
4835 r->in.service_name = NULL;
4837 if (r->in.service_name) {
4838 _mem_save_service_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
4839 NDR_PULL_SET_MEM_CTX(ndr, r->in.service_name, 0);
4840 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.service_name));
4841 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.service_name));
4842 if (ndr_get_array_length(ndr, &r->in.service_name) > ndr_get_array_size(ndr, &r->in.service_name)) {
4843 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));
4845 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.service_name), sizeof(uint16_t)));
4846 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));
4847 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_service_name_0, 0);
4849 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_display_name_length));
4850 if (_ptr_display_name_length) {
4851 NDR_PULL_ALLOC(ndr, r->in.display_name_length);
4852 } else {
4853 r->in.display_name_length = NULL;
4855 if (r->in.display_name_length) {
4856 _mem_save_display_name_length_0 = NDR_PULL_GET_MEM_CTX(ndr);
4857 NDR_PULL_SET_MEM_CTX(ndr, r->in.display_name_length, 0);
4858 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->in.display_name_length));
4859 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_display_name_length_0, 0);
4861 NDR_PULL_ALLOC(ndr, r->out.key_name);
4862 ZERO_STRUCTP(r->out.key_name);
4864 if (flags & NDR_OUT) {
4865 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
4866 NDR_PULL_ALLOC(ndr, r->out.key_name);
4868 _mem_save_key_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
4869 NDR_PULL_SET_MEM_CTX(ndr, r->out.key_name, LIBNDR_FLAG_REF_ALLOC);
4870 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_key_name));
4871 if (_ptr_key_name) {
4872 NDR_PULL_ALLOC(ndr, *r->out.key_name);
4873 } else {
4874 *r->out.key_name = NULL;
4876 if (*r->out.key_name) {
4877 _mem_save_key_name_1 = NDR_PULL_GET_MEM_CTX(ndr);
4878 NDR_PULL_SET_MEM_CTX(ndr, *r->out.key_name, 0);
4879 NDR_CHECK(ndr_pull_array_size(ndr, r->out.key_name));
4880 NDR_CHECK(ndr_pull_array_length(ndr, r->out.key_name));
4881 if (ndr_get_array_length(ndr, r->out.key_name) > ndr_get_array_size(ndr, r->out.key_name)) {
4882 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));
4884 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, r->out.key_name), sizeof(uint16_t)));
4885 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));
4886 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_key_name_1, 0);
4888 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_key_name_0, LIBNDR_FLAG_REF_ALLOC);
4889 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_display_name_length));
4890 if (_ptr_display_name_length) {
4891 NDR_PULL_ALLOC(ndr, r->out.display_name_length);
4892 } else {
4893 r->out.display_name_length = NULL;
4895 if (r->out.display_name_length) {
4896 _mem_save_display_name_length_0 = NDR_PULL_GET_MEM_CTX(ndr);
4897 NDR_PULL_SET_MEM_CTX(ndr, r->out.display_name_length, 0);
4898 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.display_name_length));
4899 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_display_name_length_0, 0);
4901 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
4903 return NDR_ERR_SUCCESS;
4906 _PUBLIC_ void ndr_print_svcctl_GetServiceKeyNameA(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_GetServiceKeyNameA *r)
4908 ndr_print_struct(ndr, name, "svcctl_GetServiceKeyNameA");
4909 ndr->depth++;
4910 if (flags & NDR_SET_VALUES) {
4911 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
4913 if (flags & NDR_IN) {
4914 ndr_print_struct(ndr, "in", "svcctl_GetServiceKeyNameA");
4915 ndr->depth++;
4916 ndr_print_ptr(ndr, "handle", r->in.handle);
4917 ndr->depth++;
4918 ndr_print_policy_handle(ndr, "handle", r->in.handle);
4919 ndr->depth--;
4920 ndr_print_ptr(ndr, "service_name", r->in.service_name);
4921 ndr->depth++;
4922 if (r->in.service_name) {
4923 ndr_print_string(ndr, "service_name", r->in.service_name);
4925 ndr->depth--;
4926 ndr_print_ptr(ndr, "display_name_length", r->in.display_name_length);
4927 ndr->depth++;
4928 if (r->in.display_name_length) {
4929 ndr_print_uint32(ndr, "display_name_length", *r->in.display_name_length);
4931 ndr->depth--;
4932 ndr->depth--;
4934 if (flags & NDR_OUT) {
4935 ndr_print_struct(ndr, "out", "svcctl_GetServiceKeyNameA");
4936 ndr->depth++;
4937 ndr_print_ptr(ndr, "key_name", r->out.key_name);
4938 ndr->depth++;
4939 ndr_print_ptr(ndr, "key_name", *r->out.key_name);
4940 ndr->depth++;
4941 if (*r->out.key_name) {
4942 ndr_print_string(ndr, "key_name", *r->out.key_name);
4944 ndr->depth--;
4945 ndr->depth--;
4946 ndr_print_ptr(ndr, "display_name_length", r->out.display_name_length);
4947 ndr->depth++;
4948 if (r->out.display_name_length) {
4949 ndr_print_uint32(ndr, "display_name_length", *r->out.display_name_length);
4951 ndr->depth--;
4952 ndr_print_WERROR(ndr, "result", r->out.result);
4953 ndr->depth--;
4955 ndr->depth--;
4958 static enum ndr_err_code ndr_push_svcctl_GetCurrentGroupeStateW(struct ndr_push *ndr, int flags, const struct svcctl_GetCurrentGroupeStateW *r)
4960 if (flags & NDR_IN) {
4962 if (flags & NDR_OUT) {
4963 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
4965 return NDR_ERR_SUCCESS;
4968 static enum ndr_err_code ndr_pull_svcctl_GetCurrentGroupeStateW(struct ndr_pull *ndr, int flags, struct svcctl_GetCurrentGroupeStateW *r)
4970 if (flags & NDR_IN) {
4972 if (flags & NDR_OUT) {
4973 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
4975 return NDR_ERR_SUCCESS;
4978 _PUBLIC_ void ndr_print_svcctl_GetCurrentGroupeStateW(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_GetCurrentGroupeStateW *r)
4980 ndr_print_struct(ndr, name, "svcctl_GetCurrentGroupeStateW");
4981 ndr->depth++;
4982 if (flags & NDR_SET_VALUES) {
4983 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
4985 if (flags & NDR_IN) {
4986 ndr_print_struct(ndr, "in", "svcctl_GetCurrentGroupeStateW");
4987 ndr->depth++;
4988 ndr->depth--;
4990 if (flags & NDR_OUT) {
4991 ndr_print_struct(ndr, "out", "svcctl_GetCurrentGroupeStateW");
4992 ndr->depth++;
4993 ndr_print_WERROR(ndr, "result", r->out.result);
4994 ndr->depth--;
4996 ndr->depth--;
4999 static enum ndr_err_code ndr_push_svcctl_EnumServiceGroupW(struct ndr_push *ndr, int flags, const struct svcctl_EnumServiceGroupW *r)
5001 if (flags & NDR_IN) {
5003 if (flags & NDR_OUT) {
5004 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
5006 return NDR_ERR_SUCCESS;
5009 static enum ndr_err_code ndr_pull_svcctl_EnumServiceGroupW(struct ndr_pull *ndr, int flags, struct svcctl_EnumServiceGroupW *r)
5011 if (flags & NDR_IN) {
5013 if (flags & NDR_OUT) {
5014 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
5016 return NDR_ERR_SUCCESS;
5019 _PUBLIC_ void ndr_print_svcctl_EnumServiceGroupW(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_EnumServiceGroupW *r)
5021 ndr_print_struct(ndr, name, "svcctl_EnumServiceGroupW");
5022 ndr->depth++;
5023 if (flags & NDR_SET_VALUES) {
5024 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
5026 if (flags & NDR_IN) {
5027 ndr_print_struct(ndr, "in", "svcctl_EnumServiceGroupW");
5028 ndr->depth++;
5029 ndr->depth--;
5031 if (flags & NDR_OUT) {
5032 ndr_print_struct(ndr, "out", "svcctl_EnumServiceGroupW");
5033 ndr->depth++;
5034 ndr_print_WERROR(ndr, "result", r->out.result);
5035 ndr->depth--;
5037 ndr->depth--;
5040 static enum ndr_err_code ndr_push_svcctl_ChangeServiceConfig2A(struct ndr_push *ndr, int flags, const struct svcctl_ChangeServiceConfig2A *r)
5042 if (flags & NDR_IN) {
5043 if (r->in.handle == NULL) {
5044 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
5046 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
5047 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.info_level));
5048 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.info));
5049 if (r->in.info) {
5050 NDR_CHECK(ndr_push_uint8(ndr, NDR_SCALARS, *r->in.info));
5053 if (flags & NDR_OUT) {
5054 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
5056 return NDR_ERR_SUCCESS;
5059 static enum ndr_err_code ndr_pull_svcctl_ChangeServiceConfig2A(struct ndr_pull *ndr, int flags, struct svcctl_ChangeServiceConfig2A *r)
5061 uint32_t _ptr_info;
5062 TALLOC_CTX *_mem_save_handle_0;
5063 TALLOC_CTX *_mem_save_info_0;
5064 if (flags & NDR_IN) {
5065 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
5066 NDR_PULL_ALLOC(ndr, r->in.handle);
5068 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
5069 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
5070 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
5071 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
5072 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.info_level));
5073 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_info));
5074 if (_ptr_info) {
5075 NDR_PULL_ALLOC(ndr, r->in.info);
5076 } else {
5077 r->in.info = NULL;
5079 if (r->in.info) {
5080 _mem_save_info_0 = NDR_PULL_GET_MEM_CTX(ndr);
5081 NDR_PULL_SET_MEM_CTX(ndr, r->in.info, 0);
5082 NDR_CHECK(ndr_pull_uint8(ndr, NDR_SCALARS, r->in.info));
5083 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_info_0, 0);
5086 if (flags & NDR_OUT) {
5087 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
5089 return NDR_ERR_SUCCESS;
5092 _PUBLIC_ void ndr_print_svcctl_ChangeServiceConfig2A(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_ChangeServiceConfig2A *r)
5094 ndr_print_struct(ndr, name, "svcctl_ChangeServiceConfig2A");
5095 ndr->depth++;
5096 if (flags & NDR_SET_VALUES) {
5097 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
5099 if (flags & NDR_IN) {
5100 ndr_print_struct(ndr, "in", "svcctl_ChangeServiceConfig2A");
5101 ndr->depth++;
5102 ndr_print_ptr(ndr, "handle", r->in.handle);
5103 ndr->depth++;
5104 ndr_print_policy_handle(ndr, "handle", r->in.handle);
5105 ndr->depth--;
5106 ndr_print_uint32(ndr, "info_level", r->in.info_level);
5107 ndr_print_ptr(ndr, "info", r->in.info);
5108 ndr->depth++;
5109 if (r->in.info) {
5110 ndr_print_uint8(ndr, "info", *r->in.info);
5112 ndr->depth--;
5113 ndr->depth--;
5115 if (flags & NDR_OUT) {
5116 ndr_print_struct(ndr, "out", "svcctl_ChangeServiceConfig2A");
5117 ndr->depth++;
5118 ndr_print_WERROR(ndr, "result", r->out.result);
5119 ndr->depth--;
5121 ndr->depth--;
5124 static enum ndr_err_code ndr_push_svcctl_ChangeServiceConfig2W(struct ndr_push *ndr, int flags, const struct svcctl_ChangeServiceConfig2W *r)
5126 if (flags & NDR_IN) {
5127 if (r->in.handle == NULL) {
5128 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
5130 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
5131 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.info_level));
5132 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.info));
5133 if (r->in.info) {
5134 NDR_CHECK(ndr_push_uint8(ndr, NDR_SCALARS, *r->in.info));
5137 if (flags & NDR_OUT) {
5138 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
5140 return NDR_ERR_SUCCESS;
5143 static enum ndr_err_code ndr_pull_svcctl_ChangeServiceConfig2W(struct ndr_pull *ndr, int flags, struct svcctl_ChangeServiceConfig2W *r)
5145 uint32_t _ptr_info;
5146 TALLOC_CTX *_mem_save_handle_0;
5147 TALLOC_CTX *_mem_save_info_0;
5148 if (flags & NDR_IN) {
5149 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
5150 NDR_PULL_ALLOC(ndr, r->in.handle);
5152 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
5153 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
5154 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
5155 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
5156 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.info_level));
5157 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_info));
5158 if (_ptr_info) {
5159 NDR_PULL_ALLOC(ndr, r->in.info);
5160 } else {
5161 r->in.info = NULL;
5163 if (r->in.info) {
5164 _mem_save_info_0 = NDR_PULL_GET_MEM_CTX(ndr);
5165 NDR_PULL_SET_MEM_CTX(ndr, r->in.info, 0);
5166 NDR_CHECK(ndr_pull_uint8(ndr, NDR_SCALARS, r->in.info));
5167 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_info_0, 0);
5170 if (flags & NDR_OUT) {
5171 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
5173 return NDR_ERR_SUCCESS;
5176 _PUBLIC_ void ndr_print_svcctl_ChangeServiceConfig2W(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_ChangeServiceConfig2W *r)
5178 ndr_print_struct(ndr, name, "svcctl_ChangeServiceConfig2W");
5179 ndr->depth++;
5180 if (flags & NDR_SET_VALUES) {
5181 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
5183 if (flags & NDR_IN) {
5184 ndr_print_struct(ndr, "in", "svcctl_ChangeServiceConfig2W");
5185 ndr->depth++;
5186 ndr_print_ptr(ndr, "handle", r->in.handle);
5187 ndr->depth++;
5188 ndr_print_policy_handle(ndr, "handle", r->in.handle);
5189 ndr->depth--;
5190 ndr_print_uint32(ndr, "info_level", r->in.info_level);
5191 ndr_print_ptr(ndr, "info", r->in.info);
5192 ndr->depth++;
5193 if (r->in.info) {
5194 ndr_print_uint8(ndr, "info", *r->in.info);
5196 ndr->depth--;
5197 ndr->depth--;
5199 if (flags & NDR_OUT) {
5200 ndr_print_struct(ndr, "out", "svcctl_ChangeServiceConfig2W");
5201 ndr->depth++;
5202 ndr_print_WERROR(ndr, "result", r->out.result);
5203 ndr->depth--;
5205 ndr->depth--;
5208 static enum ndr_err_code ndr_push_svcctl_QueryServiceConfig2A(struct ndr_push *ndr, int flags, const struct svcctl_QueryServiceConfig2A *r)
5210 if (flags & NDR_IN) {
5211 if (r->in.handle == NULL) {
5212 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
5214 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
5215 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.info_level));
5216 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.buf_size));
5218 if (flags & NDR_OUT) {
5219 NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->out.buffer, r->in.buf_size));
5220 if (r->out.bytes_needed == NULL) {
5221 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
5223 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.bytes_needed));
5224 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
5226 return NDR_ERR_SUCCESS;
5229 static enum ndr_err_code ndr_pull_svcctl_QueryServiceConfig2A(struct ndr_pull *ndr, int flags, struct svcctl_QueryServiceConfig2A *r)
5231 TALLOC_CTX *_mem_save_handle_0;
5232 TALLOC_CTX *_mem_save_bytes_needed_0;
5233 if (flags & NDR_IN) {
5234 ZERO_STRUCT(r->out);
5236 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
5237 NDR_PULL_ALLOC(ndr, r->in.handle);
5239 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
5240 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
5241 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
5242 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
5243 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.info_level));
5244 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.buf_size));
5245 NDR_PULL_ALLOC(ndr, r->out.bytes_needed);
5246 ZERO_STRUCTP(r->out.bytes_needed);
5248 if (flags & NDR_OUT) {
5249 NDR_PULL_ALLOC_N(ndr, r->out.buffer, r->in.buf_size);
5250 NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->out.buffer, r->in.buf_size));
5251 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
5252 NDR_PULL_ALLOC(ndr, r->out.bytes_needed);
5254 _mem_save_bytes_needed_0 = NDR_PULL_GET_MEM_CTX(ndr);
5255 NDR_PULL_SET_MEM_CTX(ndr, r->out.bytes_needed, LIBNDR_FLAG_REF_ALLOC);
5256 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.bytes_needed));
5257 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_bytes_needed_0, LIBNDR_FLAG_REF_ALLOC);
5258 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
5260 return NDR_ERR_SUCCESS;
5263 _PUBLIC_ void ndr_print_svcctl_QueryServiceConfig2A(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_QueryServiceConfig2A *r)
5265 ndr_print_struct(ndr, name, "svcctl_QueryServiceConfig2A");
5266 ndr->depth++;
5267 if (flags & NDR_SET_VALUES) {
5268 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
5270 if (flags & NDR_IN) {
5271 ndr_print_struct(ndr, "in", "svcctl_QueryServiceConfig2A");
5272 ndr->depth++;
5273 ndr_print_ptr(ndr, "handle", r->in.handle);
5274 ndr->depth++;
5275 ndr_print_policy_handle(ndr, "handle", r->in.handle);
5276 ndr->depth--;
5277 ndr_print_uint32(ndr, "info_level", r->in.info_level);
5278 ndr_print_uint32(ndr, "buf_size", r->in.buf_size);
5279 ndr->depth--;
5281 if (flags & NDR_OUT) {
5282 ndr_print_struct(ndr, "out", "svcctl_QueryServiceConfig2A");
5283 ndr->depth++;
5284 ndr_print_array_uint8(ndr, "buffer", r->out.buffer, r->in.buf_size);
5285 ndr_print_ptr(ndr, "bytes_needed", r->out.bytes_needed);
5286 ndr->depth++;
5287 ndr_print_uint32(ndr, "bytes_needed", *r->out.bytes_needed);
5288 ndr->depth--;
5289 ndr_print_WERROR(ndr, "result", r->out.result);
5290 ndr->depth--;
5292 ndr->depth--;
5295 static enum ndr_err_code ndr_push_svcctl_QueryServiceConfig2W(struct ndr_push *ndr, int flags, const struct svcctl_QueryServiceConfig2W *r)
5297 if (flags & NDR_IN) {
5298 if (r->in.handle == NULL) {
5299 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
5301 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
5302 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.info_level));
5303 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.buf_size));
5305 if (flags & NDR_OUT) {
5306 NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->out.buffer, r->in.buf_size));
5307 if (r->out.bytes_needed == NULL) {
5308 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
5310 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.bytes_needed));
5311 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
5313 return NDR_ERR_SUCCESS;
5316 static enum ndr_err_code ndr_pull_svcctl_QueryServiceConfig2W(struct ndr_pull *ndr, int flags, struct svcctl_QueryServiceConfig2W *r)
5318 TALLOC_CTX *_mem_save_handle_0;
5319 TALLOC_CTX *_mem_save_bytes_needed_0;
5320 if (flags & NDR_IN) {
5321 ZERO_STRUCT(r->out);
5323 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
5324 NDR_PULL_ALLOC(ndr, r->in.handle);
5326 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
5327 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
5328 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
5329 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
5330 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.info_level));
5331 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.buf_size));
5332 NDR_PULL_ALLOC(ndr, r->out.bytes_needed);
5333 ZERO_STRUCTP(r->out.bytes_needed);
5335 if (flags & NDR_OUT) {
5336 NDR_PULL_ALLOC_N(ndr, r->out.buffer, r->in.buf_size);
5337 NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->out.buffer, r->in.buf_size));
5338 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
5339 NDR_PULL_ALLOC(ndr, r->out.bytes_needed);
5341 _mem_save_bytes_needed_0 = NDR_PULL_GET_MEM_CTX(ndr);
5342 NDR_PULL_SET_MEM_CTX(ndr, r->out.bytes_needed, LIBNDR_FLAG_REF_ALLOC);
5343 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.bytes_needed));
5344 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_bytes_needed_0, LIBNDR_FLAG_REF_ALLOC);
5345 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
5347 return NDR_ERR_SUCCESS;
5350 _PUBLIC_ void ndr_print_svcctl_QueryServiceConfig2W(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_QueryServiceConfig2W *r)
5352 ndr_print_struct(ndr, name, "svcctl_QueryServiceConfig2W");
5353 ndr->depth++;
5354 if (flags & NDR_SET_VALUES) {
5355 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
5357 if (flags & NDR_IN) {
5358 ndr_print_struct(ndr, "in", "svcctl_QueryServiceConfig2W");
5359 ndr->depth++;
5360 ndr_print_ptr(ndr, "handle", r->in.handle);
5361 ndr->depth++;
5362 ndr_print_policy_handle(ndr, "handle", r->in.handle);
5363 ndr->depth--;
5364 ndr_print_uint32(ndr, "info_level", r->in.info_level);
5365 ndr_print_uint32(ndr, "buf_size", r->in.buf_size);
5366 ndr->depth--;
5368 if (flags & NDR_OUT) {
5369 ndr_print_struct(ndr, "out", "svcctl_QueryServiceConfig2W");
5370 ndr->depth++;
5371 ndr_print_array_uint8(ndr, "buffer", r->out.buffer, r->in.buf_size);
5372 ndr_print_ptr(ndr, "bytes_needed", r->out.bytes_needed);
5373 ndr->depth++;
5374 ndr_print_uint32(ndr, "bytes_needed", *r->out.bytes_needed);
5375 ndr->depth--;
5376 ndr_print_WERROR(ndr, "result", r->out.result);
5377 ndr->depth--;
5379 ndr->depth--;
5382 static enum ndr_err_code ndr_push_svcctl_QueryServiceStatusEx(struct ndr_push *ndr, int flags, const struct svcctl_QueryServiceStatusEx *r)
5384 if (flags & NDR_IN) {
5385 if (r->in.handle == NULL) {
5386 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
5388 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
5389 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.info_level));
5390 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.buf_size));
5392 if (flags & NDR_OUT) {
5393 NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->out.buffer, r->in.buf_size));
5394 if (r->out.bytes_needed == NULL) {
5395 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
5397 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.bytes_needed));
5398 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
5400 return NDR_ERR_SUCCESS;
5403 static enum ndr_err_code ndr_pull_svcctl_QueryServiceStatusEx(struct ndr_pull *ndr, int flags, struct svcctl_QueryServiceStatusEx *r)
5405 TALLOC_CTX *_mem_save_handle_0;
5406 TALLOC_CTX *_mem_save_bytes_needed_0;
5407 if (flags & NDR_IN) {
5408 ZERO_STRUCT(r->out);
5410 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
5411 NDR_PULL_ALLOC(ndr, r->in.handle);
5413 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
5414 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
5415 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
5416 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
5417 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.info_level));
5418 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.buf_size));
5419 NDR_PULL_ALLOC(ndr, r->out.bytes_needed);
5420 ZERO_STRUCTP(r->out.bytes_needed);
5422 if (flags & NDR_OUT) {
5423 NDR_PULL_ALLOC_N(ndr, r->out.buffer, r->in.buf_size);
5424 NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->out.buffer, r->in.buf_size));
5425 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
5426 NDR_PULL_ALLOC(ndr, r->out.bytes_needed);
5428 _mem_save_bytes_needed_0 = NDR_PULL_GET_MEM_CTX(ndr);
5429 NDR_PULL_SET_MEM_CTX(ndr, r->out.bytes_needed, LIBNDR_FLAG_REF_ALLOC);
5430 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.bytes_needed));
5431 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_bytes_needed_0, LIBNDR_FLAG_REF_ALLOC);
5432 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
5434 return NDR_ERR_SUCCESS;
5437 _PUBLIC_ void ndr_print_svcctl_QueryServiceStatusEx(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_QueryServiceStatusEx *r)
5439 ndr_print_struct(ndr, name, "svcctl_QueryServiceStatusEx");
5440 ndr->depth++;
5441 if (flags & NDR_SET_VALUES) {
5442 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
5444 if (flags & NDR_IN) {
5445 ndr_print_struct(ndr, "in", "svcctl_QueryServiceStatusEx");
5446 ndr->depth++;
5447 ndr_print_ptr(ndr, "handle", r->in.handle);
5448 ndr->depth++;
5449 ndr_print_policy_handle(ndr, "handle", r->in.handle);
5450 ndr->depth--;
5451 ndr_print_uint32(ndr, "info_level", r->in.info_level);
5452 ndr_print_uint32(ndr, "buf_size", r->in.buf_size);
5453 ndr->depth--;
5455 if (flags & NDR_OUT) {
5456 ndr_print_struct(ndr, "out", "svcctl_QueryServiceStatusEx");
5457 ndr->depth++;
5458 ndr_print_array_uint8(ndr, "buffer", r->out.buffer, r->in.buf_size);
5459 ndr_print_ptr(ndr, "bytes_needed", r->out.bytes_needed);
5460 ndr->depth++;
5461 ndr_print_uint32(ndr, "bytes_needed", *r->out.bytes_needed);
5462 ndr->depth--;
5463 ndr_print_WERROR(ndr, "result", r->out.result);
5464 ndr->depth--;
5466 ndr->depth--;
5469 static enum ndr_err_code ndr_push_EnumServicesStatusExA(struct ndr_push *ndr, int flags, const struct EnumServicesStatusExA *r)
5471 if (flags & NDR_IN) {
5472 if (r->in.scmanager == NULL) {
5473 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
5475 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.scmanager));
5476 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.info_level));
5477 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.type));
5478 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.state));
5479 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.buf_size));
5480 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.resume_handle));
5481 if (r->in.resume_handle) {
5482 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->in.resume_handle));
5485 if (flags & NDR_OUT) {
5486 NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->out.services, r->in.buf_size));
5487 if (r->out.bytes_needed == NULL) {
5488 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
5490 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.bytes_needed));
5491 if (r->out.service_returned == NULL) {
5492 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
5494 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.service_returned));
5495 NDR_CHECK(ndr_push_unique_ptr(ndr, r->out.resume_handle));
5496 if (r->out.resume_handle) {
5497 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.resume_handle));
5499 if (r->out.group_name == NULL) {
5500 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
5502 NDR_CHECK(ndr_push_unique_ptr(ndr, *r->out.group_name));
5503 if (*r->out.group_name) {
5504 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(*r->out.group_name, CH_UTF16)));
5505 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
5506 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(*r->out.group_name, CH_UTF16)));
5507 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));
5509 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
5511 return NDR_ERR_SUCCESS;
5514 static enum ndr_err_code ndr_pull_EnumServicesStatusExA(struct ndr_pull *ndr, int flags, struct EnumServicesStatusExA *r)
5516 uint32_t _ptr_resume_handle;
5517 uint32_t _ptr_group_name;
5518 TALLOC_CTX *_mem_save_scmanager_0;
5519 TALLOC_CTX *_mem_save_bytes_needed_0;
5520 TALLOC_CTX *_mem_save_service_returned_0;
5521 TALLOC_CTX *_mem_save_resume_handle_0;
5522 TALLOC_CTX *_mem_save_group_name_0;
5523 TALLOC_CTX *_mem_save_group_name_1;
5524 if (flags & NDR_IN) {
5525 ZERO_STRUCT(r->out);
5527 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
5528 NDR_PULL_ALLOC(ndr, r->in.scmanager);
5530 _mem_save_scmanager_0 = NDR_PULL_GET_MEM_CTX(ndr);
5531 NDR_PULL_SET_MEM_CTX(ndr, r->in.scmanager, LIBNDR_FLAG_REF_ALLOC);
5532 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.scmanager));
5533 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_scmanager_0, LIBNDR_FLAG_REF_ALLOC);
5534 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.info_level));
5535 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.type));
5536 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.state));
5537 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.buf_size));
5538 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_resume_handle));
5539 if (_ptr_resume_handle) {
5540 NDR_PULL_ALLOC(ndr, r->in.resume_handle);
5541 } else {
5542 r->in.resume_handle = NULL;
5544 if (r->in.resume_handle) {
5545 _mem_save_resume_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
5546 NDR_PULL_SET_MEM_CTX(ndr, r->in.resume_handle, 0);
5547 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->in.resume_handle));
5548 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_resume_handle_0, 0);
5550 NDR_PULL_ALLOC(ndr, r->out.bytes_needed);
5551 ZERO_STRUCTP(r->out.bytes_needed);
5552 NDR_PULL_ALLOC(ndr, r->out.service_returned);
5553 ZERO_STRUCTP(r->out.service_returned);
5554 NDR_PULL_ALLOC(ndr, r->out.group_name);
5555 ZERO_STRUCTP(r->out.group_name);
5557 if (flags & NDR_OUT) {
5558 NDR_PULL_ALLOC_N(ndr, r->out.services, r->in.buf_size);
5559 NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->out.services, r->in.buf_size));
5560 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
5561 NDR_PULL_ALLOC(ndr, r->out.bytes_needed);
5563 _mem_save_bytes_needed_0 = NDR_PULL_GET_MEM_CTX(ndr);
5564 NDR_PULL_SET_MEM_CTX(ndr, r->out.bytes_needed, LIBNDR_FLAG_REF_ALLOC);
5565 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.bytes_needed));
5566 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_bytes_needed_0, LIBNDR_FLAG_REF_ALLOC);
5567 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
5568 NDR_PULL_ALLOC(ndr, r->out.service_returned);
5570 _mem_save_service_returned_0 = NDR_PULL_GET_MEM_CTX(ndr);
5571 NDR_PULL_SET_MEM_CTX(ndr, r->out.service_returned, LIBNDR_FLAG_REF_ALLOC);
5572 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.service_returned));
5573 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_service_returned_0, LIBNDR_FLAG_REF_ALLOC);
5574 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_resume_handle));
5575 if (_ptr_resume_handle) {
5576 NDR_PULL_ALLOC(ndr, r->out.resume_handle);
5577 } else {
5578 r->out.resume_handle = NULL;
5580 if (r->out.resume_handle) {
5581 _mem_save_resume_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
5582 NDR_PULL_SET_MEM_CTX(ndr, r->out.resume_handle, 0);
5583 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.resume_handle));
5584 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_resume_handle_0, 0);
5586 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
5587 NDR_PULL_ALLOC(ndr, r->out.group_name);
5589 _mem_save_group_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
5590 NDR_PULL_SET_MEM_CTX(ndr, r->out.group_name, LIBNDR_FLAG_REF_ALLOC);
5591 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_group_name));
5592 if (_ptr_group_name) {
5593 NDR_PULL_ALLOC(ndr, *r->out.group_name);
5594 } else {
5595 *r->out.group_name = NULL;
5597 if (*r->out.group_name) {
5598 _mem_save_group_name_1 = NDR_PULL_GET_MEM_CTX(ndr);
5599 NDR_PULL_SET_MEM_CTX(ndr, *r->out.group_name, 0);
5600 NDR_CHECK(ndr_pull_array_size(ndr, r->out.group_name));
5601 NDR_CHECK(ndr_pull_array_length(ndr, r->out.group_name));
5602 if (ndr_get_array_length(ndr, r->out.group_name) > ndr_get_array_size(ndr, r->out.group_name)) {
5603 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));
5605 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, r->out.group_name), sizeof(uint16_t)));
5606 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));
5607 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_group_name_1, 0);
5609 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_group_name_0, LIBNDR_FLAG_REF_ALLOC);
5610 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
5612 return NDR_ERR_SUCCESS;
5615 _PUBLIC_ void ndr_print_EnumServicesStatusExA(struct ndr_print *ndr, const char *name, int flags, const struct EnumServicesStatusExA *r)
5617 ndr_print_struct(ndr, name, "EnumServicesStatusExA");
5618 ndr->depth++;
5619 if (flags & NDR_SET_VALUES) {
5620 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
5622 if (flags & NDR_IN) {
5623 ndr_print_struct(ndr, "in", "EnumServicesStatusExA");
5624 ndr->depth++;
5625 ndr_print_ptr(ndr, "scmanager", r->in.scmanager);
5626 ndr->depth++;
5627 ndr_print_policy_handle(ndr, "scmanager", r->in.scmanager);
5628 ndr->depth--;
5629 ndr_print_uint32(ndr, "info_level", r->in.info_level);
5630 ndr_print_uint32(ndr, "type", r->in.type);
5631 ndr_print_uint32(ndr, "state", r->in.state);
5632 ndr_print_uint32(ndr, "buf_size", r->in.buf_size);
5633 ndr_print_ptr(ndr, "resume_handle", r->in.resume_handle);
5634 ndr->depth++;
5635 if (r->in.resume_handle) {
5636 ndr_print_uint32(ndr, "resume_handle", *r->in.resume_handle);
5638 ndr->depth--;
5639 ndr->depth--;
5641 if (flags & NDR_OUT) {
5642 ndr_print_struct(ndr, "out", "EnumServicesStatusExA");
5643 ndr->depth++;
5644 ndr_print_array_uint8(ndr, "services", r->out.services, r->in.buf_size);
5645 ndr_print_ptr(ndr, "bytes_needed", r->out.bytes_needed);
5646 ndr->depth++;
5647 ndr_print_uint32(ndr, "bytes_needed", *r->out.bytes_needed);
5648 ndr->depth--;
5649 ndr_print_ptr(ndr, "service_returned", r->out.service_returned);
5650 ndr->depth++;
5651 ndr_print_uint32(ndr, "service_returned", *r->out.service_returned);
5652 ndr->depth--;
5653 ndr_print_ptr(ndr, "resume_handle", r->out.resume_handle);
5654 ndr->depth++;
5655 if (r->out.resume_handle) {
5656 ndr_print_uint32(ndr, "resume_handle", *r->out.resume_handle);
5658 ndr->depth--;
5659 ndr_print_ptr(ndr, "group_name", r->out.group_name);
5660 ndr->depth++;
5661 ndr_print_ptr(ndr, "group_name", *r->out.group_name);
5662 ndr->depth++;
5663 if (*r->out.group_name) {
5664 ndr_print_string(ndr, "group_name", *r->out.group_name);
5666 ndr->depth--;
5667 ndr->depth--;
5668 ndr_print_WERROR(ndr, "result", r->out.result);
5669 ndr->depth--;
5671 ndr->depth--;
5674 static enum ndr_err_code ndr_push_EnumServicesStatusExW(struct ndr_push *ndr, int flags, const struct EnumServicesStatusExW *r)
5676 if (flags & NDR_IN) {
5677 if (r->in.scmanager == NULL) {
5678 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
5680 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.scmanager));
5681 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.info_level));
5682 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.type));
5683 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.state));
5684 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.buf_size));
5685 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.resume_handle));
5686 if (r->in.resume_handle) {
5687 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->in.resume_handle));
5690 if (flags & NDR_OUT) {
5691 NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->out.services, r->in.buf_size));
5692 if (r->out.bytes_needed == NULL) {
5693 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
5695 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.bytes_needed));
5696 if (r->out.service_returned == NULL) {
5697 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
5699 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.service_returned));
5700 NDR_CHECK(ndr_push_unique_ptr(ndr, r->out.resume_handle));
5701 if (r->out.resume_handle) {
5702 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.resume_handle));
5704 if (r->out.group_name == NULL) {
5705 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
5707 NDR_CHECK(ndr_push_unique_ptr(ndr, *r->out.group_name));
5708 if (*r->out.group_name) {
5709 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(*r->out.group_name, CH_UTF16)));
5710 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
5711 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(*r->out.group_name, CH_UTF16)));
5712 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));
5714 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
5716 return NDR_ERR_SUCCESS;
5719 static enum ndr_err_code ndr_pull_EnumServicesStatusExW(struct ndr_pull *ndr, int flags, struct EnumServicesStatusExW *r)
5721 uint32_t _ptr_resume_handle;
5722 uint32_t _ptr_group_name;
5723 TALLOC_CTX *_mem_save_scmanager_0;
5724 TALLOC_CTX *_mem_save_bytes_needed_0;
5725 TALLOC_CTX *_mem_save_service_returned_0;
5726 TALLOC_CTX *_mem_save_resume_handle_0;
5727 TALLOC_CTX *_mem_save_group_name_0;
5728 TALLOC_CTX *_mem_save_group_name_1;
5729 if (flags & NDR_IN) {
5730 ZERO_STRUCT(r->out);
5732 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
5733 NDR_PULL_ALLOC(ndr, r->in.scmanager);
5735 _mem_save_scmanager_0 = NDR_PULL_GET_MEM_CTX(ndr);
5736 NDR_PULL_SET_MEM_CTX(ndr, r->in.scmanager, LIBNDR_FLAG_REF_ALLOC);
5737 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.scmanager));
5738 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_scmanager_0, LIBNDR_FLAG_REF_ALLOC);
5739 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.info_level));
5740 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.type));
5741 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.state));
5742 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.buf_size));
5743 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_resume_handle));
5744 if (_ptr_resume_handle) {
5745 NDR_PULL_ALLOC(ndr, r->in.resume_handle);
5746 } else {
5747 r->in.resume_handle = NULL;
5749 if (r->in.resume_handle) {
5750 _mem_save_resume_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
5751 NDR_PULL_SET_MEM_CTX(ndr, r->in.resume_handle, 0);
5752 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->in.resume_handle));
5753 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_resume_handle_0, 0);
5755 NDR_PULL_ALLOC(ndr, r->out.bytes_needed);
5756 ZERO_STRUCTP(r->out.bytes_needed);
5757 NDR_PULL_ALLOC(ndr, r->out.service_returned);
5758 ZERO_STRUCTP(r->out.service_returned);
5759 NDR_PULL_ALLOC(ndr, r->out.group_name);
5760 ZERO_STRUCTP(r->out.group_name);
5762 if (flags & NDR_OUT) {
5763 NDR_PULL_ALLOC_N(ndr, r->out.services, r->in.buf_size);
5764 NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->out.services, r->in.buf_size));
5765 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
5766 NDR_PULL_ALLOC(ndr, r->out.bytes_needed);
5768 _mem_save_bytes_needed_0 = NDR_PULL_GET_MEM_CTX(ndr);
5769 NDR_PULL_SET_MEM_CTX(ndr, r->out.bytes_needed, LIBNDR_FLAG_REF_ALLOC);
5770 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.bytes_needed));
5771 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_bytes_needed_0, LIBNDR_FLAG_REF_ALLOC);
5772 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
5773 NDR_PULL_ALLOC(ndr, r->out.service_returned);
5775 _mem_save_service_returned_0 = NDR_PULL_GET_MEM_CTX(ndr);
5776 NDR_PULL_SET_MEM_CTX(ndr, r->out.service_returned, LIBNDR_FLAG_REF_ALLOC);
5777 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.service_returned));
5778 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_service_returned_0, LIBNDR_FLAG_REF_ALLOC);
5779 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_resume_handle));
5780 if (_ptr_resume_handle) {
5781 NDR_PULL_ALLOC(ndr, r->out.resume_handle);
5782 } else {
5783 r->out.resume_handle = NULL;
5785 if (r->out.resume_handle) {
5786 _mem_save_resume_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
5787 NDR_PULL_SET_MEM_CTX(ndr, r->out.resume_handle, 0);
5788 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.resume_handle));
5789 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_resume_handle_0, 0);
5791 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
5792 NDR_PULL_ALLOC(ndr, r->out.group_name);
5794 _mem_save_group_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
5795 NDR_PULL_SET_MEM_CTX(ndr, r->out.group_name, LIBNDR_FLAG_REF_ALLOC);
5796 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_group_name));
5797 if (_ptr_group_name) {
5798 NDR_PULL_ALLOC(ndr, *r->out.group_name);
5799 } else {
5800 *r->out.group_name = NULL;
5802 if (*r->out.group_name) {
5803 _mem_save_group_name_1 = NDR_PULL_GET_MEM_CTX(ndr);
5804 NDR_PULL_SET_MEM_CTX(ndr, *r->out.group_name, 0);
5805 NDR_CHECK(ndr_pull_array_size(ndr, r->out.group_name));
5806 NDR_CHECK(ndr_pull_array_length(ndr, r->out.group_name));
5807 if (ndr_get_array_length(ndr, r->out.group_name) > ndr_get_array_size(ndr, r->out.group_name)) {
5808 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));
5810 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, r->out.group_name), sizeof(uint16_t)));
5811 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));
5812 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_group_name_1, 0);
5814 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_group_name_0, LIBNDR_FLAG_REF_ALLOC);
5815 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
5817 return NDR_ERR_SUCCESS;
5820 _PUBLIC_ void ndr_print_EnumServicesStatusExW(struct ndr_print *ndr, const char *name, int flags, const struct EnumServicesStatusExW *r)
5822 ndr_print_struct(ndr, name, "EnumServicesStatusExW");
5823 ndr->depth++;
5824 if (flags & NDR_SET_VALUES) {
5825 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
5827 if (flags & NDR_IN) {
5828 ndr_print_struct(ndr, "in", "EnumServicesStatusExW");
5829 ndr->depth++;
5830 ndr_print_ptr(ndr, "scmanager", r->in.scmanager);
5831 ndr->depth++;
5832 ndr_print_policy_handle(ndr, "scmanager", r->in.scmanager);
5833 ndr->depth--;
5834 ndr_print_uint32(ndr, "info_level", r->in.info_level);
5835 ndr_print_uint32(ndr, "type", r->in.type);
5836 ndr_print_uint32(ndr, "state", r->in.state);
5837 ndr_print_uint32(ndr, "buf_size", r->in.buf_size);
5838 ndr_print_ptr(ndr, "resume_handle", r->in.resume_handle);
5839 ndr->depth++;
5840 if (r->in.resume_handle) {
5841 ndr_print_uint32(ndr, "resume_handle", *r->in.resume_handle);
5843 ndr->depth--;
5844 ndr->depth--;
5846 if (flags & NDR_OUT) {
5847 ndr_print_struct(ndr, "out", "EnumServicesStatusExW");
5848 ndr->depth++;
5849 ndr_print_array_uint8(ndr, "services", r->out.services, r->in.buf_size);
5850 ndr_print_ptr(ndr, "bytes_needed", r->out.bytes_needed);
5851 ndr->depth++;
5852 ndr_print_uint32(ndr, "bytes_needed", *r->out.bytes_needed);
5853 ndr->depth--;
5854 ndr_print_ptr(ndr, "service_returned", r->out.service_returned);
5855 ndr->depth++;
5856 ndr_print_uint32(ndr, "service_returned", *r->out.service_returned);
5857 ndr->depth--;
5858 ndr_print_ptr(ndr, "resume_handle", r->out.resume_handle);
5859 ndr->depth++;
5860 if (r->out.resume_handle) {
5861 ndr_print_uint32(ndr, "resume_handle", *r->out.resume_handle);
5863 ndr->depth--;
5864 ndr_print_ptr(ndr, "group_name", r->out.group_name);
5865 ndr->depth++;
5866 ndr_print_ptr(ndr, "group_name", *r->out.group_name);
5867 ndr->depth++;
5868 if (*r->out.group_name) {
5869 ndr_print_string(ndr, "group_name", *r->out.group_name);
5871 ndr->depth--;
5872 ndr->depth--;
5873 ndr_print_WERROR(ndr, "result", r->out.result);
5874 ndr->depth--;
5876 ndr->depth--;
5879 static enum ndr_err_code ndr_push_svcctl_SCSendTSMessage(struct ndr_push *ndr, int flags, const struct svcctl_SCSendTSMessage *r)
5881 if (flags & NDR_IN) {
5883 if (flags & NDR_OUT) {
5884 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
5886 return NDR_ERR_SUCCESS;
5889 static enum ndr_err_code ndr_pull_svcctl_SCSendTSMessage(struct ndr_pull *ndr, int flags, struct svcctl_SCSendTSMessage *r)
5891 if (flags & NDR_IN) {
5893 if (flags & NDR_OUT) {
5894 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
5896 return NDR_ERR_SUCCESS;
5899 _PUBLIC_ void ndr_print_svcctl_SCSendTSMessage(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_SCSendTSMessage *r)
5901 ndr_print_struct(ndr, name, "svcctl_SCSendTSMessage");
5902 ndr->depth++;
5903 if (flags & NDR_SET_VALUES) {
5904 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
5906 if (flags & NDR_IN) {
5907 ndr_print_struct(ndr, "in", "svcctl_SCSendTSMessage");
5908 ndr->depth++;
5909 ndr->depth--;
5911 if (flags & NDR_OUT) {
5912 ndr_print_struct(ndr, "out", "svcctl_SCSendTSMessage");
5913 ndr->depth++;
5914 ndr_print_WERROR(ndr, "result", r->out.result);
5915 ndr->depth--;
5917 ndr->depth--;
5920 static const struct ndr_interface_call svcctl_calls[] = {
5922 "svcctl_CloseServiceHandle",
5923 sizeof(struct svcctl_CloseServiceHandle),
5924 (ndr_push_flags_fn_t) ndr_push_svcctl_CloseServiceHandle,
5925 (ndr_pull_flags_fn_t) ndr_pull_svcctl_CloseServiceHandle,
5926 (ndr_print_function_t) ndr_print_svcctl_CloseServiceHandle,
5927 false,
5930 "svcctl_ControlService",
5931 sizeof(struct svcctl_ControlService),
5932 (ndr_push_flags_fn_t) ndr_push_svcctl_ControlService,
5933 (ndr_pull_flags_fn_t) ndr_pull_svcctl_ControlService,
5934 (ndr_print_function_t) ndr_print_svcctl_ControlService,
5935 false,
5938 "svcctl_DeleteService",
5939 sizeof(struct svcctl_DeleteService),
5940 (ndr_push_flags_fn_t) ndr_push_svcctl_DeleteService,
5941 (ndr_pull_flags_fn_t) ndr_pull_svcctl_DeleteService,
5942 (ndr_print_function_t) ndr_print_svcctl_DeleteService,
5943 false,
5946 "svcctl_LockServiceDatabase",
5947 sizeof(struct svcctl_LockServiceDatabase),
5948 (ndr_push_flags_fn_t) ndr_push_svcctl_LockServiceDatabase,
5949 (ndr_pull_flags_fn_t) ndr_pull_svcctl_LockServiceDatabase,
5950 (ndr_print_function_t) ndr_print_svcctl_LockServiceDatabase,
5951 false,
5954 "svcctl_QueryServiceObjectSecurity",
5955 sizeof(struct svcctl_QueryServiceObjectSecurity),
5956 (ndr_push_flags_fn_t) ndr_push_svcctl_QueryServiceObjectSecurity,
5957 (ndr_pull_flags_fn_t) ndr_pull_svcctl_QueryServiceObjectSecurity,
5958 (ndr_print_function_t) ndr_print_svcctl_QueryServiceObjectSecurity,
5959 false,
5962 "svcctl_SetServiceObjectSecurity",
5963 sizeof(struct svcctl_SetServiceObjectSecurity),
5964 (ndr_push_flags_fn_t) ndr_push_svcctl_SetServiceObjectSecurity,
5965 (ndr_pull_flags_fn_t) ndr_pull_svcctl_SetServiceObjectSecurity,
5966 (ndr_print_function_t) ndr_print_svcctl_SetServiceObjectSecurity,
5967 false,
5970 "svcctl_QueryServiceStatus",
5971 sizeof(struct svcctl_QueryServiceStatus),
5972 (ndr_push_flags_fn_t) ndr_push_svcctl_QueryServiceStatus,
5973 (ndr_pull_flags_fn_t) ndr_pull_svcctl_QueryServiceStatus,
5974 (ndr_print_function_t) ndr_print_svcctl_QueryServiceStatus,
5975 false,
5978 "svcctl_SetServiceStatus",
5979 sizeof(struct svcctl_SetServiceStatus),
5980 (ndr_push_flags_fn_t) ndr_push_svcctl_SetServiceStatus,
5981 (ndr_pull_flags_fn_t) ndr_pull_svcctl_SetServiceStatus,
5982 (ndr_print_function_t) ndr_print_svcctl_SetServiceStatus,
5983 false,
5986 "svcctl_UnlockServiceDatabase",
5987 sizeof(struct svcctl_UnlockServiceDatabase),
5988 (ndr_push_flags_fn_t) ndr_push_svcctl_UnlockServiceDatabase,
5989 (ndr_pull_flags_fn_t) ndr_pull_svcctl_UnlockServiceDatabase,
5990 (ndr_print_function_t) ndr_print_svcctl_UnlockServiceDatabase,
5991 false,
5994 "svcctl_NotifyBootConfigStatus",
5995 sizeof(struct svcctl_NotifyBootConfigStatus),
5996 (ndr_push_flags_fn_t) ndr_push_svcctl_NotifyBootConfigStatus,
5997 (ndr_pull_flags_fn_t) ndr_pull_svcctl_NotifyBootConfigStatus,
5998 (ndr_print_function_t) ndr_print_svcctl_NotifyBootConfigStatus,
5999 false,
6002 "svcctl_SCSetServiceBitsW",
6003 sizeof(struct svcctl_SCSetServiceBitsW),
6004 (ndr_push_flags_fn_t) ndr_push_svcctl_SCSetServiceBitsW,
6005 (ndr_pull_flags_fn_t) ndr_pull_svcctl_SCSetServiceBitsW,
6006 (ndr_print_function_t) ndr_print_svcctl_SCSetServiceBitsW,
6007 false,
6010 "svcctl_ChangeServiceConfigW",
6011 sizeof(struct svcctl_ChangeServiceConfigW),
6012 (ndr_push_flags_fn_t) ndr_push_svcctl_ChangeServiceConfigW,
6013 (ndr_pull_flags_fn_t) ndr_pull_svcctl_ChangeServiceConfigW,
6014 (ndr_print_function_t) ndr_print_svcctl_ChangeServiceConfigW,
6015 false,
6018 "svcctl_CreateServiceW",
6019 sizeof(struct svcctl_CreateServiceW),
6020 (ndr_push_flags_fn_t) ndr_push_svcctl_CreateServiceW,
6021 (ndr_pull_flags_fn_t) ndr_pull_svcctl_CreateServiceW,
6022 (ndr_print_function_t) ndr_print_svcctl_CreateServiceW,
6023 false,
6026 "svcctl_EnumDependentServicesW",
6027 sizeof(struct svcctl_EnumDependentServicesW),
6028 (ndr_push_flags_fn_t) ndr_push_svcctl_EnumDependentServicesW,
6029 (ndr_pull_flags_fn_t) ndr_pull_svcctl_EnumDependentServicesW,
6030 (ndr_print_function_t) ndr_print_svcctl_EnumDependentServicesW,
6031 false,
6034 "svcctl_EnumServicesStatusW",
6035 sizeof(struct svcctl_EnumServicesStatusW),
6036 (ndr_push_flags_fn_t) ndr_push_svcctl_EnumServicesStatusW,
6037 (ndr_pull_flags_fn_t) ndr_pull_svcctl_EnumServicesStatusW,
6038 (ndr_print_function_t) ndr_print_svcctl_EnumServicesStatusW,
6039 false,
6042 "svcctl_OpenSCManagerW",
6043 sizeof(struct svcctl_OpenSCManagerW),
6044 (ndr_push_flags_fn_t) ndr_push_svcctl_OpenSCManagerW,
6045 (ndr_pull_flags_fn_t) ndr_pull_svcctl_OpenSCManagerW,
6046 (ndr_print_function_t) ndr_print_svcctl_OpenSCManagerW,
6047 false,
6050 "svcctl_OpenServiceW",
6051 sizeof(struct svcctl_OpenServiceW),
6052 (ndr_push_flags_fn_t) ndr_push_svcctl_OpenServiceW,
6053 (ndr_pull_flags_fn_t) ndr_pull_svcctl_OpenServiceW,
6054 (ndr_print_function_t) ndr_print_svcctl_OpenServiceW,
6055 false,
6058 "svcctl_QueryServiceConfigW",
6059 sizeof(struct svcctl_QueryServiceConfigW),
6060 (ndr_push_flags_fn_t) ndr_push_svcctl_QueryServiceConfigW,
6061 (ndr_pull_flags_fn_t) ndr_pull_svcctl_QueryServiceConfigW,
6062 (ndr_print_function_t) ndr_print_svcctl_QueryServiceConfigW,
6063 false,
6066 "svcctl_QueryServiceLockStatusW",
6067 sizeof(struct svcctl_QueryServiceLockStatusW),
6068 (ndr_push_flags_fn_t) ndr_push_svcctl_QueryServiceLockStatusW,
6069 (ndr_pull_flags_fn_t) ndr_pull_svcctl_QueryServiceLockStatusW,
6070 (ndr_print_function_t) ndr_print_svcctl_QueryServiceLockStatusW,
6071 false,
6074 "svcctl_StartServiceW",
6075 sizeof(struct svcctl_StartServiceW),
6076 (ndr_push_flags_fn_t) ndr_push_svcctl_StartServiceW,
6077 (ndr_pull_flags_fn_t) ndr_pull_svcctl_StartServiceW,
6078 (ndr_print_function_t) ndr_print_svcctl_StartServiceW,
6079 false,
6082 "svcctl_GetServiceDisplayNameW",
6083 sizeof(struct svcctl_GetServiceDisplayNameW),
6084 (ndr_push_flags_fn_t) ndr_push_svcctl_GetServiceDisplayNameW,
6085 (ndr_pull_flags_fn_t) ndr_pull_svcctl_GetServiceDisplayNameW,
6086 (ndr_print_function_t) ndr_print_svcctl_GetServiceDisplayNameW,
6087 false,
6090 "svcctl_GetServiceKeyNameW",
6091 sizeof(struct svcctl_GetServiceKeyNameW),
6092 (ndr_push_flags_fn_t) ndr_push_svcctl_GetServiceKeyNameW,
6093 (ndr_pull_flags_fn_t) ndr_pull_svcctl_GetServiceKeyNameW,
6094 (ndr_print_function_t) ndr_print_svcctl_GetServiceKeyNameW,
6095 false,
6098 "svcctl_SCSetServiceBitsA",
6099 sizeof(struct svcctl_SCSetServiceBitsA),
6100 (ndr_push_flags_fn_t) ndr_push_svcctl_SCSetServiceBitsA,
6101 (ndr_pull_flags_fn_t) ndr_pull_svcctl_SCSetServiceBitsA,
6102 (ndr_print_function_t) ndr_print_svcctl_SCSetServiceBitsA,
6103 false,
6106 "svcctl_ChangeServiceConfigA",
6107 sizeof(struct svcctl_ChangeServiceConfigA),
6108 (ndr_push_flags_fn_t) ndr_push_svcctl_ChangeServiceConfigA,
6109 (ndr_pull_flags_fn_t) ndr_pull_svcctl_ChangeServiceConfigA,
6110 (ndr_print_function_t) ndr_print_svcctl_ChangeServiceConfigA,
6111 false,
6114 "svcctl_CreateServiceA",
6115 sizeof(struct svcctl_CreateServiceA),
6116 (ndr_push_flags_fn_t) ndr_push_svcctl_CreateServiceA,
6117 (ndr_pull_flags_fn_t) ndr_pull_svcctl_CreateServiceA,
6118 (ndr_print_function_t) ndr_print_svcctl_CreateServiceA,
6119 false,
6122 "svcctl_EnumDependentServicesA",
6123 sizeof(struct svcctl_EnumDependentServicesA),
6124 (ndr_push_flags_fn_t) ndr_push_svcctl_EnumDependentServicesA,
6125 (ndr_pull_flags_fn_t) ndr_pull_svcctl_EnumDependentServicesA,
6126 (ndr_print_function_t) ndr_print_svcctl_EnumDependentServicesA,
6127 false,
6130 "svcctl_EnumServicesStatusA",
6131 sizeof(struct svcctl_EnumServicesStatusA),
6132 (ndr_push_flags_fn_t) ndr_push_svcctl_EnumServicesStatusA,
6133 (ndr_pull_flags_fn_t) ndr_pull_svcctl_EnumServicesStatusA,
6134 (ndr_print_function_t) ndr_print_svcctl_EnumServicesStatusA,
6135 false,
6138 "svcctl_OpenSCManagerA",
6139 sizeof(struct svcctl_OpenSCManagerA),
6140 (ndr_push_flags_fn_t) ndr_push_svcctl_OpenSCManagerA,
6141 (ndr_pull_flags_fn_t) ndr_pull_svcctl_OpenSCManagerA,
6142 (ndr_print_function_t) ndr_print_svcctl_OpenSCManagerA,
6143 false,
6146 "svcctl_OpenServiceA",
6147 sizeof(struct svcctl_OpenServiceA),
6148 (ndr_push_flags_fn_t) ndr_push_svcctl_OpenServiceA,
6149 (ndr_pull_flags_fn_t) ndr_pull_svcctl_OpenServiceA,
6150 (ndr_print_function_t) ndr_print_svcctl_OpenServiceA,
6151 false,
6154 "svcctl_QueryServiceConfigA",
6155 sizeof(struct svcctl_QueryServiceConfigA),
6156 (ndr_push_flags_fn_t) ndr_push_svcctl_QueryServiceConfigA,
6157 (ndr_pull_flags_fn_t) ndr_pull_svcctl_QueryServiceConfigA,
6158 (ndr_print_function_t) ndr_print_svcctl_QueryServiceConfigA,
6159 false,
6162 "svcctl_QueryServiceLockStatusA",
6163 sizeof(struct svcctl_QueryServiceLockStatusA),
6164 (ndr_push_flags_fn_t) ndr_push_svcctl_QueryServiceLockStatusA,
6165 (ndr_pull_flags_fn_t) ndr_pull_svcctl_QueryServiceLockStatusA,
6166 (ndr_print_function_t) ndr_print_svcctl_QueryServiceLockStatusA,
6167 false,
6170 "svcctl_StartServiceA",
6171 sizeof(struct svcctl_StartServiceA),
6172 (ndr_push_flags_fn_t) ndr_push_svcctl_StartServiceA,
6173 (ndr_pull_flags_fn_t) ndr_pull_svcctl_StartServiceA,
6174 (ndr_print_function_t) ndr_print_svcctl_StartServiceA,
6175 false,
6178 "svcctl_GetServiceDisplayNameA",
6179 sizeof(struct svcctl_GetServiceDisplayNameA),
6180 (ndr_push_flags_fn_t) ndr_push_svcctl_GetServiceDisplayNameA,
6181 (ndr_pull_flags_fn_t) ndr_pull_svcctl_GetServiceDisplayNameA,
6182 (ndr_print_function_t) ndr_print_svcctl_GetServiceDisplayNameA,
6183 false,
6186 "svcctl_GetServiceKeyNameA",
6187 sizeof(struct svcctl_GetServiceKeyNameA),
6188 (ndr_push_flags_fn_t) ndr_push_svcctl_GetServiceKeyNameA,
6189 (ndr_pull_flags_fn_t) ndr_pull_svcctl_GetServiceKeyNameA,
6190 (ndr_print_function_t) ndr_print_svcctl_GetServiceKeyNameA,
6191 false,
6194 "svcctl_GetCurrentGroupeStateW",
6195 sizeof(struct svcctl_GetCurrentGroupeStateW),
6196 (ndr_push_flags_fn_t) ndr_push_svcctl_GetCurrentGroupeStateW,
6197 (ndr_pull_flags_fn_t) ndr_pull_svcctl_GetCurrentGroupeStateW,
6198 (ndr_print_function_t) ndr_print_svcctl_GetCurrentGroupeStateW,
6199 false,
6202 "svcctl_EnumServiceGroupW",
6203 sizeof(struct svcctl_EnumServiceGroupW),
6204 (ndr_push_flags_fn_t) ndr_push_svcctl_EnumServiceGroupW,
6205 (ndr_pull_flags_fn_t) ndr_pull_svcctl_EnumServiceGroupW,
6206 (ndr_print_function_t) ndr_print_svcctl_EnumServiceGroupW,
6207 false,
6210 "svcctl_ChangeServiceConfig2A",
6211 sizeof(struct svcctl_ChangeServiceConfig2A),
6212 (ndr_push_flags_fn_t) ndr_push_svcctl_ChangeServiceConfig2A,
6213 (ndr_pull_flags_fn_t) ndr_pull_svcctl_ChangeServiceConfig2A,
6214 (ndr_print_function_t) ndr_print_svcctl_ChangeServiceConfig2A,
6215 false,
6218 "svcctl_ChangeServiceConfig2W",
6219 sizeof(struct svcctl_ChangeServiceConfig2W),
6220 (ndr_push_flags_fn_t) ndr_push_svcctl_ChangeServiceConfig2W,
6221 (ndr_pull_flags_fn_t) ndr_pull_svcctl_ChangeServiceConfig2W,
6222 (ndr_print_function_t) ndr_print_svcctl_ChangeServiceConfig2W,
6223 false,
6226 "svcctl_QueryServiceConfig2A",
6227 sizeof(struct svcctl_QueryServiceConfig2A),
6228 (ndr_push_flags_fn_t) ndr_push_svcctl_QueryServiceConfig2A,
6229 (ndr_pull_flags_fn_t) ndr_pull_svcctl_QueryServiceConfig2A,
6230 (ndr_print_function_t) ndr_print_svcctl_QueryServiceConfig2A,
6231 false,
6234 "svcctl_QueryServiceConfig2W",
6235 sizeof(struct svcctl_QueryServiceConfig2W),
6236 (ndr_push_flags_fn_t) ndr_push_svcctl_QueryServiceConfig2W,
6237 (ndr_pull_flags_fn_t) ndr_pull_svcctl_QueryServiceConfig2W,
6238 (ndr_print_function_t) ndr_print_svcctl_QueryServiceConfig2W,
6239 false,
6242 "svcctl_QueryServiceStatusEx",
6243 sizeof(struct svcctl_QueryServiceStatusEx),
6244 (ndr_push_flags_fn_t) ndr_push_svcctl_QueryServiceStatusEx,
6245 (ndr_pull_flags_fn_t) ndr_pull_svcctl_QueryServiceStatusEx,
6246 (ndr_print_function_t) ndr_print_svcctl_QueryServiceStatusEx,
6247 false,
6250 "EnumServicesStatusExA",
6251 sizeof(struct EnumServicesStatusExA),
6252 (ndr_push_flags_fn_t) ndr_push_EnumServicesStatusExA,
6253 (ndr_pull_flags_fn_t) ndr_pull_EnumServicesStatusExA,
6254 (ndr_print_function_t) ndr_print_EnumServicesStatusExA,
6255 false,
6258 "EnumServicesStatusExW",
6259 sizeof(struct EnumServicesStatusExW),
6260 (ndr_push_flags_fn_t) ndr_push_EnumServicesStatusExW,
6261 (ndr_pull_flags_fn_t) ndr_pull_EnumServicesStatusExW,
6262 (ndr_print_function_t) ndr_print_EnumServicesStatusExW,
6263 false,
6266 "svcctl_SCSendTSMessage",
6267 sizeof(struct svcctl_SCSendTSMessage),
6268 (ndr_push_flags_fn_t) ndr_push_svcctl_SCSendTSMessage,
6269 (ndr_pull_flags_fn_t) ndr_pull_svcctl_SCSendTSMessage,
6270 (ndr_print_function_t) ndr_print_svcctl_SCSendTSMessage,
6271 false,
6273 { NULL, 0, NULL, NULL, NULL, false }
6276 static const char * const svcctl_endpoint_strings[] = {
6277 "ncacn_np:[\\pipe\\svcctl]",
6278 "ncalrpc:",
6281 static const struct ndr_interface_string_array svcctl_endpoints = {
6282 .count = 2,
6283 .names = svcctl_endpoint_strings
6286 static const char * const svcctl_authservice_strings[] = {
6287 "host",
6290 static const struct ndr_interface_string_array svcctl_authservices = {
6291 .count = 1,
6292 .names = svcctl_authservice_strings
6296 const struct ndr_interface_table ndr_table_svcctl = {
6297 .name = "svcctl",
6298 .syntax_id = {
6299 {0x367abb81,0x9844,0x35f1,{0xad,0x32},{0x98,0xf0,0x38,0x00,0x10,0x03}},
6300 NDR_SVCCTL_VERSION
6302 .helpstring = NDR_SVCCTL_HELPSTRING,
6303 .num_calls = 44,
6304 .calls = svcctl_calls,
6305 .endpoints = &svcctl_endpoints,
6306 .authservices = &svcctl_authservices