1 /* parser auto-generated by pidl */
4 #include "../librpc/gen_ndr/ndr_svcctl.h"
6 #include "librpc/gen_ndr/ndr_misc.h"
7 #include "librpc/gen_ndr/ndr_security.h"
8 static enum ndr_err_code
ndr_push_SERVICE_LOCK_STATUS(struct ndr_push
*ndr
, int ndr_flags
, const struct SERVICE_LOCK_STATUS
*r
)
10 if (ndr_flags
& NDR_SCALARS
) {
11 NDR_CHECK(ndr_push_align(ndr
, 5));
12 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->is_locked
));
13 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->lock_owner
));
14 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->lock_duration
));
16 if (ndr_flags
& NDR_BUFFERS
) {
18 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, ndr_charset_length(r
->lock_owner
, CH_UTF16
)));
19 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, 0));
20 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, ndr_charset_length(r
->lock_owner
, CH_UTF16
)));
21 NDR_CHECK(ndr_push_charset(ndr
, NDR_SCALARS
, r
->lock_owner
, ndr_charset_length(r
->lock_owner
, CH_UTF16
), sizeof(uint16_t), CH_UTF16
));
24 return NDR_ERR_SUCCESS
;
27 static enum ndr_err_code
ndr_pull_SERVICE_LOCK_STATUS(struct ndr_pull
*ndr
, int ndr_flags
, struct SERVICE_LOCK_STATUS
*r
)
29 uint32_t _ptr_lock_owner
;
30 TALLOC_CTX
*_mem_save_lock_owner_0
;
31 if (ndr_flags
& NDR_SCALARS
) {
32 NDR_CHECK(ndr_pull_align(ndr
, 5));
33 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->is_locked
));
34 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_lock_owner
));
35 if (_ptr_lock_owner
) {
36 NDR_PULL_ALLOC(ndr
, r
->lock_owner
);
40 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->lock_duration
));
42 if (ndr_flags
& NDR_BUFFERS
) {
44 _mem_save_lock_owner_0
= NDR_PULL_GET_MEM_CTX(ndr
);
45 NDR_PULL_SET_MEM_CTX(ndr
, r
->lock_owner
, 0);
46 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->lock_owner
));
47 NDR_CHECK(ndr_pull_array_length(ndr
, &r
->lock_owner
));
48 if (ndr_get_array_length(ndr
, &r
->lock_owner
) > ndr_get_array_size(ndr
, &r
->lock_owner
)) {
49 return ndr_pull_error(ndr
, NDR_ERR_ARRAY_SIZE
, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr
, &r
->lock_owner
), ndr_get_array_length(ndr
, &r
->lock_owner
));
51 NDR_CHECK(ndr_check_string_terminator(ndr
, ndr_get_array_length(ndr
, &r
->lock_owner
), sizeof(uint16_t)));
52 NDR_CHECK(ndr_pull_charset(ndr
, NDR_SCALARS
, &r
->lock_owner
, ndr_get_array_length(ndr
, &r
->lock_owner
), sizeof(uint16_t), CH_UTF16
));
53 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_lock_owner_0
, 0);
56 return NDR_ERR_SUCCESS
;
59 _PUBLIC_
void ndr_print_SERVICE_LOCK_STATUS(struct ndr_print
*ndr
, const char *name
, const struct SERVICE_LOCK_STATUS
*r
)
61 ndr_print_struct(ndr
, name
, "SERVICE_LOCK_STATUS");
63 ndr_print_uint32(ndr
, "is_locked", r
->is_locked
);
64 ndr_print_ptr(ndr
, "lock_owner", r
->lock_owner
);
67 ndr_print_string(ndr
, "lock_owner", r
->lock_owner
);
70 ndr_print_uint32(ndr
, "lock_duration", r
->lock_duration
);
74 static enum ndr_err_code
ndr_push_svcctl_ServiceStatus(struct ndr_push
*ndr
, int ndr_flags
, enum svcctl_ServiceStatus r
)
76 NDR_CHECK(ndr_push_enum_uint32(ndr
, NDR_SCALARS
, r
));
77 return NDR_ERR_SUCCESS
;
80 static enum ndr_err_code
ndr_pull_svcctl_ServiceStatus(struct ndr_pull
*ndr
, int ndr_flags
, enum svcctl_ServiceStatus
*r
)
83 NDR_CHECK(ndr_pull_enum_uint32(ndr
, NDR_SCALARS
, &v
));
85 return NDR_ERR_SUCCESS
;
88 _PUBLIC_
void ndr_print_svcctl_ServiceStatus(struct ndr_print
*ndr
, const char *name
, enum svcctl_ServiceStatus r
)
90 const char *val
= NULL
;
93 case SVCCTL_STATE_UNKNOWN
: val
= "SVCCTL_STATE_UNKNOWN"; break;
94 case SVCCTL_STOPPED
: val
= "SVCCTL_STOPPED"; break;
95 case SVCCTL_START_PENDING
: val
= "SVCCTL_START_PENDING"; break;
96 case SVCCTL_STOP_PENDING
: val
= "SVCCTL_STOP_PENDING"; break;
97 case SVCCTL_RUNNING
: val
= "SVCCTL_RUNNING"; break;
98 case SVCCTL_CONTINUE_PENDING
: val
= "SVCCTL_CONTINUE_PENDING"; break;
99 case SVCCTL_PAUSE_PENDING
: val
= "SVCCTL_PAUSE_PENDING"; break;
100 case SVCCTL_PAUSED
: val
= "SVCCTL_PAUSED"; break;
102 ndr_print_enum(ndr
, name
, "ENUM", val
, r
);
105 static enum ndr_err_code
ndr_push_svcctl_ControlsAccepted(struct ndr_push
*ndr
, int ndr_flags
, uint32_t r
)
107 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
));
108 return NDR_ERR_SUCCESS
;
111 static enum ndr_err_code
ndr_pull_svcctl_ControlsAccepted(struct ndr_pull
*ndr
, int ndr_flags
, uint32_t *r
)
114 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &v
));
116 return NDR_ERR_SUCCESS
;
119 _PUBLIC_
void ndr_print_svcctl_ControlsAccepted(struct ndr_print
*ndr
, const char *name
, uint32_t r
)
121 ndr_print_uint32(ndr
, name
, r
);
123 ndr_print_bitmap_flag(ndr
, sizeof(uint32_t), "SVCCTL_ACCEPT_STOP", SVCCTL_ACCEPT_STOP
, r
);
124 ndr_print_bitmap_flag(ndr
, sizeof(uint32_t), "SVCCTL_ACCEPT_PAUSE_CONTINUE", SVCCTL_ACCEPT_PAUSE_CONTINUE
, r
);
125 ndr_print_bitmap_flag(ndr
, sizeof(uint32_t), "SVCCTL_ACCEPT_SHUTDOWN", SVCCTL_ACCEPT_SHUTDOWN
, r
);
126 ndr_print_bitmap_flag(ndr
, sizeof(uint32_t), "SVCCTL_ACCEPT_PARAMCHANGE", SVCCTL_ACCEPT_PARAMCHANGE
, r
);
127 ndr_print_bitmap_flag(ndr
, sizeof(uint32_t), "SVCCTL_ACCEPT_NETBINDCHANGE", SVCCTL_ACCEPT_NETBINDCHANGE
, r
);
128 ndr_print_bitmap_flag(ndr
, sizeof(uint32_t), "SVCCTL_ACCEPT_HARDWAREPROFILECHANGE", SVCCTL_ACCEPT_HARDWAREPROFILECHANGE
, r
);
129 ndr_print_bitmap_flag(ndr
, sizeof(uint32_t), "SVCCTL_ACCEPT_POWEREVENT", SVCCTL_ACCEPT_POWEREVENT
, r
);
133 static enum ndr_err_code
ndr_push_SERVICE_STATUS(struct ndr_push
*ndr
, int ndr_flags
, const struct SERVICE_STATUS
*r
)
135 if (ndr_flags
& NDR_SCALARS
) {
136 NDR_CHECK(ndr_push_align(ndr
, 4));
137 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->type
));
138 NDR_CHECK(ndr_push_svcctl_ServiceStatus(ndr
, NDR_SCALARS
, r
->state
));
139 NDR_CHECK(ndr_push_svcctl_ControlsAccepted(ndr
, NDR_SCALARS
, r
->controls_accepted
));
140 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->win32_exit_code
));
141 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->service_exit_code
));
142 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->check_point
));
143 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->wait_hint
));
145 if (ndr_flags
& NDR_BUFFERS
) {
147 return NDR_ERR_SUCCESS
;
150 static enum ndr_err_code
ndr_pull_SERVICE_STATUS(struct ndr_pull
*ndr
, int ndr_flags
, struct SERVICE_STATUS
*r
)
152 if (ndr_flags
& NDR_SCALARS
) {
153 NDR_CHECK(ndr_pull_align(ndr
, 4));
154 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->type
));
155 NDR_CHECK(ndr_pull_svcctl_ServiceStatus(ndr
, NDR_SCALARS
, &r
->state
));
156 NDR_CHECK(ndr_pull_svcctl_ControlsAccepted(ndr
, NDR_SCALARS
, &r
->controls_accepted
));
157 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->win32_exit_code
));
158 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->service_exit_code
));
159 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->check_point
));
160 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->wait_hint
));
162 if (ndr_flags
& NDR_BUFFERS
) {
164 return NDR_ERR_SUCCESS
;
167 _PUBLIC_
void ndr_print_SERVICE_STATUS(struct ndr_print
*ndr
, const char *name
, const struct SERVICE_STATUS
*r
)
169 ndr_print_struct(ndr
, name
, "SERVICE_STATUS");
171 ndr_print_uint32(ndr
, "type", r
->type
);
172 ndr_print_svcctl_ServiceStatus(ndr
, "state", r
->state
);
173 ndr_print_svcctl_ControlsAccepted(ndr
, "controls_accepted", r
->controls_accepted
);
174 ndr_print_WERROR(ndr
, "win32_exit_code", r
->win32_exit_code
);
175 ndr_print_uint32(ndr
, "service_exit_code", r
->service_exit_code
);
176 ndr_print_uint32(ndr
, "check_point", r
->check_point
);
177 ndr_print_uint32(ndr
, "wait_hint", r
->wait_hint
);
181 _PUBLIC_
enum ndr_err_code
ndr_push_SERVICE_STATUS_PROCESS(struct ndr_push
*ndr
, int ndr_flags
, const struct SERVICE_STATUS_PROCESS
*r
)
183 if (ndr_flags
& NDR_SCALARS
) {
184 NDR_CHECK(ndr_push_align(ndr
, 4));
185 NDR_CHECK(ndr_push_SERVICE_STATUS(ndr
, NDR_SCALARS
, &r
->status
));
186 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->process_id
));
187 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->service_flags
));
189 if (ndr_flags
& NDR_BUFFERS
) {
191 return NDR_ERR_SUCCESS
;
194 _PUBLIC_
enum ndr_err_code
ndr_pull_SERVICE_STATUS_PROCESS(struct ndr_pull
*ndr
, int ndr_flags
, struct SERVICE_STATUS_PROCESS
*r
)
196 if (ndr_flags
& NDR_SCALARS
) {
197 NDR_CHECK(ndr_pull_align(ndr
, 4));
198 NDR_CHECK(ndr_pull_SERVICE_STATUS(ndr
, NDR_SCALARS
, &r
->status
));
199 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->process_id
));
200 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->service_flags
));
202 if (ndr_flags
& NDR_BUFFERS
) {
204 return NDR_ERR_SUCCESS
;
207 _PUBLIC_
void ndr_print_SERVICE_STATUS_PROCESS(struct ndr_print
*ndr
, const char *name
, const struct SERVICE_STATUS_PROCESS
*r
)
209 ndr_print_struct(ndr
, name
, "SERVICE_STATUS_PROCESS");
211 ndr_print_SERVICE_STATUS(ndr
, "status", &r
->status
);
212 ndr_print_uint32(ndr
, "process_id", r
->process_id
);
213 ndr_print_uint32(ndr
, "service_flags", r
->service_flags
);
217 _PUBLIC_
enum ndr_err_code
ndr_push_ENUM_SERVICE_STATUSW(struct ndr_push
*ndr
, int ndr_flags
, const struct ENUM_SERVICE_STATUSW
*r
)
219 if (ndr_flags
& NDR_SCALARS
) {
220 NDR_CHECK(ndr_push_align(ndr
, 5));
222 uint32_t _flags_save_string
= ndr
->flags
;
223 ndr_set_flags(&ndr
->flags
, LIBNDR_FLAG_STR_NULLTERM
);
224 NDR_CHECK(ndr_push_relative_ptr1(ndr
, r
->service_name
));
225 ndr
->flags
= _flags_save_string
;
228 uint32_t _flags_save_string
= ndr
->flags
;
229 ndr_set_flags(&ndr
->flags
, LIBNDR_FLAG_STR_NULLTERM
);
230 NDR_CHECK(ndr_push_relative_ptr1(ndr
, r
->display_name
));
231 ndr
->flags
= _flags_save_string
;
233 NDR_CHECK(ndr_push_SERVICE_STATUS(ndr
, NDR_SCALARS
, &r
->status
));
235 if (ndr_flags
& NDR_BUFFERS
) {
237 uint32_t _flags_save_string
= ndr
->flags
;
238 ndr_set_flags(&ndr
->flags
, LIBNDR_FLAG_STR_NULLTERM
);
239 if (r
->service_name
) {
240 NDR_CHECK(ndr_push_relative_ptr2(ndr
, r
->service_name
));
241 NDR_CHECK(ndr_push_string(ndr
, NDR_SCALARS
, r
->service_name
));
243 ndr
->flags
= _flags_save_string
;
246 uint32_t _flags_save_string
= ndr
->flags
;
247 ndr_set_flags(&ndr
->flags
, LIBNDR_FLAG_STR_NULLTERM
);
248 if (r
->display_name
) {
249 NDR_CHECK(ndr_push_relative_ptr2(ndr
, r
->display_name
));
250 NDR_CHECK(ndr_push_string(ndr
, NDR_SCALARS
, r
->display_name
));
252 ndr
->flags
= _flags_save_string
;
255 return NDR_ERR_SUCCESS
;
258 _PUBLIC_
enum ndr_err_code
ndr_pull_ENUM_SERVICE_STATUSW(struct ndr_pull
*ndr
, int ndr_flags
, struct ENUM_SERVICE_STATUSW
*r
)
260 uint32_t _ptr_service_name
;
261 TALLOC_CTX
*_mem_save_service_name_0
;
262 uint32_t _ptr_display_name
;
263 TALLOC_CTX
*_mem_save_display_name_0
;
264 if (ndr_flags
& NDR_SCALARS
) {
265 NDR_CHECK(ndr_pull_align(ndr
, 5));
267 uint32_t _flags_save_string
= ndr
->flags
;
268 ndr_set_flags(&ndr
->flags
, LIBNDR_FLAG_STR_NULLTERM
);
269 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_service_name
));
270 if (_ptr_service_name
) {
271 NDR_PULL_ALLOC(ndr
, r
->service_name
);
272 NDR_CHECK(ndr_pull_relative_ptr1(ndr
, r
->service_name
, _ptr_service_name
));
274 r
->service_name
= NULL
;
276 ndr
->flags
= _flags_save_string
;
279 uint32_t _flags_save_string
= ndr
->flags
;
280 ndr_set_flags(&ndr
->flags
, LIBNDR_FLAG_STR_NULLTERM
);
281 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_display_name
));
282 if (_ptr_display_name
) {
283 NDR_PULL_ALLOC(ndr
, r
->display_name
);
284 NDR_CHECK(ndr_pull_relative_ptr1(ndr
, r
->display_name
, _ptr_display_name
));
286 r
->display_name
= NULL
;
288 ndr
->flags
= _flags_save_string
;
290 NDR_CHECK(ndr_pull_SERVICE_STATUS(ndr
, NDR_SCALARS
, &r
->status
));
292 if (ndr_flags
& NDR_BUFFERS
) {
294 uint32_t _flags_save_string
= ndr
->flags
;
295 ndr_set_flags(&ndr
->flags
, LIBNDR_FLAG_STR_NULLTERM
);
296 if (r
->service_name
) {
297 uint32_t _relative_save_offset
;
298 _relative_save_offset
= ndr
->offset
;
299 NDR_CHECK(ndr_pull_relative_ptr2(ndr
, r
->service_name
));
300 _mem_save_service_name_0
= NDR_PULL_GET_MEM_CTX(ndr
);
301 NDR_PULL_SET_MEM_CTX(ndr
, r
->service_name
, 0);
302 NDR_CHECK(ndr_pull_string(ndr
, NDR_SCALARS
, &r
->service_name
));
303 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_service_name_0
, 0);
304 ndr
->offset
= _relative_save_offset
;
306 ndr
->flags
= _flags_save_string
;
309 uint32_t _flags_save_string
= ndr
->flags
;
310 ndr_set_flags(&ndr
->flags
, LIBNDR_FLAG_STR_NULLTERM
);
311 if (r
->display_name
) {
312 uint32_t _relative_save_offset
;
313 _relative_save_offset
= ndr
->offset
;
314 NDR_CHECK(ndr_pull_relative_ptr2(ndr
, r
->display_name
));
315 _mem_save_display_name_0
= NDR_PULL_GET_MEM_CTX(ndr
);
316 NDR_PULL_SET_MEM_CTX(ndr
, r
->display_name
, 0);
317 NDR_CHECK(ndr_pull_string(ndr
, NDR_SCALARS
, &r
->display_name
));
318 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_display_name_0
, 0);
319 ndr
->offset
= _relative_save_offset
;
321 ndr
->flags
= _flags_save_string
;
324 return NDR_ERR_SUCCESS
;
327 _PUBLIC_
void ndr_print_ENUM_SERVICE_STATUSW(struct ndr_print
*ndr
, const char *name
, const struct ENUM_SERVICE_STATUSW
*r
)
329 ndr_print_struct(ndr
, name
, "ENUM_SERVICE_STATUSW");
331 ndr_print_ptr(ndr
, "service_name", r
->service_name
);
333 if (r
->service_name
) {
334 ndr_print_string(ndr
, "service_name", r
->service_name
);
337 ndr_print_ptr(ndr
, "display_name", r
->display_name
);
339 if (r
->display_name
) {
340 ndr_print_string(ndr
, "display_name", r
->display_name
);
343 ndr_print_SERVICE_STATUS(ndr
, "status", &r
->status
);
347 _PUBLIC_
size_t ndr_size_ENUM_SERVICE_STATUSW(const struct ENUM_SERVICE_STATUSW
*r
, struct smb_iconv_convenience
*ic
, int flags
)
349 return ndr_size_struct(r
, flags
, (ndr_push_flags_fn_t
)ndr_push_ENUM_SERVICE_STATUSW
, ic
);
352 _PUBLIC_
enum ndr_err_code
ndr_push_ENUM_SERVICE_STATUSA(struct ndr_push
*ndr
, int ndr_flags
, const struct ENUM_SERVICE_STATUSA
*r
)
354 if (ndr_flags
& NDR_SCALARS
) {
355 NDR_CHECK(ndr_push_align(ndr
, 5));
357 uint32_t _flags_save_string
= ndr
->flags
;
358 ndr_set_flags(&ndr
->flags
, LIBNDR_FLAG_STR_ASCII
|LIBNDR_FLAG_STR_NULLTERM
);
359 NDR_CHECK(ndr_push_relative_ptr1(ndr
, r
->service_name
));
360 ndr
->flags
= _flags_save_string
;
363 uint32_t _flags_save_string
= ndr
->flags
;
364 ndr_set_flags(&ndr
->flags
, LIBNDR_FLAG_STR_ASCII
|LIBNDR_FLAG_STR_NULLTERM
);
365 NDR_CHECK(ndr_push_relative_ptr1(ndr
, r
->display_name
));
366 ndr
->flags
= _flags_save_string
;
368 NDR_CHECK(ndr_push_SERVICE_STATUS(ndr
, NDR_SCALARS
, &r
->status
));
370 if (ndr_flags
& NDR_BUFFERS
) {
372 uint32_t _flags_save_string
= ndr
->flags
;
373 ndr_set_flags(&ndr
->flags
, LIBNDR_FLAG_STR_ASCII
|LIBNDR_FLAG_STR_NULLTERM
);
374 if (r
->service_name
) {
375 NDR_CHECK(ndr_push_relative_ptr2(ndr
, r
->service_name
));
376 NDR_CHECK(ndr_push_string(ndr
, NDR_SCALARS
, r
->service_name
));
378 ndr
->flags
= _flags_save_string
;
381 uint32_t _flags_save_string
= ndr
->flags
;
382 ndr_set_flags(&ndr
->flags
, LIBNDR_FLAG_STR_ASCII
|LIBNDR_FLAG_STR_NULLTERM
);
383 if (r
->display_name
) {
384 NDR_CHECK(ndr_push_relative_ptr2(ndr
, r
->display_name
));
385 NDR_CHECK(ndr_push_string(ndr
, NDR_SCALARS
, r
->display_name
));
387 ndr
->flags
= _flags_save_string
;
390 return NDR_ERR_SUCCESS
;
393 _PUBLIC_
enum ndr_err_code
ndr_pull_ENUM_SERVICE_STATUSA(struct ndr_pull
*ndr
, int ndr_flags
, struct ENUM_SERVICE_STATUSA
*r
)
395 uint32_t _ptr_service_name
;
396 TALLOC_CTX
*_mem_save_service_name_0
;
397 uint32_t _ptr_display_name
;
398 TALLOC_CTX
*_mem_save_display_name_0
;
399 if (ndr_flags
& NDR_SCALARS
) {
400 NDR_CHECK(ndr_pull_align(ndr
, 5));
402 uint32_t _flags_save_string
= ndr
->flags
;
403 ndr_set_flags(&ndr
->flags
, LIBNDR_FLAG_STR_ASCII
|LIBNDR_FLAG_STR_NULLTERM
);
404 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_service_name
));
405 if (_ptr_service_name
) {
406 NDR_PULL_ALLOC(ndr
, r
->service_name
);
407 NDR_CHECK(ndr_pull_relative_ptr1(ndr
, r
->service_name
, _ptr_service_name
));
409 r
->service_name
= NULL
;
411 ndr
->flags
= _flags_save_string
;
414 uint32_t _flags_save_string
= ndr
->flags
;
415 ndr_set_flags(&ndr
->flags
, LIBNDR_FLAG_STR_ASCII
|LIBNDR_FLAG_STR_NULLTERM
);
416 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_display_name
));
417 if (_ptr_display_name
) {
418 NDR_PULL_ALLOC(ndr
, r
->display_name
);
419 NDR_CHECK(ndr_pull_relative_ptr1(ndr
, r
->display_name
, _ptr_display_name
));
421 r
->display_name
= NULL
;
423 ndr
->flags
= _flags_save_string
;
425 NDR_CHECK(ndr_pull_SERVICE_STATUS(ndr
, NDR_SCALARS
, &r
->status
));
427 if (ndr_flags
& NDR_BUFFERS
) {
429 uint32_t _flags_save_string
= ndr
->flags
;
430 ndr_set_flags(&ndr
->flags
, LIBNDR_FLAG_STR_ASCII
|LIBNDR_FLAG_STR_NULLTERM
);
431 if (r
->service_name
) {
432 uint32_t _relative_save_offset
;
433 _relative_save_offset
= ndr
->offset
;
434 NDR_CHECK(ndr_pull_relative_ptr2(ndr
, r
->service_name
));
435 _mem_save_service_name_0
= NDR_PULL_GET_MEM_CTX(ndr
);
436 NDR_PULL_SET_MEM_CTX(ndr
, r
->service_name
, 0);
437 NDR_CHECK(ndr_pull_string(ndr
, NDR_SCALARS
, &r
->service_name
));
438 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_service_name_0
, 0);
439 ndr
->offset
= _relative_save_offset
;
441 ndr
->flags
= _flags_save_string
;
444 uint32_t _flags_save_string
= ndr
->flags
;
445 ndr_set_flags(&ndr
->flags
, LIBNDR_FLAG_STR_ASCII
|LIBNDR_FLAG_STR_NULLTERM
);
446 if (r
->display_name
) {
447 uint32_t _relative_save_offset
;
448 _relative_save_offset
= ndr
->offset
;
449 NDR_CHECK(ndr_pull_relative_ptr2(ndr
, r
->display_name
));
450 _mem_save_display_name_0
= NDR_PULL_GET_MEM_CTX(ndr
);
451 NDR_PULL_SET_MEM_CTX(ndr
, r
->display_name
, 0);
452 NDR_CHECK(ndr_pull_string(ndr
, NDR_SCALARS
, &r
->display_name
));
453 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_display_name_0
, 0);
454 ndr
->offset
= _relative_save_offset
;
456 ndr
->flags
= _flags_save_string
;
459 return NDR_ERR_SUCCESS
;
462 _PUBLIC_
void ndr_print_ENUM_SERVICE_STATUSA(struct ndr_print
*ndr
, const char *name
, const struct ENUM_SERVICE_STATUSA
*r
)
464 ndr_print_struct(ndr
, name
, "ENUM_SERVICE_STATUSA");
466 ndr_print_ptr(ndr
, "service_name", r
->service_name
);
468 if (r
->service_name
) {
469 ndr_print_string(ndr
, "service_name", r
->service_name
);
472 ndr_print_ptr(ndr
, "display_name", r
->display_name
);
474 if (r
->display_name
) {
475 ndr_print_string(ndr
, "display_name", r
->display_name
);
478 ndr_print_SERVICE_STATUS(ndr
, "status", &r
->status
);
482 _PUBLIC_
size_t ndr_size_ENUM_SERVICE_STATUSA(const struct ENUM_SERVICE_STATUSA
*r
, struct smb_iconv_convenience
*ic
, int flags
)
484 return ndr_size_struct(r
, flags
, (ndr_push_flags_fn_t
)ndr_push_ENUM_SERVICE_STATUSA
, ic
);
487 _PUBLIC_
enum ndr_err_code
ndr_push_svcctl_ServerType(struct ndr_push
*ndr
, int ndr_flags
, uint32_t r
)
489 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
));
490 return NDR_ERR_SUCCESS
;
493 _PUBLIC_
enum ndr_err_code
ndr_pull_svcctl_ServerType(struct ndr_pull
*ndr
, int ndr_flags
, uint32_t *r
)
496 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &v
));
498 return NDR_ERR_SUCCESS
;
501 _PUBLIC_
void ndr_print_svcctl_ServerType(struct ndr_print
*ndr
, const char *name
, uint32_t r
)
503 ndr_print_uint32(ndr
, name
, r
);
505 ndr_print_bitmap_flag(ndr
, sizeof(uint32_t), "SV_TYPE_WORKSTATION", SV_TYPE_WORKSTATION
, r
);
506 ndr_print_bitmap_flag(ndr
, sizeof(uint32_t), "SV_TYPE_SERVER", SV_TYPE_SERVER
, r
);
507 ndr_print_bitmap_flag(ndr
, sizeof(uint32_t), "SV_TYPE_SQLSERVER", SV_TYPE_SQLSERVER
, r
);
508 ndr_print_bitmap_flag(ndr
, sizeof(uint32_t), "SV_TYPE_DOMAIN_CTRL", SV_TYPE_DOMAIN_CTRL
, r
);
509 ndr_print_bitmap_flag(ndr
, sizeof(uint32_t), "SV_TYPE_DOMAIN_BAKCTRL", SV_TYPE_DOMAIN_BAKCTRL
, r
);
510 ndr_print_bitmap_flag(ndr
, sizeof(uint32_t), "SV_TYPE_TIME_SOURCE", SV_TYPE_TIME_SOURCE
, r
);
511 ndr_print_bitmap_flag(ndr
, sizeof(uint32_t), "SV_TYPE_AFP", SV_TYPE_AFP
, r
);
512 ndr_print_bitmap_flag(ndr
, sizeof(uint32_t), "SV_TYPE_NOVELL", SV_TYPE_NOVELL
, r
);
513 ndr_print_bitmap_flag(ndr
, sizeof(uint32_t), "SV_TYPE_DOMAIN_MEMBER", SV_TYPE_DOMAIN_MEMBER
, r
);
514 ndr_print_bitmap_flag(ndr
, sizeof(uint32_t), "SV_TYPE_PRINTQ_SERVER", SV_TYPE_PRINTQ_SERVER
, r
);
515 ndr_print_bitmap_flag(ndr
, sizeof(uint32_t), "SV_TYPE_DIALIN_SERVER", SV_TYPE_DIALIN_SERVER
, r
);
516 ndr_print_bitmap_flag(ndr
, sizeof(uint32_t), "SV_TYPE_SERVER_UNIX", SV_TYPE_SERVER_UNIX
, r
);
517 ndr_print_bitmap_flag(ndr
, sizeof(uint32_t), "SV_TYPE_NT", SV_TYPE_NT
, r
);
518 ndr_print_bitmap_flag(ndr
, sizeof(uint32_t), "SV_TYPE_WFW", SV_TYPE_WFW
, r
);
519 ndr_print_bitmap_flag(ndr
, sizeof(uint32_t), "SV_TYPE_SERVER_MFPN", SV_TYPE_SERVER_MFPN
, r
);
520 ndr_print_bitmap_flag(ndr
, sizeof(uint32_t), "SV_TYPE_SERVER_NT", SV_TYPE_SERVER_NT
, r
);
521 ndr_print_bitmap_flag(ndr
, sizeof(uint32_t), "SV_TYPE_POTENTIAL_BROWSER", SV_TYPE_POTENTIAL_BROWSER
, r
);
522 ndr_print_bitmap_flag(ndr
, sizeof(uint32_t), "SV_TYPE_BACKUP_BROWSER", SV_TYPE_BACKUP_BROWSER
, r
);
523 ndr_print_bitmap_flag(ndr
, sizeof(uint32_t), "SV_TYPE_MASTER_BROWSER", SV_TYPE_MASTER_BROWSER
, r
);
524 ndr_print_bitmap_flag(ndr
, sizeof(uint32_t), "SV_TYPE_DOMAIN_MASTER", SV_TYPE_DOMAIN_MASTER
, r
);
525 ndr_print_bitmap_flag(ndr
, sizeof(uint32_t), "SV_TYPE_SERVER_OSF", SV_TYPE_SERVER_OSF
, r
);
526 ndr_print_bitmap_flag(ndr
, sizeof(uint32_t), "SV_TYPE_SERVER_VMS", SV_TYPE_SERVER_VMS
, r
);
527 ndr_print_bitmap_flag(ndr
, sizeof(uint32_t), "SV_TYPE_WIN95_PLUS", SV_TYPE_WIN95_PLUS
, r
);
528 ndr_print_bitmap_flag(ndr
, sizeof(uint32_t), "SV_TYPE_DFS_SERVER", SV_TYPE_DFS_SERVER
, r
);
529 ndr_print_bitmap_flag(ndr
, sizeof(uint32_t), "SV_TYPE_ALTERNATE_XPORT", SV_TYPE_ALTERNATE_XPORT
, r
);
530 ndr_print_bitmap_flag(ndr
, sizeof(uint32_t), "SV_TYPE_LOCAL_LIST_ONLY", SV_TYPE_LOCAL_LIST_ONLY
, r
);
531 ndr_print_bitmap_flag(ndr
, sizeof(uint32_t), "SV_TYPE_DOMAIN_ENUM", SV_TYPE_DOMAIN_ENUM
, r
);
535 static enum ndr_err_code
ndr_push_SERVICE_CONTROL(struct ndr_push
*ndr
, int ndr_flags
, enum SERVICE_CONTROL r
)
537 NDR_CHECK(ndr_push_enum_uint32(ndr
, NDR_SCALARS
, r
));
538 return NDR_ERR_SUCCESS
;
541 static enum ndr_err_code
ndr_pull_SERVICE_CONTROL(struct ndr_pull
*ndr
, int ndr_flags
, enum SERVICE_CONTROL
*r
)
544 NDR_CHECK(ndr_pull_enum_uint32(ndr
, NDR_SCALARS
, &v
));
546 return NDR_ERR_SUCCESS
;
549 _PUBLIC_
void ndr_print_SERVICE_CONTROL(struct ndr_print
*ndr
, const char *name
, enum SERVICE_CONTROL r
)
551 const char *val
= NULL
;
554 case SVCCTL_CONTROL_STOP
: val
= "SVCCTL_CONTROL_STOP"; break;
555 case SVCCTL_CONTROL_PAUSE
: val
= "SVCCTL_CONTROL_PAUSE"; break;
556 case SVCCTL_CONTROL_CONTINUE
: val
= "SVCCTL_CONTROL_CONTINUE"; break;
557 case SVCCTL_CONTROL_INTERROGATE
: val
= "SVCCTL_CONTROL_INTERROGATE"; break;
558 case SVCCTL_CONTROL_SHUTDOWN
: val
= "SVCCTL_CONTROL_SHUTDOWN"; break;
560 ndr_print_enum(ndr
, name
, "ENUM", val
, r
);
563 static enum ndr_err_code
ndr_push_svcctl_ErrorControl(struct ndr_push
*ndr
, int ndr_flags
, enum svcctl_ErrorControl r
)
565 NDR_CHECK(ndr_push_enum_uint32(ndr
, NDR_SCALARS
, r
));
566 return NDR_ERR_SUCCESS
;
569 static enum ndr_err_code
ndr_pull_svcctl_ErrorControl(struct ndr_pull
*ndr
, int ndr_flags
, enum svcctl_ErrorControl
*r
)
572 NDR_CHECK(ndr_pull_enum_uint32(ndr
, NDR_SCALARS
, &v
));
574 return NDR_ERR_SUCCESS
;
577 _PUBLIC_
void ndr_print_svcctl_ErrorControl(struct ndr_print
*ndr
, const char *name
, enum svcctl_ErrorControl r
)
579 const char *val
= NULL
;
582 case SVCCTL_SVC_ERROR_IGNORE
: val
= "SVCCTL_SVC_ERROR_IGNORE"; break;
583 case SVCCTL_SVC_ERROR_NORMAL
: val
= "SVCCTL_SVC_ERROR_NORMAL"; break;
584 case SVCCTL_SVC_ERROR_CRITICAL
: val
= "SVCCTL_SVC_ERROR_CRITICAL"; break;
585 case SVCCTL_SVC_ERROR_SEVERE
: val
= "SVCCTL_SVC_ERROR_SEVERE"; break;
587 ndr_print_enum(ndr
, name
, "ENUM", val
, r
);
590 static enum ndr_err_code
ndr_push_svcctl_StartType(struct ndr_push
*ndr
, int ndr_flags
, enum svcctl_StartType r
)
592 NDR_CHECK(ndr_push_enum_uint32(ndr
, NDR_SCALARS
, r
));
593 return NDR_ERR_SUCCESS
;
596 static enum ndr_err_code
ndr_pull_svcctl_StartType(struct ndr_pull
*ndr
, int ndr_flags
, enum svcctl_StartType
*r
)
599 NDR_CHECK(ndr_pull_enum_uint32(ndr
, NDR_SCALARS
, &v
));
601 return NDR_ERR_SUCCESS
;
604 _PUBLIC_
void ndr_print_svcctl_StartType(struct ndr_print
*ndr
, const char *name
, enum svcctl_StartType r
)
606 const char *val
= NULL
;
609 case SVCCTL_BOOT_START
: val
= "SVCCTL_BOOT_START"; break;
610 case SVCCTL_SYSTEM_START
: val
= "SVCCTL_SYSTEM_START"; break;
611 case SVCCTL_AUTO_START
: val
= "SVCCTL_AUTO_START"; break;
612 case SVCCTL_DEMAND_START
: val
= "SVCCTL_DEMAND_START"; break;
613 case SVCCTL_DISABLED
: val
= "SVCCTL_DISABLED"; break;
615 ndr_print_enum(ndr
, name
, "ENUM", val
, r
);
618 static enum ndr_err_code
ndr_push_svcctl_ServiceState(struct ndr_push
*ndr
, int ndr_flags
, enum svcctl_ServiceState r
)
620 NDR_CHECK(ndr_push_enum_uint32(ndr
, NDR_SCALARS
, r
));
621 return NDR_ERR_SUCCESS
;
624 static enum ndr_err_code
ndr_pull_svcctl_ServiceState(struct ndr_pull
*ndr
, int ndr_flags
, enum svcctl_ServiceState
*r
)
627 NDR_CHECK(ndr_pull_enum_uint32(ndr
, NDR_SCALARS
, &v
));
629 return NDR_ERR_SUCCESS
;
632 _PUBLIC_
void ndr_print_svcctl_ServiceState(struct ndr_print
*ndr
, const char *name
, enum svcctl_ServiceState r
)
634 const char *val
= NULL
;
637 case SERVICE_STATE_ACTIVE
: val
= "SERVICE_STATE_ACTIVE"; break;
638 case SERVICE_STATE_INACTIVE
: val
= "SERVICE_STATE_INACTIVE"; break;
639 case SERVICE_STATE_ALL
: val
= "SERVICE_STATE_ALL"; break;
641 ndr_print_enum(ndr
, name
, "ENUM", val
, r
);
644 static enum ndr_err_code
ndr_push_svcctl_MgrAccessMask(struct ndr_push
*ndr
, int ndr_flags
, uint32_t r
)
646 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
));
647 return NDR_ERR_SUCCESS
;
650 static enum ndr_err_code
ndr_pull_svcctl_MgrAccessMask(struct ndr_pull
*ndr
, int ndr_flags
, uint32_t *r
)
653 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &v
));
655 return NDR_ERR_SUCCESS
;
658 _PUBLIC_
void ndr_print_svcctl_MgrAccessMask(struct ndr_print
*ndr
, const char *name
, uint32_t r
)
660 ndr_print_uint32(ndr
, name
, r
);
662 ndr_print_bitmap_flag(ndr
, sizeof(uint32_t), "SC_RIGHT_MGR_CONNECT", SC_RIGHT_MGR_CONNECT
, r
);
663 ndr_print_bitmap_flag(ndr
, sizeof(uint32_t), "SC_RIGHT_MGR_CREATE_SERVICE", SC_RIGHT_MGR_CREATE_SERVICE
, r
);
664 ndr_print_bitmap_flag(ndr
, sizeof(uint32_t), "SC_RIGHT_MGR_ENUMERATE_SERVICE", SC_RIGHT_MGR_ENUMERATE_SERVICE
, r
);
665 ndr_print_bitmap_flag(ndr
, sizeof(uint32_t), "SC_RIGHT_MGR_LOCK", SC_RIGHT_MGR_LOCK
, r
);
666 ndr_print_bitmap_flag(ndr
, sizeof(uint32_t), "SC_RIGHT_MGR_QUERY_LOCK_STATUS", SC_RIGHT_MGR_QUERY_LOCK_STATUS
, r
);
667 ndr_print_bitmap_flag(ndr
, sizeof(uint32_t), "SC_RIGHT_MGR_MODIFY_BOOT_CONFIG", SC_RIGHT_MGR_MODIFY_BOOT_CONFIG
, r
);
671 static enum ndr_err_code
ndr_push_svcctl_ServiceAccessMask(struct ndr_push
*ndr
, int ndr_flags
, uint32_t r
)
673 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
));
674 return NDR_ERR_SUCCESS
;
677 static enum ndr_err_code
ndr_pull_svcctl_ServiceAccessMask(struct ndr_pull
*ndr
, int ndr_flags
, uint32_t *r
)
680 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &v
));
682 return NDR_ERR_SUCCESS
;
685 _PUBLIC_
void ndr_print_svcctl_ServiceAccessMask(struct ndr_print
*ndr
, const char *name
, uint32_t r
)
687 ndr_print_uint32(ndr
, name
, r
);
689 ndr_print_bitmap_flag(ndr
, sizeof(uint32_t), "SC_RIGHT_SVC_QUERY_CONFIG", SC_RIGHT_SVC_QUERY_CONFIG
, r
);
690 ndr_print_bitmap_flag(ndr
, sizeof(uint32_t), "SC_RIGHT_SVC_CHANGE_CONFIG", SC_RIGHT_SVC_CHANGE_CONFIG
, r
);
691 ndr_print_bitmap_flag(ndr
, sizeof(uint32_t), "SC_RIGHT_SVC_QUERY_STATUS", SC_RIGHT_SVC_QUERY_STATUS
, r
);
692 ndr_print_bitmap_flag(ndr
, sizeof(uint32_t), "SC_RIGHT_SVC_ENUMERATE_DEPENDENTS", SC_RIGHT_SVC_ENUMERATE_DEPENDENTS
, r
);
693 ndr_print_bitmap_flag(ndr
, sizeof(uint32_t), "SC_RIGHT_SVC_START", SC_RIGHT_SVC_START
, r
);
694 ndr_print_bitmap_flag(ndr
, sizeof(uint32_t), "SC_RIGHT_SVC_STOP", SC_RIGHT_SVC_STOP
, r
);
695 ndr_print_bitmap_flag(ndr
, sizeof(uint32_t), "SC_RIGHT_SVC_PAUSE_CONTINUE", SC_RIGHT_SVC_PAUSE_CONTINUE
, r
);
696 ndr_print_bitmap_flag(ndr
, sizeof(uint32_t), "SC_RIGHT_SVC_INTERROGATE", SC_RIGHT_SVC_INTERROGATE
, r
);
697 ndr_print_bitmap_flag(ndr
, sizeof(uint32_t), "SC_RIGHT_SVC_USER_DEFINED_CONTROL", SC_RIGHT_SVC_USER_DEFINED_CONTROL
, r
);
701 _PUBLIC_
enum ndr_err_code
ndr_push_QUERY_SERVICE_CONFIG(struct ndr_push
*ndr
, int ndr_flags
, const struct QUERY_SERVICE_CONFIG
*r
)
703 if (ndr_flags
& NDR_SCALARS
) {
704 NDR_CHECK(ndr_push_align(ndr
, 5));
705 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->service_type
));
706 NDR_CHECK(ndr_push_svcctl_StartType(ndr
, NDR_SCALARS
, r
->start_type
));
707 NDR_CHECK(ndr_push_svcctl_ErrorControl(ndr
, NDR_SCALARS
, r
->error_control
));
708 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->executablepath
));
709 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->loadordergroup
));
710 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->tag_id
));
711 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->dependencies
));
712 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->startname
));
713 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->displayname
));
715 if (ndr_flags
& NDR_BUFFERS
) {
716 if (r
->executablepath
) {
717 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, ndr_charset_length(r
->executablepath
, CH_UTF16
)));
718 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, 0));
719 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, ndr_charset_length(r
->executablepath
, CH_UTF16
)));
720 NDR_CHECK(ndr_push_charset(ndr
, NDR_SCALARS
, r
->executablepath
, ndr_charset_length(r
->executablepath
, CH_UTF16
), sizeof(uint16_t), CH_UTF16
));
722 if (r
->loadordergroup
) {
723 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, ndr_charset_length(r
->loadordergroup
, CH_UTF16
)));
724 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, 0));
725 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, ndr_charset_length(r
->loadordergroup
, CH_UTF16
)));
726 NDR_CHECK(ndr_push_charset(ndr
, NDR_SCALARS
, r
->loadordergroup
, ndr_charset_length(r
->loadordergroup
, CH_UTF16
), sizeof(uint16_t), CH_UTF16
));
728 if (r
->dependencies
) {
729 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, ndr_charset_length(r
->dependencies
, CH_UTF16
)));
730 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, 0));
731 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, ndr_charset_length(r
->dependencies
, CH_UTF16
)));
732 NDR_CHECK(ndr_push_charset(ndr
, NDR_SCALARS
, r
->dependencies
, ndr_charset_length(r
->dependencies
, CH_UTF16
), sizeof(uint16_t), CH_UTF16
));
735 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, ndr_charset_length(r
->startname
, CH_UTF16
)));
736 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, 0));
737 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, ndr_charset_length(r
->startname
, CH_UTF16
)));
738 NDR_CHECK(ndr_push_charset(ndr
, NDR_SCALARS
, r
->startname
, ndr_charset_length(r
->startname
, CH_UTF16
), sizeof(uint16_t), CH_UTF16
));
740 if (r
->displayname
) {
741 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, ndr_charset_length(r
->displayname
, CH_UTF16
)));
742 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, 0));
743 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, ndr_charset_length(r
->displayname
, CH_UTF16
)));
744 NDR_CHECK(ndr_push_charset(ndr
, NDR_SCALARS
, r
->displayname
, ndr_charset_length(r
->displayname
, CH_UTF16
), sizeof(uint16_t), CH_UTF16
));
747 return NDR_ERR_SUCCESS
;
750 _PUBLIC_
enum ndr_err_code
ndr_pull_QUERY_SERVICE_CONFIG(struct ndr_pull
*ndr
, int ndr_flags
, struct QUERY_SERVICE_CONFIG
*r
)
752 uint32_t _ptr_executablepath
;
753 TALLOC_CTX
*_mem_save_executablepath_0
;
754 uint32_t _ptr_loadordergroup
;
755 TALLOC_CTX
*_mem_save_loadordergroup_0
;
756 uint32_t _ptr_dependencies
;
757 TALLOC_CTX
*_mem_save_dependencies_0
;
758 uint32_t _ptr_startname
;
759 TALLOC_CTX
*_mem_save_startname_0
;
760 uint32_t _ptr_displayname
;
761 TALLOC_CTX
*_mem_save_displayname_0
;
762 if (ndr_flags
& NDR_SCALARS
) {
763 NDR_CHECK(ndr_pull_align(ndr
, 5));
764 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->service_type
));
765 NDR_CHECK(ndr_pull_svcctl_StartType(ndr
, NDR_SCALARS
, &r
->start_type
));
766 NDR_CHECK(ndr_pull_svcctl_ErrorControl(ndr
, NDR_SCALARS
, &r
->error_control
));
767 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_executablepath
));
768 if (_ptr_executablepath
) {
769 NDR_PULL_ALLOC(ndr
, r
->executablepath
);
771 r
->executablepath
= NULL
;
773 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_loadordergroup
));
774 if (_ptr_loadordergroup
) {
775 NDR_PULL_ALLOC(ndr
, r
->loadordergroup
);
777 r
->loadordergroup
= NULL
;
779 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->tag_id
));
780 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_dependencies
));
781 if (_ptr_dependencies
) {
782 NDR_PULL_ALLOC(ndr
, r
->dependencies
);
784 r
->dependencies
= NULL
;
786 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_startname
));
787 if (_ptr_startname
) {
788 NDR_PULL_ALLOC(ndr
, r
->startname
);
792 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_displayname
));
793 if (_ptr_displayname
) {
794 NDR_PULL_ALLOC(ndr
, r
->displayname
);
796 r
->displayname
= NULL
;
799 if (ndr_flags
& NDR_BUFFERS
) {
800 if (r
->executablepath
) {
801 _mem_save_executablepath_0
= NDR_PULL_GET_MEM_CTX(ndr
);
802 NDR_PULL_SET_MEM_CTX(ndr
, r
->executablepath
, 0);
803 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->executablepath
));
804 NDR_CHECK(ndr_pull_array_length(ndr
, &r
->executablepath
));
805 if (ndr_get_array_length(ndr
, &r
->executablepath
) > ndr_get_array_size(ndr
, &r
->executablepath
)) {
806 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
));
808 NDR_CHECK(ndr_check_string_terminator(ndr
, ndr_get_array_length(ndr
, &r
->executablepath
), sizeof(uint16_t)));
809 NDR_CHECK(ndr_pull_charset(ndr
, NDR_SCALARS
, &r
->executablepath
, ndr_get_array_length(ndr
, &r
->executablepath
), sizeof(uint16_t), CH_UTF16
));
810 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_executablepath_0
, 0);
812 if (r
->loadordergroup
) {
813 _mem_save_loadordergroup_0
= NDR_PULL_GET_MEM_CTX(ndr
);
814 NDR_PULL_SET_MEM_CTX(ndr
, r
->loadordergroup
, 0);
815 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->loadordergroup
));
816 NDR_CHECK(ndr_pull_array_length(ndr
, &r
->loadordergroup
));
817 if (ndr_get_array_length(ndr
, &r
->loadordergroup
) > ndr_get_array_size(ndr
, &r
->loadordergroup
)) {
818 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
));
820 NDR_CHECK(ndr_check_string_terminator(ndr
, ndr_get_array_length(ndr
, &r
->loadordergroup
), sizeof(uint16_t)));
821 NDR_CHECK(ndr_pull_charset(ndr
, NDR_SCALARS
, &r
->loadordergroup
, ndr_get_array_length(ndr
, &r
->loadordergroup
), sizeof(uint16_t), CH_UTF16
));
822 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_loadordergroup_0
, 0);
824 if (r
->dependencies
) {
825 _mem_save_dependencies_0
= NDR_PULL_GET_MEM_CTX(ndr
);
826 NDR_PULL_SET_MEM_CTX(ndr
, r
->dependencies
, 0);
827 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->dependencies
));
828 NDR_CHECK(ndr_pull_array_length(ndr
, &r
->dependencies
));
829 if (ndr_get_array_length(ndr
, &r
->dependencies
) > ndr_get_array_size(ndr
, &r
->dependencies
)) {
830 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
));
832 NDR_CHECK(ndr_check_string_terminator(ndr
, ndr_get_array_length(ndr
, &r
->dependencies
), sizeof(uint16_t)));
833 NDR_CHECK(ndr_pull_charset(ndr
, NDR_SCALARS
, &r
->dependencies
, ndr_get_array_length(ndr
, &r
->dependencies
), sizeof(uint16_t), CH_UTF16
));
834 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_dependencies_0
, 0);
837 _mem_save_startname_0
= NDR_PULL_GET_MEM_CTX(ndr
);
838 NDR_PULL_SET_MEM_CTX(ndr
, r
->startname
, 0);
839 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->startname
));
840 NDR_CHECK(ndr_pull_array_length(ndr
, &r
->startname
));
841 if (ndr_get_array_length(ndr
, &r
->startname
) > ndr_get_array_size(ndr
, &r
->startname
)) {
842 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
));
844 NDR_CHECK(ndr_check_string_terminator(ndr
, ndr_get_array_length(ndr
, &r
->startname
), sizeof(uint16_t)));
845 NDR_CHECK(ndr_pull_charset(ndr
, NDR_SCALARS
, &r
->startname
, ndr_get_array_length(ndr
, &r
->startname
), sizeof(uint16_t), CH_UTF16
));
846 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_startname_0
, 0);
848 if (r
->displayname
) {
849 _mem_save_displayname_0
= NDR_PULL_GET_MEM_CTX(ndr
);
850 NDR_PULL_SET_MEM_CTX(ndr
, r
->displayname
, 0);
851 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->displayname
));
852 NDR_CHECK(ndr_pull_array_length(ndr
, &r
->displayname
));
853 if (ndr_get_array_length(ndr
, &r
->displayname
) > ndr_get_array_size(ndr
, &r
->displayname
)) {
854 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
));
856 NDR_CHECK(ndr_check_string_terminator(ndr
, ndr_get_array_length(ndr
, &r
->displayname
), sizeof(uint16_t)));
857 NDR_CHECK(ndr_pull_charset(ndr
, NDR_SCALARS
, &r
->displayname
, ndr_get_array_length(ndr
, &r
->displayname
), sizeof(uint16_t), CH_UTF16
));
858 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_displayname_0
, 0);
861 return NDR_ERR_SUCCESS
;
864 _PUBLIC_
void ndr_print_QUERY_SERVICE_CONFIG(struct ndr_print
*ndr
, const char *name
, const struct QUERY_SERVICE_CONFIG
*r
)
866 ndr_print_struct(ndr
, name
, "QUERY_SERVICE_CONFIG");
868 ndr_print_uint32(ndr
, "service_type", r
->service_type
);
869 ndr_print_svcctl_StartType(ndr
, "start_type", r
->start_type
);
870 ndr_print_svcctl_ErrorControl(ndr
, "error_control", r
->error_control
);
871 ndr_print_ptr(ndr
, "executablepath", r
->executablepath
);
873 if (r
->executablepath
) {
874 ndr_print_string(ndr
, "executablepath", r
->executablepath
);
877 ndr_print_ptr(ndr
, "loadordergroup", r
->loadordergroup
);
879 if (r
->loadordergroup
) {
880 ndr_print_string(ndr
, "loadordergroup", r
->loadordergroup
);
883 ndr_print_uint32(ndr
, "tag_id", r
->tag_id
);
884 ndr_print_ptr(ndr
, "dependencies", r
->dependencies
);
886 if (r
->dependencies
) {
887 ndr_print_string(ndr
, "dependencies", r
->dependencies
);
890 ndr_print_ptr(ndr
, "startname", r
->startname
);
893 ndr_print_string(ndr
, "startname", r
->startname
);
896 ndr_print_ptr(ndr
, "displayname", r
->displayname
);
898 if (r
->displayname
) {
899 ndr_print_string(ndr
, "displayname", r
->displayname
);
905 _PUBLIC_
size_t ndr_size_QUERY_SERVICE_CONFIG(const struct QUERY_SERVICE_CONFIG
*r
, struct smb_iconv_convenience
*ic
, int flags
)
907 return ndr_size_struct(r
, flags
, (ndr_push_flags_fn_t
)ndr_push_QUERY_SERVICE_CONFIG
, ic
);
910 static enum ndr_err_code
ndr_push_svcctl_ArgumentString(struct ndr_push
*ndr
, int ndr_flags
, const struct svcctl_ArgumentString
*r
)
912 if (ndr_flags
& NDR_SCALARS
) {
913 NDR_CHECK(ndr_push_align(ndr
, 5));
914 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->string
));
916 if (ndr_flags
& NDR_BUFFERS
) {
918 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, ndr_charset_length(r
->string
, CH_UTF16
)));
919 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, 0));
920 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, ndr_charset_length(r
->string
, CH_UTF16
)));
921 NDR_CHECK(ndr_push_charset(ndr
, NDR_SCALARS
, r
->string
, ndr_charset_length(r
->string
, CH_UTF16
), sizeof(uint16_t), CH_UTF16
));
924 return NDR_ERR_SUCCESS
;
927 static enum ndr_err_code
ndr_pull_svcctl_ArgumentString(struct ndr_pull
*ndr
, int ndr_flags
, struct svcctl_ArgumentString
*r
)
929 uint32_t _ptr_string
;
930 TALLOC_CTX
*_mem_save_string_0
;
931 if (ndr_flags
& NDR_SCALARS
) {
932 NDR_CHECK(ndr_pull_align(ndr
, 5));
933 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_string
));
935 NDR_PULL_ALLOC(ndr
, r
->string
);
940 if (ndr_flags
& NDR_BUFFERS
) {
942 _mem_save_string_0
= NDR_PULL_GET_MEM_CTX(ndr
);
943 NDR_PULL_SET_MEM_CTX(ndr
, r
->string
, 0);
944 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->string
));
945 NDR_CHECK(ndr_pull_array_length(ndr
, &r
->string
));
946 if (ndr_get_array_length(ndr
, &r
->string
) > ndr_get_array_size(ndr
, &r
->string
)) {
947 return ndr_pull_error(ndr
, NDR_ERR_ARRAY_SIZE
, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr
, &r
->string
), ndr_get_array_length(ndr
, &r
->string
));
949 NDR_CHECK(ndr_check_string_terminator(ndr
, ndr_get_array_length(ndr
, &r
->string
), sizeof(uint16_t)));
950 NDR_CHECK(ndr_pull_charset(ndr
, NDR_SCALARS
, &r
->string
, ndr_get_array_length(ndr
, &r
->string
), sizeof(uint16_t), CH_UTF16
));
951 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_string_0
, 0);
954 return NDR_ERR_SUCCESS
;
957 _PUBLIC_
void ndr_print_svcctl_ArgumentString(struct ndr_print
*ndr
, const char *name
, const struct svcctl_ArgumentString
*r
)
959 ndr_print_struct(ndr
, name
, "svcctl_ArgumentString");
961 ndr_print_ptr(ndr
, "string", r
->string
);
964 ndr_print_string(ndr
, "string", r
->string
);
970 static enum ndr_err_code
ndr_push_svcctl_ConfigLevel(struct ndr_push
*ndr
, int ndr_flags
, enum svcctl_ConfigLevel r
)
972 NDR_CHECK(ndr_push_enum_uint32(ndr
, NDR_SCALARS
, r
));
973 return NDR_ERR_SUCCESS
;
976 static enum ndr_err_code
ndr_pull_svcctl_ConfigLevel(struct ndr_pull
*ndr
, int ndr_flags
, enum svcctl_ConfigLevel
*r
)
979 NDR_CHECK(ndr_pull_enum_uint32(ndr
, NDR_SCALARS
, &v
));
981 return NDR_ERR_SUCCESS
;
984 _PUBLIC_
void ndr_print_svcctl_ConfigLevel(struct ndr_print
*ndr
, const char *name
, enum svcctl_ConfigLevel r
)
986 const char *val
= NULL
;
989 case SERVICE_CONFIG_DESCRIPTION
: val
= "SERVICE_CONFIG_DESCRIPTION"; break;
990 case SERVICE_CONFIG_FAILURE_ACTIONS
: val
= "SERVICE_CONFIG_FAILURE_ACTIONS"; break;
992 ndr_print_enum(ndr
, name
, "ENUM", val
, r
);
995 _PUBLIC_
enum ndr_err_code
ndr_push_SERVICE_DESCRIPTION(struct ndr_push
*ndr
, int ndr_flags
, const struct SERVICE_DESCRIPTION
*r
)
997 if (ndr_flags
& NDR_SCALARS
) {
998 NDR_CHECK(ndr_push_align(ndr
, 5));
1000 uint32_t _flags_save_string
= ndr
->flags
;
1001 ndr_set_flags(&ndr
->flags
, LIBNDR_FLAG_STR_NULLTERM
);
1002 NDR_CHECK(ndr_push_relative_ptr1(ndr
, r
->description
));
1003 ndr
->flags
= _flags_save_string
;
1006 if (ndr_flags
& NDR_BUFFERS
) {
1008 uint32_t _flags_save_string
= ndr
->flags
;
1009 ndr_set_flags(&ndr
->flags
, LIBNDR_FLAG_STR_NULLTERM
);
1010 if (r
->description
) {
1011 NDR_CHECK(ndr_push_relative_ptr2(ndr
, r
->description
));
1012 NDR_CHECK(ndr_push_string(ndr
, NDR_SCALARS
, r
->description
));
1014 ndr
->flags
= _flags_save_string
;
1017 return NDR_ERR_SUCCESS
;
1020 _PUBLIC_
enum ndr_err_code
ndr_pull_SERVICE_DESCRIPTION(struct ndr_pull
*ndr
, int ndr_flags
, struct SERVICE_DESCRIPTION
*r
)
1022 uint32_t _ptr_description
;
1023 TALLOC_CTX
*_mem_save_description_0
;
1024 if (ndr_flags
& NDR_SCALARS
) {
1025 NDR_CHECK(ndr_pull_align(ndr
, 5));
1027 uint32_t _flags_save_string
= ndr
->flags
;
1028 ndr_set_flags(&ndr
->flags
, LIBNDR_FLAG_STR_NULLTERM
);
1029 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_description
));
1030 if (_ptr_description
) {
1031 NDR_PULL_ALLOC(ndr
, r
->description
);
1032 NDR_CHECK(ndr_pull_relative_ptr1(ndr
, r
->description
, _ptr_description
));
1034 r
->description
= NULL
;
1036 ndr
->flags
= _flags_save_string
;
1039 if (ndr_flags
& NDR_BUFFERS
) {
1041 uint32_t _flags_save_string
= ndr
->flags
;
1042 ndr_set_flags(&ndr
->flags
, LIBNDR_FLAG_STR_NULLTERM
);
1043 if (r
->description
) {
1044 uint32_t _relative_save_offset
;
1045 _relative_save_offset
= ndr
->offset
;
1046 NDR_CHECK(ndr_pull_relative_ptr2(ndr
, r
->description
));
1047 _mem_save_description_0
= NDR_PULL_GET_MEM_CTX(ndr
);
1048 NDR_PULL_SET_MEM_CTX(ndr
, r
->description
, 0);
1049 NDR_CHECK(ndr_pull_string(ndr
, NDR_SCALARS
, &r
->description
));
1050 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_description_0
, 0);
1051 ndr
->offset
= _relative_save_offset
;
1053 ndr
->flags
= _flags_save_string
;
1056 return NDR_ERR_SUCCESS
;
1059 _PUBLIC_
void ndr_print_SERVICE_DESCRIPTION(struct ndr_print
*ndr
, const char *name
, const struct SERVICE_DESCRIPTION
*r
)
1061 ndr_print_struct(ndr
, name
, "SERVICE_DESCRIPTION");
1063 ndr_print_ptr(ndr
, "description", r
->description
);
1065 if (r
->description
) {
1066 ndr_print_string(ndr
, "description", r
->description
);
1072 _PUBLIC_
size_t ndr_size_SERVICE_DESCRIPTION(const struct SERVICE_DESCRIPTION
*r
, struct smb_iconv_convenience
*ic
, int flags
)
1074 return ndr_size_struct(r
, flags
, (ndr_push_flags_fn_t
)ndr_push_SERVICE_DESCRIPTION
, ic
);
1077 static enum ndr_err_code
ndr_push_SC_ACTION_TYPE(struct ndr_push
*ndr
, int ndr_flags
, enum SC_ACTION_TYPE r
)
1079 NDR_CHECK(ndr_push_enum_uint32(ndr
, NDR_SCALARS
, r
));
1080 return NDR_ERR_SUCCESS
;
1083 static enum ndr_err_code
ndr_pull_SC_ACTION_TYPE(struct ndr_pull
*ndr
, int ndr_flags
, enum SC_ACTION_TYPE
*r
)
1086 NDR_CHECK(ndr_pull_enum_uint32(ndr
, NDR_SCALARS
, &v
));
1088 return NDR_ERR_SUCCESS
;
1091 _PUBLIC_
void ndr_print_SC_ACTION_TYPE(struct ndr_print
*ndr
, const char *name
, enum SC_ACTION_TYPE r
)
1093 const char *val
= NULL
;
1096 case SC_ACTION_NONE
: val
= "SC_ACTION_NONE"; break;
1097 case SC_ACTION_RESTART
: val
= "SC_ACTION_RESTART"; break;
1098 case SC_ACTION_REBOOT
: val
= "SC_ACTION_REBOOT"; break;
1099 case SC_ACTION_RUN_COMMAND
: val
= "SC_ACTION_RUN_COMMAND"; break;
1101 ndr_print_enum(ndr
, name
, "ENUM", val
, r
);
1104 static enum ndr_err_code
ndr_push_SC_ACTION(struct ndr_push
*ndr
, int ndr_flags
, const struct SC_ACTION
*r
)
1106 if (ndr_flags
& NDR_SCALARS
) {
1107 NDR_CHECK(ndr_push_align(ndr
, 4));
1108 NDR_CHECK(ndr_push_SC_ACTION_TYPE(ndr
, NDR_SCALARS
, r
->type
));
1109 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->delay
));
1111 if (ndr_flags
& NDR_BUFFERS
) {
1113 return NDR_ERR_SUCCESS
;
1116 static enum ndr_err_code
ndr_pull_SC_ACTION(struct ndr_pull
*ndr
, int ndr_flags
, struct SC_ACTION
*r
)
1118 if (ndr_flags
& NDR_SCALARS
) {
1119 NDR_CHECK(ndr_pull_align(ndr
, 4));
1120 NDR_CHECK(ndr_pull_SC_ACTION_TYPE(ndr
, NDR_SCALARS
, &r
->type
));
1121 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->delay
));
1123 if (ndr_flags
& NDR_BUFFERS
) {
1125 return NDR_ERR_SUCCESS
;
1128 _PUBLIC_
void ndr_print_SC_ACTION(struct ndr_print
*ndr
, const char *name
, const struct SC_ACTION
*r
)
1130 ndr_print_struct(ndr
, name
, "SC_ACTION");
1132 ndr_print_SC_ACTION_TYPE(ndr
, "type", r
->type
);
1133 ndr_print_uint32(ndr
, "delay", r
->delay
);
1137 _PUBLIC_
enum ndr_err_code
ndr_push_SERVICE_FAILURE_ACTIONS(struct ndr_push
*ndr
, int ndr_flags
, const struct SERVICE_FAILURE_ACTIONS
*r
)
1139 uint32_t cntr_actions_1
;
1140 if (ndr_flags
& NDR_SCALARS
) {
1141 NDR_CHECK(ndr_push_align(ndr
, 5));
1142 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->reset_period
));
1144 uint32_t _flags_save_string
= ndr
->flags
;
1145 ndr_set_flags(&ndr
->flags
, LIBNDR_FLAG_STR_NULLTERM
);
1146 NDR_CHECK(ndr_push_relative_ptr1(ndr
, r
->rebootmsg
));
1147 ndr
->flags
= _flags_save_string
;
1150 uint32_t _flags_save_string
= ndr
->flags
;
1151 ndr_set_flags(&ndr
->flags
, LIBNDR_FLAG_STR_NULLTERM
);
1152 NDR_CHECK(ndr_push_relative_ptr1(ndr
, r
->command
));
1153 ndr
->flags
= _flags_save_string
;
1155 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->num_actions
));
1156 NDR_CHECK(ndr_push_relative_ptr1(ndr
, r
->actions
));
1158 if (ndr_flags
& NDR_BUFFERS
) {
1160 uint32_t _flags_save_string
= ndr
->flags
;
1161 ndr_set_flags(&ndr
->flags
, LIBNDR_FLAG_STR_NULLTERM
);
1163 NDR_CHECK(ndr_push_relative_ptr2(ndr
, r
->rebootmsg
));
1164 NDR_CHECK(ndr_push_string(ndr
, NDR_SCALARS
, r
->rebootmsg
));
1166 ndr
->flags
= _flags_save_string
;
1169 uint32_t _flags_save_string
= ndr
->flags
;
1170 ndr_set_flags(&ndr
->flags
, LIBNDR_FLAG_STR_NULLTERM
);
1172 NDR_CHECK(ndr_push_relative_ptr2(ndr
, r
->command
));
1173 NDR_CHECK(ndr_push_string(ndr
, NDR_SCALARS
, r
->command
));
1175 ndr
->flags
= _flags_save_string
;
1178 NDR_CHECK(ndr_push_relative_ptr2(ndr
, r
->actions
));
1179 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, r
->num_actions
));
1180 for (cntr_actions_1
= 0; cntr_actions_1
< r
->num_actions
; cntr_actions_1
++) {
1181 NDR_CHECK(ndr_push_SC_ACTION(ndr
, NDR_SCALARS
, &r
->actions
[cntr_actions_1
]));
1185 return NDR_ERR_SUCCESS
;
1188 _PUBLIC_
enum ndr_err_code
ndr_pull_SERVICE_FAILURE_ACTIONS(struct ndr_pull
*ndr
, int ndr_flags
, struct SERVICE_FAILURE_ACTIONS
*r
)
1190 uint32_t _ptr_rebootmsg
;
1191 TALLOC_CTX
*_mem_save_rebootmsg_0
;
1192 uint32_t _ptr_command
;
1193 TALLOC_CTX
*_mem_save_command_0
;
1194 uint32_t _ptr_actions
;
1195 uint32_t cntr_actions_1
;
1196 TALLOC_CTX
*_mem_save_actions_0
;
1197 TALLOC_CTX
*_mem_save_actions_1
;
1198 if (ndr_flags
& NDR_SCALARS
) {
1199 NDR_CHECK(ndr_pull_align(ndr
, 5));
1200 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->reset_period
));
1202 uint32_t _flags_save_string
= ndr
->flags
;
1203 ndr_set_flags(&ndr
->flags
, LIBNDR_FLAG_STR_NULLTERM
);
1204 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_rebootmsg
));
1205 if (_ptr_rebootmsg
) {
1206 NDR_PULL_ALLOC(ndr
, r
->rebootmsg
);
1207 NDR_CHECK(ndr_pull_relative_ptr1(ndr
, r
->rebootmsg
, _ptr_rebootmsg
));
1209 r
->rebootmsg
= NULL
;
1211 ndr
->flags
= _flags_save_string
;
1214 uint32_t _flags_save_string
= ndr
->flags
;
1215 ndr_set_flags(&ndr
->flags
, LIBNDR_FLAG_STR_NULLTERM
);
1216 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_command
));
1218 NDR_PULL_ALLOC(ndr
, r
->command
);
1219 NDR_CHECK(ndr_pull_relative_ptr1(ndr
, r
->command
, _ptr_command
));
1223 ndr
->flags
= _flags_save_string
;
1225 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->num_actions
));
1226 if (r
->num_actions
> 1024) {
1227 return ndr_pull_error(ndr
, NDR_ERR_RANGE
, "value out of range");
1229 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_actions
));
1231 NDR_PULL_ALLOC(ndr
, r
->actions
);
1232 NDR_CHECK(ndr_pull_relative_ptr1(ndr
, r
->actions
, _ptr_actions
));
1237 if (ndr_flags
& NDR_BUFFERS
) {
1239 uint32_t _flags_save_string
= ndr
->flags
;
1240 ndr_set_flags(&ndr
->flags
, LIBNDR_FLAG_STR_NULLTERM
);
1242 uint32_t _relative_save_offset
;
1243 _relative_save_offset
= ndr
->offset
;
1244 NDR_CHECK(ndr_pull_relative_ptr2(ndr
, r
->rebootmsg
));
1245 _mem_save_rebootmsg_0
= NDR_PULL_GET_MEM_CTX(ndr
);
1246 NDR_PULL_SET_MEM_CTX(ndr
, r
->rebootmsg
, 0);
1247 NDR_CHECK(ndr_pull_string(ndr
, NDR_SCALARS
, &r
->rebootmsg
));
1248 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_rebootmsg_0
, 0);
1249 ndr
->offset
= _relative_save_offset
;
1251 ndr
->flags
= _flags_save_string
;
1254 uint32_t _flags_save_string
= ndr
->flags
;
1255 ndr_set_flags(&ndr
->flags
, LIBNDR_FLAG_STR_NULLTERM
);
1257 uint32_t _relative_save_offset
;
1258 _relative_save_offset
= ndr
->offset
;
1259 NDR_CHECK(ndr_pull_relative_ptr2(ndr
, r
->command
));
1260 _mem_save_command_0
= NDR_PULL_GET_MEM_CTX(ndr
);
1261 NDR_PULL_SET_MEM_CTX(ndr
, r
->command
, 0);
1262 NDR_CHECK(ndr_pull_string(ndr
, NDR_SCALARS
, &r
->command
));
1263 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_command_0
, 0);
1264 ndr
->offset
= _relative_save_offset
;
1266 ndr
->flags
= _flags_save_string
;
1269 uint32_t _relative_save_offset
;
1270 _relative_save_offset
= ndr
->offset
;
1271 NDR_CHECK(ndr_pull_relative_ptr2(ndr
, r
->actions
));
1272 _mem_save_actions_0
= NDR_PULL_GET_MEM_CTX(ndr
);
1273 NDR_PULL_SET_MEM_CTX(ndr
, r
->actions
, 0);
1274 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->actions
));
1275 NDR_PULL_ALLOC_N(ndr
, r
->actions
, ndr_get_array_size(ndr
, &r
->actions
));
1276 _mem_save_actions_1
= NDR_PULL_GET_MEM_CTX(ndr
);
1277 NDR_PULL_SET_MEM_CTX(ndr
, r
->actions
, 0);
1278 for (cntr_actions_1
= 0; cntr_actions_1
< r
->num_actions
; cntr_actions_1
++) {
1279 NDR_CHECK(ndr_pull_SC_ACTION(ndr
, NDR_SCALARS
, &r
->actions
[cntr_actions_1
]));
1281 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_actions_1
, 0);
1282 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_actions_0
, 0);
1283 ndr
->offset
= _relative_save_offset
;
1286 NDR_CHECK(ndr_check_array_size(ndr
, (void*)&r
->actions
, r
->num_actions
));
1289 return NDR_ERR_SUCCESS
;
1292 _PUBLIC_
void ndr_print_SERVICE_FAILURE_ACTIONS(struct ndr_print
*ndr
, const char *name
, const struct SERVICE_FAILURE_ACTIONS
*r
)
1294 uint32_t cntr_actions_1
;
1295 ndr_print_struct(ndr
, name
, "SERVICE_FAILURE_ACTIONS");
1297 ndr_print_uint32(ndr
, "reset_period", r
->reset_period
);
1298 ndr_print_ptr(ndr
, "rebootmsg", r
->rebootmsg
);
1301 ndr_print_string(ndr
, "rebootmsg", r
->rebootmsg
);
1304 ndr_print_ptr(ndr
, "command", r
->command
);
1307 ndr_print_string(ndr
, "command", r
->command
);
1310 ndr_print_uint32(ndr
, "num_actions", r
->num_actions
);
1311 ndr_print_ptr(ndr
, "actions", r
->actions
);
1314 ndr
->print(ndr
, "%s: ARRAY(%d)", "actions", (int)r
->num_actions
);
1316 for (cntr_actions_1
=0;cntr_actions_1
<r
->num_actions
;cntr_actions_1
++) {
1318 if (asprintf(&idx_1
, "[%d]", cntr_actions_1
) != -1) {
1319 ndr_print_SC_ACTION(ndr
, "actions", &r
->actions
[cntr_actions_1
]);
1329 _PUBLIC_
size_t ndr_size_SERVICE_FAILURE_ACTIONS(const struct SERVICE_FAILURE_ACTIONS
*r
, struct smb_iconv_convenience
*ic
, int flags
)
1331 return ndr_size_struct(r
, flags
, (ndr_push_flags_fn_t
)ndr_push_SERVICE_FAILURE_ACTIONS
, ic
);
1334 static enum ndr_err_code
ndr_push_svcctl_StatusLevel(struct ndr_push
*ndr
, int ndr_flags
, enum svcctl_StatusLevel r
)
1336 NDR_CHECK(ndr_push_enum_uint32(ndr
, NDR_SCALARS
, r
));
1337 return NDR_ERR_SUCCESS
;
1340 static enum ndr_err_code
ndr_pull_svcctl_StatusLevel(struct ndr_pull
*ndr
, int ndr_flags
, enum svcctl_StatusLevel
*r
)
1343 NDR_CHECK(ndr_pull_enum_uint32(ndr
, NDR_SCALARS
, &v
));
1345 return NDR_ERR_SUCCESS
;
1348 _PUBLIC_
void ndr_print_svcctl_StatusLevel(struct ndr_print
*ndr
, const char *name
, enum svcctl_StatusLevel r
)
1350 const char *val
= NULL
;
1353 case SVC_STATUS_PROCESS_INFO
: val
= "SVC_STATUS_PROCESS_INFO"; break;
1355 ndr_print_enum(ndr
, name
, "ENUM", val
, r
);
1358 static enum ndr_err_code
ndr_push_svcctl_CloseServiceHandle(struct ndr_push
*ndr
, int flags
, const struct svcctl_CloseServiceHandle
*r
)
1360 if (flags
& NDR_IN
) {
1361 if (r
->in
.handle
== NULL
) {
1362 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
1364 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
, r
->in
.handle
));
1366 if (flags
& NDR_OUT
) {
1367 if (r
->out
.handle
== NULL
) {
1368 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
1370 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
, r
->out
.handle
));
1371 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
1373 return NDR_ERR_SUCCESS
;
1376 static enum ndr_err_code
ndr_pull_svcctl_CloseServiceHandle(struct ndr_pull
*ndr
, int flags
, struct svcctl_CloseServiceHandle
*r
)
1378 TALLOC_CTX
*_mem_save_handle_0
;
1379 if (flags
& NDR_IN
) {
1380 ZERO_STRUCT(r
->out
);
1382 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
1383 NDR_PULL_ALLOC(ndr
, r
->in
.handle
);
1385 _mem_save_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
1386 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.handle
, LIBNDR_FLAG_REF_ALLOC
);
1387 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
, r
->in
.handle
));
1388 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_handle_0
, LIBNDR_FLAG_REF_ALLOC
);
1389 NDR_PULL_ALLOC(ndr
, r
->out
.handle
);
1390 *r
->out
.handle
= *r
->in
.handle
;
1392 if (flags
& NDR_OUT
) {
1393 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
1394 NDR_PULL_ALLOC(ndr
, r
->out
.handle
);
1396 _mem_save_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
1397 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.handle
, LIBNDR_FLAG_REF_ALLOC
);
1398 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
, r
->out
.handle
));
1399 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_handle_0
, LIBNDR_FLAG_REF_ALLOC
);
1400 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
1402 return NDR_ERR_SUCCESS
;
1405 _PUBLIC_
void ndr_print_svcctl_CloseServiceHandle(struct ndr_print
*ndr
, const char *name
, int flags
, const struct svcctl_CloseServiceHandle
*r
)
1407 ndr_print_struct(ndr
, name
, "svcctl_CloseServiceHandle");
1409 if (flags
& NDR_SET_VALUES
) {
1410 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
1412 if (flags
& NDR_IN
) {
1413 ndr_print_struct(ndr
, "in", "svcctl_CloseServiceHandle");
1415 ndr_print_ptr(ndr
, "handle", r
->in
.handle
);
1417 ndr_print_policy_handle(ndr
, "handle", r
->in
.handle
);
1421 if (flags
& NDR_OUT
) {
1422 ndr_print_struct(ndr
, "out", "svcctl_CloseServiceHandle");
1424 ndr_print_ptr(ndr
, "handle", r
->out
.handle
);
1426 ndr_print_policy_handle(ndr
, "handle", r
->out
.handle
);
1428 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
1434 static enum ndr_err_code
ndr_push_svcctl_ControlService(struct ndr_push
*ndr
, int flags
, const struct svcctl_ControlService
*r
)
1436 if (flags
& NDR_IN
) {
1437 if (r
->in
.handle
== NULL
) {
1438 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
1440 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
, r
->in
.handle
));
1441 NDR_CHECK(ndr_push_SERVICE_CONTROL(ndr
, NDR_SCALARS
, r
->in
.control
));
1443 if (flags
& NDR_OUT
) {
1444 if (r
->out
.service_status
== NULL
) {
1445 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
1447 NDR_CHECK(ndr_push_SERVICE_STATUS(ndr
, NDR_SCALARS
, r
->out
.service_status
));
1448 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
1450 return NDR_ERR_SUCCESS
;
1453 static enum ndr_err_code
ndr_pull_svcctl_ControlService(struct ndr_pull
*ndr
, int flags
, struct svcctl_ControlService
*r
)
1455 TALLOC_CTX
*_mem_save_handle_0
;
1456 TALLOC_CTX
*_mem_save_service_status_0
;
1457 if (flags
& NDR_IN
) {
1458 ZERO_STRUCT(r
->out
);
1460 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
1461 NDR_PULL_ALLOC(ndr
, r
->in
.handle
);
1463 _mem_save_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
1464 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.handle
, LIBNDR_FLAG_REF_ALLOC
);
1465 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
, r
->in
.handle
));
1466 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_handle_0
, LIBNDR_FLAG_REF_ALLOC
);
1467 NDR_CHECK(ndr_pull_SERVICE_CONTROL(ndr
, NDR_SCALARS
, &r
->in
.control
));
1468 NDR_PULL_ALLOC(ndr
, r
->out
.service_status
);
1469 ZERO_STRUCTP(r
->out
.service_status
);
1471 if (flags
& NDR_OUT
) {
1472 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
1473 NDR_PULL_ALLOC(ndr
, r
->out
.service_status
);
1475 _mem_save_service_status_0
= NDR_PULL_GET_MEM_CTX(ndr
);
1476 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.service_status
, LIBNDR_FLAG_REF_ALLOC
);
1477 NDR_CHECK(ndr_pull_SERVICE_STATUS(ndr
, NDR_SCALARS
, r
->out
.service_status
));
1478 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_service_status_0
, LIBNDR_FLAG_REF_ALLOC
);
1479 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
1481 return NDR_ERR_SUCCESS
;
1484 _PUBLIC_
void ndr_print_svcctl_ControlService(struct ndr_print
*ndr
, const char *name
, int flags
, const struct svcctl_ControlService
*r
)
1486 ndr_print_struct(ndr
, name
, "svcctl_ControlService");
1488 if (flags
& NDR_SET_VALUES
) {
1489 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
1491 if (flags
& NDR_IN
) {
1492 ndr_print_struct(ndr
, "in", "svcctl_ControlService");
1494 ndr_print_ptr(ndr
, "handle", r
->in
.handle
);
1496 ndr_print_policy_handle(ndr
, "handle", r
->in
.handle
);
1498 ndr_print_SERVICE_CONTROL(ndr
, "control", r
->in
.control
);
1501 if (flags
& NDR_OUT
) {
1502 ndr_print_struct(ndr
, "out", "svcctl_ControlService");
1504 ndr_print_ptr(ndr
, "service_status", r
->out
.service_status
);
1506 ndr_print_SERVICE_STATUS(ndr
, "service_status", r
->out
.service_status
);
1508 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
1514 static enum ndr_err_code
ndr_push_svcctl_DeleteService(struct ndr_push
*ndr
, int flags
, const struct svcctl_DeleteService
*r
)
1516 if (flags
& NDR_IN
) {
1517 if (r
->in
.handle
== NULL
) {
1518 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
1520 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
, r
->in
.handle
));
1522 if (flags
& NDR_OUT
) {
1523 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
1525 return NDR_ERR_SUCCESS
;
1528 static enum ndr_err_code
ndr_pull_svcctl_DeleteService(struct ndr_pull
*ndr
, int flags
, struct svcctl_DeleteService
*r
)
1530 TALLOC_CTX
*_mem_save_handle_0
;
1531 if (flags
& NDR_IN
) {
1532 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
1533 NDR_PULL_ALLOC(ndr
, r
->in
.handle
);
1535 _mem_save_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
1536 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.handle
, LIBNDR_FLAG_REF_ALLOC
);
1537 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
, r
->in
.handle
));
1538 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_handle_0
, LIBNDR_FLAG_REF_ALLOC
);
1540 if (flags
& NDR_OUT
) {
1541 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
1543 return NDR_ERR_SUCCESS
;
1546 _PUBLIC_
void ndr_print_svcctl_DeleteService(struct ndr_print
*ndr
, const char *name
, int flags
, const struct svcctl_DeleteService
*r
)
1548 ndr_print_struct(ndr
, name
, "svcctl_DeleteService");
1550 if (flags
& NDR_SET_VALUES
) {
1551 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
1553 if (flags
& NDR_IN
) {
1554 ndr_print_struct(ndr
, "in", "svcctl_DeleteService");
1556 ndr_print_ptr(ndr
, "handle", r
->in
.handle
);
1558 ndr_print_policy_handle(ndr
, "handle", r
->in
.handle
);
1562 if (flags
& NDR_OUT
) {
1563 ndr_print_struct(ndr
, "out", "svcctl_DeleteService");
1565 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
1571 static enum ndr_err_code
ndr_push_svcctl_LockServiceDatabase(struct ndr_push
*ndr
, int flags
, const struct svcctl_LockServiceDatabase
*r
)
1573 if (flags
& NDR_IN
) {
1574 if (r
->in
.handle
== NULL
) {
1575 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
1577 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
, r
->in
.handle
));
1579 if (flags
& NDR_OUT
) {
1580 if (r
->out
.lock
== NULL
) {
1581 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
1583 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
, r
->out
.lock
));
1584 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
1586 return NDR_ERR_SUCCESS
;
1589 static enum ndr_err_code
ndr_pull_svcctl_LockServiceDatabase(struct ndr_pull
*ndr
, int flags
, struct svcctl_LockServiceDatabase
*r
)
1591 TALLOC_CTX
*_mem_save_handle_0
;
1592 TALLOC_CTX
*_mem_save_lock_0
;
1593 if (flags
& NDR_IN
) {
1594 ZERO_STRUCT(r
->out
);
1596 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
1597 NDR_PULL_ALLOC(ndr
, r
->in
.handle
);
1599 _mem_save_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
1600 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.handle
, LIBNDR_FLAG_REF_ALLOC
);
1601 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
, r
->in
.handle
));
1602 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_handle_0
, LIBNDR_FLAG_REF_ALLOC
);
1603 NDR_PULL_ALLOC(ndr
, r
->out
.lock
);
1604 ZERO_STRUCTP(r
->out
.lock
);
1606 if (flags
& NDR_OUT
) {
1607 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
1608 NDR_PULL_ALLOC(ndr
, r
->out
.lock
);
1610 _mem_save_lock_0
= NDR_PULL_GET_MEM_CTX(ndr
);
1611 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.lock
, LIBNDR_FLAG_REF_ALLOC
);
1612 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
, r
->out
.lock
));
1613 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_lock_0
, LIBNDR_FLAG_REF_ALLOC
);
1614 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
1616 return NDR_ERR_SUCCESS
;
1619 _PUBLIC_
void ndr_print_svcctl_LockServiceDatabase(struct ndr_print
*ndr
, const char *name
, int flags
, const struct svcctl_LockServiceDatabase
*r
)
1621 ndr_print_struct(ndr
, name
, "svcctl_LockServiceDatabase");
1623 if (flags
& NDR_SET_VALUES
) {
1624 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
1626 if (flags
& NDR_IN
) {
1627 ndr_print_struct(ndr
, "in", "svcctl_LockServiceDatabase");
1629 ndr_print_ptr(ndr
, "handle", r
->in
.handle
);
1631 ndr_print_policy_handle(ndr
, "handle", r
->in
.handle
);
1635 if (flags
& NDR_OUT
) {
1636 ndr_print_struct(ndr
, "out", "svcctl_LockServiceDatabase");
1638 ndr_print_ptr(ndr
, "lock", r
->out
.lock
);
1640 ndr_print_policy_handle(ndr
, "lock", r
->out
.lock
);
1642 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
1648 static enum ndr_err_code
ndr_push_svcctl_QueryServiceObjectSecurity(struct ndr_push
*ndr
, int flags
, const struct svcctl_QueryServiceObjectSecurity
*r
)
1650 if (flags
& NDR_IN
) {
1651 if (r
->in
.handle
== NULL
) {
1652 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
1654 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
, r
->in
.handle
));
1655 NDR_CHECK(ndr_push_security_secinfo(ndr
, NDR_SCALARS
, r
->in
.security_flags
));
1656 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.offered
));
1658 if (flags
& NDR_OUT
) {
1659 if (r
->out
.buffer
== NULL
) {
1660 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
1662 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, r
->in
.offered
));
1663 NDR_CHECK(ndr_push_array_uint8(ndr
, NDR_SCALARS
, r
->out
.buffer
, r
->in
.offered
));
1664 if (r
->out
.needed
== NULL
) {
1665 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
1667 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, *r
->out
.needed
));
1668 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
1670 return NDR_ERR_SUCCESS
;
1673 static enum ndr_err_code
ndr_pull_svcctl_QueryServiceObjectSecurity(struct ndr_pull
*ndr
, int flags
, struct svcctl_QueryServiceObjectSecurity
*r
)
1675 TALLOC_CTX
*_mem_save_handle_0
;
1676 TALLOC_CTX
*_mem_save_needed_0
;
1677 if (flags
& NDR_IN
) {
1678 ZERO_STRUCT(r
->out
);
1680 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
1681 NDR_PULL_ALLOC(ndr
, r
->in
.handle
);
1683 _mem_save_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
1684 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.handle
, LIBNDR_FLAG_REF_ALLOC
);
1685 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
, r
->in
.handle
));
1686 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_handle_0
, LIBNDR_FLAG_REF_ALLOC
);
1687 NDR_CHECK(ndr_pull_security_secinfo(ndr
, NDR_SCALARS
, &r
->in
.security_flags
));
1688 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.offered
));
1689 if (r
->in
.offered
> 0x40000) {
1690 return ndr_pull_error(ndr
, NDR_ERR_RANGE
, "value out of range");
1692 NDR_PULL_ALLOC_N(ndr
, r
->out
.buffer
, r
->in
.offered
);
1693 memset(r
->out
.buffer
, 0, (r
->in
.offered
) * sizeof(*r
->out
.buffer
));
1694 NDR_PULL_ALLOC(ndr
, r
->out
.needed
);
1695 ZERO_STRUCTP(r
->out
.needed
);
1697 if (flags
& NDR_OUT
) {
1698 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->out
.buffer
));
1699 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
1700 NDR_PULL_ALLOC_N(ndr
, r
->out
.buffer
, ndr_get_array_size(ndr
, &r
->out
.buffer
));
1702 NDR_CHECK(ndr_pull_array_uint8(ndr
, NDR_SCALARS
, r
->out
.buffer
, ndr_get_array_size(ndr
, &r
->out
.buffer
)));
1703 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
1704 NDR_PULL_ALLOC(ndr
, r
->out
.needed
);
1706 _mem_save_needed_0
= NDR_PULL_GET_MEM_CTX(ndr
);
1707 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.needed
, LIBNDR_FLAG_REF_ALLOC
);
1708 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, r
->out
.needed
));
1709 if (*r
->out
.needed
> 0x40000) {
1710 return ndr_pull_error(ndr
, NDR_ERR_RANGE
, "value out of range");
1712 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_needed_0
, LIBNDR_FLAG_REF_ALLOC
);
1713 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
1714 if (r
->out
.buffer
) {
1715 NDR_CHECK(ndr_check_array_size(ndr
, (void*)&r
->out
.buffer
, r
->in
.offered
));
1718 return NDR_ERR_SUCCESS
;
1721 _PUBLIC_
void ndr_print_svcctl_QueryServiceObjectSecurity(struct ndr_print
*ndr
, const char *name
, int flags
, const struct svcctl_QueryServiceObjectSecurity
*r
)
1723 ndr_print_struct(ndr
, name
, "svcctl_QueryServiceObjectSecurity");
1725 if (flags
& NDR_SET_VALUES
) {
1726 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
1728 if (flags
& NDR_IN
) {
1729 ndr_print_struct(ndr
, "in", "svcctl_QueryServiceObjectSecurity");
1731 ndr_print_ptr(ndr
, "handle", r
->in
.handle
);
1733 ndr_print_policy_handle(ndr
, "handle", r
->in
.handle
);
1735 ndr_print_security_secinfo(ndr
, "security_flags", r
->in
.security_flags
);
1736 ndr_print_uint32(ndr
, "offered", r
->in
.offered
);
1739 if (flags
& NDR_OUT
) {
1740 ndr_print_struct(ndr
, "out", "svcctl_QueryServiceObjectSecurity");
1742 ndr_print_ptr(ndr
, "buffer", r
->out
.buffer
);
1744 ndr_print_array_uint8(ndr
, "buffer", r
->out
.buffer
, r
->in
.offered
);
1746 ndr_print_ptr(ndr
, "needed", r
->out
.needed
);
1748 ndr_print_uint32(ndr
, "needed", *r
->out
.needed
);
1750 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
1756 static enum ndr_err_code
ndr_push_svcctl_SetServiceObjectSecurity(struct ndr_push
*ndr
, int flags
, const struct svcctl_SetServiceObjectSecurity
*r
)
1758 if (flags
& NDR_IN
) {
1759 if (r
->in
.handle
== NULL
) {
1760 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
1762 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
, r
->in
.handle
));
1763 NDR_CHECK(ndr_push_security_secinfo(ndr
, NDR_SCALARS
, r
->in
.security_flags
));
1764 if (r
->in
.buffer
== NULL
) {
1765 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
1767 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, r
->in
.offered
));
1768 NDR_CHECK(ndr_push_array_uint8(ndr
, NDR_SCALARS
, r
->in
.buffer
, r
->in
.offered
));
1769 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.offered
));
1771 if (flags
& NDR_OUT
) {
1772 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
1774 return NDR_ERR_SUCCESS
;
1777 static enum ndr_err_code
ndr_pull_svcctl_SetServiceObjectSecurity(struct ndr_pull
*ndr
, int flags
, struct svcctl_SetServiceObjectSecurity
*r
)
1779 TALLOC_CTX
*_mem_save_handle_0
;
1780 if (flags
& NDR_IN
) {
1781 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
1782 NDR_PULL_ALLOC(ndr
, r
->in
.handle
);
1784 _mem_save_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
1785 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.handle
, LIBNDR_FLAG_REF_ALLOC
);
1786 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
, r
->in
.handle
));
1787 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_handle_0
, LIBNDR_FLAG_REF_ALLOC
);
1788 NDR_CHECK(ndr_pull_security_secinfo(ndr
, NDR_SCALARS
, &r
->in
.security_flags
));
1789 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->in
.buffer
));
1790 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
1791 NDR_PULL_ALLOC_N(ndr
, r
->in
.buffer
, ndr_get_array_size(ndr
, &r
->in
.buffer
));
1793 NDR_CHECK(ndr_pull_array_uint8(ndr
, NDR_SCALARS
, r
->in
.buffer
, ndr_get_array_size(ndr
, &r
->in
.buffer
)));
1794 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.offered
));
1796 NDR_CHECK(ndr_check_array_size(ndr
, (void*)&r
->in
.buffer
, r
->in
.offered
));
1799 if (flags
& NDR_OUT
) {
1800 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
1802 return NDR_ERR_SUCCESS
;
1805 _PUBLIC_
void ndr_print_svcctl_SetServiceObjectSecurity(struct ndr_print
*ndr
, const char *name
, int flags
, const struct svcctl_SetServiceObjectSecurity
*r
)
1807 ndr_print_struct(ndr
, name
, "svcctl_SetServiceObjectSecurity");
1809 if (flags
& NDR_SET_VALUES
) {
1810 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
1812 if (flags
& NDR_IN
) {
1813 ndr_print_struct(ndr
, "in", "svcctl_SetServiceObjectSecurity");
1815 ndr_print_ptr(ndr
, "handle", r
->in
.handle
);
1817 ndr_print_policy_handle(ndr
, "handle", r
->in
.handle
);
1819 ndr_print_security_secinfo(ndr
, "security_flags", r
->in
.security_flags
);
1820 ndr_print_ptr(ndr
, "buffer", r
->in
.buffer
);
1822 ndr_print_array_uint8(ndr
, "buffer", r
->in
.buffer
, r
->in
.offered
);
1824 ndr_print_uint32(ndr
, "offered", r
->in
.offered
);
1827 if (flags
& NDR_OUT
) {
1828 ndr_print_struct(ndr
, "out", "svcctl_SetServiceObjectSecurity");
1830 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
1836 static enum ndr_err_code
ndr_push_svcctl_QueryServiceStatus(struct ndr_push
*ndr
, int flags
, const struct svcctl_QueryServiceStatus
*r
)
1838 if (flags
& NDR_IN
) {
1839 if (r
->in
.handle
== NULL
) {
1840 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
1842 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
, r
->in
.handle
));
1844 if (flags
& NDR_OUT
) {
1845 if (r
->out
.service_status
== NULL
) {
1846 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
1848 NDR_CHECK(ndr_push_SERVICE_STATUS(ndr
, NDR_SCALARS
, r
->out
.service_status
));
1849 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
1851 return NDR_ERR_SUCCESS
;
1854 static enum ndr_err_code
ndr_pull_svcctl_QueryServiceStatus(struct ndr_pull
*ndr
, int flags
, struct svcctl_QueryServiceStatus
*r
)
1856 TALLOC_CTX
*_mem_save_handle_0
;
1857 TALLOC_CTX
*_mem_save_service_status_0
;
1858 if (flags
& NDR_IN
) {
1859 ZERO_STRUCT(r
->out
);
1861 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
1862 NDR_PULL_ALLOC(ndr
, r
->in
.handle
);
1864 _mem_save_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
1865 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.handle
, LIBNDR_FLAG_REF_ALLOC
);
1866 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
, r
->in
.handle
));
1867 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_handle_0
, LIBNDR_FLAG_REF_ALLOC
);
1868 NDR_PULL_ALLOC(ndr
, r
->out
.service_status
);
1869 ZERO_STRUCTP(r
->out
.service_status
);
1871 if (flags
& NDR_OUT
) {
1872 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
1873 NDR_PULL_ALLOC(ndr
, r
->out
.service_status
);
1875 _mem_save_service_status_0
= NDR_PULL_GET_MEM_CTX(ndr
);
1876 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.service_status
, LIBNDR_FLAG_REF_ALLOC
);
1877 NDR_CHECK(ndr_pull_SERVICE_STATUS(ndr
, NDR_SCALARS
, r
->out
.service_status
));
1878 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_service_status_0
, LIBNDR_FLAG_REF_ALLOC
);
1879 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
1881 return NDR_ERR_SUCCESS
;
1884 _PUBLIC_
void ndr_print_svcctl_QueryServiceStatus(struct ndr_print
*ndr
, const char *name
, int flags
, const struct svcctl_QueryServiceStatus
*r
)
1886 ndr_print_struct(ndr
, name
, "svcctl_QueryServiceStatus");
1888 if (flags
& NDR_SET_VALUES
) {
1889 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
1891 if (flags
& NDR_IN
) {
1892 ndr_print_struct(ndr
, "in", "svcctl_QueryServiceStatus");
1894 ndr_print_ptr(ndr
, "handle", r
->in
.handle
);
1896 ndr_print_policy_handle(ndr
, "handle", r
->in
.handle
);
1900 if (flags
& NDR_OUT
) {
1901 ndr_print_struct(ndr
, "out", "svcctl_QueryServiceStatus");
1903 ndr_print_ptr(ndr
, "service_status", r
->out
.service_status
);
1905 ndr_print_SERVICE_STATUS(ndr
, "service_status", r
->out
.service_status
);
1907 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
1913 static enum ndr_err_code
ndr_push_svcctl_SetServiceStatus(struct ndr_push
*ndr
, int flags
, const struct svcctl_SetServiceStatus
*r
)
1915 if (flags
& NDR_IN
) {
1917 if (flags
& NDR_OUT
) {
1918 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
1920 return NDR_ERR_SUCCESS
;
1923 static enum ndr_err_code
ndr_pull_svcctl_SetServiceStatus(struct ndr_pull
*ndr
, int flags
, struct svcctl_SetServiceStatus
*r
)
1925 if (flags
& NDR_IN
) {
1927 if (flags
& NDR_OUT
) {
1928 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
1930 return NDR_ERR_SUCCESS
;
1933 _PUBLIC_
void ndr_print_svcctl_SetServiceStatus(struct ndr_print
*ndr
, const char *name
, int flags
, const struct svcctl_SetServiceStatus
*r
)
1935 ndr_print_struct(ndr
, name
, "svcctl_SetServiceStatus");
1937 if (flags
& NDR_SET_VALUES
) {
1938 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
1940 if (flags
& NDR_IN
) {
1941 ndr_print_struct(ndr
, "in", "svcctl_SetServiceStatus");
1945 if (flags
& NDR_OUT
) {
1946 ndr_print_struct(ndr
, "out", "svcctl_SetServiceStatus");
1948 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
1954 static enum ndr_err_code
ndr_push_svcctl_UnlockServiceDatabase(struct ndr_push
*ndr
, int flags
, const struct svcctl_UnlockServiceDatabase
*r
)
1956 if (flags
& NDR_IN
) {
1957 if (r
->in
.lock
== NULL
) {
1958 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
1960 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
, r
->in
.lock
));
1962 if (flags
& NDR_OUT
) {
1963 if (r
->out
.lock
== NULL
) {
1964 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
1966 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
, r
->out
.lock
));
1967 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
1969 return NDR_ERR_SUCCESS
;
1972 static enum ndr_err_code
ndr_pull_svcctl_UnlockServiceDatabase(struct ndr_pull
*ndr
, int flags
, struct svcctl_UnlockServiceDatabase
*r
)
1974 TALLOC_CTX
*_mem_save_lock_0
;
1975 if (flags
& NDR_IN
) {
1976 ZERO_STRUCT(r
->out
);
1978 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
1979 NDR_PULL_ALLOC(ndr
, r
->in
.lock
);
1981 _mem_save_lock_0
= NDR_PULL_GET_MEM_CTX(ndr
);
1982 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.lock
, LIBNDR_FLAG_REF_ALLOC
);
1983 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
, r
->in
.lock
));
1984 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_lock_0
, LIBNDR_FLAG_REF_ALLOC
);
1985 NDR_PULL_ALLOC(ndr
, r
->out
.lock
);
1986 *r
->out
.lock
= *r
->in
.lock
;
1988 if (flags
& NDR_OUT
) {
1989 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
1990 NDR_PULL_ALLOC(ndr
, r
->out
.lock
);
1992 _mem_save_lock_0
= NDR_PULL_GET_MEM_CTX(ndr
);
1993 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.lock
, LIBNDR_FLAG_REF_ALLOC
);
1994 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
, r
->out
.lock
));
1995 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_lock_0
, LIBNDR_FLAG_REF_ALLOC
);
1996 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
1998 return NDR_ERR_SUCCESS
;
2001 _PUBLIC_
void ndr_print_svcctl_UnlockServiceDatabase(struct ndr_print
*ndr
, const char *name
, int flags
, const struct svcctl_UnlockServiceDatabase
*r
)
2003 ndr_print_struct(ndr
, name
, "svcctl_UnlockServiceDatabase");
2005 if (flags
& NDR_SET_VALUES
) {
2006 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
2008 if (flags
& NDR_IN
) {
2009 ndr_print_struct(ndr
, "in", "svcctl_UnlockServiceDatabase");
2011 ndr_print_ptr(ndr
, "lock", r
->in
.lock
);
2013 ndr_print_policy_handle(ndr
, "lock", r
->in
.lock
);
2017 if (flags
& NDR_OUT
) {
2018 ndr_print_struct(ndr
, "out", "svcctl_UnlockServiceDatabase");
2020 ndr_print_ptr(ndr
, "lock", r
->out
.lock
);
2022 ndr_print_policy_handle(ndr
, "lock", r
->out
.lock
);
2024 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
2030 static enum ndr_err_code
ndr_push_svcctl_NotifyBootConfigStatus(struct ndr_push
*ndr
, int flags
, const struct svcctl_NotifyBootConfigStatus
*r
)
2032 if (flags
& NDR_IN
) {
2034 if (flags
& NDR_OUT
) {
2035 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
2037 return NDR_ERR_SUCCESS
;
2040 static enum ndr_err_code
ndr_pull_svcctl_NotifyBootConfigStatus(struct ndr_pull
*ndr
, int flags
, struct svcctl_NotifyBootConfigStatus
*r
)
2042 if (flags
& NDR_IN
) {
2044 if (flags
& NDR_OUT
) {
2045 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
2047 return NDR_ERR_SUCCESS
;
2050 _PUBLIC_
void ndr_print_svcctl_NotifyBootConfigStatus(struct ndr_print
*ndr
, const char *name
, int flags
, const struct svcctl_NotifyBootConfigStatus
*r
)
2052 ndr_print_struct(ndr
, name
, "svcctl_NotifyBootConfigStatus");
2054 if (flags
& NDR_SET_VALUES
) {
2055 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
2057 if (flags
& NDR_IN
) {
2058 ndr_print_struct(ndr
, "in", "svcctl_NotifyBootConfigStatus");
2062 if (flags
& NDR_OUT
) {
2063 ndr_print_struct(ndr
, "out", "svcctl_NotifyBootConfigStatus");
2065 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
2071 static enum ndr_err_code
ndr_push_svcctl_SCSetServiceBitsW(struct ndr_push
*ndr
, int flags
, const struct svcctl_SCSetServiceBitsW
*r
)
2073 if (flags
& NDR_IN
) {
2074 if (r
->in
.handle
== NULL
) {
2075 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
2077 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
, r
->in
.handle
));
2078 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.bits
));
2079 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.bitson
));
2080 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.immediate
));
2082 if (flags
& NDR_OUT
) {
2083 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
2085 return NDR_ERR_SUCCESS
;
2088 static enum ndr_err_code
ndr_pull_svcctl_SCSetServiceBitsW(struct ndr_pull
*ndr
, int flags
, struct svcctl_SCSetServiceBitsW
*r
)
2090 TALLOC_CTX
*_mem_save_handle_0
;
2091 if (flags
& NDR_IN
) {
2092 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
2093 NDR_PULL_ALLOC(ndr
, r
->in
.handle
);
2095 _mem_save_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
2096 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.handle
, LIBNDR_FLAG_REF_ALLOC
);
2097 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
, r
->in
.handle
));
2098 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_handle_0
, LIBNDR_FLAG_REF_ALLOC
);
2099 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.bits
));
2100 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.bitson
));
2101 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.immediate
));
2103 if (flags
& NDR_OUT
) {
2104 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
2106 return NDR_ERR_SUCCESS
;
2109 _PUBLIC_
void ndr_print_svcctl_SCSetServiceBitsW(struct ndr_print
*ndr
, const char *name
, int flags
, const struct svcctl_SCSetServiceBitsW
*r
)
2111 ndr_print_struct(ndr
, name
, "svcctl_SCSetServiceBitsW");
2113 if (flags
& NDR_SET_VALUES
) {
2114 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
2116 if (flags
& NDR_IN
) {
2117 ndr_print_struct(ndr
, "in", "svcctl_SCSetServiceBitsW");
2119 ndr_print_ptr(ndr
, "handle", r
->in
.handle
);
2121 ndr_print_policy_handle(ndr
, "handle", r
->in
.handle
);
2123 ndr_print_uint32(ndr
, "bits", r
->in
.bits
);
2124 ndr_print_uint32(ndr
, "bitson", r
->in
.bitson
);
2125 ndr_print_uint32(ndr
, "immediate", r
->in
.immediate
);
2128 if (flags
& NDR_OUT
) {
2129 ndr_print_struct(ndr
, "out", "svcctl_SCSetServiceBitsW");
2131 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
2137 static enum ndr_err_code
ndr_push_svcctl_ChangeServiceConfigW(struct ndr_push
*ndr
, int flags
, const struct svcctl_ChangeServiceConfigW
*r
)
2139 if (flags
& NDR_IN
) {
2140 if (r
->in
.handle
== NULL
) {
2141 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
2143 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
, r
->in
.handle
));
2144 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.type
));
2145 NDR_CHECK(ndr_push_svcctl_StartType(ndr
, NDR_SCALARS
, r
->in
.start_type
));
2146 NDR_CHECK(ndr_push_svcctl_ErrorControl(ndr
, NDR_SCALARS
, r
->in
.error_control
));
2147 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.binary_path
));
2148 if (r
->in
.binary_path
) {
2149 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.binary_path
, CH_UTF16
)));
2150 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, 0));
2151 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.binary_path
, CH_UTF16
)));
2152 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
));
2154 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.load_order_group
));
2155 if (r
->in
.load_order_group
) {
2156 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.load_order_group
, CH_UTF16
)));
2157 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, 0));
2158 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.load_order_group
, CH_UTF16
)));
2159 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
));
2161 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.dependencies
));
2162 if (r
->in
.dependencies
) {
2163 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.dependencies
, CH_UTF16
)));
2164 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, 0));
2165 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.dependencies
, CH_UTF16
)));
2166 NDR_CHECK(ndr_push_charset(ndr
, NDR_SCALARS
, r
->in
.dependencies
, ndr_charset_length(r
->in
.dependencies
, CH_UTF16
), sizeof(uint16_t), CH_UTF16
));
2168 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.service_start_name
));
2169 if (r
->in
.service_start_name
) {
2170 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.service_start_name
, CH_UTF16
)));
2171 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, 0));
2172 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.service_start_name
, CH_UTF16
)));
2173 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
));
2175 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.password
));
2176 if (r
->in
.password
) {
2177 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.password
, CH_UTF16
)));
2178 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, 0));
2179 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.password
, CH_UTF16
)));
2180 NDR_CHECK(ndr_push_charset(ndr
, NDR_SCALARS
, r
->in
.password
, ndr_charset_length(r
->in
.password
, CH_UTF16
), sizeof(uint16_t), CH_UTF16
));
2182 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.display_name
));
2183 if (r
->in
.display_name
) {
2184 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.display_name
, CH_UTF16
)));
2185 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, 0));
2186 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.display_name
, CH_UTF16
)));
2187 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
));
2190 if (flags
& NDR_OUT
) {
2191 if (r
->out
.tag_id
== NULL
) {
2192 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
2194 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, *r
->out
.tag_id
));
2195 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
2197 return NDR_ERR_SUCCESS
;
2200 static enum ndr_err_code
ndr_pull_svcctl_ChangeServiceConfigW(struct ndr_pull
*ndr
, int flags
, struct svcctl_ChangeServiceConfigW
*r
)
2202 uint32_t _ptr_binary_path
;
2203 uint32_t _ptr_load_order_group
;
2204 uint32_t _ptr_dependencies
;
2205 uint32_t _ptr_service_start_name
;
2206 uint32_t _ptr_password
;
2207 uint32_t _ptr_display_name
;
2208 TALLOC_CTX
*_mem_save_handle_0
;
2209 TALLOC_CTX
*_mem_save_binary_path_0
;
2210 TALLOC_CTX
*_mem_save_load_order_group_0
;
2211 TALLOC_CTX
*_mem_save_tag_id_0
;
2212 TALLOC_CTX
*_mem_save_dependencies_0
;
2213 TALLOC_CTX
*_mem_save_service_start_name_0
;
2214 TALLOC_CTX
*_mem_save_password_0
;
2215 TALLOC_CTX
*_mem_save_display_name_0
;
2216 if (flags
& NDR_IN
) {
2217 ZERO_STRUCT(r
->out
);
2219 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
2220 NDR_PULL_ALLOC(ndr
, r
->in
.handle
);
2222 _mem_save_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
2223 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.handle
, LIBNDR_FLAG_REF_ALLOC
);
2224 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
, r
->in
.handle
));
2225 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_handle_0
, LIBNDR_FLAG_REF_ALLOC
);
2226 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.type
));
2227 NDR_CHECK(ndr_pull_svcctl_StartType(ndr
, NDR_SCALARS
, &r
->in
.start_type
));
2228 NDR_CHECK(ndr_pull_svcctl_ErrorControl(ndr
, NDR_SCALARS
, &r
->in
.error_control
));
2229 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_binary_path
));
2230 if (_ptr_binary_path
) {
2231 NDR_PULL_ALLOC(ndr
, r
->in
.binary_path
);
2233 r
->in
.binary_path
= NULL
;
2235 if (r
->in
.binary_path
) {
2236 _mem_save_binary_path_0
= NDR_PULL_GET_MEM_CTX(ndr
);
2237 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.binary_path
, 0);
2238 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->in
.binary_path
));
2239 NDR_CHECK(ndr_pull_array_length(ndr
, &r
->in
.binary_path
));
2240 if (ndr_get_array_length(ndr
, &r
->in
.binary_path
) > ndr_get_array_size(ndr
, &r
->in
.binary_path
)) {
2241 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
));
2243 NDR_CHECK(ndr_check_string_terminator(ndr
, ndr_get_array_length(ndr
, &r
->in
.binary_path
), sizeof(uint16_t)));
2244 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
));
2245 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_binary_path_0
, 0);
2247 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_load_order_group
));
2248 if (_ptr_load_order_group
) {
2249 NDR_PULL_ALLOC(ndr
, r
->in
.load_order_group
);
2251 r
->in
.load_order_group
= NULL
;
2253 if (r
->in
.load_order_group
) {
2254 _mem_save_load_order_group_0
= NDR_PULL_GET_MEM_CTX(ndr
);
2255 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.load_order_group
, 0);
2256 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->in
.load_order_group
));
2257 NDR_CHECK(ndr_pull_array_length(ndr
, &r
->in
.load_order_group
));
2258 if (ndr_get_array_length(ndr
, &r
->in
.load_order_group
) > ndr_get_array_size(ndr
, &r
->in
.load_order_group
)) {
2259 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
));
2261 NDR_CHECK(ndr_check_string_terminator(ndr
, ndr_get_array_length(ndr
, &r
->in
.load_order_group
), sizeof(uint16_t)));
2262 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
));
2263 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_load_order_group_0
, 0);
2265 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_dependencies
));
2266 if (_ptr_dependencies
) {
2267 NDR_PULL_ALLOC(ndr
, r
->in
.dependencies
);
2269 r
->in
.dependencies
= NULL
;
2271 if (r
->in
.dependencies
) {
2272 _mem_save_dependencies_0
= NDR_PULL_GET_MEM_CTX(ndr
);
2273 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.dependencies
, 0);
2274 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->in
.dependencies
));
2275 NDR_CHECK(ndr_pull_array_length(ndr
, &r
->in
.dependencies
));
2276 if (ndr_get_array_length(ndr
, &r
->in
.dependencies
) > ndr_get_array_size(ndr
, &r
->in
.dependencies
)) {
2277 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
));
2279 NDR_CHECK(ndr_check_string_terminator(ndr
, ndr_get_array_length(ndr
, &r
->in
.dependencies
), sizeof(uint16_t)));
2280 NDR_CHECK(ndr_pull_charset(ndr
, NDR_SCALARS
, &r
->in
.dependencies
, ndr_get_array_length(ndr
, &r
->in
.dependencies
), sizeof(uint16_t), CH_UTF16
));
2281 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_dependencies_0
, 0);
2283 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_service_start_name
));
2284 if (_ptr_service_start_name
) {
2285 NDR_PULL_ALLOC(ndr
, r
->in
.service_start_name
);
2287 r
->in
.service_start_name
= NULL
;
2289 if (r
->in
.service_start_name
) {
2290 _mem_save_service_start_name_0
= NDR_PULL_GET_MEM_CTX(ndr
);
2291 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.service_start_name
, 0);
2292 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->in
.service_start_name
));
2293 NDR_CHECK(ndr_pull_array_length(ndr
, &r
->in
.service_start_name
));
2294 if (ndr_get_array_length(ndr
, &r
->in
.service_start_name
) > ndr_get_array_size(ndr
, &r
->in
.service_start_name
)) {
2295 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
));
2297 NDR_CHECK(ndr_check_string_terminator(ndr
, ndr_get_array_length(ndr
, &r
->in
.service_start_name
), sizeof(uint16_t)));
2298 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
));
2299 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_service_start_name_0
, 0);
2301 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_password
));
2302 if (_ptr_password
) {
2303 NDR_PULL_ALLOC(ndr
, r
->in
.password
);
2305 r
->in
.password
= NULL
;
2307 if (r
->in
.password
) {
2308 _mem_save_password_0
= NDR_PULL_GET_MEM_CTX(ndr
);
2309 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.password
, 0);
2310 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->in
.password
));
2311 NDR_CHECK(ndr_pull_array_length(ndr
, &r
->in
.password
));
2312 if (ndr_get_array_length(ndr
, &r
->in
.password
) > ndr_get_array_size(ndr
, &r
->in
.password
)) {
2313 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
));
2315 NDR_CHECK(ndr_check_string_terminator(ndr
, ndr_get_array_length(ndr
, &r
->in
.password
), sizeof(uint16_t)));
2316 NDR_CHECK(ndr_pull_charset(ndr
, NDR_SCALARS
, &r
->in
.password
, ndr_get_array_length(ndr
, &r
->in
.password
), sizeof(uint16_t), CH_UTF16
));
2317 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_password_0
, 0);
2319 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_display_name
));
2320 if (_ptr_display_name
) {
2321 NDR_PULL_ALLOC(ndr
, r
->in
.display_name
);
2323 r
->in
.display_name
= NULL
;
2325 if (r
->in
.display_name
) {
2326 _mem_save_display_name_0
= NDR_PULL_GET_MEM_CTX(ndr
);
2327 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.display_name
, 0);
2328 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->in
.display_name
));
2329 NDR_CHECK(ndr_pull_array_length(ndr
, &r
->in
.display_name
));
2330 if (ndr_get_array_length(ndr
, &r
->in
.display_name
) > ndr_get_array_size(ndr
, &r
->in
.display_name
)) {
2331 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
));
2333 NDR_CHECK(ndr_check_string_terminator(ndr
, ndr_get_array_length(ndr
, &r
->in
.display_name
), sizeof(uint16_t)));
2334 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
));
2335 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_display_name_0
, 0);
2337 NDR_PULL_ALLOC(ndr
, r
->out
.tag_id
);
2338 ZERO_STRUCTP(r
->out
.tag_id
);
2340 if (flags
& NDR_OUT
) {
2341 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
2342 NDR_PULL_ALLOC(ndr
, r
->out
.tag_id
);
2344 _mem_save_tag_id_0
= NDR_PULL_GET_MEM_CTX(ndr
);
2345 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.tag_id
, LIBNDR_FLAG_REF_ALLOC
);
2346 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, r
->out
.tag_id
));
2347 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_tag_id_0
, LIBNDR_FLAG_REF_ALLOC
);
2348 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
2350 return NDR_ERR_SUCCESS
;
2353 _PUBLIC_
void ndr_print_svcctl_ChangeServiceConfigW(struct ndr_print
*ndr
, const char *name
, int flags
, const struct svcctl_ChangeServiceConfigW
*r
)
2355 ndr_print_struct(ndr
, name
, "svcctl_ChangeServiceConfigW");
2357 if (flags
& NDR_SET_VALUES
) {
2358 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
2360 if (flags
& NDR_IN
) {
2361 ndr_print_struct(ndr
, "in", "svcctl_ChangeServiceConfigW");
2363 ndr_print_ptr(ndr
, "handle", r
->in
.handle
);
2365 ndr_print_policy_handle(ndr
, "handle", r
->in
.handle
);
2367 ndr_print_uint32(ndr
, "type", r
->in
.type
);
2368 ndr_print_svcctl_StartType(ndr
, "start_type", r
->in
.start_type
);
2369 ndr_print_svcctl_ErrorControl(ndr
, "error_control", r
->in
.error_control
);
2370 ndr_print_ptr(ndr
, "binary_path", r
->in
.binary_path
);
2372 if (r
->in
.binary_path
) {
2373 ndr_print_string(ndr
, "binary_path", r
->in
.binary_path
);
2376 ndr_print_ptr(ndr
, "load_order_group", r
->in
.load_order_group
);
2378 if (r
->in
.load_order_group
) {
2379 ndr_print_string(ndr
, "load_order_group", r
->in
.load_order_group
);
2382 ndr_print_ptr(ndr
, "dependencies", r
->in
.dependencies
);
2384 if (r
->in
.dependencies
) {
2385 ndr_print_string(ndr
, "dependencies", r
->in
.dependencies
);
2388 ndr_print_ptr(ndr
, "service_start_name", r
->in
.service_start_name
);
2390 if (r
->in
.service_start_name
) {
2391 ndr_print_string(ndr
, "service_start_name", r
->in
.service_start_name
);
2394 ndr_print_ptr(ndr
, "password", r
->in
.password
);
2396 if (r
->in
.password
) {
2397 ndr_print_string(ndr
, "password", r
->in
.password
);
2400 ndr_print_ptr(ndr
, "display_name", r
->in
.display_name
);
2402 if (r
->in
.display_name
) {
2403 ndr_print_string(ndr
, "display_name", r
->in
.display_name
);
2408 if (flags
& NDR_OUT
) {
2409 ndr_print_struct(ndr
, "out", "svcctl_ChangeServiceConfigW");
2411 ndr_print_ptr(ndr
, "tag_id", r
->out
.tag_id
);
2413 ndr_print_uint32(ndr
, "tag_id", *r
->out
.tag_id
);
2415 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
2421 static enum ndr_err_code
ndr_push_svcctl_CreateServiceW(struct ndr_push
*ndr
, int flags
, const struct svcctl_CreateServiceW
*r
)
2423 if (flags
& NDR_IN
) {
2424 if (r
->in
.scmanager_handle
== NULL
) {
2425 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
2427 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
, r
->in
.scmanager_handle
));
2428 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.ServiceName
, CH_UTF16
)));
2429 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, 0));
2430 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.ServiceName
, CH_UTF16
)));
2431 NDR_CHECK(ndr_push_charset(ndr
, NDR_SCALARS
, r
->in
.ServiceName
, ndr_charset_length(r
->in
.ServiceName
, CH_UTF16
), sizeof(uint16_t), CH_UTF16
));
2432 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.DisplayName
));
2433 if (r
->in
.DisplayName
) {
2434 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.DisplayName
, CH_UTF16
)));
2435 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, 0));
2436 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.DisplayName
, CH_UTF16
)));
2437 NDR_CHECK(ndr_push_charset(ndr
, NDR_SCALARS
, r
->in
.DisplayName
, ndr_charset_length(r
->in
.DisplayName
, CH_UTF16
), sizeof(uint16_t), CH_UTF16
));
2439 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.desired_access
));
2440 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.type
));
2441 NDR_CHECK(ndr_push_svcctl_StartType(ndr
, NDR_SCALARS
, r
->in
.start_type
));
2442 NDR_CHECK(ndr_push_svcctl_ErrorControl(ndr
, NDR_SCALARS
, r
->in
.error_control
));
2443 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.binary_path
, CH_UTF16
)));
2444 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, 0));
2445 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.binary_path
, CH_UTF16
)));
2446 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
));
2447 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.LoadOrderGroupKey
));
2448 if (r
->in
.LoadOrderGroupKey
) {
2449 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.LoadOrderGroupKey
, CH_UTF16
)));
2450 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, 0));
2451 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.LoadOrderGroupKey
, CH_UTF16
)));
2452 NDR_CHECK(ndr_push_charset(ndr
, NDR_SCALARS
, r
->in
.LoadOrderGroupKey
, ndr_charset_length(r
->in
.LoadOrderGroupKey
, CH_UTF16
), sizeof(uint16_t), CH_UTF16
));
2454 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.TagId
));
2456 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, *r
->in
.TagId
));
2458 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.dependencies
));
2459 if (r
->in
.dependencies
) {
2460 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, r
->in
.dependencies_size
));
2461 NDR_CHECK(ndr_push_array_uint8(ndr
, NDR_SCALARS
, r
->in
.dependencies
, r
->in
.dependencies_size
));
2463 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.dependencies_size
));
2464 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.service_start_name
));
2465 if (r
->in
.service_start_name
) {
2466 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.service_start_name
, CH_UTF16
)));
2467 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, 0));
2468 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.service_start_name
, CH_UTF16
)));
2469 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
));
2471 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.password
));
2472 if (r
->in
.password
) {
2473 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, r
->in
.password_size
));
2474 NDR_CHECK(ndr_push_array_uint8(ndr
, NDR_SCALARS
, r
->in
.password
, r
->in
.password_size
));
2476 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.password_size
));
2478 if (flags
& NDR_OUT
) {
2479 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->out
.TagId
));
2481 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, *r
->out
.TagId
));
2483 if (r
->out
.handle
== NULL
) {
2484 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
2486 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
, r
->out
.handle
));
2487 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
2489 return NDR_ERR_SUCCESS
;
2492 static enum ndr_err_code
ndr_pull_svcctl_CreateServiceW(struct ndr_pull
*ndr
, int flags
, struct svcctl_CreateServiceW
*r
)
2494 uint32_t _ptr_DisplayName
;
2495 uint32_t _ptr_LoadOrderGroupKey
;
2496 uint32_t _ptr_TagId
;
2497 uint32_t _ptr_dependencies
;
2498 uint32_t _ptr_service_start_name
;
2499 uint32_t _ptr_password
;
2500 TALLOC_CTX
*_mem_save_scmanager_handle_0
;
2501 TALLOC_CTX
*_mem_save_DisplayName_0
;
2502 TALLOC_CTX
*_mem_save_LoadOrderGroupKey_0
;
2503 TALLOC_CTX
*_mem_save_TagId_0
;
2504 TALLOC_CTX
*_mem_save_dependencies_0
;
2505 TALLOC_CTX
*_mem_save_service_start_name_0
;
2506 TALLOC_CTX
*_mem_save_password_0
;
2507 TALLOC_CTX
*_mem_save_handle_0
;
2508 if (flags
& NDR_IN
) {
2509 ZERO_STRUCT(r
->out
);
2511 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
2512 NDR_PULL_ALLOC(ndr
, r
->in
.scmanager_handle
);
2514 _mem_save_scmanager_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
2515 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.scmanager_handle
, LIBNDR_FLAG_REF_ALLOC
);
2516 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
, r
->in
.scmanager_handle
));
2517 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_scmanager_handle_0
, LIBNDR_FLAG_REF_ALLOC
);
2518 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->in
.ServiceName
));
2519 NDR_CHECK(ndr_pull_array_length(ndr
, &r
->in
.ServiceName
));
2520 if (ndr_get_array_length(ndr
, &r
->in
.ServiceName
) > ndr_get_array_size(ndr
, &r
->in
.ServiceName
)) {
2521 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
));
2523 NDR_CHECK(ndr_check_string_terminator(ndr
, ndr_get_array_length(ndr
, &r
->in
.ServiceName
), sizeof(uint16_t)));
2524 NDR_CHECK(ndr_pull_charset(ndr
, NDR_SCALARS
, &r
->in
.ServiceName
, ndr_get_array_length(ndr
, &r
->in
.ServiceName
), sizeof(uint16_t), CH_UTF16
));
2525 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_DisplayName
));
2526 if (_ptr_DisplayName
) {
2527 NDR_PULL_ALLOC(ndr
, r
->in
.DisplayName
);
2529 r
->in
.DisplayName
= NULL
;
2531 if (r
->in
.DisplayName
) {
2532 _mem_save_DisplayName_0
= NDR_PULL_GET_MEM_CTX(ndr
);
2533 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.DisplayName
, 0);
2534 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->in
.DisplayName
));
2535 NDR_CHECK(ndr_pull_array_length(ndr
, &r
->in
.DisplayName
));
2536 if (ndr_get_array_length(ndr
, &r
->in
.DisplayName
) > ndr_get_array_size(ndr
, &r
->in
.DisplayName
)) {
2537 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
));
2539 NDR_CHECK(ndr_check_string_terminator(ndr
, ndr_get_array_length(ndr
, &r
->in
.DisplayName
), sizeof(uint16_t)));
2540 NDR_CHECK(ndr_pull_charset(ndr
, NDR_SCALARS
, &r
->in
.DisplayName
, ndr_get_array_length(ndr
, &r
->in
.DisplayName
), sizeof(uint16_t), CH_UTF16
));
2541 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_DisplayName_0
, 0);
2543 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.desired_access
));
2544 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.type
));
2545 NDR_CHECK(ndr_pull_svcctl_StartType(ndr
, NDR_SCALARS
, &r
->in
.start_type
));
2546 NDR_CHECK(ndr_pull_svcctl_ErrorControl(ndr
, NDR_SCALARS
, &r
->in
.error_control
));
2547 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->in
.binary_path
));
2548 NDR_CHECK(ndr_pull_array_length(ndr
, &r
->in
.binary_path
));
2549 if (ndr_get_array_length(ndr
, &r
->in
.binary_path
) > ndr_get_array_size(ndr
, &r
->in
.binary_path
)) {
2550 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
));
2552 NDR_CHECK(ndr_check_string_terminator(ndr
, ndr_get_array_length(ndr
, &r
->in
.binary_path
), sizeof(uint16_t)));
2553 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
));
2554 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_LoadOrderGroupKey
));
2555 if (_ptr_LoadOrderGroupKey
) {
2556 NDR_PULL_ALLOC(ndr
, r
->in
.LoadOrderGroupKey
);
2558 r
->in
.LoadOrderGroupKey
= NULL
;
2560 if (r
->in
.LoadOrderGroupKey
) {
2561 _mem_save_LoadOrderGroupKey_0
= NDR_PULL_GET_MEM_CTX(ndr
);
2562 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.LoadOrderGroupKey
, 0);
2563 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->in
.LoadOrderGroupKey
));
2564 NDR_CHECK(ndr_pull_array_length(ndr
, &r
->in
.LoadOrderGroupKey
));
2565 if (ndr_get_array_length(ndr
, &r
->in
.LoadOrderGroupKey
) > ndr_get_array_size(ndr
, &r
->in
.LoadOrderGroupKey
)) {
2566 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
));
2568 NDR_CHECK(ndr_check_string_terminator(ndr
, ndr_get_array_length(ndr
, &r
->in
.LoadOrderGroupKey
), sizeof(uint16_t)));
2569 NDR_CHECK(ndr_pull_charset(ndr
, NDR_SCALARS
, &r
->in
.LoadOrderGroupKey
, ndr_get_array_length(ndr
, &r
->in
.LoadOrderGroupKey
), sizeof(uint16_t), CH_UTF16
));
2570 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_LoadOrderGroupKey_0
, 0);
2572 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_TagId
));
2574 NDR_PULL_ALLOC(ndr
, r
->in
.TagId
);
2579 _mem_save_TagId_0
= NDR_PULL_GET_MEM_CTX(ndr
);
2580 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.TagId
, 0);
2581 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, r
->in
.TagId
));
2582 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_TagId_0
, 0);
2584 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_dependencies
));
2585 if (_ptr_dependencies
) {
2586 NDR_PULL_ALLOC(ndr
, r
->in
.dependencies
);
2588 r
->in
.dependencies
= NULL
;
2590 if (r
->in
.dependencies
) {
2591 _mem_save_dependencies_0
= NDR_PULL_GET_MEM_CTX(ndr
);
2592 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.dependencies
, 0);
2593 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->in
.dependencies
));
2594 NDR_PULL_ALLOC_N(ndr
, r
->in
.dependencies
, ndr_get_array_size(ndr
, &r
->in
.dependencies
));
2595 NDR_CHECK(ndr_pull_array_uint8(ndr
, NDR_SCALARS
, r
->in
.dependencies
, ndr_get_array_size(ndr
, &r
->in
.dependencies
)));
2596 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_dependencies_0
, 0);
2598 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.dependencies_size
));
2599 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_service_start_name
));
2600 if (_ptr_service_start_name
) {
2601 NDR_PULL_ALLOC(ndr
, r
->in
.service_start_name
);
2603 r
->in
.service_start_name
= NULL
;
2605 if (r
->in
.service_start_name
) {
2606 _mem_save_service_start_name_0
= NDR_PULL_GET_MEM_CTX(ndr
);
2607 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.service_start_name
, 0);
2608 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->in
.service_start_name
));
2609 NDR_CHECK(ndr_pull_array_length(ndr
, &r
->in
.service_start_name
));
2610 if (ndr_get_array_length(ndr
, &r
->in
.service_start_name
) > ndr_get_array_size(ndr
, &r
->in
.service_start_name
)) {
2611 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
));
2613 NDR_CHECK(ndr_check_string_terminator(ndr
, ndr_get_array_length(ndr
, &r
->in
.service_start_name
), sizeof(uint16_t)));
2614 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
));
2615 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_service_start_name_0
, 0);
2617 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_password
));
2618 if (_ptr_password
) {
2619 NDR_PULL_ALLOC(ndr
, r
->in
.password
);
2621 r
->in
.password
= NULL
;
2623 if (r
->in
.password
) {
2624 _mem_save_password_0
= NDR_PULL_GET_MEM_CTX(ndr
);
2625 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.password
, 0);
2626 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->in
.password
));
2627 NDR_PULL_ALLOC_N(ndr
, r
->in
.password
, ndr_get_array_size(ndr
, &r
->in
.password
));
2628 NDR_CHECK(ndr_pull_array_uint8(ndr
, NDR_SCALARS
, r
->in
.password
, ndr_get_array_size(ndr
, &r
->in
.password
)));
2629 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_password_0
, 0);
2631 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.password_size
));
2632 NDR_PULL_ALLOC(ndr
, r
->out
.handle
);
2633 ZERO_STRUCTP(r
->out
.handle
);
2634 if (r
->in
.dependencies
) {
2635 NDR_CHECK(ndr_check_array_size(ndr
, (void*)&r
->in
.dependencies
, r
->in
.dependencies_size
));
2637 if (r
->in
.password
) {
2638 NDR_CHECK(ndr_check_array_size(ndr
, (void*)&r
->in
.password
, r
->in
.password_size
));
2641 if (flags
& NDR_OUT
) {
2642 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_TagId
));
2644 NDR_PULL_ALLOC(ndr
, r
->out
.TagId
);
2646 r
->out
.TagId
= NULL
;
2649 _mem_save_TagId_0
= NDR_PULL_GET_MEM_CTX(ndr
);
2650 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.TagId
, 0);
2651 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, r
->out
.TagId
));
2652 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_TagId_0
, 0);
2654 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
2655 NDR_PULL_ALLOC(ndr
, r
->out
.handle
);
2657 _mem_save_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
2658 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.handle
, LIBNDR_FLAG_REF_ALLOC
);
2659 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
, r
->out
.handle
));
2660 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_handle_0
, LIBNDR_FLAG_REF_ALLOC
);
2661 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
2663 return NDR_ERR_SUCCESS
;
2666 _PUBLIC_
void ndr_print_svcctl_CreateServiceW(struct ndr_print
*ndr
, const char *name
, int flags
, const struct svcctl_CreateServiceW
*r
)
2668 ndr_print_struct(ndr
, name
, "svcctl_CreateServiceW");
2670 if (flags
& NDR_SET_VALUES
) {
2671 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
2673 if (flags
& NDR_IN
) {
2674 ndr_print_struct(ndr
, "in", "svcctl_CreateServiceW");
2676 ndr_print_ptr(ndr
, "scmanager_handle", r
->in
.scmanager_handle
);
2678 ndr_print_policy_handle(ndr
, "scmanager_handle", r
->in
.scmanager_handle
);
2680 ndr_print_string(ndr
, "ServiceName", r
->in
.ServiceName
);
2681 ndr_print_ptr(ndr
, "DisplayName", r
->in
.DisplayName
);
2683 if (r
->in
.DisplayName
) {
2684 ndr_print_string(ndr
, "DisplayName", r
->in
.DisplayName
);
2687 ndr_print_uint32(ndr
, "desired_access", r
->in
.desired_access
);
2688 ndr_print_uint32(ndr
, "type", r
->in
.type
);
2689 ndr_print_svcctl_StartType(ndr
, "start_type", r
->in
.start_type
);
2690 ndr_print_svcctl_ErrorControl(ndr
, "error_control", r
->in
.error_control
);
2691 ndr_print_string(ndr
, "binary_path", r
->in
.binary_path
);
2692 ndr_print_ptr(ndr
, "LoadOrderGroupKey", r
->in
.LoadOrderGroupKey
);
2694 if (r
->in
.LoadOrderGroupKey
) {
2695 ndr_print_string(ndr
, "LoadOrderGroupKey", r
->in
.LoadOrderGroupKey
);
2698 ndr_print_ptr(ndr
, "TagId", r
->in
.TagId
);
2701 ndr_print_uint32(ndr
, "TagId", *r
->in
.TagId
);
2704 ndr_print_ptr(ndr
, "dependencies", r
->in
.dependencies
);
2706 if (r
->in
.dependencies
) {
2707 ndr_print_array_uint8(ndr
, "dependencies", r
->in
.dependencies
, r
->in
.dependencies_size
);
2710 ndr_print_uint32(ndr
, "dependencies_size", r
->in
.dependencies_size
);
2711 ndr_print_ptr(ndr
, "service_start_name", r
->in
.service_start_name
);
2713 if (r
->in
.service_start_name
) {
2714 ndr_print_string(ndr
, "service_start_name", r
->in
.service_start_name
);
2717 ndr_print_ptr(ndr
, "password", r
->in
.password
);
2719 if (r
->in
.password
) {
2720 ndr_print_array_uint8(ndr
, "password", r
->in
.password
, r
->in
.password_size
);
2723 ndr_print_uint32(ndr
, "password_size", r
->in
.password_size
);
2726 if (flags
& NDR_OUT
) {
2727 ndr_print_struct(ndr
, "out", "svcctl_CreateServiceW");
2729 ndr_print_ptr(ndr
, "TagId", r
->out
.TagId
);
2732 ndr_print_uint32(ndr
, "TagId", *r
->out
.TagId
);
2735 ndr_print_ptr(ndr
, "handle", r
->out
.handle
);
2737 ndr_print_policy_handle(ndr
, "handle", r
->out
.handle
);
2739 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
2745 static enum ndr_err_code
ndr_push_svcctl_EnumDependentServicesW(struct ndr_push
*ndr
, int flags
, const struct svcctl_EnumDependentServicesW
*r
)
2747 if (flags
& NDR_IN
) {
2748 if (r
->in
.service
== NULL
) {
2749 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
2751 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
, r
->in
.service
));
2752 NDR_CHECK(ndr_push_svcctl_ServiceState(ndr
, NDR_SCALARS
, r
->in
.state
));
2753 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.offered
));
2755 if (flags
& NDR_OUT
) {
2756 if (r
->out
.service_status
== NULL
) {
2757 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
2759 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, r
->in
.offered
));
2760 NDR_CHECK(ndr_push_array_uint8(ndr
, NDR_SCALARS
, r
->out
.service_status
, r
->in
.offered
));
2761 if (r
->out
.needed
== NULL
) {
2762 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
2764 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, *r
->out
.needed
));
2765 if (r
->out
.services_returned
== NULL
) {
2766 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
2768 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, *r
->out
.services_returned
));
2769 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
2771 return NDR_ERR_SUCCESS
;
2774 static enum ndr_err_code
ndr_pull_svcctl_EnumDependentServicesW(struct ndr_pull
*ndr
, int flags
, struct svcctl_EnumDependentServicesW
*r
)
2776 TALLOC_CTX
*_mem_save_service_0
;
2777 TALLOC_CTX
*_mem_save_needed_0
;
2778 TALLOC_CTX
*_mem_save_services_returned_0
;
2779 if (flags
& NDR_IN
) {
2780 ZERO_STRUCT(r
->out
);
2782 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
2783 NDR_PULL_ALLOC(ndr
, r
->in
.service
);
2785 _mem_save_service_0
= NDR_PULL_GET_MEM_CTX(ndr
);
2786 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.service
, LIBNDR_FLAG_REF_ALLOC
);
2787 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
, r
->in
.service
));
2788 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_service_0
, LIBNDR_FLAG_REF_ALLOC
);
2789 NDR_CHECK(ndr_pull_svcctl_ServiceState(ndr
, NDR_SCALARS
, &r
->in
.state
));
2790 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.offered
));
2791 if (r
->in
.offered
> 0x40000) {
2792 return ndr_pull_error(ndr
, NDR_ERR_RANGE
, "value out of range");
2794 NDR_PULL_ALLOC_N(ndr
, r
->out
.service_status
, r
->in
.offered
);
2795 memset(r
->out
.service_status
, 0, (r
->in
.offered
) * sizeof(*r
->out
.service_status
));
2796 NDR_PULL_ALLOC(ndr
, r
->out
.needed
);
2797 ZERO_STRUCTP(r
->out
.needed
);
2798 NDR_PULL_ALLOC(ndr
, r
->out
.services_returned
);
2799 ZERO_STRUCTP(r
->out
.services_returned
);
2801 if (flags
& NDR_OUT
) {
2802 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->out
.service_status
));
2803 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
2804 NDR_PULL_ALLOC_N(ndr
, r
->out
.service_status
, ndr_get_array_size(ndr
, &r
->out
.service_status
));
2806 NDR_CHECK(ndr_pull_array_uint8(ndr
, NDR_SCALARS
, r
->out
.service_status
, ndr_get_array_size(ndr
, &r
->out
.service_status
)));
2807 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
2808 NDR_PULL_ALLOC(ndr
, r
->out
.needed
);
2810 _mem_save_needed_0
= NDR_PULL_GET_MEM_CTX(ndr
);
2811 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.needed
, LIBNDR_FLAG_REF_ALLOC
);
2812 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, r
->out
.needed
));
2813 if (*r
->out
.needed
> 0x40000) {
2814 return ndr_pull_error(ndr
, NDR_ERR_RANGE
, "value out of range");
2816 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_needed_0
, LIBNDR_FLAG_REF_ALLOC
);
2817 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
2818 NDR_PULL_ALLOC(ndr
, r
->out
.services_returned
);
2820 _mem_save_services_returned_0
= NDR_PULL_GET_MEM_CTX(ndr
);
2821 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.services_returned
, LIBNDR_FLAG_REF_ALLOC
);
2822 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, r
->out
.services_returned
));
2823 if (*r
->out
.services_returned
> 0x40000) {
2824 return ndr_pull_error(ndr
, NDR_ERR_RANGE
, "value out of range");
2826 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_services_returned_0
, LIBNDR_FLAG_REF_ALLOC
);
2827 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
2828 if (r
->out
.service_status
) {
2829 NDR_CHECK(ndr_check_array_size(ndr
, (void*)&r
->out
.service_status
, r
->in
.offered
));
2832 return NDR_ERR_SUCCESS
;
2835 _PUBLIC_
void ndr_print_svcctl_EnumDependentServicesW(struct ndr_print
*ndr
, const char *name
, int flags
, const struct svcctl_EnumDependentServicesW
*r
)
2837 ndr_print_struct(ndr
, name
, "svcctl_EnumDependentServicesW");
2839 if (flags
& NDR_SET_VALUES
) {
2840 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
2842 if (flags
& NDR_IN
) {
2843 ndr_print_struct(ndr
, "in", "svcctl_EnumDependentServicesW");
2845 ndr_print_ptr(ndr
, "service", r
->in
.service
);
2847 ndr_print_policy_handle(ndr
, "service", r
->in
.service
);
2849 ndr_print_svcctl_ServiceState(ndr
, "state", r
->in
.state
);
2850 ndr_print_uint32(ndr
, "offered", r
->in
.offered
);
2853 if (flags
& NDR_OUT
) {
2854 ndr_print_struct(ndr
, "out", "svcctl_EnumDependentServicesW");
2856 ndr_print_ptr(ndr
, "service_status", r
->out
.service_status
);
2858 ndr_print_array_uint8(ndr
, "service_status", r
->out
.service_status
, r
->in
.offered
);
2860 ndr_print_ptr(ndr
, "needed", r
->out
.needed
);
2862 ndr_print_uint32(ndr
, "needed", *r
->out
.needed
);
2864 ndr_print_ptr(ndr
, "services_returned", r
->out
.services_returned
);
2866 ndr_print_uint32(ndr
, "services_returned", *r
->out
.services_returned
);
2868 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
2874 static enum ndr_err_code
ndr_push_svcctl_EnumServicesStatusW(struct ndr_push
*ndr
, int flags
, const struct svcctl_EnumServicesStatusW
*r
)
2876 if (flags
& NDR_IN
) {
2877 if (r
->in
.handle
== NULL
) {
2878 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
2880 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
, r
->in
.handle
));
2881 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.type
));
2882 NDR_CHECK(ndr_push_svcctl_ServiceState(ndr
, NDR_SCALARS
, r
->in
.state
));
2883 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.offered
));
2884 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.resume_handle
));
2885 if (r
->in
.resume_handle
) {
2886 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, *r
->in
.resume_handle
));
2889 if (flags
& NDR_OUT
) {
2890 if (r
->out
.service
== NULL
) {
2891 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
2893 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, r
->in
.offered
));
2894 NDR_CHECK(ndr_push_array_uint8(ndr
, NDR_SCALARS
, r
->out
.service
, r
->in
.offered
));
2895 if (r
->out
.needed
== NULL
) {
2896 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
2898 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, *r
->out
.needed
));
2899 if (r
->out
.services_returned
== NULL
) {
2900 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
2902 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, *r
->out
.services_returned
));
2903 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->out
.resume_handle
));
2904 if (r
->out
.resume_handle
) {
2905 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, *r
->out
.resume_handle
));
2907 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
2909 return NDR_ERR_SUCCESS
;
2912 static enum ndr_err_code
ndr_pull_svcctl_EnumServicesStatusW(struct ndr_pull
*ndr
, int flags
, struct svcctl_EnumServicesStatusW
*r
)
2914 uint32_t _ptr_resume_handle
;
2915 TALLOC_CTX
*_mem_save_handle_0
;
2916 TALLOC_CTX
*_mem_save_needed_0
;
2917 TALLOC_CTX
*_mem_save_services_returned_0
;
2918 TALLOC_CTX
*_mem_save_resume_handle_0
;
2919 if (flags
& NDR_IN
) {
2920 ZERO_STRUCT(r
->out
);
2922 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
2923 NDR_PULL_ALLOC(ndr
, r
->in
.handle
);
2925 _mem_save_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
2926 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.handle
, LIBNDR_FLAG_REF_ALLOC
);
2927 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
, r
->in
.handle
));
2928 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_handle_0
, LIBNDR_FLAG_REF_ALLOC
);
2929 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.type
));
2930 NDR_CHECK(ndr_pull_svcctl_ServiceState(ndr
, NDR_SCALARS
, &r
->in
.state
));
2931 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.offered
));
2932 if (r
->in
.offered
> 0x40000) {
2933 return ndr_pull_error(ndr
, NDR_ERR_RANGE
, "value out of range");
2935 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_resume_handle
));
2936 if (_ptr_resume_handle
) {
2937 NDR_PULL_ALLOC(ndr
, r
->in
.resume_handle
);
2939 r
->in
.resume_handle
= NULL
;
2941 if (r
->in
.resume_handle
) {
2942 _mem_save_resume_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
2943 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.resume_handle
, 0);
2944 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, r
->in
.resume_handle
));
2945 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_resume_handle_0
, 0);
2947 NDR_PULL_ALLOC_N(ndr
, r
->out
.service
, r
->in
.offered
);
2948 memset(r
->out
.service
, 0, (r
->in
.offered
) * sizeof(*r
->out
.service
));
2949 NDR_PULL_ALLOC(ndr
, r
->out
.needed
);
2950 ZERO_STRUCTP(r
->out
.needed
);
2951 NDR_PULL_ALLOC(ndr
, r
->out
.services_returned
);
2952 ZERO_STRUCTP(r
->out
.services_returned
);
2954 if (flags
& NDR_OUT
) {
2955 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->out
.service
));
2956 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
2957 NDR_PULL_ALLOC_N(ndr
, r
->out
.service
, ndr_get_array_size(ndr
, &r
->out
.service
));
2959 NDR_CHECK(ndr_pull_array_uint8(ndr
, NDR_SCALARS
, r
->out
.service
, ndr_get_array_size(ndr
, &r
->out
.service
)));
2960 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
2961 NDR_PULL_ALLOC(ndr
, r
->out
.needed
);
2963 _mem_save_needed_0
= NDR_PULL_GET_MEM_CTX(ndr
);
2964 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.needed
, LIBNDR_FLAG_REF_ALLOC
);
2965 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, r
->out
.needed
));
2966 if (*r
->out
.needed
> 0x40000) {
2967 return ndr_pull_error(ndr
, NDR_ERR_RANGE
, "value out of range");
2969 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_needed_0
, LIBNDR_FLAG_REF_ALLOC
);
2970 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
2971 NDR_PULL_ALLOC(ndr
, r
->out
.services_returned
);
2973 _mem_save_services_returned_0
= NDR_PULL_GET_MEM_CTX(ndr
);
2974 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.services_returned
, LIBNDR_FLAG_REF_ALLOC
);
2975 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, r
->out
.services_returned
));
2976 if (*r
->out
.services_returned
> 0x40000) {
2977 return ndr_pull_error(ndr
, NDR_ERR_RANGE
, "value out of range");
2979 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_services_returned_0
, LIBNDR_FLAG_REF_ALLOC
);
2980 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_resume_handle
));
2981 if (_ptr_resume_handle
) {
2982 NDR_PULL_ALLOC(ndr
, r
->out
.resume_handle
);
2984 r
->out
.resume_handle
= NULL
;
2986 if (r
->out
.resume_handle
) {
2987 _mem_save_resume_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
2988 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.resume_handle
, 0);
2989 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, r
->out
.resume_handle
));
2990 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_resume_handle_0
, 0);
2992 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
2993 if (r
->out
.service
) {
2994 NDR_CHECK(ndr_check_array_size(ndr
, (void*)&r
->out
.service
, r
->in
.offered
));
2997 return NDR_ERR_SUCCESS
;
3000 _PUBLIC_
void ndr_print_svcctl_EnumServicesStatusW(struct ndr_print
*ndr
, const char *name
, int flags
, const struct svcctl_EnumServicesStatusW
*r
)
3002 ndr_print_struct(ndr
, name
, "svcctl_EnumServicesStatusW");
3004 if (flags
& NDR_SET_VALUES
) {
3005 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
3007 if (flags
& NDR_IN
) {
3008 ndr_print_struct(ndr
, "in", "svcctl_EnumServicesStatusW");
3010 ndr_print_ptr(ndr
, "handle", r
->in
.handle
);
3012 ndr_print_policy_handle(ndr
, "handle", r
->in
.handle
);
3014 ndr_print_uint32(ndr
, "type", r
->in
.type
);
3015 ndr_print_svcctl_ServiceState(ndr
, "state", r
->in
.state
);
3016 ndr_print_uint32(ndr
, "offered", r
->in
.offered
);
3017 ndr_print_ptr(ndr
, "resume_handle", r
->in
.resume_handle
);
3019 if (r
->in
.resume_handle
) {
3020 ndr_print_uint32(ndr
, "resume_handle", *r
->in
.resume_handle
);
3025 if (flags
& NDR_OUT
) {
3026 ndr_print_struct(ndr
, "out", "svcctl_EnumServicesStatusW");
3028 ndr_print_ptr(ndr
, "service", r
->out
.service
);
3030 ndr_print_array_uint8(ndr
, "service", r
->out
.service
, r
->in
.offered
);
3032 ndr_print_ptr(ndr
, "needed", r
->out
.needed
);
3034 ndr_print_uint32(ndr
, "needed", *r
->out
.needed
);
3036 ndr_print_ptr(ndr
, "services_returned", r
->out
.services_returned
);
3038 ndr_print_uint32(ndr
, "services_returned", *r
->out
.services_returned
);
3040 ndr_print_ptr(ndr
, "resume_handle", r
->out
.resume_handle
);
3042 if (r
->out
.resume_handle
) {
3043 ndr_print_uint32(ndr
, "resume_handle", *r
->out
.resume_handle
);
3046 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
3052 static enum ndr_err_code
ndr_push_svcctl_OpenSCManagerW(struct ndr_push
*ndr
, int flags
, const struct svcctl_OpenSCManagerW
*r
)
3054 if (flags
& NDR_IN
) {
3055 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.MachineName
));
3056 if (r
->in
.MachineName
) {
3057 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.MachineName
, CH_UTF16
)));
3058 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, 0));
3059 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.MachineName
, CH_UTF16
)));
3060 NDR_CHECK(ndr_push_charset(ndr
, NDR_SCALARS
, r
->in
.MachineName
, ndr_charset_length(r
->in
.MachineName
, CH_UTF16
), sizeof(uint16_t), CH_UTF16
));
3062 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.DatabaseName
));
3063 if (r
->in
.DatabaseName
) {
3064 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.DatabaseName
, CH_UTF16
)));
3065 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, 0));
3066 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.DatabaseName
, CH_UTF16
)));
3067 NDR_CHECK(ndr_push_charset(ndr
, NDR_SCALARS
, r
->in
.DatabaseName
, ndr_charset_length(r
->in
.DatabaseName
, CH_UTF16
), sizeof(uint16_t), CH_UTF16
));
3069 NDR_CHECK(ndr_push_svcctl_MgrAccessMask(ndr
, NDR_SCALARS
, r
->in
.access_mask
));
3071 if (flags
& NDR_OUT
) {
3072 if (r
->out
.handle
== NULL
) {
3073 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
3075 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
, r
->out
.handle
));
3076 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
3078 return NDR_ERR_SUCCESS
;
3081 static enum ndr_err_code
ndr_pull_svcctl_OpenSCManagerW(struct ndr_pull
*ndr
, int flags
, struct svcctl_OpenSCManagerW
*r
)
3083 uint32_t _ptr_MachineName
;
3084 uint32_t _ptr_DatabaseName
;
3085 TALLOC_CTX
*_mem_save_MachineName_0
;
3086 TALLOC_CTX
*_mem_save_DatabaseName_0
;
3087 TALLOC_CTX
*_mem_save_handle_0
;
3088 if (flags
& NDR_IN
) {
3089 ZERO_STRUCT(r
->out
);
3091 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_MachineName
));
3092 if (_ptr_MachineName
) {
3093 NDR_PULL_ALLOC(ndr
, r
->in
.MachineName
);
3095 r
->in
.MachineName
= NULL
;
3097 if (r
->in
.MachineName
) {
3098 _mem_save_MachineName_0
= NDR_PULL_GET_MEM_CTX(ndr
);
3099 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.MachineName
, 0);
3100 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->in
.MachineName
));
3101 NDR_CHECK(ndr_pull_array_length(ndr
, &r
->in
.MachineName
));
3102 if (ndr_get_array_length(ndr
, &r
->in
.MachineName
) > ndr_get_array_size(ndr
, &r
->in
.MachineName
)) {
3103 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
));
3105 NDR_CHECK(ndr_check_string_terminator(ndr
, ndr_get_array_length(ndr
, &r
->in
.MachineName
), sizeof(uint16_t)));
3106 NDR_CHECK(ndr_pull_charset(ndr
, NDR_SCALARS
, &r
->in
.MachineName
, ndr_get_array_length(ndr
, &r
->in
.MachineName
), sizeof(uint16_t), CH_UTF16
));
3107 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_MachineName_0
, 0);
3109 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_DatabaseName
));
3110 if (_ptr_DatabaseName
) {
3111 NDR_PULL_ALLOC(ndr
, r
->in
.DatabaseName
);
3113 r
->in
.DatabaseName
= NULL
;
3115 if (r
->in
.DatabaseName
) {
3116 _mem_save_DatabaseName_0
= NDR_PULL_GET_MEM_CTX(ndr
);
3117 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.DatabaseName
, 0);
3118 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->in
.DatabaseName
));
3119 NDR_CHECK(ndr_pull_array_length(ndr
, &r
->in
.DatabaseName
));
3120 if (ndr_get_array_length(ndr
, &r
->in
.DatabaseName
) > ndr_get_array_size(ndr
, &r
->in
.DatabaseName
)) {
3121 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
));
3123 NDR_CHECK(ndr_check_string_terminator(ndr
, ndr_get_array_length(ndr
, &r
->in
.DatabaseName
), sizeof(uint16_t)));
3124 NDR_CHECK(ndr_pull_charset(ndr
, NDR_SCALARS
, &r
->in
.DatabaseName
, ndr_get_array_length(ndr
, &r
->in
.DatabaseName
), sizeof(uint16_t), CH_UTF16
));
3125 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_DatabaseName_0
, 0);
3127 NDR_CHECK(ndr_pull_svcctl_MgrAccessMask(ndr
, NDR_SCALARS
, &r
->in
.access_mask
));
3128 NDR_PULL_ALLOC(ndr
, r
->out
.handle
);
3129 ZERO_STRUCTP(r
->out
.handle
);
3131 if (flags
& NDR_OUT
) {
3132 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
3133 NDR_PULL_ALLOC(ndr
, r
->out
.handle
);
3135 _mem_save_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
3136 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.handle
, LIBNDR_FLAG_REF_ALLOC
);
3137 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
, r
->out
.handle
));
3138 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_handle_0
, LIBNDR_FLAG_REF_ALLOC
);
3139 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
3141 return NDR_ERR_SUCCESS
;
3144 _PUBLIC_
void ndr_print_svcctl_OpenSCManagerW(struct ndr_print
*ndr
, const char *name
, int flags
, const struct svcctl_OpenSCManagerW
*r
)
3146 ndr_print_struct(ndr
, name
, "svcctl_OpenSCManagerW");
3148 if (flags
& NDR_SET_VALUES
) {
3149 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
3151 if (flags
& NDR_IN
) {
3152 ndr_print_struct(ndr
, "in", "svcctl_OpenSCManagerW");
3154 ndr_print_ptr(ndr
, "MachineName", r
->in
.MachineName
);
3156 if (r
->in
.MachineName
) {
3157 ndr_print_string(ndr
, "MachineName", r
->in
.MachineName
);
3160 ndr_print_ptr(ndr
, "DatabaseName", r
->in
.DatabaseName
);
3162 if (r
->in
.DatabaseName
) {
3163 ndr_print_string(ndr
, "DatabaseName", r
->in
.DatabaseName
);
3166 ndr_print_svcctl_MgrAccessMask(ndr
, "access_mask", r
->in
.access_mask
);
3169 if (flags
& NDR_OUT
) {
3170 ndr_print_struct(ndr
, "out", "svcctl_OpenSCManagerW");
3172 ndr_print_ptr(ndr
, "handle", r
->out
.handle
);
3174 ndr_print_policy_handle(ndr
, "handle", r
->out
.handle
);
3176 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
3182 static enum ndr_err_code
ndr_push_svcctl_OpenServiceW(struct ndr_push
*ndr
, int flags
, const struct svcctl_OpenServiceW
*r
)
3184 if (flags
& NDR_IN
) {
3185 if (r
->in
.scmanager_handle
== NULL
) {
3186 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
3188 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
, r
->in
.scmanager_handle
));
3189 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.ServiceName
, CH_UTF16
)));
3190 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, 0));
3191 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.ServiceName
, CH_UTF16
)));
3192 NDR_CHECK(ndr_push_charset(ndr
, NDR_SCALARS
, r
->in
.ServiceName
, ndr_charset_length(r
->in
.ServiceName
, CH_UTF16
), sizeof(uint16_t), CH_UTF16
));
3193 NDR_CHECK(ndr_push_svcctl_ServiceAccessMask(ndr
, NDR_SCALARS
, r
->in
.access_mask
));
3195 if (flags
& NDR_OUT
) {
3196 if (r
->out
.handle
== NULL
) {
3197 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
3199 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
, r
->out
.handle
));
3200 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
3202 return NDR_ERR_SUCCESS
;
3205 static enum ndr_err_code
ndr_pull_svcctl_OpenServiceW(struct ndr_pull
*ndr
, int flags
, struct svcctl_OpenServiceW
*r
)
3207 TALLOC_CTX
*_mem_save_scmanager_handle_0
;
3208 TALLOC_CTX
*_mem_save_handle_0
;
3209 if (flags
& NDR_IN
) {
3210 ZERO_STRUCT(r
->out
);
3212 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
3213 NDR_PULL_ALLOC(ndr
, r
->in
.scmanager_handle
);
3215 _mem_save_scmanager_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
3216 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.scmanager_handle
, LIBNDR_FLAG_REF_ALLOC
);
3217 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
, r
->in
.scmanager_handle
));
3218 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_scmanager_handle_0
, LIBNDR_FLAG_REF_ALLOC
);
3219 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->in
.ServiceName
));
3220 NDR_CHECK(ndr_pull_array_length(ndr
, &r
->in
.ServiceName
));
3221 if (ndr_get_array_length(ndr
, &r
->in
.ServiceName
) > ndr_get_array_size(ndr
, &r
->in
.ServiceName
)) {
3222 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
));
3224 NDR_CHECK(ndr_check_string_terminator(ndr
, ndr_get_array_length(ndr
, &r
->in
.ServiceName
), sizeof(uint16_t)));
3225 NDR_CHECK(ndr_pull_charset(ndr
, NDR_SCALARS
, &r
->in
.ServiceName
, ndr_get_array_length(ndr
, &r
->in
.ServiceName
), sizeof(uint16_t), CH_UTF16
));
3226 NDR_CHECK(ndr_pull_svcctl_ServiceAccessMask(ndr
, NDR_SCALARS
, &r
->in
.access_mask
));
3227 NDR_PULL_ALLOC(ndr
, r
->out
.handle
);
3228 ZERO_STRUCTP(r
->out
.handle
);
3230 if (flags
& NDR_OUT
) {
3231 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
3232 NDR_PULL_ALLOC(ndr
, r
->out
.handle
);
3234 _mem_save_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
3235 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.handle
, LIBNDR_FLAG_REF_ALLOC
);
3236 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
, r
->out
.handle
));
3237 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_handle_0
, LIBNDR_FLAG_REF_ALLOC
);
3238 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
3240 return NDR_ERR_SUCCESS
;
3243 _PUBLIC_
void ndr_print_svcctl_OpenServiceW(struct ndr_print
*ndr
, const char *name
, int flags
, const struct svcctl_OpenServiceW
*r
)
3245 ndr_print_struct(ndr
, name
, "svcctl_OpenServiceW");
3247 if (flags
& NDR_SET_VALUES
) {
3248 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
3250 if (flags
& NDR_IN
) {
3251 ndr_print_struct(ndr
, "in", "svcctl_OpenServiceW");
3253 ndr_print_ptr(ndr
, "scmanager_handle", r
->in
.scmanager_handle
);
3255 ndr_print_policy_handle(ndr
, "scmanager_handle", r
->in
.scmanager_handle
);
3257 ndr_print_string(ndr
, "ServiceName", r
->in
.ServiceName
);
3258 ndr_print_svcctl_ServiceAccessMask(ndr
, "access_mask", r
->in
.access_mask
);
3261 if (flags
& NDR_OUT
) {
3262 ndr_print_struct(ndr
, "out", "svcctl_OpenServiceW");
3264 ndr_print_ptr(ndr
, "handle", r
->out
.handle
);
3266 ndr_print_policy_handle(ndr
, "handle", r
->out
.handle
);
3268 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
3274 static enum ndr_err_code
ndr_push_svcctl_QueryServiceConfigW(struct ndr_push
*ndr
, int flags
, const struct svcctl_QueryServiceConfigW
*r
)
3276 if (flags
& NDR_IN
) {
3277 if (r
->in
.handle
== NULL
) {
3278 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
3280 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
, r
->in
.handle
));
3281 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.offered
));
3283 if (flags
& NDR_OUT
) {
3284 if (r
->out
.query
== NULL
) {
3285 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
3287 NDR_CHECK(ndr_push_QUERY_SERVICE_CONFIG(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->out
.query
));
3288 if (r
->out
.needed
== NULL
) {
3289 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
3291 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, *r
->out
.needed
));
3292 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
3294 return NDR_ERR_SUCCESS
;
3297 static enum ndr_err_code
ndr_pull_svcctl_QueryServiceConfigW(struct ndr_pull
*ndr
, int flags
, struct svcctl_QueryServiceConfigW
*r
)
3299 TALLOC_CTX
*_mem_save_handle_0
;
3300 TALLOC_CTX
*_mem_save_query_0
;
3301 TALLOC_CTX
*_mem_save_needed_0
;
3302 if (flags
& NDR_IN
) {
3303 ZERO_STRUCT(r
->out
);
3305 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
3306 NDR_PULL_ALLOC(ndr
, r
->in
.handle
);
3308 _mem_save_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
3309 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.handle
, LIBNDR_FLAG_REF_ALLOC
);
3310 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
, r
->in
.handle
));
3311 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_handle_0
, LIBNDR_FLAG_REF_ALLOC
);
3312 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.offered
));
3313 if (r
->in
.offered
> 8192) {
3314 return ndr_pull_error(ndr
, NDR_ERR_RANGE
, "value out of range");
3316 NDR_PULL_ALLOC(ndr
, r
->out
.query
);
3317 ZERO_STRUCTP(r
->out
.query
);
3318 NDR_PULL_ALLOC(ndr
, r
->out
.needed
);
3319 ZERO_STRUCTP(r
->out
.needed
);
3321 if (flags
& NDR_OUT
) {
3322 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
3323 NDR_PULL_ALLOC(ndr
, r
->out
.query
);
3325 _mem_save_query_0
= NDR_PULL_GET_MEM_CTX(ndr
);
3326 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.query
, LIBNDR_FLAG_REF_ALLOC
);
3327 NDR_CHECK(ndr_pull_QUERY_SERVICE_CONFIG(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->out
.query
));
3328 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_query_0
, LIBNDR_FLAG_REF_ALLOC
);
3329 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
3330 NDR_PULL_ALLOC(ndr
, r
->out
.needed
);
3332 _mem_save_needed_0
= NDR_PULL_GET_MEM_CTX(ndr
);
3333 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.needed
, LIBNDR_FLAG_REF_ALLOC
);
3334 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, r
->out
.needed
));
3335 if (*r
->out
.needed
> 8192) {
3336 return ndr_pull_error(ndr
, NDR_ERR_RANGE
, "value out of range");
3338 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_needed_0
, LIBNDR_FLAG_REF_ALLOC
);
3339 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
3341 return NDR_ERR_SUCCESS
;
3344 _PUBLIC_
void ndr_print_svcctl_QueryServiceConfigW(struct ndr_print
*ndr
, const char *name
, int flags
, const struct svcctl_QueryServiceConfigW
*r
)
3346 ndr_print_struct(ndr
, name
, "svcctl_QueryServiceConfigW");
3348 if (flags
& NDR_SET_VALUES
) {
3349 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
3351 if (flags
& NDR_IN
) {
3352 ndr_print_struct(ndr
, "in", "svcctl_QueryServiceConfigW");
3354 ndr_print_ptr(ndr
, "handle", r
->in
.handle
);
3356 ndr_print_policy_handle(ndr
, "handle", r
->in
.handle
);
3358 ndr_print_uint32(ndr
, "offered", r
->in
.offered
);
3361 if (flags
& NDR_OUT
) {
3362 ndr_print_struct(ndr
, "out", "svcctl_QueryServiceConfigW");
3364 ndr_print_ptr(ndr
, "query", r
->out
.query
);
3366 ndr_print_QUERY_SERVICE_CONFIG(ndr
, "query", r
->out
.query
);
3368 ndr_print_ptr(ndr
, "needed", r
->out
.needed
);
3370 ndr_print_uint32(ndr
, "needed", *r
->out
.needed
);
3372 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
3378 static enum ndr_err_code
ndr_push_svcctl_QueryServiceLockStatusW(struct ndr_push
*ndr
, int flags
, const struct svcctl_QueryServiceLockStatusW
*r
)
3380 if (flags
& NDR_IN
) {
3381 if (r
->in
.handle
== NULL
) {
3382 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
3384 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
, r
->in
.handle
));
3385 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.offered
));
3387 if (flags
& NDR_OUT
) {
3388 if (r
->out
.lock_status
== NULL
) {
3389 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
3391 NDR_CHECK(ndr_push_SERVICE_LOCK_STATUS(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->out
.lock_status
));
3392 if (r
->out
.needed
== NULL
) {
3393 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
3395 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, *r
->out
.needed
));
3396 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
3398 return NDR_ERR_SUCCESS
;
3401 static enum ndr_err_code
ndr_pull_svcctl_QueryServiceLockStatusW(struct ndr_pull
*ndr
, int flags
, struct svcctl_QueryServiceLockStatusW
*r
)
3403 TALLOC_CTX
*_mem_save_handle_0
;
3404 TALLOC_CTX
*_mem_save_lock_status_0
;
3405 TALLOC_CTX
*_mem_save_needed_0
;
3406 if (flags
& NDR_IN
) {
3407 ZERO_STRUCT(r
->out
);
3409 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
3410 NDR_PULL_ALLOC(ndr
, r
->in
.handle
);
3412 _mem_save_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
3413 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.handle
, LIBNDR_FLAG_REF_ALLOC
);
3414 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
, r
->in
.handle
));
3415 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_handle_0
, LIBNDR_FLAG_REF_ALLOC
);
3416 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.offered
));
3417 NDR_PULL_ALLOC(ndr
, r
->out
.lock_status
);
3418 ZERO_STRUCTP(r
->out
.lock_status
);
3419 NDR_PULL_ALLOC(ndr
, r
->out
.needed
);
3420 ZERO_STRUCTP(r
->out
.needed
);
3422 if (flags
& NDR_OUT
) {
3423 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
3424 NDR_PULL_ALLOC(ndr
, r
->out
.lock_status
);
3426 _mem_save_lock_status_0
= NDR_PULL_GET_MEM_CTX(ndr
);
3427 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.lock_status
, LIBNDR_FLAG_REF_ALLOC
);
3428 NDR_CHECK(ndr_pull_SERVICE_LOCK_STATUS(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->out
.lock_status
));
3429 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_lock_status_0
, LIBNDR_FLAG_REF_ALLOC
);
3430 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
3431 NDR_PULL_ALLOC(ndr
, r
->out
.needed
);
3433 _mem_save_needed_0
= NDR_PULL_GET_MEM_CTX(ndr
);
3434 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.needed
, LIBNDR_FLAG_REF_ALLOC
);
3435 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, r
->out
.needed
));
3436 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_needed_0
, LIBNDR_FLAG_REF_ALLOC
);
3437 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
3439 return NDR_ERR_SUCCESS
;
3442 _PUBLIC_
void ndr_print_svcctl_QueryServiceLockStatusW(struct ndr_print
*ndr
, const char *name
, int flags
, const struct svcctl_QueryServiceLockStatusW
*r
)
3444 ndr_print_struct(ndr
, name
, "svcctl_QueryServiceLockStatusW");
3446 if (flags
& NDR_SET_VALUES
) {
3447 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
3449 if (flags
& NDR_IN
) {
3450 ndr_print_struct(ndr
, "in", "svcctl_QueryServiceLockStatusW");
3452 ndr_print_ptr(ndr
, "handle", r
->in
.handle
);
3454 ndr_print_policy_handle(ndr
, "handle", r
->in
.handle
);
3456 ndr_print_uint32(ndr
, "offered", r
->in
.offered
);
3459 if (flags
& NDR_OUT
) {
3460 ndr_print_struct(ndr
, "out", "svcctl_QueryServiceLockStatusW");
3462 ndr_print_ptr(ndr
, "lock_status", r
->out
.lock_status
);
3464 ndr_print_SERVICE_LOCK_STATUS(ndr
, "lock_status", r
->out
.lock_status
);
3466 ndr_print_ptr(ndr
, "needed", r
->out
.needed
);
3468 ndr_print_uint32(ndr
, "needed", *r
->out
.needed
);
3470 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
3476 static enum ndr_err_code
ndr_push_svcctl_StartServiceW(struct ndr_push
*ndr
, int flags
, const struct svcctl_StartServiceW
*r
)
3478 uint32_t cntr_Arguments_1
;
3479 if (flags
& NDR_IN
) {
3480 if (r
->in
.handle
== NULL
) {
3481 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
3483 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
, r
->in
.handle
));
3484 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.NumArgs
));
3485 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.Arguments
));
3486 if (r
->in
.Arguments
) {
3487 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, r
->in
.NumArgs
));
3488 for (cntr_Arguments_1
= 0; cntr_Arguments_1
< r
->in
.NumArgs
; cntr_Arguments_1
++) {
3489 NDR_CHECK(ndr_push_svcctl_ArgumentString(ndr
, NDR_SCALARS
, &r
->in
.Arguments
[cntr_Arguments_1
]));
3491 for (cntr_Arguments_1
= 0; cntr_Arguments_1
< r
->in
.NumArgs
; cntr_Arguments_1
++) {
3492 NDR_CHECK(ndr_push_svcctl_ArgumentString(ndr
, NDR_BUFFERS
, &r
->in
.Arguments
[cntr_Arguments_1
]));
3496 if (flags
& NDR_OUT
) {
3497 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
3499 return NDR_ERR_SUCCESS
;
3502 static enum ndr_err_code
ndr_pull_svcctl_StartServiceW(struct ndr_pull
*ndr
, int flags
, struct svcctl_StartServiceW
*r
)
3504 uint32_t _ptr_Arguments
;
3505 uint32_t cntr_Arguments_1
;
3506 TALLOC_CTX
*_mem_save_handle_0
;
3507 TALLOC_CTX
*_mem_save_Arguments_0
;
3508 TALLOC_CTX
*_mem_save_Arguments_1
;
3509 if (flags
& NDR_IN
) {
3510 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
3511 NDR_PULL_ALLOC(ndr
, r
->in
.handle
);
3513 _mem_save_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
3514 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.handle
, LIBNDR_FLAG_REF_ALLOC
);
3515 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
, r
->in
.handle
));
3516 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_handle_0
, LIBNDR_FLAG_REF_ALLOC
);
3517 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.NumArgs
));
3518 if (r
->in
.NumArgs
> SC_MAX_ARGUMENTS
) {
3519 return ndr_pull_error(ndr
, NDR_ERR_RANGE
, "value out of range");
3521 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_Arguments
));
3522 if (_ptr_Arguments
) {
3523 NDR_PULL_ALLOC(ndr
, r
->in
.Arguments
);
3525 r
->in
.Arguments
= NULL
;
3527 if (r
->in
.Arguments
) {
3528 _mem_save_Arguments_0
= NDR_PULL_GET_MEM_CTX(ndr
);
3529 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.Arguments
, 0);
3530 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->in
.Arguments
));
3531 NDR_PULL_ALLOC_N(ndr
, r
->in
.Arguments
, ndr_get_array_size(ndr
, &r
->in
.Arguments
));
3532 _mem_save_Arguments_1
= NDR_PULL_GET_MEM_CTX(ndr
);
3533 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.Arguments
, 0);
3534 for (cntr_Arguments_1
= 0; cntr_Arguments_1
< r
->in
.NumArgs
; cntr_Arguments_1
++) {
3535 NDR_CHECK(ndr_pull_svcctl_ArgumentString(ndr
, NDR_SCALARS
, &r
->in
.Arguments
[cntr_Arguments_1
]));
3537 for (cntr_Arguments_1
= 0; cntr_Arguments_1
< r
->in
.NumArgs
; cntr_Arguments_1
++) {
3538 NDR_CHECK(ndr_pull_svcctl_ArgumentString(ndr
, NDR_BUFFERS
, &r
->in
.Arguments
[cntr_Arguments_1
]));
3540 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_Arguments_1
, 0);
3541 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_Arguments_0
, 0);
3543 if (r
->in
.Arguments
) {
3544 NDR_CHECK(ndr_check_array_size(ndr
, (void*)&r
->in
.Arguments
, r
->in
.NumArgs
));
3547 if (flags
& NDR_OUT
) {
3548 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
3550 return NDR_ERR_SUCCESS
;
3553 _PUBLIC_
void ndr_print_svcctl_StartServiceW(struct ndr_print
*ndr
, const char *name
, int flags
, const struct svcctl_StartServiceW
*r
)
3555 uint32_t cntr_Arguments_1
;
3556 ndr_print_struct(ndr
, name
, "svcctl_StartServiceW");
3558 if (flags
& NDR_SET_VALUES
) {
3559 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
3561 if (flags
& NDR_IN
) {
3562 ndr_print_struct(ndr
, "in", "svcctl_StartServiceW");
3564 ndr_print_ptr(ndr
, "handle", r
->in
.handle
);
3566 ndr_print_policy_handle(ndr
, "handle", r
->in
.handle
);
3568 ndr_print_uint32(ndr
, "NumArgs", r
->in
.NumArgs
);
3569 ndr_print_ptr(ndr
, "Arguments", r
->in
.Arguments
);
3571 if (r
->in
.Arguments
) {
3572 ndr
->print(ndr
, "%s: ARRAY(%d)", "Arguments", (int)r
->in
.NumArgs
);
3574 for (cntr_Arguments_1
=0;cntr_Arguments_1
<r
->in
.NumArgs
;cntr_Arguments_1
++) {
3576 if (asprintf(&idx_1
, "[%d]", cntr_Arguments_1
) != -1) {
3577 ndr_print_svcctl_ArgumentString(ndr
, "Arguments", &r
->in
.Arguments
[cntr_Arguments_1
]);
3586 if (flags
& NDR_OUT
) {
3587 ndr_print_struct(ndr
, "out", "svcctl_StartServiceW");
3589 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
3595 static enum ndr_err_code
ndr_push_svcctl_GetServiceDisplayNameW(struct ndr_push
*ndr
, int flags
, const struct svcctl_GetServiceDisplayNameW
*r
)
3597 if (flags
& NDR_IN
) {
3598 if (r
->in
.handle
== NULL
) {
3599 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
3601 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
, r
->in
.handle
));
3602 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.service_name
));
3603 if (r
->in
.service_name
) {
3604 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.service_name
, CH_UTF16
)));
3605 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, 0));
3606 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.service_name
, CH_UTF16
)));
3607 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
));
3609 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.display_name_length
));
3610 if (r
->in
.display_name_length
) {
3611 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, *r
->in
.display_name_length
));
3614 if (flags
& NDR_OUT
) {
3615 if (r
->out
.display_name
== NULL
) {
3616 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
3618 NDR_CHECK(ndr_push_unique_ptr(ndr
, *r
->out
.display_name
));
3619 if (*r
->out
.display_name
) {
3620 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, ndr_charset_length(*r
->out
.display_name
, CH_UTF16
)));
3621 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, 0));
3622 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, ndr_charset_length(*r
->out
.display_name
, CH_UTF16
)));
3623 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
));
3625 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->out
.display_name_length
));
3626 if (r
->out
.display_name_length
) {
3627 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, *r
->out
.display_name_length
));
3629 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
3631 return NDR_ERR_SUCCESS
;
3634 static enum ndr_err_code
ndr_pull_svcctl_GetServiceDisplayNameW(struct ndr_pull
*ndr
, int flags
, struct svcctl_GetServiceDisplayNameW
*r
)
3636 uint32_t _ptr_service_name
;
3637 uint32_t _ptr_display_name
;
3638 uint32_t _ptr_display_name_length
;
3639 TALLOC_CTX
*_mem_save_handle_0
;
3640 TALLOC_CTX
*_mem_save_service_name_0
;
3641 TALLOC_CTX
*_mem_save_display_name_0
;
3642 TALLOC_CTX
*_mem_save_display_name_1
;
3643 TALLOC_CTX
*_mem_save_display_name_length_0
;
3644 if (flags
& NDR_IN
) {
3645 ZERO_STRUCT(r
->out
);
3647 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
3648 NDR_PULL_ALLOC(ndr
, r
->in
.handle
);
3650 _mem_save_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
3651 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.handle
, LIBNDR_FLAG_REF_ALLOC
);
3652 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
, r
->in
.handle
));
3653 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_handle_0
, LIBNDR_FLAG_REF_ALLOC
);
3654 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_service_name
));
3655 if (_ptr_service_name
) {
3656 NDR_PULL_ALLOC(ndr
, r
->in
.service_name
);
3658 r
->in
.service_name
= NULL
;
3660 if (r
->in
.service_name
) {
3661 _mem_save_service_name_0
= NDR_PULL_GET_MEM_CTX(ndr
);
3662 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.service_name
, 0);
3663 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->in
.service_name
));
3664 NDR_CHECK(ndr_pull_array_length(ndr
, &r
->in
.service_name
));
3665 if (ndr_get_array_length(ndr
, &r
->in
.service_name
) > ndr_get_array_size(ndr
, &r
->in
.service_name
)) {
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
.service_name
), ndr_get_array_length(ndr
, &r
->in
.service_name
));
3668 NDR_CHECK(ndr_check_string_terminator(ndr
, ndr_get_array_length(ndr
, &r
->in
.service_name
), sizeof(uint16_t)));
3669 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
));
3670 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_service_name_0
, 0);
3672 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_display_name_length
));
3673 if (_ptr_display_name_length
) {
3674 NDR_PULL_ALLOC(ndr
, r
->in
.display_name_length
);
3676 r
->in
.display_name_length
= NULL
;
3678 if (r
->in
.display_name_length
) {
3679 _mem_save_display_name_length_0
= NDR_PULL_GET_MEM_CTX(ndr
);
3680 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.display_name_length
, 0);
3681 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, r
->in
.display_name_length
));
3682 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_display_name_length_0
, 0);
3684 NDR_PULL_ALLOC(ndr
, r
->out
.display_name
);
3685 ZERO_STRUCTP(r
->out
.display_name
);
3687 if (flags
& NDR_OUT
) {
3688 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
3689 NDR_PULL_ALLOC(ndr
, r
->out
.display_name
);
3691 _mem_save_display_name_0
= NDR_PULL_GET_MEM_CTX(ndr
);
3692 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.display_name
, LIBNDR_FLAG_REF_ALLOC
);
3693 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_display_name
));
3694 if (_ptr_display_name
) {
3695 NDR_PULL_ALLOC(ndr
, *r
->out
.display_name
);
3697 *r
->out
.display_name
= NULL
;
3699 if (*r
->out
.display_name
) {
3700 _mem_save_display_name_1
= NDR_PULL_GET_MEM_CTX(ndr
);
3701 NDR_PULL_SET_MEM_CTX(ndr
, *r
->out
.display_name
, 0);
3702 NDR_CHECK(ndr_pull_array_size(ndr
, r
->out
.display_name
));
3703 NDR_CHECK(ndr_pull_array_length(ndr
, r
->out
.display_name
));
3704 if (ndr_get_array_length(ndr
, r
->out
.display_name
) > ndr_get_array_size(ndr
, r
->out
.display_name
)) {
3705 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
));
3707 NDR_CHECK(ndr_check_string_terminator(ndr
, ndr_get_array_length(ndr
, r
->out
.display_name
), sizeof(uint16_t)));
3708 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
));
3709 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_display_name_1
, 0);
3711 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_display_name_0
, LIBNDR_FLAG_REF_ALLOC
);
3712 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_display_name_length
));
3713 if (_ptr_display_name_length
) {
3714 NDR_PULL_ALLOC(ndr
, r
->out
.display_name_length
);
3716 r
->out
.display_name_length
= NULL
;
3718 if (r
->out
.display_name_length
) {
3719 _mem_save_display_name_length_0
= NDR_PULL_GET_MEM_CTX(ndr
);
3720 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.display_name_length
, 0);
3721 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, r
->out
.display_name_length
));
3722 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_display_name_length_0
, 0);
3724 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
3726 return NDR_ERR_SUCCESS
;
3729 _PUBLIC_
void ndr_print_svcctl_GetServiceDisplayNameW(struct ndr_print
*ndr
, const char *name
, int flags
, const struct svcctl_GetServiceDisplayNameW
*r
)
3731 ndr_print_struct(ndr
, name
, "svcctl_GetServiceDisplayNameW");
3733 if (flags
& NDR_SET_VALUES
) {
3734 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
3736 if (flags
& NDR_IN
) {
3737 ndr_print_struct(ndr
, "in", "svcctl_GetServiceDisplayNameW");
3739 ndr_print_ptr(ndr
, "handle", r
->in
.handle
);
3741 ndr_print_policy_handle(ndr
, "handle", r
->in
.handle
);
3743 ndr_print_ptr(ndr
, "service_name", r
->in
.service_name
);
3745 if (r
->in
.service_name
) {
3746 ndr_print_string(ndr
, "service_name", r
->in
.service_name
);
3749 ndr_print_ptr(ndr
, "display_name_length", r
->in
.display_name_length
);
3751 if (r
->in
.display_name_length
) {
3752 ndr_print_uint32(ndr
, "display_name_length", *r
->in
.display_name_length
);
3757 if (flags
& NDR_OUT
) {
3758 ndr_print_struct(ndr
, "out", "svcctl_GetServiceDisplayNameW");
3760 ndr_print_ptr(ndr
, "display_name", r
->out
.display_name
);
3762 ndr_print_ptr(ndr
, "display_name", *r
->out
.display_name
);
3764 if (*r
->out
.display_name
) {
3765 ndr_print_string(ndr
, "display_name", *r
->out
.display_name
);
3769 ndr_print_ptr(ndr
, "display_name_length", r
->out
.display_name_length
);
3771 if (r
->out
.display_name_length
) {
3772 ndr_print_uint32(ndr
, "display_name_length", *r
->out
.display_name_length
);
3775 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
3781 static enum ndr_err_code
ndr_push_svcctl_GetServiceKeyNameW(struct ndr_push
*ndr
, int flags
, const struct svcctl_GetServiceKeyNameW
*r
)
3783 if (flags
& NDR_IN
) {
3784 if (r
->in
.handle
== NULL
) {
3785 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
3787 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
, r
->in
.handle
));
3788 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.service_name
));
3789 if (r
->in
.service_name
) {
3790 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.service_name
, CH_UTF16
)));
3791 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, 0));
3792 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.service_name
, CH_UTF16
)));
3793 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
));
3795 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.display_name_length
));
3796 if (r
->in
.display_name_length
) {
3797 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, *r
->in
.display_name_length
));
3800 if (flags
& NDR_OUT
) {
3801 if (r
->out
.key_name
== NULL
) {
3802 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
3804 NDR_CHECK(ndr_push_unique_ptr(ndr
, *r
->out
.key_name
));
3805 if (*r
->out
.key_name
) {
3806 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, ndr_charset_length(*r
->out
.key_name
, CH_UTF16
)));
3807 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, 0));
3808 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, ndr_charset_length(*r
->out
.key_name
, CH_UTF16
)));
3809 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
));
3811 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->out
.display_name_length
));
3812 if (r
->out
.display_name_length
) {
3813 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, *r
->out
.display_name_length
));
3815 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
3817 return NDR_ERR_SUCCESS
;
3820 static enum ndr_err_code
ndr_pull_svcctl_GetServiceKeyNameW(struct ndr_pull
*ndr
, int flags
, struct svcctl_GetServiceKeyNameW
*r
)
3822 uint32_t _ptr_service_name
;
3823 uint32_t _ptr_key_name
;
3824 uint32_t _ptr_display_name_length
;
3825 TALLOC_CTX
*_mem_save_handle_0
;
3826 TALLOC_CTX
*_mem_save_service_name_0
;
3827 TALLOC_CTX
*_mem_save_key_name_0
;
3828 TALLOC_CTX
*_mem_save_key_name_1
;
3829 TALLOC_CTX
*_mem_save_display_name_length_0
;
3830 if (flags
& NDR_IN
) {
3831 ZERO_STRUCT(r
->out
);
3833 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
3834 NDR_PULL_ALLOC(ndr
, r
->in
.handle
);
3836 _mem_save_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
3837 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.handle
, LIBNDR_FLAG_REF_ALLOC
);
3838 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
, r
->in
.handle
));
3839 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_handle_0
, LIBNDR_FLAG_REF_ALLOC
);
3840 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_service_name
));
3841 if (_ptr_service_name
) {
3842 NDR_PULL_ALLOC(ndr
, r
->in
.service_name
);
3844 r
->in
.service_name
= NULL
;
3846 if (r
->in
.service_name
) {
3847 _mem_save_service_name_0
= NDR_PULL_GET_MEM_CTX(ndr
);
3848 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.service_name
, 0);
3849 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->in
.service_name
));
3850 NDR_CHECK(ndr_pull_array_length(ndr
, &r
->in
.service_name
));
3851 if (ndr_get_array_length(ndr
, &r
->in
.service_name
) > ndr_get_array_size(ndr
, &r
->in
.service_name
)) {
3852 return ndr_pull_error(ndr
, NDR_ERR_ARRAY_SIZE
, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr
, &r
->in
.service_name
), ndr_get_array_length(ndr
, &r
->in
.service_name
));
3854 NDR_CHECK(ndr_check_string_terminator(ndr
, ndr_get_array_length(ndr
, &r
->in
.service_name
), sizeof(uint16_t)));
3855 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
));
3856 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_service_name_0
, 0);
3858 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_display_name_length
));
3859 if (_ptr_display_name_length
) {
3860 NDR_PULL_ALLOC(ndr
, r
->in
.display_name_length
);
3862 r
->in
.display_name_length
= NULL
;
3864 if (r
->in
.display_name_length
) {
3865 _mem_save_display_name_length_0
= NDR_PULL_GET_MEM_CTX(ndr
);
3866 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.display_name_length
, 0);
3867 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, r
->in
.display_name_length
));
3868 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_display_name_length_0
, 0);
3870 NDR_PULL_ALLOC(ndr
, r
->out
.key_name
);
3871 ZERO_STRUCTP(r
->out
.key_name
);
3873 if (flags
& NDR_OUT
) {
3874 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
3875 NDR_PULL_ALLOC(ndr
, r
->out
.key_name
);
3877 _mem_save_key_name_0
= NDR_PULL_GET_MEM_CTX(ndr
);
3878 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.key_name
, LIBNDR_FLAG_REF_ALLOC
);
3879 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_key_name
));
3880 if (_ptr_key_name
) {
3881 NDR_PULL_ALLOC(ndr
, *r
->out
.key_name
);
3883 *r
->out
.key_name
= NULL
;
3885 if (*r
->out
.key_name
) {
3886 _mem_save_key_name_1
= NDR_PULL_GET_MEM_CTX(ndr
);
3887 NDR_PULL_SET_MEM_CTX(ndr
, *r
->out
.key_name
, 0);
3888 NDR_CHECK(ndr_pull_array_size(ndr
, r
->out
.key_name
));
3889 NDR_CHECK(ndr_pull_array_length(ndr
, r
->out
.key_name
));
3890 if (ndr_get_array_length(ndr
, r
->out
.key_name
) > ndr_get_array_size(ndr
, r
->out
.key_name
)) {
3891 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
));
3893 NDR_CHECK(ndr_check_string_terminator(ndr
, ndr_get_array_length(ndr
, r
->out
.key_name
), sizeof(uint16_t)));
3894 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
));
3895 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_key_name_1
, 0);
3897 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_key_name_0
, LIBNDR_FLAG_REF_ALLOC
);
3898 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_display_name_length
));
3899 if (_ptr_display_name_length
) {
3900 NDR_PULL_ALLOC(ndr
, r
->out
.display_name_length
);
3902 r
->out
.display_name_length
= NULL
;
3904 if (r
->out
.display_name_length
) {
3905 _mem_save_display_name_length_0
= NDR_PULL_GET_MEM_CTX(ndr
);
3906 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.display_name_length
, 0);
3907 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, r
->out
.display_name_length
));
3908 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_display_name_length_0
, 0);
3910 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
3912 return NDR_ERR_SUCCESS
;
3915 _PUBLIC_
void ndr_print_svcctl_GetServiceKeyNameW(struct ndr_print
*ndr
, const char *name
, int flags
, const struct svcctl_GetServiceKeyNameW
*r
)
3917 ndr_print_struct(ndr
, name
, "svcctl_GetServiceKeyNameW");
3919 if (flags
& NDR_SET_VALUES
) {
3920 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
3922 if (flags
& NDR_IN
) {
3923 ndr_print_struct(ndr
, "in", "svcctl_GetServiceKeyNameW");
3925 ndr_print_ptr(ndr
, "handle", r
->in
.handle
);
3927 ndr_print_policy_handle(ndr
, "handle", r
->in
.handle
);
3929 ndr_print_ptr(ndr
, "service_name", r
->in
.service_name
);
3931 if (r
->in
.service_name
) {
3932 ndr_print_string(ndr
, "service_name", r
->in
.service_name
);
3935 ndr_print_ptr(ndr
, "display_name_length", r
->in
.display_name_length
);
3937 if (r
->in
.display_name_length
) {
3938 ndr_print_uint32(ndr
, "display_name_length", *r
->in
.display_name_length
);
3943 if (flags
& NDR_OUT
) {
3944 ndr_print_struct(ndr
, "out", "svcctl_GetServiceKeyNameW");
3946 ndr_print_ptr(ndr
, "key_name", r
->out
.key_name
);
3948 ndr_print_ptr(ndr
, "key_name", *r
->out
.key_name
);
3950 if (*r
->out
.key_name
) {
3951 ndr_print_string(ndr
, "key_name", *r
->out
.key_name
);
3955 ndr_print_ptr(ndr
, "display_name_length", r
->out
.display_name_length
);
3957 if (r
->out
.display_name_length
) {
3958 ndr_print_uint32(ndr
, "display_name_length", *r
->out
.display_name_length
);
3961 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
3967 static enum ndr_err_code
ndr_push_svcctl_SCSetServiceBitsA(struct ndr_push
*ndr
, int flags
, const struct svcctl_SCSetServiceBitsA
*r
)
3969 if (flags
& NDR_IN
) {
3970 if (r
->in
.handle
== NULL
) {
3971 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
3973 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
, r
->in
.handle
));
3974 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.bits
));
3975 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.bitson
));
3976 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.immediate
));
3978 if (flags
& NDR_OUT
) {
3979 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
3981 return NDR_ERR_SUCCESS
;
3984 static enum ndr_err_code
ndr_pull_svcctl_SCSetServiceBitsA(struct ndr_pull
*ndr
, int flags
, struct svcctl_SCSetServiceBitsA
*r
)
3986 TALLOC_CTX
*_mem_save_handle_0
;
3987 if (flags
& NDR_IN
) {
3988 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
3989 NDR_PULL_ALLOC(ndr
, r
->in
.handle
);
3991 _mem_save_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
3992 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.handle
, LIBNDR_FLAG_REF_ALLOC
);
3993 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
, r
->in
.handle
));
3994 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_handle_0
, LIBNDR_FLAG_REF_ALLOC
);
3995 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.bits
));
3996 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.bitson
));
3997 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.immediate
));
3999 if (flags
& NDR_OUT
) {
4000 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
4002 return NDR_ERR_SUCCESS
;
4005 _PUBLIC_
void ndr_print_svcctl_SCSetServiceBitsA(struct ndr_print
*ndr
, const char *name
, int flags
, const struct svcctl_SCSetServiceBitsA
*r
)
4007 ndr_print_struct(ndr
, name
, "svcctl_SCSetServiceBitsA");
4009 if (flags
& NDR_SET_VALUES
) {
4010 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
4012 if (flags
& NDR_IN
) {
4013 ndr_print_struct(ndr
, "in", "svcctl_SCSetServiceBitsA");
4015 ndr_print_ptr(ndr
, "handle", r
->in
.handle
);
4017 ndr_print_policy_handle(ndr
, "handle", r
->in
.handle
);
4019 ndr_print_uint32(ndr
, "bits", r
->in
.bits
);
4020 ndr_print_uint32(ndr
, "bitson", r
->in
.bitson
);
4021 ndr_print_uint32(ndr
, "immediate", r
->in
.immediate
);
4024 if (flags
& NDR_OUT
) {
4025 ndr_print_struct(ndr
, "out", "svcctl_SCSetServiceBitsA");
4027 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
4033 static enum ndr_err_code
ndr_push_svcctl_ChangeServiceConfigA(struct ndr_push
*ndr
, int flags
, const struct svcctl_ChangeServiceConfigA
*r
)
4035 if (flags
& NDR_IN
) {
4036 if (r
->in
.handle
== NULL
) {
4037 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
4039 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
, r
->in
.handle
));
4040 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.type
));
4041 NDR_CHECK(ndr_push_svcctl_StartType(ndr
, NDR_SCALARS
, r
->in
.start_type
));
4042 NDR_CHECK(ndr_push_svcctl_ErrorControl(ndr
, NDR_SCALARS
, r
->in
.error_control
));
4043 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.binary_path
));
4044 if (r
->in
.binary_path
) {
4045 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.binary_path
, CH_UTF16
)));
4046 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, 0));
4047 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.binary_path
, CH_UTF16
)));
4048 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
));
4050 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.load_order_group
));
4051 if (r
->in
.load_order_group
) {
4052 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.load_order_group
, CH_UTF16
)));
4053 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, 0));
4054 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.load_order_group
, CH_UTF16
)));
4055 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
));
4057 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.dependencies
));
4058 if (r
->in
.dependencies
) {
4059 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.dependencies
, CH_UTF16
)));
4060 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, 0));
4061 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.dependencies
, CH_UTF16
)));
4062 NDR_CHECK(ndr_push_charset(ndr
, NDR_SCALARS
, r
->in
.dependencies
, ndr_charset_length(r
->in
.dependencies
, CH_UTF16
), sizeof(uint16_t), CH_UTF16
));
4064 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.service_start_name
));
4065 if (r
->in
.service_start_name
) {
4066 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.service_start_name
, CH_UTF16
)));
4067 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, 0));
4068 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.service_start_name
, CH_UTF16
)));
4069 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
));
4071 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.password
));
4072 if (r
->in
.password
) {
4073 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.password
, CH_UTF16
)));
4074 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, 0));
4075 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.password
, CH_UTF16
)));
4076 NDR_CHECK(ndr_push_charset(ndr
, NDR_SCALARS
, r
->in
.password
, ndr_charset_length(r
->in
.password
, CH_UTF16
), sizeof(uint16_t), CH_UTF16
));
4078 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.display_name
));
4079 if (r
->in
.display_name
) {
4080 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.display_name
, CH_UTF16
)));
4081 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, 0));
4082 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.display_name
, CH_UTF16
)));
4083 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
));
4086 if (flags
& NDR_OUT
) {
4087 if (r
->out
.tag_id
== NULL
) {
4088 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
4090 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, *r
->out
.tag_id
));
4091 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
4093 return NDR_ERR_SUCCESS
;
4096 static enum ndr_err_code
ndr_pull_svcctl_ChangeServiceConfigA(struct ndr_pull
*ndr
, int flags
, struct svcctl_ChangeServiceConfigA
*r
)
4098 uint32_t _ptr_binary_path
;
4099 uint32_t _ptr_load_order_group
;
4100 uint32_t _ptr_dependencies
;
4101 uint32_t _ptr_service_start_name
;
4102 uint32_t _ptr_password
;
4103 uint32_t _ptr_display_name
;
4104 TALLOC_CTX
*_mem_save_handle_0
;
4105 TALLOC_CTX
*_mem_save_binary_path_0
;
4106 TALLOC_CTX
*_mem_save_load_order_group_0
;
4107 TALLOC_CTX
*_mem_save_tag_id_0
;
4108 TALLOC_CTX
*_mem_save_dependencies_0
;
4109 TALLOC_CTX
*_mem_save_service_start_name_0
;
4110 TALLOC_CTX
*_mem_save_password_0
;
4111 TALLOC_CTX
*_mem_save_display_name_0
;
4112 if (flags
& NDR_IN
) {
4113 ZERO_STRUCT(r
->out
);
4115 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
4116 NDR_PULL_ALLOC(ndr
, r
->in
.handle
);
4118 _mem_save_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
4119 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.handle
, LIBNDR_FLAG_REF_ALLOC
);
4120 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
, r
->in
.handle
));
4121 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_handle_0
, LIBNDR_FLAG_REF_ALLOC
);
4122 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.type
));
4123 NDR_CHECK(ndr_pull_svcctl_StartType(ndr
, NDR_SCALARS
, &r
->in
.start_type
));
4124 NDR_CHECK(ndr_pull_svcctl_ErrorControl(ndr
, NDR_SCALARS
, &r
->in
.error_control
));
4125 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_binary_path
));
4126 if (_ptr_binary_path
) {
4127 NDR_PULL_ALLOC(ndr
, r
->in
.binary_path
);
4129 r
->in
.binary_path
= NULL
;
4131 if (r
->in
.binary_path
) {
4132 _mem_save_binary_path_0
= NDR_PULL_GET_MEM_CTX(ndr
);
4133 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.binary_path
, 0);
4134 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->in
.binary_path
));
4135 NDR_CHECK(ndr_pull_array_length(ndr
, &r
->in
.binary_path
));
4136 if (ndr_get_array_length(ndr
, &r
->in
.binary_path
) > ndr_get_array_size(ndr
, &r
->in
.binary_path
)) {
4137 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
));
4139 NDR_CHECK(ndr_check_string_terminator(ndr
, ndr_get_array_length(ndr
, &r
->in
.binary_path
), sizeof(uint16_t)));
4140 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
));
4141 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_binary_path_0
, 0);
4143 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_load_order_group
));
4144 if (_ptr_load_order_group
) {
4145 NDR_PULL_ALLOC(ndr
, r
->in
.load_order_group
);
4147 r
->in
.load_order_group
= NULL
;
4149 if (r
->in
.load_order_group
) {
4150 _mem_save_load_order_group_0
= NDR_PULL_GET_MEM_CTX(ndr
);
4151 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.load_order_group
, 0);
4152 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->in
.load_order_group
));
4153 NDR_CHECK(ndr_pull_array_length(ndr
, &r
->in
.load_order_group
));
4154 if (ndr_get_array_length(ndr
, &r
->in
.load_order_group
) > ndr_get_array_size(ndr
, &r
->in
.load_order_group
)) {
4155 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
));
4157 NDR_CHECK(ndr_check_string_terminator(ndr
, ndr_get_array_length(ndr
, &r
->in
.load_order_group
), sizeof(uint16_t)));
4158 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
));
4159 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_load_order_group_0
, 0);
4161 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_dependencies
));
4162 if (_ptr_dependencies
) {
4163 NDR_PULL_ALLOC(ndr
, r
->in
.dependencies
);
4165 r
->in
.dependencies
= NULL
;
4167 if (r
->in
.dependencies
) {
4168 _mem_save_dependencies_0
= NDR_PULL_GET_MEM_CTX(ndr
);
4169 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.dependencies
, 0);
4170 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->in
.dependencies
));
4171 NDR_CHECK(ndr_pull_array_length(ndr
, &r
->in
.dependencies
));
4172 if (ndr_get_array_length(ndr
, &r
->in
.dependencies
) > ndr_get_array_size(ndr
, &r
->in
.dependencies
)) {
4173 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
));
4175 NDR_CHECK(ndr_check_string_terminator(ndr
, ndr_get_array_length(ndr
, &r
->in
.dependencies
), sizeof(uint16_t)));
4176 NDR_CHECK(ndr_pull_charset(ndr
, NDR_SCALARS
, &r
->in
.dependencies
, ndr_get_array_length(ndr
, &r
->in
.dependencies
), sizeof(uint16_t), CH_UTF16
));
4177 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_dependencies_0
, 0);
4179 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_service_start_name
));
4180 if (_ptr_service_start_name
) {
4181 NDR_PULL_ALLOC(ndr
, r
->in
.service_start_name
);
4183 r
->in
.service_start_name
= NULL
;
4185 if (r
->in
.service_start_name
) {
4186 _mem_save_service_start_name_0
= NDR_PULL_GET_MEM_CTX(ndr
);
4187 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.service_start_name
, 0);
4188 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->in
.service_start_name
));
4189 NDR_CHECK(ndr_pull_array_length(ndr
, &r
->in
.service_start_name
));
4190 if (ndr_get_array_length(ndr
, &r
->in
.service_start_name
) > ndr_get_array_size(ndr
, &r
->in
.service_start_name
)) {
4191 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
));
4193 NDR_CHECK(ndr_check_string_terminator(ndr
, ndr_get_array_length(ndr
, &r
->in
.service_start_name
), sizeof(uint16_t)));
4194 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
));
4195 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_service_start_name_0
, 0);
4197 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_password
));
4198 if (_ptr_password
) {
4199 NDR_PULL_ALLOC(ndr
, r
->in
.password
);
4201 r
->in
.password
= NULL
;
4203 if (r
->in
.password
) {
4204 _mem_save_password_0
= NDR_PULL_GET_MEM_CTX(ndr
);
4205 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.password
, 0);
4206 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->in
.password
));
4207 NDR_CHECK(ndr_pull_array_length(ndr
, &r
->in
.password
));
4208 if (ndr_get_array_length(ndr
, &r
->in
.password
) > ndr_get_array_size(ndr
, &r
->in
.password
)) {
4209 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
));
4211 NDR_CHECK(ndr_check_string_terminator(ndr
, ndr_get_array_length(ndr
, &r
->in
.password
), sizeof(uint16_t)));
4212 NDR_CHECK(ndr_pull_charset(ndr
, NDR_SCALARS
, &r
->in
.password
, ndr_get_array_length(ndr
, &r
->in
.password
), sizeof(uint16_t), CH_UTF16
));
4213 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_password_0
, 0);
4215 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_display_name
));
4216 if (_ptr_display_name
) {
4217 NDR_PULL_ALLOC(ndr
, r
->in
.display_name
);
4219 r
->in
.display_name
= NULL
;
4221 if (r
->in
.display_name
) {
4222 _mem_save_display_name_0
= NDR_PULL_GET_MEM_CTX(ndr
);
4223 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.display_name
, 0);
4224 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->in
.display_name
));
4225 NDR_CHECK(ndr_pull_array_length(ndr
, &r
->in
.display_name
));
4226 if (ndr_get_array_length(ndr
, &r
->in
.display_name
) > ndr_get_array_size(ndr
, &r
->in
.display_name
)) {
4227 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
));
4229 NDR_CHECK(ndr_check_string_terminator(ndr
, ndr_get_array_length(ndr
, &r
->in
.display_name
), sizeof(uint16_t)));
4230 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
));
4231 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_display_name_0
, 0);
4233 NDR_PULL_ALLOC(ndr
, r
->out
.tag_id
);
4234 ZERO_STRUCTP(r
->out
.tag_id
);
4236 if (flags
& NDR_OUT
) {
4237 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
4238 NDR_PULL_ALLOC(ndr
, r
->out
.tag_id
);
4240 _mem_save_tag_id_0
= NDR_PULL_GET_MEM_CTX(ndr
);
4241 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.tag_id
, LIBNDR_FLAG_REF_ALLOC
);
4242 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, r
->out
.tag_id
));
4243 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_tag_id_0
, LIBNDR_FLAG_REF_ALLOC
);
4244 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
4246 return NDR_ERR_SUCCESS
;
4249 _PUBLIC_
void ndr_print_svcctl_ChangeServiceConfigA(struct ndr_print
*ndr
, const char *name
, int flags
, const struct svcctl_ChangeServiceConfigA
*r
)
4251 ndr_print_struct(ndr
, name
, "svcctl_ChangeServiceConfigA");
4253 if (flags
& NDR_SET_VALUES
) {
4254 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
4256 if (flags
& NDR_IN
) {
4257 ndr_print_struct(ndr
, "in", "svcctl_ChangeServiceConfigA");
4259 ndr_print_ptr(ndr
, "handle", r
->in
.handle
);
4261 ndr_print_policy_handle(ndr
, "handle", r
->in
.handle
);
4263 ndr_print_uint32(ndr
, "type", r
->in
.type
);
4264 ndr_print_svcctl_StartType(ndr
, "start_type", r
->in
.start_type
);
4265 ndr_print_svcctl_ErrorControl(ndr
, "error_control", r
->in
.error_control
);
4266 ndr_print_ptr(ndr
, "binary_path", r
->in
.binary_path
);
4268 if (r
->in
.binary_path
) {
4269 ndr_print_string(ndr
, "binary_path", r
->in
.binary_path
);
4272 ndr_print_ptr(ndr
, "load_order_group", r
->in
.load_order_group
);
4274 if (r
->in
.load_order_group
) {
4275 ndr_print_string(ndr
, "load_order_group", r
->in
.load_order_group
);
4278 ndr_print_ptr(ndr
, "dependencies", r
->in
.dependencies
);
4280 if (r
->in
.dependencies
) {
4281 ndr_print_string(ndr
, "dependencies", r
->in
.dependencies
);
4284 ndr_print_ptr(ndr
, "service_start_name", r
->in
.service_start_name
);
4286 if (r
->in
.service_start_name
) {
4287 ndr_print_string(ndr
, "service_start_name", r
->in
.service_start_name
);
4290 ndr_print_ptr(ndr
, "password", r
->in
.password
);
4292 if (r
->in
.password
) {
4293 ndr_print_string(ndr
, "password", r
->in
.password
);
4296 ndr_print_ptr(ndr
, "display_name", r
->in
.display_name
);
4298 if (r
->in
.display_name
) {
4299 ndr_print_string(ndr
, "display_name", r
->in
.display_name
);
4304 if (flags
& NDR_OUT
) {
4305 ndr_print_struct(ndr
, "out", "svcctl_ChangeServiceConfigA");
4307 ndr_print_ptr(ndr
, "tag_id", r
->out
.tag_id
);
4309 ndr_print_uint32(ndr
, "tag_id", *r
->out
.tag_id
);
4311 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
4317 static enum ndr_err_code
ndr_push_svcctl_CreateServiceA(struct ndr_push
*ndr
, int flags
, const struct svcctl_CreateServiceA
*r
)
4319 if (flags
& NDR_IN
) {
4320 if (r
->in
.handle
== NULL
) {
4321 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
4323 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
, r
->in
.handle
));
4324 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.ServiceName
));
4325 if (r
->in
.ServiceName
) {
4326 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.ServiceName
, CH_UTF16
)));
4327 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, 0));
4328 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.ServiceName
, CH_UTF16
)));
4329 NDR_CHECK(ndr_push_charset(ndr
, NDR_SCALARS
, r
->in
.ServiceName
, ndr_charset_length(r
->in
.ServiceName
, CH_UTF16
), sizeof(uint16_t), CH_UTF16
));
4331 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.DisplayName
));
4332 if (r
->in
.DisplayName
) {
4333 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.DisplayName
, CH_UTF16
)));
4334 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, 0));
4335 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.DisplayName
, CH_UTF16
)));
4336 NDR_CHECK(ndr_push_charset(ndr
, NDR_SCALARS
, r
->in
.DisplayName
, ndr_charset_length(r
->in
.DisplayName
, CH_UTF16
), sizeof(uint16_t), CH_UTF16
));
4338 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.desired_access
));
4339 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.type
));
4340 NDR_CHECK(ndr_push_svcctl_StartType(ndr
, NDR_SCALARS
, r
->in
.start_type
));
4341 NDR_CHECK(ndr_push_svcctl_ErrorControl(ndr
, NDR_SCALARS
, r
->in
.error_control
));
4342 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.binary_path
));
4343 if (r
->in
.binary_path
) {
4344 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.binary_path
, CH_UTF16
)));
4345 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, 0));
4346 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.binary_path
, CH_UTF16
)));
4347 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
));
4349 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.LoadOrderGroupKey
));
4350 if (r
->in
.LoadOrderGroupKey
) {
4351 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.LoadOrderGroupKey
, CH_UTF16
)));
4352 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, 0));
4353 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.LoadOrderGroupKey
, CH_UTF16
)));
4354 NDR_CHECK(ndr_push_charset(ndr
, NDR_SCALARS
, r
->in
.LoadOrderGroupKey
, ndr_charset_length(r
->in
.LoadOrderGroupKey
, CH_UTF16
), sizeof(uint16_t), CH_UTF16
));
4356 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.dependencies
));
4357 if (r
->in
.dependencies
) {
4358 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.dependencies
, CH_UTF16
)));
4359 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, 0));
4360 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.dependencies
, CH_UTF16
)));
4361 NDR_CHECK(ndr_push_charset(ndr
, NDR_SCALARS
, r
->in
.dependencies
, ndr_charset_length(r
->in
.dependencies
, CH_UTF16
), sizeof(uint16_t), CH_UTF16
));
4363 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.service_start_name
));
4364 if (r
->in
.service_start_name
) {
4365 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.service_start_name
, CH_UTF16
)));
4366 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, 0));
4367 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.service_start_name
, CH_UTF16
)));
4368 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
));
4370 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.password
));
4371 if (r
->in
.password
) {
4372 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.password
, CH_UTF16
)));
4373 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, 0));
4374 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.password
, CH_UTF16
)));
4375 NDR_CHECK(ndr_push_charset(ndr
, NDR_SCALARS
, r
->in
.password
, ndr_charset_length(r
->in
.password
, CH_UTF16
), sizeof(uint16_t), CH_UTF16
));
4378 if (flags
& NDR_OUT
) {
4379 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->out
.TagId
));
4381 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, *r
->out
.TagId
));
4383 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
4385 return NDR_ERR_SUCCESS
;
4388 static enum ndr_err_code
ndr_pull_svcctl_CreateServiceA(struct ndr_pull
*ndr
, int flags
, struct svcctl_CreateServiceA
*r
)
4390 uint32_t _ptr_ServiceName
;
4391 uint32_t _ptr_DisplayName
;
4392 uint32_t _ptr_binary_path
;
4393 uint32_t _ptr_LoadOrderGroupKey
;
4394 uint32_t _ptr_TagId
;
4395 uint32_t _ptr_dependencies
;
4396 uint32_t _ptr_service_start_name
;
4397 uint32_t _ptr_password
;
4398 TALLOC_CTX
*_mem_save_handle_0
;
4399 TALLOC_CTX
*_mem_save_ServiceName_0
;
4400 TALLOC_CTX
*_mem_save_DisplayName_0
;
4401 TALLOC_CTX
*_mem_save_binary_path_0
;
4402 TALLOC_CTX
*_mem_save_LoadOrderGroupKey_0
;
4403 TALLOC_CTX
*_mem_save_TagId_0
;
4404 TALLOC_CTX
*_mem_save_dependencies_0
;
4405 TALLOC_CTX
*_mem_save_service_start_name_0
;
4406 TALLOC_CTX
*_mem_save_password_0
;
4407 if (flags
& NDR_IN
) {
4408 ZERO_STRUCT(r
->out
);
4410 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
4411 NDR_PULL_ALLOC(ndr
, r
->in
.handle
);
4413 _mem_save_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
4414 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.handle
, LIBNDR_FLAG_REF_ALLOC
);
4415 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
, r
->in
.handle
));
4416 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_handle_0
, LIBNDR_FLAG_REF_ALLOC
);
4417 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_ServiceName
));
4418 if (_ptr_ServiceName
) {
4419 NDR_PULL_ALLOC(ndr
, r
->in
.ServiceName
);
4421 r
->in
.ServiceName
= NULL
;
4423 if (r
->in
.ServiceName
) {
4424 _mem_save_ServiceName_0
= NDR_PULL_GET_MEM_CTX(ndr
);
4425 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.ServiceName
, 0);
4426 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->in
.ServiceName
));
4427 NDR_CHECK(ndr_pull_array_length(ndr
, &r
->in
.ServiceName
));
4428 if (ndr_get_array_length(ndr
, &r
->in
.ServiceName
) > ndr_get_array_size(ndr
, &r
->in
.ServiceName
)) {
4429 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
));
4431 NDR_CHECK(ndr_check_string_terminator(ndr
, ndr_get_array_length(ndr
, &r
->in
.ServiceName
), sizeof(uint16_t)));
4432 NDR_CHECK(ndr_pull_charset(ndr
, NDR_SCALARS
, &r
->in
.ServiceName
, ndr_get_array_length(ndr
, &r
->in
.ServiceName
), sizeof(uint16_t), CH_UTF16
));
4433 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_ServiceName_0
, 0);
4435 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_DisplayName
));
4436 if (_ptr_DisplayName
) {
4437 NDR_PULL_ALLOC(ndr
, r
->in
.DisplayName
);
4439 r
->in
.DisplayName
= NULL
;
4441 if (r
->in
.DisplayName
) {
4442 _mem_save_DisplayName_0
= NDR_PULL_GET_MEM_CTX(ndr
);
4443 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.DisplayName
, 0);
4444 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->in
.DisplayName
));
4445 NDR_CHECK(ndr_pull_array_length(ndr
, &r
->in
.DisplayName
));
4446 if (ndr_get_array_length(ndr
, &r
->in
.DisplayName
) > ndr_get_array_size(ndr
, &r
->in
.DisplayName
)) {
4447 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
));
4449 NDR_CHECK(ndr_check_string_terminator(ndr
, ndr_get_array_length(ndr
, &r
->in
.DisplayName
), sizeof(uint16_t)));
4450 NDR_CHECK(ndr_pull_charset(ndr
, NDR_SCALARS
, &r
->in
.DisplayName
, ndr_get_array_length(ndr
, &r
->in
.DisplayName
), sizeof(uint16_t), CH_UTF16
));
4451 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_DisplayName_0
, 0);
4453 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.desired_access
));
4454 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.type
));
4455 NDR_CHECK(ndr_pull_svcctl_StartType(ndr
, NDR_SCALARS
, &r
->in
.start_type
));
4456 NDR_CHECK(ndr_pull_svcctl_ErrorControl(ndr
, NDR_SCALARS
, &r
->in
.error_control
));
4457 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_binary_path
));
4458 if (_ptr_binary_path
) {
4459 NDR_PULL_ALLOC(ndr
, r
->in
.binary_path
);
4461 r
->in
.binary_path
= NULL
;
4463 if (r
->in
.binary_path
) {
4464 _mem_save_binary_path_0
= NDR_PULL_GET_MEM_CTX(ndr
);
4465 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.binary_path
, 0);
4466 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->in
.binary_path
));
4467 NDR_CHECK(ndr_pull_array_length(ndr
, &r
->in
.binary_path
));
4468 if (ndr_get_array_length(ndr
, &r
->in
.binary_path
) > ndr_get_array_size(ndr
, &r
->in
.binary_path
)) {
4469 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
));
4471 NDR_CHECK(ndr_check_string_terminator(ndr
, ndr_get_array_length(ndr
, &r
->in
.binary_path
), sizeof(uint16_t)));
4472 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
));
4473 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_binary_path_0
, 0);
4475 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_LoadOrderGroupKey
));
4476 if (_ptr_LoadOrderGroupKey
) {
4477 NDR_PULL_ALLOC(ndr
, r
->in
.LoadOrderGroupKey
);
4479 r
->in
.LoadOrderGroupKey
= NULL
;
4481 if (r
->in
.LoadOrderGroupKey
) {
4482 _mem_save_LoadOrderGroupKey_0
= NDR_PULL_GET_MEM_CTX(ndr
);
4483 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.LoadOrderGroupKey
, 0);
4484 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->in
.LoadOrderGroupKey
));
4485 NDR_CHECK(ndr_pull_array_length(ndr
, &r
->in
.LoadOrderGroupKey
));
4486 if (ndr_get_array_length(ndr
, &r
->in
.LoadOrderGroupKey
) > ndr_get_array_size(ndr
, &r
->in
.LoadOrderGroupKey
)) {
4487 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
));
4489 NDR_CHECK(ndr_check_string_terminator(ndr
, ndr_get_array_length(ndr
, &r
->in
.LoadOrderGroupKey
), sizeof(uint16_t)));
4490 NDR_CHECK(ndr_pull_charset(ndr
, NDR_SCALARS
, &r
->in
.LoadOrderGroupKey
, ndr_get_array_length(ndr
, &r
->in
.LoadOrderGroupKey
), sizeof(uint16_t), CH_UTF16
));
4491 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_LoadOrderGroupKey_0
, 0);
4493 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_dependencies
));
4494 if (_ptr_dependencies
) {
4495 NDR_PULL_ALLOC(ndr
, r
->in
.dependencies
);
4497 r
->in
.dependencies
= NULL
;
4499 if (r
->in
.dependencies
) {
4500 _mem_save_dependencies_0
= NDR_PULL_GET_MEM_CTX(ndr
);
4501 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.dependencies
, 0);
4502 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->in
.dependencies
));
4503 NDR_CHECK(ndr_pull_array_length(ndr
, &r
->in
.dependencies
));
4504 if (ndr_get_array_length(ndr
, &r
->in
.dependencies
) > ndr_get_array_size(ndr
, &r
->in
.dependencies
)) {
4505 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
));
4507 NDR_CHECK(ndr_check_string_terminator(ndr
, ndr_get_array_length(ndr
, &r
->in
.dependencies
), sizeof(uint16_t)));
4508 NDR_CHECK(ndr_pull_charset(ndr
, NDR_SCALARS
, &r
->in
.dependencies
, ndr_get_array_length(ndr
, &r
->in
.dependencies
), sizeof(uint16_t), CH_UTF16
));
4509 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_dependencies_0
, 0);
4511 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_service_start_name
));
4512 if (_ptr_service_start_name
) {
4513 NDR_PULL_ALLOC(ndr
, r
->in
.service_start_name
);
4515 r
->in
.service_start_name
= NULL
;
4517 if (r
->in
.service_start_name
) {
4518 _mem_save_service_start_name_0
= NDR_PULL_GET_MEM_CTX(ndr
);
4519 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.service_start_name
, 0);
4520 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->in
.service_start_name
));
4521 NDR_CHECK(ndr_pull_array_length(ndr
, &r
->in
.service_start_name
));
4522 if (ndr_get_array_length(ndr
, &r
->in
.service_start_name
) > ndr_get_array_size(ndr
, &r
->in
.service_start_name
)) {
4523 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
));
4525 NDR_CHECK(ndr_check_string_terminator(ndr
, ndr_get_array_length(ndr
, &r
->in
.service_start_name
), sizeof(uint16_t)));
4526 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
));
4527 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_service_start_name_0
, 0);
4529 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_password
));
4530 if (_ptr_password
) {
4531 NDR_PULL_ALLOC(ndr
, r
->in
.password
);
4533 r
->in
.password
= NULL
;
4535 if (r
->in
.password
) {
4536 _mem_save_password_0
= NDR_PULL_GET_MEM_CTX(ndr
);
4537 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.password
, 0);
4538 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->in
.password
));
4539 NDR_CHECK(ndr_pull_array_length(ndr
, &r
->in
.password
));
4540 if (ndr_get_array_length(ndr
, &r
->in
.password
) > ndr_get_array_size(ndr
, &r
->in
.password
)) {
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
.password
), ndr_get_array_length(ndr
, &r
->in
.password
));
4543 NDR_CHECK(ndr_check_string_terminator(ndr
, ndr_get_array_length(ndr
, &r
->in
.password
), sizeof(uint16_t)));
4544 NDR_CHECK(ndr_pull_charset(ndr
, NDR_SCALARS
, &r
->in
.password
, ndr_get_array_length(ndr
, &r
->in
.password
), sizeof(uint16_t), CH_UTF16
));
4545 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_password_0
, 0);
4548 if (flags
& NDR_OUT
) {
4549 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_TagId
));
4551 NDR_PULL_ALLOC(ndr
, r
->out
.TagId
);
4553 r
->out
.TagId
= NULL
;
4556 _mem_save_TagId_0
= NDR_PULL_GET_MEM_CTX(ndr
);
4557 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.TagId
, 0);
4558 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, r
->out
.TagId
));
4559 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_TagId_0
, 0);
4561 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
4563 return NDR_ERR_SUCCESS
;
4566 _PUBLIC_
void ndr_print_svcctl_CreateServiceA(struct ndr_print
*ndr
, const char *name
, int flags
, const struct svcctl_CreateServiceA
*r
)
4568 ndr_print_struct(ndr
, name
, "svcctl_CreateServiceA");
4570 if (flags
& NDR_SET_VALUES
) {
4571 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
4573 if (flags
& NDR_IN
) {
4574 ndr_print_struct(ndr
, "in", "svcctl_CreateServiceA");
4576 ndr_print_ptr(ndr
, "handle", r
->in
.handle
);
4578 ndr_print_policy_handle(ndr
, "handle", r
->in
.handle
);
4580 ndr_print_ptr(ndr
, "ServiceName", r
->in
.ServiceName
);
4582 if (r
->in
.ServiceName
) {
4583 ndr_print_string(ndr
, "ServiceName", r
->in
.ServiceName
);
4586 ndr_print_ptr(ndr
, "DisplayName", r
->in
.DisplayName
);
4588 if (r
->in
.DisplayName
) {
4589 ndr_print_string(ndr
, "DisplayName", r
->in
.DisplayName
);
4592 ndr_print_uint32(ndr
, "desired_access", r
->in
.desired_access
);
4593 ndr_print_uint32(ndr
, "type", r
->in
.type
);
4594 ndr_print_svcctl_StartType(ndr
, "start_type", r
->in
.start_type
);
4595 ndr_print_svcctl_ErrorControl(ndr
, "error_control", r
->in
.error_control
);
4596 ndr_print_ptr(ndr
, "binary_path", r
->in
.binary_path
);
4598 if (r
->in
.binary_path
) {
4599 ndr_print_string(ndr
, "binary_path", r
->in
.binary_path
);
4602 ndr_print_ptr(ndr
, "LoadOrderGroupKey", r
->in
.LoadOrderGroupKey
);
4604 if (r
->in
.LoadOrderGroupKey
) {
4605 ndr_print_string(ndr
, "LoadOrderGroupKey", r
->in
.LoadOrderGroupKey
);
4608 ndr_print_ptr(ndr
, "dependencies", r
->in
.dependencies
);
4610 if (r
->in
.dependencies
) {
4611 ndr_print_string(ndr
, "dependencies", r
->in
.dependencies
);
4614 ndr_print_ptr(ndr
, "service_start_name", r
->in
.service_start_name
);
4616 if (r
->in
.service_start_name
) {
4617 ndr_print_string(ndr
, "service_start_name", r
->in
.service_start_name
);
4620 ndr_print_ptr(ndr
, "password", r
->in
.password
);
4622 if (r
->in
.password
) {
4623 ndr_print_string(ndr
, "password", r
->in
.password
);
4628 if (flags
& NDR_OUT
) {
4629 ndr_print_struct(ndr
, "out", "svcctl_CreateServiceA");
4631 ndr_print_ptr(ndr
, "TagId", r
->out
.TagId
);
4634 ndr_print_uint32(ndr
, "TagId", *r
->out
.TagId
);
4637 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
4643 static enum ndr_err_code
ndr_push_svcctl_EnumDependentServicesA(struct ndr_push
*ndr
, int flags
, const struct svcctl_EnumDependentServicesA
*r
)
4645 if (flags
& NDR_IN
) {
4646 if (r
->in
.service
== NULL
) {
4647 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
4649 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
, r
->in
.service
));
4650 NDR_CHECK(ndr_push_svcctl_ServiceState(ndr
, NDR_SCALARS
, r
->in
.state
));
4651 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.offered
));
4653 if (flags
& NDR_OUT
) {
4654 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->out
.service_status
));
4655 if (r
->out
.service_status
) {
4656 NDR_CHECK(ndr_push_ENUM_SERVICE_STATUSA(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->out
.service_status
));
4658 if (r
->out
.needed
== NULL
) {
4659 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
4661 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, *r
->out
.needed
));
4662 if (r
->out
.services_returned
== NULL
) {
4663 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
4665 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, *r
->out
.services_returned
));
4666 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
4668 return NDR_ERR_SUCCESS
;
4671 static enum ndr_err_code
ndr_pull_svcctl_EnumDependentServicesA(struct ndr_pull
*ndr
, int flags
, struct svcctl_EnumDependentServicesA
*r
)
4673 uint32_t _ptr_service_status
;
4674 TALLOC_CTX
*_mem_save_service_0
;
4675 TALLOC_CTX
*_mem_save_service_status_0
;
4676 TALLOC_CTX
*_mem_save_needed_0
;
4677 TALLOC_CTX
*_mem_save_services_returned_0
;
4678 if (flags
& NDR_IN
) {
4679 ZERO_STRUCT(r
->out
);
4681 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
4682 NDR_PULL_ALLOC(ndr
, r
->in
.service
);
4684 _mem_save_service_0
= NDR_PULL_GET_MEM_CTX(ndr
);
4685 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.service
, LIBNDR_FLAG_REF_ALLOC
);
4686 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
, r
->in
.service
));
4687 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_service_0
, LIBNDR_FLAG_REF_ALLOC
);
4688 NDR_CHECK(ndr_pull_svcctl_ServiceState(ndr
, NDR_SCALARS
, &r
->in
.state
));
4689 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.offered
));
4690 NDR_PULL_ALLOC(ndr
, r
->out
.needed
);
4691 ZERO_STRUCTP(r
->out
.needed
);
4692 NDR_PULL_ALLOC(ndr
, r
->out
.services_returned
);
4693 ZERO_STRUCTP(r
->out
.services_returned
);
4695 if (flags
& NDR_OUT
) {
4696 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_service_status
));
4697 if (_ptr_service_status
) {
4698 NDR_PULL_ALLOC(ndr
, r
->out
.service_status
);
4700 r
->out
.service_status
= NULL
;
4702 if (r
->out
.service_status
) {
4703 _mem_save_service_status_0
= NDR_PULL_GET_MEM_CTX(ndr
);
4704 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.service_status
, 0);
4705 NDR_CHECK(ndr_pull_ENUM_SERVICE_STATUSA(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->out
.service_status
));
4706 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_service_status_0
, 0);
4708 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
4709 NDR_PULL_ALLOC(ndr
, r
->out
.needed
);
4711 _mem_save_needed_0
= NDR_PULL_GET_MEM_CTX(ndr
);
4712 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.needed
, LIBNDR_FLAG_REF_ALLOC
);
4713 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, r
->out
.needed
));
4714 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_needed_0
, LIBNDR_FLAG_REF_ALLOC
);
4715 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
4716 NDR_PULL_ALLOC(ndr
, r
->out
.services_returned
);
4718 _mem_save_services_returned_0
= NDR_PULL_GET_MEM_CTX(ndr
);
4719 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.services_returned
, LIBNDR_FLAG_REF_ALLOC
);
4720 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, r
->out
.services_returned
));
4721 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_services_returned_0
, LIBNDR_FLAG_REF_ALLOC
);
4722 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
4724 return NDR_ERR_SUCCESS
;
4727 _PUBLIC_
void ndr_print_svcctl_EnumDependentServicesA(struct ndr_print
*ndr
, const char *name
, int flags
, const struct svcctl_EnumDependentServicesA
*r
)
4729 ndr_print_struct(ndr
, name
, "svcctl_EnumDependentServicesA");
4731 if (flags
& NDR_SET_VALUES
) {
4732 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
4734 if (flags
& NDR_IN
) {
4735 ndr_print_struct(ndr
, "in", "svcctl_EnumDependentServicesA");
4737 ndr_print_ptr(ndr
, "service", r
->in
.service
);
4739 ndr_print_policy_handle(ndr
, "service", r
->in
.service
);
4741 ndr_print_svcctl_ServiceState(ndr
, "state", r
->in
.state
);
4742 ndr_print_uint32(ndr
, "offered", r
->in
.offered
);
4745 if (flags
& NDR_OUT
) {
4746 ndr_print_struct(ndr
, "out", "svcctl_EnumDependentServicesA");
4748 ndr_print_ptr(ndr
, "service_status", r
->out
.service_status
);
4750 if (r
->out
.service_status
) {
4751 ndr_print_ENUM_SERVICE_STATUSA(ndr
, "service_status", r
->out
.service_status
);
4754 ndr_print_ptr(ndr
, "needed", r
->out
.needed
);
4756 ndr_print_uint32(ndr
, "needed", *r
->out
.needed
);
4758 ndr_print_ptr(ndr
, "services_returned", r
->out
.services_returned
);
4760 ndr_print_uint32(ndr
, "services_returned", *r
->out
.services_returned
);
4762 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
4768 static enum ndr_err_code
ndr_push_svcctl_EnumServicesStatusA(struct ndr_push
*ndr
, int flags
, const struct svcctl_EnumServicesStatusA
*r
)
4770 if (flags
& NDR_IN
) {
4771 if (r
->in
.handle
== NULL
) {
4772 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
4774 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
, r
->in
.handle
));
4775 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.type
));
4776 NDR_CHECK(ndr_push_svcctl_ServiceState(ndr
, NDR_SCALARS
, r
->in
.state
));
4777 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.offered
));
4778 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.resume_handle
));
4779 if (r
->in
.resume_handle
) {
4780 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, *r
->in
.resume_handle
));
4783 if (flags
& NDR_OUT
) {
4784 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, r
->in
.offered
));
4785 NDR_CHECK(ndr_push_array_uint8(ndr
, NDR_SCALARS
, r
->out
.service
, r
->in
.offered
));
4786 if (r
->out
.needed
== NULL
) {
4787 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
4789 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, *r
->out
.needed
));
4790 if (r
->out
.services_returned
== NULL
) {
4791 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
4793 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, *r
->out
.services_returned
));
4794 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->out
.resume_handle
));
4795 if (r
->out
.resume_handle
) {
4796 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, *r
->out
.resume_handle
));
4798 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
4800 return NDR_ERR_SUCCESS
;
4803 static enum ndr_err_code
ndr_pull_svcctl_EnumServicesStatusA(struct ndr_pull
*ndr
, int flags
, struct svcctl_EnumServicesStatusA
*r
)
4805 uint32_t _ptr_resume_handle
;
4806 TALLOC_CTX
*_mem_save_handle_0
;
4807 TALLOC_CTX
*_mem_save_needed_0
;
4808 TALLOC_CTX
*_mem_save_services_returned_0
;
4809 TALLOC_CTX
*_mem_save_resume_handle_0
;
4810 if (flags
& NDR_IN
) {
4811 ZERO_STRUCT(r
->out
);
4813 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
4814 NDR_PULL_ALLOC(ndr
, r
->in
.handle
);
4816 _mem_save_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
4817 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.handle
, LIBNDR_FLAG_REF_ALLOC
);
4818 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
, r
->in
.handle
));
4819 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_handle_0
, LIBNDR_FLAG_REF_ALLOC
);
4820 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.type
));
4821 NDR_CHECK(ndr_pull_svcctl_ServiceState(ndr
, NDR_SCALARS
, &r
->in
.state
));
4822 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.offered
));
4823 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_resume_handle
));
4824 if (_ptr_resume_handle
) {
4825 NDR_PULL_ALLOC(ndr
, r
->in
.resume_handle
);
4827 r
->in
.resume_handle
= NULL
;
4829 if (r
->in
.resume_handle
) {
4830 _mem_save_resume_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
4831 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.resume_handle
, 0);
4832 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, r
->in
.resume_handle
));
4833 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_resume_handle_0
, 0);
4835 NDR_PULL_ALLOC(ndr
, r
->out
.needed
);
4836 ZERO_STRUCTP(r
->out
.needed
);
4837 NDR_PULL_ALLOC(ndr
, r
->out
.services_returned
);
4838 ZERO_STRUCTP(r
->out
.services_returned
);
4840 if (flags
& NDR_OUT
) {
4841 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->out
.service
));
4842 NDR_PULL_ALLOC_N(ndr
, r
->out
.service
, ndr_get_array_size(ndr
, &r
->out
.service
));
4843 NDR_CHECK(ndr_pull_array_uint8(ndr
, NDR_SCALARS
, r
->out
.service
, ndr_get_array_size(ndr
, &r
->out
.service
)));
4844 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
4845 NDR_PULL_ALLOC(ndr
, r
->out
.needed
);
4847 _mem_save_needed_0
= NDR_PULL_GET_MEM_CTX(ndr
);
4848 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.needed
, LIBNDR_FLAG_REF_ALLOC
);
4849 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, r
->out
.needed
));
4850 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_needed_0
, LIBNDR_FLAG_REF_ALLOC
);
4851 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
4852 NDR_PULL_ALLOC(ndr
, r
->out
.services_returned
);
4854 _mem_save_services_returned_0
= NDR_PULL_GET_MEM_CTX(ndr
);
4855 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.services_returned
, LIBNDR_FLAG_REF_ALLOC
);
4856 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, r
->out
.services_returned
));
4857 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_services_returned_0
, LIBNDR_FLAG_REF_ALLOC
);
4858 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_resume_handle
));
4859 if (_ptr_resume_handle
) {
4860 NDR_PULL_ALLOC(ndr
, r
->out
.resume_handle
);
4862 r
->out
.resume_handle
= NULL
;
4864 if (r
->out
.resume_handle
) {
4865 _mem_save_resume_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
4866 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.resume_handle
, 0);
4867 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, r
->out
.resume_handle
));
4868 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_resume_handle_0
, 0);
4870 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
4871 if (r
->out
.service
) {
4872 NDR_CHECK(ndr_check_array_size(ndr
, (void*)&r
->out
.service
, r
->in
.offered
));
4875 return NDR_ERR_SUCCESS
;
4878 _PUBLIC_
void ndr_print_svcctl_EnumServicesStatusA(struct ndr_print
*ndr
, const char *name
, int flags
, const struct svcctl_EnumServicesStatusA
*r
)
4880 ndr_print_struct(ndr
, name
, "svcctl_EnumServicesStatusA");
4882 if (flags
& NDR_SET_VALUES
) {
4883 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
4885 if (flags
& NDR_IN
) {
4886 ndr_print_struct(ndr
, "in", "svcctl_EnumServicesStatusA");
4888 ndr_print_ptr(ndr
, "handle", r
->in
.handle
);
4890 ndr_print_policy_handle(ndr
, "handle", r
->in
.handle
);
4892 ndr_print_uint32(ndr
, "type", r
->in
.type
);
4893 ndr_print_svcctl_ServiceState(ndr
, "state", r
->in
.state
);
4894 ndr_print_uint32(ndr
, "offered", r
->in
.offered
);
4895 ndr_print_ptr(ndr
, "resume_handle", r
->in
.resume_handle
);
4897 if (r
->in
.resume_handle
) {
4898 ndr_print_uint32(ndr
, "resume_handle", *r
->in
.resume_handle
);
4903 if (flags
& NDR_OUT
) {
4904 ndr_print_struct(ndr
, "out", "svcctl_EnumServicesStatusA");
4906 ndr_print_array_uint8(ndr
, "service", r
->out
.service
, r
->in
.offered
);
4907 ndr_print_ptr(ndr
, "needed", r
->out
.needed
);
4909 ndr_print_uint32(ndr
, "needed", *r
->out
.needed
);
4911 ndr_print_ptr(ndr
, "services_returned", r
->out
.services_returned
);
4913 ndr_print_uint32(ndr
, "services_returned", *r
->out
.services_returned
);
4915 ndr_print_ptr(ndr
, "resume_handle", r
->out
.resume_handle
);
4917 if (r
->out
.resume_handle
) {
4918 ndr_print_uint32(ndr
, "resume_handle", *r
->out
.resume_handle
);
4921 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
4927 static enum ndr_err_code
ndr_push_svcctl_OpenSCManagerA(struct ndr_push
*ndr
, int flags
, const struct svcctl_OpenSCManagerA
*r
)
4929 if (flags
& NDR_IN
) {
4930 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.MachineName
));
4931 if (r
->in
.MachineName
) {
4932 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.MachineName
, CH_UTF16
)));
4933 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, 0));
4934 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.MachineName
, CH_UTF16
)));
4935 NDR_CHECK(ndr_push_charset(ndr
, NDR_SCALARS
, r
->in
.MachineName
, ndr_charset_length(r
->in
.MachineName
, CH_UTF16
), sizeof(uint16_t), CH_UTF16
));
4937 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.DatabaseName
));
4938 if (r
->in
.DatabaseName
) {
4939 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.DatabaseName
, CH_UTF16
)));
4940 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, 0));
4941 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.DatabaseName
, CH_UTF16
)));
4942 NDR_CHECK(ndr_push_charset(ndr
, NDR_SCALARS
, r
->in
.DatabaseName
, ndr_charset_length(r
->in
.DatabaseName
, CH_UTF16
), sizeof(uint16_t), CH_UTF16
));
4944 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.access_mask
));
4946 if (flags
& NDR_OUT
) {
4947 if (r
->out
.handle
== NULL
) {
4948 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
4950 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
, r
->out
.handle
));
4951 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
4953 return NDR_ERR_SUCCESS
;
4956 static enum ndr_err_code
ndr_pull_svcctl_OpenSCManagerA(struct ndr_pull
*ndr
, int flags
, struct svcctl_OpenSCManagerA
*r
)
4958 uint32_t _ptr_MachineName
;
4959 uint32_t _ptr_DatabaseName
;
4960 TALLOC_CTX
*_mem_save_MachineName_0
;
4961 TALLOC_CTX
*_mem_save_DatabaseName_0
;
4962 TALLOC_CTX
*_mem_save_handle_0
;
4963 if (flags
& NDR_IN
) {
4964 ZERO_STRUCT(r
->out
);
4966 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_MachineName
));
4967 if (_ptr_MachineName
) {
4968 NDR_PULL_ALLOC(ndr
, r
->in
.MachineName
);
4970 r
->in
.MachineName
= NULL
;
4972 if (r
->in
.MachineName
) {
4973 _mem_save_MachineName_0
= NDR_PULL_GET_MEM_CTX(ndr
);
4974 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.MachineName
, 0);
4975 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->in
.MachineName
));
4976 NDR_CHECK(ndr_pull_array_length(ndr
, &r
->in
.MachineName
));
4977 if (ndr_get_array_length(ndr
, &r
->in
.MachineName
) > ndr_get_array_size(ndr
, &r
->in
.MachineName
)) {
4978 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
));
4980 NDR_CHECK(ndr_check_string_terminator(ndr
, ndr_get_array_length(ndr
, &r
->in
.MachineName
), sizeof(uint16_t)));
4981 NDR_CHECK(ndr_pull_charset(ndr
, NDR_SCALARS
, &r
->in
.MachineName
, ndr_get_array_length(ndr
, &r
->in
.MachineName
), sizeof(uint16_t), CH_UTF16
));
4982 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_MachineName_0
, 0);
4984 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_DatabaseName
));
4985 if (_ptr_DatabaseName
) {
4986 NDR_PULL_ALLOC(ndr
, r
->in
.DatabaseName
);
4988 r
->in
.DatabaseName
= NULL
;
4990 if (r
->in
.DatabaseName
) {
4991 _mem_save_DatabaseName_0
= NDR_PULL_GET_MEM_CTX(ndr
);
4992 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.DatabaseName
, 0);
4993 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->in
.DatabaseName
));
4994 NDR_CHECK(ndr_pull_array_length(ndr
, &r
->in
.DatabaseName
));
4995 if (ndr_get_array_length(ndr
, &r
->in
.DatabaseName
) > ndr_get_array_size(ndr
, &r
->in
.DatabaseName
)) {
4996 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
));
4998 NDR_CHECK(ndr_check_string_terminator(ndr
, ndr_get_array_length(ndr
, &r
->in
.DatabaseName
), sizeof(uint16_t)));
4999 NDR_CHECK(ndr_pull_charset(ndr
, NDR_SCALARS
, &r
->in
.DatabaseName
, ndr_get_array_length(ndr
, &r
->in
.DatabaseName
), sizeof(uint16_t), CH_UTF16
));
5000 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_DatabaseName_0
, 0);
5002 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.access_mask
));
5003 NDR_PULL_ALLOC(ndr
, r
->out
.handle
);
5004 ZERO_STRUCTP(r
->out
.handle
);
5006 if (flags
& NDR_OUT
) {
5007 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
5008 NDR_PULL_ALLOC(ndr
, r
->out
.handle
);
5010 _mem_save_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
5011 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.handle
, LIBNDR_FLAG_REF_ALLOC
);
5012 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
, r
->out
.handle
));
5013 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_handle_0
, LIBNDR_FLAG_REF_ALLOC
);
5014 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
5016 return NDR_ERR_SUCCESS
;
5019 _PUBLIC_
void ndr_print_svcctl_OpenSCManagerA(struct ndr_print
*ndr
, const char *name
, int flags
, const struct svcctl_OpenSCManagerA
*r
)
5021 ndr_print_struct(ndr
, name
, "svcctl_OpenSCManagerA");
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_OpenSCManagerA");
5029 ndr_print_ptr(ndr
, "MachineName", r
->in
.MachineName
);
5031 if (r
->in
.MachineName
) {
5032 ndr_print_string(ndr
, "MachineName", r
->in
.MachineName
);
5035 ndr_print_ptr(ndr
, "DatabaseName", r
->in
.DatabaseName
);
5037 if (r
->in
.DatabaseName
) {
5038 ndr_print_string(ndr
, "DatabaseName", r
->in
.DatabaseName
);
5041 ndr_print_uint32(ndr
, "access_mask", r
->in
.access_mask
);
5044 if (flags
& NDR_OUT
) {
5045 ndr_print_struct(ndr
, "out", "svcctl_OpenSCManagerA");
5047 ndr_print_ptr(ndr
, "handle", r
->out
.handle
);
5049 ndr_print_policy_handle(ndr
, "handle", r
->out
.handle
);
5051 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
5057 static enum ndr_err_code
ndr_push_svcctl_OpenServiceA(struct ndr_push
*ndr
, int flags
, const struct svcctl_OpenServiceA
*r
)
5059 if (flags
& NDR_IN
) {
5060 if (r
->in
.scmanager_handle
== NULL
) {
5061 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
5063 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
, r
->in
.scmanager_handle
));
5064 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.ServiceName
));
5065 if (r
->in
.ServiceName
) {
5066 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.ServiceName
, CH_UTF16
)));
5067 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, 0));
5068 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.ServiceName
, CH_UTF16
)));
5069 NDR_CHECK(ndr_push_charset(ndr
, NDR_SCALARS
, r
->in
.ServiceName
, ndr_charset_length(r
->in
.ServiceName
, CH_UTF16
), sizeof(uint16_t), CH_UTF16
));
5071 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.access_mask
));
5073 if (flags
& NDR_OUT
) {
5074 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
5076 return NDR_ERR_SUCCESS
;
5079 static enum ndr_err_code
ndr_pull_svcctl_OpenServiceA(struct ndr_pull
*ndr
, int flags
, struct svcctl_OpenServiceA
*r
)
5081 uint32_t _ptr_ServiceName
;
5082 TALLOC_CTX
*_mem_save_scmanager_handle_0
;
5083 TALLOC_CTX
*_mem_save_ServiceName_0
;
5084 if (flags
& NDR_IN
) {
5085 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
5086 NDR_PULL_ALLOC(ndr
, r
->in
.scmanager_handle
);
5088 _mem_save_scmanager_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
5089 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.scmanager_handle
, LIBNDR_FLAG_REF_ALLOC
);
5090 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
, r
->in
.scmanager_handle
));
5091 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_scmanager_handle_0
, LIBNDR_FLAG_REF_ALLOC
);
5092 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_ServiceName
));
5093 if (_ptr_ServiceName
) {
5094 NDR_PULL_ALLOC(ndr
, r
->in
.ServiceName
);
5096 r
->in
.ServiceName
= NULL
;
5098 if (r
->in
.ServiceName
) {
5099 _mem_save_ServiceName_0
= NDR_PULL_GET_MEM_CTX(ndr
);
5100 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.ServiceName
, 0);
5101 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->in
.ServiceName
));
5102 NDR_CHECK(ndr_pull_array_length(ndr
, &r
->in
.ServiceName
));
5103 if (ndr_get_array_length(ndr
, &r
->in
.ServiceName
) > ndr_get_array_size(ndr
, &r
->in
.ServiceName
)) {
5104 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
));
5106 NDR_CHECK(ndr_check_string_terminator(ndr
, ndr_get_array_length(ndr
, &r
->in
.ServiceName
), sizeof(uint16_t)));
5107 NDR_CHECK(ndr_pull_charset(ndr
, NDR_SCALARS
, &r
->in
.ServiceName
, ndr_get_array_length(ndr
, &r
->in
.ServiceName
), sizeof(uint16_t), CH_UTF16
));
5108 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_ServiceName_0
, 0);
5110 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.access_mask
));
5112 if (flags
& NDR_OUT
) {
5113 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
5115 return NDR_ERR_SUCCESS
;
5118 _PUBLIC_
void ndr_print_svcctl_OpenServiceA(struct ndr_print
*ndr
, const char *name
, int flags
, const struct svcctl_OpenServiceA
*r
)
5120 ndr_print_struct(ndr
, name
, "svcctl_OpenServiceA");
5122 if (flags
& NDR_SET_VALUES
) {
5123 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
5125 if (flags
& NDR_IN
) {
5126 ndr_print_struct(ndr
, "in", "svcctl_OpenServiceA");
5128 ndr_print_ptr(ndr
, "scmanager_handle", r
->in
.scmanager_handle
);
5130 ndr_print_policy_handle(ndr
, "scmanager_handle", r
->in
.scmanager_handle
);
5132 ndr_print_ptr(ndr
, "ServiceName", r
->in
.ServiceName
);
5134 if (r
->in
.ServiceName
) {
5135 ndr_print_string(ndr
, "ServiceName", r
->in
.ServiceName
);
5138 ndr_print_uint32(ndr
, "access_mask", r
->in
.access_mask
);
5141 if (flags
& NDR_OUT
) {
5142 ndr_print_struct(ndr
, "out", "svcctl_OpenServiceA");
5144 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
5150 static enum ndr_err_code
ndr_push_svcctl_QueryServiceConfigA(struct ndr_push
*ndr
, int flags
, const struct svcctl_QueryServiceConfigA
*r
)
5152 if (flags
& NDR_IN
) {
5153 if (r
->in
.handle
== NULL
) {
5154 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
5156 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
, r
->in
.handle
));
5157 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.offered
));
5159 if (flags
& NDR_OUT
) {
5160 NDR_CHECK(ndr_push_array_uint8(ndr
, NDR_SCALARS
, r
->out
.query
, r
->in
.offered
));
5161 if (r
->out
.needed
== NULL
) {
5162 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
5164 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, *r
->out
.needed
));
5165 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
5167 return NDR_ERR_SUCCESS
;
5170 static enum ndr_err_code
ndr_pull_svcctl_QueryServiceConfigA(struct ndr_pull
*ndr
, int flags
, struct svcctl_QueryServiceConfigA
*r
)
5172 TALLOC_CTX
*_mem_save_handle_0
;
5173 TALLOC_CTX
*_mem_save_needed_0
;
5174 if (flags
& NDR_IN
) {
5175 ZERO_STRUCT(r
->out
);
5177 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
5178 NDR_PULL_ALLOC(ndr
, r
->in
.handle
);
5180 _mem_save_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
5181 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.handle
, LIBNDR_FLAG_REF_ALLOC
);
5182 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
, r
->in
.handle
));
5183 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_handle_0
, LIBNDR_FLAG_REF_ALLOC
);
5184 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.offered
));
5185 NDR_PULL_ALLOC(ndr
, r
->out
.needed
);
5186 ZERO_STRUCTP(r
->out
.needed
);
5188 if (flags
& NDR_OUT
) {
5189 NDR_PULL_ALLOC_N(ndr
, r
->out
.query
, r
->in
.offered
);
5190 NDR_CHECK(ndr_pull_array_uint8(ndr
, NDR_SCALARS
, r
->out
.query
, r
->in
.offered
));
5191 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
5192 NDR_PULL_ALLOC(ndr
, r
->out
.needed
);
5194 _mem_save_needed_0
= NDR_PULL_GET_MEM_CTX(ndr
);
5195 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.needed
, LIBNDR_FLAG_REF_ALLOC
);
5196 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, r
->out
.needed
));
5197 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_needed_0
, LIBNDR_FLAG_REF_ALLOC
);
5198 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
5200 return NDR_ERR_SUCCESS
;
5203 _PUBLIC_
void ndr_print_svcctl_QueryServiceConfigA(struct ndr_print
*ndr
, const char *name
, int flags
, const struct svcctl_QueryServiceConfigA
*r
)
5205 ndr_print_struct(ndr
, name
, "svcctl_QueryServiceConfigA");
5207 if (flags
& NDR_SET_VALUES
) {
5208 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
5210 if (flags
& NDR_IN
) {
5211 ndr_print_struct(ndr
, "in", "svcctl_QueryServiceConfigA");
5213 ndr_print_ptr(ndr
, "handle", r
->in
.handle
);
5215 ndr_print_policy_handle(ndr
, "handle", r
->in
.handle
);
5217 ndr_print_uint32(ndr
, "offered", r
->in
.offered
);
5220 if (flags
& NDR_OUT
) {
5221 ndr_print_struct(ndr
, "out", "svcctl_QueryServiceConfigA");
5223 ndr_print_array_uint8(ndr
, "query", r
->out
.query
, r
->in
.offered
);
5224 ndr_print_ptr(ndr
, "needed", r
->out
.needed
);
5226 ndr_print_uint32(ndr
, "needed", *r
->out
.needed
);
5228 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
5234 static enum ndr_err_code
ndr_push_svcctl_QueryServiceLockStatusA(struct ndr_push
*ndr
, int flags
, const struct svcctl_QueryServiceLockStatusA
*r
)
5236 if (flags
& NDR_IN
) {
5237 if (r
->in
.handle
== NULL
) {
5238 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
5240 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
, r
->in
.handle
));
5241 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.offered
));
5243 if (flags
& NDR_OUT
) {
5244 if (r
->out
.lock_status
== NULL
) {
5245 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
5247 NDR_CHECK(ndr_push_SERVICE_LOCK_STATUS(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->out
.lock_status
));
5248 if (r
->out
.needed
== NULL
) {
5249 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
5251 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, *r
->out
.needed
));
5252 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
5254 return NDR_ERR_SUCCESS
;
5257 static enum ndr_err_code
ndr_pull_svcctl_QueryServiceLockStatusA(struct ndr_pull
*ndr
, int flags
, struct svcctl_QueryServiceLockStatusA
*r
)
5259 TALLOC_CTX
*_mem_save_handle_0
;
5260 TALLOC_CTX
*_mem_save_lock_status_0
;
5261 TALLOC_CTX
*_mem_save_needed_0
;
5262 if (flags
& NDR_IN
) {
5263 ZERO_STRUCT(r
->out
);
5265 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
5266 NDR_PULL_ALLOC(ndr
, r
->in
.handle
);
5268 _mem_save_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
5269 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.handle
, LIBNDR_FLAG_REF_ALLOC
);
5270 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
, r
->in
.handle
));
5271 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_handle_0
, LIBNDR_FLAG_REF_ALLOC
);
5272 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.offered
));
5273 NDR_PULL_ALLOC(ndr
, r
->out
.lock_status
);
5274 ZERO_STRUCTP(r
->out
.lock_status
);
5275 NDR_PULL_ALLOC(ndr
, r
->out
.needed
);
5276 ZERO_STRUCTP(r
->out
.needed
);
5278 if (flags
& NDR_OUT
) {
5279 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
5280 NDR_PULL_ALLOC(ndr
, r
->out
.lock_status
);
5282 _mem_save_lock_status_0
= NDR_PULL_GET_MEM_CTX(ndr
);
5283 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.lock_status
, LIBNDR_FLAG_REF_ALLOC
);
5284 NDR_CHECK(ndr_pull_SERVICE_LOCK_STATUS(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->out
.lock_status
));
5285 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_lock_status_0
, LIBNDR_FLAG_REF_ALLOC
);
5286 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
5287 NDR_PULL_ALLOC(ndr
, r
->out
.needed
);
5289 _mem_save_needed_0
= NDR_PULL_GET_MEM_CTX(ndr
);
5290 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.needed
, LIBNDR_FLAG_REF_ALLOC
);
5291 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, r
->out
.needed
));
5292 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_needed_0
, LIBNDR_FLAG_REF_ALLOC
);
5293 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
5295 return NDR_ERR_SUCCESS
;
5298 _PUBLIC_
void ndr_print_svcctl_QueryServiceLockStatusA(struct ndr_print
*ndr
, const char *name
, int flags
, const struct svcctl_QueryServiceLockStatusA
*r
)
5300 ndr_print_struct(ndr
, name
, "svcctl_QueryServiceLockStatusA");
5302 if (flags
& NDR_SET_VALUES
) {
5303 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
5305 if (flags
& NDR_IN
) {
5306 ndr_print_struct(ndr
, "in", "svcctl_QueryServiceLockStatusA");
5308 ndr_print_ptr(ndr
, "handle", r
->in
.handle
);
5310 ndr_print_policy_handle(ndr
, "handle", r
->in
.handle
);
5312 ndr_print_uint32(ndr
, "offered", r
->in
.offered
);
5315 if (flags
& NDR_OUT
) {
5316 ndr_print_struct(ndr
, "out", "svcctl_QueryServiceLockStatusA");
5318 ndr_print_ptr(ndr
, "lock_status", r
->out
.lock_status
);
5320 ndr_print_SERVICE_LOCK_STATUS(ndr
, "lock_status", r
->out
.lock_status
);
5322 ndr_print_ptr(ndr
, "needed", r
->out
.needed
);
5324 ndr_print_uint32(ndr
, "needed", *r
->out
.needed
);
5326 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
5332 static enum ndr_err_code
ndr_push_svcctl_StartServiceA(struct ndr_push
*ndr
, int flags
, const struct svcctl_StartServiceA
*r
)
5334 if (flags
& NDR_IN
) {
5335 if (r
->in
.handle
== NULL
) {
5336 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
5338 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
, r
->in
.handle
));
5339 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.NumArgs
));
5340 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.Arguments
));
5341 if (r
->in
.Arguments
) {
5342 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.Arguments
, CH_UTF16
)));
5343 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, 0));
5344 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.Arguments
, CH_UTF16
)));
5345 NDR_CHECK(ndr_push_charset(ndr
, NDR_SCALARS
, r
->in
.Arguments
, ndr_charset_length(r
->in
.Arguments
, CH_UTF16
), sizeof(uint16_t), CH_UTF16
));
5348 if (flags
& NDR_OUT
) {
5349 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
5351 return NDR_ERR_SUCCESS
;
5354 static enum ndr_err_code
ndr_pull_svcctl_StartServiceA(struct ndr_pull
*ndr
, int flags
, struct svcctl_StartServiceA
*r
)
5356 uint32_t _ptr_Arguments
;
5357 TALLOC_CTX
*_mem_save_handle_0
;
5358 TALLOC_CTX
*_mem_save_Arguments_0
;
5359 if (flags
& NDR_IN
) {
5360 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
5361 NDR_PULL_ALLOC(ndr
, r
->in
.handle
);
5363 _mem_save_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
5364 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.handle
, LIBNDR_FLAG_REF_ALLOC
);
5365 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
, r
->in
.handle
));
5366 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_handle_0
, LIBNDR_FLAG_REF_ALLOC
);
5367 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.NumArgs
));
5368 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_Arguments
));
5369 if (_ptr_Arguments
) {
5370 NDR_PULL_ALLOC(ndr
, r
->in
.Arguments
);
5372 r
->in
.Arguments
= NULL
;
5374 if (r
->in
.Arguments
) {
5375 _mem_save_Arguments_0
= NDR_PULL_GET_MEM_CTX(ndr
);
5376 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.Arguments
, 0);
5377 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->in
.Arguments
));
5378 NDR_CHECK(ndr_pull_array_length(ndr
, &r
->in
.Arguments
));
5379 if (ndr_get_array_length(ndr
, &r
->in
.Arguments
) > ndr_get_array_size(ndr
, &r
->in
.Arguments
)) {
5380 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
));
5382 NDR_CHECK(ndr_check_string_terminator(ndr
, ndr_get_array_length(ndr
, &r
->in
.Arguments
), sizeof(uint16_t)));
5383 NDR_CHECK(ndr_pull_charset(ndr
, NDR_SCALARS
, &r
->in
.Arguments
, ndr_get_array_length(ndr
, &r
->in
.Arguments
), sizeof(uint16_t), CH_UTF16
));
5384 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_Arguments_0
, 0);
5387 if (flags
& NDR_OUT
) {
5388 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
5390 return NDR_ERR_SUCCESS
;
5393 _PUBLIC_
void ndr_print_svcctl_StartServiceA(struct ndr_print
*ndr
, const char *name
, int flags
, const struct svcctl_StartServiceA
*r
)
5395 ndr_print_struct(ndr
, name
, "svcctl_StartServiceA");
5397 if (flags
& NDR_SET_VALUES
) {
5398 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
5400 if (flags
& NDR_IN
) {
5401 ndr_print_struct(ndr
, "in", "svcctl_StartServiceA");
5403 ndr_print_ptr(ndr
, "handle", r
->in
.handle
);
5405 ndr_print_policy_handle(ndr
, "handle", r
->in
.handle
);
5407 ndr_print_uint32(ndr
, "NumArgs", r
->in
.NumArgs
);
5408 ndr_print_ptr(ndr
, "Arguments", r
->in
.Arguments
);
5410 if (r
->in
.Arguments
) {
5411 ndr_print_string(ndr
, "Arguments", r
->in
.Arguments
);
5416 if (flags
& NDR_OUT
) {
5417 ndr_print_struct(ndr
, "out", "svcctl_StartServiceA");
5419 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
5425 static enum ndr_err_code
ndr_push_svcctl_GetServiceDisplayNameA(struct ndr_push
*ndr
, int flags
, const struct svcctl_GetServiceDisplayNameA
*r
)
5427 if (flags
& NDR_IN
) {
5428 if (r
->in
.handle
== NULL
) {
5429 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
5431 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
, r
->in
.handle
));
5432 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.service_name
));
5433 if (r
->in
.service_name
) {
5434 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.service_name
, CH_UTF16
)));
5435 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, 0));
5436 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.service_name
, CH_UTF16
)));
5437 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
));
5439 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.display_name_length
));
5440 if (r
->in
.display_name_length
) {
5441 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, *r
->in
.display_name_length
));
5444 if (flags
& NDR_OUT
) {
5445 if (r
->out
.display_name
== NULL
) {
5446 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
5448 NDR_CHECK(ndr_push_unique_ptr(ndr
, *r
->out
.display_name
));
5449 if (*r
->out
.display_name
) {
5450 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, ndr_charset_length(*r
->out
.display_name
, CH_UTF16
)));
5451 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, 0));
5452 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, ndr_charset_length(*r
->out
.display_name
, CH_UTF16
)));
5453 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
));
5455 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->out
.display_name_length
));
5456 if (r
->out
.display_name_length
) {
5457 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, *r
->out
.display_name_length
));
5459 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
5461 return NDR_ERR_SUCCESS
;
5464 static enum ndr_err_code
ndr_pull_svcctl_GetServiceDisplayNameA(struct ndr_pull
*ndr
, int flags
, struct svcctl_GetServiceDisplayNameA
*r
)
5466 uint32_t _ptr_service_name
;
5467 uint32_t _ptr_display_name
;
5468 uint32_t _ptr_display_name_length
;
5469 TALLOC_CTX
*_mem_save_handle_0
;
5470 TALLOC_CTX
*_mem_save_service_name_0
;
5471 TALLOC_CTX
*_mem_save_display_name_0
;
5472 TALLOC_CTX
*_mem_save_display_name_1
;
5473 TALLOC_CTX
*_mem_save_display_name_length_0
;
5474 if (flags
& NDR_IN
) {
5475 ZERO_STRUCT(r
->out
);
5477 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
5478 NDR_PULL_ALLOC(ndr
, r
->in
.handle
);
5480 _mem_save_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
5481 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.handle
, LIBNDR_FLAG_REF_ALLOC
);
5482 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
, r
->in
.handle
));
5483 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_handle_0
, LIBNDR_FLAG_REF_ALLOC
);
5484 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_service_name
));
5485 if (_ptr_service_name
) {
5486 NDR_PULL_ALLOC(ndr
, r
->in
.service_name
);
5488 r
->in
.service_name
= NULL
;
5490 if (r
->in
.service_name
) {
5491 _mem_save_service_name_0
= NDR_PULL_GET_MEM_CTX(ndr
);
5492 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.service_name
, 0);
5493 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->in
.service_name
));
5494 NDR_CHECK(ndr_pull_array_length(ndr
, &r
->in
.service_name
));
5495 if (ndr_get_array_length(ndr
, &r
->in
.service_name
) > ndr_get_array_size(ndr
, &r
->in
.service_name
)) {
5496 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
));
5498 NDR_CHECK(ndr_check_string_terminator(ndr
, ndr_get_array_length(ndr
, &r
->in
.service_name
), sizeof(uint16_t)));
5499 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
));
5500 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_service_name_0
, 0);
5502 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_display_name_length
));
5503 if (_ptr_display_name_length
) {
5504 NDR_PULL_ALLOC(ndr
, r
->in
.display_name_length
);
5506 r
->in
.display_name_length
= NULL
;
5508 if (r
->in
.display_name_length
) {
5509 _mem_save_display_name_length_0
= NDR_PULL_GET_MEM_CTX(ndr
);
5510 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.display_name_length
, 0);
5511 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, r
->in
.display_name_length
));
5512 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_display_name_length_0
, 0);
5514 NDR_PULL_ALLOC(ndr
, r
->out
.display_name
);
5515 ZERO_STRUCTP(r
->out
.display_name
);
5517 if (flags
& NDR_OUT
) {
5518 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
5519 NDR_PULL_ALLOC(ndr
, r
->out
.display_name
);
5521 _mem_save_display_name_0
= NDR_PULL_GET_MEM_CTX(ndr
);
5522 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.display_name
, LIBNDR_FLAG_REF_ALLOC
);
5523 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_display_name
));
5524 if (_ptr_display_name
) {
5525 NDR_PULL_ALLOC(ndr
, *r
->out
.display_name
);
5527 *r
->out
.display_name
= NULL
;
5529 if (*r
->out
.display_name
) {
5530 _mem_save_display_name_1
= NDR_PULL_GET_MEM_CTX(ndr
);
5531 NDR_PULL_SET_MEM_CTX(ndr
, *r
->out
.display_name
, 0);
5532 NDR_CHECK(ndr_pull_array_size(ndr
, r
->out
.display_name
));
5533 NDR_CHECK(ndr_pull_array_length(ndr
, r
->out
.display_name
));
5534 if (ndr_get_array_length(ndr
, r
->out
.display_name
) > ndr_get_array_size(ndr
, r
->out
.display_name
)) {
5535 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
));
5537 NDR_CHECK(ndr_check_string_terminator(ndr
, ndr_get_array_length(ndr
, r
->out
.display_name
), sizeof(uint16_t)));
5538 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
));
5539 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_display_name_1
, 0);
5541 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_display_name_0
, LIBNDR_FLAG_REF_ALLOC
);
5542 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_display_name_length
));
5543 if (_ptr_display_name_length
) {
5544 NDR_PULL_ALLOC(ndr
, r
->out
.display_name_length
);
5546 r
->out
.display_name_length
= NULL
;
5548 if (r
->out
.display_name_length
) {
5549 _mem_save_display_name_length_0
= NDR_PULL_GET_MEM_CTX(ndr
);
5550 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.display_name_length
, 0);
5551 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, r
->out
.display_name_length
));
5552 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_display_name_length_0
, 0);
5554 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
5556 return NDR_ERR_SUCCESS
;
5559 _PUBLIC_
void ndr_print_svcctl_GetServiceDisplayNameA(struct ndr_print
*ndr
, const char *name
, int flags
, const struct svcctl_GetServiceDisplayNameA
*r
)
5561 ndr_print_struct(ndr
, name
, "svcctl_GetServiceDisplayNameA");
5563 if (flags
& NDR_SET_VALUES
) {
5564 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
5566 if (flags
& NDR_IN
) {
5567 ndr_print_struct(ndr
, "in", "svcctl_GetServiceDisplayNameA");
5569 ndr_print_ptr(ndr
, "handle", r
->in
.handle
);
5571 ndr_print_policy_handle(ndr
, "handle", r
->in
.handle
);
5573 ndr_print_ptr(ndr
, "service_name", r
->in
.service_name
);
5575 if (r
->in
.service_name
) {
5576 ndr_print_string(ndr
, "service_name", r
->in
.service_name
);
5579 ndr_print_ptr(ndr
, "display_name_length", r
->in
.display_name_length
);
5581 if (r
->in
.display_name_length
) {
5582 ndr_print_uint32(ndr
, "display_name_length", *r
->in
.display_name_length
);
5587 if (flags
& NDR_OUT
) {
5588 ndr_print_struct(ndr
, "out", "svcctl_GetServiceDisplayNameA");
5590 ndr_print_ptr(ndr
, "display_name", r
->out
.display_name
);
5592 ndr_print_ptr(ndr
, "display_name", *r
->out
.display_name
);
5594 if (*r
->out
.display_name
) {
5595 ndr_print_string(ndr
, "display_name", *r
->out
.display_name
);
5599 ndr_print_ptr(ndr
, "display_name_length", r
->out
.display_name_length
);
5601 if (r
->out
.display_name_length
) {
5602 ndr_print_uint32(ndr
, "display_name_length", *r
->out
.display_name_length
);
5605 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
5611 static enum ndr_err_code
ndr_push_svcctl_GetServiceKeyNameA(struct ndr_push
*ndr
, int flags
, const struct svcctl_GetServiceKeyNameA
*r
)
5613 if (flags
& NDR_IN
) {
5614 if (r
->in
.handle
== NULL
) {
5615 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
5617 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
, r
->in
.handle
));
5618 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.service_name
));
5619 if (r
->in
.service_name
) {
5620 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.service_name
, CH_UTF16
)));
5621 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, 0));
5622 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.service_name
, CH_UTF16
)));
5623 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
));
5625 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.display_name_length
));
5626 if (r
->in
.display_name_length
) {
5627 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, *r
->in
.display_name_length
));
5630 if (flags
& NDR_OUT
) {
5631 if (r
->out
.key_name
== NULL
) {
5632 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
5634 NDR_CHECK(ndr_push_unique_ptr(ndr
, *r
->out
.key_name
));
5635 if (*r
->out
.key_name
) {
5636 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, ndr_charset_length(*r
->out
.key_name
, CH_UTF16
)));
5637 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, 0));
5638 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, ndr_charset_length(*r
->out
.key_name
, CH_UTF16
)));
5639 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
));
5641 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->out
.display_name_length
));
5642 if (r
->out
.display_name_length
) {
5643 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, *r
->out
.display_name_length
));
5645 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
5647 return NDR_ERR_SUCCESS
;
5650 static enum ndr_err_code
ndr_pull_svcctl_GetServiceKeyNameA(struct ndr_pull
*ndr
, int flags
, struct svcctl_GetServiceKeyNameA
*r
)
5652 uint32_t _ptr_service_name
;
5653 uint32_t _ptr_key_name
;
5654 uint32_t _ptr_display_name_length
;
5655 TALLOC_CTX
*_mem_save_handle_0
;
5656 TALLOC_CTX
*_mem_save_service_name_0
;
5657 TALLOC_CTX
*_mem_save_key_name_0
;
5658 TALLOC_CTX
*_mem_save_key_name_1
;
5659 TALLOC_CTX
*_mem_save_display_name_length_0
;
5660 if (flags
& NDR_IN
) {
5661 ZERO_STRUCT(r
->out
);
5663 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
5664 NDR_PULL_ALLOC(ndr
, r
->in
.handle
);
5666 _mem_save_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
5667 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.handle
, LIBNDR_FLAG_REF_ALLOC
);
5668 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
, r
->in
.handle
));
5669 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_handle_0
, LIBNDR_FLAG_REF_ALLOC
);
5670 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_service_name
));
5671 if (_ptr_service_name
) {
5672 NDR_PULL_ALLOC(ndr
, r
->in
.service_name
);
5674 r
->in
.service_name
= NULL
;
5676 if (r
->in
.service_name
) {
5677 _mem_save_service_name_0
= NDR_PULL_GET_MEM_CTX(ndr
);
5678 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.service_name
, 0);
5679 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->in
.service_name
));
5680 NDR_CHECK(ndr_pull_array_length(ndr
, &r
->in
.service_name
));
5681 if (ndr_get_array_length(ndr
, &r
->in
.service_name
) > ndr_get_array_size(ndr
, &r
->in
.service_name
)) {
5682 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
));
5684 NDR_CHECK(ndr_check_string_terminator(ndr
, ndr_get_array_length(ndr
, &r
->in
.service_name
), sizeof(uint16_t)));
5685 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
));
5686 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_service_name_0
, 0);
5688 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_display_name_length
));
5689 if (_ptr_display_name_length
) {
5690 NDR_PULL_ALLOC(ndr
, r
->in
.display_name_length
);
5692 r
->in
.display_name_length
= NULL
;
5694 if (r
->in
.display_name_length
) {
5695 _mem_save_display_name_length_0
= NDR_PULL_GET_MEM_CTX(ndr
);
5696 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.display_name_length
, 0);
5697 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, r
->in
.display_name_length
));
5698 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_display_name_length_0
, 0);
5700 NDR_PULL_ALLOC(ndr
, r
->out
.key_name
);
5701 ZERO_STRUCTP(r
->out
.key_name
);
5703 if (flags
& NDR_OUT
) {
5704 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
5705 NDR_PULL_ALLOC(ndr
, r
->out
.key_name
);
5707 _mem_save_key_name_0
= NDR_PULL_GET_MEM_CTX(ndr
);
5708 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.key_name
, LIBNDR_FLAG_REF_ALLOC
);
5709 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_key_name
));
5710 if (_ptr_key_name
) {
5711 NDR_PULL_ALLOC(ndr
, *r
->out
.key_name
);
5713 *r
->out
.key_name
= NULL
;
5715 if (*r
->out
.key_name
) {
5716 _mem_save_key_name_1
= NDR_PULL_GET_MEM_CTX(ndr
);
5717 NDR_PULL_SET_MEM_CTX(ndr
, *r
->out
.key_name
, 0);
5718 NDR_CHECK(ndr_pull_array_size(ndr
, r
->out
.key_name
));
5719 NDR_CHECK(ndr_pull_array_length(ndr
, r
->out
.key_name
));
5720 if (ndr_get_array_length(ndr
, r
->out
.key_name
) > ndr_get_array_size(ndr
, r
->out
.key_name
)) {
5721 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
));
5723 NDR_CHECK(ndr_check_string_terminator(ndr
, ndr_get_array_length(ndr
, r
->out
.key_name
), sizeof(uint16_t)));
5724 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
));
5725 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_key_name_1
, 0);
5727 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_key_name_0
, LIBNDR_FLAG_REF_ALLOC
);
5728 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_display_name_length
));
5729 if (_ptr_display_name_length
) {
5730 NDR_PULL_ALLOC(ndr
, r
->out
.display_name_length
);
5732 r
->out
.display_name_length
= NULL
;
5734 if (r
->out
.display_name_length
) {
5735 _mem_save_display_name_length_0
= NDR_PULL_GET_MEM_CTX(ndr
);
5736 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.display_name_length
, 0);
5737 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, r
->out
.display_name_length
));
5738 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_display_name_length_0
, 0);
5740 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
5742 return NDR_ERR_SUCCESS
;
5745 _PUBLIC_
void ndr_print_svcctl_GetServiceKeyNameA(struct ndr_print
*ndr
, const char *name
, int flags
, const struct svcctl_GetServiceKeyNameA
*r
)
5747 ndr_print_struct(ndr
, name
, "svcctl_GetServiceKeyNameA");
5749 if (flags
& NDR_SET_VALUES
) {
5750 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
5752 if (flags
& NDR_IN
) {
5753 ndr_print_struct(ndr
, "in", "svcctl_GetServiceKeyNameA");
5755 ndr_print_ptr(ndr
, "handle", r
->in
.handle
);
5757 ndr_print_policy_handle(ndr
, "handle", r
->in
.handle
);
5759 ndr_print_ptr(ndr
, "service_name", r
->in
.service_name
);
5761 if (r
->in
.service_name
) {
5762 ndr_print_string(ndr
, "service_name", r
->in
.service_name
);
5765 ndr_print_ptr(ndr
, "display_name_length", r
->in
.display_name_length
);
5767 if (r
->in
.display_name_length
) {
5768 ndr_print_uint32(ndr
, "display_name_length", *r
->in
.display_name_length
);
5773 if (flags
& NDR_OUT
) {
5774 ndr_print_struct(ndr
, "out", "svcctl_GetServiceKeyNameA");
5776 ndr_print_ptr(ndr
, "key_name", r
->out
.key_name
);
5778 ndr_print_ptr(ndr
, "key_name", *r
->out
.key_name
);
5780 if (*r
->out
.key_name
) {
5781 ndr_print_string(ndr
, "key_name", *r
->out
.key_name
);
5785 ndr_print_ptr(ndr
, "display_name_length", r
->out
.display_name_length
);
5787 if (r
->out
.display_name_length
) {
5788 ndr_print_uint32(ndr
, "display_name_length", *r
->out
.display_name_length
);
5791 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
5797 static enum ndr_err_code
ndr_push_svcctl_GetCurrentGroupeStateW(struct ndr_push
*ndr
, int flags
, const struct svcctl_GetCurrentGroupeStateW
*r
)
5799 if (flags
& NDR_IN
) {
5801 if (flags
& NDR_OUT
) {
5802 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
5804 return NDR_ERR_SUCCESS
;
5807 static enum ndr_err_code
ndr_pull_svcctl_GetCurrentGroupeStateW(struct ndr_pull
*ndr
, int flags
, struct svcctl_GetCurrentGroupeStateW
*r
)
5809 if (flags
& NDR_IN
) {
5811 if (flags
& NDR_OUT
) {
5812 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
5814 return NDR_ERR_SUCCESS
;
5817 _PUBLIC_
void ndr_print_svcctl_GetCurrentGroupeStateW(struct ndr_print
*ndr
, const char *name
, int flags
, const struct svcctl_GetCurrentGroupeStateW
*r
)
5819 ndr_print_struct(ndr
, name
, "svcctl_GetCurrentGroupeStateW");
5821 if (flags
& NDR_SET_VALUES
) {
5822 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
5824 if (flags
& NDR_IN
) {
5825 ndr_print_struct(ndr
, "in", "svcctl_GetCurrentGroupeStateW");
5829 if (flags
& NDR_OUT
) {
5830 ndr_print_struct(ndr
, "out", "svcctl_GetCurrentGroupeStateW");
5832 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
5838 static enum ndr_err_code
ndr_push_svcctl_EnumServiceGroupW(struct ndr_push
*ndr
, int flags
, const struct svcctl_EnumServiceGroupW
*r
)
5840 if (flags
& NDR_IN
) {
5842 if (flags
& NDR_OUT
) {
5843 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
5845 return NDR_ERR_SUCCESS
;
5848 static enum ndr_err_code
ndr_pull_svcctl_EnumServiceGroupW(struct ndr_pull
*ndr
, int flags
, struct svcctl_EnumServiceGroupW
*r
)
5850 if (flags
& NDR_IN
) {
5852 if (flags
& NDR_OUT
) {
5853 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
5855 return NDR_ERR_SUCCESS
;
5858 _PUBLIC_
void ndr_print_svcctl_EnumServiceGroupW(struct ndr_print
*ndr
, const char *name
, int flags
, const struct svcctl_EnumServiceGroupW
*r
)
5860 ndr_print_struct(ndr
, name
, "svcctl_EnumServiceGroupW");
5862 if (flags
& NDR_SET_VALUES
) {
5863 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
5865 if (flags
& NDR_IN
) {
5866 ndr_print_struct(ndr
, "in", "svcctl_EnumServiceGroupW");
5870 if (flags
& NDR_OUT
) {
5871 ndr_print_struct(ndr
, "out", "svcctl_EnumServiceGroupW");
5873 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
5879 static enum ndr_err_code
ndr_push_svcctl_ChangeServiceConfig2A(struct ndr_push
*ndr
, int flags
, const struct svcctl_ChangeServiceConfig2A
*r
)
5881 if (flags
& NDR_IN
) {
5882 if (r
->in
.handle
== NULL
) {
5883 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
5885 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
, r
->in
.handle
));
5886 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.info_level
));
5887 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.info
));
5889 NDR_CHECK(ndr_push_uint8(ndr
, NDR_SCALARS
, *r
->in
.info
));
5892 if (flags
& NDR_OUT
) {
5893 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
5895 return NDR_ERR_SUCCESS
;
5898 static enum ndr_err_code
ndr_pull_svcctl_ChangeServiceConfig2A(struct ndr_pull
*ndr
, int flags
, struct svcctl_ChangeServiceConfig2A
*r
)
5901 TALLOC_CTX
*_mem_save_handle_0
;
5902 TALLOC_CTX
*_mem_save_info_0
;
5903 if (flags
& NDR_IN
) {
5904 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
5905 NDR_PULL_ALLOC(ndr
, r
->in
.handle
);
5907 _mem_save_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
5908 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.handle
, LIBNDR_FLAG_REF_ALLOC
);
5909 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
, r
->in
.handle
));
5910 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_handle_0
, LIBNDR_FLAG_REF_ALLOC
);
5911 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.info_level
));
5912 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_info
));
5914 NDR_PULL_ALLOC(ndr
, r
->in
.info
);
5919 _mem_save_info_0
= NDR_PULL_GET_MEM_CTX(ndr
);
5920 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.info
, 0);
5921 NDR_CHECK(ndr_pull_uint8(ndr
, NDR_SCALARS
, r
->in
.info
));
5922 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_info_0
, 0);
5925 if (flags
& NDR_OUT
) {
5926 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
5928 return NDR_ERR_SUCCESS
;
5931 _PUBLIC_
void ndr_print_svcctl_ChangeServiceConfig2A(struct ndr_print
*ndr
, const char *name
, int flags
, const struct svcctl_ChangeServiceConfig2A
*r
)
5933 ndr_print_struct(ndr
, name
, "svcctl_ChangeServiceConfig2A");
5935 if (flags
& NDR_SET_VALUES
) {
5936 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
5938 if (flags
& NDR_IN
) {
5939 ndr_print_struct(ndr
, "in", "svcctl_ChangeServiceConfig2A");
5941 ndr_print_ptr(ndr
, "handle", r
->in
.handle
);
5943 ndr_print_policy_handle(ndr
, "handle", r
->in
.handle
);
5945 ndr_print_uint32(ndr
, "info_level", r
->in
.info_level
);
5946 ndr_print_ptr(ndr
, "info", r
->in
.info
);
5949 ndr_print_uint8(ndr
, "info", *r
->in
.info
);
5954 if (flags
& NDR_OUT
) {
5955 ndr_print_struct(ndr
, "out", "svcctl_ChangeServiceConfig2A");
5957 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
5963 static enum ndr_err_code
ndr_push_svcctl_ChangeServiceConfig2W(struct ndr_push
*ndr
, int flags
, const struct svcctl_ChangeServiceConfig2W
*r
)
5965 if (flags
& NDR_IN
) {
5966 if (r
->in
.handle
== NULL
) {
5967 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
5969 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
, r
->in
.handle
));
5970 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.info_level
));
5971 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.info
));
5973 NDR_CHECK(ndr_push_uint8(ndr
, NDR_SCALARS
, *r
->in
.info
));
5976 if (flags
& NDR_OUT
) {
5977 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
5979 return NDR_ERR_SUCCESS
;
5982 static enum ndr_err_code
ndr_pull_svcctl_ChangeServiceConfig2W(struct ndr_pull
*ndr
, int flags
, struct svcctl_ChangeServiceConfig2W
*r
)
5985 TALLOC_CTX
*_mem_save_handle_0
;
5986 TALLOC_CTX
*_mem_save_info_0
;
5987 if (flags
& NDR_IN
) {
5988 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
5989 NDR_PULL_ALLOC(ndr
, r
->in
.handle
);
5991 _mem_save_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
5992 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.handle
, LIBNDR_FLAG_REF_ALLOC
);
5993 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
, r
->in
.handle
));
5994 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_handle_0
, LIBNDR_FLAG_REF_ALLOC
);
5995 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.info_level
));
5996 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_info
));
5998 NDR_PULL_ALLOC(ndr
, r
->in
.info
);
6003 _mem_save_info_0
= NDR_PULL_GET_MEM_CTX(ndr
);
6004 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.info
, 0);
6005 NDR_CHECK(ndr_pull_uint8(ndr
, NDR_SCALARS
, r
->in
.info
));
6006 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_info_0
, 0);
6009 if (flags
& NDR_OUT
) {
6010 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
6012 return NDR_ERR_SUCCESS
;
6015 _PUBLIC_
void ndr_print_svcctl_ChangeServiceConfig2W(struct ndr_print
*ndr
, const char *name
, int flags
, const struct svcctl_ChangeServiceConfig2W
*r
)
6017 ndr_print_struct(ndr
, name
, "svcctl_ChangeServiceConfig2W");
6019 if (flags
& NDR_SET_VALUES
) {
6020 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
6022 if (flags
& NDR_IN
) {
6023 ndr_print_struct(ndr
, "in", "svcctl_ChangeServiceConfig2W");
6025 ndr_print_ptr(ndr
, "handle", r
->in
.handle
);
6027 ndr_print_policy_handle(ndr
, "handle", r
->in
.handle
);
6029 ndr_print_uint32(ndr
, "info_level", r
->in
.info_level
);
6030 ndr_print_ptr(ndr
, "info", r
->in
.info
);
6033 ndr_print_uint8(ndr
, "info", *r
->in
.info
);
6038 if (flags
& NDR_OUT
) {
6039 ndr_print_struct(ndr
, "out", "svcctl_ChangeServiceConfig2W");
6041 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
6047 static enum ndr_err_code
ndr_push_svcctl_QueryServiceConfig2A(struct ndr_push
*ndr
, int flags
, const struct svcctl_QueryServiceConfig2A
*r
)
6049 if (flags
& NDR_IN
) {
6050 if (r
->in
.handle
== NULL
) {
6051 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
6053 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
, r
->in
.handle
));
6054 NDR_CHECK(ndr_push_svcctl_ConfigLevel(ndr
, NDR_SCALARS
, r
->in
.info_level
));
6055 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.offered
));
6057 if (flags
& NDR_OUT
) {
6058 NDR_CHECK(ndr_push_array_uint8(ndr
, NDR_SCALARS
, r
->out
.buffer
, r
->in
.offered
));
6059 if (r
->out
.needed
== NULL
) {
6060 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
6062 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, *r
->out
.needed
));
6063 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
6065 return NDR_ERR_SUCCESS
;
6068 static enum ndr_err_code
ndr_pull_svcctl_QueryServiceConfig2A(struct ndr_pull
*ndr
, int flags
, struct svcctl_QueryServiceConfig2A
*r
)
6070 TALLOC_CTX
*_mem_save_handle_0
;
6071 TALLOC_CTX
*_mem_save_needed_0
;
6072 if (flags
& NDR_IN
) {
6073 ZERO_STRUCT(r
->out
);
6075 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
6076 NDR_PULL_ALLOC(ndr
, r
->in
.handle
);
6078 _mem_save_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
6079 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.handle
, LIBNDR_FLAG_REF_ALLOC
);
6080 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
, r
->in
.handle
));
6081 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_handle_0
, LIBNDR_FLAG_REF_ALLOC
);
6082 NDR_CHECK(ndr_pull_svcctl_ConfigLevel(ndr
, NDR_SCALARS
, &r
->in
.info_level
));
6083 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.offered
));
6084 NDR_PULL_ALLOC(ndr
, r
->out
.needed
);
6085 ZERO_STRUCTP(r
->out
.needed
);
6087 if (flags
& NDR_OUT
) {
6088 NDR_PULL_ALLOC_N(ndr
, r
->out
.buffer
, r
->in
.offered
);
6089 NDR_CHECK(ndr_pull_array_uint8(ndr
, NDR_SCALARS
, r
->out
.buffer
, r
->in
.offered
));
6090 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
6091 NDR_PULL_ALLOC(ndr
, r
->out
.needed
);
6093 _mem_save_needed_0
= NDR_PULL_GET_MEM_CTX(ndr
);
6094 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.needed
, LIBNDR_FLAG_REF_ALLOC
);
6095 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, r
->out
.needed
));
6096 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_needed_0
, LIBNDR_FLAG_REF_ALLOC
);
6097 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
6099 return NDR_ERR_SUCCESS
;
6102 _PUBLIC_
void ndr_print_svcctl_QueryServiceConfig2A(struct ndr_print
*ndr
, const char *name
, int flags
, const struct svcctl_QueryServiceConfig2A
*r
)
6104 ndr_print_struct(ndr
, name
, "svcctl_QueryServiceConfig2A");
6106 if (flags
& NDR_SET_VALUES
) {
6107 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
6109 if (flags
& NDR_IN
) {
6110 ndr_print_struct(ndr
, "in", "svcctl_QueryServiceConfig2A");
6112 ndr_print_ptr(ndr
, "handle", r
->in
.handle
);
6114 ndr_print_policy_handle(ndr
, "handle", r
->in
.handle
);
6116 ndr_print_svcctl_ConfigLevel(ndr
, "info_level", r
->in
.info_level
);
6117 ndr_print_uint32(ndr
, "offered", r
->in
.offered
);
6120 if (flags
& NDR_OUT
) {
6121 ndr_print_struct(ndr
, "out", "svcctl_QueryServiceConfig2A");
6123 ndr_print_array_uint8(ndr
, "buffer", r
->out
.buffer
, r
->in
.offered
);
6124 ndr_print_ptr(ndr
, "needed", r
->out
.needed
);
6126 ndr_print_uint32(ndr
, "needed", *r
->out
.needed
);
6128 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
6134 static enum ndr_err_code
ndr_push_svcctl_QueryServiceConfig2W(struct ndr_push
*ndr
, int flags
, const struct svcctl_QueryServiceConfig2W
*r
)
6136 if (flags
& NDR_IN
) {
6137 if (r
->in
.handle
== NULL
) {
6138 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
6140 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
, r
->in
.handle
));
6141 NDR_CHECK(ndr_push_svcctl_ConfigLevel(ndr
, NDR_SCALARS
, r
->in
.info_level
));
6142 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.offered
));
6144 if (flags
& NDR_OUT
) {
6145 if (r
->out
.buffer
== NULL
) {
6146 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
6148 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, r
->in
.offered
));
6149 NDR_CHECK(ndr_push_array_uint8(ndr
, NDR_SCALARS
, r
->out
.buffer
, r
->in
.offered
));
6150 if (r
->out
.needed
== NULL
) {
6151 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
6153 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, *r
->out
.needed
));
6154 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
6156 return NDR_ERR_SUCCESS
;
6159 static enum ndr_err_code
ndr_pull_svcctl_QueryServiceConfig2W(struct ndr_pull
*ndr
, int flags
, struct svcctl_QueryServiceConfig2W
*r
)
6161 TALLOC_CTX
*_mem_save_handle_0
;
6162 TALLOC_CTX
*_mem_save_needed_0
;
6163 if (flags
& NDR_IN
) {
6164 ZERO_STRUCT(r
->out
);
6166 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
6167 NDR_PULL_ALLOC(ndr
, r
->in
.handle
);
6169 _mem_save_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
6170 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.handle
, LIBNDR_FLAG_REF_ALLOC
);
6171 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
, r
->in
.handle
));
6172 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_handle_0
, LIBNDR_FLAG_REF_ALLOC
);
6173 NDR_CHECK(ndr_pull_svcctl_ConfigLevel(ndr
, NDR_SCALARS
, &r
->in
.info_level
));
6174 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.offered
));
6175 if (r
->in
.offered
> 8192) {
6176 return ndr_pull_error(ndr
, NDR_ERR_RANGE
, "value out of range");
6178 NDR_PULL_ALLOC_N(ndr
, r
->out
.buffer
, r
->in
.offered
);
6179 memset(r
->out
.buffer
, 0, (r
->in
.offered
) * sizeof(*r
->out
.buffer
));
6180 NDR_PULL_ALLOC(ndr
, r
->out
.needed
);
6181 ZERO_STRUCTP(r
->out
.needed
);
6183 if (flags
& NDR_OUT
) {
6184 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->out
.buffer
));
6185 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
6186 NDR_PULL_ALLOC_N(ndr
, r
->out
.buffer
, ndr_get_array_size(ndr
, &r
->out
.buffer
));
6188 NDR_CHECK(ndr_pull_array_uint8(ndr
, NDR_SCALARS
, r
->out
.buffer
, ndr_get_array_size(ndr
, &r
->out
.buffer
)));
6189 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
6190 NDR_PULL_ALLOC(ndr
, r
->out
.needed
);
6192 _mem_save_needed_0
= NDR_PULL_GET_MEM_CTX(ndr
);
6193 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.needed
, LIBNDR_FLAG_REF_ALLOC
);
6194 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, r
->out
.needed
));
6195 if (*r
->out
.needed
> 8192) {
6196 return ndr_pull_error(ndr
, NDR_ERR_RANGE
, "value out of range");
6198 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_needed_0
, LIBNDR_FLAG_REF_ALLOC
);
6199 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
6200 if (r
->out
.buffer
) {
6201 NDR_CHECK(ndr_check_array_size(ndr
, (void*)&r
->out
.buffer
, r
->in
.offered
));
6204 return NDR_ERR_SUCCESS
;
6207 _PUBLIC_
void ndr_print_svcctl_QueryServiceConfig2W(struct ndr_print
*ndr
, const char *name
, int flags
, const struct svcctl_QueryServiceConfig2W
*r
)
6209 ndr_print_struct(ndr
, name
, "svcctl_QueryServiceConfig2W");
6211 if (flags
& NDR_SET_VALUES
) {
6212 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
6214 if (flags
& NDR_IN
) {
6215 ndr_print_struct(ndr
, "in", "svcctl_QueryServiceConfig2W");
6217 ndr_print_ptr(ndr
, "handle", r
->in
.handle
);
6219 ndr_print_policy_handle(ndr
, "handle", r
->in
.handle
);
6221 ndr_print_svcctl_ConfigLevel(ndr
, "info_level", r
->in
.info_level
);
6222 ndr_print_uint32(ndr
, "offered", r
->in
.offered
);
6225 if (flags
& NDR_OUT
) {
6226 ndr_print_struct(ndr
, "out", "svcctl_QueryServiceConfig2W");
6228 ndr_print_ptr(ndr
, "buffer", r
->out
.buffer
);
6230 ndr_print_array_uint8(ndr
, "buffer", r
->out
.buffer
, r
->in
.offered
);
6232 ndr_print_ptr(ndr
, "needed", r
->out
.needed
);
6234 ndr_print_uint32(ndr
, "needed", *r
->out
.needed
);
6236 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
6242 static enum ndr_err_code
ndr_push_svcctl_QueryServiceStatusEx(struct ndr_push
*ndr
, int flags
, const struct svcctl_QueryServiceStatusEx
*r
)
6244 if (flags
& NDR_IN
) {
6245 if (r
->in
.handle
== NULL
) {
6246 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
6248 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
, r
->in
.handle
));
6249 NDR_CHECK(ndr_push_svcctl_StatusLevel(ndr
, NDR_SCALARS
, r
->in
.info_level
));
6250 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.offered
));
6252 if (flags
& NDR_OUT
) {
6253 if (r
->out
.buffer
== NULL
) {
6254 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
6256 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, r
->in
.offered
));
6257 NDR_CHECK(ndr_push_array_uint8(ndr
, NDR_SCALARS
, r
->out
.buffer
, r
->in
.offered
));
6258 if (r
->out
.needed
== NULL
) {
6259 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
6261 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, *r
->out
.needed
));
6262 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
6264 return NDR_ERR_SUCCESS
;
6267 static enum ndr_err_code
ndr_pull_svcctl_QueryServiceStatusEx(struct ndr_pull
*ndr
, int flags
, struct svcctl_QueryServiceStatusEx
*r
)
6269 TALLOC_CTX
*_mem_save_handle_0
;
6270 TALLOC_CTX
*_mem_save_needed_0
;
6271 if (flags
& NDR_IN
) {
6272 ZERO_STRUCT(r
->out
);
6274 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
6275 NDR_PULL_ALLOC(ndr
, r
->in
.handle
);
6277 _mem_save_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
6278 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.handle
, LIBNDR_FLAG_REF_ALLOC
);
6279 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
, r
->in
.handle
));
6280 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_handle_0
, LIBNDR_FLAG_REF_ALLOC
);
6281 NDR_CHECK(ndr_pull_svcctl_StatusLevel(ndr
, NDR_SCALARS
, &r
->in
.info_level
));
6282 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.offered
));
6283 if (r
->in
.offered
> 8192) {
6284 return ndr_pull_error(ndr
, NDR_ERR_RANGE
, "value out of range");
6286 NDR_PULL_ALLOC_N(ndr
, r
->out
.buffer
, r
->in
.offered
);
6287 memset(r
->out
.buffer
, 0, (r
->in
.offered
) * sizeof(*r
->out
.buffer
));
6288 NDR_PULL_ALLOC(ndr
, r
->out
.needed
);
6289 ZERO_STRUCTP(r
->out
.needed
);
6291 if (flags
& NDR_OUT
) {
6292 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->out
.buffer
));
6293 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
6294 NDR_PULL_ALLOC_N(ndr
, r
->out
.buffer
, ndr_get_array_size(ndr
, &r
->out
.buffer
));
6296 NDR_CHECK(ndr_pull_array_uint8(ndr
, NDR_SCALARS
, r
->out
.buffer
, ndr_get_array_size(ndr
, &r
->out
.buffer
)));
6297 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
6298 NDR_PULL_ALLOC(ndr
, r
->out
.needed
);
6300 _mem_save_needed_0
= NDR_PULL_GET_MEM_CTX(ndr
);
6301 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.needed
, LIBNDR_FLAG_REF_ALLOC
);
6302 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, r
->out
.needed
));
6303 if (*r
->out
.needed
> 8192) {
6304 return ndr_pull_error(ndr
, NDR_ERR_RANGE
, "value out of range");
6306 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_needed_0
, LIBNDR_FLAG_REF_ALLOC
);
6307 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
6308 if (r
->out
.buffer
) {
6309 NDR_CHECK(ndr_check_array_size(ndr
, (void*)&r
->out
.buffer
, r
->in
.offered
));
6312 return NDR_ERR_SUCCESS
;
6315 _PUBLIC_
void ndr_print_svcctl_QueryServiceStatusEx(struct ndr_print
*ndr
, const char *name
, int flags
, const struct svcctl_QueryServiceStatusEx
*r
)
6317 ndr_print_struct(ndr
, name
, "svcctl_QueryServiceStatusEx");
6319 if (flags
& NDR_SET_VALUES
) {
6320 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
6322 if (flags
& NDR_IN
) {
6323 ndr_print_struct(ndr
, "in", "svcctl_QueryServiceStatusEx");
6325 ndr_print_ptr(ndr
, "handle", r
->in
.handle
);
6327 ndr_print_policy_handle(ndr
, "handle", r
->in
.handle
);
6329 ndr_print_svcctl_StatusLevel(ndr
, "info_level", r
->in
.info_level
);
6330 ndr_print_uint32(ndr
, "offered", r
->in
.offered
);
6333 if (flags
& NDR_OUT
) {
6334 ndr_print_struct(ndr
, "out", "svcctl_QueryServiceStatusEx");
6336 ndr_print_ptr(ndr
, "buffer", r
->out
.buffer
);
6338 ndr_print_array_uint8(ndr
, "buffer", r
->out
.buffer
, r
->in
.offered
);
6340 ndr_print_ptr(ndr
, "needed", r
->out
.needed
);
6342 ndr_print_uint32(ndr
, "needed", *r
->out
.needed
);
6344 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
6350 static enum ndr_err_code
ndr_push_EnumServicesStatusExA(struct ndr_push
*ndr
, int flags
, const struct EnumServicesStatusExA
*r
)
6352 if (flags
& NDR_IN
) {
6353 if (r
->in
.scmanager
== NULL
) {
6354 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
6356 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
, r
->in
.scmanager
));
6357 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.info_level
));
6358 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.type
));
6359 NDR_CHECK(ndr_push_svcctl_ServiceState(ndr
, NDR_SCALARS
, r
->in
.state
));
6360 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.offered
));
6361 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.resume_handle
));
6362 if (r
->in
.resume_handle
) {
6363 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, *r
->in
.resume_handle
));
6366 if (flags
& NDR_OUT
) {
6367 NDR_CHECK(ndr_push_array_uint8(ndr
, NDR_SCALARS
, r
->out
.services
, r
->in
.offered
));
6368 if (r
->out
.needed
== NULL
) {
6369 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
6371 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, *r
->out
.needed
));
6372 if (r
->out
.service_returned
== NULL
) {
6373 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
6375 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, *r
->out
.service_returned
));
6376 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->out
.resume_handle
));
6377 if (r
->out
.resume_handle
) {
6378 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, *r
->out
.resume_handle
));
6380 if (r
->out
.group_name
== NULL
) {
6381 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
6383 NDR_CHECK(ndr_push_unique_ptr(ndr
, *r
->out
.group_name
));
6384 if (*r
->out
.group_name
) {
6385 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, ndr_charset_length(*r
->out
.group_name
, CH_UTF16
)));
6386 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, 0));
6387 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, ndr_charset_length(*r
->out
.group_name
, CH_UTF16
)));
6388 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
));
6390 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
6392 return NDR_ERR_SUCCESS
;
6395 static enum ndr_err_code
ndr_pull_EnumServicesStatusExA(struct ndr_pull
*ndr
, int flags
, struct EnumServicesStatusExA
*r
)
6397 uint32_t _ptr_resume_handle
;
6398 uint32_t _ptr_group_name
;
6399 TALLOC_CTX
*_mem_save_scmanager_0
;
6400 TALLOC_CTX
*_mem_save_needed_0
;
6401 TALLOC_CTX
*_mem_save_service_returned_0
;
6402 TALLOC_CTX
*_mem_save_resume_handle_0
;
6403 TALLOC_CTX
*_mem_save_group_name_0
;
6404 TALLOC_CTX
*_mem_save_group_name_1
;
6405 if (flags
& NDR_IN
) {
6406 ZERO_STRUCT(r
->out
);
6408 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
6409 NDR_PULL_ALLOC(ndr
, r
->in
.scmanager
);
6411 _mem_save_scmanager_0
= NDR_PULL_GET_MEM_CTX(ndr
);
6412 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.scmanager
, LIBNDR_FLAG_REF_ALLOC
);
6413 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
, r
->in
.scmanager
));
6414 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_scmanager_0
, LIBNDR_FLAG_REF_ALLOC
);
6415 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.info_level
));
6416 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.type
));
6417 NDR_CHECK(ndr_pull_svcctl_ServiceState(ndr
, NDR_SCALARS
, &r
->in
.state
));
6418 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.offered
));
6419 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_resume_handle
));
6420 if (_ptr_resume_handle
) {
6421 NDR_PULL_ALLOC(ndr
, r
->in
.resume_handle
);
6423 r
->in
.resume_handle
= NULL
;
6425 if (r
->in
.resume_handle
) {
6426 _mem_save_resume_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
6427 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.resume_handle
, 0);
6428 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, r
->in
.resume_handle
));
6429 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_resume_handle_0
, 0);
6431 NDR_PULL_ALLOC(ndr
, r
->out
.needed
);
6432 ZERO_STRUCTP(r
->out
.needed
);
6433 NDR_PULL_ALLOC(ndr
, r
->out
.service_returned
);
6434 ZERO_STRUCTP(r
->out
.service_returned
);
6435 NDR_PULL_ALLOC(ndr
, r
->out
.group_name
);
6436 ZERO_STRUCTP(r
->out
.group_name
);
6438 if (flags
& NDR_OUT
) {
6439 NDR_PULL_ALLOC_N(ndr
, r
->out
.services
, r
->in
.offered
);
6440 NDR_CHECK(ndr_pull_array_uint8(ndr
, NDR_SCALARS
, r
->out
.services
, r
->in
.offered
));
6441 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
6442 NDR_PULL_ALLOC(ndr
, r
->out
.needed
);
6444 _mem_save_needed_0
= NDR_PULL_GET_MEM_CTX(ndr
);
6445 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.needed
, LIBNDR_FLAG_REF_ALLOC
);
6446 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, r
->out
.needed
));
6447 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_needed_0
, LIBNDR_FLAG_REF_ALLOC
);
6448 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
6449 NDR_PULL_ALLOC(ndr
, r
->out
.service_returned
);
6451 _mem_save_service_returned_0
= NDR_PULL_GET_MEM_CTX(ndr
);
6452 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.service_returned
, LIBNDR_FLAG_REF_ALLOC
);
6453 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, r
->out
.service_returned
));
6454 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_service_returned_0
, LIBNDR_FLAG_REF_ALLOC
);
6455 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_resume_handle
));
6456 if (_ptr_resume_handle
) {
6457 NDR_PULL_ALLOC(ndr
, r
->out
.resume_handle
);
6459 r
->out
.resume_handle
= NULL
;
6461 if (r
->out
.resume_handle
) {
6462 _mem_save_resume_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
6463 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.resume_handle
, 0);
6464 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, r
->out
.resume_handle
));
6465 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_resume_handle_0
, 0);
6467 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
6468 NDR_PULL_ALLOC(ndr
, r
->out
.group_name
);
6470 _mem_save_group_name_0
= NDR_PULL_GET_MEM_CTX(ndr
);
6471 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.group_name
, LIBNDR_FLAG_REF_ALLOC
);
6472 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_group_name
));
6473 if (_ptr_group_name
) {
6474 NDR_PULL_ALLOC(ndr
, *r
->out
.group_name
);
6476 *r
->out
.group_name
= NULL
;
6478 if (*r
->out
.group_name
) {
6479 _mem_save_group_name_1
= NDR_PULL_GET_MEM_CTX(ndr
);
6480 NDR_PULL_SET_MEM_CTX(ndr
, *r
->out
.group_name
, 0);
6481 NDR_CHECK(ndr_pull_array_size(ndr
, r
->out
.group_name
));
6482 NDR_CHECK(ndr_pull_array_length(ndr
, r
->out
.group_name
));
6483 if (ndr_get_array_length(ndr
, r
->out
.group_name
) > ndr_get_array_size(ndr
, r
->out
.group_name
)) {
6484 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
));
6486 NDR_CHECK(ndr_check_string_terminator(ndr
, ndr_get_array_length(ndr
, r
->out
.group_name
), sizeof(uint16_t)));
6487 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
));
6488 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_group_name_1
, 0);
6490 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_group_name_0
, LIBNDR_FLAG_REF_ALLOC
);
6491 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
6493 return NDR_ERR_SUCCESS
;
6496 _PUBLIC_
void ndr_print_EnumServicesStatusExA(struct ndr_print
*ndr
, const char *name
, int flags
, const struct EnumServicesStatusExA
*r
)
6498 ndr_print_struct(ndr
, name
, "EnumServicesStatusExA");
6500 if (flags
& NDR_SET_VALUES
) {
6501 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
6503 if (flags
& NDR_IN
) {
6504 ndr_print_struct(ndr
, "in", "EnumServicesStatusExA");
6506 ndr_print_ptr(ndr
, "scmanager", r
->in
.scmanager
);
6508 ndr_print_policy_handle(ndr
, "scmanager", r
->in
.scmanager
);
6510 ndr_print_uint32(ndr
, "info_level", r
->in
.info_level
);
6511 ndr_print_uint32(ndr
, "type", r
->in
.type
);
6512 ndr_print_svcctl_ServiceState(ndr
, "state", r
->in
.state
);
6513 ndr_print_uint32(ndr
, "offered", r
->in
.offered
);
6514 ndr_print_ptr(ndr
, "resume_handle", r
->in
.resume_handle
);
6516 if (r
->in
.resume_handle
) {
6517 ndr_print_uint32(ndr
, "resume_handle", *r
->in
.resume_handle
);
6522 if (flags
& NDR_OUT
) {
6523 ndr_print_struct(ndr
, "out", "EnumServicesStatusExA");
6525 ndr_print_array_uint8(ndr
, "services", r
->out
.services
, r
->in
.offered
);
6526 ndr_print_ptr(ndr
, "needed", r
->out
.needed
);
6528 ndr_print_uint32(ndr
, "needed", *r
->out
.needed
);
6530 ndr_print_ptr(ndr
, "service_returned", r
->out
.service_returned
);
6532 ndr_print_uint32(ndr
, "service_returned", *r
->out
.service_returned
);
6534 ndr_print_ptr(ndr
, "resume_handle", r
->out
.resume_handle
);
6536 if (r
->out
.resume_handle
) {
6537 ndr_print_uint32(ndr
, "resume_handle", *r
->out
.resume_handle
);
6540 ndr_print_ptr(ndr
, "group_name", r
->out
.group_name
);
6542 ndr_print_ptr(ndr
, "group_name", *r
->out
.group_name
);
6544 if (*r
->out
.group_name
) {
6545 ndr_print_string(ndr
, "group_name", *r
->out
.group_name
);
6549 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
6555 static enum ndr_err_code
ndr_push_EnumServicesStatusExW(struct ndr_push
*ndr
, int flags
, const struct EnumServicesStatusExW
*r
)
6557 if (flags
& NDR_IN
) {
6558 if (r
->in
.scmanager
== NULL
) {
6559 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
6561 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
, r
->in
.scmanager
));
6562 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.info_level
));
6563 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.type
));
6564 NDR_CHECK(ndr_push_svcctl_ServiceState(ndr
, NDR_SCALARS
, r
->in
.state
));
6565 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.offered
));
6566 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.resume_handle
));
6567 if (r
->in
.resume_handle
) {
6568 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, *r
->in
.resume_handle
));
6570 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.group_name
));
6571 if (r
->in
.group_name
) {
6572 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.group_name
, CH_UTF16
)));
6573 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, 0));
6574 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.group_name
, CH_UTF16
)));
6575 NDR_CHECK(ndr_push_charset(ndr
, NDR_SCALARS
, r
->in
.group_name
, ndr_charset_length(r
->in
.group_name
, CH_UTF16
), sizeof(uint16_t), CH_UTF16
));
6578 if (flags
& NDR_OUT
) {
6579 if (r
->out
.services
== NULL
) {
6580 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
6582 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, r
->in
.offered
));
6583 NDR_CHECK(ndr_push_array_uint8(ndr
, NDR_SCALARS
, r
->out
.services
, r
->in
.offered
));
6584 if (r
->out
.needed
== NULL
) {
6585 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
6587 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, *r
->out
.needed
));
6588 if (r
->out
.service_returned
== NULL
) {
6589 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
6591 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, *r
->out
.service_returned
));
6592 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->out
.resume_handle
));
6593 if (r
->out
.resume_handle
) {
6594 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, *r
->out
.resume_handle
));
6596 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
6598 return NDR_ERR_SUCCESS
;
6601 static enum ndr_err_code
ndr_pull_EnumServicesStatusExW(struct ndr_pull
*ndr
, int flags
, struct EnumServicesStatusExW
*r
)
6603 uint32_t _ptr_resume_handle
;
6604 uint32_t _ptr_group_name
;
6605 TALLOC_CTX
*_mem_save_scmanager_0
;
6606 TALLOC_CTX
*_mem_save_needed_0
;
6607 TALLOC_CTX
*_mem_save_service_returned_0
;
6608 TALLOC_CTX
*_mem_save_resume_handle_0
;
6609 TALLOC_CTX
*_mem_save_group_name_0
;
6610 if (flags
& NDR_IN
) {
6611 ZERO_STRUCT(r
->out
);
6613 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
6614 NDR_PULL_ALLOC(ndr
, r
->in
.scmanager
);
6616 _mem_save_scmanager_0
= NDR_PULL_GET_MEM_CTX(ndr
);
6617 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.scmanager
, LIBNDR_FLAG_REF_ALLOC
);
6618 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
, r
->in
.scmanager
));
6619 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_scmanager_0
, LIBNDR_FLAG_REF_ALLOC
);
6620 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.info_level
));
6621 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.type
));
6622 NDR_CHECK(ndr_pull_svcctl_ServiceState(ndr
, NDR_SCALARS
, &r
->in
.state
));
6623 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.offered
));
6624 if (r
->in
.offered
> 0x40000) {
6625 return ndr_pull_error(ndr
, NDR_ERR_RANGE
, "value out of range");
6627 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_resume_handle
));
6628 if (_ptr_resume_handle
) {
6629 NDR_PULL_ALLOC(ndr
, r
->in
.resume_handle
);
6631 r
->in
.resume_handle
= NULL
;
6633 if (r
->in
.resume_handle
) {
6634 _mem_save_resume_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
6635 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.resume_handle
, 0);
6636 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, r
->in
.resume_handle
));
6637 if (*r
->in
.resume_handle
> 0x40000) {
6638 return ndr_pull_error(ndr
, NDR_ERR_RANGE
, "value out of range");
6640 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_resume_handle_0
, 0);
6642 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_group_name
));
6643 if (_ptr_group_name
) {
6644 NDR_PULL_ALLOC(ndr
, r
->in
.group_name
);
6646 r
->in
.group_name
= NULL
;
6648 if (r
->in
.group_name
) {
6649 _mem_save_group_name_0
= NDR_PULL_GET_MEM_CTX(ndr
);
6650 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.group_name
, 0);
6651 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->in
.group_name
));
6652 NDR_CHECK(ndr_pull_array_length(ndr
, &r
->in
.group_name
));
6653 if (ndr_get_array_length(ndr
, &r
->in
.group_name
) > ndr_get_array_size(ndr
, &r
->in
.group_name
)) {
6654 return ndr_pull_error(ndr
, NDR_ERR_ARRAY_SIZE
, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr
, &r
->in
.group_name
), ndr_get_array_length(ndr
, &r
->in
.group_name
));
6656 NDR_CHECK(ndr_check_string_terminator(ndr
, ndr_get_array_length(ndr
, &r
->in
.group_name
), sizeof(uint16_t)));
6657 NDR_CHECK(ndr_pull_charset(ndr
, NDR_SCALARS
, &r
->in
.group_name
, ndr_get_array_length(ndr
, &r
->in
.group_name
), sizeof(uint16_t), CH_UTF16
));
6658 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_group_name_0
, 0);
6660 NDR_PULL_ALLOC_N(ndr
, r
->out
.services
, r
->in
.offered
);
6661 memset(r
->out
.services
, 0, (r
->in
.offered
) * sizeof(*r
->out
.services
));
6662 NDR_PULL_ALLOC(ndr
, r
->out
.needed
);
6663 ZERO_STRUCTP(r
->out
.needed
);
6664 NDR_PULL_ALLOC(ndr
, r
->out
.service_returned
);
6665 ZERO_STRUCTP(r
->out
.service_returned
);
6667 if (flags
& NDR_OUT
) {
6668 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->out
.services
));
6669 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
6670 NDR_PULL_ALLOC_N(ndr
, r
->out
.services
, ndr_get_array_size(ndr
, &r
->out
.services
));
6672 NDR_CHECK(ndr_pull_array_uint8(ndr
, NDR_SCALARS
, r
->out
.services
, ndr_get_array_size(ndr
, &r
->out
.services
)));
6673 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
6674 NDR_PULL_ALLOC(ndr
, r
->out
.needed
);
6676 _mem_save_needed_0
= NDR_PULL_GET_MEM_CTX(ndr
);
6677 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.needed
, LIBNDR_FLAG_REF_ALLOC
);
6678 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, r
->out
.needed
));
6679 if (*r
->out
.needed
> 0x40000) {
6680 return ndr_pull_error(ndr
, NDR_ERR_RANGE
, "value out of range");
6682 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_needed_0
, LIBNDR_FLAG_REF_ALLOC
);
6683 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
6684 NDR_PULL_ALLOC(ndr
, r
->out
.service_returned
);
6686 _mem_save_service_returned_0
= NDR_PULL_GET_MEM_CTX(ndr
);
6687 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.service_returned
, LIBNDR_FLAG_REF_ALLOC
);
6688 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, r
->out
.service_returned
));
6689 if (*r
->out
.service_returned
> 0x40000) {
6690 return ndr_pull_error(ndr
, NDR_ERR_RANGE
, "value out of range");
6692 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_service_returned_0
, LIBNDR_FLAG_REF_ALLOC
);
6693 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_resume_handle
));
6694 if (_ptr_resume_handle
) {
6695 NDR_PULL_ALLOC(ndr
, r
->out
.resume_handle
);
6697 r
->out
.resume_handle
= NULL
;
6699 if (r
->out
.resume_handle
) {
6700 _mem_save_resume_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
6701 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.resume_handle
, 0);
6702 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, r
->out
.resume_handle
));
6703 if (*r
->out
.resume_handle
> 0x40000) {
6704 return ndr_pull_error(ndr
, NDR_ERR_RANGE
, "value out of range");
6706 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_resume_handle_0
, 0);
6708 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
6709 if (r
->out
.services
) {
6710 NDR_CHECK(ndr_check_array_size(ndr
, (void*)&r
->out
.services
, r
->in
.offered
));
6713 return NDR_ERR_SUCCESS
;
6716 _PUBLIC_
void ndr_print_EnumServicesStatusExW(struct ndr_print
*ndr
, const char *name
, int flags
, const struct EnumServicesStatusExW
*r
)
6718 ndr_print_struct(ndr
, name
, "EnumServicesStatusExW");
6720 if (flags
& NDR_SET_VALUES
) {
6721 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
6723 if (flags
& NDR_IN
) {
6724 ndr_print_struct(ndr
, "in", "EnumServicesStatusExW");
6726 ndr_print_ptr(ndr
, "scmanager", r
->in
.scmanager
);
6728 ndr_print_policy_handle(ndr
, "scmanager", r
->in
.scmanager
);
6730 ndr_print_uint32(ndr
, "info_level", r
->in
.info_level
);
6731 ndr_print_uint32(ndr
, "type", r
->in
.type
);
6732 ndr_print_svcctl_ServiceState(ndr
, "state", r
->in
.state
);
6733 ndr_print_uint32(ndr
, "offered", r
->in
.offered
);
6734 ndr_print_ptr(ndr
, "resume_handle", r
->in
.resume_handle
);
6736 if (r
->in
.resume_handle
) {
6737 ndr_print_uint32(ndr
, "resume_handle", *r
->in
.resume_handle
);
6740 ndr_print_ptr(ndr
, "group_name", r
->in
.group_name
);
6742 if (r
->in
.group_name
) {
6743 ndr_print_string(ndr
, "group_name", r
->in
.group_name
);
6748 if (flags
& NDR_OUT
) {
6749 ndr_print_struct(ndr
, "out", "EnumServicesStatusExW");
6751 ndr_print_ptr(ndr
, "services", r
->out
.services
);
6753 ndr_print_array_uint8(ndr
, "services", r
->out
.services
, r
->in
.offered
);
6755 ndr_print_ptr(ndr
, "needed", r
->out
.needed
);
6757 ndr_print_uint32(ndr
, "needed", *r
->out
.needed
);
6759 ndr_print_ptr(ndr
, "service_returned", r
->out
.service_returned
);
6761 ndr_print_uint32(ndr
, "service_returned", *r
->out
.service_returned
);
6763 ndr_print_ptr(ndr
, "resume_handle", r
->out
.resume_handle
);
6765 if (r
->out
.resume_handle
) {
6766 ndr_print_uint32(ndr
, "resume_handle", *r
->out
.resume_handle
);
6769 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
6775 static enum ndr_err_code
ndr_push_svcctl_SCSendTSMessage(struct ndr_push
*ndr
, int flags
, const struct svcctl_SCSendTSMessage
*r
)
6777 if (flags
& NDR_IN
) {
6779 if (flags
& NDR_OUT
) {
6780 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
6782 return NDR_ERR_SUCCESS
;
6785 static enum ndr_err_code
ndr_pull_svcctl_SCSendTSMessage(struct ndr_pull
*ndr
, int flags
, struct svcctl_SCSendTSMessage
*r
)
6787 if (flags
& NDR_IN
) {
6789 if (flags
& NDR_OUT
) {
6790 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
6792 return NDR_ERR_SUCCESS
;
6795 _PUBLIC_
void ndr_print_svcctl_SCSendTSMessage(struct ndr_print
*ndr
, const char *name
, int flags
, const struct svcctl_SCSendTSMessage
*r
)
6797 ndr_print_struct(ndr
, name
, "svcctl_SCSendTSMessage");
6799 if (flags
& NDR_SET_VALUES
) {
6800 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
6802 if (flags
& NDR_IN
) {
6803 ndr_print_struct(ndr
, "in", "svcctl_SCSendTSMessage");
6807 if (flags
& NDR_OUT
) {
6808 ndr_print_struct(ndr
, "out", "svcctl_SCSendTSMessage");
6810 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
6816 static const struct ndr_interface_call svcctl_calls
[] = {
6818 "svcctl_CloseServiceHandle",
6819 sizeof(struct svcctl_CloseServiceHandle
),
6820 (ndr_push_flags_fn_t
) ndr_push_svcctl_CloseServiceHandle
,
6821 (ndr_pull_flags_fn_t
) ndr_pull_svcctl_CloseServiceHandle
,
6822 (ndr_print_function_t
) ndr_print_svcctl_CloseServiceHandle
,
6826 "svcctl_ControlService",
6827 sizeof(struct svcctl_ControlService
),
6828 (ndr_push_flags_fn_t
) ndr_push_svcctl_ControlService
,
6829 (ndr_pull_flags_fn_t
) ndr_pull_svcctl_ControlService
,
6830 (ndr_print_function_t
) ndr_print_svcctl_ControlService
,
6834 "svcctl_DeleteService",
6835 sizeof(struct svcctl_DeleteService
),
6836 (ndr_push_flags_fn_t
) ndr_push_svcctl_DeleteService
,
6837 (ndr_pull_flags_fn_t
) ndr_pull_svcctl_DeleteService
,
6838 (ndr_print_function_t
) ndr_print_svcctl_DeleteService
,
6842 "svcctl_LockServiceDatabase",
6843 sizeof(struct svcctl_LockServiceDatabase
),
6844 (ndr_push_flags_fn_t
) ndr_push_svcctl_LockServiceDatabase
,
6845 (ndr_pull_flags_fn_t
) ndr_pull_svcctl_LockServiceDatabase
,
6846 (ndr_print_function_t
) ndr_print_svcctl_LockServiceDatabase
,
6850 "svcctl_QueryServiceObjectSecurity",
6851 sizeof(struct svcctl_QueryServiceObjectSecurity
),
6852 (ndr_push_flags_fn_t
) ndr_push_svcctl_QueryServiceObjectSecurity
,
6853 (ndr_pull_flags_fn_t
) ndr_pull_svcctl_QueryServiceObjectSecurity
,
6854 (ndr_print_function_t
) ndr_print_svcctl_QueryServiceObjectSecurity
,
6858 "svcctl_SetServiceObjectSecurity",
6859 sizeof(struct svcctl_SetServiceObjectSecurity
),
6860 (ndr_push_flags_fn_t
) ndr_push_svcctl_SetServiceObjectSecurity
,
6861 (ndr_pull_flags_fn_t
) ndr_pull_svcctl_SetServiceObjectSecurity
,
6862 (ndr_print_function_t
) ndr_print_svcctl_SetServiceObjectSecurity
,
6866 "svcctl_QueryServiceStatus",
6867 sizeof(struct svcctl_QueryServiceStatus
),
6868 (ndr_push_flags_fn_t
) ndr_push_svcctl_QueryServiceStatus
,
6869 (ndr_pull_flags_fn_t
) ndr_pull_svcctl_QueryServiceStatus
,
6870 (ndr_print_function_t
) ndr_print_svcctl_QueryServiceStatus
,
6874 "svcctl_SetServiceStatus",
6875 sizeof(struct svcctl_SetServiceStatus
),
6876 (ndr_push_flags_fn_t
) ndr_push_svcctl_SetServiceStatus
,
6877 (ndr_pull_flags_fn_t
) ndr_pull_svcctl_SetServiceStatus
,
6878 (ndr_print_function_t
) ndr_print_svcctl_SetServiceStatus
,
6882 "svcctl_UnlockServiceDatabase",
6883 sizeof(struct svcctl_UnlockServiceDatabase
),
6884 (ndr_push_flags_fn_t
) ndr_push_svcctl_UnlockServiceDatabase
,
6885 (ndr_pull_flags_fn_t
) ndr_pull_svcctl_UnlockServiceDatabase
,
6886 (ndr_print_function_t
) ndr_print_svcctl_UnlockServiceDatabase
,
6890 "svcctl_NotifyBootConfigStatus",
6891 sizeof(struct svcctl_NotifyBootConfigStatus
),
6892 (ndr_push_flags_fn_t
) ndr_push_svcctl_NotifyBootConfigStatus
,
6893 (ndr_pull_flags_fn_t
) ndr_pull_svcctl_NotifyBootConfigStatus
,
6894 (ndr_print_function_t
) ndr_print_svcctl_NotifyBootConfigStatus
,
6898 "svcctl_SCSetServiceBitsW",
6899 sizeof(struct svcctl_SCSetServiceBitsW
),
6900 (ndr_push_flags_fn_t
) ndr_push_svcctl_SCSetServiceBitsW
,
6901 (ndr_pull_flags_fn_t
) ndr_pull_svcctl_SCSetServiceBitsW
,
6902 (ndr_print_function_t
) ndr_print_svcctl_SCSetServiceBitsW
,
6906 "svcctl_ChangeServiceConfigW",
6907 sizeof(struct svcctl_ChangeServiceConfigW
),
6908 (ndr_push_flags_fn_t
) ndr_push_svcctl_ChangeServiceConfigW
,
6909 (ndr_pull_flags_fn_t
) ndr_pull_svcctl_ChangeServiceConfigW
,
6910 (ndr_print_function_t
) ndr_print_svcctl_ChangeServiceConfigW
,
6914 "svcctl_CreateServiceW",
6915 sizeof(struct svcctl_CreateServiceW
),
6916 (ndr_push_flags_fn_t
) ndr_push_svcctl_CreateServiceW
,
6917 (ndr_pull_flags_fn_t
) ndr_pull_svcctl_CreateServiceW
,
6918 (ndr_print_function_t
) ndr_print_svcctl_CreateServiceW
,
6922 "svcctl_EnumDependentServicesW",
6923 sizeof(struct svcctl_EnumDependentServicesW
),
6924 (ndr_push_flags_fn_t
) ndr_push_svcctl_EnumDependentServicesW
,
6925 (ndr_pull_flags_fn_t
) ndr_pull_svcctl_EnumDependentServicesW
,
6926 (ndr_print_function_t
) ndr_print_svcctl_EnumDependentServicesW
,
6930 "svcctl_EnumServicesStatusW",
6931 sizeof(struct svcctl_EnumServicesStatusW
),
6932 (ndr_push_flags_fn_t
) ndr_push_svcctl_EnumServicesStatusW
,
6933 (ndr_pull_flags_fn_t
) ndr_pull_svcctl_EnumServicesStatusW
,
6934 (ndr_print_function_t
) ndr_print_svcctl_EnumServicesStatusW
,
6938 "svcctl_OpenSCManagerW",
6939 sizeof(struct svcctl_OpenSCManagerW
),
6940 (ndr_push_flags_fn_t
) ndr_push_svcctl_OpenSCManagerW
,
6941 (ndr_pull_flags_fn_t
) ndr_pull_svcctl_OpenSCManagerW
,
6942 (ndr_print_function_t
) ndr_print_svcctl_OpenSCManagerW
,
6946 "svcctl_OpenServiceW",
6947 sizeof(struct svcctl_OpenServiceW
),
6948 (ndr_push_flags_fn_t
) ndr_push_svcctl_OpenServiceW
,
6949 (ndr_pull_flags_fn_t
) ndr_pull_svcctl_OpenServiceW
,
6950 (ndr_print_function_t
) ndr_print_svcctl_OpenServiceW
,
6954 "svcctl_QueryServiceConfigW",
6955 sizeof(struct svcctl_QueryServiceConfigW
),
6956 (ndr_push_flags_fn_t
) ndr_push_svcctl_QueryServiceConfigW
,
6957 (ndr_pull_flags_fn_t
) ndr_pull_svcctl_QueryServiceConfigW
,
6958 (ndr_print_function_t
) ndr_print_svcctl_QueryServiceConfigW
,
6962 "svcctl_QueryServiceLockStatusW",
6963 sizeof(struct svcctl_QueryServiceLockStatusW
),
6964 (ndr_push_flags_fn_t
) ndr_push_svcctl_QueryServiceLockStatusW
,
6965 (ndr_pull_flags_fn_t
) ndr_pull_svcctl_QueryServiceLockStatusW
,
6966 (ndr_print_function_t
) ndr_print_svcctl_QueryServiceLockStatusW
,
6970 "svcctl_StartServiceW",
6971 sizeof(struct svcctl_StartServiceW
),
6972 (ndr_push_flags_fn_t
) ndr_push_svcctl_StartServiceW
,
6973 (ndr_pull_flags_fn_t
) ndr_pull_svcctl_StartServiceW
,
6974 (ndr_print_function_t
) ndr_print_svcctl_StartServiceW
,
6978 "svcctl_GetServiceDisplayNameW",
6979 sizeof(struct svcctl_GetServiceDisplayNameW
),
6980 (ndr_push_flags_fn_t
) ndr_push_svcctl_GetServiceDisplayNameW
,
6981 (ndr_pull_flags_fn_t
) ndr_pull_svcctl_GetServiceDisplayNameW
,
6982 (ndr_print_function_t
) ndr_print_svcctl_GetServiceDisplayNameW
,
6986 "svcctl_GetServiceKeyNameW",
6987 sizeof(struct svcctl_GetServiceKeyNameW
),
6988 (ndr_push_flags_fn_t
) ndr_push_svcctl_GetServiceKeyNameW
,
6989 (ndr_pull_flags_fn_t
) ndr_pull_svcctl_GetServiceKeyNameW
,
6990 (ndr_print_function_t
) ndr_print_svcctl_GetServiceKeyNameW
,
6994 "svcctl_SCSetServiceBitsA",
6995 sizeof(struct svcctl_SCSetServiceBitsA
),
6996 (ndr_push_flags_fn_t
) ndr_push_svcctl_SCSetServiceBitsA
,
6997 (ndr_pull_flags_fn_t
) ndr_pull_svcctl_SCSetServiceBitsA
,
6998 (ndr_print_function_t
) ndr_print_svcctl_SCSetServiceBitsA
,
7002 "svcctl_ChangeServiceConfigA",
7003 sizeof(struct svcctl_ChangeServiceConfigA
),
7004 (ndr_push_flags_fn_t
) ndr_push_svcctl_ChangeServiceConfigA
,
7005 (ndr_pull_flags_fn_t
) ndr_pull_svcctl_ChangeServiceConfigA
,
7006 (ndr_print_function_t
) ndr_print_svcctl_ChangeServiceConfigA
,
7010 "svcctl_CreateServiceA",
7011 sizeof(struct svcctl_CreateServiceA
),
7012 (ndr_push_flags_fn_t
) ndr_push_svcctl_CreateServiceA
,
7013 (ndr_pull_flags_fn_t
) ndr_pull_svcctl_CreateServiceA
,
7014 (ndr_print_function_t
) ndr_print_svcctl_CreateServiceA
,
7018 "svcctl_EnumDependentServicesA",
7019 sizeof(struct svcctl_EnumDependentServicesA
),
7020 (ndr_push_flags_fn_t
) ndr_push_svcctl_EnumDependentServicesA
,
7021 (ndr_pull_flags_fn_t
) ndr_pull_svcctl_EnumDependentServicesA
,
7022 (ndr_print_function_t
) ndr_print_svcctl_EnumDependentServicesA
,
7026 "svcctl_EnumServicesStatusA",
7027 sizeof(struct svcctl_EnumServicesStatusA
),
7028 (ndr_push_flags_fn_t
) ndr_push_svcctl_EnumServicesStatusA
,
7029 (ndr_pull_flags_fn_t
) ndr_pull_svcctl_EnumServicesStatusA
,
7030 (ndr_print_function_t
) ndr_print_svcctl_EnumServicesStatusA
,
7034 "svcctl_OpenSCManagerA",
7035 sizeof(struct svcctl_OpenSCManagerA
),
7036 (ndr_push_flags_fn_t
) ndr_push_svcctl_OpenSCManagerA
,
7037 (ndr_pull_flags_fn_t
) ndr_pull_svcctl_OpenSCManagerA
,
7038 (ndr_print_function_t
) ndr_print_svcctl_OpenSCManagerA
,
7042 "svcctl_OpenServiceA",
7043 sizeof(struct svcctl_OpenServiceA
),
7044 (ndr_push_flags_fn_t
) ndr_push_svcctl_OpenServiceA
,
7045 (ndr_pull_flags_fn_t
) ndr_pull_svcctl_OpenServiceA
,
7046 (ndr_print_function_t
) ndr_print_svcctl_OpenServiceA
,
7050 "svcctl_QueryServiceConfigA",
7051 sizeof(struct svcctl_QueryServiceConfigA
),
7052 (ndr_push_flags_fn_t
) ndr_push_svcctl_QueryServiceConfigA
,
7053 (ndr_pull_flags_fn_t
) ndr_pull_svcctl_QueryServiceConfigA
,
7054 (ndr_print_function_t
) ndr_print_svcctl_QueryServiceConfigA
,
7058 "svcctl_QueryServiceLockStatusA",
7059 sizeof(struct svcctl_QueryServiceLockStatusA
),
7060 (ndr_push_flags_fn_t
) ndr_push_svcctl_QueryServiceLockStatusA
,
7061 (ndr_pull_flags_fn_t
) ndr_pull_svcctl_QueryServiceLockStatusA
,
7062 (ndr_print_function_t
) ndr_print_svcctl_QueryServiceLockStatusA
,
7066 "svcctl_StartServiceA",
7067 sizeof(struct svcctl_StartServiceA
),
7068 (ndr_push_flags_fn_t
) ndr_push_svcctl_StartServiceA
,
7069 (ndr_pull_flags_fn_t
) ndr_pull_svcctl_StartServiceA
,
7070 (ndr_print_function_t
) ndr_print_svcctl_StartServiceA
,
7074 "svcctl_GetServiceDisplayNameA",
7075 sizeof(struct svcctl_GetServiceDisplayNameA
),
7076 (ndr_push_flags_fn_t
) ndr_push_svcctl_GetServiceDisplayNameA
,
7077 (ndr_pull_flags_fn_t
) ndr_pull_svcctl_GetServiceDisplayNameA
,
7078 (ndr_print_function_t
) ndr_print_svcctl_GetServiceDisplayNameA
,
7082 "svcctl_GetServiceKeyNameA",
7083 sizeof(struct svcctl_GetServiceKeyNameA
),
7084 (ndr_push_flags_fn_t
) ndr_push_svcctl_GetServiceKeyNameA
,
7085 (ndr_pull_flags_fn_t
) ndr_pull_svcctl_GetServiceKeyNameA
,
7086 (ndr_print_function_t
) ndr_print_svcctl_GetServiceKeyNameA
,
7090 "svcctl_GetCurrentGroupeStateW",
7091 sizeof(struct svcctl_GetCurrentGroupeStateW
),
7092 (ndr_push_flags_fn_t
) ndr_push_svcctl_GetCurrentGroupeStateW
,
7093 (ndr_pull_flags_fn_t
) ndr_pull_svcctl_GetCurrentGroupeStateW
,
7094 (ndr_print_function_t
) ndr_print_svcctl_GetCurrentGroupeStateW
,
7098 "svcctl_EnumServiceGroupW",
7099 sizeof(struct svcctl_EnumServiceGroupW
),
7100 (ndr_push_flags_fn_t
) ndr_push_svcctl_EnumServiceGroupW
,
7101 (ndr_pull_flags_fn_t
) ndr_pull_svcctl_EnumServiceGroupW
,
7102 (ndr_print_function_t
) ndr_print_svcctl_EnumServiceGroupW
,
7106 "svcctl_ChangeServiceConfig2A",
7107 sizeof(struct svcctl_ChangeServiceConfig2A
),
7108 (ndr_push_flags_fn_t
) ndr_push_svcctl_ChangeServiceConfig2A
,
7109 (ndr_pull_flags_fn_t
) ndr_pull_svcctl_ChangeServiceConfig2A
,
7110 (ndr_print_function_t
) ndr_print_svcctl_ChangeServiceConfig2A
,
7114 "svcctl_ChangeServiceConfig2W",
7115 sizeof(struct svcctl_ChangeServiceConfig2W
),
7116 (ndr_push_flags_fn_t
) ndr_push_svcctl_ChangeServiceConfig2W
,
7117 (ndr_pull_flags_fn_t
) ndr_pull_svcctl_ChangeServiceConfig2W
,
7118 (ndr_print_function_t
) ndr_print_svcctl_ChangeServiceConfig2W
,
7122 "svcctl_QueryServiceConfig2A",
7123 sizeof(struct svcctl_QueryServiceConfig2A
),
7124 (ndr_push_flags_fn_t
) ndr_push_svcctl_QueryServiceConfig2A
,
7125 (ndr_pull_flags_fn_t
) ndr_pull_svcctl_QueryServiceConfig2A
,
7126 (ndr_print_function_t
) ndr_print_svcctl_QueryServiceConfig2A
,
7130 "svcctl_QueryServiceConfig2W",
7131 sizeof(struct svcctl_QueryServiceConfig2W
),
7132 (ndr_push_flags_fn_t
) ndr_push_svcctl_QueryServiceConfig2W
,
7133 (ndr_pull_flags_fn_t
) ndr_pull_svcctl_QueryServiceConfig2W
,
7134 (ndr_print_function_t
) ndr_print_svcctl_QueryServiceConfig2W
,
7138 "svcctl_QueryServiceStatusEx",
7139 sizeof(struct svcctl_QueryServiceStatusEx
),
7140 (ndr_push_flags_fn_t
) ndr_push_svcctl_QueryServiceStatusEx
,
7141 (ndr_pull_flags_fn_t
) ndr_pull_svcctl_QueryServiceStatusEx
,
7142 (ndr_print_function_t
) ndr_print_svcctl_QueryServiceStatusEx
,
7146 "EnumServicesStatusExA",
7147 sizeof(struct EnumServicesStatusExA
),
7148 (ndr_push_flags_fn_t
) ndr_push_EnumServicesStatusExA
,
7149 (ndr_pull_flags_fn_t
) ndr_pull_EnumServicesStatusExA
,
7150 (ndr_print_function_t
) ndr_print_EnumServicesStatusExA
,
7154 "EnumServicesStatusExW",
7155 sizeof(struct EnumServicesStatusExW
),
7156 (ndr_push_flags_fn_t
) ndr_push_EnumServicesStatusExW
,
7157 (ndr_pull_flags_fn_t
) ndr_pull_EnumServicesStatusExW
,
7158 (ndr_print_function_t
) ndr_print_EnumServicesStatusExW
,
7162 "svcctl_SCSendTSMessage",
7163 sizeof(struct svcctl_SCSendTSMessage
),
7164 (ndr_push_flags_fn_t
) ndr_push_svcctl_SCSendTSMessage
,
7165 (ndr_pull_flags_fn_t
) ndr_pull_svcctl_SCSendTSMessage
,
7166 (ndr_print_function_t
) ndr_print_svcctl_SCSendTSMessage
,
7169 { NULL
, 0, NULL
, NULL
, NULL
, false }
7172 static const char * const svcctl_endpoint_strings
[] = {
7173 "ncacn_np:[\\pipe\\svcctl]",
7177 static const struct ndr_interface_string_array svcctl_endpoints
= {
7179 .names
= svcctl_endpoint_strings
7182 static const char * const svcctl_authservice_strings
[] = {
7186 static const struct ndr_interface_string_array svcctl_authservices
= {
7188 .names
= svcctl_authservice_strings
7192 const struct ndr_interface_table ndr_table_svcctl
= {
7195 {0x367abb81,0x9844,0x35f1,{0xad,0x32},{0x98,0xf0,0x38,0x00,0x10,0x03}},
7198 .helpstring
= NDR_SVCCTL_HELPSTRING
,
7200 .calls
= svcctl_calls
,
7201 .endpoints
= &svcctl_endpoints
,
7202 .authservices
= &svcctl_authservices