1 /* parser auto-generated by pidl */
4 #include "../librpc/gen_ndr/ndr_svcctl.h"
6 #include "librpc/gen_ndr/ndr_misc.h"
7 #include "librpc/gen_ndr/ndr_security.h"
8 static enum ndr_err_code
ndr_push_SERVICE_LOCK_STATUS(struct ndr_push
*ndr
, int ndr_flags
, const struct SERVICE_LOCK_STATUS
*r
)
10 if (ndr_flags
& NDR_SCALARS
) {
11 NDR_CHECK(ndr_push_align(ndr
, 4));
12 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->is_locked
));
13 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->lock_owner
));
14 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->lock_duration
));
16 if (ndr_flags
& NDR_BUFFERS
) {
18 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->lock_owner
, CH_UTF16
)));
19 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, 0));
20 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->lock_owner
, CH_UTF16
)));
21 NDR_CHECK(ndr_push_charset(ndr
, NDR_SCALARS
, r
->lock_owner
, ndr_charset_length(r
->lock_owner
, CH_UTF16
), sizeof(uint16_t), CH_UTF16
));
24 return NDR_ERR_SUCCESS
;
27 static enum ndr_err_code
ndr_pull_SERVICE_LOCK_STATUS(struct ndr_pull
*ndr
, int ndr_flags
, struct SERVICE_LOCK_STATUS
*r
)
29 uint32_t _ptr_lock_owner
;
30 uint32_t size_lock_owner_1
= 0;
31 uint32_t length_lock_owner_1
= 0;
32 TALLOC_CTX
*_mem_save_lock_owner_0
;
33 if (ndr_flags
& NDR_SCALARS
) {
34 NDR_CHECK(ndr_pull_align(ndr
, 4));
35 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->is_locked
));
36 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_lock_owner
));
37 if (_ptr_lock_owner
) {
38 NDR_PULL_ALLOC(ndr
, r
->lock_owner
);
42 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->lock_duration
));
44 if (ndr_flags
& NDR_BUFFERS
) {
46 _mem_save_lock_owner_0
= NDR_PULL_GET_MEM_CTX(ndr
);
47 NDR_PULL_SET_MEM_CTX(ndr
, r
->lock_owner
, 0);
48 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->lock_owner
));
49 NDR_CHECK(ndr_pull_array_length(ndr
, &r
->lock_owner
));
50 size_lock_owner_1
= ndr_get_array_size(ndr
, &r
->lock_owner
);
51 length_lock_owner_1
= ndr_get_array_length(ndr
, &r
->lock_owner
);
52 if (length_lock_owner_1
> size_lock_owner_1
) {
53 return ndr_pull_error(ndr
, NDR_ERR_ARRAY_SIZE
, "Bad array size %u should exceed array length %u", size_lock_owner_1
, length_lock_owner_1
);
55 NDR_CHECK(ndr_check_string_terminator(ndr
, length_lock_owner_1
, sizeof(uint16_t)));
56 NDR_CHECK(ndr_pull_charset(ndr
, NDR_SCALARS
, &r
->lock_owner
, length_lock_owner_1
, sizeof(uint16_t), CH_UTF16
));
57 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_lock_owner_0
, 0);
60 return NDR_ERR_SUCCESS
;
63 _PUBLIC_
void ndr_print_SERVICE_LOCK_STATUS(struct ndr_print
*ndr
, const char *name
, const struct SERVICE_LOCK_STATUS
*r
)
65 ndr_print_struct(ndr
, name
, "SERVICE_LOCK_STATUS");
67 ndr_print_uint32(ndr
, "is_locked", r
->is_locked
);
68 ndr_print_ptr(ndr
, "lock_owner", r
->lock_owner
);
71 ndr_print_string(ndr
, "lock_owner", r
->lock_owner
);
74 ndr_print_uint32(ndr
, "lock_duration", r
->lock_duration
);
78 static enum ndr_err_code
ndr_push_svcctl_ServiceStatus(struct ndr_push
*ndr
, int ndr_flags
, enum svcctl_ServiceStatus r
)
80 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
));
81 return NDR_ERR_SUCCESS
;
84 static enum ndr_err_code
ndr_pull_svcctl_ServiceStatus(struct ndr_pull
*ndr
, int ndr_flags
, enum svcctl_ServiceStatus
*r
)
87 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &v
));
89 return NDR_ERR_SUCCESS
;
92 _PUBLIC_
void ndr_print_svcctl_ServiceStatus(struct ndr_print
*ndr
, const char *name
, enum svcctl_ServiceStatus r
)
94 const char *val
= NULL
;
97 case SVCCTL_STATE_UNKNOWN
: val
= "SVCCTL_STATE_UNKNOWN"; break;
98 case SVCCTL_STOPPED
: val
= "SVCCTL_STOPPED"; break;
99 case SVCCTL_START_PENDING
: val
= "SVCCTL_START_PENDING"; break;
100 case SVCCTL_STOP_PENDING
: val
= "SVCCTL_STOP_PENDING"; break;
101 case SVCCTL_RUNNING
: val
= "SVCCTL_RUNNING"; break;
102 case SVCCTL_CONTINUE_PENDING
: val
= "SVCCTL_CONTINUE_PENDING"; break;
103 case SVCCTL_PAUSE_PENDING
: val
= "SVCCTL_PAUSE_PENDING"; break;
104 case SVCCTL_PAUSED
: val
= "SVCCTL_PAUSED"; break;
106 ndr_print_enum(ndr
, name
, "ENUM", val
, r
);
109 static enum ndr_err_code
ndr_push_svcctl_ControlsAccepted(struct ndr_push
*ndr
, int ndr_flags
, uint32_t r
)
111 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
));
112 return NDR_ERR_SUCCESS
;
115 static enum ndr_err_code
ndr_pull_svcctl_ControlsAccepted(struct ndr_pull
*ndr
, int ndr_flags
, uint32_t *r
)
118 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &v
));
120 return NDR_ERR_SUCCESS
;
123 _PUBLIC_
void ndr_print_svcctl_ControlsAccepted(struct ndr_print
*ndr
, const char *name
, uint32_t r
)
125 ndr_print_uint32(ndr
, name
, r
);
127 ndr_print_bitmap_flag(ndr
, sizeof(uint32_t), "SVCCTL_ACCEPT_STOP", SVCCTL_ACCEPT_STOP
, r
);
128 ndr_print_bitmap_flag(ndr
, sizeof(uint32_t), "SVCCTL_ACCEPT_PAUSE_CONTINUE", SVCCTL_ACCEPT_PAUSE_CONTINUE
, r
);
129 ndr_print_bitmap_flag(ndr
, sizeof(uint32_t), "SVCCTL_ACCEPT_SHUTDOWN", SVCCTL_ACCEPT_SHUTDOWN
, r
);
130 ndr_print_bitmap_flag(ndr
, sizeof(uint32_t), "SVCCTL_ACCEPT_PARAMCHANGE", SVCCTL_ACCEPT_PARAMCHANGE
, r
);
131 ndr_print_bitmap_flag(ndr
, sizeof(uint32_t), "SVCCTL_ACCEPT_NETBINDCHANGE", SVCCTL_ACCEPT_NETBINDCHANGE
, r
);
132 ndr_print_bitmap_flag(ndr
, sizeof(uint32_t), "SVCCTL_ACCEPT_HARDWAREPROFILECHANGE", SVCCTL_ACCEPT_HARDWAREPROFILECHANGE
, r
);
133 ndr_print_bitmap_flag(ndr
, sizeof(uint32_t), "SVCCTL_ACCEPT_POWEREVENT", SVCCTL_ACCEPT_POWEREVENT
, r
);
137 static enum ndr_err_code
ndr_push_SERVICE_STATUS(struct ndr_push
*ndr
, int ndr_flags
, const struct SERVICE_STATUS
*r
)
139 if (ndr_flags
& NDR_SCALARS
) {
140 NDR_CHECK(ndr_push_align(ndr
, 4));
141 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->type
));
142 NDR_CHECK(ndr_push_svcctl_ServiceStatus(ndr
, NDR_SCALARS
, r
->state
));
143 NDR_CHECK(ndr_push_svcctl_ControlsAccepted(ndr
, NDR_SCALARS
, r
->controls_accepted
));
144 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->win32_exit_code
));
145 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->service_exit_code
));
146 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->check_point
));
147 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->wait_hint
));
149 if (ndr_flags
& NDR_BUFFERS
) {
151 return NDR_ERR_SUCCESS
;
154 static enum ndr_err_code
ndr_pull_SERVICE_STATUS(struct ndr_pull
*ndr
, int ndr_flags
, struct SERVICE_STATUS
*r
)
156 if (ndr_flags
& NDR_SCALARS
) {
157 NDR_CHECK(ndr_pull_align(ndr
, 4));
158 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->type
));
159 NDR_CHECK(ndr_pull_svcctl_ServiceStatus(ndr
, NDR_SCALARS
, &r
->state
));
160 NDR_CHECK(ndr_pull_svcctl_ControlsAccepted(ndr
, NDR_SCALARS
, &r
->controls_accepted
));
161 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->win32_exit_code
));
162 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->service_exit_code
));
163 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->check_point
));
164 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->wait_hint
));
166 if (ndr_flags
& NDR_BUFFERS
) {
168 return NDR_ERR_SUCCESS
;
171 _PUBLIC_
void ndr_print_SERVICE_STATUS(struct ndr_print
*ndr
, const char *name
, const struct SERVICE_STATUS
*r
)
173 ndr_print_struct(ndr
, name
, "SERVICE_STATUS");
175 ndr_print_uint32(ndr
, "type", r
->type
);
176 ndr_print_svcctl_ServiceStatus(ndr
, "state", r
->state
);
177 ndr_print_svcctl_ControlsAccepted(ndr
, "controls_accepted", r
->controls_accepted
);
178 ndr_print_WERROR(ndr
, "win32_exit_code", r
->win32_exit_code
);
179 ndr_print_uint32(ndr
, "service_exit_code", r
->service_exit_code
);
180 ndr_print_uint32(ndr
, "check_point", r
->check_point
);
181 ndr_print_uint32(ndr
, "wait_hint", r
->wait_hint
);
185 _PUBLIC_
enum ndr_err_code
ndr_push_SERVICE_STATUS_PROCESS(struct ndr_push
*ndr
, int ndr_flags
, const struct SERVICE_STATUS_PROCESS
*r
)
187 if (ndr_flags
& NDR_SCALARS
) {
188 NDR_CHECK(ndr_push_align(ndr
, 4));
189 NDR_CHECK(ndr_push_SERVICE_STATUS(ndr
, NDR_SCALARS
, &r
->status
));
190 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->process_id
));
191 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->service_flags
));
193 if (ndr_flags
& NDR_BUFFERS
) {
195 return NDR_ERR_SUCCESS
;
198 _PUBLIC_
enum ndr_err_code
ndr_pull_SERVICE_STATUS_PROCESS(struct ndr_pull
*ndr
, int ndr_flags
, struct SERVICE_STATUS_PROCESS
*r
)
200 if (ndr_flags
& NDR_SCALARS
) {
201 NDR_CHECK(ndr_pull_align(ndr
, 4));
202 NDR_CHECK(ndr_pull_SERVICE_STATUS(ndr
, NDR_SCALARS
, &r
->status
));
203 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->process_id
));
204 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->service_flags
));
206 if (ndr_flags
& NDR_BUFFERS
) {
208 return NDR_ERR_SUCCESS
;
211 _PUBLIC_
void ndr_print_SERVICE_STATUS_PROCESS(struct ndr_print
*ndr
, const char *name
, const struct SERVICE_STATUS_PROCESS
*r
)
213 ndr_print_struct(ndr
, name
, "SERVICE_STATUS_PROCESS");
215 ndr_print_SERVICE_STATUS(ndr
, "status", &r
->status
);
216 ndr_print_uint32(ndr
, "process_id", r
->process_id
);
217 ndr_print_uint32(ndr
, "service_flags", r
->service_flags
);
221 _PUBLIC_
enum ndr_err_code
ndr_push_ENUM_SERVICE_STATUSW(struct ndr_push
*ndr
, int ndr_flags
, const struct ENUM_SERVICE_STATUSW
*r
)
223 if (ndr_flags
& NDR_SCALARS
) {
224 NDR_CHECK(ndr_push_align(ndr
, 4));
226 uint32_t _flags_save_string
= ndr
->flags
;
227 ndr_set_flags(&ndr
->flags
, LIBNDR_FLAG_STR_NULLTERM
);
228 NDR_CHECK(ndr_push_relative_ptr1(ndr
, r
->service_name
));
229 ndr
->flags
= _flags_save_string
;
232 uint32_t _flags_save_string
= ndr
->flags
;
233 ndr_set_flags(&ndr
->flags
, LIBNDR_FLAG_STR_NULLTERM
);
234 NDR_CHECK(ndr_push_relative_ptr1(ndr
, r
->display_name
));
235 ndr
->flags
= _flags_save_string
;
237 NDR_CHECK(ndr_push_SERVICE_STATUS(ndr
, NDR_SCALARS
, &r
->status
));
239 if (ndr_flags
& NDR_BUFFERS
) {
241 uint32_t _flags_save_string
= ndr
->flags
;
242 ndr_set_flags(&ndr
->flags
, LIBNDR_FLAG_STR_NULLTERM
);
243 if (r
->service_name
) {
244 NDR_CHECK(ndr_push_relative_ptr2_start(ndr
, r
->service_name
));
245 NDR_CHECK(ndr_push_string(ndr
, NDR_SCALARS
, r
->service_name
));
246 NDR_CHECK(ndr_push_relative_ptr2_end(ndr
, r
->service_name
));
248 ndr
->flags
= _flags_save_string
;
251 uint32_t _flags_save_string
= ndr
->flags
;
252 ndr_set_flags(&ndr
->flags
, LIBNDR_FLAG_STR_NULLTERM
);
253 if (r
->display_name
) {
254 NDR_CHECK(ndr_push_relative_ptr2_start(ndr
, r
->display_name
));
255 NDR_CHECK(ndr_push_string(ndr
, NDR_SCALARS
, r
->display_name
));
256 NDR_CHECK(ndr_push_relative_ptr2_end(ndr
, r
->display_name
));
258 ndr
->flags
= _flags_save_string
;
261 return NDR_ERR_SUCCESS
;
264 _PUBLIC_
enum ndr_err_code
ndr_pull_ENUM_SERVICE_STATUSW(struct ndr_pull
*ndr
, int ndr_flags
, struct ENUM_SERVICE_STATUSW
*r
)
266 uint32_t _ptr_service_name
;
267 TALLOC_CTX
*_mem_save_service_name_0
;
268 uint32_t _ptr_display_name
;
269 TALLOC_CTX
*_mem_save_display_name_0
;
270 if (ndr_flags
& NDR_SCALARS
) {
271 NDR_CHECK(ndr_pull_align(ndr
, 4));
273 uint32_t _flags_save_string
= ndr
->flags
;
274 ndr_set_flags(&ndr
->flags
, LIBNDR_FLAG_STR_NULLTERM
);
275 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_service_name
));
276 if (_ptr_service_name
) {
277 NDR_PULL_ALLOC(ndr
, r
->service_name
);
278 NDR_CHECK(ndr_pull_relative_ptr1(ndr
, r
->service_name
, _ptr_service_name
));
280 r
->service_name
= NULL
;
282 ndr
->flags
= _flags_save_string
;
285 uint32_t _flags_save_string
= ndr
->flags
;
286 ndr_set_flags(&ndr
->flags
, LIBNDR_FLAG_STR_NULLTERM
);
287 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_display_name
));
288 if (_ptr_display_name
) {
289 NDR_PULL_ALLOC(ndr
, r
->display_name
);
290 NDR_CHECK(ndr_pull_relative_ptr1(ndr
, r
->display_name
, _ptr_display_name
));
292 r
->display_name
= NULL
;
294 ndr
->flags
= _flags_save_string
;
296 NDR_CHECK(ndr_pull_SERVICE_STATUS(ndr
, NDR_SCALARS
, &r
->status
));
298 if (ndr_flags
& NDR_BUFFERS
) {
300 uint32_t _flags_save_string
= ndr
->flags
;
301 ndr_set_flags(&ndr
->flags
, LIBNDR_FLAG_STR_NULLTERM
);
302 if (r
->service_name
) {
303 uint32_t _relative_save_offset
;
304 _relative_save_offset
= ndr
->offset
;
305 NDR_CHECK(ndr_pull_relative_ptr2(ndr
, r
->service_name
));
306 _mem_save_service_name_0
= NDR_PULL_GET_MEM_CTX(ndr
);
307 NDR_PULL_SET_MEM_CTX(ndr
, r
->service_name
, 0);
308 NDR_CHECK(ndr_pull_string(ndr
, NDR_SCALARS
, &r
->service_name
));
309 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_service_name_0
, 0);
310 ndr
->offset
= _relative_save_offset
;
312 ndr
->flags
= _flags_save_string
;
315 uint32_t _flags_save_string
= ndr
->flags
;
316 ndr_set_flags(&ndr
->flags
, LIBNDR_FLAG_STR_NULLTERM
);
317 if (r
->display_name
) {
318 uint32_t _relative_save_offset
;
319 _relative_save_offset
= ndr
->offset
;
320 NDR_CHECK(ndr_pull_relative_ptr2(ndr
, r
->display_name
));
321 _mem_save_display_name_0
= NDR_PULL_GET_MEM_CTX(ndr
);
322 NDR_PULL_SET_MEM_CTX(ndr
, r
->display_name
, 0);
323 NDR_CHECK(ndr_pull_string(ndr
, NDR_SCALARS
, &r
->display_name
));
324 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_display_name_0
, 0);
325 ndr
->offset
= _relative_save_offset
;
327 ndr
->flags
= _flags_save_string
;
330 return NDR_ERR_SUCCESS
;
333 _PUBLIC_
void ndr_print_ENUM_SERVICE_STATUSW(struct ndr_print
*ndr
, const char *name
, const struct ENUM_SERVICE_STATUSW
*r
)
335 ndr_print_struct(ndr
, name
, "ENUM_SERVICE_STATUSW");
337 ndr_print_ptr(ndr
, "service_name", r
->service_name
);
339 if (r
->service_name
) {
340 ndr_print_string(ndr
, "service_name", r
->service_name
);
343 ndr_print_ptr(ndr
, "display_name", r
->display_name
);
345 if (r
->display_name
) {
346 ndr_print_string(ndr
, "display_name", r
->display_name
);
349 ndr_print_SERVICE_STATUS(ndr
, "status", &r
->status
);
353 _PUBLIC_
size_t ndr_size_ENUM_SERVICE_STATUSW(const struct ENUM_SERVICE_STATUSW
*r
, struct smb_iconv_convenience
*ic
, int flags
)
355 return ndr_size_struct(r
, flags
, (ndr_push_flags_fn_t
)ndr_push_ENUM_SERVICE_STATUSW
, ic
);
358 _PUBLIC_
enum ndr_err_code
ndr_push_ENUM_SERVICE_STATUSA(struct ndr_push
*ndr
, int ndr_flags
, const struct ENUM_SERVICE_STATUSA
*r
)
360 if (ndr_flags
& NDR_SCALARS
) {
361 NDR_CHECK(ndr_push_align(ndr
, 4));
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
->service_name
));
366 ndr
->flags
= _flags_save_string
;
369 uint32_t _flags_save_string
= ndr
->flags
;
370 ndr_set_flags(&ndr
->flags
, LIBNDR_FLAG_STR_ASCII
|LIBNDR_FLAG_STR_NULLTERM
);
371 NDR_CHECK(ndr_push_relative_ptr1(ndr
, r
->display_name
));
372 ndr
->flags
= _flags_save_string
;
374 NDR_CHECK(ndr_push_SERVICE_STATUS(ndr
, NDR_SCALARS
, &r
->status
));
376 if (ndr_flags
& NDR_BUFFERS
) {
378 uint32_t _flags_save_string
= ndr
->flags
;
379 ndr_set_flags(&ndr
->flags
, LIBNDR_FLAG_STR_ASCII
|LIBNDR_FLAG_STR_NULLTERM
);
380 if (r
->service_name
) {
381 NDR_CHECK(ndr_push_relative_ptr2_start(ndr
, r
->service_name
));
382 NDR_CHECK(ndr_push_string(ndr
, NDR_SCALARS
, r
->service_name
));
383 NDR_CHECK(ndr_push_relative_ptr2_end(ndr
, r
->service_name
));
385 ndr
->flags
= _flags_save_string
;
388 uint32_t _flags_save_string
= ndr
->flags
;
389 ndr_set_flags(&ndr
->flags
, LIBNDR_FLAG_STR_ASCII
|LIBNDR_FLAG_STR_NULLTERM
);
390 if (r
->display_name
) {
391 NDR_CHECK(ndr_push_relative_ptr2_start(ndr
, r
->display_name
));
392 NDR_CHECK(ndr_push_string(ndr
, NDR_SCALARS
, r
->display_name
));
393 NDR_CHECK(ndr_push_relative_ptr2_end(ndr
, r
->display_name
));
395 ndr
->flags
= _flags_save_string
;
398 return NDR_ERR_SUCCESS
;
401 _PUBLIC_
enum ndr_err_code
ndr_pull_ENUM_SERVICE_STATUSA(struct ndr_pull
*ndr
, int ndr_flags
, struct ENUM_SERVICE_STATUSA
*r
)
403 uint32_t _ptr_service_name
;
404 TALLOC_CTX
*_mem_save_service_name_0
;
405 uint32_t _ptr_display_name
;
406 TALLOC_CTX
*_mem_save_display_name_0
;
407 if (ndr_flags
& NDR_SCALARS
) {
408 NDR_CHECK(ndr_pull_align(ndr
, 4));
410 uint32_t _flags_save_string
= ndr
->flags
;
411 ndr_set_flags(&ndr
->flags
, LIBNDR_FLAG_STR_ASCII
|LIBNDR_FLAG_STR_NULLTERM
);
412 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_service_name
));
413 if (_ptr_service_name
) {
414 NDR_PULL_ALLOC(ndr
, r
->service_name
);
415 NDR_CHECK(ndr_pull_relative_ptr1(ndr
, r
->service_name
, _ptr_service_name
));
417 r
->service_name
= NULL
;
419 ndr
->flags
= _flags_save_string
;
422 uint32_t _flags_save_string
= ndr
->flags
;
423 ndr_set_flags(&ndr
->flags
, LIBNDR_FLAG_STR_ASCII
|LIBNDR_FLAG_STR_NULLTERM
);
424 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_display_name
));
425 if (_ptr_display_name
) {
426 NDR_PULL_ALLOC(ndr
, r
->display_name
);
427 NDR_CHECK(ndr_pull_relative_ptr1(ndr
, r
->display_name
, _ptr_display_name
));
429 r
->display_name
= NULL
;
431 ndr
->flags
= _flags_save_string
;
433 NDR_CHECK(ndr_pull_SERVICE_STATUS(ndr
, NDR_SCALARS
, &r
->status
));
435 if (ndr_flags
& NDR_BUFFERS
) {
437 uint32_t _flags_save_string
= ndr
->flags
;
438 ndr_set_flags(&ndr
->flags
, LIBNDR_FLAG_STR_ASCII
|LIBNDR_FLAG_STR_NULLTERM
);
439 if (r
->service_name
) {
440 uint32_t _relative_save_offset
;
441 _relative_save_offset
= ndr
->offset
;
442 NDR_CHECK(ndr_pull_relative_ptr2(ndr
, r
->service_name
));
443 _mem_save_service_name_0
= NDR_PULL_GET_MEM_CTX(ndr
);
444 NDR_PULL_SET_MEM_CTX(ndr
, r
->service_name
, 0);
445 NDR_CHECK(ndr_pull_string(ndr
, NDR_SCALARS
, &r
->service_name
));
446 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_service_name_0
, 0);
447 ndr
->offset
= _relative_save_offset
;
449 ndr
->flags
= _flags_save_string
;
452 uint32_t _flags_save_string
= ndr
->flags
;
453 ndr_set_flags(&ndr
->flags
, LIBNDR_FLAG_STR_ASCII
|LIBNDR_FLAG_STR_NULLTERM
);
454 if (r
->display_name
) {
455 uint32_t _relative_save_offset
;
456 _relative_save_offset
= ndr
->offset
;
457 NDR_CHECK(ndr_pull_relative_ptr2(ndr
, r
->display_name
));
458 _mem_save_display_name_0
= NDR_PULL_GET_MEM_CTX(ndr
);
459 NDR_PULL_SET_MEM_CTX(ndr
, r
->display_name
, 0);
460 NDR_CHECK(ndr_pull_string(ndr
, NDR_SCALARS
, &r
->display_name
));
461 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_display_name_0
, 0);
462 ndr
->offset
= _relative_save_offset
;
464 ndr
->flags
= _flags_save_string
;
467 return NDR_ERR_SUCCESS
;
470 _PUBLIC_
void ndr_print_ENUM_SERVICE_STATUSA(struct ndr_print
*ndr
, const char *name
, const struct ENUM_SERVICE_STATUSA
*r
)
472 ndr_print_struct(ndr
, name
, "ENUM_SERVICE_STATUSA");
474 ndr_print_ptr(ndr
, "service_name", r
->service_name
);
476 if (r
->service_name
) {
477 ndr_print_string(ndr
, "service_name", r
->service_name
);
480 ndr_print_ptr(ndr
, "display_name", r
->display_name
);
482 if (r
->display_name
) {
483 ndr_print_string(ndr
, "display_name", r
->display_name
);
486 ndr_print_SERVICE_STATUS(ndr
, "status", &r
->status
);
490 _PUBLIC_
size_t ndr_size_ENUM_SERVICE_STATUSA(const struct ENUM_SERVICE_STATUSA
*r
, struct smb_iconv_convenience
*ic
, int flags
)
492 return ndr_size_struct(r
, flags
, (ndr_push_flags_fn_t
)ndr_push_ENUM_SERVICE_STATUSA
, ic
);
495 _PUBLIC_
enum ndr_err_code
ndr_push_svcctl_ServerType(struct ndr_push
*ndr
, int ndr_flags
, uint32_t r
)
497 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
));
498 return NDR_ERR_SUCCESS
;
501 _PUBLIC_
enum ndr_err_code
ndr_pull_svcctl_ServerType(struct ndr_pull
*ndr
, int ndr_flags
, uint32_t *r
)
504 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &v
));
506 return NDR_ERR_SUCCESS
;
509 _PUBLIC_
void ndr_print_svcctl_ServerType(struct ndr_print
*ndr
, const char *name
, uint32_t r
)
511 ndr_print_uint32(ndr
, name
, r
);
513 ndr_print_bitmap_flag(ndr
, sizeof(uint32_t), "SV_TYPE_WORKSTATION", SV_TYPE_WORKSTATION
, r
);
514 ndr_print_bitmap_flag(ndr
, sizeof(uint32_t), "SV_TYPE_SERVER", SV_TYPE_SERVER
, r
);
515 ndr_print_bitmap_flag(ndr
, sizeof(uint32_t), "SV_TYPE_SQLSERVER", SV_TYPE_SQLSERVER
, r
);
516 ndr_print_bitmap_flag(ndr
, sizeof(uint32_t), "SV_TYPE_DOMAIN_CTRL", SV_TYPE_DOMAIN_CTRL
, r
);
517 ndr_print_bitmap_flag(ndr
, sizeof(uint32_t), "SV_TYPE_DOMAIN_BAKCTRL", SV_TYPE_DOMAIN_BAKCTRL
, r
);
518 ndr_print_bitmap_flag(ndr
, sizeof(uint32_t), "SV_TYPE_TIME_SOURCE", SV_TYPE_TIME_SOURCE
, r
);
519 ndr_print_bitmap_flag(ndr
, sizeof(uint32_t), "SV_TYPE_AFP", SV_TYPE_AFP
, r
);
520 ndr_print_bitmap_flag(ndr
, sizeof(uint32_t), "SV_TYPE_NOVELL", SV_TYPE_NOVELL
, r
);
521 ndr_print_bitmap_flag(ndr
, sizeof(uint32_t), "SV_TYPE_DOMAIN_MEMBER", SV_TYPE_DOMAIN_MEMBER
, r
);
522 ndr_print_bitmap_flag(ndr
, sizeof(uint32_t), "SV_TYPE_PRINTQ_SERVER", SV_TYPE_PRINTQ_SERVER
, r
);
523 ndr_print_bitmap_flag(ndr
, sizeof(uint32_t), "SV_TYPE_DIALIN_SERVER", SV_TYPE_DIALIN_SERVER
, r
);
524 ndr_print_bitmap_flag(ndr
, sizeof(uint32_t), "SV_TYPE_SERVER_UNIX", SV_TYPE_SERVER_UNIX
, r
);
525 ndr_print_bitmap_flag(ndr
, sizeof(uint32_t), "SV_TYPE_NT", SV_TYPE_NT
, r
);
526 ndr_print_bitmap_flag(ndr
, sizeof(uint32_t), "SV_TYPE_WFW", SV_TYPE_WFW
, r
);
527 ndr_print_bitmap_flag(ndr
, sizeof(uint32_t), "SV_TYPE_SERVER_MFPN", SV_TYPE_SERVER_MFPN
, r
);
528 ndr_print_bitmap_flag(ndr
, sizeof(uint32_t), "SV_TYPE_SERVER_NT", SV_TYPE_SERVER_NT
, r
);
529 ndr_print_bitmap_flag(ndr
, sizeof(uint32_t), "SV_TYPE_POTENTIAL_BROWSER", SV_TYPE_POTENTIAL_BROWSER
, r
);
530 ndr_print_bitmap_flag(ndr
, sizeof(uint32_t), "SV_TYPE_BACKUP_BROWSER", SV_TYPE_BACKUP_BROWSER
, r
);
531 ndr_print_bitmap_flag(ndr
, sizeof(uint32_t), "SV_TYPE_MASTER_BROWSER", SV_TYPE_MASTER_BROWSER
, r
);
532 ndr_print_bitmap_flag(ndr
, sizeof(uint32_t), "SV_TYPE_DOMAIN_MASTER", SV_TYPE_DOMAIN_MASTER
, r
);
533 ndr_print_bitmap_flag(ndr
, sizeof(uint32_t), "SV_TYPE_SERVER_OSF", SV_TYPE_SERVER_OSF
, r
);
534 ndr_print_bitmap_flag(ndr
, sizeof(uint32_t), "SV_TYPE_SERVER_VMS", SV_TYPE_SERVER_VMS
, r
);
535 ndr_print_bitmap_flag(ndr
, sizeof(uint32_t), "SV_TYPE_WIN95_PLUS", SV_TYPE_WIN95_PLUS
, r
);
536 ndr_print_bitmap_flag(ndr
, sizeof(uint32_t), "SV_TYPE_DFS_SERVER", SV_TYPE_DFS_SERVER
, r
);
537 ndr_print_bitmap_flag(ndr
, sizeof(uint32_t), "SV_TYPE_ALTERNATE_XPORT", SV_TYPE_ALTERNATE_XPORT
, r
);
538 ndr_print_bitmap_flag(ndr
, sizeof(uint32_t), "SV_TYPE_LOCAL_LIST_ONLY", SV_TYPE_LOCAL_LIST_ONLY
, r
);
539 ndr_print_bitmap_flag(ndr
, sizeof(uint32_t), "SV_TYPE_DOMAIN_ENUM", SV_TYPE_DOMAIN_ENUM
, r
);
543 static enum ndr_err_code
ndr_push_SERVICE_CONTROL(struct ndr_push
*ndr
, int ndr_flags
, enum SERVICE_CONTROL r
)
545 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
));
546 return NDR_ERR_SUCCESS
;
549 static enum ndr_err_code
ndr_pull_SERVICE_CONTROL(struct ndr_pull
*ndr
, int ndr_flags
, enum SERVICE_CONTROL
*r
)
552 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &v
));
554 return NDR_ERR_SUCCESS
;
557 _PUBLIC_
void ndr_print_SERVICE_CONTROL(struct ndr_print
*ndr
, const char *name
, enum SERVICE_CONTROL r
)
559 const char *val
= NULL
;
562 case SVCCTL_CONTROL_STOP
: val
= "SVCCTL_CONTROL_STOP"; break;
563 case SVCCTL_CONTROL_PAUSE
: val
= "SVCCTL_CONTROL_PAUSE"; break;
564 case SVCCTL_CONTROL_CONTINUE
: val
= "SVCCTL_CONTROL_CONTINUE"; break;
565 case SVCCTL_CONTROL_INTERROGATE
: val
= "SVCCTL_CONTROL_INTERROGATE"; break;
566 case SVCCTL_CONTROL_SHUTDOWN
: val
= "SVCCTL_CONTROL_SHUTDOWN"; break;
568 ndr_print_enum(ndr
, name
, "ENUM", val
, r
);
571 static enum ndr_err_code
ndr_push_svcctl_ErrorControl(struct ndr_push
*ndr
, int ndr_flags
, enum svcctl_ErrorControl r
)
573 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
));
574 return NDR_ERR_SUCCESS
;
577 static enum ndr_err_code
ndr_pull_svcctl_ErrorControl(struct ndr_pull
*ndr
, int ndr_flags
, enum svcctl_ErrorControl
*r
)
580 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &v
));
582 return NDR_ERR_SUCCESS
;
585 _PUBLIC_
void ndr_print_svcctl_ErrorControl(struct ndr_print
*ndr
, const char *name
, enum svcctl_ErrorControl r
)
587 const char *val
= NULL
;
590 case SVCCTL_SVC_ERROR_IGNORE
: val
= "SVCCTL_SVC_ERROR_IGNORE"; break;
591 case SVCCTL_SVC_ERROR_NORMAL
: val
= "SVCCTL_SVC_ERROR_NORMAL"; break;
592 case SVCCTL_SVC_ERROR_CRITICAL
: val
= "SVCCTL_SVC_ERROR_CRITICAL"; break;
593 case SVCCTL_SVC_ERROR_SEVERE
: val
= "SVCCTL_SVC_ERROR_SEVERE"; break;
595 ndr_print_enum(ndr
, name
, "ENUM", val
, r
);
598 static enum ndr_err_code
ndr_push_svcctl_StartType(struct ndr_push
*ndr
, int ndr_flags
, enum svcctl_StartType r
)
600 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
));
601 return NDR_ERR_SUCCESS
;
604 static enum ndr_err_code
ndr_pull_svcctl_StartType(struct ndr_pull
*ndr
, int ndr_flags
, enum svcctl_StartType
*r
)
607 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &v
));
609 return NDR_ERR_SUCCESS
;
612 _PUBLIC_
void ndr_print_svcctl_StartType(struct ndr_print
*ndr
, const char *name
, enum svcctl_StartType r
)
614 const char *val
= NULL
;
617 case SVCCTL_BOOT_START
: val
= "SVCCTL_BOOT_START"; break;
618 case SVCCTL_SYSTEM_START
: val
= "SVCCTL_SYSTEM_START"; break;
619 case SVCCTL_AUTO_START
: val
= "SVCCTL_AUTO_START"; break;
620 case SVCCTL_DEMAND_START
: val
= "SVCCTL_DEMAND_START"; break;
621 case SVCCTL_DISABLED
: val
= "SVCCTL_DISABLED"; break;
623 ndr_print_enum(ndr
, name
, "ENUM", val
, r
);
626 static enum ndr_err_code
ndr_push_svcctl_ServiceState(struct ndr_push
*ndr
, int ndr_flags
, enum svcctl_ServiceState r
)
628 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
));
629 return NDR_ERR_SUCCESS
;
632 static enum ndr_err_code
ndr_pull_svcctl_ServiceState(struct ndr_pull
*ndr
, int ndr_flags
, enum svcctl_ServiceState
*r
)
635 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &v
));
637 return NDR_ERR_SUCCESS
;
640 _PUBLIC_
void ndr_print_svcctl_ServiceState(struct ndr_print
*ndr
, const char *name
, enum svcctl_ServiceState r
)
642 const char *val
= NULL
;
645 case SERVICE_STATE_ACTIVE
: val
= "SERVICE_STATE_ACTIVE"; break;
646 case SERVICE_STATE_INACTIVE
: val
= "SERVICE_STATE_INACTIVE"; break;
647 case SERVICE_STATE_ALL
: val
= "SERVICE_STATE_ALL"; break;
649 ndr_print_enum(ndr
, name
, "ENUM", val
, r
);
652 static enum ndr_err_code
ndr_push_svcctl_MgrAccessMask(struct ndr_push
*ndr
, int ndr_flags
, uint32_t r
)
654 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
));
655 return NDR_ERR_SUCCESS
;
658 static enum ndr_err_code
ndr_pull_svcctl_MgrAccessMask(struct ndr_pull
*ndr
, int ndr_flags
, uint32_t *r
)
661 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &v
));
663 return NDR_ERR_SUCCESS
;
666 _PUBLIC_
void ndr_print_svcctl_MgrAccessMask(struct ndr_print
*ndr
, const char *name
, uint32_t r
)
668 ndr_print_uint32(ndr
, name
, r
);
670 ndr_print_bitmap_flag(ndr
, sizeof(uint32_t), "SC_RIGHT_MGR_CONNECT", SC_RIGHT_MGR_CONNECT
, r
);
671 ndr_print_bitmap_flag(ndr
, sizeof(uint32_t), "SC_RIGHT_MGR_CREATE_SERVICE", SC_RIGHT_MGR_CREATE_SERVICE
, r
);
672 ndr_print_bitmap_flag(ndr
, sizeof(uint32_t), "SC_RIGHT_MGR_ENUMERATE_SERVICE", SC_RIGHT_MGR_ENUMERATE_SERVICE
, r
);
673 ndr_print_bitmap_flag(ndr
, sizeof(uint32_t), "SC_RIGHT_MGR_LOCK", SC_RIGHT_MGR_LOCK
, r
);
674 ndr_print_bitmap_flag(ndr
, sizeof(uint32_t), "SC_RIGHT_MGR_QUERY_LOCK_STATUS", SC_RIGHT_MGR_QUERY_LOCK_STATUS
, r
);
675 ndr_print_bitmap_flag(ndr
, sizeof(uint32_t), "SC_RIGHT_MGR_MODIFY_BOOT_CONFIG", SC_RIGHT_MGR_MODIFY_BOOT_CONFIG
, r
);
679 static enum ndr_err_code
ndr_push_svcctl_ServiceAccessMask(struct ndr_push
*ndr
, int ndr_flags
, uint32_t r
)
681 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
));
682 return NDR_ERR_SUCCESS
;
685 static enum ndr_err_code
ndr_pull_svcctl_ServiceAccessMask(struct ndr_pull
*ndr
, int ndr_flags
, uint32_t *r
)
688 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &v
));
690 return NDR_ERR_SUCCESS
;
693 _PUBLIC_
void ndr_print_svcctl_ServiceAccessMask(struct ndr_print
*ndr
, const char *name
, uint32_t r
)
695 ndr_print_uint32(ndr
, name
, r
);
697 ndr_print_bitmap_flag(ndr
, sizeof(uint32_t), "SC_RIGHT_SVC_QUERY_CONFIG", SC_RIGHT_SVC_QUERY_CONFIG
, r
);
698 ndr_print_bitmap_flag(ndr
, sizeof(uint32_t), "SC_RIGHT_SVC_CHANGE_CONFIG", SC_RIGHT_SVC_CHANGE_CONFIG
, r
);
699 ndr_print_bitmap_flag(ndr
, sizeof(uint32_t), "SC_RIGHT_SVC_QUERY_STATUS", SC_RIGHT_SVC_QUERY_STATUS
, r
);
700 ndr_print_bitmap_flag(ndr
, sizeof(uint32_t), "SC_RIGHT_SVC_ENUMERATE_DEPENDENTS", SC_RIGHT_SVC_ENUMERATE_DEPENDENTS
, r
);
701 ndr_print_bitmap_flag(ndr
, sizeof(uint32_t), "SC_RIGHT_SVC_START", SC_RIGHT_SVC_START
, r
);
702 ndr_print_bitmap_flag(ndr
, sizeof(uint32_t), "SC_RIGHT_SVC_STOP", SC_RIGHT_SVC_STOP
, r
);
703 ndr_print_bitmap_flag(ndr
, sizeof(uint32_t), "SC_RIGHT_SVC_PAUSE_CONTINUE", SC_RIGHT_SVC_PAUSE_CONTINUE
, r
);
704 ndr_print_bitmap_flag(ndr
, sizeof(uint32_t), "SC_RIGHT_SVC_INTERROGATE", SC_RIGHT_SVC_INTERROGATE
, r
);
705 ndr_print_bitmap_flag(ndr
, sizeof(uint32_t), "SC_RIGHT_SVC_USER_DEFINED_CONTROL", SC_RIGHT_SVC_USER_DEFINED_CONTROL
, r
);
709 _PUBLIC_
enum ndr_err_code
ndr_push_QUERY_SERVICE_CONFIG(struct ndr_push
*ndr
, int ndr_flags
, const struct QUERY_SERVICE_CONFIG
*r
)
711 if (ndr_flags
& NDR_SCALARS
) {
712 NDR_CHECK(ndr_push_align(ndr
, 4));
713 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->service_type
));
714 NDR_CHECK(ndr_push_svcctl_StartType(ndr
, NDR_SCALARS
, r
->start_type
));
715 NDR_CHECK(ndr_push_svcctl_ErrorControl(ndr
, NDR_SCALARS
, r
->error_control
));
716 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->executablepath
));
717 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->loadordergroup
));
718 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->tag_id
));
719 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->dependencies
));
720 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->startname
));
721 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->displayname
));
723 if (ndr_flags
& NDR_BUFFERS
) {
724 if (r
->executablepath
) {
725 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->executablepath
, CH_UTF16
)));
726 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, 0));
727 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->executablepath
, CH_UTF16
)));
728 NDR_CHECK(ndr_push_charset(ndr
, NDR_SCALARS
, r
->executablepath
, ndr_charset_length(r
->executablepath
, CH_UTF16
), sizeof(uint16_t), CH_UTF16
));
730 if (r
->loadordergroup
) {
731 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->loadordergroup
, CH_UTF16
)));
732 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, 0));
733 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->loadordergroup
, CH_UTF16
)));
734 NDR_CHECK(ndr_push_charset(ndr
, NDR_SCALARS
, r
->loadordergroup
, ndr_charset_length(r
->loadordergroup
, CH_UTF16
), sizeof(uint16_t), CH_UTF16
));
736 if (r
->dependencies
) {
737 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->dependencies
, CH_UTF16
)));
738 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, 0));
739 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->dependencies
, CH_UTF16
)));
740 NDR_CHECK(ndr_push_charset(ndr
, NDR_SCALARS
, r
->dependencies
, ndr_charset_length(r
->dependencies
, CH_UTF16
), sizeof(uint16_t), CH_UTF16
));
743 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->startname
, CH_UTF16
)));
744 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, 0));
745 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->startname
, CH_UTF16
)));
746 NDR_CHECK(ndr_push_charset(ndr
, NDR_SCALARS
, r
->startname
, ndr_charset_length(r
->startname
, CH_UTF16
), sizeof(uint16_t), CH_UTF16
));
748 if (r
->displayname
) {
749 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->displayname
, CH_UTF16
)));
750 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, 0));
751 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->displayname
, CH_UTF16
)));
752 NDR_CHECK(ndr_push_charset(ndr
, NDR_SCALARS
, r
->displayname
, ndr_charset_length(r
->displayname
, CH_UTF16
), sizeof(uint16_t), CH_UTF16
));
755 return NDR_ERR_SUCCESS
;
758 _PUBLIC_
enum ndr_err_code
ndr_pull_QUERY_SERVICE_CONFIG(struct ndr_pull
*ndr
, int ndr_flags
, struct QUERY_SERVICE_CONFIG
*r
)
760 uint32_t _ptr_executablepath
;
761 uint32_t size_executablepath_1
= 0;
762 uint32_t length_executablepath_1
= 0;
763 TALLOC_CTX
*_mem_save_executablepath_0
;
764 uint32_t _ptr_loadordergroup
;
765 uint32_t size_loadordergroup_1
= 0;
766 uint32_t length_loadordergroup_1
= 0;
767 TALLOC_CTX
*_mem_save_loadordergroup_0
;
768 uint32_t _ptr_dependencies
;
769 uint32_t size_dependencies_1
= 0;
770 uint32_t length_dependencies_1
= 0;
771 TALLOC_CTX
*_mem_save_dependencies_0
;
772 uint32_t _ptr_startname
;
773 uint32_t size_startname_1
= 0;
774 uint32_t length_startname_1
= 0;
775 TALLOC_CTX
*_mem_save_startname_0
;
776 uint32_t _ptr_displayname
;
777 uint32_t size_displayname_1
= 0;
778 uint32_t length_displayname_1
= 0;
779 TALLOC_CTX
*_mem_save_displayname_0
;
780 if (ndr_flags
& NDR_SCALARS
) {
781 NDR_CHECK(ndr_pull_align(ndr
, 4));
782 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->service_type
));
783 NDR_CHECK(ndr_pull_svcctl_StartType(ndr
, NDR_SCALARS
, &r
->start_type
));
784 NDR_CHECK(ndr_pull_svcctl_ErrorControl(ndr
, NDR_SCALARS
, &r
->error_control
));
785 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_executablepath
));
786 if (_ptr_executablepath
) {
787 NDR_PULL_ALLOC(ndr
, r
->executablepath
);
789 r
->executablepath
= NULL
;
791 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_loadordergroup
));
792 if (_ptr_loadordergroup
) {
793 NDR_PULL_ALLOC(ndr
, r
->loadordergroup
);
795 r
->loadordergroup
= NULL
;
797 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->tag_id
));
798 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_dependencies
));
799 if (_ptr_dependencies
) {
800 NDR_PULL_ALLOC(ndr
, r
->dependencies
);
802 r
->dependencies
= NULL
;
804 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_startname
));
805 if (_ptr_startname
) {
806 NDR_PULL_ALLOC(ndr
, r
->startname
);
810 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_displayname
));
811 if (_ptr_displayname
) {
812 NDR_PULL_ALLOC(ndr
, r
->displayname
);
814 r
->displayname
= NULL
;
817 if (ndr_flags
& NDR_BUFFERS
) {
818 if (r
->executablepath
) {
819 _mem_save_executablepath_0
= NDR_PULL_GET_MEM_CTX(ndr
);
820 NDR_PULL_SET_MEM_CTX(ndr
, r
->executablepath
, 0);
821 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->executablepath
));
822 NDR_CHECK(ndr_pull_array_length(ndr
, &r
->executablepath
));
823 size_executablepath_1
= ndr_get_array_size(ndr
, &r
->executablepath
);
824 if (size_executablepath_1
> 8192) {
825 return ndr_pull_error(ndr
, NDR_ERR_RANGE
, "value out of range");
827 length_executablepath_1
= ndr_get_array_length(ndr
, &r
->executablepath
);
828 if (length_executablepath_1
> 8192) {
829 return ndr_pull_error(ndr
, NDR_ERR_RANGE
, "value out of range");
831 if (length_executablepath_1
> size_executablepath_1
) {
832 return ndr_pull_error(ndr
, NDR_ERR_ARRAY_SIZE
, "Bad array size %u should exceed array length %u", size_executablepath_1
, length_executablepath_1
);
834 NDR_CHECK(ndr_check_string_terminator(ndr
, length_executablepath_1
, sizeof(uint16_t)));
835 NDR_CHECK(ndr_pull_charset(ndr
, NDR_SCALARS
, &r
->executablepath
, length_executablepath_1
, sizeof(uint16_t), CH_UTF16
));
836 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_executablepath_0
, 0);
838 if (r
->loadordergroup
) {
839 _mem_save_loadordergroup_0
= NDR_PULL_GET_MEM_CTX(ndr
);
840 NDR_PULL_SET_MEM_CTX(ndr
, r
->loadordergroup
, 0);
841 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->loadordergroup
));
842 NDR_CHECK(ndr_pull_array_length(ndr
, &r
->loadordergroup
));
843 size_loadordergroup_1
= ndr_get_array_size(ndr
, &r
->loadordergroup
);
844 if (size_loadordergroup_1
> 8192) {
845 return ndr_pull_error(ndr
, NDR_ERR_RANGE
, "value out of range");
847 length_loadordergroup_1
= ndr_get_array_length(ndr
, &r
->loadordergroup
);
848 if (length_loadordergroup_1
> 8192) {
849 return ndr_pull_error(ndr
, NDR_ERR_RANGE
, "value out of range");
851 if (length_loadordergroup_1
> size_loadordergroup_1
) {
852 return ndr_pull_error(ndr
, NDR_ERR_ARRAY_SIZE
, "Bad array size %u should exceed array length %u", size_loadordergroup_1
, length_loadordergroup_1
);
854 NDR_CHECK(ndr_check_string_terminator(ndr
, length_loadordergroup_1
, sizeof(uint16_t)));
855 NDR_CHECK(ndr_pull_charset(ndr
, NDR_SCALARS
, &r
->loadordergroup
, length_loadordergroup_1
, sizeof(uint16_t), CH_UTF16
));
856 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_loadordergroup_0
, 0);
858 if (r
->dependencies
) {
859 _mem_save_dependencies_0
= NDR_PULL_GET_MEM_CTX(ndr
);
860 NDR_PULL_SET_MEM_CTX(ndr
, r
->dependencies
, 0);
861 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->dependencies
));
862 NDR_CHECK(ndr_pull_array_length(ndr
, &r
->dependencies
));
863 size_dependencies_1
= ndr_get_array_size(ndr
, &r
->dependencies
);
864 if (size_dependencies_1
> 8192) {
865 return ndr_pull_error(ndr
, NDR_ERR_RANGE
, "value out of range");
867 length_dependencies_1
= ndr_get_array_length(ndr
, &r
->dependencies
);
868 if (length_dependencies_1
> 8192) {
869 return ndr_pull_error(ndr
, NDR_ERR_RANGE
, "value out of range");
871 if (length_dependencies_1
> size_dependencies_1
) {
872 return ndr_pull_error(ndr
, NDR_ERR_ARRAY_SIZE
, "Bad array size %u should exceed array length %u", size_dependencies_1
, length_dependencies_1
);
874 NDR_CHECK(ndr_check_string_terminator(ndr
, length_dependencies_1
, sizeof(uint16_t)));
875 NDR_CHECK(ndr_pull_charset(ndr
, NDR_SCALARS
, &r
->dependencies
, length_dependencies_1
, sizeof(uint16_t), CH_UTF16
));
876 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_dependencies_0
, 0);
879 _mem_save_startname_0
= NDR_PULL_GET_MEM_CTX(ndr
);
880 NDR_PULL_SET_MEM_CTX(ndr
, r
->startname
, 0);
881 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->startname
));
882 NDR_CHECK(ndr_pull_array_length(ndr
, &r
->startname
));
883 size_startname_1
= ndr_get_array_size(ndr
, &r
->startname
);
884 if (size_startname_1
> 8192) {
885 return ndr_pull_error(ndr
, NDR_ERR_RANGE
, "value out of range");
887 length_startname_1
= ndr_get_array_length(ndr
, &r
->startname
);
888 if (length_startname_1
> 8192) {
889 return ndr_pull_error(ndr
, NDR_ERR_RANGE
, "value out of range");
891 if (length_startname_1
> size_startname_1
) {
892 return ndr_pull_error(ndr
, NDR_ERR_ARRAY_SIZE
, "Bad array size %u should exceed array length %u", size_startname_1
, length_startname_1
);
894 NDR_CHECK(ndr_check_string_terminator(ndr
, length_startname_1
, sizeof(uint16_t)));
895 NDR_CHECK(ndr_pull_charset(ndr
, NDR_SCALARS
, &r
->startname
, length_startname_1
, sizeof(uint16_t), CH_UTF16
));
896 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_startname_0
, 0);
898 if (r
->displayname
) {
899 _mem_save_displayname_0
= NDR_PULL_GET_MEM_CTX(ndr
);
900 NDR_PULL_SET_MEM_CTX(ndr
, r
->displayname
, 0);
901 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->displayname
));
902 NDR_CHECK(ndr_pull_array_length(ndr
, &r
->displayname
));
903 size_displayname_1
= ndr_get_array_size(ndr
, &r
->displayname
);
904 if (size_displayname_1
> 8192) {
905 return ndr_pull_error(ndr
, NDR_ERR_RANGE
, "value out of range");
907 length_displayname_1
= ndr_get_array_length(ndr
, &r
->displayname
);
908 if (length_displayname_1
> 8192) {
909 return ndr_pull_error(ndr
, NDR_ERR_RANGE
, "value out of range");
911 if (length_displayname_1
> size_displayname_1
) {
912 return ndr_pull_error(ndr
, NDR_ERR_ARRAY_SIZE
, "Bad array size %u should exceed array length %u", size_displayname_1
, length_displayname_1
);
914 NDR_CHECK(ndr_check_string_terminator(ndr
, length_displayname_1
, sizeof(uint16_t)));
915 NDR_CHECK(ndr_pull_charset(ndr
, NDR_SCALARS
, &r
->displayname
, length_displayname_1
, sizeof(uint16_t), CH_UTF16
));
916 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_displayname_0
, 0);
919 return NDR_ERR_SUCCESS
;
922 _PUBLIC_
void ndr_print_QUERY_SERVICE_CONFIG(struct ndr_print
*ndr
, const char *name
, const struct QUERY_SERVICE_CONFIG
*r
)
924 ndr_print_struct(ndr
, name
, "QUERY_SERVICE_CONFIG");
926 ndr_print_uint32(ndr
, "service_type", r
->service_type
);
927 ndr_print_svcctl_StartType(ndr
, "start_type", r
->start_type
);
928 ndr_print_svcctl_ErrorControl(ndr
, "error_control", r
->error_control
);
929 ndr_print_ptr(ndr
, "executablepath", r
->executablepath
);
931 if (r
->executablepath
) {
932 ndr_print_string(ndr
, "executablepath", r
->executablepath
);
935 ndr_print_ptr(ndr
, "loadordergroup", r
->loadordergroup
);
937 if (r
->loadordergroup
) {
938 ndr_print_string(ndr
, "loadordergroup", r
->loadordergroup
);
941 ndr_print_uint32(ndr
, "tag_id", r
->tag_id
);
942 ndr_print_ptr(ndr
, "dependencies", r
->dependencies
);
944 if (r
->dependencies
) {
945 ndr_print_string(ndr
, "dependencies", r
->dependencies
);
948 ndr_print_ptr(ndr
, "startname", r
->startname
);
951 ndr_print_string(ndr
, "startname", r
->startname
);
954 ndr_print_ptr(ndr
, "displayname", r
->displayname
);
956 if (r
->displayname
) {
957 ndr_print_string(ndr
, "displayname", r
->displayname
);
963 _PUBLIC_
size_t ndr_size_QUERY_SERVICE_CONFIG(const struct QUERY_SERVICE_CONFIG
*r
, struct smb_iconv_convenience
*ic
, int flags
)
965 return ndr_size_struct(r
, flags
, (ndr_push_flags_fn_t
)ndr_push_QUERY_SERVICE_CONFIG
, ic
);
968 static enum ndr_err_code
ndr_push_svcctl_ArgumentString(struct ndr_push
*ndr
, int ndr_flags
, const struct svcctl_ArgumentString
*r
)
970 if (ndr_flags
& NDR_SCALARS
) {
971 NDR_CHECK(ndr_push_align(ndr
, 4));
972 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->string
));
974 if (ndr_flags
& NDR_BUFFERS
) {
976 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->string
, CH_UTF16
)));
977 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, 0));
978 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->string
, CH_UTF16
)));
979 NDR_CHECK(ndr_push_charset(ndr
, NDR_SCALARS
, r
->string
, ndr_charset_length(r
->string
, CH_UTF16
), sizeof(uint16_t), CH_UTF16
));
982 return NDR_ERR_SUCCESS
;
985 static enum ndr_err_code
ndr_pull_svcctl_ArgumentString(struct ndr_pull
*ndr
, int ndr_flags
, struct svcctl_ArgumentString
*r
)
987 uint32_t _ptr_string
;
988 uint32_t size_string_1
= 0;
989 uint32_t length_string_1
= 0;
990 TALLOC_CTX
*_mem_save_string_0
;
991 if (ndr_flags
& NDR_SCALARS
) {
992 NDR_CHECK(ndr_pull_align(ndr
, 4));
993 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_string
));
995 NDR_PULL_ALLOC(ndr
, r
->string
);
1000 if (ndr_flags
& NDR_BUFFERS
) {
1002 _mem_save_string_0
= NDR_PULL_GET_MEM_CTX(ndr
);
1003 NDR_PULL_SET_MEM_CTX(ndr
, r
->string
, 0);
1004 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->string
));
1005 NDR_CHECK(ndr_pull_array_length(ndr
, &r
->string
));
1006 size_string_1
= ndr_get_array_size(ndr
, &r
->string
);
1007 if (size_string_1
> SC_MAX_ARGUMENT_LENGTH
) {
1008 return ndr_pull_error(ndr
, NDR_ERR_RANGE
, "value out of range");
1010 length_string_1
= ndr_get_array_length(ndr
, &r
->string
);
1011 if (length_string_1
> SC_MAX_ARGUMENT_LENGTH
) {
1012 return ndr_pull_error(ndr
, NDR_ERR_RANGE
, "value out of range");
1014 if (length_string_1
> size_string_1
) {
1015 return ndr_pull_error(ndr
, NDR_ERR_ARRAY_SIZE
, "Bad array size %u should exceed array length %u", size_string_1
, length_string_1
);
1017 NDR_CHECK(ndr_check_string_terminator(ndr
, length_string_1
, sizeof(uint16_t)));
1018 NDR_CHECK(ndr_pull_charset(ndr
, NDR_SCALARS
, &r
->string
, length_string_1
, sizeof(uint16_t), CH_UTF16
));
1019 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_string_0
, 0);
1022 return NDR_ERR_SUCCESS
;
1025 _PUBLIC_
void ndr_print_svcctl_ArgumentString(struct ndr_print
*ndr
, const char *name
, const struct svcctl_ArgumentString
*r
)
1027 ndr_print_struct(ndr
, name
, "svcctl_ArgumentString");
1029 ndr_print_ptr(ndr
, "string", r
->string
);
1032 ndr_print_string(ndr
, "string", r
->string
);
1038 static enum ndr_err_code
ndr_push_svcctl_ConfigLevel(struct ndr_push
*ndr
, int ndr_flags
, enum svcctl_ConfigLevel r
)
1040 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
));
1041 return NDR_ERR_SUCCESS
;
1044 static enum ndr_err_code
ndr_pull_svcctl_ConfigLevel(struct ndr_pull
*ndr
, int ndr_flags
, enum svcctl_ConfigLevel
*r
)
1047 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &v
));
1049 return NDR_ERR_SUCCESS
;
1052 _PUBLIC_
void ndr_print_svcctl_ConfigLevel(struct ndr_print
*ndr
, const char *name
, enum svcctl_ConfigLevel r
)
1054 const char *val
= NULL
;
1057 case SERVICE_CONFIG_DESCRIPTION
: val
= "SERVICE_CONFIG_DESCRIPTION"; break;
1058 case SERVICE_CONFIG_FAILURE_ACTIONS
: val
= "SERVICE_CONFIG_FAILURE_ACTIONS"; break;
1060 ndr_print_enum(ndr
, name
, "ENUM", val
, r
);
1063 _PUBLIC_
enum ndr_err_code
ndr_push_SERVICE_DESCRIPTION(struct ndr_push
*ndr
, int ndr_flags
, const struct SERVICE_DESCRIPTION
*r
)
1065 if (ndr_flags
& NDR_SCALARS
) {
1066 NDR_CHECK(ndr_push_align(ndr
, 4));
1068 uint32_t _flags_save_string
= ndr
->flags
;
1069 ndr_set_flags(&ndr
->flags
, LIBNDR_FLAG_STR_NULLTERM
);
1070 NDR_CHECK(ndr_push_relative_ptr1(ndr
, r
->description
));
1071 ndr
->flags
= _flags_save_string
;
1074 if (ndr_flags
& NDR_BUFFERS
) {
1076 uint32_t _flags_save_string
= ndr
->flags
;
1077 ndr_set_flags(&ndr
->flags
, LIBNDR_FLAG_STR_NULLTERM
);
1078 if (r
->description
) {
1079 NDR_CHECK(ndr_push_relative_ptr2_start(ndr
, r
->description
));
1080 NDR_CHECK(ndr_push_string(ndr
, NDR_SCALARS
, r
->description
));
1081 NDR_CHECK(ndr_push_relative_ptr2_end(ndr
, r
->description
));
1083 ndr
->flags
= _flags_save_string
;
1086 return NDR_ERR_SUCCESS
;
1089 _PUBLIC_
enum ndr_err_code
ndr_pull_SERVICE_DESCRIPTION(struct ndr_pull
*ndr
, int ndr_flags
, struct SERVICE_DESCRIPTION
*r
)
1091 uint32_t _ptr_description
;
1092 TALLOC_CTX
*_mem_save_description_0
;
1093 if (ndr_flags
& NDR_SCALARS
) {
1094 NDR_CHECK(ndr_pull_align(ndr
, 4));
1096 uint32_t _flags_save_string
= ndr
->flags
;
1097 ndr_set_flags(&ndr
->flags
, LIBNDR_FLAG_STR_NULLTERM
);
1098 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_description
));
1099 if (_ptr_description
) {
1100 NDR_PULL_ALLOC(ndr
, r
->description
);
1101 NDR_CHECK(ndr_pull_relative_ptr1(ndr
, r
->description
, _ptr_description
));
1103 r
->description
= NULL
;
1105 ndr
->flags
= _flags_save_string
;
1108 if (ndr_flags
& NDR_BUFFERS
) {
1110 uint32_t _flags_save_string
= ndr
->flags
;
1111 ndr_set_flags(&ndr
->flags
, LIBNDR_FLAG_STR_NULLTERM
);
1112 if (r
->description
) {
1113 uint32_t _relative_save_offset
;
1114 _relative_save_offset
= ndr
->offset
;
1115 NDR_CHECK(ndr_pull_relative_ptr2(ndr
, r
->description
));
1116 _mem_save_description_0
= NDR_PULL_GET_MEM_CTX(ndr
);
1117 NDR_PULL_SET_MEM_CTX(ndr
, r
->description
, 0);
1118 NDR_CHECK(ndr_pull_string(ndr
, NDR_SCALARS
, &r
->description
));
1119 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_description_0
, 0);
1120 ndr
->offset
= _relative_save_offset
;
1122 ndr
->flags
= _flags_save_string
;
1125 return NDR_ERR_SUCCESS
;
1128 _PUBLIC_
void ndr_print_SERVICE_DESCRIPTION(struct ndr_print
*ndr
, const char *name
, const struct SERVICE_DESCRIPTION
*r
)
1130 ndr_print_struct(ndr
, name
, "SERVICE_DESCRIPTION");
1132 ndr_print_ptr(ndr
, "description", r
->description
);
1134 if (r
->description
) {
1135 ndr_print_string(ndr
, "description", r
->description
);
1141 _PUBLIC_
size_t ndr_size_SERVICE_DESCRIPTION(const struct SERVICE_DESCRIPTION
*r
, struct smb_iconv_convenience
*ic
, int flags
)
1143 return ndr_size_struct(r
, flags
, (ndr_push_flags_fn_t
)ndr_push_SERVICE_DESCRIPTION
, ic
);
1146 static enum ndr_err_code
ndr_push_SC_ACTION_TYPE(struct ndr_push
*ndr
, int ndr_flags
, enum SC_ACTION_TYPE r
)
1148 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
));
1149 return NDR_ERR_SUCCESS
;
1152 static enum ndr_err_code
ndr_pull_SC_ACTION_TYPE(struct ndr_pull
*ndr
, int ndr_flags
, enum SC_ACTION_TYPE
*r
)
1155 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &v
));
1157 return NDR_ERR_SUCCESS
;
1160 _PUBLIC_
void ndr_print_SC_ACTION_TYPE(struct ndr_print
*ndr
, const char *name
, enum SC_ACTION_TYPE r
)
1162 const char *val
= NULL
;
1165 case SC_ACTION_NONE
: val
= "SC_ACTION_NONE"; break;
1166 case SC_ACTION_RESTART
: val
= "SC_ACTION_RESTART"; break;
1167 case SC_ACTION_REBOOT
: val
= "SC_ACTION_REBOOT"; break;
1168 case SC_ACTION_RUN_COMMAND
: val
= "SC_ACTION_RUN_COMMAND"; break;
1170 ndr_print_enum(ndr
, name
, "ENUM", val
, r
);
1173 static enum ndr_err_code
ndr_push_SC_ACTION(struct ndr_push
*ndr
, int ndr_flags
, const struct SC_ACTION
*r
)
1175 if (ndr_flags
& NDR_SCALARS
) {
1176 NDR_CHECK(ndr_push_align(ndr
, 4));
1177 NDR_CHECK(ndr_push_SC_ACTION_TYPE(ndr
, NDR_SCALARS
, r
->type
));
1178 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->delay
));
1180 if (ndr_flags
& NDR_BUFFERS
) {
1182 return NDR_ERR_SUCCESS
;
1185 static enum ndr_err_code
ndr_pull_SC_ACTION(struct ndr_pull
*ndr
, int ndr_flags
, struct SC_ACTION
*r
)
1187 if (ndr_flags
& NDR_SCALARS
) {
1188 NDR_CHECK(ndr_pull_align(ndr
, 4));
1189 NDR_CHECK(ndr_pull_SC_ACTION_TYPE(ndr
, NDR_SCALARS
, &r
->type
));
1190 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->delay
));
1192 if (ndr_flags
& NDR_BUFFERS
) {
1194 return NDR_ERR_SUCCESS
;
1197 _PUBLIC_
void ndr_print_SC_ACTION(struct ndr_print
*ndr
, const char *name
, const struct SC_ACTION
*r
)
1199 ndr_print_struct(ndr
, name
, "SC_ACTION");
1201 ndr_print_SC_ACTION_TYPE(ndr
, "type", r
->type
);
1202 ndr_print_uint32(ndr
, "delay", r
->delay
);
1206 _PUBLIC_
enum ndr_err_code
ndr_push_SERVICE_FAILURE_ACTIONS(struct ndr_push
*ndr
, int ndr_flags
, const struct SERVICE_FAILURE_ACTIONS
*r
)
1208 uint32_t cntr_actions_1
;
1209 if (ndr_flags
& NDR_SCALARS
) {
1210 NDR_CHECK(ndr_push_align(ndr
, 4));
1211 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->reset_period
));
1213 uint32_t _flags_save_string
= ndr
->flags
;
1214 ndr_set_flags(&ndr
->flags
, LIBNDR_FLAG_STR_NULLTERM
);
1215 NDR_CHECK(ndr_push_relative_ptr1(ndr
, r
->rebootmsg
));
1216 ndr
->flags
= _flags_save_string
;
1219 uint32_t _flags_save_string
= ndr
->flags
;
1220 ndr_set_flags(&ndr
->flags
, LIBNDR_FLAG_STR_NULLTERM
);
1221 NDR_CHECK(ndr_push_relative_ptr1(ndr
, r
->command
));
1222 ndr
->flags
= _flags_save_string
;
1224 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->num_actions
));
1225 NDR_CHECK(ndr_push_relative_ptr1(ndr
, r
->actions
));
1227 if (ndr_flags
& NDR_BUFFERS
) {
1229 uint32_t _flags_save_string
= ndr
->flags
;
1230 ndr_set_flags(&ndr
->flags
, LIBNDR_FLAG_STR_NULLTERM
);
1232 NDR_CHECK(ndr_push_relative_ptr2_start(ndr
, r
->rebootmsg
));
1233 NDR_CHECK(ndr_push_string(ndr
, NDR_SCALARS
, r
->rebootmsg
));
1234 NDR_CHECK(ndr_push_relative_ptr2_end(ndr
, r
->rebootmsg
));
1236 ndr
->flags
= _flags_save_string
;
1239 uint32_t _flags_save_string
= ndr
->flags
;
1240 ndr_set_flags(&ndr
->flags
, LIBNDR_FLAG_STR_NULLTERM
);
1242 NDR_CHECK(ndr_push_relative_ptr2_start(ndr
, r
->command
));
1243 NDR_CHECK(ndr_push_string(ndr
, NDR_SCALARS
, r
->command
));
1244 NDR_CHECK(ndr_push_relative_ptr2_end(ndr
, r
->command
));
1246 ndr
->flags
= _flags_save_string
;
1249 NDR_CHECK(ndr_push_relative_ptr2_start(ndr
, r
->actions
));
1250 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->num_actions
));
1251 for (cntr_actions_1
= 0; cntr_actions_1
< r
->num_actions
; cntr_actions_1
++) {
1252 NDR_CHECK(ndr_push_SC_ACTION(ndr
, NDR_SCALARS
, &r
->actions
[cntr_actions_1
]));
1254 NDR_CHECK(ndr_push_relative_ptr2_end(ndr
, r
->actions
));
1257 return NDR_ERR_SUCCESS
;
1260 _PUBLIC_
enum ndr_err_code
ndr_pull_SERVICE_FAILURE_ACTIONS(struct ndr_pull
*ndr
, int ndr_flags
, struct SERVICE_FAILURE_ACTIONS
*r
)
1262 uint32_t _ptr_rebootmsg
;
1263 TALLOC_CTX
*_mem_save_rebootmsg_0
;
1264 uint32_t _ptr_command
;
1265 TALLOC_CTX
*_mem_save_command_0
;
1266 uint32_t _ptr_actions
;
1267 uint32_t size_actions_1
= 0;
1268 uint32_t cntr_actions_1
;
1269 TALLOC_CTX
*_mem_save_actions_0
;
1270 TALLOC_CTX
*_mem_save_actions_1
;
1271 if (ndr_flags
& NDR_SCALARS
) {
1272 NDR_CHECK(ndr_pull_align(ndr
, 4));
1273 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->reset_period
));
1275 uint32_t _flags_save_string
= ndr
->flags
;
1276 ndr_set_flags(&ndr
->flags
, LIBNDR_FLAG_STR_NULLTERM
);
1277 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_rebootmsg
));
1278 if (_ptr_rebootmsg
) {
1279 NDR_PULL_ALLOC(ndr
, r
->rebootmsg
);
1280 NDR_CHECK(ndr_pull_relative_ptr1(ndr
, r
->rebootmsg
, _ptr_rebootmsg
));
1282 r
->rebootmsg
= NULL
;
1284 ndr
->flags
= _flags_save_string
;
1287 uint32_t _flags_save_string
= ndr
->flags
;
1288 ndr_set_flags(&ndr
->flags
, LIBNDR_FLAG_STR_NULLTERM
);
1289 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_command
));
1291 NDR_PULL_ALLOC(ndr
, r
->command
);
1292 NDR_CHECK(ndr_pull_relative_ptr1(ndr
, r
->command
, _ptr_command
));
1296 ndr
->flags
= _flags_save_string
;
1298 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->num_actions
));
1299 if (r
->num_actions
> 1024) {
1300 return ndr_pull_error(ndr
, NDR_ERR_RANGE
, "value out of range");
1302 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_actions
));
1304 NDR_PULL_ALLOC(ndr
, r
->actions
);
1305 NDR_CHECK(ndr_pull_relative_ptr1(ndr
, r
->actions
, _ptr_actions
));
1310 if (ndr_flags
& NDR_BUFFERS
) {
1312 uint32_t _flags_save_string
= ndr
->flags
;
1313 ndr_set_flags(&ndr
->flags
, LIBNDR_FLAG_STR_NULLTERM
);
1315 uint32_t _relative_save_offset
;
1316 _relative_save_offset
= ndr
->offset
;
1317 NDR_CHECK(ndr_pull_relative_ptr2(ndr
, r
->rebootmsg
));
1318 _mem_save_rebootmsg_0
= NDR_PULL_GET_MEM_CTX(ndr
);
1319 NDR_PULL_SET_MEM_CTX(ndr
, r
->rebootmsg
, 0);
1320 NDR_CHECK(ndr_pull_string(ndr
, NDR_SCALARS
, &r
->rebootmsg
));
1321 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_rebootmsg_0
, 0);
1322 ndr
->offset
= _relative_save_offset
;
1324 ndr
->flags
= _flags_save_string
;
1327 uint32_t _flags_save_string
= ndr
->flags
;
1328 ndr_set_flags(&ndr
->flags
, LIBNDR_FLAG_STR_NULLTERM
);
1330 uint32_t _relative_save_offset
;
1331 _relative_save_offset
= ndr
->offset
;
1332 NDR_CHECK(ndr_pull_relative_ptr2(ndr
, r
->command
));
1333 _mem_save_command_0
= NDR_PULL_GET_MEM_CTX(ndr
);
1334 NDR_PULL_SET_MEM_CTX(ndr
, r
->command
, 0);
1335 NDR_CHECK(ndr_pull_string(ndr
, NDR_SCALARS
, &r
->command
));
1336 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_command_0
, 0);
1337 ndr
->offset
= _relative_save_offset
;
1339 ndr
->flags
= _flags_save_string
;
1342 uint32_t _relative_save_offset
;
1343 _relative_save_offset
= ndr
->offset
;
1344 NDR_CHECK(ndr_pull_relative_ptr2(ndr
, r
->actions
));
1345 _mem_save_actions_0
= NDR_PULL_GET_MEM_CTX(ndr
);
1346 NDR_PULL_SET_MEM_CTX(ndr
, r
->actions
, 0);
1347 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->actions
));
1348 size_actions_1
= ndr_get_array_size(ndr
, &r
->actions
);
1349 NDR_PULL_ALLOC_N(ndr
, r
->actions
, size_actions_1
);
1350 _mem_save_actions_1
= NDR_PULL_GET_MEM_CTX(ndr
);
1351 NDR_PULL_SET_MEM_CTX(ndr
, r
->actions
, 0);
1352 for (cntr_actions_1
= 0; cntr_actions_1
< size_actions_1
; cntr_actions_1
++) {
1353 NDR_CHECK(ndr_pull_SC_ACTION(ndr
, NDR_SCALARS
, &r
->actions
[cntr_actions_1
]));
1355 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_actions_1
, 0);
1356 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_actions_0
, 0);
1357 ndr
->offset
= _relative_save_offset
;
1360 NDR_CHECK(ndr_check_array_size(ndr
, (void*)&r
->actions
, r
->num_actions
));
1363 return NDR_ERR_SUCCESS
;
1366 _PUBLIC_
void ndr_print_SERVICE_FAILURE_ACTIONS(struct ndr_print
*ndr
, const char *name
, const struct SERVICE_FAILURE_ACTIONS
*r
)
1368 uint32_t cntr_actions_1
;
1369 ndr_print_struct(ndr
, name
, "SERVICE_FAILURE_ACTIONS");
1371 ndr_print_uint32(ndr
, "reset_period", r
->reset_period
);
1372 ndr_print_ptr(ndr
, "rebootmsg", r
->rebootmsg
);
1375 ndr_print_string(ndr
, "rebootmsg", r
->rebootmsg
);
1378 ndr_print_ptr(ndr
, "command", r
->command
);
1381 ndr_print_string(ndr
, "command", r
->command
);
1384 ndr_print_uint32(ndr
, "num_actions", r
->num_actions
);
1385 ndr_print_ptr(ndr
, "actions", r
->actions
);
1388 ndr
->print(ndr
, "%s: ARRAY(%d)", "actions", (int)r
->num_actions
);
1390 for (cntr_actions_1
=0;cntr_actions_1
<r
->num_actions
;cntr_actions_1
++) {
1392 if (asprintf(&idx_1
, "[%d]", cntr_actions_1
) != -1) {
1393 ndr_print_SC_ACTION(ndr
, "actions", &r
->actions
[cntr_actions_1
]);
1403 _PUBLIC_
size_t ndr_size_SERVICE_FAILURE_ACTIONS(const struct SERVICE_FAILURE_ACTIONS
*r
, struct smb_iconv_convenience
*ic
, int flags
)
1405 return ndr_size_struct(r
, flags
, (ndr_push_flags_fn_t
)ndr_push_SERVICE_FAILURE_ACTIONS
, ic
);
1408 static enum ndr_err_code
ndr_push_svcctl_StatusLevel(struct ndr_push
*ndr
, int ndr_flags
, enum svcctl_StatusLevel r
)
1410 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
));
1411 return NDR_ERR_SUCCESS
;
1414 static enum ndr_err_code
ndr_pull_svcctl_StatusLevel(struct ndr_pull
*ndr
, int ndr_flags
, enum svcctl_StatusLevel
*r
)
1417 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &v
));
1419 return NDR_ERR_SUCCESS
;
1422 _PUBLIC_
void ndr_print_svcctl_StatusLevel(struct ndr_print
*ndr
, const char *name
, enum svcctl_StatusLevel r
)
1424 const char *val
= NULL
;
1427 case SVC_STATUS_PROCESS_INFO
: val
= "SVC_STATUS_PROCESS_INFO"; break;
1429 ndr_print_enum(ndr
, name
, "ENUM", val
, r
);
1432 static enum ndr_err_code
ndr_push_svcctl_CloseServiceHandle(struct ndr_push
*ndr
, int flags
, const struct svcctl_CloseServiceHandle
*r
)
1434 if (flags
& NDR_IN
) {
1435 if (r
->in
.handle
== NULL
) {
1436 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
1438 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
, r
->in
.handle
));
1440 if (flags
& NDR_OUT
) {
1441 if (r
->out
.handle
== NULL
) {
1442 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
1444 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
, r
->out
.handle
));
1445 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
1447 return NDR_ERR_SUCCESS
;
1450 static enum ndr_err_code
ndr_pull_svcctl_CloseServiceHandle(struct ndr_pull
*ndr
, int flags
, struct svcctl_CloseServiceHandle
*r
)
1452 TALLOC_CTX
*_mem_save_handle_0
;
1453 if (flags
& NDR_IN
) {
1454 ZERO_STRUCT(r
->out
);
1456 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
1457 NDR_PULL_ALLOC(ndr
, r
->in
.handle
);
1459 _mem_save_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
1460 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.handle
, LIBNDR_FLAG_REF_ALLOC
);
1461 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
, r
->in
.handle
));
1462 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_handle_0
, LIBNDR_FLAG_REF_ALLOC
);
1463 NDR_PULL_ALLOC(ndr
, r
->out
.handle
);
1464 *r
->out
.handle
= *r
->in
.handle
;
1466 if (flags
& NDR_OUT
) {
1467 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
1468 NDR_PULL_ALLOC(ndr
, r
->out
.handle
);
1470 _mem_save_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
1471 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.handle
, LIBNDR_FLAG_REF_ALLOC
);
1472 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
, r
->out
.handle
));
1473 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_handle_0
, LIBNDR_FLAG_REF_ALLOC
);
1474 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
1476 return NDR_ERR_SUCCESS
;
1479 _PUBLIC_
void ndr_print_svcctl_CloseServiceHandle(struct ndr_print
*ndr
, const char *name
, int flags
, const struct svcctl_CloseServiceHandle
*r
)
1481 ndr_print_struct(ndr
, name
, "svcctl_CloseServiceHandle");
1483 if (flags
& NDR_SET_VALUES
) {
1484 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
1486 if (flags
& NDR_IN
) {
1487 ndr_print_struct(ndr
, "in", "svcctl_CloseServiceHandle");
1489 ndr_print_ptr(ndr
, "handle", r
->in
.handle
);
1491 ndr_print_policy_handle(ndr
, "handle", r
->in
.handle
);
1495 if (flags
& NDR_OUT
) {
1496 ndr_print_struct(ndr
, "out", "svcctl_CloseServiceHandle");
1498 ndr_print_ptr(ndr
, "handle", r
->out
.handle
);
1500 ndr_print_policy_handle(ndr
, "handle", r
->out
.handle
);
1502 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
1508 static enum ndr_err_code
ndr_push_svcctl_ControlService(struct ndr_push
*ndr
, int flags
, const struct svcctl_ControlService
*r
)
1510 if (flags
& NDR_IN
) {
1511 if (r
->in
.handle
== NULL
) {
1512 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
1514 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
, r
->in
.handle
));
1515 NDR_CHECK(ndr_push_SERVICE_CONTROL(ndr
, NDR_SCALARS
, r
->in
.control
));
1517 if (flags
& NDR_OUT
) {
1518 if (r
->out
.service_status
== NULL
) {
1519 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
1521 NDR_CHECK(ndr_push_SERVICE_STATUS(ndr
, NDR_SCALARS
, r
->out
.service_status
));
1522 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
1524 return NDR_ERR_SUCCESS
;
1527 static enum ndr_err_code
ndr_pull_svcctl_ControlService(struct ndr_pull
*ndr
, int flags
, struct svcctl_ControlService
*r
)
1529 TALLOC_CTX
*_mem_save_handle_0
;
1530 TALLOC_CTX
*_mem_save_service_status_0
;
1531 if (flags
& NDR_IN
) {
1532 ZERO_STRUCT(r
->out
);
1534 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
1535 NDR_PULL_ALLOC(ndr
, r
->in
.handle
);
1537 _mem_save_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
1538 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.handle
, LIBNDR_FLAG_REF_ALLOC
);
1539 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
, r
->in
.handle
));
1540 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_handle_0
, LIBNDR_FLAG_REF_ALLOC
);
1541 NDR_CHECK(ndr_pull_SERVICE_CONTROL(ndr
, NDR_SCALARS
, &r
->in
.control
));
1542 NDR_PULL_ALLOC(ndr
, r
->out
.service_status
);
1543 ZERO_STRUCTP(r
->out
.service_status
);
1545 if (flags
& NDR_OUT
) {
1546 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
1547 NDR_PULL_ALLOC(ndr
, r
->out
.service_status
);
1549 _mem_save_service_status_0
= NDR_PULL_GET_MEM_CTX(ndr
);
1550 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.service_status
, LIBNDR_FLAG_REF_ALLOC
);
1551 NDR_CHECK(ndr_pull_SERVICE_STATUS(ndr
, NDR_SCALARS
, r
->out
.service_status
));
1552 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_service_status_0
, LIBNDR_FLAG_REF_ALLOC
);
1553 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
1555 return NDR_ERR_SUCCESS
;
1558 _PUBLIC_
void ndr_print_svcctl_ControlService(struct ndr_print
*ndr
, const char *name
, int flags
, const struct svcctl_ControlService
*r
)
1560 ndr_print_struct(ndr
, name
, "svcctl_ControlService");
1562 if (flags
& NDR_SET_VALUES
) {
1563 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
1565 if (flags
& NDR_IN
) {
1566 ndr_print_struct(ndr
, "in", "svcctl_ControlService");
1568 ndr_print_ptr(ndr
, "handle", r
->in
.handle
);
1570 ndr_print_policy_handle(ndr
, "handle", r
->in
.handle
);
1572 ndr_print_SERVICE_CONTROL(ndr
, "control", r
->in
.control
);
1575 if (flags
& NDR_OUT
) {
1576 ndr_print_struct(ndr
, "out", "svcctl_ControlService");
1578 ndr_print_ptr(ndr
, "service_status", r
->out
.service_status
);
1580 ndr_print_SERVICE_STATUS(ndr
, "service_status", r
->out
.service_status
);
1582 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
1588 static enum ndr_err_code
ndr_push_svcctl_DeleteService(struct ndr_push
*ndr
, int flags
, const struct svcctl_DeleteService
*r
)
1590 if (flags
& NDR_IN
) {
1591 if (r
->in
.handle
== NULL
) {
1592 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
1594 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
, r
->in
.handle
));
1596 if (flags
& NDR_OUT
) {
1597 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
1599 return NDR_ERR_SUCCESS
;
1602 static enum ndr_err_code
ndr_pull_svcctl_DeleteService(struct ndr_pull
*ndr
, int flags
, struct svcctl_DeleteService
*r
)
1604 TALLOC_CTX
*_mem_save_handle_0
;
1605 if (flags
& NDR_IN
) {
1606 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
1607 NDR_PULL_ALLOC(ndr
, r
->in
.handle
);
1609 _mem_save_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
1610 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.handle
, LIBNDR_FLAG_REF_ALLOC
);
1611 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
, r
->in
.handle
));
1612 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_handle_0
, LIBNDR_FLAG_REF_ALLOC
);
1614 if (flags
& NDR_OUT
) {
1615 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
1617 return NDR_ERR_SUCCESS
;
1620 _PUBLIC_
void ndr_print_svcctl_DeleteService(struct ndr_print
*ndr
, const char *name
, int flags
, const struct svcctl_DeleteService
*r
)
1622 ndr_print_struct(ndr
, name
, "svcctl_DeleteService");
1624 if (flags
& NDR_SET_VALUES
) {
1625 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
1627 if (flags
& NDR_IN
) {
1628 ndr_print_struct(ndr
, "in", "svcctl_DeleteService");
1630 ndr_print_ptr(ndr
, "handle", r
->in
.handle
);
1632 ndr_print_policy_handle(ndr
, "handle", r
->in
.handle
);
1636 if (flags
& NDR_OUT
) {
1637 ndr_print_struct(ndr
, "out", "svcctl_DeleteService");
1639 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
1645 static enum ndr_err_code
ndr_push_svcctl_LockServiceDatabase(struct ndr_push
*ndr
, int flags
, const struct svcctl_LockServiceDatabase
*r
)
1647 if (flags
& NDR_IN
) {
1648 if (r
->in
.handle
== NULL
) {
1649 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
1651 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
, r
->in
.handle
));
1653 if (flags
& NDR_OUT
) {
1654 if (r
->out
.lock
== NULL
) {
1655 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
1657 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
, r
->out
.lock
));
1658 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
1660 return NDR_ERR_SUCCESS
;
1663 static enum ndr_err_code
ndr_pull_svcctl_LockServiceDatabase(struct ndr_pull
*ndr
, int flags
, struct svcctl_LockServiceDatabase
*r
)
1665 TALLOC_CTX
*_mem_save_handle_0
;
1666 TALLOC_CTX
*_mem_save_lock_0
;
1667 if (flags
& NDR_IN
) {
1668 ZERO_STRUCT(r
->out
);
1670 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
1671 NDR_PULL_ALLOC(ndr
, r
->in
.handle
);
1673 _mem_save_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
1674 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.handle
, LIBNDR_FLAG_REF_ALLOC
);
1675 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
, r
->in
.handle
));
1676 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_handle_0
, LIBNDR_FLAG_REF_ALLOC
);
1677 NDR_PULL_ALLOC(ndr
, r
->out
.lock
);
1678 ZERO_STRUCTP(r
->out
.lock
);
1680 if (flags
& NDR_OUT
) {
1681 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
1682 NDR_PULL_ALLOC(ndr
, r
->out
.lock
);
1684 _mem_save_lock_0
= NDR_PULL_GET_MEM_CTX(ndr
);
1685 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.lock
, LIBNDR_FLAG_REF_ALLOC
);
1686 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
, r
->out
.lock
));
1687 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_lock_0
, LIBNDR_FLAG_REF_ALLOC
);
1688 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
1690 return NDR_ERR_SUCCESS
;
1693 _PUBLIC_
void ndr_print_svcctl_LockServiceDatabase(struct ndr_print
*ndr
, const char *name
, int flags
, const struct svcctl_LockServiceDatabase
*r
)
1695 ndr_print_struct(ndr
, name
, "svcctl_LockServiceDatabase");
1697 if (flags
& NDR_SET_VALUES
) {
1698 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
1700 if (flags
& NDR_IN
) {
1701 ndr_print_struct(ndr
, "in", "svcctl_LockServiceDatabase");
1703 ndr_print_ptr(ndr
, "handle", r
->in
.handle
);
1705 ndr_print_policy_handle(ndr
, "handle", r
->in
.handle
);
1709 if (flags
& NDR_OUT
) {
1710 ndr_print_struct(ndr
, "out", "svcctl_LockServiceDatabase");
1712 ndr_print_ptr(ndr
, "lock", r
->out
.lock
);
1714 ndr_print_policy_handle(ndr
, "lock", r
->out
.lock
);
1716 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
1722 static enum ndr_err_code
ndr_push_svcctl_QueryServiceObjectSecurity(struct ndr_push
*ndr
, int flags
, const struct svcctl_QueryServiceObjectSecurity
*r
)
1724 if (flags
& NDR_IN
) {
1725 if (r
->in
.handle
== NULL
) {
1726 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
1728 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
, r
->in
.handle
));
1729 NDR_CHECK(ndr_push_security_secinfo(ndr
, NDR_SCALARS
, r
->in
.security_flags
));
1730 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.offered
));
1732 if (flags
& NDR_OUT
) {
1733 if (r
->out
.buffer
== NULL
) {
1734 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
1736 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.offered
));
1737 NDR_CHECK(ndr_push_array_uint8(ndr
, NDR_SCALARS
, r
->out
.buffer
, r
->in
.offered
));
1738 if (r
->out
.needed
== NULL
) {
1739 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
1741 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, *r
->out
.needed
));
1742 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
1744 return NDR_ERR_SUCCESS
;
1747 static enum ndr_err_code
ndr_pull_svcctl_QueryServiceObjectSecurity(struct ndr_pull
*ndr
, int flags
, struct svcctl_QueryServiceObjectSecurity
*r
)
1749 uint32_t size_buffer_1
= 0;
1750 TALLOC_CTX
*_mem_save_handle_0
;
1751 TALLOC_CTX
*_mem_save_needed_0
;
1752 if (flags
& NDR_IN
) {
1753 ZERO_STRUCT(r
->out
);
1755 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
1756 NDR_PULL_ALLOC(ndr
, r
->in
.handle
);
1758 _mem_save_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
1759 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.handle
, LIBNDR_FLAG_REF_ALLOC
);
1760 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
, r
->in
.handle
));
1761 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_handle_0
, LIBNDR_FLAG_REF_ALLOC
);
1762 NDR_CHECK(ndr_pull_security_secinfo(ndr
, NDR_SCALARS
, &r
->in
.security_flags
));
1763 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.offered
));
1764 if (r
->in
.offered
> 0x40000) {
1765 return ndr_pull_error(ndr
, NDR_ERR_RANGE
, "value out of range");
1767 NDR_PULL_ALLOC_N(ndr
, r
->out
.buffer
, r
->in
.offered
);
1768 memset(r
->out
.buffer
, 0, (r
->in
.offered
) * sizeof(*r
->out
.buffer
));
1769 NDR_PULL_ALLOC(ndr
, r
->out
.needed
);
1770 ZERO_STRUCTP(r
->out
.needed
);
1772 if (flags
& NDR_OUT
) {
1773 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->out
.buffer
));
1774 size_buffer_1
= ndr_get_array_size(ndr
, &r
->out
.buffer
);
1775 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
1776 NDR_PULL_ALLOC_N(ndr
, r
->out
.buffer
, size_buffer_1
);
1778 NDR_CHECK(ndr_pull_array_uint8(ndr
, NDR_SCALARS
, r
->out
.buffer
, size_buffer_1
));
1779 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
1780 NDR_PULL_ALLOC(ndr
, r
->out
.needed
);
1782 _mem_save_needed_0
= NDR_PULL_GET_MEM_CTX(ndr
);
1783 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.needed
, LIBNDR_FLAG_REF_ALLOC
);
1784 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, r
->out
.needed
));
1785 if (*r
->out
.needed
> 0x40000) {
1786 return ndr_pull_error(ndr
, NDR_ERR_RANGE
, "value out of range");
1788 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_needed_0
, LIBNDR_FLAG_REF_ALLOC
);
1789 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
1790 if (r
->out
.buffer
) {
1791 NDR_CHECK(ndr_check_array_size(ndr
, (void*)&r
->out
.buffer
, r
->in
.offered
));
1794 return NDR_ERR_SUCCESS
;
1797 _PUBLIC_
void ndr_print_svcctl_QueryServiceObjectSecurity(struct ndr_print
*ndr
, const char *name
, int flags
, const struct svcctl_QueryServiceObjectSecurity
*r
)
1799 ndr_print_struct(ndr
, name
, "svcctl_QueryServiceObjectSecurity");
1801 if (flags
& NDR_SET_VALUES
) {
1802 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
1804 if (flags
& NDR_IN
) {
1805 ndr_print_struct(ndr
, "in", "svcctl_QueryServiceObjectSecurity");
1807 ndr_print_ptr(ndr
, "handle", r
->in
.handle
);
1809 ndr_print_policy_handle(ndr
, "handle", r
->in
.handle
);
1811 ndr_print_security_secinfo(ndr
, "security_flags", r
->in
.security_flags
);
1812 ndr_print_uint32(ndr
, "offered", r
->in
.offered
);
1815 if (flags
& NDR_OUT
) {
1816 ndr_print_struct(ndr
, "out", "svcctl_QueryServiceObjectSecurity");
1818 ndr_print_ptr(ndr
, "buffer", r
->out
.buffer
);
1820 ndr_print_array_uint8(ndr
, "buffer", r
->out
.buffer
, r
->in
.offered
);
1822 ndr_print_ptr(ndr
, "needed", r
->out
.needed
);
1824 ndr_print_uint32(ndr
, "needed", *r
->out
.needed
);
1826 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
1832 static enum ndr_err_code
ndr_push_svcctl_SetServiceObjectSecurity(struct ndr_push
*ndr
, int flags
, const struct svcctl_SetServiceObjectSecurity
*r
)
1834 if (flags
& NDR_IN
) {
1835 if (r
->in
.handle
== NULL
) {
1836 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
1838 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
, r
->in
.handle
));
1839 NDR_CHECK(ndr_push_security_secinfo(ndr
, NDR_SCALARS
, r
->in
.security_flags
));
1840 if (r
->in
.buffer
== NULL
) {
1841 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
1843 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.offered
));
1844 NDR_CHECK(ndr_push_array_uint8(ndr
, NDR_SCALARS
, r
->in
.buffer
, r
->in
.offered
));
1845 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.offered
));
1847 if (flags
& NDR_OUT
) {
1848 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
1850 return NDR_ERR_SUCCESS
;
1853 static enum ndr_err_code
ndr_pull_svcctl_SetServiceObjectSecurity(struct ndr_pull
*ndr
, int flags
, struct svcctl_SetServiceObjectSecurity
*r
)
1855 uint32_t size_buffer_1
= 0;
1856 TALLOC_CTX
*_mem_save_handle_0
;
1857 if (flags
& NDR_IN
) {
1858 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
1859 NDR_PULL_ALLOC(ndr
, r
->in
.handle
);
1861 _mem_save_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
1862 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.handle
, LIBNDR_FLAG_REF_ALLOC
);
1863 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
, r
->in
.handle
));
1864 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_handle_0
, LIBNDR_FLAG_REF_ALLOC
);
1865 NDR_CHECK(ndr_pull_security_secinfo(ndr
, NDR_SCALARS
, &r
->in
.security_flags
));
1866 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->in
.buffer
));
1867 size_buffer_1
= ndr_get_array_size(ndr
, &r
->in
.buffer
);
1868 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
1869 NDR_PULL_ALLOC_N(ndr
, r
->in
.buffer
, size_buffer_1
);
1871 NDR_CHECK(ndr_pull_array_uint8(ndr
, NDR_SCALARS
, r
->in
.buffer
, size_buffer_1
));
1872 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.offered
));
1874 NDR_CHECK(ndr_check_array_size(ndr
, (void*)&r
->in
.buffer
, r
->in
.offered
));
1877 if (flags
& NDR_OUT
) {
1878 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
1880 return NDR_ERR_SUCCESS
;
1883 _PUBLIC_
void ndr_print_svcctl_SetServiceObjectSecurity(struct ndr_print
*ndr
, const char *name
, int flags
, const struct svcctl_SetServiceObjectSecurity
*r
)
1885 ndr_print_struct(ndr
, name
, "svcctl_SetServiceObjectSecurity");
1887 if (flags
& NDR_SET_VALUES
) {
1888 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
1890 if (flags
& NDR_IN
) {
1891 ndr_print_struct(ndr
, "in", "svcctl_SetServiceObjectSecurity");
1893 ndr_print_ptr(ndr
, "handle", r
->in
.handle
);
1895 ndr_print_policy_handle(ndr
, "handle", r
->in
.handle
);
1897 ndr_print_security_secinfo(ndr
, "security_flags", r
->in
.security_flags
);
1898 ndr_print_ptr(ndr
, "buffer", r
->in
.buffer
);
1900 ndr_print_array_uint8(ndr
, "buffer", r
->in
.buffer
, r
->in
.offered
);
1902 ndr_print_uint32(ndr
, "offered", r
->in
.offered
);
1905 if (flags
& NDR_OUT
) {
1906 ndr_print_struct(ndr
, "out", "svcctl_SetServiceObjectSecurity");
1908 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
1914 static enum ndr_err_code
ndr_push_svcctl_QueryServiceStatus(struct ndr_push
*ndr
, int flags
, const struct svcctl_QueryServiceStatus
*r
)
1916 if (flags
& NDR_IN
) {
1917 if (r
->in
.handle
== NULL
) {
1918 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
1920 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
, r
->in
.handle
));
1922 if (flags
& NDR_OUT
) {
1923 if (r
->out
.service_status
== NULL
) {
1924 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
1926 NDR_CHECK(ndr_push_SERVICE_STATUS(ndr
, NDR_SCALARS
, r
->out
.service_status
));
1927 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
1929 return NDR_ERR_SUCCESS
;
1932 static enum ndr_err_code
ndr_pull_svcctl_QueryServiceStatus(struct ndr_pull
*ndr
, int flags
, struct svcctl_QueryServiceStatus
*r
)
1934 TALLOC_CTX
*_mem_save_handle_0
;
1935 TALLOC_CTX
*_mem_save_service_status_0
;
1936 if (flags
& NDR_IN
) {
1937 ZERO_STRUCT(r
->out
);
1939 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
1940 NDR_PULL_ALLOC(ndr
, r
->in
.handle
);
1942 _mem_save_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
1943 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.handle
, LIBNDR_FLAG_REF_ALLOC
);
1944 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
, r
->in
.handle
));
1945 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_handle_0
, LIBNDR_FLAG_REF_ALLOC
);
1946 NDR_PULL_ALLOC(ndr
, r
->out
.service_status
);
1947 ZERO_STRUCTP(r
->out
.service_status
);
1949 if (flags
& NDR_OUT
) {
1950 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
1951 NDR_PULL_ALLOC(ndr
, r
->out
.service_status
);
1953 _mem_save_service_status_0
= NDR_PULL_GET_MEM_CTX(ndr
);
1954 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.service_status
, LIBNDR_FLAG_REF_ALLOC
);
1955 NDR_CHECK(ndr_pull_SERVICE_STATUS(ndr
, NDR_SCALARS
, r
->out
.service_status
));
1956 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_service_status_0
, LIBNDR_FLAG_REF_ALLOC
);
1957 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
1959 return NDR_ERR_SUCCESS
;
1962 _PUBLIC_
void ndr_print_svcctl_QueryServiceStatus(struct ndr_print
*ndr
, const char *name
, int flags
, const struct svcctl_QueryServiceStatus
*r
)
1964 ndr_print_struct(ndr
, name
, "svcctl_QueryServiceStatus");
1966 if (flags
& NDR_SET_VALUES
) {
1967 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
1969 if (flags
& NDR_IN
) {
1970 ndr_print_struct(ndr
, "in", "svcctl_QueryServiceStatus");
1972 ndr_print_ptr(ndr
, "handle", r
->in
.handle
);
1974 ndr_print_policy_handle(ndr
, "handle", r
->in
.handle
);
1978 if (flags
& NDR_OUT
) {
1979 ndr_print_struct(ndr
, "out", "svcctl_QueryServiceStatus");
1981 ndr_print_ptr(ndr
, "service_status", r
->out
.service_status
);
1983 ndr_print_SERVICE_STATUS(ndr
, "service_status", r
->out
.service_status
);
1985 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
1991 static enum ndr_err_code
ndr_push_svcctl_SetServiceStatus(struct ndr_push
*ndr
, int flags
, const struct svcctl_SetServiceStatus
*r
)
1993 if (flags
& NDR_IN
) {
1995 if (flags
& NDR_OUT
) {
1996 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
1998 return NDR_ERR_SUCCESS
;
2001 static enum ndr_err_code
ndr_pull_svcctl_SetServiceStatus(struct ndr_pull
*ndr
, int flags
, struct svcctl_SetServiceStatus
*r
)
2003 if (flags
& NDR_IN
) {
2005 if (flags
& NDR_OUT
) {
2006 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
2008 return NDR_ERR_SUCCESS
;
2011 _PUBLIC_
void ndr_print_svcctl_SetServiceStatus(struct ndr_print
*ndr
, const char *name
, int flags
, const struct svcctl_SetServiceStatus
*r
)
2013 ndr_print_struct(ndr
, name
, "svcctl_SetServiceStatus");
2015 if (flags
& NDR_SET_VALUES
) {
2016 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
2018 if (flags
& NDR_IN
) {
2019 ndr_print_struct(ndr
, "in", "svcctl_SetServiceStatus");
2023 if (flags
& NDR_OUT
) {
2024 ndr_print_struct(ndr
, "out", "svcctl_SetServiceStatus");
2026 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
2032 static enum ndr_err_code
ndr_push_svcctl_UnlockServiceDatabase(struct ndr_push
*ndr
, int flags
, const struct svcctl_UnlockServiceDatabase
*r
)
2034 if (flags
& NDR_IN
) {
2035 if (r
->in
.lock
== NULL
) {
2036 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
2038 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
, r
->in
.lock
));
2040 if (flags
& NDR_OUT
) {
2041 if (r
->out
.lock
== NULL
) {
2042 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
2044 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
, r
->out
.lock
));
2045 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
2047 return NDR_ERR_SUCCESS
;
2050 static enum ndr_err_code
ndr_pull_svcctl_UnlockServiceDatabase(struct ndr_pull
*ndr
, int flags
, struct svcctl_UnlockServiceDatabase
*r
)
2052 TALLOC_CTX
*_mem_save_lock_0
;
2053 if (flags
& NDR_IN
) {
2054 ZERO_STRUCT(r
->out
);
2056 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
2057 NDR_PULL_ALLOC(ndr
, r
->in
.lock
);
2059 _mem_save_lock_0
= NDR_PULL_GET_MEM_CTX(ndr
);
2060 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.lock
, LIBNDR_FLAG_REF_ALLOC
);
2061 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
, r
->in
.lock
));
2062 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_lock_0
, LIBNDR_FLAG_REF_ALLOC
);
2063 NDR_PULL_ALLOC(ndr
, r
->out
.lock
);
2064 *r
->out
.lock
= *r
->in
.lock
;
2066 if (flags
& NDR_OUT
) {
2067 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
2068 NDR_PULL_ALLOC(ndr
, r
->out
.lock
);
2070 _mem_save_lock_0
= NDR_PULL_GET_MEM_CTX(ndr
);
2071 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.lock
, LIBNDR_FLAG_REF_ALLOC
);
2072 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
, r
->out
.lock
));
2073 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_lock_0
, LIBNDR_FLAG_REF_ALLOC
);
2074 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
2076 return NDR_ERR_SUCCESS
;
2079 _PUBLIC_
void ndr_print_svcctl_UnlockServiceDatabase(struct ndr_print
*ndr
, const char *name
, int flags
, const struct svcctl_UnlockServiceDatabase
*r
)
2081 ndr_print_struct(ndr
, name
, "svcctl_UnlockServiceDatabase");
2083 if (flags
& NDR_SET_VALUES
) {
2084 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
2086 if (flags
& NDR_IN
) {
2087 ndr_print_struct(ndr
, "in", "svcctl_UnlockServiceDatabase");
2089 ndr_print_ptr(ndr
, "lock", r
->in
.lock
);
2091 ndr_print_policy_handle(ndr
, "lock", r
->in
.lock
);
2095 if (flags
& NDR_OUT
) {
2096 ndr_print_struct(ndr
, "out", "svcctl_UnlockServiceDatabase");
2098 ndr_print_ptr(ndr
, "lock", r
->out
.lock
);
2100 ndr_print_policy_handle(ndr
, "lock", r
->out
.lock
);
2102 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
2108 static enum ndr_err_code
ndr_push_svcctl_NotifyBootConfigStatus(struct ndr_push
*ndr
, int flags
, const struct svcctl_NotifyBootConfigStatus
*r
)
2110 if (flags
& NDR_IN
) {
2112 if (flags
& NDR_OUT
) {
2113 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
2115 return NDR_ERR_SUCCESS
;
2118 static enum ndr_err_code
ndr_pull_svcctl_NotifyBootConfigStatus(struct ndr_pull
*ndr
, int flags
, struct svcctl_NotifyBootConfigStatus
*r
)
2120 if (flags
& NDR_IN
) {
2122 if (flags
& NDR_OUT
) {
2123 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
2125 return NDR_ERR_SUCCESS
;
2128 _PUBLIC_
void ndr_print_svcctl_NotifyBootConfigStatus(struct ndr_print
*ndr
, const char *name
, int flags
, const struct svcctl_NotifyBootConfigStatus
*r
)
2130 ndr_print_struct(ndr
, name
, "svcctl_NotifyBootConfigStatus");
2132 if (flags
& NDR_SET_VALUES
) {
2133 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
2135 if (flags
& NDR_IN
) {
2136 ndr_print_struct(ndr
, "in", "svcctl_NotifyBootConfigStatus");
2140 if (flags
& NDR_OUT
) {
2141 ndr_print_struct(ndr
, "out", "svcctl_NotifyBootConfigStatus");
2143 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
2149 static enum ndr_err_code
ndr_push_svcctl_SCSetServiceBitsW(struct ndr_push
*ndr
, int flags
, const struct svcctl_SCSetServiceBitsW
*r
)
2151 if (flags
& NDR_IN
) {
2152 if (r
->in
.handle
== NULL
) {
2153 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
2155 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
, r
->in
.handle
));
2156 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.bits
));
2157 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.bitson
));
2158 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.immediate
));
2160 if (flags
& NDR_OUT
) {
2161 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
2163 return NDR_ERR_SUCCESS
;
2166 static enum ndr_err_code
ndr_pull_svcctl_SCSetServiceBitsW(struct ndr_pull
*ndr
, int flags
, struct svcctl_SCSetServiceBitsW
*r
)
2168 TALLOC_CTX
*_mem_save_handle_0
;
2169 if (flags
& NDR_IN
) {
2170 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
2171 NDR_PULL_ALLOC(ndr
, r
->in
.handle
);
2173 _mem_save_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
2174 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.handle
, LIBNDR_FLAG_REF_ALLOC
);
2175 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
, r
->in
.handle
));
2176 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_handle_0
, LIBNDR_FLAG_REF_ALLOC
);
2177 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.bits
));
2178 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.bitson
));
2179 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.immediate
));
2181 if (flags
& NDR_OUT
) {
2182 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
2184 return NDR_ERR_SUCCESS
;
2187 _PUBLIC_
void ndr_print_svcctl_SCSetServiceBitsW(struct ndr_print
*ndr
, const char *name
, int flags
, const struct svcctl_SCSetServiceBitsW
*r
)
2189 ndr_print_struct(ndr
, name
, "svcctl_SCSetServiceBitsW");
2191 if (flags
& NDR_SET_VALUES
) {
2192 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
2194 if (flags
& NDR_IN
) {
2195 ndr_print_struct(ndr
, "in", "svcctl_SCSetServiceBitsW");
2197 ndr_print_ptr(ndr
, "handle", r
->in
.handle
);
2199 ndr_print_policy_handle(ndr
, "handle", r
->in
.handle
);
2201 ndr_print_uint32(ndr
, "bits", r
->in
.bits
);
2202 ndr_print_uint32(ndr
, "bitson", r
->in
.bitson
);
2203 ndr_print_uint32(ndr
, "immediate", r
->in
.immediate
);
2206 if (flags
& NDR_OUT
) {
2207 ndr_print_struct(ndr
, "out", "svcctl_SCSetServiceBitsW");
2209 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
2215 static enum ndr_err_code
ndr_push_svcctl_ChangeServiceConfigW(struct ndr_push
*ndr
, int flags
, const struct svcctl_ChangeServiceConfigW
*r
)
2217 if (flags
& NDR_IN
) {
2218 if (r
->in
.handle
== NULL
) {
2219 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
2221 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
, r
->in
.handle
));
2222 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.type
));
2223 NDR_CHECK(ndr_push_svcctl_StartType(ndr
, NDR_SCALARS
, r
->in
.start_type
));
2224 NDR_CHECK(ndr_push_svcctl_ErrorControl(ndr
, NDR_SCALARS
, r
->in
.error_control
));
2225 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.binary_path
));
2226 if (r
->in
.binary_path
) {
2227 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.binary_path
, CH_UTF16
)));
2228 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, 0));
2229 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.binary_path
, CH_UTF16
)));
2230 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
));
2232 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.load_order_group
));
2233 if (r
->in
.load_order_group
) {
2234 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.load_order_group
, CH_UTF16
)));
2235 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, 0));
2236 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.load_order_group
, CH_UTF16
)));
2237 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
));
2239 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.dependencies
));
2240 if (r
->in
.dependencies
) {
2241 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.dependencies
, CH_UTF16
)));
2242 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, 0));
2243 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.dependencies
, CH_UTF16
)));
2244 NDR_CHECK(ndr_push_charset(ndr
, NDR_SCALARS
, r
->in
.dependencies
, ndr_charset_length(r
->in
.dependencies
, CH_UTF16
), sizeof(uint16_t), CH_UTF16
));
2246 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.service_start_name
));
2247 if (r
->in
.service_start_name
) {
2248 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.service_start_name
, CH_UTF16
)));
2249 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, 0));
2250 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.service_start_name
, CH_UTF16
)));
2251 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
));
2253 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.password
));
2254 if (r
->in
.password
) {
2255 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.password
, CH_UTF16
)));
2256 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, 0));
2257 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.password
, CH_UTF16
)));
2258 NDR_CHECK(ndr_push_charset(ndr
, NDR_SCALARS
, r
->in
.password
, ndr_charset_length(r
->in
.password
, CH_UTF16
), sizeof(uint16_t), CH_UTF16
));
2260 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.display_name
));
2261 if (r
->in
.display_name
) {
2262 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.display_name
, CH_UTF16
)));
2263 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, 0));
2264 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.display_name
, CH_UTF16
)));
2265 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
));
2268 if (flags
& NDR_OUT
) {
2269 if (r
->out
.tag_id
== NULL
) {
2270 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
2272 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, *r
->out
.tag_id
));
2273 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
2275 return NDR_ERR_SUCCESS
;
2278 static enum ndr_err_code
ndr_pull_svcctl_ChangeServiceConfigW(struct ndr_pull
*ndr
, int flags
, struct svcctl_ChangeServiceConfigW
*r
)
2280 uint32_t _ptr_binary_path
;
2281 uint32_t size_binary_path_1
= 0;
2282 uint32_t length_binary_path_1
= 0;
2283 uint32_t _ptr_load_order_group
;
2284 uint32_t size_load_order_group_1
= 0;
2285 uint32_t length_load_order_group_1
= 0;
2286 uint32_t _ptr_dependencies
;
2287 uint32_t size_dependencies_1
= 0;
2288 uint32_t length_dependencies_1
= 0;
2289 uint32_t _ptr_service_start_name
;
2290 uint32_t size_service_start_name_1
= 0;
2291 uint32_t length_service_start_name_1
= 0;
2292 uint32_t _ptr_password
;
2293 uint32_t size_password_1
= 0;
2294 uint32_t length_password_1
= 0;
2295 uint32_t _ptr_display_name
;
2296 uint32_t size_display_name_1
= 0;
2297 uint32_t length_display_name_1
= 0;
2298 TALLOC_CTX
*_mem_save_handle_0
;
2299 TALLOC_CTX
*_mem_save_binary_path_0
;
2300 TALLOC_CTX
*_mem_save_load_order_group_0
;
2301 TALLOC_CTX
*_mem_save_tag_id_0
;
2302 TALLOC_CTX
*_mem_save_dependencies_0
;
2303 TALLOC_CTX
*_mem_save_service_start_name_0
;
2304 TALLOC_CTX
*_mem_save_password_0
;
2305 TALLOC_CTX
*_mem_save_display_name_0
;
2306 if (flags
& NDR_IN
) {
2307 ZERO_STRUCT(r
->out
);
2309 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
2310 NDR_PULL_ALLOC(ndr
, r
->in
.handle
);
2312 _mem_save_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
2313 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.handle
, LIBNDR_FLAG_REF_ALLOC
);
2314 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
, r
->in
.handle
));
2315 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_handle_0
, LIBNDR_FLAG_REF_ALLOC
);
2316 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.type
));
2317 NDR_CHECK(ndr_pull_svcctl_StartType(ndr
, NDR_SCALARS
, &r
->in
.start_type
));
2318 NDR_CHECK(ndr_pull_svcctl_ErrorControl(ndr
, NDR_SCALARS
, &r
->in
.error_control
));
2319 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_binary_path
));
2320 if (_ptr_binary_path
) {
2321 NDR_PULL_ALLOC(ndr
, r
->in
.binary_path
);
2323 r
->in
.binary_path
= NULL
;
2325 if (r
->in
.binary_path
) {
2326 _mem_save_binary_path_0
= NDR_PULL_GET_MEM_CTX(ndr
);
2327 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.binary_path
, 0);
2328 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->in
.binary_path
));
2329 NDR_CHECK(ndr_pull_array_length(ndr
, &r
->in
.binary_path
));
2330 size_binary_path_1
= ndr_get_array_size(ndr
, &r
->in
.binary_path
);
2331 length_binary_path_1
= ndr_get_array_length(ndr
, &r
->in
.binary_path
);
2332 if (length_binary_path_1
> size_binary_path_1
) {
2333 return ndr_pull_error(ndr
, NDR_ERR_ARRAY_SIZE
, "Bad array size %u should exceed array length %u", size_binary_path_1
, length_binary_path_1
);
2335 NDR_CHECK(ndr_check_string_terminator(ndr
, length_binary_path_1
, sizeof(uint16_t)));
2336 NDR_CHECK(ndr_pull_charset(ndr
, NDR_SCALARS
, &r
->in
.binary_path
, length_binary_path_1
, sizeof(uint16_t), CH_UTF16
));
2337 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_binary_path_0
, 0);
2339 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_load_order_group
));
2340 if (_ptr_load_order_group
) {
2341 NDR_PULL_ALLOC(ndr
, r
->in
.load_order_group
);
2343 r
->in
.load_order_group
= NULL
;
2345 if (r
->in
.load_order_group
) {
2346 _mem_save_load_order_group_0
= NDR_PULL_GET_MEM_CTX(ndr
);
2347 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.load_order_group
, 0);
2348 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->in
.load_order_group
));
2349 NDR_CHECK(ndr_pull_array_length(ndr
, &r
->in
.load_order_group
));
2350 size_load_order_group_1
= ndr_get_array_size(ndr
, &r
->in
.load_order_group
);
2351 length_load_order_group_1
= ndr_get_array_length(ndr
, &r
->in
.load_order_group
);
2352 if (length_load_order_group_1
> size_load_order_group_1
) {
2353 return ndr_pull_error(ndr
, NDR_ERR_ARRAY_SIZE
, "Bad array size %u should exceed array length %u", size_load_order_group_1
, length_load_order_group_1
);
2355 NDR_CHECK(ndr_check_string_terminator(ndr
, length_load_order_group_1
, sizeof(uint16_t)));
2356 NDR_CHECK(ndr_pull_charset(ndr
, NDR_SCALARS
, &r
->in
.load_order_group
, length_load_order_group_1
, sizeof(uint16_t), CH_UTF16
));
2357 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_load_order_group_0
, 0);
2359 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_dependencies
));
2360 if (_ptr_dependencies
) {
2361 NDR_PULL_ALLOC(ndr
, r
->in
.dependencies
);
2363 r
->in
.dependencies
= NULL
;
2365 if (r
->in
.dependencies
) {
2366 _mem_save_dependencies_0
= NDR_PULL_GET_MEM_CTX(ndr
);
2367 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.dependencies
, 0);
2368 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->in
.dependencies
));
2369 NDR_CHECK(ndr_pull_array_length(ndr
, &r
->in
.dependencies
));
2370 size_dependencies_1
= ndr_get_array_size(ndr
, &r
->in
.dependencies
);
2371 length_dependencies_1
= ndr_get_array_length(ndr
, &r
->in
.dependencies
);
2372 if (length_dependencies_1
> size_dependencies_1
) {
2373 return ndr_pull_error(ndr
, NDR_ERR_ARRAY_SIZE
, "Bad array size %u should exceed array length %u", size_dependencies_1
, length_dependencies_1
);
2375 NDR_CHECK(ndr_check_string_terminator(ndr
, length_dependencies_1
, sizeof(uint16_t)));
2376 NDR_CHECK(ndr_pull_charset(ndr
, NDR_SCALARS
, &r
->in
.dependencies
, length_dependencies_1
, sizeof(uint16_t), CH_UTF16
));
2377 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_dependencies_0
, 0);
2379 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_service_start_name
));
2380 if (_ptr_service_start_name
) {
2381 NDR_PULL_ALLOC(ndr
, r
->in
.service_start_name
);
2383 r
->in
.service_start_name
= NULL
;
2385 if (r
->in
.service_start_name
) {
2386 _mem_save_service_start_name_0
= NDR_PULL_GET_MEM_CTX(ndr
);
2387 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.service_start_name
, 0);
2388 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->in
.service_start_name
));
2389 NDR_CHECK(ndr_pull_array_length(ndr
, &r
->in
.service_start_name
));
2390 size_service_start_name_1
= ndr_get_array_size(ndr
, &r
->in
.service_start_name
);
2391 length_service_start_name_1
= ndr_get_array_length(ndr
, &r
->in
.service_start_name
);
2392 if (length_service_start_name_1
> size_service_start_name_1
) {
2393 return ndr_pull_error(ndr
, NDR_ERR_ARRAY_SIZE
, "Bad array size %u should exceed array length %u", size_service_start_name_1
, length_service_start_name_1
);
2395 NDR_CHECK(ndr_check_string_terminator(ndr
, length_service_start_name_1
, sizeof(uint16_t)));
2396 NDR_CHECK(ndr_pull_charset(ndr
, NDR_SCALARS
, &r
->in
.service_start_name
, length_service_start_name_1
, sizeof(uint16_t), CH_UTF16
));
2397 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_service_start_name_0
, 0);
2399 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_password
));
2400 if (_ptr_password
) {
2401 NDR_PULL_ALLOC(ndr
, r
->in
.password
);
2403 r
->in
.password
= NULL
;
2405 if (r
->in
.password
) {
2406 _mem_save_password_0
= NDR_PULL_GET_MEM_CTX(ndr
);
2407 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.password
, 0);
2408 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->in
.password
));
2409 NDR_CHECK(ndr_pull_array_length(ndr
, &r
->in
.password
));
2410 size_password_1
= ndr_get_array_size(ndr
, &r
->in
.password
);
2411 length_password_1
= ndr_get_array_length(ndr
, &r
->in
.password
);
2412 if (length_password_1
> size_password_1
) {
2413 return ndr_pull_error(ndr
, NDR_ERR_ARRAY_SIZE
, "Bad array size %u should exceed array length %u", size_password_1
, length_password_1
);
2415 NDR_CHECK(ndr_check_string_terminator(ndr
, length_password_1
, sizeof(uint16_t)));
2416 NDR_CHECK(ndr_pull_charset(ndr
, NDR_SCALARS
, &r
->in
.password
, length_password_1
, sizeof(uint16_t), CH_UTF16
));
2417 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_password_0
, 0);
2419 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_display_name
));
2420 if (_ptr_display_name
) {
2421 NDR_PULL_ALLOC(ndr
, r
->in
.display_name
);
2423 r
->in
.display_name
= NULL
;
2425 if (r
->in
.display_name
) {
2426 _mem_save_display_name_0
= NDR_PULL_GET_MEM_CTX(ndr
);
2427 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.display_name
, 0);
2428 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->in
.display_name
));
2429 NDR_CHECK(ndr_pull_array_length(ndr
, &r
->in
.display_name
));
2430 size_display_name_1
= ndr_get_array_size(ndr
, &r
->in
.display_name
);
2431 length_display_name_1
= ndr_get_array_length(ndr
, &r
->in
.display_name
);
2432 if (length_display_name_1
> size_display_name_1
) {
2433 return ndr_pull_error(ndr
, NDR_ERR_ARRAY_SIZE
, "Bad array size %u should exceed array length %u", size_display_name_1
, length_display_name_1
);
2435 NDR_CHECK(ndr_check_string_terminator(ndr
, length_display_name_1
, sizeof(uint16_t)));
2436 NDR_CHECK(ndr_pull_charset(ndr
, NDR_SCALARS
, &r
->in
.display_name
, length_display_name_1
, sizeof(uint16_t), CH_UTF16
));
2437 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_display_name_0
, 0);
2439 NDR_PULL_ALLOC(ndr
, r
->out
.tag_id
);
2440 ZERO_STRUCTP(r
->out
.tag_id
);
2442 if (flags
& NDR_OUT
) {
2443 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
2444 NDR_PULL_ALLOC(ndr
, r
->out
.tag_id
);
2446 _mem_save_tag_id_0
= NDR_PULL_GET_MEM_CTX(ndr
);
2447 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.tag_id
, LIBNDR_FLAG_REF_ALLOC
);
2448 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, r
->out
.tag_id
));
2449 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_tag_id_0
, LIBNDR_FLAG_REF_ALLOC
);
2450 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
2452 return NDR_ERR_SUCCESS
;
2455 _PUBLIC_
void ndr_print_svcctl_ChangeServiceConfigW(struct ndr_print
*ndr
, const char *name
, int flags
, const struct svcctl_ChangeServiceConfigW
*r
)
2457 ndr_print_struct(ndr
, name
, "svcctl_ChangeServiceConfigW");
2459 if (flags
& NDR_SET_VALUES
) {
2460 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
2462 if (flags
& NDR_IN
) {
2463 ndr_print_struct(ndr
, "in", "svcctl_ChangeServiceConfigW");
2465 ndr_print_ptr(ndr
, "handle", r
->in
.handle
);
2467 ndr_print_policy_handle(ndr
, "handle", r
->in
.handle
);
2469 ndr_print_uint32(ndr
, "type", r
->in
.type
);
2470 ndr_print_svcctl_StartType(ndr
, "start_type", r
->in
.start_type
);
2471 ndr_print_svcctl_ErrorControl(ndr
, "error_control", r
->in
.error_control
);
2472 ndr_print_ptr(ndr
, "binary_path", r
->in
.binary_path
);
2474 if (r
->in
.binary_path
) {
2475 ndr_print_string(ndr
, "binary_path", r
->in
.binary_path
);
2478 ndr_print_ptr(ndr
, "load_order_group", r
->in
.load_order_group
);
2480 if (r
->in
.load_order_group
) {
2481 ndr_print_string(ndr
, "load_order_group", r
->in
.load_order_group
);
2484 ndr_print_ptr(ndr
, "dependencies", r
->in
.dependencies
);
2486 if (r
->in
.dependencies
) {
2487 ndr_print_string(ndr
, "dependencies", r
->in
.dependencies
);
2490 ndr_print_ptr(ndr
, "service_start_name", r
->in
.service_start_name
);
2492 if (r
->in
.service_start_name
) {
2493 ndr_print_string(ndr
, "service_start_name", r
->in
.service_start_name
);
2496 ndr_print_ptr(ndr
, "password", r
->in
.password
);
2498 if (r
->in
.password
) {
2499 ndr_print_string(ndr
, "password", r
->in
.password
);
2502 ndr_print_ptr(ndr
, "display_name", r
->in
.display_name
);
2504 if (r
->in
.display_name
) {
2505 ndr_print_string(ndr
, "display_name", r
->in
.display_name
);
2510 if (flags
& NDR_OUT
) {
2511 ndr_print_struct(ndr
, "out", "svcctl_ChangeServiceConfigW");
2513 ndr_print_ptr(ndr
, "tag_id", r
->out
.tag_id
);
2515 ndr_print_uint32(ndr
, "tag_id", *r
->out
.tag_id
);
2517 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
2523 static enum ndr_err_code
ndr_push_svcctl_CreateServiceW(struct ndr_push
*ndr
, int flags
, const struct svcctl_CreateServiceW
*r
)
2525 if (flags
& NDR_IN
) {
2526 if (r
->in
.scmanager_handle
== NULL
) {
2527 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
2529 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
, r
->in
.scmanager_handle
));
2530 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.ServiceName
, CH_UTF16
)));
2531 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, 0));
2532 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.ServiceName
, CH_UTF16
)));
2533 NDR_CHECK(ndr_push_charset(ndr
, NDR_SCALARS
, r
->in
.ServiceName
, ndr_charset_length(r
->in
.ServiceName
, CH_UTF16
), sizeof(uint16_t), CH_UTF16
));
2534 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.DisplayName
));
2535 if (r
->in
.DisplayName
) {
2536 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.DisplayName
, CH_UTF16
)));
2537 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, 0));
2538 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.DisplayName
, CH_UTF16
)));
2539 NDR_CHECK(ndr_push_charset(ndr
, NDR_SCALARS
, r
->in
.DisplayName
, ndr_charset_length(r
->in
.DisplayName
, CH_UTF16
), sizeof(uint16_t), CH_UTF16
));
2541 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.desired_access
));
2542 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.type
));
2543 NDR_CHECK(ndr_push_svcctl_StartType(ndr
, NDR_SCALARS
, r
->in
.start_type
));
2544 NDR_CHECK(ndr_push_svcctl_ErrorControl(ndr
, NDR_SCALARS
, r
->in
.error_control
));
2545 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.binary_path
, CH_UTF16
)));
2546 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, 0));
2547 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.binary_path
, CH_UTF16
)));
2548 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
));
2549 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.LoadOrderGroupKey
));
2550 if (r
->in
.LoadOrderGroupKey
) {
2551 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.LoadOrderGroupKey
, CH_UTF16
)));
2552 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, 0));
2553 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.LoadOrderGroupKey
, CH_UTF16
)));
2554 NDR_CHECK(ndr_push_charset(ndr
, NDR_SCALARS
, r
->in
.LoadOrderGroupKey
, ndr_charset_length(r
->in
.LoadOrderGroupKey
, CH_UTF16
), sizeof(uint16_t), CH_UTF16
));
2556 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.TagId
));
2558 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, *r
->in
.TagId
));
2560 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.dependencies
));
2561 if (r
->in
.dependencies
) {
2562 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.dependencies_size
));
2563 NDR_CHECK(ndr_push_array_uint8(ndr
, NDR_SCALARS
, r
->in
.dependencies
, r
->in
.dependencies_size
));
2565 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.dependencies_size
));
2566 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.service_start_name
));
2567 if (r
->in
.service_start_name
) {
2568 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.service_start_name
, CH_UTF16
)));
2569 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, 0));
2570 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.service_start_name
, CH_UTF16
)));
2571 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
));
2573 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.password
));
2574 if (r
->in
.password
) {
2575 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.password_size
));
2576 NDR_CHECK(ndr_push_array_uint8(ndr
, NDR_SCALARS
, r
->in
.password
, r
->in
.password_size
));
2578 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.password_size
));
2580 if (flags
& NDR_OUT
) {
2581 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->out
.TagId
));
2583 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, *r
->out
.TagId
));
2585 if (r
->out
.handle
== NULL
) {
2586 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
2588 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
, r
->out
.handle
));
2589 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
2591 return NDR_ERR_SUCCESS
;
2594 static enum ndr_err_code
ndr_pull_svcctl_CreateServiceW(struct ndr_pull
*ndr
, int flags
, struct svcctl_CreateServiceW
*r
)
2596 uint32_t size_ServiceName_0
= 0;
2597 uint32_t length_ServiceName_0
= 0;
2598 uint32_t _ptr_DisplayName
;
2599 uint32_t size_DisplayName_1
= 0;
2600 uint32_t length_DisplayName_1
= 0;
2601 uint32_t size_binary_path_0
= 0;
2602 uint32_t length_binary_path_0
= 0;
2603 uint32_t _ptr_LoadOrderGroupKey
;
2604 uint32_t size_LoadOrderGroupKey_1
= 0;
2605 uint32_t length_LoadOrderGroupKey_1
= 0;
2606 uint32_t _ptr_TagId
;
2607 uint32_t _ptr_dependencies
;
2608 uint32_t size_dependencies_1
= 0;
2609 uint32_t _ptr_service_start_name
;
2610 uint32_t size_service_start_name_1
= 0;
2611 uint32_t length_service_start_name_1
= 0;
2612 uint32_t _ptr_password
;
2613 uint32_t size_password_1
= 0;
2614 TALLOC_CTX
*_mem_save_scmanager_handle_0
;
2615 TALLOC_CTX
*_mem_save_DisplayName_0
;
2616 TALLOC_CTX
*_mem_save_LoadOrderGroupKey_0
;
2617 TALLOC_CTX
*_mem_save_TagId_0
;
2618 TALLOC_CTX
*_mem_save_dependencies_0
;
2619 TALLOC_CTX
*_mem_save_service_start_name_0
;
2620 TALLOC_CTX
*_mem_save_password_0
;
2621 TALLOC_CTX
*_mem_save_handle_0
;
2622 if (flags
& NDR_IN
) {
2623 ZERO_STRUCT(r
->out
);
2625 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
2626 NDR_PULL_ALLOC(ndr
, r
->in
.scmanager_handle
);
2628 _mem_save_scmanager_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
2629 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.scmanager_handle
, LIBNDR_FLAG_REF_ALLOC
);
2630 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
, r
->in
.scmanager_handle
));
2631 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_scmanager_handle_0
, LIBNDR_FLAG_REF_ALLOC
);
2632 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->in
.ServiceName
));
2633 NDR_CHECK(ndr_pull_array_length(ndr
, &r
->in
.ServiceName
));
2634 size_ServiceName_0
= ndr_get_array_size(ndr
, &r
->in
.ServiceName
);
2635 length_ServiceName_0
= ndr_get_array_length(ndr
, &r
->in
.ServiceName
);
2636 if (length_ServiceName_0
> size_ServiceName_0
) {
2637 return ndr_pull_error(ndr
, NDR_ERR_ARRAY_SIZE
, "Bad array size %u should exceed array length %u", size_ServiceName_0
, length_ServiceName_0
);
2639 NDR_CHECK(ndr_check_string_terminator(ndr
, length_ServiceName_0
, sizeof(uint16_t)));
2640 NDR_CHECK(ndr_pull_charset(ndr
, NDR_SCALARS
, &r
->in
.ServiceName
, length_ServiceName_0
, sizeof(uint16_t), CH_UTF16
));
2641 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_DisplayName
));
2642 if (_ptr_DisplayName
) {
2643 NDR_PULL_ALLOC(ndr
, r
->in
.DisplayName
);
2645 r
->in
.DisplayName
= NULL
;
2647 if (r
->in
.DisplayName
) {
2648 _mem_save_DisplayName_0
= NDR_PULL_GET_MEM_CTX(ndr
);
2649 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.DisplayName
, 0);
2650 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->in
.DisplayName
));
2651 NDR_CHECK(ndr_pull_array_length(ndr
, &r
->in
.DisplayName
));
2652 size_DisplayName_1
= ndr_get_array_size(ndr
, &r
->in
.DisplayName
);
2653 length_DisplayName_1
= ndr_get_array_length(ndr
, &r
->in
.DisplayName
);
2654 if (length_DisplayName_1
> size_DisplayName_1
) {
2655 return ndr_pull_error(ndr
, NDR_ERR_ARRAY_SIZE
, "Bad array size %u should exceed array length %u", size_DisplayName_1
, length_DisplayName_1
);
2657 NDR_CHECK(ndr_check_string_terminator(ndr
, length_DisplayName_1
, sizeof(uint16_t)));
2658 NDR_CHECK(ndr_pull_charset(ndr
, NDR_SCALARS
, &r
->in
.DisplayName
, length_DisplayName_1
, sizeof(uint16_t), CH_UTF16
));
2659 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_DisplayName_0
, 0);
2661 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.desired_access
));
2662 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.type
));
2663 NDR_CHECK(ndr_pull_svcctl_StartType(ndr
, NDR_SCALARS
, &r
->in
.start_type
));
2664 NDR_CHECK(ndr_pull_svcctl_ErrorControl(ndr
, NDR_SCALARS
, &r
->in
.error_control
));
2665 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->in
.binary_path
));
2666 NDR_CHECK(ndr_pull_array_length(ndr
, &r
->in
.binary_path
));
2667 size_binary_path_0
= ndr_get_array_size(ndr
, &r
->in
.binary_path
);
2668 length_binary_path_0
= ndr_get_array_length(ndr
, &r
->in
.binary_path
);
2669 if (length_binary_path_0
> size_binary_path_0
) {
2670 return ndr_pull_error(ndr
, NDR_ERR_ARRAY_SIZE
, "Bad array size %u should exceed array length %u", size_binary_path_0
, length_binary_path_0
);
2672 NDR_CHECK(ndr_check_string_terminator(ndr
, length_binary_path_0
, sizeof(uint16_t)));
2673 NDR_CHECK(ndr_pull_charset(ndr
, NDR_SCALARS
, &r
->in
.binary_path
, length_binary_path_0
, sizeof(uint16_t), CH_UTF16
));
2674 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_LoadOrderGroupKey
));
2675 if (_ptr_LoadOrderGroupKey
) {
2676 NDR_PULL_ALLOC(ndr
, r
->in
.LoadOrderGroupKey
);
2678 r
->in
.LoadOrderGroupKey
= NULL
;
2680 if (r
->in
.LoadOrderGroupKey
) {
2681 _mem_save_LoadOrderGroupKey_0
= NDR_PULL_GET_MEM_CTX(ndr
);
2682 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.LoadOrderGroupKey
, 0);
2683 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->in
.LoadOrderGroupKey
));
2684 NDR_CHECK(ndr_pull_array_length(ndr
, &r
->in
.LoadOrderGroupKey
));
2685 size_LoadOrderGroupKey_1
= ndr_get_array_size(ndr
, &r
->in
.LoadOrderGroupKey
);
2686 length_LoadOrderGroupKey_1
= ndr_get_array_length(ndr
, &r
->in
.LoadOrderGroupKey
);
2687 if (length_LoadOrderGroupKey_1
> size_LoadOrderGroupKey_1
) {
2688 return ndr_pull_error(ndr
, NDR_ERR_ARRAY_SIZE
, "Bad array size %u should exceed array length %u", size_LoadOrderGroupKey_1
, length_LoadOrderGroupKey_1
);
2690 NDR_CHECK(ndr_check_string_terminator(ndr
, length_LoadOrderGroupKey_1
, sizeof(uint16_t)));
2691 NDR_CHECK(ndr_pull_charset(ndr
, NDR_SCALARS
, &r
->in
.LoadOrderGroupKey
, length_LoadOrderGroupKey_1
, sizeof(uint16_t), CH_UTF16
));
2692 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_LoadOrderGroupKey_0
, 0);
2694 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_TagId
));
2696 NDR_PULL_ALLOC(ndr
, r
->in
.TagId
);
2701 _mem_save_TagId_0
= NDR_PULL_GET_MEM_CTX(ndr
);
2702 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.TagId
, 0);
2703 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, r
->in
.TagId
));
2704 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_TagId_0
, 0);
2706 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_dependencies
));
2707 if (_ptr_dependencies
) {
2708 NDR_PULL_ALLOC(ndr
, r
->in
.dependencies
);
2710 r
->in
.dependencies
= NULL
;
2712 if (r
->in
.dependencies
) {
2713 _mem_save_dependencies_0
= NDR_PULL_GET_MEM_CTX(ndr
);
2714 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.dependencies
, 0);
2715 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->in
.dependencies
));
2716 size_dependencies_1
= ndr_get_array_size(ndr
, &r
->in
.dependencies
);
2717 NDR_PULL_ALLOC_N(ndr
, r
->in
.dependencies
, size_dependencies_1
);
2718 NDR_CHECK(ndr_pull_array_uint8(ndr
, NDR_SCALARS
, r
->in
.dependencies
, size_dependencies_1
));
2719 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_dependencies_0
, 0);
2721 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.dependencies_size
));
2722 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_service_start_name
));
2723 if (_ptr_service_start_name
) {
2724 NDR_PULL_ALLOC(ndr
, r
->in
.service_start_name
);
2726 r
->in
.service_start_name
= NULL
;
2728 if (r
->in
.service_start_name
) {
2729 _mem_save_service_start_name_0
= NDR_PULL_GET_MEM_CTX(ndr
);
2730 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.service_start_name
, 0);
2731 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->in
.service_start_name
));
2732 NDR_CHECK(ndr_pull_array_length(ndr
, &r
->in
.service_start_name
));
2733 size_service_start_name_1
= ndr_get_array_size(ndr
, &r
->in
.service_start_name
);
2734 length_service_start_name_1
= ndr_get_array_length(ndr
, &r
->in
.service_start_name
);
2735 if (length_service_start_name_1
> size_service_start_name_1
) {
2736 return ndr_pull_error(ndr
, NDR_ERR_ARRAY_SIZE
, "Bad array size %u should exceed array length %u", size_service_start_name_1
, length_service_start_name_1
);
2738 NDR_CHECK(ndr_check_string_terminator(ndr
, length_service_start_name_1
, sizeof(uint16_t)));
2739 NDR_CHECK(ndr_pull_charset(ndr
, NDR_SCALARS
, &r
->in
.service_start_name
, length_service_start_name_1
, sizeof(uint16_t), CH_UTF16
));
2740 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_service_start_name_0
, 0);
2742 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_password
));
2743 if (_ptr_password
) {
2744 NDR_PULL_ALLOC(ndr
, r
->in
.password
);
2746 r
->in
.password
= NULL
;
2748 if (r
->in
.password
) {
2749 _mem_save_password_0
= NDR_PULL_GET_MEM_CTX(ndr
);
2750 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.password
, 0);
2751 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->in
.password
));
2752 size_password_1
= ndr_get_array_size(ndr
, &r
->in
.password
);
2753 NDR_PULL_ALLOC_N(ndr
, r
->in
.password
, size_password_1
);
2754 NDR_CHECK(ndr_pull_array_uint8(ndr
, NDR_SCALARS
, r
->in
.password
, size_password_1
));
2755 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_password_0
, 0);
2757 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.password_size
));
2758 NDR_PULL_ALLOC(ndr
, r
->out
.handle
);
2759 ZERO_STRUCTP(r
->out
.handle
);
2760 if (r
->in
.dependencies
) {
2761 NDR_CHECK(ndr_check_array_size(ndr
, (void*)&r
->in
.dependencies
, r
->in
.dependencies_size
));
2763 if (r
->in
.password
) {
2764 NDR_CHECK(ndr_check_array_size(ndr
, (void*)&r
->in
.password
, r
->in
.password_size
));
2767 if (flags
& NDR_OUT
) {
2768 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_TagId
));
2770 NDR_PULL_ALLOC(ndr
, r
->out
.TagId
);
2772 r
->out
.TagId
= NULL
;
2775 _mem_save_TagId_0
= NDR_PULL_GET_MEM_CTX(ndr
);
2776 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.TagId
, 0);
2777 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, r
->out
.TagId
));
2778 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_TagId_0
, 0);
2780 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
2781 NDR_PULL_ALLOC(ndr
, r
->out
.handle
);
2783 _mem_save_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
2784 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.handle
, LIBNDR_FLAG_REF_ALLOC
);
2785 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
, r
->out
.handle
));
2786 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_handle_0
, LIBNDR_FLAG_REF_ALLOC
);
2787 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
2789 return NDR_ERR_SUCCESS
;
2792 _PUBLIC_
void ndr_print_svcctl_CreateServiceW(struct ndr_print
*ndr
, const char *name
, int flags
, const struct svcctl_CreateServiceW
*r
)
2794 ndr_print_struct(ndr
, name
, "svcctl_CreateServiceW");
2796 if (flags
& NDR_SET_VALUES
) {
2797 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
2799 if (flags
& NDR_IN
) {
2800 ndr_print_struct(ndr
, "in", "svcctl_CreateServiceW");
2802 ndr_print_ptr(ndr
, "scmanager_handle", r
->in
.scmanager_handle
);
2804 ndr_print_policy_handle(ndr
, "scmanager_handle", r
->in
.scmanager_handle
);
2806 ndr_print_string(ndr
, "ServiceName", r
->in
.ServiceName
);
2807 ndr_print_ptr(ndr
, "DisplayName", r
->in
.DisplayName
);
2809 if (r
->in
.DisplayName
) {
2810 ndr_print_string(ndr
, "DisplayName", r
->in
.DisplayName
);
2813 ndr_print_uint32(ndr
, "desired_access", r
->in
.desired_access
);
2814 ndr_print_uint32(ndr
, "type", r
->in
.type
);
2815 ndr_print_svcctl_StartType(ndr
, "start_type", r
->in
.start_type
);
2816 ndr_print_svcctl_ErrorControl(ndr
, "error_control", r
->in
.error_control
);
2817 ndr_print_string(ndr
, "binary_path", r
->in
.binary_path
);
2818 ndr_print_ptr(ndr
, "LoadOrderGroupKey", r
->in
.LoadOrderGroupKey
);
2820 if (r
->in
.LoadOrderGroupKey
) {
2821 ndr_print_string(ndr
, "LoadOrderGroupKey", r
->in
.LoadOrderGroupKey
);
2824 ndr_print_ptr(ndr
, "TagId", r
->in
.TagId
);
2827 ndr_print_uint32(ndr
, "TagId", *r
->in
.TagId
);
2830 ndr_print_ptr(ndr
, "dependencies", r
->in
.dependencies
);
2832 if (r
->in
.dependencies
) {
2833 ndr_print_array_uint8(ndr
, "dependencies", r
->in
.dependencies
, r
->in
.dependencies_size
);
2836 ndr_print_uint32(ndr
, "dependencies_size", r
->in
.dependencies_size
);
2837 ndr_print_ptr(ndr
, "service_start_name", r
->in
.service_start_name
);
2839 if (r
->in
.service_start_name
) {
2840 ndr_print_string(ndr
, "service_start_name", r
->in
.service_start_name
);
2843 ndr_print_ptr(ndr
, "password", r
->in
.password
);
2845 if (r
->in
.password
) {
2846 ndr_print_array_uint8(ndr
, "password", r
->in
.password
, r
->in
.password_size
);
2849 ndr_print_uint32(ndr
, "password_size", r
->in
.password_size
);
2852 if (flags
& NDR_OUT
) {
2853 ndr_print_struct(ndr
, "out", "svcctl_CreateServiceW");
2855 ndr_print_ptr(ndr
, "TagId", r
->out
.TagId
);
2858 ndr_print_uint32(ndr
, "TagId", *r
->out
.TagId
);
2861 ndr_print_ptr(ndr
, "handle", r
->out
.handle
);
2863 ndr_print_policy_handle(ndr
, "handle", r
->out
.handle
);
2865 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
2871 static enum ndr_err_code
ndr_push_svcctl_EnumDependentServicesW(struct ndr_push
*ndr
, int flags
, const struct svcctl_EnumDependentServicesW
*r
)
2873 if (flags
& NDR_IN
) {
2874 if (r
->in
.service
== NULL
) {
2875 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
2877 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
, r
->in
.service
));
2878 NDR_CHECK(ndr_push_svcctl_ServiceState(ndr
, NDR_SCALARS
, r
->in
.state
));
2879 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.offered
));
2881 if (flags
& NDR_OUT
) {
2882 if (r
->out
.service_status
== NULL
) {
2883 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
2885 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.offered
));
2886 NDR_CHECK(ndr_push_array_uint8(ndr
, NDR_SCALARS
, r
->out
.service_status
, r
->in
.offered
));
2887 if (r
->out
.needed
== NULL
) {
2888 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
2890 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, *r
->out
.needed
));
2891 if (r
->out
.services_returned
== NULL
) {
2892 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
2894 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, *r
->out
.services_returned
));
2895 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
2897 return NDR_ERR_SUCCESS
;
2900 static enum ndr_err_code
ndr_pull_svcctl_EnumDependentServicesW(struct ndr_pull
*ndr
, int flags
, struct svcctl_EnumDependentServicesW
*r
)
2902 uint32_t size_service_status_1
= 0;
2903 TALLOC_CTX
*_mem_save_service_0
;
2904 TALLOC_CTX
*_mem_save_needed_0
;
2905 TALLOC_CTX
*_mem_save_services_returned_0
;
2906 if (flags
& NDR_IN
) {
2907 ZERO_STRUCT(r
->out
);
2909 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
2910 NDR_PULL_ALLOC(ndr
, r
->in
.service
);
2912 _mem_save_service_0
= NDR_PULL_GET_MEM_CTX(ndr
);
2913 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.service
, LIBNDR_FLAG_REF_ALLOC
);
2914 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
, r
->in
.service
));
2915 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_service_0
, LIBNDR_FLAG_REF_ALLOC
);
2916 NDR_CHECK(ndr_pull_svcctl_ServiceState(ndr
, NDR_SCALARS
, &r
->in
.state
));
2917 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.offered
));
2918 if (r
->in
.offered
> 0x40000) {
2919 return ndr_pull_error(ndr
, NDR_ERR_RANGE
, "value out of range");
2921 NDR_PULL_ALLOC_N(ndr
, r
->out
.service_status
, r
->in
.offered
);
2922 memset(r
->out
.service_status
, 0, (r
->in
.offered
) * sizeof(*r
->out
.service_status
));
2923 NDR_PULL_ALLOC(ndr
, r
->out
.needed
);
2924 ZERO_STRUCTP(r
->out
.needed
);
2925 NDR_PULL_ALLOC(ndr
, r
->out
.services_returned
);
2926 ZERO_STRUCTP(r
->out
.services_returned
);
2928 if (flags
& NDR_OUT
) {
2929 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->out
.service_status
));
2930 size_service_status_1
= ndr_get_array_size(ndr
, &r
->out
.service_status
);
2931 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
2932 NDR_PULL_ALLOC_N(ndr
, r
->out
.service_status
, size_service_status_1
);
2934 NDR_CHECK(ndr_pull_array_uint8(ndr
, NDR_SCALARS
, r
->out
.service_status
, size_service_status_1
));
2935 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
2936 NDR_PULL_ALLOC(ndr
, r
->out
.needed
);
2938 _mem_save_needed_0
= NDR_PULL_GET_MEM_CTX(ndr
);
2939 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.needed
, LIBNDR_FLAG_REF_ALLOC
);
2940 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, r
->out
.needed
));
2941 if (*r
->out
.needed
> 0x40000) {
2942 return ndr_pull_error(ndr
, NDR_ERR_RANGE
, "value out of range");
2944 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_needed_0
, LIBNDR_FLAG_REF_ALLOC
);
2945 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
2946 NDR_PULL_ALLOC(ndr
, r
->out
.services_returned
);
2948 _mem_save_services_returned_0
= NDR_PULL_GET_MEM_CTX(ndr
);
2949 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.services_returned
, LIBNDR_FLAG_REF_ALLOC
);
2950 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, r
->out
.services_returned
));
2951 if (*r
->out
.services_returned
> 0x40000) {
2952 return ndr_pull_error(ndr
, NDR_ERR_RANGE
, "value out of range");
2954 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_services_returned_0
, LIBNDR_FLAG_REF_ALLOC
);
2955 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
2956 if (r
->out
.service_status
) {
2957 NDR_CHECK(ndr_check_array_size(ndr
, (void*)&r
->out
.service_status
, r
->in
.offered
));
2960 return NDR_ERR_SUCCESS
;
2963 _PUBLIC_
void ndr_print_svcctl_EnumDependentServicesW(struct ndr_print
*ndr
, const char *name
, int flags
, const struct svcctl_EnumDependentServicesW
*r
)
2965 ndr_print_struct(ndr
, name
, "svcctl_EnumDependentServicesW");
2967 if (flags
& NDR_SET_VALUES
) {
2968 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
2970 if (flags
& NDR_IN
) {
2971 ndr_print_struct(ndr
, "in", "svcctl_EnumDependentServicesW");
2973 ndr_print_ptr(ndr
, "service", r
->in
.service
);
2975 ndr_print_policy_handle(ndr
, "service", r
->in
.service
);
2977 ndr_print_svcctl_ServiceState(ndr
, "state", r
->in
.state
);
2978 ndr_print_uint32(ndr
, "offered", r
->in
.offered
);
2981 if (flags
& NDR_OUT
) {
2982 ndr_print_struct(ndr
, "out", "svcctl_EnumDependentServicesW");
2984 ndr_print_ptr(ndr
, "service_status", r
->out
.service_status
);
2986 ndr_print_array_uint8(ndr
, "service_status", r
->out
.service_status
, r
->in
.offered
);
2988 ndr_print_ptr(ndr
, "needed", r
->out
.needed
);
2990 ndr_print_uint32(ndr
, "needed", *r
->out
.needed
);
2992 ndr_print_ptr(ndr
, "services_returned", r
->out
.services_returned
);
2994 ndr_print_uint32(ndr
, "services_returned", *r
->out
.services_returned
);
2996 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
3002 static enum ndr_err_code
ndr_push_svcctl_EnumServicesStatusW(struct ndr_push
*ndr
, int flags
, const struct svcctl_EnumServicesStatusW
*r
)
3004 if (flags
& NDR_IN
) {
3005 if (r
->in
.handle
== NULL
) {
3006 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
3008 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
, r
->in
.handle
));
3009 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.type
));
3010 NDR_CHECK(ndr_push_svcctl_ServiceState(ndr
, NDR_SCALARS
, r
->in
.state
));
3011 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.offered
));
3012 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.resume_handle
));
3013 if (r
->in
.resume_handle
) {
3014 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, *r
->in
.resume_handle
));
3017 if (flags
& NDR_OUT
) {
3018 if (r
->out
.service
== NULL
) {
3019 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
3021 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.offered
));
3022 NDR_CHECK(ndr_push_array_uint8(ndr
, NDR_SCALARS
, r
->out
.service
, r
->in
.offered
));
3023 if (r
->out
.needed
== NULL
) {
3024 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
3026 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, *r
->out
.needed
));
3027 if (r
->out
.services_returned
== NULL
) {
3028 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
3030 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, *r
->out
.services_returned
));
3031 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->out
.resume_handle
));
3032 if (r
->out
.resume_handle
) {
3033 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, *r
->out
.resume_handle
));
3035 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
3037 return NDR_ERR_SUCCESS
;
3040 static enum ndr_err_code
ndr_pull_svcctl_EnumServicesStatusW(struct ndr_pull
*ndr
, int flags
, struct svcctl_EnumServicesStatusW
*r
)
3042 uint32_t size_service_1
= 0;
3043 uint32_t _ptr_resume_handle
;
3044 TALLOC_CTX
*_mem_save_handle_0
;
3045 TALLOC_CTX
*_mem_save_needed_0
;
3046 TALLOC_CTX
*_mem_save_services_returned_0
;
3047 TALLOC_CTX
*_mem_save_resume_handle_0
;
3048 if (flags
& NDR_IN
) {
3049 ZERO_STRUCT(r
->out
);
3051 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
3052 NDR_PULL_ALLOC(ndr
, r
->in
.handle
);
3054 _mem_save_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
3055 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.handle
, LIBNDR_FLAG_REF_ALLOC
);
3056 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
, r
->in
.handle
));
3057 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_handle_0
, LIBNDR_FLAG_REF_ALLOC
);
3058 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.type
));
3059 NDR_CHECK(ndr_pull_svcctl_ServiceState(ndr
, NDR_SCALARS
, &r
->in
.state
));
3060 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.offered
));
3061 if (r
->in
.offered
> 0x40000) {
3062 return ndr_pull_error(ndr
, NDR_ERR_RANGE
, "value out of range");
3064 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_resume_handle
));
3065 if (_ptr_resume_handle
) {
3066 NDR_PULL_ALLOC(ndr
, r
->in
.resume_handle
);
3068 r
->in
.resume_handle
= NULL
;
3070 if (r
->in
.resume_handle
) {
3071 _mem_save_resume_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
3072 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.resume_handle
, 0);
3073 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, r
->in
.resume_handle
));
3074 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_resume_handle_0
, 0);
3076 NDR_PULL_ALLOC_N(ndr
, r
->out
.service
, r
->in
.offered
);
3077 memset(r
->out
.service
, 0, (r
->in
.offered
) * sizeof(*r
->out
.service
));
3078 NDR_PULL_ALLOC(ndr
, r
->out
.needed
);
3079 ZERO_STRUCTP(r
->out
.needed
);
3080 NDR_PULL_ALLOC(ndr
, r
->out
.services_returned
);
3081 ZERO_STRUCTP(r
->out
.services_returned
);
3083 if (flags
& NDR_OUT
) {
3084 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->out
.service
));
3085 size_service_1
= ndr_get_array_size(ndr
, &r
->out
.service
);
3086 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
3087 NDR_PULL_ALLOC_N(ndr
, r
->out
.service
, size_service_1
);
3089 NDR_CHECK(ndr_pull_array_uint8(ndr
, NDR_SCALARS
, r
->out
.service
, size_service_1
));
3090 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
3091 NDR_PULL_ALLOC(ndr
, r
->out
.needed
);
3093 _mem_save_needed_0
= NDR_PULL_GET_MEM_CTX(ndr
);
3094 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.needed
, LIBNDR_FLAG_REF_ALLOC
);
3095 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, r
->out
.needed
));
3096 if (*r
->out
.needed
> 0x40000) {
3097 return ndr_pull_error(ndr
, NDR_ERR_RANGE
, "value out of range");
3099 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_needed_0
, LIBNDR_FLAG_REF_ALLOC
);
3100 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
3101 NDR_PULL_ALLOC(ndr
, r
->out
.services_returned
);
3103 _mem_save_services_returned_0
= NDR_PULL_GET_MEM_CTX(ndr
);
3104 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.services_returned
, LIBNDR_FLAG_REF_ALLOC
);
3105 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, r
->out
.services_returned
));
3106 if (*r
->out
.services_returned
> 0x40000) {
3107 return ndr_pull_error(ndr
, NDR_ERR_RANGE
, "value out of range");
3109 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_services_returned_0
, LIBNDR_FLAG_REF_ALLOC
);
3110 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_resume_handle
));
3111 if (_ptr_resume_handle
) {
3112 NDR_PULL_ALLOC(ndr
, r
->out
.resume_handle
);
3114 r
->out
.resume_handle
= NULL
;
3116 if (r
->out
.resume_handle
) {
3117 _mem_save_resume_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
3118 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.resume_handle
, 0);
3119 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, r
->out
.resume_handle
));
3120 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_resume_handle_0
, 0);
3122 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
3123 if (r
->out
.service
) {
3124 NDR_CHECK(ndr_check_array_size(ndr
, (void*)&r
->out
.service
, r
->in
.offered
));
3127 return NDR_ERR_SUCCESS
;
3130 _PUBLIC_
void ndr_print_svcctl_EnumServicesStatusW(struct ndr_print
*ndr
, const char *name
, int flags
, const struct svcctl_EnumServicesStatusW
*r
)
3132 ndr_print_struct(ndr
, name
, "svcctl_EnumServicesStatusW");
3134 if (flags
& NDR_SET_VALUES
) {
3135 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
3137 if (flags
& NDR_IN
) {
3138 ndr_print_struct(ndr
, "in", "svcctl_EnumServicesStatusW");
3140 ndr_print_ptr(ndr
, "handle", r
->in
.handle
);
3142 ndr_print_policy_handle(ndr
, "handle", r
->in
.handle
);
3144 ndr_print_uint32(ndr
, "type", r
->in
.type
);
3145 ndr_print_svcctl_ServiceState(ndr
, "state", r
->in
.state
);
3146 ndr_print_uint32(ndr
, "offered", r
->in
.offered
);
3147 ndr_print_ptr(ndr
, "resume_handle", r
->in
.resume_handle
);
3149 if (r
->in
.resume_handle
) {
3150 ndr_print_uint32(ndr
, "resume_handle", *r
->in
.resume_handle
);
3155 if (flags
& NDR_OUT
) {
3156 ndr_print_struct(ndr
, "out", "svcctl_EnumServicesStatusW");
3158 ndr_print_ptr(ndr
, "service", r
->out
.service
);
3160 ndr_print_array_uint8(ndr
, "service", r
->out
.service
, r
->in
.offered
);
3162 ndr_print_ptr(ndr
, "needed", r
->out
.needed
);
3164 ndr_print_uint32(ndr
, "needed", *r
->out
.needed
);
3166 ndr_print_ptr(ndr
, "services_returned", r
->out
.services_returned
);
3168 ndr_print_uint32(ndr
, "services_returned", *r
->out
.services_returned
);
3170 ndr_print_ptr(ndr
, "resume_handle", r
->out
.resume_handle
);
3172 if (r
->out
.resume_handle
) {
3173 ndr_print_uint32(ndr
, "resume_handle", *r
->out
.resume_handle
);
3176 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
3182 static enum ndr_err_code
ndr_push_svcctl_OpenSCManagerW(struct ndr_push
*ndr
, int flags
, const struct svcctl_OpenSCManagerW
*r
)
3184 if (flags
& NDR_IN
) {
3185 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.MachineName
));
3186 if (r
->in
.MachineName
) {
3187 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.MachineName
, CH_UTF16
)));
3188 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, 0));
3189 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.MachineName
, CH_UTF16
)));
3190 NDR_CHECK(ndr_push_charset(ndr
, NDR_SCALARS
, r
->in
.MachineName
, ndr_charset_length(r
->in
.MachineName
, CH_UTF16
), sizeof(uint16_t), CH_UTF16
));
3192 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.DatabaseName
));
3193 if (r
->in
.DatabaseName
) {
3194 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.DatabaseName
, CH_UTF16
)));
3195 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, 0));
3196 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.DatabaseName
, CH_UTF16
)));
3197 NDR_CHECK(ndr_push_charset(ndr
, NDR_SCALARS
, r
->in
.DatabaseName
, ndr_charset_length(r
->in
.DatabaseName
, CH_UTF16
), sizeof(uint16_t), CH_UTF16
));
3199 NDR_CHECK(ndr_push_svcctl_MgrAccessMask(ndr
, NDR_SCALARS
, r
->in
.access_mask
));
3201 if (flags
& NDR_OUT
) {
3202 if (r
->out
.handle
== NULL
) {
3203 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
3205 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
, r
->out
.handle
));
3206 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
3208 return NDR_ERR_SUCCESS
;
3211 static enum ndr_err_code
ndr_pull_svcctl_OpenSCManagerW(struct ndr_pull
*ndr
, int flags
, struct svcctl_OpenSCManagerW
*r
)
3213 uint32_t _ptr_MachineName
;
3214 uint32_t size_MachineName_1
= 0;
3215 uint32_t length_MachineName_1
= 0;
3216 uint32_t _ptr_DatabaseName
;
3217 uint32_t size_DatabaseName_1
= 0;
3218 uint32_t length_DatabaseName_1
= 0;
3219 TALLOC_CTX
*_mem_save_MachineName_0
;
3220 TALLOC_CTX
*_mem_save_DatabaseName_0
;
3221 TALLOC_CTX
*_mem_save_handle_0
;
3222 if (flags
& NDR_IN
) {
3223 ZERO_STRUCT(r
->out
);
3225 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_MachineName
));
3226 if (_ptr_MachineName
) {
3227 NDR_PULL_ALLOC(ndr
, r
->in
.MachineName
);
3229 r
->in
.MachineName
= NULL
;
3231 if (r
->in
.MachineName
) {
3232 _mem_save_MachineName_0
= NDR_PULL_GET_MEM_CTX(ndr
);
3233 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.MachineName
, 0);
3234 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->in
.MachineName
));
3235 NDR_CHECK(ndr_pull_array_length(ndr
, &r
->in
.MachineName
));
3236 size_MachineName_1
= ndr_get_array_size(ndr
, &r
->in
.MachineName
);
3237 length_MachineName_1
= ndr_get_array_length(ndr
, &r
->in
.MachineName
);
3238 if (length_MachineName_1
> size_MachineName_1
) {
3239 return ndr_pull_error(ndr
, NDR_ERR_ARRAY_SIZE
, "Bad array size %u should exceed array length %u", size_MachineName_1
, length_MachineName_1
);
3241 NDR_CHECK(ndr_check_string_terminator(ndr
, length_MachineName_1
, sizeof(uint16_t)));
3242 NDR_CHECK(ndr_pull_charset(ndr
, NDR_SCALARS
, &r
->in
.MachineName
, length_MachineName_1
, sizeof(uint16_t), CH_UTF16
));
3243 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_MachineName_0
, 0);
3245 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_DatabaseName
));
3246 if (_ptr_DatabaseName
) {
3247 NDR_PULL_ALLOC(ndr
, r
->in
.DatabaseName
);
3249 r
->in
.DatabaseName
= NULL
;
3251 if (r
->in
.DatabaseName
) {
3252 _mem_save_DatabaseName_0
= NDR_PULL_GET_MEM_CTX(ndr
);
3253 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.DatabaseName
, 0);
3254 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->in
.DatabaseName
));
3255 NDR_CHECK(ndr_pull_array_length(ndr
, &r
->in
.DatabaseName
));
3256 size_DatabaseName_1
= ndr_get_array_size(ndr
, &r
->in
.DatabaseName
);
3257 length_DatabaseName_1
= ndr_get_array_length(ndr
, &r
->in
.DatabaseName
);
3258 if (length_DatabaseName_1
> size_DatabaseName_1
) {
3259 return ndr_pull_error(ndr
, NDR_ERR_ARRAY_SIZE
, "Bad array size %u should exceed array length %u", size_DatabaseName_1
, length_DatabaseName_1
);
3261 NDR_CHECK(ndr_check_string_terminator(ndr
, length_DatabaseName_1
, sizeof(uint16_t)));
3262 NDR_CHECK(ndr_pull_charset(ndr
, NDR_SCALARS
, &r
->in
.DatabaseName
, length_DatabaseName_1
, sizeof(uint16_t), CH_UTF16
));
3263 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_DatabaseName_0
, 0);
3265 NDR_CHECK(ndr_pull_svcctl_MgrAccessMask(ndr
, NDR_SCALARS
, &r
->in
.access_mask
));
3266 NDR_PULL_ALLOC(ndr
, r
->out
.handle
);
3267 ZERO_STRUCTP(r
->out
.handle
);
3269 if (flags
& NDR_OUT
) {
3270 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
3271 NDR_PULL_ALLOC(ndr
, r
->out
.handle
);
3273 _mem_save_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
3274 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.handle
, LIBNDR_FLAG_REF_ALLOC
);
3275 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
, r
->out
.handle
));
3276 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_handle_0
, LIBNDR_FLAG_REF_ALLOC
);
3277 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
3279 return NDR_ERR_SUCCESS
;
3282 _PUBLIC_
void ndr_print_svcctl_OpenSCManagerW(struct ndr_print
*ndr
, const char *name
, int flags
, const struct svcctl_OpenSCManagerW
*r
)
3284 ndr_print_struct(ndr
, name
, "svcctl_OpenSCManagerW");
3286 if (flags
& NDR_SET_VALUES
) {
3287 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
3289 if (flags
& NDR_IN
) {
3290 ndr_print_struct(ndr
, "in", "svcctl_OpenSCManagerW");
3292 ndr_print_ptr(ndr
, "MachineName", r
->in
.MachineName
);
3294 if (r
->in
.MachineName
) {
3295 ndr_print_string(ndr
, "MachineName", r
->in
.MachineName
);
3298 ndr_print_ptr(ndr
, "DatabaseName", r
->in
.DatabaseName
);
3300 if (r
->in
.DatabaseName
) {
3301 ndr_print_string(ndr
, "DatabaseName", r
->in
.DatabaseName
);
3304 ndr_print_svcctl_MgrAccessMask(ndr
, "access_mask", r
->in
.access_mask
);
3307 if (flags
& NDR_OUT
) {
3308 ndr_print_struct(ndr
, "out", "svcctl_OpenSCManagerW");
3310 ndr_print_ptr(ndr
, "handle", r
->out
.handle
);
3312 ndr_print_policy_handle(ndr
, "handle", r
->out
.handle
);
3314 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
3320 static enum ndr_err_code
ndr_push_svcctl_OpenServiceW(struct ndr_push
*ndr
, int flags
, const struct svcctl_OpenServiceW
*r
)
3322 if (flags
& NDR_IN
) {
3323 if (r
->in
.scmanager_handle
== NULL
) {
3324 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
3326 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
, r
->in
.scmanager_handle
));
3327 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.ServiceName
, CH_UTF16
)));
3328 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, 0));
3329 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.ServiceName
, CH_UTF16
)));
3330 NDR_CHECK(ndr_push_charset(ndr
, NDR_SCALARS
, r
->in
.ServiceName
, ndr_charset_length(r
->in
.ServiceName
, CH_UTF16
), sizeof(uint16_t), CH_UTF16
));
3331 NDR_CHECK(ndr_push_svcctl_ServiceAccessMask(ndr
, NDR_SCALARS
, r
->in
.access_mask
));
3333 if (flags
& NDR_OUT
) {
3334 if (r
->out
.handle
== NULL
) {
3335 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
3337 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
, r
->out
.handle
));
3338 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
3340 return NDR_ERR_SUCCESS
;
3343 static enum ndr_err_code
ndr_pull_svcctl_OpenServiceW(struct ndr_pull
*ndr
, int flags
, struct svcctl_OpenServiceW
*r
)
3345 uint32_t size_ServiceName_0
= 0;
3346 uint32_t length_ServiceName_0
= 0;
3347 TALLOC_CTX
*_mem_save_scmanager_handle_0
;
3348 TALLOC_CTX
*_mem_save_handle_0
;
3349 if (flags
& NDR_IN
) {
3350 ZERO_STRUCT(r
->out
);
3352 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
3353 NDR_PULL_ALLOC(ndr
, r
->in
.scmanager_handle
);
3355 _mem_save_scmanager_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
3356 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.scmanager_handle
, LIBNDR_FLAG_REF_ALLOC
);
3357 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
, r
->in
.scmanager_handle
));
3358 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_scmanager_handle_0
, LIBNDR_FLAG_REF_ALLOC
);
3359 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->in
.ServiceName
));
3360 NDR_CHECK(ndr_pull_array_length(ndr
, &r
->in
.ServiceName
));
3361 size_ServiceName_0
= ndr_get_array_size(ndr
, &r
->in
.ServiceName
);
3362 length_ServiceName_0
= ndr_get_array_length(ndr
, &r
->in
.ServiceName
);
3363 if (length_ServiceName_0
> size_ServiceName_0
) {
3364 return ndr_pull_error(ndr
, NDR_ERR_ARRAY_SIZE
, "Bad array size %u should exceed array length %u", size_ServiceName_0
, length_ServiceName_0
);
3366 NDR_CHECK(ndr_check_string_terminator(ndr
, length_ServiceName_0
, sizeof(uint16_t)));
3367 NDR_CHECK(ndr_pull_charset(ndr
, NDR_SCALARS
, &r
->in
.ServiceName
, length_ServiceName_0
, sizeof(uint16_t), CH_UTF16
));
3368 NDR_CHECK(ndr_pull_svcctl_ServiceAccessMask(ndr
, NDR_SCALARS
, &r
->in
.access_mask
));
3369 NDR_PULL_ALLOC(ndr
, r
->out
.handle
);
3370 ZERO_STRUCTP(r
->out
.handle
);
3372 if (flags
& NDR_OUT
) {
3373 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
3374 NDR_PULL_ALLOC(ndr
, r
->out
.handle
);
3376 _mem_save_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
3377 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.handle
, LIBNDR_FLAG_REF_ALLOC
);
3378 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
, r
->out
.handle
));
3379 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_handle_0
, LIBNDR_FLAG_REF_ALLOC
);
3380 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
3382 return NDR_ERR_SUCCESS
;
3385 _PUBLIC_
void ndr_print_svcctl_OpenServiceW(struct ndr_print
*ndr
, const char *name
, int flags
, const struct svcctl_OpenServiceW
*r
)
3387 ndr_print_struct(ndr
, name
, "svcctl_OpenServiceW");
3389 if (flags
& NDR_SET_VALUES
) {
3390 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
3392 if (flags
& NDR_IN
) {
3393 ndr_print_struct(ndr
, "in", "svcctl_OpenServiceW");
3395 ndr_print_ptr(ndr
, "scmanager_handle", r
->in
.scmanager_handle
);
3397 ndr_print_policy_handle(ndr
, "scmanager_handle", r
->in
.scmanager_handle
);
3399 ndr_print_string(ndr
, "ServiceName", r
->in
.ServiceName
);
3400 ndr_print_svcctl_ServiceAccessMask(ndr
, "access_mask", r
->in
.access_mask
);
3403 if (flags
& NDR_OUT
) {
3404 ndr_print_struct(ndr
, "out", "svcctl_OpenServiceW");
3406 ndr_print_ptr(ndr
, "handle", r
->out
.handle
);
3408 ndr_print_policy_handle(ndr
, "handle", r
->out
.handle
);
3410 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
3416 static enum ndr_err_code
ndr_push_svcctl_QueryServiceConfigW(struct ndr_push
*ndr
, int flags
, const struct svcctl_QueryServiceConfigW
*r
)
3418 if (flags
& NDR_IN
) {
3419 if (r
->in
.handle
== NULL
) {
3420 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
3422 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
, r
->in
.handle
));
3423 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.offered
));
3425 if (flags
& NDR_OUT
) {
3426 if (r
->out
.query
== NULL
) {
3427 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
3429 NDR_CHECK(ndr_push_QUERY_SERVICE_CONFIG(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->out
.query
));
3430 if (r
->out
.needed
== NULL
) {
3431 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
3433 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, *r
->out
.needed
));
3434 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
3436 return NDR_ERR_SUCCESS
;
3439 static enum ndr_err_code
ndr_pull_svcctl_QueryServiceConfigW(struct ndr_pull
*ndr
, int flags
, struct svcctl_QueryServiceConfigW
*r
)
3441 TALLOC_CTX
*_mem_save_handle_0
;
3442 TALLOC_CTX
*_mem_save_query_0
;
3443 TALLOC_CTX
*_mem_save_needed_0
;
3444 if (flags
& NDR_IN
) {
3445 ZERO_STRUCT(r
->out
);
3447 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
3448 NDR_PULL_ALLOC(ndr
, r
->in
.handle
);
3450 _mem_save_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
3451 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.handle
, LIBNDR_FLAG_REF_ALLOC
);
3452 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
, r
->in
.handle
));
3453 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_handle_0
, LIBNDR_FLAG_REF_ALLOC
);
3454 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.offered
));
3455 if (r
->in
.offered
> 8192) {
3456 return ndr_pull_error(ndr
, NDR_ERR_RANGE
, "value out of range");
3458 NDR_PULL_ALLOC(ndr
, r
->out
.query
);
3459 ZERO_STRUCTP(r
->out
.query
);
3460 NDR_PULL_ALLOC(ndr
, r
->out
.needed
);
3461 ZERO_STRUCTP(r
->out
.needed
);
3463 if (flags
& NDR_OUT
) {
3464 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
3465 NDR_PULL_ALLOC(ndr
, r
->out
.query
);
3467 _mem_save_query_0
= NDR_PULL_GET_MEM_CTX(ndr
);
3468 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.query
, LIBNDR_FLAG_REF_ALLOC
);
3469 NDR_CHECK(ndr_pull_QUERY_SERVICE_CONFIG(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->out
.query
));
3470 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_query_0
, LIBNDR_FLAG_REF_ALLOC
);
3471 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
3472 NDR_PULL_ALLOC(ndr
, r
->out
.needed
);
3474 _mem_save_needed_0
= NDR_PULL_GET_MEM_CTX(ndr
);
3475 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.needed
, LIBNDR_FLAG_REF_ALLOC
);
3476 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, r
->out
.needed
));
3477 if (*r
->out
.needed
> 8192) {
3478 return ndr_pull_error(ndr
, NDR_ERR_RANGE
, "value out of range");
3480 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_needed_0
, LIBNDR_FLAG_REF_ALLOC
);
3481 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
3483 return NDR_ERR_SUCCESS
;
3486 _PUBLIC_
void ndr_print_svcctl_QueryServiceConfigW(struct ndr_print
*ndr
, const char *name
, int flags
, const struct svcctl_QueryServiceConfigW
*r
)
3488 ndr_print_struct(ndr
, name
, "svcctl_QueryServiceConfigW");
3490 if (flags
& NDR_SET_VALUES
) {
3491 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
3493 if (flags
& NDR_IN
) {
3494 ndr_print_struct(ndr
, "in", "svcctl_QueryServiceConfigW");
3496 ndr_print_ptr(ndr
, "handle", r
->in
.handle
);
3498 ndr_print_policy_handle(ndr
, "handle", r
->in
.handle
);
3500 ndr_print_uint32(ndr
, "offered", r
->in
.offered
);
3503 if (flags
& NDR_OUT
) {
3504 ndr_print_struct(ndr
, "out", "svcctl_QueryServiceConfigW");
3506 ndr_print_ptr(ndr
, "query", r
->out
.query
);
3508 ndr_print_QUERY_SERVICE_CONFIG(ndr
, "query", r
->out
.query
);
3510 ndr_print_ptr(ndr
, "needed", r
->out
.needed
);
3512 ndr_print_uint32(ndr
, "needed", *r
->out
.needed
);
3514 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
3520 static enum ndr_err_code
ndr_push_svcctl_QueryServiceLockStatusW(struct ndr_push
*ndr
, int flags
, const struct svcctl_QueryServiceLockStatusW
*r
)
3522 if (flags
& NDR_IN
) {
3523 if (r
->in
.handle
== NULL
) {
3524 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
3526 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
, r
->in
.handle
));
3527 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.offered
));
3529 if (flags
& NDR_OUT
) {
3530 if (r
->out
.lock_status
== NULL
) {
3531 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
3533 NDR_CHECK(ndr_push_SERVICE_LOCK_STATUS(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->out
.lock_status
));
3534 if (r
->out
.needed
== NULL
) {
3535 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
3537 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, *r
->out
.needed
));
3538 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
3540 return NDR_ERR_SUCCESS
;
3543 static enum ndr_err_code
ndr_pull_svcctl_QueryServiceLockStatusW(struct ndr_pull
*ndr
, int flags
, struct svcctl_QueryServiceLockStatusW
*r
)
3545 TALLOC_CTX
*_mem_save_handle_0
;
3546 TALLOC_CTX
*_mem_save_lock_status_0
;
3547 TALLOC_CTX
*_mem_save_needed_0
;
3548 if (flags
& NDR_IN
) {
3549 ZERO_STRUCT(r
->out
);
3551 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
3552 NDR_PULL_ALLOC(ndr
, r
->in
.handle
);
3554 _mem_save_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
3555 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.handle
, LIBNDR_FLAG_REF_ALLOC
);
3556 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
, r
->in
.handle
));
3557 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_handle_0
, LIBNDR_FLAG_REF_ALLOC
);
3558 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.offered
));
3559 NDR_PULL_ALLOC(ndr
, r
->out
.lock_status
);
3560 ZERO_STRUCTP(r
->out
.lock_status
);
3561 NDR_PULL_ALLOC(ndr
, r
->out
.needed
);
3562 ZERO_STRUCTP(r
->out
.needed
);
3564 if (flags
& NDR_OUT
) {
3565 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
3566 NDR_PULL_ALLOC(ndr
, r
->out
.lock_status
);
3568 _mem_save_lock_status_0
= NDR_PULL_GET_MEM_CTX(ndr
);
3569 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.lock_status
, LIBNDR_FLAG_REF_ALLOC
);
3570 NDR_CHECK(ndr_pull_SERVICE_LOCK_STATUS(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->out
.lock_status
));
3571 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_lock_status_0
, LIBNDR_FLAG_REF_ALLOC
);
3572 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
3573 NDR_PULL_ALLOC(ndr
, r
->out
.needed
);
3575 _mem_save_needed_0
= NDR_PULL_GET_MEM_CTX(ndr
);
3576 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.needed
, LIBNDR_FLAG_REF_ALLOC
);
3577 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, r
->out
.needed
));
3578 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_needed_0
, LIBNDR_FLAG_REF_ALLOC
);
3579 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
3581 return NDR_ERR_SUCCESS
;
3584 _PUBLIC_
void ndr_print_svcctl_QueryServiceLockStatusW(struct ndr_print
*ndr
, const char *name
, int flags
, const struct svcctl_QueryServiceLockStatusW
*r
)
3586 ndr_print_struct(ndr
, name
, "svcctl_QueryServiceLockStatusW");
3588 if (flags
& NDR_SET_VALUES
) {
3589 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
3591 if (flags
& NDR_IN
) {
3592 ndr_print_struct(ndr
, "in", "svcctl_QueryServiceLockStatusW");
3594 ndr_print_ptr(ndr
, "handle", r
->in
.handle
);
3596 ndr_print_policy_handle(ndr
, "handle", r
->in
.handle
);
3598 ndr_print_uint32(ndr
, "offered", r
->in
.offered
);
3601 if (flags
& NDR_OUT
) {
3602 ndr_print_struct(ndr
, "out", "svcctl_QueryServiceLockStatusW");
3604 ndr_print_ptr(ndr
, "lock_status", r
->out
.lock_status
);
3606 ndr_print_SERVICE_LOCK_STATUS(ndr
, "lock_status", r
->out
.lock_status
);
3608 ndr_print_ptr(ndr
, "needed", r
->out
.needed
);
3610 ndr_print_uint32(ndr
, "needed", *r
->out
.needed
);
3612 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
3618 static enum ndr_err_code
ndr_push_svcctl_StartServiceW(struct ndr_push
*ndr
, int flags
, const struct svcctl_StartServiceW
*r
)
3620 uint32_t cntr_Arguments_1
;
3621 if (flags
& NDR_IN
) {
3622 if (r
->in
.handle
== NULL
) {
3623 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
3625 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
, r
->in
.handle
));
3626 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.NumArgs
));
3627 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.Arguments
));
3628 if (r
->in
.Arguments
) {
3629 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.NumArgs
));
3630 for (cntr_Arguments_1
= 0; cntr_Arguments_1
< r
->in
.NumArgs
; cntr_Arguments_1
++) {
3631 NDR_CHECK(ndr_push_svcctl_ArgumentString(ndr
, NDR_SCALARS
, &r
->in
.Arguments
[cntr_Arguments_1
]));
3633 for (cntr_Arguments_1
= 0; cntr_Arguments_1
< r
->in
.NumArgs
; cntr_Arguments_1
++) {
3634 NDR_CHECK(ndr_push_svcctl_ArgumentString(ndr
, NDR_BUFFERS
, &r
->in
.Arguments
[cntr_Arguments_1
]));
3638 if (flags
& NDR_OUT
) {
3639 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
3641 return NDR_ERR_SUCCESS
;
3644 static enum ndr_err_code
ndr_pull_svcctl_StartServiceW(struct ndr_pull
*ndr
, int flags
, struct svcctl_StartServiceW
*r
)
3646 uint32_t _ptr_Arguments
;
3647 uint32_t size_Arguments_1
= 0;
3648 uint32_t cntr_Arguments_1
;
3649 TALLOC_CTX
*_mem_save_handle_0
;
3650 TALLOC_CTX
*_mem_save_Arguments_0
;
3651 TALLOC_CTX
*_mem_save_Arguments_1
;
3652 if (flags
& NDR_IN
) {
3653 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
3654 NDR_PULL_ALLOC(ndr
, r
->in
.handle
);
3656 _mem_save_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
3657 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.handle
, LIBNDR_FLAG_REF_ALLOC
);
3658 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
, r
->in
.handle
));
3659 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_handle_0
, LIBNDR_FLAG_REF_ALLOC
);
3660 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.NumArgs
));
3661 if (r
->in
.NumArgs
> SC_MAX_ARGUMENTS
) {
3662 return ndr_pull_error(ndr
, NDR_ERR_RANGE
, "value out of range");
3664 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_Arguments
));
3665 if (_ptr_Arguments
) {
3666 NDR_PULL_ALLOC(ndr
, r
->in
.Arguments
);
3668 r
->in
.Arguments
= NULL
;
3670 if (r
->in
.Arguments
) {
3671 _mem_save_Arguments_0
= NDR_PULL_GET_MEM_CTX(ndr
);
3672 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.Arguments
, 0);
3673 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->in
.Arguments
));
3674 size_Arguments_1
= ndr_get_array_size(ndr
, &r
->in
.Arguments
);
3675 NDR_PULL_ALLOC_N(ndr
, r
->in
.Arguments
, size_Arguments_1
);
3676 _mem_save_Arguments_1
= NDR_PULL_GET_MEM_CTX(ndr
);
3677 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.Arguments
, 0);
3678 for (cntr_Arguments_1
= 0; cntr_Arguments_1
< size_Arguments_1
; cntr_Arguments_1
++) {
3679 NDR_CHECK(ndr_pull_svcctl_ArgumentString(ndr
, NDR_SCALARS
, &r
->in
.Arguments
[cntr_Arguments_1
]));
3681 for (cntr_Arguments_1
= 0; cntr_Arguments_1
< size_Arguments_1
; cntr_Arguments_1
++) {
3682 NDR_CHECK(ndr_pull_svcctl_ArgumentString(ndr
, NDR_BUFFERS
, &r
->in
.Arguments
[cntr_Arguments_1
]));
3684 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_Arguments_1
, 0);
3685 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_Arguments_0
, 0);
3687 if (r
->in
.Arguments
) {
3688 NDR_CHECK(ndr_check_array_size(ndr
, (void*)&r
->in
.Arguments
, r
->in
.NumArgs
));
3691 if (flags
& NDR_OUT
) {
3692 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
3694 return NDR_ERR_SUCCESS
;
3697 _PUBLIC_
void ndr_print_svcctl_StartServiceW(struct ndr_print
*ndr
, const char *name
, int flags
, const struct svcctl_StartServiceW
*r
)
3699 uint32_t cntr_Arguments_1
;
3700 ndr_print_struct(ndr
, name
, "svcctl_StartServiceW");
3702 if (flags
& NDR_SET_VALUES
) {
3703 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
3705 if (flags
& NDR_IN
) {
3706 ndr_print_struct(ndr
, "in", "svcctl_StartServiceW");
3708 ndr_print_ptr(ndr
, "handle", r
->in
.handle
);
3710 ndr_print_policy_handle(ndr
, "handle", r
->in
.handle
);
3712 ndr_print_uint32(ndr
, "NumArgs", r
->in
.NumArgs
);
3713 ndr_print_ptr(ndr
, "Arguments", r
->in
.Arguments
);
3715 if (r
->in
.Arguments
) {
3716 ndr
->print(ndr
, "%s: ARRAY(%d)", "Arguments", (int)r
->in
.NumArgs
);
3718 for (cntr_Arguments_1
=0;cntr_Arguments_1
<r
->in
.NumArgs
;cntr_Arguments_1
++) {
3720 if (asprintf(&idx_1
, "[%d]", cntr_Arguments_1
) != -1) {
3721 ndr_print_svcctl_ArgumentString(ndr
, "Arguments", &r
->in
.Arguments
[cntr_Arguments_1
]);
3730 if (flags
& NDR_OUT
) {
3731 ndr_print_struct(ndr
, "out", "svcctl_StartServiceW");
3733 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
3739 static enum ndr_err_code
ndr_push_svcctl_GetServiceDisplayNameW(struct ndr_push
*ndr
, int flags
, const struct svcctl_GetServiceDisplayNameW
*r
)
3741 if (flags
& NDR_IN
) {
3742 if (r
->in
.handle
== NULL
) {
3743 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
3745 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
, r
->in
.handle
));
3746 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.service_name
));
3747 if (r
->in
.service_name
) {
3748 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.service_name
, CH_UTF16
)));
3749 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, 0));
3750 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.service_name
, CH_UTF16
)));
3751 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
));
3753 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.display_name_length
));
3754 if (r
->in
.display_name_length
) {
3755 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, *r
->in
.display_name_length
));
3758 if (flags
& NDR_OUT
) {
3759 if (r
->out
.display_name
== NULL
) {
3760 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
3762 NDR_CHECK(ndr_push_unique_ptr(ndr
, *r
->out
.display_name
));
3763 if (*r
->out
.display_name
) {
3764 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(*r
->out
.display_name
, CH_UTF16
)));
3765 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, 0));
3766 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(*r
->out
.display_name
, CH_UTF16
)));
3767 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
));
3769 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->out
.display_name_length
));
3770 if (r
->out
.display_name_length
) {
3771 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, *r
->out
.display_name_length
));
3773 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
3775 return NDR_ERR_SUCCESS
;
3778 static enum ndr_err_code
ndr_pull_svcctl_GetServiceDisplayNameW(struct ndr_pull
*ndr
, int flags
, struct svcctl_GetServiceDisplayNameW
*r
)
3780 uint32_t _ptr_service_name
;
3781 uint32_t size_service_name_1
= 0;
3782 uint32_t length_service_name_1
= 0;
3783 uint32_t _ptr_display_name
;
3784 uint32_t size_display_name_2
= 0;
3785 uint32_t length_display_name_2
= 0;
3786 uint32_t _ptr_display_name_length
;
3787 TALLOC_CTX
*_mem_save_handle_0
;
3788 TALLOC_CTX
*_mem_save_service_name_0
;
3789 TALLOC_CTX
*_mem_save_display_name_0
;
3790 TALLOC_CTX
*_mem_save_display_name_1
;
3791 TALLOC_CTX
*_mem_save_display_name_length_0
;
3792 if (flags
& NDR_IN
) {
3793 ZERO_STRUCT(r
->out
);
3795 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
3796 NDR_PULL_ALLOC(ndr
, r
->in
.handle
);
3798 _mem_save_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
3799 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.handle
, LIBNDR_FLAG_REF_ALLOC
);
3800 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
, r
->in
.handle
));
3801 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_handle_0
, LIBNDR_FLAG_REF_ALLOC
);
3802 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_service_name
));
3803 if (_ptr_service_name
) {
3804 NDR_PULL_ALLOC(ndr
, r
->in
.service_name
);
3806 r
->in
.service_name
= NULL
;
3808 if (r
->in
.service_name
) {
3809 _mem_save_service_name_0
= NDR_PULL_GET_MEM_CTX(ndr
);
3810 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.service_name
, 0);
3811 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->in
.service_name
));
3812 NDR_CHECK(ndr_pull_array_length(ndr
, &r
->in
.service_name
));
3813 size_service_name_1
= ndr_get_array_size(ndr
, &r
->in
.service_name
);
3814 length_service_name_1
= ndr_get_array_length(ndr
, &r
->in
.service_name
);
3815 if (length_service_name_1
> size_service_name_1
) {
3816 return ndr_pull_error(ndr
, NDR_ERR_ARRAY_SIZE
, "Bad array size %u should exceed array length %u", size_service_name_1
, length_service_name_1
);
3818 NDR_CHECK(ndr_check_string_terminator(ndr
, length_service_name_1
, sizeof(uint16_t)));
3819 NDR_CHECK(ndr_pull_charset(ndr
, NDR_SCALARS
, &r
->in
.service_name
, length_service_name_1
, sizeof(uint16_t), CH_UTF16
));
3820 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_service_name_0
, 0);
3822 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_display_name_length
));
3823 if (_ptr_display_name_length
) {
3824 NDR_PULL_ALLOC(ndr
, r
->in
.display_name_length
);
3826 r
->in
.display_name_length
= NULL
;
3828 if (r
->in
.display_name_length
) {
3829 _mem_save_display_name_length_0
= NDR_PULL_GET_MEM_CTX(ndr
);
3830 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.display_name_length
, 0);
3831 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, r
->in
.display_name_length
));
3832 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_display_name_length_0
, 0);
3834 NDR_PULL_ALLOC(ndr
, r
->out
.display_name
);
3835 ZERO_STRUCTP(r
->out
.display_name
);
3837 if (flags
& NDR_OUT
) {
3838 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
3839 NDR_PULL_ALLOC(ndr
, r
->out
.display_name
);
3841 _mem_save_display_name_0
= NDR_PULL_GET_MEM_CTX(ndr
);
3842 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.display_name
, LIBNDR_FLAG_REF_ALLOC
);
3843 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_display_name
));
3844 if (_ptr_display_name
) {
3845 NDR_PULL_ALLOC(ndr
, *r
->out
.display_name
);
3847 *r
->out
.display_name
= NULL
;
3849 if (*r
->out
.display_name
) {
3850 _mem_save_display_name_1
= NDR_PULL_GET_MEM_CTX(ndr
);
3851 NDR_PULL_SET_MEM_CTX(ndr
, *r
->out
.display_name
, 0);
3852 NDR_CHECK(ndr_pull_array_size(ndr
, r
->out
.display_name
));
3853 NDR_CHECK(ndr_pull_array_length(ndr
, r
->out
.display_name
));
3854 size_display_name_2
= ndr_get_array_size(ndr
, r
->out
.display_name
);
3855 length_display_name_2
= ndr_get_array_length(ndr
, r
->out
.display_name
);
3856 if (length_display_name_2
> size_display_name_2
) {
3857 return ndr_pull_error(ndr
, NDR_ERR_ARRAY_SIZE
, "Bad array size %u should exceed array length %u", size_display_name_2
, length_display_name_2
);
3859 NDR_CHECK(ndr_check_string_terminator(ndr
, length_display_name_2
, sizeof(uint16_t)));
3860 NDR_CHECK(ndr_pull_charset(ndr
, NDR_SCALARS
, r
->out
.display_name
, length_display_name_2
, sizeof(uint16_t), CH_UTF16
));
3861 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_display_name_1
, 0);
3863 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_display_name_0
, LIBNDR_FLAG_REF_ALLOC
);
3864 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_display_name_length
));
3865 if (_ptr_display_name_length
) {
3866 NDR_PULL_ALLOC(ndr
, r
->out
.display_name_length
);
3868 r
->out
.display_name_length
= NULL
;
3870 if (r
->out
.display_name_length
) {
3871 _mem_save_display_name_length_0
= NDR_PULL_GET_MEM_CTX(ndr
);
3872 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.display_name_length
, 0);
3873 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, r
->out
.display_name_length
));
3874 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_display_name_length_0
, 0);
3876 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
3878 return NDR_ERR_SUCCESS
;
3881 _PUBLIC_
void ndr_print_svcctl_GetServiceDisplayNameW(struct ndr_print
*ndr
, const char *name
, int flags
, const struct svcctl_GetServiceDisplayNameW
*r
)
3883 ndr_print_struct(ndr
, name
, "svcctl_GetServiceDisplayNameW");
3885 if (flags
& NDR_SET_VALUES
) {
3886 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
3888 if (flags
& NDR_IN
) {
3889 ndr_print_struct(ndr
, "in", "svcctl_GetServiceDisplayNameW");
3891 ndr_print_ptr(ndr
, "handle", r
->in
.handle
);
3893 ndr_print_policy_handle(ndr
, "handle", r
->in
.handle
);
3895 ndr_print_ptr(ndr
, "service_name", r
->in
.service_name
);
3897 if (r
->in
.service_name
) {
3898 ndr_print_string(ndr
, "service_name", r
->in
.service_name
);
3901 ndr_print_ptr(ndr
, "display_name_length", r
->in
.display_name_length
);
3903 if (r
->in
.display_name_length
) {
3904 ndr_print_uint32(ndr
, "display_name_length", *r
->in
.display_name_length
);
3909 if (flags
& NDR_OUT
) {
3910 ndr_print_struct(ndr
, "out", "svcctl_GetServiceDisplayNameW");
3912 ndr_print_ptr(ndr
, "display_name", r
->out
.display_name
);
3914 ndr_print_ptr(ndr
, "display_name", *r
->out
.display_name
);
3916 if (*r
->out
.display_name
) {
3917 ndr_print_string(ndr
, "display_name", *r
->out
.display_name
);
3921 ndr_print_ptr(ndr
, "display_name_length", r
->out
.display_name_length
);
3923 if (r
->out
.display_name_length
) {
3924 ndr_print_uint32(ndr
, "display_name_length", *r
->out
.display_name_length
);
3927 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
3933 static enum ndr_err_code
ndr_push_svcctl_GetServiceKeyNameW(struct ndr_push
*ndr
, int flags
, const struct svcctl_GetServiceKeyNameW
*r
)
3935 if (flags
& NDR_IN
) {
3936 if (r
->in
.handle
== NULL
) {
3937 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
3939 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
, r
->in
.handle
));
3940 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.service_name
));
3941 if (r
->in
.service_name
) {
3942 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.service_name
, CH_UTF16
)));
3943 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, 0));
3944 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.service_name
, CH_UTF16
)));
3945 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
));
3947 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.display_name_length
));
3948 if (r
->in
.display_name_length
) {
3949 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, *r
->in
.display_name_length
));
3952 if (flags
& NDR_OUT
) {
3953 if (r
->out
.key_name
== NULL
) {
3954 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
3956 NDR_CHECK(ndr_push_unique_ptr(ndr
, *r
->out
.key_name
));
3957 if (*r
->out
.key_name
) {
3958 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(*r
->out
.key_name
, CH_UTF16
)));
3959 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, 0));
3960 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(*r
->out
.key_name
, CH_UTF16
)));
3961 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
));
3963 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->out
.display_name_length
));
3964 if (r
->out
.display_name_length
) {
3965 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, *r
->out
.display_name_length
));
3967 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
3969 return NDR_ERR_SUCCESS
;
3972 static enum ndr_err_code
ndr_pull_svcctl_GetServiceKeyNameW(struct ndr_pull
*ndr
, int flags
, struct svcctl_GetServiceKeyNameW
*r
)
3974 uint32_t _ptr_service_name
;
3975 uint32_t size_service_name_1
= 0;
3976 uint32_t length_service_name_1
= 0;
3977 uint32_t _ptr_key_name
;
3978 uint32_t size_key_name_2
= 0;
3979 uint32_t length_key_name_2
= 0;
3980 uint32_t _ptr_display_name_length
;
3981 TALLOC_CTX
*_mem_save_handle_0
;
3982 TALLOC_CTX
*_mem_save_service_name_0
;
3983 TALLOC_CTX
*_mem_save_key_name_0
;
3984 TALLOC_CTX
*_mem_save_key_name_1
;
3985 TALLOC_CTX
*_mem_save_display_name_length_0
;
3986 if (flags
& NDR_IN
) {
3987 ZERO_STRUCT(r
->out
);
3989 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
3990 NDR_PULL_ALLOC(ndr
, r
->in
.handle
);
3992 _mem_save_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
3993 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.handle
, LIBNDR_FLAG_REF_ALLOC
);
3994 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
, r
->in
.handle
));
3995 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_handle_0
, LIBNDR_FLAG_REF_ALLOC
);
3996 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_service_name
));
3997 if (_ptr_service_name
) {
3998 NDR_PULL_ALLOC(ndr
, r
->in
.service_name
);
4000 r
->in
.service_name
= NULL
;
4002 if (r
->in
.service_name
) {
4003 _mem_save_service_name_0
= NDR_PULL_GET_MEM_CTX(ndr
);
4004 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.service_name
, 0);
4005 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->in
.service_name
));
4006 NDR_CHECK(ndr_pull_array_length(ndr
, &r
->in
.service_name
));
4007 size_service_name_1
= ndr_get_array_size(ndr
, &r
->in
.service_name
);
4008 length_service_name_1
= ndr_get_array_length(ndr
, &r
->in
.service_name
);
4009 if (length_service_name_1
> size_service_name_1
) {
4010 return ndr_pull_error(ndr
, NDR_ERR_ARRAY_SIZE
, "Bad array size %u should exceed array length %u", size_service_name_1
, length_service_name_1
);
4012 NDR_CHECK(ndr_check_string_terminator(ndr
, length_service_name_1
, sizeof(uint16_t)));
4013 NDR_CHECK(ndr_pull_charset(ndr
, NDR_SCALARS
, &r
->in
.service_name
, length_service_name_1
, sizeof(uint16_t), CH_UTF16
));
4014 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_service_name_0
, 0);
4016 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_display_name_length
));
4017 if (_ptr_display_name_length
) {
4018 NDR_PULL_ALLOC(ndr
, r
->in
.display_name_length
);
4020 r
->in
.display_name_length
= NULL
;
4022 if (r
->in
.display_name_length
) {
4023 _mem_save_display_name_length_0
= NDR_PULL_GET_MEM_CTX(ndr
);
4024 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.display_name_length
, 0);
4025 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, r
->in
.display_name_length
));
4026 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_display_name_length_0
, 0);
4028 NDR_PULL_ALLOC(ndr
, r
->out
.key_name
);
4029 ZERO_STRUCTP(r
->out
.key_name
);
4031 if (flags
& NDR_OUT
) {
4032 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
4033 NDR_PULL_ALLOC(ndr
, r
->out
.key_name
);
4035 _mem_save_key_name_0
= NDR_PULL_GET_MEM_CTX(ndr
);
4036 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.key_name
, LIBNDR_FLAG_REF_ALLOC
);
4037 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_key_name
));
4038 if (_ptr_key_name
) {
4039 NDR_PULL_ALLOC(ndr
, *r
->out
.key_name
);
4041 *r
->out
.key_name
= NULL
;
4043 if (*r
->out
.key_name
) {
4044 _mem_save_key_name_1
= NDR_PULL_GET_MEM_CTX(ndr
);
4045 NDR_PULL_SET_MEM_CTX(ndr
, *r
->out
.key_name
, 0);
4046 NDR_CHECK(ndr_pull_array_size(ndr
, r
->out
.key_name
));
4047 NDR_CHECK(ndr_pull_array_length(ndr
, r
->out
.key_name
));
4048 size_key_name_2
= ndr_get_array_size(ndr
, r
->out
.key_name
);
4049 length_key_name_2
= ndr_get_array_length(ndr
, r
->out
.key_name
);
4050 if (length_key_name_2
> size_key_name_2
) {
4051 return ndr_pull_error(ndr
, NDR_ERR_ARRAY_SIZE
, "Bad array size %u should exceed array length %u", size_key_name_2
, length_key_name_2
);
4053 NDR_CHECK(ndr_check_string_terminator(ndr
, length_key_name_2
, sizeof(uint16_t)));
4054 NDR_CHECK(ndr_pull_charset(ndr
, NDR_SCALARS
, r
->out
.key_name
, length_key_name_2
, sizeof(uint16_t), CH_UTF16
));
4055 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_key_name_1
, 0);
4057 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_key_name_0
, LIBNDR_FLAG_REF_ALLOC
);
4058 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_display_name_length
));
4059 if (_ptr_display_name_length
) {
4060 NDR_PULL_ALLOC(ndr
, r
->out
.display_name_length
);
4062 r
->out
.display_name_length
= NULL
;
4064 if (r
->out
.display_name_length
) {
4065 _mem_save_display_name_length_0
= NDR_PULL_GET_MEM_CTX(ndr
);
4066 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.display_name_length
, 0);
4067 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, r
->out
.display_name_length
));
4068 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_display_name_length_0
, 0);
4070 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
4072 return NDR_ERR_SUCCESS
;
4075 _PUBLIC_
void ndr_print_svcctl_GetServiceKeyNameW(struct ndr_print
*ndr
, const char *name
, int flags
, const struct svcctl_GetServiceKeyNameW
*r
)
4077 ndr_print_struct(ndr
, name
, "svcctl_GetServiceKeyNameW");
4079 if (flags
& NDR_SET_VALUES
) {
4080 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
4082 if (flags
& NDR_IN
) {
4083 ndr_print_struct(ndr
, "in", "svcctl_GetServiceKeyNameW");
4085 ndr_print_ptr(ndr
, "handle", r
->in
.handle
);
4087 ndr_print_policy_handle(ndr
, "handle", r
->in
.handle
);
4089 ndr_print_ptr(ndr
, "service_name", r
->in
.service_name
);
4091 if (r
->in
.service_name
) {
4092 ndr_print_string(ndr
, "service_name", r
->in
.service_name
);
4095 ndr_print_ptr(ndr
, "display_name_length", r
->in
.display_name_length
);
4097 if (r
->in
.display_name_length
) {
4098 ndr_print_uint32(ndr
, "display_name_length", *r
->in
.display_name_length
);
4103 if (flags
& NDR_OUT
) {
4104 ndr_print_struct(ndr
, "out", "svcctl_GetServiceKeyNameW");
4106 ndr_print_ptr(ndr
, "key_name", r
->out
.key_name
);
4108 ndr_print_ptr(ndr
, "key_name", *r
->out
.key_name
);
4110 if (*r
->out
.key_name
) {
4111 ndr_print_string(ndr
, "key_name", *r
->out
.key_name
);
4115 ndr_print_ptr(ndr
, "display_name_length", r
->out
.display_name_length
);
4117 if (r
->out
.display_name_length
) {
4118 ndr_print_uint32(ndr
, "display_name_length", *r
->out
.display_name_length
);
4121 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
4127 static enum ndr_err_code
ndr_push_svcctl_SCSetServiceBitsA(struct ndr_push
*ndr
, int flags
, const struct svcctl_SCSetServiceBitsA
*r
)
4129 if (flags
& NDR_IN
) {
4130 if (r
->in
.handle
== NULL
) {
4131 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
4133 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
, r
->in
.handle
));
4134 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.bits
));
4135 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.bitson
));
4136 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.immediate
));
4138 if (flags
& NDR_OUT
) {
4139 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
4141 return NDR_ERR_SUCCESS
;
4144 static enum ndr_err_code
ndr_pull_svcctl_SCSetServiceBitsA(struct ndr_pull
*ndr
, int flags
, struct svcctl_SCSetServiceBitsA
*r
)
4146 TALLOC_CTX
*_mem_save_handle_0
;
4147 if (flags
& NDR_IN
) {
4148 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
4149 NDR_PULL_ALLOC(ndr
, r
->in
.handle
);
4151 _mem_save_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
4152 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.handle
, LIBNDR_FLAG_REF_ALLOC
);
4153 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
, r
->in
.handle
));
4154 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_handle_0
, LIBNDR_FLAG_REF_ALLOC
);
4155 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.bits
));
4156 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.bitson
));
4157 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.immediate
));
4159 if (flags
& NDR_OUT
) {
4160 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
4162 return NDR_ERR_SUCCESS
;
4165 _PUBLIC_
void ndr_print_svcctl_SCSetServiceBitsA(struct ndr_print
*ndr
, const char *name
, int flags
, const struct svcctl_SCSetServiceBitsA
*r
)
4167 ndr_print_struct(ndr
, name
, "svcctl_SCSetServiceBitsA");
4169 if (flags
& NDR_SET_VALUES
) {
4170 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
4172 if (flags
& NDR_IN
) {
4173 ndr_print_struct(ndr
, "in", "svcctl_SCSetServiceBitsA");
4175 ndr_print_ptr(ndr
, "handle", r
->in
.handle
);
4177 ndr_print_policy_handle(ndr
, "handle", r
->in
.handle
);
4179 ndr_print_uint32(ndr
, "bits", r
->in
.bits
);
4180 ndr_print_uint32(ndr
, "bitson", r
->in
.bitson
);
4181 ndr_print_uint32(ndr
, "immediate", r
->in
.immediate
);
4184 if (flags
& NDR_OUT
) {
4185 ndr_print_struct(ndr
, "out", "svcctl_SCSetServiceBitsA");
4187 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
4193 static enum ndr_err_code
ndr_push_svcctl_ChangeServiceConfigA(struct ndr_push
*ndr
, int flags
, const struct svcctl_ChangeServiceConfigA
*r
)
4195 if (flags
& NDR_IN
) {
4196 if (r
->in
.handle
== NULL
) {
4197 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
4199 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
, r
->in
.handle
));
4200 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.type
));
4201 NDR_CHECK(ndr_push_svcctl_StartType(ndr
, NDR_SCALARS
, r
->in
.start_type
));
4202 NDR_CHECK(ndr_push_svcctl_ErrorControl(ndr
, NDR_SCALARS
, r
->in
.error_control
));
4203 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.binary_path
));
4204 if (r
->in
.binary_path
) {
4205 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.binary_path
, CH_UTF16
)));
4206 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, 0));
4207 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.binary_path
, CH_UTF16
)));
4208 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
));
4210 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.load_order_group
));
4211 if (r
->in
.load_order_group
) {
4212 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.load_order_group
, CH_UTF16
)));
4213 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, 0));
4214 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.load_order_group
, CH_UTF16
)));
4215 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
));
4217 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.dependencies
));
4218 if (r
->in
.dependencies
) {
4219 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.dependencies
, CH_UTF16
)));
4220 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, 0));
4221 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.dependencies
, CH_UTF16
)));
4222 NDR_CHECK(ndr_push_charset(ndr
, NDR_SCALARS
, r
->in
.dependencies
, ndr_charset_length(r
->in
.dependencies
, CH_UTF16
), sizeof(uint16_t), CH_UTF16
));
4224 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.service_start_name
));
4225 if (r
->in
.service_start_name
) {
4226 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.service_start_name
, CH_UTF16
)));
4227 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, 0));
4228 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.service_start_name
, CH_UTF16
)));
4229 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
));
4231 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.password
));
4232 if (r
->in
.password
) {
4233 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.password
, CH_UTF16
)));
4234 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, 0));
4235 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.password
, CH_UTF16
)));
4236 NDR_CHECK(ndr_push_charset(ndr
, NDR_SCALARS
, r
->in
.password
, ndr_charset_length(r
->in
.password
, CH_UTF16
), sizeof(uint16_t), CH_UTF16
));
4238 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.display_name
));
4239 if (r
->in
.display_name
) {
4240 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.display_name
, CH_UTF16
)));
4241 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, 0));
4242 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.display_name
, CH_UTF16
)));
4243 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
));
4246 if (flags
& NDR_OUT
) {
4247 if (r
->out
.tag_id
== NULL
) {
4248 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
4250 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, *r
->out
.tag_id
));
4251 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
4253 return NDR_ERR_SUCCESS
;
4256 static enum ndr_err_code
ndr_pull_svcctl_ChangeServiceConfigA(struct ndr_pull
*ndr
, int flags
, struct svcctl_ChangeServiceConfigA
*r
)
4258 uint32_t _ptr_binary_path
;
4259 uint32_t size_binary_path_1
= 0;
4260 uint32_t length_binary_path_1
= 0;
4261 uint32_t _ptr_load_order_group
;
4262 uint32_t size_load_order_group_1
= 0;
4263 uint32_t length_load_order_group_1
= 0;
4264 uint32_t _ptr_dependencies
;
4265 uint32_t size_dependencies_1
= 0;
4266 uint32_t length_dependencies_1
= 0;
4267 uint32_t _ptr_service_start_name
;
4268 uint32_t size_service_start_name_1
= 0;
4269 uint32_t length_service_start_name_1
= 0;
4270 uint32_t _ptr_password
;
4271 uint32_t size_password_1
= 0;
4272 uint32_t length_password_1
= 0;
4273 uint32_t _ptr_display_name
;
4274 uint32_t size_display_name_1
= 0;
4275 uint32_t length_display_name_1
= 0;
4276 TALLOC_CTX
*_mem_save_handle_0
;
4277 TALLOC_CTX
*_mem_save_binary_path_0
;
4278 TALLOC_CTX
*_mem_save_load_order_group_0
;
4279 TALLOC_CTX
*_mem_save_tag_id_0
;
4280 TALLOC_CTX
*_mem_save_dependencies_0
;
4281 TALLOC_CTX
*_mem_save_service_start_name_0
;
4282 TALLOC_CTX
*_mem_save_password_0
;
4283 TALLOC_CTX
*_mem_save_display_name_0
;
4284 if (flags
& NDR_IN
) {
4285 ZERO_STRUCT(r
->out
);
4287 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
4288 NDR_PULL_ALLOC(ndr
, r
->in
.handle
);
4290 _mem_save_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
4291 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.handle
, LIBNDR_FLAG_REF_ALLOC
);
4292 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
, r
->in
.handle
));
4293 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_handle_0
, LIBNDR_FLAG_REF_ALLOC
);
4294 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.type
));
4295 NDR_CHECK(ndr_pull_svcctl_StartType(ndr
, NDR_SCALARS
, &r
->in
.start_type
));
4296 NDR_CHECK(ndr_pull_svcctl_ErrorControl(ndr
, NDR_SCALARS
, &r
->in
.error_control
));
4297 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_binary_path
));
4298 if (_ptr_binary_path
) {
4299 NDR_PULL_ALLOC(ndr
, r
->in
.binary_path
);
4301 r
->in
.binary_path
= NULL
;
4303 if (r
->in
.binary_path
) {
4304 _mem_save_binary_path_0
= NDR_PULL_GET_MEM_CTX(ndr
);
4305 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.binary_path
, 0);
4306 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->in
.binary_path
));
4307 NDR_CHECK(ndr_pull_array_length(ndr
, &r
->in
.binary_path
));
4308 size_binary_path_1
= ndr_get_array_size(ndr
, &r
->in
.binary_path
);
4309 length_binary_path_1
= ndr_get_array_length(ndr
, &r
->in
.binary_path
);
4310 if (length_binary_path_1
> size_binary_path_1
) {
4311 return ndr_pull_error(ndr
, NDR_ERR_ARRAY_SIZE
, "Bad array size %u should exceed array length %u", size_binary_path_1
, length_binary_path_1
);
4313 NDR_CHECK(ndr_check_string_terminator(ndr
, length_binary_path_1
, sizeof(uint16_t)));
4314 NDR_CHECK(ndr_pull_charset(ndr
, NDR_SCALARS
, &r
->in
.binary_path
, length_binary_path_1
, sizeof(uint16_t), CH_UTF16
));
4315 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_binary_path_0
, 0);
4317 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_load_order_group
));
4318 if (_ptr_load_order_group
) {
4319 NDR_PULL_ALLOC(ndr
, r
->in
.load_order_group
);
4321 r
->in
.load_order_group
= NULL
;
4323 if (r
->in
.load_order_group
) {
4324 _mem_save_load_order_group_0
= NDR_PULL_GET_MEM_CTX(ndr
);
4325 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.load_order_group
, 0);
4326 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->in
.load_order_group
));
4327 NDR_CHECK(ndr_pull_array_length(ndr
, &r
->in
.load_order_group
));
4328 size_load_order_group_1
= ndr_get_array_size(ndr
, &r
->in
.load_order_group
);
4329 length_load_order_group_1
= ndr_get_array_length(ndr
, &r
->in
.load_order_group
);
4330 if (length_load_order_group_1
> size_load_order_group_1
) {
4331 return ndr_pull_error(ndr
, NDR_ERR_ARRAY_SIZE
, "Bad array size %u should exceed array length %u", size_load_order_group_1
, length_load_order_group_1
);
4333 NDR_CHECK(ndr_check_string_terminator(ndr
, length_load_order_group_1
, sizeof(uint16_t)));
4334 NDR_CHECK(ndr_pull_charset(ndr
, NDR_SCALARS
, &r
->in
.load_order_group
, length_load_order_group_1
, sizeof(uint16_t), CH_UTF16
));
4335 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_load_order_group_0
, 0);
4337 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_dependencies
));
4338 if (_ptr_dependencies
) {
4339 NDR_PULL_ALLOC(ndr
, r
->in
.dependencies
);
4341 r
->in
.dependencies
= NULL
;
4343 if (r
->in
.dependencies
) {
4344 _mem_save_dependencies_0
= NDR_PULL_GET_MEM_CTX(ndr
);
4345 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.dependencies
, 0);
4346 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->in
.dependencies
));
4347 NDR_CHECK(ndr_pull_array_length(ndr
, &r
->in
.dependencies
));
4348 size_dependencies_1
= ndr_get_array_size(ndr
, &r
->in
.dependencies
);
4349 length_dependencies_1
= ndr_get_array_length(ndr
, &r
->in
.dependencies
);
4350 if (length_dependencies_1
> size_dependencies_1
) {
4351 return ndr_pull_error(ndr
, NDR_ERR_ARRAY_SIZE
, "Bad array size %u should exceed array length %u", size_dependencies_1
, length_dependencies_1
);
4353 NDR_CHECK(ndr_check_string_terminator(ndr
, length_dependencies_1
, sizeof(uint16_t)));
4354 NDR_CHECK(ndr_pull_charset(ndr
, NDR_SCALARS
, &r
->in
.dependencies
, length_dependencies_1
, sizeof(uint16_t), CH_UTF16
));
4355 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_dependencies_0
, 0);
4357 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_service_start_name
));
4358 if (_ptr_service_start_name
) {
4359 NDR_PULL_ALLOC(ndr
, r
->in
.service_start_name
);
4361 r
->in
.service_start_name
= NULL
;
4363 if (r
->in
.service_start_name
) {
4364 _mem_save_service_start_name_0
= NDR_PULL_GET_MEM_CTX(ndr
);
4365 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.service_start_name
, 0);
4366 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->in
.service_start_name
));
4367 NDR_CHECK(ndr_pull_array_length(ndr
, &r
->in
.service_start_name
));
4368 size_service_start_name_1
= ndr_get_array_size(ndr
, &r
->in
.service_start_name
);
4369 length_service_start_name_1
= ndr_get_array_length(ndr
, &r
->in
.service_start_name
);
4370 if (length_service_start_name_1
> size_service_start_name_1
) {
4371 return ndr_pull_error(ndr
, NDR_ERR_ARRAY_SIZE
, "Bad array size %u should exceed array length %u", size_service_start_name_1
, length_service_start_name_1
);
4373 NDR_CHECK(ndr_check_string_terminator(ndr
, length_service_start_name_1
, sizeof(uint16_t)));
4374 NDR_CHECK(ndr_pull_charset(ndr
, NDR_SCALARS
, &r
->in
.service_start_name
, length_service_start_name_1
, sizeof(uint16_t), CH_UTF16
));
4375 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_service_start_name_0
, 0);
4377 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_password
));
4378 if (_ptr_password
) {
4379 NDR_PULL_ALLOC(ndr
, r
->in
.password
);
4381 r
->in
.password
= NULL
;
4383 if (r
->in
.password
) {
4384 _mem_save_password_0
= NDR_PULL_GET_MEM_CTX(ndr
);
4385 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.password
, 0);
4386 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->in
.password
));
4387 NDR_CHECK(ndr_pull_array_length(ndr
, &r
->in
.password
));
4388 size_password_1
= ndr_get_array_size(ndr
, &r
->in
.password
);
4389 length_password_1
= ndr_get_array_length(ndr
, &r
->in
.password
);
4390 if (length_password_1
> size_password_1
) {
4391 return ndr_pull_error(ndr
, NDR_ERR_ARRAY_SIZE
, "Bad array size %u should exceed array length %u", size_password_1
, length_password_1
);
4393 NDR_CHECK(ndr_check_string_terminator(ndr
, length_password_1
, sizeof(uint16_t)));
4394 NDR_CHECK(ndr_pull_charset(ndr
, NDR_SCALARS
, &r
->in
.password
, length_password_1
, sizeof(uint16_t), CH_UTF16
));
4395 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_password_0
, 0);
4397 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_display_name
));
4398 if (_ptr_display_name
) {
4399 NDR_PULL_ALLOC(ndr
, r
->in
.display_name
);
4401 r
->in
.display_name
= NULL
;
4403 if (r
->in
.display_name
) {
4404 _mem_save_display_name_0
= NDR_PULL_GET_MEM_CTX(ndr
);
4405 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.display_name
, 0);
4406 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->in
.display_name
));
4407 NDR_CHECK(ndr_pull_array_length(ndr
, &r
->in
.display_name
));
4408 size_display_name_1
= ndr_get_array_size(ndr
, &r
->in
.display_name
);
4409 length_display_name_1
= ndr_get_array_length(ndr
, &r
->in
.display_name
);
4410 if (length_display_name_1
> size_display_name_1
) {
4411 return ndr_pull_error(ndr
, NDR_ERR_ARRAY_SIZE
, "Bad array size %u should exceed array length %u", size_display_name_1
, length_display_name_1
);
4413 NDR_CHECK(ndr_check_string_terminator(ndr
, length_display_name_1
, sizeof(uint16_t)));
4414 NDR_CHECK(ndr_pull_charset(ndr
, NDR_SCALARS
, &r
->in
.display_name
, length_display_name_1
, sizeof(uint16_t), CH_UTF16
));
4415 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_display_name_0
, 0);
4417 NDR_PULL_ALLOC(ndr
, r
->out
.tag_id
);
4418 ZERO_STRUCTP(r
->out
.tag_id
);
4420 if (flags
& NDR_OUT
) {
4421 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
4422 NDR_PULL_ALLOC(ndr
, r
->out
.tag_id
);
4424 _mem_save_tag_id_0
= NDR_PULL_GET_MEM_CTX(ndr
);
4425 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.tag_id
, LIBNDR_FLAG_REF_ALLOC
);
4426 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, r
->out
.tag_id
));
4427 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_tag_id_0
, LIBNDR_FLAG_REF_ALLOC
);
4428 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
4430 return NDR_ERR_SUCCESS
;
4433 _PUBLIC_
void ndr_print_svcctl_ChangeServiceConfigA(struct ndr_print
*ndr
, const char *name
, int flags
, const struct svcctl_ChangeServiceConfigA
*r
)
4435 ndr_print_struct(ndr
, name
, "svcctl_ChangeServiceConfigA");
4437 if (flags
& NDR_SET_VALUES
) {
4438 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
4440 if (flags
& NDR_IN
) {
4441 ndr_print_struct(ndr
, "in", "svcctl_ChangeServiceConfigA");
4443 ndr_print_ptr(ndr
, "handle", r
->in
.handle
);
4445 ndr_print_policy_handle(ndr
, "handle", r
->in
.handle
);
4447 ndr_print_uint32(ndr
, "type", r
->in
.type
);
4448 ndr_print_svcctl_StartType(ndr
, "start_type", r
->in
.start_type
);
4449 ndr_print_svcctl_ErrorControl(ndr
, "error_control", r
->in
.error_control
);
4450 ndr_print_ptr(ndr
, "binary_path", r
->in
.binary_path
);
4452 if (r
->in
.binary_path
) {
4453 ndr_print_string(ndr
, "binary_path", r
->in
.binary_path
);
4456 ndr_print_ptr(ndr
, "load_order_group", r
->in
.load_order_group
);
4458 if (r
->in
.load_order_group
) {
4459 ndr_print_string(ndr
, "load_order_group", r
->in
.load_order_group
);
4462 ndr_print_ptr(ndr
, "dependencies", r
->in
.dependencies
);
4464 if (r
->in
.dependencies
) {
4465 ndr_print_string(ndr
, "dependencies", r
->in
.dependencies
);
4468 ndr_print_ptr(ndr
, "service_start_name", r
->in
.service_start_name
);
4470 if (r
->in
.service_start_name
) {
4471 ndr_print_string(ndr
, "service_start_name", r
->in
.service_start_name
);
4474 ndr_print_ptr(ndr
, "password", r
->in
.password
);
4476 if (r
->in
.password
) {
4477 ndr_print_string(ndr
, "password", r
->in
.password
);
4480 ndr_print_ptr(ndr
, "display_name", r
->in
.display_name
);
4482 if (r
->in
.display_name
) {
4483 ndr_print_string(ndr
, "display_name", r
->in
.display_name
);
4488 if (flags
& NDR_OUT
) {
4489 ndr_print_struct(ndr
, "out", "svcctl_ChangeServiceConfigA");
4491 ndr_print_ptr(ndr
, "tag_id", r
->out
.tag_id
);
4493 ndr_print_uint32(ndr
, "tag_id", *r
->out
.tag_id
);
4495 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
4501 static enum ndr_err_code
ndr_push_svcctl_CreateServiceA(struct ndr_push
*ndr
, int flags
, const struct svcctl_CreateServiceA
*r
)
4503 if (flags
& NDR_IN
) {
4504 if (r
->in
.handle
== NULL
) {
4505 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
4507 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
, r
->in
.handle
));
4508 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.ServiceName
));
4509 if (r
->in
.ServiceName
) {
4510 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.ServiceName
, CH_UTF16
)));
4511 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, 0));
4512 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.ServiceName
, CH_UTF16
)));
4513 NDR_CHECK(ndr_push_charset(ndr
, NDR_SCALARS
, r
->in
.ServiceName
, ndr_charset_length(r
->in
.ServiceName
, CH_UTF16
), sizeof(uint16_t), CH_UTF16
));
4515 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.DisplayName
));
4516 if (r
->in
.DisplayName
) {
4517 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.DisplayName
, CH_UTF16
)));
4518 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, 0));
4519 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.DisplayName
, CH_UTF16
)));
4520 NDR_CHECK(ndr_push_charset(ndr
, NDR_SCALARS
, r
->in
.DisplayName
, ndr_charset_length(r
->in
.DisplayName
, CH_UTF16
), sizeof(uint16_t), CH_UTF16
));
4522 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.desired_access
));
4523 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.type
));
4524 NDR_CHECK(ndr_push_svcctl_StartType(ndr
, NDR_SCALARS
, r
->in
.start_type
));
4525 NDR_CHECK(ndr_push_svcctl_ErrorControl(ndr
, NDR_SCALARS
, r
->in
.error_control
));
4526 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.binary_path
));
4527 if (r
->in
.binary_path
) {
4528 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.binary_path
, CH_UTF16
)));
4529 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, 0));
4530 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.binary_path
, CH_UTF16
)));
4531 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
));
4533 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.LoadOrderGroupKey
));
4534 if (r
->in
.LoadOrderGroupKey
) {
4535 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.LoadOrderGroupKey
, CH_UTF16
)));
4536 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, 0));
4537 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.LoadOrderGroupKey
, CH_UTF16
)));
4538 NDR_CHECK(ndr_push_charset(ndr
, NDR_SCALARS
, r
->in
.LoadOrderGroupKey
, ndr_charset_length(r
->in
.LoadOrderGroupKey
, CH_UTF16
), sizeof(uint16_t), CH_UTF16
));
4540 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.dependencies
));
4541 if (r
->in
.dependencies
) {
4542 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.dependencies
, CH_UTF16
)));
4543 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, 0));
4544 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.dependencies
, CH_UTF16
)));
4545 NDR_CHECK(ndr_push_charset(ndr
, NDR_SCALARS
, r
->in
.dependencies
, ndr_charset_length(r
->in
.dependencies
, CH_UTF16
), sizeof(uint16_t), CH_UTF16
));
4547 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.service_start_name
));
4548 if (r
->in
.service_start_name
) {
4549 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.service_start_name
, CH_UTF16
)));
4550 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, 0));
4551 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.service_start_name
, CH_UTF16
)));
4552 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
));
4554 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.password
));
4555 if (r
->in
.password
) {
4556 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.password
, CH_UTF16
)));
4557 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, 0));
4558 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.password
, CH_UTF16
)));
4559 NDR_CHECK(ndr_push_charset(ndr
, NDR_SCALARS
, r
->in
.password
, ndr_charset_length(r
->in
.password
, CH_UTF16
), sizeof(uint16_t), CH_UTF16
));
4562 if (flags
& NDR_OUT
) {
4563 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->out
.TagId
));
4565 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, *r
->out
.TagId
));
4567 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
4569 return NDR_ERR_SUCCESS
;
4572 static enum ndr_err_code
ndr_pull_svcctl_CreateServiceA(struct ndr_pull
*ndr
, int flags
, struct svcctl_CreateServiceA
*r
)
4574 uint32_t _ptr_ServiceName
;
4575 uint32_t size_ServiceName_1
= 0;
4576 uint32_t length_ServiceName_1
= 0;
4577 uint32_t _ptr_DisplayName
;
4578 uint32_t size_DisplayName_1
= 0;
4579 uint32_t length_DisplayName_1
= 0;
4580 uint32_t _ptr_binary_path
;
4581 uint32_t size_binary_path_1
= 0;
4582 uint32_t length_binary_path_1
= 0;
4583 uint32_t _ptr_LoadOrderGroupKey
;
4584 uint32_t size_LoadOrderGroupKey_1
= 0;
4585 uint32_t length_LoadOrderGroupKey_1
= 0;
4586 uint32_t _ptr_TagId
;
4587 uint32_t _ptr_dependencies
;
4588 uint32_t size_dependencies_1
= 0;
4589 uint32_t length_dependencies_1
= 0;
4590 uint32_t _ptr_service_start_name
;
4591 uint32_t size_service_start_name_1
= 0;
4592 uint32_t length_service_start_name_1
= 0;
4593 uint32_t _ptr_password
;
4594 uint32_t size_password_1
= 0;
4595 uint32_t length_password_1
= 0;
4596 TALLOC_CTX
*_mem_save_handle_0
;
4597 TALLOC_CTX
*_mem_save_ServiceName_0
;
4598 TALLOC_CTX
*_mem_save_DisplayName_0
;
4599 TALLOC_CTX
*_mem_save_binary_path_0
;
4600 TALLOC_CTX
*_mem_save_LoadOrderGroupKey_0
;
4601 TALLOC_CTX
*_mem_save_TagId_0
;
4602 TALLOC_CTX
*_mem_save_dependencies_0
;
4603 TALLOC_CTX
*_mem_save_service_start_name_0
;
4604 TALLOC_CTX
*_mem_save_password_0
;
4605 if (flags
& NDR_IN
) {
4606 ZERO_STRUCT(r
->out
);
4608 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
4609 NDR_PULL_ALLOC(ndr
, r
->in
.handle
);
4611 _mem_save_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
4612 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.handle
, LIBNDR_FLAG_REF_ALLOC
);
4613 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
, r
->in
.handle
));
4614 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_handle_0
, LIBNDR_FLAG_REF_ALLOC
);
4615 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_ServiceName
));
4616 if (_ptr_ServiceName
) {
4617 NDR_PULL_ALLOC(ndr
, r
->in
.ServiceName
);
4619 r
->in
.ServiceName
= NULL
;
4621 if (r
->in
.ServiceName
) {
4622 _mem_save_ServiceName_0
= NDR_PULL_GET_MEM_CTX(ndr
);
4623 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.ServiceName
, 0);
4624 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->in
.ServiceName
));
4625 NDR_CHECK(ndr_pull_array_length(ndr
, &r
->in
.ServiceName
));
4626 size_ServiceName_1
= ndr_get_array_size(ndr
, &r
->in
.ServiceName
);
4627 length_ServiceName_1
= ndr_get_array_length(ndr
, &r
->in
.ServiceName
);
4628 if (length_ServiceName_1
> size_ServiceName_1
) {
4629 return ndr_pull_error(ndr
, NDR_ERR_ARRAY_SIZE
, "Bad array size %u should exceed array length %u", size_ServiceName_1
, length_ServiceName_1
);
4631 NDR_CHECK(ndr_check_string_terminator(ndr
, length_ServiceName_1
, sizeof(uint16_t)));
4632 NDR_CHECK(ndr_pull_charset(ndr
, NDR_SCALARS
, &r
->in
.ServiceName
, length_ServiceName_1
, sizeof(uint16_t), CH_UTF16
));
4633 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_ServiceName_0
, 0);
4635 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_DisplayName
));
4636 if (_ptr_DisplayName
) {
4637 NDR_PULL_ALLOC(ndr
, r
->in
.DisplayName
);
4639 r
->in
.DisplayName
= NULL
;
4641 if (r
->in
.DisplayName
) {
4642 _mem_save_DisplayName_0
= NDR_PULL_GET_MEM_CTX(ndr
);
4643 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.DisplayName
, 0);
4644 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->in
.DisplayName
));
4645 NDR_CHECK(ndr_pull_array_length(ndr
, &r
->in
.DisplayName
));
4646 size_DisplayName_1
= ndr_get_array_size(ndr
, &r
->in
.DisplayName
);
4647 length_DisplayName_1
= ndr_get_array_length(ndr
, &r
->in
.DisplayName
);
4648 if (length_DisplayName_1
> size_DisplayName_1
) {
4649 return ndr_pull_error(ndr
, NDR_ERR_ARRAY_SIZE
, "Bad array size %u should exceed array length %u", size_DisplayName_1
, length_DisplayName_1
);
4651 NDR_CHECK(ndr_check_string_terminator(ndr
, length_DisplayName_1
, sizeof(uint16_t)));
4652 NDR_CHECK(ndr_pull_charset(ndr
, NDR_SCALARS
, &r
->in
.DisplayName
, length_DisplayName_1
, sizeof(uint16_t), CH_UTF16
));
4653 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_DisplayName_0
, 0);
4655 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.desired_access
));
4656 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.type
));
4657 NDR_CHECK(ndr_pull_svcctl_StartType(ndr
, NDR_SCALARS
, &r
->in
.start_type
));
4658 NDR_CHECK(ndr_pull_svcctl_ErrorControl(ndr
, NDR_SCALARS
, &r
->in
.error_control
));
4659 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_binary_path
));
4660 if (_ptr_binary_path
) {
4661 NDR_PULL_ALLOC(ndr
, r
->in
.binary_path
);
4663 r
->in
.binary_path
= NULL
;
4665 if (r
->in
.binary_path
) {
4666 _mem_save_binary_path_0
= NDR_PULL_GET_MEM_CTX(ndr
);
4667 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.binary_path
, 0);
4668 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->in
.binary_path
));
4669 NDR_CHECK(ndr_pull_array_length(ndr
, &r
->in
.binary_path
));
4670 size_binary_path_1
= ndr_get_array_size(ndr
, &r
->in
.binary_path
);
4671 length_binary_path_1
= ndr_get_array_length(ndr
, &r
->in
.binary_path
);
4672 if (length_binary_path_1
> size_binary_path_1
) {
4673 return ndr_pull_error(ndr
, NDR_ERR_ARRAY_SIZE
, "Bad array size %u should exceed array length %u", size_binary_path_1
, length_binary_path_1
);
4675 NDR_CHECK(ndr_check_string_terminator(ndr
, length_binary_path_1
, sizeof(uint16_t)));
4676 NDR_CHECK(ndr_pull_charset(ndr
, NDR_SCALARS
, &r
->in
.binary_path
, length_binary_path_1
, sizeof(uint16_t), CH_UTF16
));
4677 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_binary_path_0
, 0);
4679 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_LoadOrderGroupKey
));
4680 if (_ptr_LoadOrderGroupKey
) {
4681 NDR_PULL_ALLOC(ndr
, r
->in
.LoadOrderGroupKey
);
4683 r
->in
.LoadOrderGroupKey
= NULL
;
4685 if (r
->in
.LoadOrderGroupKey
) {
4686 _mem_save_LoadOrderGroupKey_0
= NDR_PULL_GET_MEM_CTX(ndr
);
4687 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.LoadOrderGroupKey
, 0);
4688 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->in
.LoadOrderGroupKey
));
4689 NDR_CHECK(ndr_pull_array_length(ndr
, &r
->in
.LoadOrderGroupKey
));
4690 size_LoadOrderGroupKey_1
= ndr_get_array_size(ndr
, &r
->in
.LoadOrderGroupKey
);
4691 length_LoadOrderGroupKey_1
= ndr_get_array_length(ndr
, &r
->in
.LoadOrderGroupKey
);
4692 if (length_LoadOrderGroupKey_1
> size_LoadOrderGroupKey_1
) {
4693 return ndr_pull_error(ndr
, NDR_ERR_ARRAY_SIZE
, "Bad array size %u should exceed array length %u", size_LoadOrderGroupKey_1
, length_LoadOrderGroupKey_1
);
4695 NDR_CHECK(ndr_check_string_terminator(ndr
, length_LoadOrderGroupKey_1
, sizeof(uint16_t)));
4696 NDR_CHECK(ndr_pull_charset(ndr
, NDR_SCALARS
, &r
->in
.LoadOrderGroupKey
, length_LoadOrderGroupKey_1
, sizeof(uint16_t), CH_UTF16
));
4697 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_LoadOrderGroupKey_0
, 0);
4699 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_dependencies
));
4700 if (_ptr_dependencies
) {
4701 NDR_PULL_ALLOC(ndr
, r
->in
.dependencies
);
4703 r
->in
.dependencies
= NULL
;
4705 if (r
->in
.dependencies
) {
4706 _mem_save_dependencies_0
= NDR_PULL_GET_MEM_CTX(ndr
);
4707 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.dependencies
, 0);
4708 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->in
.dependencies
));
4709 NDR_CHECK(ndr_pull_array_length(ndr
, &r
->in
.dependencies
));
4710 size_dependencies_1
= ndr_get_array_size(ndr
, &r
->in
.dependencies
);
4711 length_dependencies_1
= ndr_get_array_length(ndr
, &r
->in
.dependencies
);
4712 if (length_dependencies_1
> size_dependencies_1
) {
4713 return ndr_pull_error(ndr
, NDR_ERR_ARRAY_SIZE
, "Bad array size %u should exceed array length %u", size_dependencies_1
, length_dependencies_1
);
4715 NDR_CHECK(ndr_check_string_terminator(ndr
, length_dependencies_1
, sizeof(uint16_t)));
4716 NDR_CHECK(ndr_pull_charset(ndr
, NDR_SCALARS
, &r
->in
.dependencies
, length_dependencies_1
, sizeof(uint16_t), CH_UTF16
));
4717 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_dependencies_0
, 0);
4719 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_service_start_name
));
4720 if (_ptr_service_start_name
) {
4721 NDR_PULL_ALLOC(ndr
, r
->in
.service_start_name
);
4723 r
->in
.service_start_name
= NULL
;
4725 if (r
->in
.service_start_name
) {
4726 _mem_save_service_start_name_0
= NDR_PULL_GET_MEM_CTX(ndr
);
4727 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.service_start_name
, 0);
4728 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->in
.service_start_name
));
4729 NDR_CHECK(ndr_pull_array_length(ndr
, &r
->in
.service_start_name
));
4730 size_service_start_name_1
= ndr_get_array_size(ndr
, &r
->in
.service_start_name
);
4731 length_service_start_name_1
= ndr_get_array_length(ndr
, &r
->in
.service_start_name
);
4732 if (length_service_start_name_1
> size_service_start_name_1
) {
4733 return ndr_pull_error(ndr
, NDR_ERR_ARRAY_SIZE
, "Bad array size %u should exceed array length %u", size_service_start_name_1
, length_service_start_name_1
);
4735 NDR_CHECK(ndr_check_string_terminator(ndr
, length_service_start_name_1
, sizeof(uint16_t)));
4736 NDR_CHECK(ndr_pull_charset(ndr
, NDR_SCALARS
, &r
->in
.service_start_name
, length_service_start_name_1
, sizeof(uint16_t), CH_UTF16
));
4737 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_service_start_name_0
, 0);
4739 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_password
));
4740 if (_ptr_password
) {
4741 NDR_PULL_ALLOC(ndr
, r
->in
.password
);
4743 r
->in
.password
= NULL
;
4745 if (r
->in
.password
) {
4746 _mem_save_password_0
= NDR_PULL_GET_MEM_CTX(ndr
);
4747 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.password
, 0);
4748 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->in
.password
));
4749 NDR_CHECK(ndr_pull_array_length(ndr
, &r
->in
.password
));
4750 size_password_1
= ndr_get_array_size(ndr
, &r
->in
.password
);
4751 length_password_1
= ndr_get_array_length(ndr
, &r
->in
.password
);
4752 if (length_password_1
> size_password_1
) {
4753 return ndr_pull_error(ndr
, NDR_ERR_ARRAY_SIZE
, "Bad array size %u should exceed array length %u", size_password_1
, length_password_1
);
4755 NDR_CHECK(ndr_check_string_terminator(ndr
, length_password_1
, sizeof(uint16_t)));
4756 NDR_CHECK(ndr_pull_charset(ndr
, NDR_SCALARS
, &r
->in
.password
, length_password_1
, sizeof(uint16_t), CH_UTF16
));
4757 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_password_0
, 0);
4760 if (flags
& NDR_OUT
) {
4761 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_TagId
));
4763 NDR_PULL_ALLOC(ndr
, r
->out
.TagId
);
4765 r
->out
.TagId
= NULL
;
4768 _mem_save_TagId_0
= NDR_PULL_GET_MEM_CTX(ndr
);
4769 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.TagId
, 0);
4770 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, r
->out
.TagId
));
4771 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_TagId_0
, 0);
4773 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
4775 return NDR_ERR_SUCCESS
;
4778 _PUBLIC_
void ndr_print_svcctl_CreateServiceA(struct ndr_print
*ndr
, const char *name
, int flags
, const struct svcctl_CreateServiceA
*r
)
4780 ndr_print_struct(ndr
, name
, "svcctl_CreateServiceA");
4782 if (flags
& NDR_SET_VALUES
) {
4783 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
4785 if (flags
& NDR_IN
) {
4786 ndr_print_struct(ndr
, "in", "svcctl_CreateServiceA");
4788 ndr_print_ptr(ndr
, "handle", r
->in
.handle
);
4790 ndr_print_policy_handle(ndr
, "handle", r
->in
.handle
);
4792 ndr_print_ptr(ndr
, "ServiceName", r
->in
.ServiceName
);
4794 if (r
->in
.ServiceName
) {
4795 ndr_print_string(ndr
, "ServiceName", r
->in
.ServiceName
);
4798 ndr_print_ptr(ndr
, "DisplayName", r
->in
.DisplayName
);
4800 if (r
->in
.DisplayName
) {
4801 ndr_print_string(ndr
, "DisplayName", r
->in
.DisplayName
);
4804 ndr_print_uint32(ndr
, "desired_access", r
->in
.desired_access
);
4805 ndr_print_uint32(ndr
, "type", r
->in
.type
);
4806 ndr_print_svcctl_StartType(ndr
, "start_type", r
->in
.start_type
);
4807 ndr_print_svcctl_ErrorControl(ndr
, "error_control", r
->in
.error_control
);
4808 ndr_print_ptr(ndr
, "binary_path", r
->in
.binary_path
);
4810 if (r
->in
.binary_path
) {
4811 ndr_print_string(ndr
, "binary_path", r
->in
.binary_path
);
4814 ndr_print_ptr(ndr
, "LoadOrderGroupKey", r
->in
.LoadOrderGroupKey
);
4816 if (r
->in
.LoadOrderGroupKey
) {
4817 ndr_print_string(ndr
, "LoadOrderGroupKey", r
->in
.LoadOrderGroupKey
);
4820 ndr_print_ptr(ndr
, "dependencies", r
->in
.dependencies
);
4822 if (r
->in
.dependencies
) {
4823 ndr_print_string(ndr
, "dependencies", r
->in
.dependencies
);
4826 ndr_print_ptr(ndr
, "service_start_name", r
->in
.service_start_name
);
4828 if (r
->in
.service_start_name
) {
4829 ndr_print_string(ndr
, "service_start_name", r
->in
.service_start_name
);
4832 ndr_print_ptr(ndr
, "password", r
->in
.password
);
4834 if (r
->in
.password
) {
4835 ndr_print_string(ndr
, "password", r
->in
.password
);
4840 if (flags
& NDR_OUT
) {
4841 ndr_print_struct(ndr
, "out", "svcctl_CreateServiceA");
4843 ndr_print_ptr(ndr
, "TagId", r
->out
.TagId
);
4846 ndr_print_uint32(ndr
, "TagId", *r
->out
.TagId
);
4849 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
4855 static enum ndr_err_code
ndr_push_svcctl_EnumDependentServicesA(struct ndr_push
*ndr
, int flags
, const struct svcctl_EnumDependentServicesA
*r
)
4857 if (flags
& NDR_IN
) {
4858 if (r
->in
.service
== NULL
) {
4859 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
4861 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
, r
->in
.service
));
4862 NDR_CHECK(ndr_push_svcctl_ServiceState(ndr
, NDR_SCALARS
, r
->in
.state
));
4863 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.offered
));
4865 if (flags
& NDR_OUT
) {
4866 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->out
.service_status
));
4867 if (r
->out
.service_status
) {
4868 NDR_CHECK(ndr_push_ENUM_SERVICE_STATUSA(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->out
.service_status
));
4870 if (r
->out
.needed
== NULL
) {
4871 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
4873 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, *r
->out
.needed
));
4874 if (r
->out
.services_returned
== NULL
) {
4875 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
4877 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, *r
->out
.services_returned
));
4878 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
4880 return NDR_ERR_SUCCESS
;
4883 static enum ndr_err_code
ndr_pull_svcctl_EnumDependentServicesA(struct ndr_pull
*ndr
, int flags
, struct svcctl_EnumDependentServicesA
*r
)
4885 uint32_t _ptr_service_status
;
4886 TALLOC_CTX
*_mem_save_service_0
;
4887 TALLOC_CTX
*_mem_save_service_status_0
;
4888 TALLOC_CTX
*_mem_save_needed_0
;
4889 TALLOC_CTX
*_mem_save_services_returned_0
;
4890 if (flags
& NDR_IN
) {
4891 ZERO_STRUCT(r
->out
);
4893 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
4894 NDR_PULL_ALLOC(ndr
, r
->in
.service
);
4896 _mem_save_service_0
= NDR_PULL_GET_MEM_CTX(ndr
);
4897 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.service
, LIBNDR_FLAG_REF_ALLOC
);
4898 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
, r
->in
.service
));
4899 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_service_0
, LIBNDR_FLAG_REF_ALLOC
);
4900 NDR_CHECK(ndr_pull_svcctl_ServiceState(ndr
, NDR_SCALARS
, &r
->in
.state
));
4901 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.offered
));
4902 NDR_PULL_ALLOC(ndr
, r
->out
.needed
);
4903 ZERO_STRUCTP(r
->out
.needed
);
4904 NDR_PULL_ALLOC(ndr
, r
->out
.services_returned
);
4905 ZERO_STRUCTP(r
->out
.services_returned
);
4907 if (flags
& NDR_OUT
) {
4908 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_service_status
));
4909 if (_ptr_service_status
) {
4910 NDR_PULL_ALLOC(ndr
, r
->out
.service_status
);
4912 r
->out
.service_status
= NULL
;
4914 if (r
->out
.service_status
) {
4915 _mem_save_service_status_0
= NDR_PULL_GET_MEM_CTX(ndr
);
4916 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.service_status
, 0);
4917 NDR_CHECK(ndr_pull_ENUM_SERVICE_STATUSA(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->out
.service_status
));
4918 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_service_status_0
, 0);
4920 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
4921 NDR_PULL_ALLOC(ndr
, r
->out
.needed
);
4923 _mem_save_needed_0
= NDR_PULL_GET_MEM_CTX(ndr
);
4924 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.needed
, LIBNDR_FLAG_REF_ALLOC
);
4925 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, r
->out
.needed
));
4926 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_needed_0
, LIBNDR_FLAG_REF_ALLOC
);
4927 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
4928 NDR_PULL_ALLOC(ndr
, r
->out
.services_returned
);
4930 _mem_save_services_returned_0
= NDR_PULL_GET_MEM_CTX(ndr
);
4931 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.services_returned
, LIBNDR_FLAG_REF_ALLOC
);
4932 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, r
->out
.services_returned
));
4933 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_services_returned_0
, LIBNDR_FLAG_REF_ALLOC
);
4934 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
4936 return NDR_ERR_SUCCESS
;
4939 _PUBLIC_
void ndr_print_svcctl_EnumDependentServicesA(struct ndr_print
*ndr
, const char *name
, int flags
, const struct svcctl_EnumDependentServicesA
*r
)
4941 ndr_print_struct(ndr
, name
, "svcctl_EnumDependentServicesA");
4943 if (flags
& NDR_SET_VALUES
) {
4944 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
4946 if (flags
& NDR_IN
) {
4947 ndr_print_struct(ndr
, "in", "svcctl_EnumDependentServicesA");
4949 ndr_print_ptr(ndr
, "service", r
->in
.service
);
4951 ndr_print_policy_handle(ndr
, "service", r
->in
.service
);
4953 ndr_print_svcctl_ServiceState(ndr
, "state", r
->in
.state
);
4954 ndr_print_uint32(ndr
, "offered", r
->in
.offered
);
4957 if (flags
& NDR_OUT
) {
4958 ndr_print_struct(ndr
, "out", "svcctl_EnumDependentServicesA");
4960 ndr_print_ptr(ndr
, "service_status", r
->out
.service_status
);
4962 if (r
->out
.service_status
) {
4963 ndr_print_ENUM_SERVICE_STATUSA(ndr
, "service_status", r
->out
.service_status
);
4966 ndr_print_ptr(ndr
, "needed", r
->out
.needed
);
4968 ndr_print_uint32(ndr
, "needed", *r
->out
.needed
);
4970 ndr_print_ptr(ndr
, "services_returned", r
->out
.services_returned
);
4972 ndr_print_uint32(ndr
, "services_returned", *r
->out
.services_returned
);
4974 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
4980 static enum ndr_err_code
ndr_push_svcctl_EnumServicesStatusA(struct ndr_push
*ndr
, int flags
, const struct svcctl_EnumServicesStatusA
*r
)
4982 if (flags
& NDR_IN
) {
4983 if (r
->in
.handle
== NULL
) {
4984 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
4986 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
, r
->in
.handle
));
4987 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.type
));
4988 NDR_CHECK(ndr_push_svcctl_ServiceState(ndr
, NDR_SCALARS
, r
->in
.state
));
4989 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.offered
));
4990 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.resume_handle
));
4991 if (r
->in
.resume_handle
) {
4992 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, *r
->in
.resume_handle
));
4995 if (flags
& NDR_OUT
) {
4996 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.offered
));
4997 NDR_CHECK(ndr_push_array_uint8(ndr
, NDR_SCALARS
, r
->out
.service
, r
->in
.offered
));
4998 if (r
->out
.needed
== NULL
) {
4999 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
5001 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, *r
->out
.needed
));
5002 if (r
->out
.services_returned
== NULL
) {
5003 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
5005 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, *r
->out
.services_returned
));
5006 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->out
.resume_handle
));
5007 if (r
->out
.resume_handle
) {
5008 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, *r
->out
.resume_handle
));
5010 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
5012 return NDR_ERR_SUCCESS
;
5015 static enum ndr_err_code
ndr_pull_svcctl_EnumServicesStatusA(struct ndr_pull
*ndr
, int flags
, struct svcctl_EnumServicesStatusA
*r
)
5017 uint32_t size_service_0
= 0;
5018 uint32_t _ptr_resume_handle
;
5019 TALLOC_CTX
*_mem_save_handle_0
;
5020 TALLOC_CTX
*_mem_save_needed_0
;
5021 TALLOC_CTX
*_mem_save_services_returned_0
;
5022 TALLOC_CTX
*_mem_save_resume_handle_0
;
5023 if (flags
& NDR_IN
) {
5024 ZERO_STRUCT(r
->out
);
5026 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
5027 NDR_PULL_ALLOC(ndr
, r
->in
.handle
);
5029 _mem_save_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
5030 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.handle
, LIBNDR_FLAG_REF_ALLOC
);
5031 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
, r
->in
.handle
));
5032 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_handle_0
, LIBNDR_FLAG_REF_ALLOC
);
5033 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.type
));
5034 NDR_CHECK(ndr_pull_svcctl_ServiceState(ndr
, NDR_SCALARS
, &r
->in
.state
));
5035 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.offered
));
5036 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_resume_handle
));
5037 if (_ptr_resume_handle
) {
5038 NDR_PULL_ALLOC(ndr
, r
->in
.resume_handle
);
5040 r
->in
.resume_handle
= NULL
;
5042 if (r
->in
.resume_handle
) {
5043 _mem_save_resume_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
5044 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.resume_handle
, 0);
5045 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, r
->in
.resume_handle
));
5046 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_resume_handle_0
, 0);
5048 NDR_PULL_ALLOC(ndr
, r
->out
.needed
);
5049 ZERO_STRUCTP(r
->out
.needed
);
5050 NDR_PULL_ALLOC(ndr
, r
->out
.services_returned
);
5051 ZERO_STRUCTP(r
->out
.services_returned
);
5053 if (flags
& NDR_OUT
) {
5054 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->out
.service
));
5055 size_service_0
= ndr_get_array_size(ndr
, &r
->out
.service
);
5056 NDR_PULL_ALLOC_N(ndr
, r
->out
.service
, size_service_0
);
5057 NDR_CHECK(ndr_pull_array_uint8(ndr
, NDR_SCALARS
, r
->out
.service
, size_service_0
));
5058 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
5059 NDR_PULL_ALLOC(ndr
, r
->out
.needed
);
5061 _mem_save_needed_0
= NDR_PULL_GET_MEM_CTX(ndr
);
5062 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.needed
, LIBNDR_FLAG_REF_ALLOC
);
5063 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, r
->out
.needed
));
5064 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_needed_0
, LIBNDR_FLAG_REF_ALLOC
);
5065 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
5066 NDR_PULL_ALLOC(ndr
, r
->out
.services_returned
);
5068 _mem_save_services_returned_0
= NDR_PULL_GET_MEM_CTX(ndr
);
5069 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.services_returned
, LIBNDR_FLAG_REF_ALLOC
);
5070 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, r
->out
.services_returned
));
5071 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_services_returned_0
, LIBNDR_FLAG_REF_ALLOC
);
5072 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_resume_handle
));
5073 if (_ptr_resume_handle
) {
5074 NDR_PULL_ALLOC(ndr
, r
->out
.resume_handle
);
5076 r
->out
.resume_handle
= NULL
;
5078 if (r
->out
.resume_handle
) {
5079 _mem_save_resume_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
5080 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.resume_handle
, 0);
5081 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, r
->out
.resume_handle
));
5082 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_resume_handle_0
, 0);
5084 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
5085 if (r
->out
.service
) {
5086 NDR_CHECK(ndr_check_array_size(ndr
, (void*)&r
->out
.service
, r
->in
.offered
));
5089 return NDR_ERR_SUCCESS
;
5092 _PUBLIC_
void ndr_print_svcctl_EnumServicesStatusA(struct ndr_print
*ndr
, const char *name
, int flags
, const struct svcctl_EnumServicesStatusA
*r
)
5094 ndr_print_struct(ndr
, name
, "svcctl_EnumServicesStatusA");
5096 if (flags
& NDR_SET_VALUES
) {
5097 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
5099 if (flags
& NDR_IN
) {
5100 ndr_print_struct(ndr
, "in", "svcctl_EnumServicesStatusA");
5102 ndr_print_ptr(ndr
, "handle", r
->in
.handle
);
5104 ndr_print_policy_handle(ndr
, "handle", r
->in
.handle
);
5106 ndr_print_uint32(ndr
, "type", r
->in
.type
);
5107 ndr_print_svcctl_ServiceState(ndr
, "state", r
->in
.state
);
5108 ndr_print_uint32(ndr
, "offered", r
->in
.offered
);
5109 ndr_print_ptr(ndr
, "resume_handle", r
->in
.resume_handle
);
5111 if (r
->in
.resume_handle
) {
5112 ndr_print_uint32(ndr
, "resume_handle", *r
->in
.resume_handle
);
5117 if (flags
& NDR_OUT
) {
5118 ndr_print_struct(ndr
, "out", "svcctl_EnumServicesStatusA");
5120 ndr_print_array_uint8(ndr
, "service", r
->out
.service
, r
->in
.offered
);
5121 ndr_print_ptr(ndr
, "needed", r
->out
.needed
);
5123 ndr_print_uint32(ndr
, "needed", *r
->out
.needed
);
5125 ndr_print_ptr(ndr
, "services_returned", r
->out
.services_returned
);
5127 ndr_print_uint32(ndr
, "services_returned", *r
->out
.services_returned
);
5129 ndr_print_ptr(ndr
, "resume_handle", r
->out
.resume_handle
);
5131 if (r
->out
.resume_handle
) {
5132 ndr_print_uint32(ndr
, "resume_handle", *r
->out
.resume_handle
);
5135 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
5141 static enum ndr_err_code
ndr_push_svcctl_OpenSCManagerA(struct ndr_push
*ndr
, int flags
, const struct svcctl_OpenSCManagerA
*r
)
5143 if (flags
& NDR_IN
) {
5144 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.MachineName
));
5145 if (r
->in
.MachineName
) {
5146 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.MachineName
, CH_UTF16
)));
5147 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, 0));
5148 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.MachineName
, CH_UTF16
)));
5149 NDR_CHECK(ndr_push_charset(ndr
, NDR_SCALARS
, r
->in
.MachineName
, ndr_charset_length(r
->in
.MachineName
, CH_UTF16
), sizeof(uint16_t), CH_UTF16
));
5151 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.DatabaseName
));
5152 if (r
->in
.DatabaseName
) {
5153 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.DatabaseName
, CH_UTF16
)));
5154 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, 0));
5155 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.DatabaseName
, CH_UTF16
)));
5156 NDR_CHECK(ndr_push_charset(ndr
, NDR_SCALARS
, r
->in
.DatabaseName
, ndr_charset_length(r
->in
.DatabaseName
, CH_UTF16
), sizeof(uint16_t), CH_UTF16
));
5158 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.access_mask
));
5160 if (flags
& NDR_OUT
) {
5161 if (r
->out
.handle
== NULL
) {
5162 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
5164 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
, r
->out
.handle
));
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_OpenSCManagerA(struct ndr_pull
*ndr
, int flags
, struct svcctl_OpenSCManagerA
*r
)
5172 uint32_t _ptr_MachineName
;
5173 uint32_t size_MachineName_1
= 0;
5174 uint32_t length_MachineName_1
= 0;
5175 uint32_t _ptr_DatabaseName
;
5176 uint32_t size_DatabaseName_1
= 0;
5177 uint32_t length_DatabaseName_1
= 0;
5178 TALLOC_CTX
*_mem_save_MachineName_0
;
5179 TALLOC_CTX
*_mem_save_DatabaseName_0
;
5180 TALLOC_CTX
*_mem_save_handle_0
;
5181 if (flags
& NDR_IN
) {
5182 ZERO_STRUCT(r
->out
);
5184 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_MachineName
));
5185 if (_ptr_MachineName
) {
5186 NDR_PULL_ALLOC(ndr
, r
->in
.MachineName
);
5188 r
->in
.MachineName
= NULL
;
5190 if (r
->in
.MachineName
) {
5191 _mem_save_MachineName_0
= NDR_PULL_GET_MEM_CTX(ndr
);
5192 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.MachineName
, 0);
5193 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->in
.MachineName
));
5194 NDR_CHECK(ndr_pull_array_length(ndr
, &r
->in
.MachineName
));
5195 size_MachineName_1
= ndr_get_array_size(ndr
, &r
->in
.MachineName
);
5196 length_MachineName_1
= ndr_get_array_length(ndr
, &r
->in
.MachineName
);
5197 if (length_MachineName_1
> size_MachineName_1
) {
5198 return ndr_pull_error(ndr
, NDR_ERR_ARRAY_SIZE
, "Bad array size %u should exceed array length %u", size_MachineName_1
, length_MachineName_1
);
5200 NDR_CHECK(ndr_check_string_terminator(ndr
, length_MachineName_1
, sizeof(uint16_t)));
5201 NDR_CHECK(ndr_pull_charset(ndr
, NDR_SCALARS
, &r
->in
.MachineName
, length_MachineName_1
, sizeof(uint16_t), CH_UTF16
));
5202 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_MachineName_0
, 0);
5204 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_DatabaseName
));
5205 if (_ptr_DatabaseName
) {
5206 NDR_PULL_ALLOC(ndr
, r
->in
.DatabaseName
);
5208 r
->in
.DatabaseName
= NULL
;
5210 if (r
->in
.DatabaseName
) {
5211 _mem_save_DatabaseName_0
= NDR_PULL_GET_MEM_CTX(ndr
);
5212 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.DatabaseName
, 0);
5213 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->in
.DatabaseName
));
5214 NDR_CHECK(ndr_pull_array_length(ndr
, &r
->in
.DatabaseName
));
5215 size_DatabaseName_1
= ndr_get_array_size(ndr
, &r
->in
.DatabaseName
);
5216 length_DatabaseName_1
= ndr_get_array_length(ndr
, &r
->in
.DatabaseName
);
5217 if (length_DatabaseName_1
> size_DatabaseName_1
) {
5218 return ndr_pull_error(ndr
, NDR_ERR_ARRAY_SIZE
, "Bad array size %u should exceed array length %u", size_DatabaseName_1
, length_DatabaseName_1
);
5220 NDR_CHECK(ndr_check_string_terminator(ndr
, length_DatabaseName_1
, sizeof(uint16_t)));
5221 NDR_CHECK(ndr_pull_charset(ndr
, NDR_SCALARS
, &r
->in
.DatabaseName
, length_DatabaseName_1
, sizeof(uint16_t), CH_UTF16
));
5222 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_DatabaseName_0
, 0);
5224 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.access_mask
));
5225 NDR_PULL_ALLOC(ndr
, r
->out
.handle
);
5226 ZERO_STRUCTP(r
->out
.handle
);
5228 if (flags
& NDR_OUT
) {
5229 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
5230 NDR_PULL_ALLOC(ndr
, r
->out
.handle
);
5232 _mem_save_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
5233 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.handle
, LIBNDR_FLAG_REF_ALLOC
);
5234 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
, r
->out
.handle
));
5235 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_handle_0
, LIBNDR_FLAG_REF_ALLOC
);
5236 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
5238 return NDR_ERR_SUCCESS
;
5241 _PUBLIC_
void ndr_print_svcctl_OpenSCManagerA(struct ndr_print
*ndr
, const char *name
, int flags
, const struct svcctl_OpenSCManagerA
*r
)
5243 ndr_print_struct(ndr
, name
, "svcctl_OpenSCManagerA");
5245 if (flags
& NDR_SET_VALUES
) {
5246 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
5248 if (flags
& NDR_IN
) {
5249 ndr_print_struct(ndr
, "in", "svcctl_OpenSCManagerA");
5251 ndr_print_ptr(ndr
, "MachineName", r
->in
.MachineName
);
5253 if (r
->in
.MachineName
) {
5254 ndr_print_string(ndr
, "MachineName", r
->in
.MachineName
);
5257 ndr_print_ptr(ndr
, "DatabaseName", r
->in
.DatabaseName
);
5259 if (r
->in
.DatabaseName
) {
5260 ndr_print_string(ndr
, "DatabaseName", r
->in
.DatabaseName
);
5263 ndr_print_uint32(ndr
, "access_mask", r
->in
.access_mask
);
5266 if (flags
& NDR_OUT
) {
5267 ndr_print_struct(ndr
, "out", "svcctl_OpenSCManagerA");
5269 ndr_print_ptr(ndr
, "handle", r
->out
.handle
);
5271 ndr_print_policy_handle(ndr
, "handle", r
->out
.handle
);
5273 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
5279 static enum ndr_err_code
ndr_push_svcctl_OpenServiceA(struct ndr_push
*ndr
, int flags
, const struct svcctl_OpenServiceA
*r
)
5281 if (flags
& NDR_IN
) {
5282 if (r
->in
.scmanager_handle
== NULL
) {
5283 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
5285 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
, r
->in
.scmanager_handle
));
5286 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.ServiceName
));
5287 if (r
->in
.ServiceName
) {
5288 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.ServiceName
, CH_UTF16
)));
5289 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, 0));
5290 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.ServiceName
, CH_UTF16
)));
5291 NDR_CHECK(ndr_push_charset(ndr
, NDR_SCALARS
, r
->in
.ServiceName
, ndr_charset_length(r
->in
.ServiceName
, CH_UTF16
), sizeof(uint16_t), CH_UTF16
));
5293 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.access_mask
));
5295 if (flags
& NDR_OUT
) {
5296 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
5298 return NDR_ERR_SUCCESS
;
5301 static enum ndr_err_code
ndr_pull_svcctl_OpenServiceA(struct ndr_pull
*ndr
, int flags
, struct svcctl_OpenServiceA
*r
)
5303 uint32_t _ptr_ServiceName
;
5304 uint32_t size_ServiceName_1
= 0;
5305 uint32_t length_ServiceName_1
= 0;
5306 TALLOC_CTX
*_mem_save_scmanager_handle_0
;
5307 TALLOC_CTX
*_mem_save_ServiceName_0
;
5308 if (flags
& NDR_IN
) {
5309 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
5310 NDR_PULL_ALLOC(ndr
, r
->in
.scmanager_handle
);
5312 _mem_save_scmanager_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
5313 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.scmanager_handle
, LIBNDR_FLAG_REF_ALLOC
);
5314 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
, r
->in
.scmanager_handle
));
5315 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_scmanager_handle_0
, LIBNDR_FLAG_REF_ALLOC
);
5316 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_ServiceName
));
5317 if (_ptr_ServiceName
) {
5318 NDR_PULL_ALLOC(ndr
, r
->in
.ServiceName
);
5320 r
->in
.ServiceName
= NULL
;
5322 if (r
->in
.ServiceName
) {
5323 _mem_save_ServiceName_0
= NDR_PULL_GET_MEM_CTX(ndr
);
5324 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.ServiceName
, 0);
5325 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->in
.ServiceName
));
5326 NDR_CHECK(ndr_pull_array_length(ndr
, &r
->in
.ServiceName
));
5327 size_ServiceName_1
= ndr_get_array_size(ndr
, &r
->in
.ServiceName
);
5328 length_ServiceName_1
= ndr_get_array_length(ndr
, &r
->in
.ServiceName
);
5329 if (length_ServiceName_1
> size_ServiceName_1
) {
5330 return ndr_pull_error(ndr
, NDR_ERR_ARRAY_SIZE
, "Bad array size %u should exceed array length %u", size_ServiceName_1
, length_ServiceName_1
);
5332 NDR_CHECK(ndr_check_string_terminator(ndr
, length_ServiceName_1
, sizeof(uint16_t)));
5333 NDR_CHECK(ndr_pull_charset(ndr
, NDR_SCALARS
, &r
->in
.ServiceName
, length_ServiceName_1
, sizeof(uint16_t), CH_UTF16
));
5334 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_ServiceName_0
, 0);
5336 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.access_mask
));
5338 if (flags
& NDR_OUT
) {
5339 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
5341 return NDR_ERR_SUCCESS
;
5344 _PUBLIC_
void ndr_print_svcctl_OpenServiceA(struct ndr_print
*ndr
, const char *name
, int flags
, const struct svcctl_OpenServiceA
*r
)
5346 ndr_print_struct(ndr
, name
, "svcctl_OpenServiceA");
5348 if (flags
& NDR_SET_VALUES
) {
5349 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
5351 if (flags
& NDR_IN
) {
5352 ndr_print_struct(ndr
, "in", "svcctl_OpenServiceA");
5354 ndr_print_ptr(ndr
, "scmanager_handle", r
->in
.scmanager_handle
);
5356 ndr_print_policy_handle(ndr
, "scmanager_handle", r
->in
.scmanager_handle
);
5358 ndr_print_ptr(ndr
, "ServiceName", r
->in
.ServiceName
);
5360 if (r
->in
.ServiceName
) {
5361 ndr_print_string(ndr
, "ServiceName", r
->in
.ServiceName
);
5364 ndr_print_uint32(ndr
, "access_mask", r
->in
.access_mask
);
5367 if (flags
& NDR_OUT
) {
5368 ndr_print_struct(ndr
, "out", "svcctl_OpenServiceA");
5370 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
5376 static enum ndr_err_code
ndr_push_svcctl_QueryServiceConfigA(struct ndr_push
*ndr
, int flags
, const struct svcctl_QueryServiceConfigA
*r
)
5378 if (flags
& NDR_IN
) {
5379 if (r
->in
.handle
== NULL
) {
5380 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
5382 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
, r
->in
.handle
));
5383 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.offered
));
5385 if (flags
& NDR_OUT
) {
5386 NDR_CHECK(ndr_push_array_uint8(ndr
, NDR_SCALARS
, r
->out
.query
, r
->in
.offered
));
5387 if (r
->out
.needed
== NULL
) {
5388 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
5390 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, *r
->out
.needed
));
5391 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
5393 return NDR_ERR_SUCCESS
;
5396 static enum ndr_err_code
ndr_pull_svcctl_QueryServiceConfigA(struct ndr_pull
*ndr
, int flags
, struct svcctl_QueryServiceConfigA
*r
)
5398 uint32_t size_query_0
= 0;
5399 TALLOC_CTX
*_mem_save_handle_0
;
5400 TALLOC_CTX
*_mem_save_needed_0
;
5401 if (flags
& NDR_IN
) {
5402 ZERO_STRUCT(r
->out
);
5404 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
5405 NDR_PULL_ALLOC(ndr
, r
->in
.handle
);
5407 _mem_save_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
5408 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.handle
, LIBNDR_FLAG_REF_ALLOC
);
5409 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
, r
->in
.handle
));
5410 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_handle_0
, LIBNDR_FLAG_REF_ALLOC
);
5411 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.offered
));
5412 NDR_PULL_ALLOC(ndr
, r
->out
.needed
);
5413 ZERO_STRUCTP(r
->out
.needed
);
5415 if (flags
& NDR_OUT
) {
5416 size_query_0
= r
->in
.offered
;
5417 NDR_PULL_ALLOC_N(ndr
, r
->out
.query
, size_query_0
);
5418 NDR_CHECK(ndr_pull_array_uint8(ndr
, NDR_SCALARS
, r
->out
.query
, size_query_0
));
5419 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
5420 NDR_PULL_ALLOC(ndr
, r
->out
.needed
);
5422 _mem_save_needed_0
= NDR_PULL_GET_MEM_CTX(ndr
);
5423 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.needed
, LIBNDR_FLAG_REF_ALLOC
);
5424 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, r
->out
.needed
));
5425 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_needed_0
, LIBNDR_FLAG_REF_ALLOC
);
5426 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
5428 return NDR_ERR_SUCCESS
;
5431 _PUBLIC_
void ndr_print_svcctl_QueryServiceConfigA(struct ndr_print
*ndr
, const char *name
, int flags
, const struct svcctl_QueryServiceConfigA
*r
)
5433 ndr_print_struct(ndr
, name
, "svcctl_QueryServiceConfigA");
5435 if (flags
& NDR_SET_VALUES
) {
5436 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
5438 if (flags
& NDR_IN
) {
5439 ndr_print_struct(ndr
, "in", "svcctl_QueryServiceConfigA");
5441 ndr_print_ptr(ndr
, "handle", r
->in
.handle
);
5443 ndr_print_policy_handle(ndr
, "handle", r
->in
.handle
);
5445 ndr_print_uint32(ndr
, "offered", r
->in
.offered
);
5448 if (flags
& NDR_OUT
) {
5449 ndr_print_struct(ndr
, "out", "svcctl_QueryServiceConfigA");
5451 ndr_print_array_uint8(ndr
, "query", r
->out
.query
, r
->in
.offered
);
5452 ndr_print_ptr(ndr
, "needed", r
->out
.needed
);
5454 ndr_print_uint32(ndr
, "needed", *r
->out
.needed
);
5456 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
5462 static enum ndr_err_code
ndr_push_svcctl_QueryServiceLockStatusA(struct ndr_push
*ndr
, int flags
, const struct svcctl_QueryServiceLockStatusA
*r
)
5464 if (flags
& NDR_IN
) {
5465 if (r
->in
.handle
== NULL
) {
5466 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
5468 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
, r
->in
.handle
));
5469 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.offered
));
5471 if (flags
& NDR_OUT
) {
5472 if (r
->out
.lock_status
== NULL
) {
5473 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
5475 NDR_CHECK(ndr_push_SERVICE_LOCK_STATUS(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->out
.lock_status
));
5476 if (r
->out
.needed
== NULL
) {
5477 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
5479 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, *r
->out
.needed
));
5480 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
5482 return NDR_ERR_SUCCESS
;
5485 static enum ndr_err_code
ndr_pull_svcctl_QueryServiceLockStatusA(struct ndr_pull
*ndr
, int flags
, struct svcctl_QueryServiceLockStatusA
*r
)
5487 TALLOC_CTX
*_mem_save_handle_0
;
5488 TALLOC_CTX
*_mem_save_lock_status_0
;
5489 TALLOC_CTX
*_mem_save_needed_0
;
5490 if (flags
& NDR_IN
) {
5491 ZERO_STRUCT(r
->out
);
5493 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
5494 NDR_PULL_ALLOC(ndr
, r
->in
.handle
);
5496 _mem_save_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
5497 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.handle
, LIBNDR_FLAG_REF_ALLOC
);
5498 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
, r
->in
.handle
));
5499 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_handle_0
, LIBNDR_FLAG_REF_ALLOC
);
5500 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.offered
));
5501 NDR_PULL_ALLOC(ndr
, r
->out
.lock_status
);
5502 ZERO_STRUCTP(r
->out
.lock_status
);
5503 NDR_PULL_ALLOC(ndr
, r
->out
.needed
);
5504 ZERO_STRUCTP(r
->out
.needed
);
5506 if (flags
& NDR_OUT
) {
5507 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
5508 NDR_PULL_ALLOC(ndr
, r
->out
.lock_status
);
5510 _mem_save_lock_status_0
= NDR_PULL_GET_MEM_CTX(ndr
);
5511 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.lock_status
, LIBNDR_FLAG_REF_ALLOC
);
5512 NDR_CHECK(ndr_pull_SERVICE_LOCK_STATUS(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->out
.lock_status
));
5513 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_lock_status_0
, LIBNDR_FLAG_REF_ALLOC
);
5514 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
5515 NDR_PULL_ALLOC(ndr
, r
->out
.needed
);
5517 _mem_save_needed_0
= NDR_PULL_GET_MEM_CTX(ndr
);
5518 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.needed
, LIBNDR_FLAG_REF_ALLOC
);
5519 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, r
->out
.needed
));
5520 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_needed_0
, LIBNDR_FLAG_REF_ALLOC
);
5521 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
5523 return NDR_ERR_SUCCESS
;
5526 _PUBLIC_
void ndr_print_svcctl_QueryServiceLockStatusA(struct ndr_print
*ndr
, const char *name
, int flags
, const struct svcctl_QueryServiceLockStatusA
*r
)
5528 ndr_print_struct(ndr
, name
, "svcctl_QueryServiceLockStatusA");
5530 if (flags
& NDR_SET_VALUES
) {
5531 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
5533 if (flags
& NDR_IN
) {
5534 ndr_print_struct(ndr
, "in", "svcctl_QueryServiceLockStatusA");
5536 ndr_print_ptr(ndr
, "handle", r
->in
.handle
);
5538 ndr_print_policy_handle(ndr
, "handle", r
->in
.handle
);
5540 ndr_print_uint32(ndr
, "offered", r
->in
.offered
);
5543 if (flags
& NDR_OUT
) {
5544 ndr_print_struct(ndr
, "out", "svcctl_QueryServiceLockStatusA");
5546 ndr_print_ptr(ndr
, "lock_status", r
->out
.lock_status
);
5548 ndr_print_SERVICE_LOCK_STATUS(ndr
, "lock_status", r
->out
.lock_status
);
5550 ndr_print_ptr(ndr
, "needed", r
->out
.needed
);
5552 ndr_print_uint32(ndr
, "needed", *r
->out
.needed
);
5554 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
5560 static enum ndr_err_code
ndr_push_svcctl_StartServiceA(struct ndr_push
*ndr
, int flags
, const struct svcctl_StartServiceA
*r
)
5562 if (flags
& NDR_IN
) {
5563 if (r
->in
.handle
== NULL
) {
5564 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
5566 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
, r
->in
.handle
));
5567 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.NumArgs
));
5568 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.Arguments
));
5569 if (r
->in
.Arguments
) {
5570 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.Arguments
, CH_UTF16
)));
5571 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, 0));
5572 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.Arguments
, CH_UTF16
)));
5573 NDR_CHECK(ndr_push_charset(ndr
, NDR_SCALARS
, r
->in
.Arguments
, ndr_charset_length(r
->in
.Arguments
, CH_UTF16
), sizeof(uint16_t), CH_UTF16
));
5576 if (flags
& NDR_OUT
) {
5577 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
5579 return NDR_ERR_SUCCESS
;
5582 static enum ndr_err_code
ndr_pull_svcctl_StartServiceA(struct ndr_pull
*ndr
, int flags
, struct svcctl_StartServiceA
*r
)
5584 uint32_t _ptr_Arguments
;
5585 uint32_t size_Arguments_1
= 0;
5586 uint32_t length_Arguments_1
= 0;
5587 TALLOC_CTX
*_mem_save_handle_0
;
5588 TALLOC_CTX
*_mem_save_Arguments_0
;
5589 if (flags
& NDR_IN
) {
5590 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
5591 NDR_PULL_ALLOC(ndr
, r
->in
.handle
);
5593 _mem_save_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
5594 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.handle
, LIBNDR_FLAG_REF_ALLOC
);
5595 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
, r
->in
.handle
));
5596 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_handle_0
, LIBNDR_FLAG_REF_ALLOC
);
5597 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.NumArgs
));
5598 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_Arguments
));
5599 if (_ptr_Arguments
) {
5600 NDR_PULL_ALLOC(ndr
, r
->in
.Arguments
);
5602 r
->in
.Arguments
= NULL
;
5604 if (r
->in
.Arguments
) {
5605 _mem_save_Arguments_0
= NDR_PULL_GET_MEM_CTX(ndr
);
5606 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.Arguments
, 0);
5607 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->in
.Arguments
));
5608 NDR_CHECK(ndr_pull_array_length(ndr
, &r
->in
.Arguments
));
5609 size_Arguments_1
= ndr_get_array_size(ndr
, &r
->in
.Arguments
);
5610 length_Arguments_1
= ndr_get_array_length(ndr
, &r
->in
.Arguments
);
5611 if (length_Arguments_1
> size_Arguments_1
) {
5612 return ndr_pull_error(ndr
, NDR_ERR_ARRAY_SIZE
, "Bad array size %u should exceed array length %u", size_Arguments_1
, length_Arguments_1
);
5614 NDR_CHECK(ndr_check_string_terminator(ndr
, length_Arguments_1
, sizeof(uint16_t)));
5615 NDR_CHECK(ndr_pull_charset(ndr
, NDR_SCALARS
, &r
->in
.Arguments
, length_Arguments_1
, sizeof(uint16_t), CH_UTF16
));
5616 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_Arguments_0
, 0);
5619 if (flags
& NDR_OUT
) {
5620 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
5622 return NDR_ERR_SUCCESS
;
5625 _PUBLIC_
void ndr_print_svcctl_StartServiceA(struct ndr_print
*ndr
, const char *name
, int flags
, const struct svcctl_StartServiceA
*r
)
5627 ndr_print_struct(ndr
, name
, "svcctl_StartServiceA");
5629 if (flags
& NDR_SET_VALUES
) {
5630 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
5632 if (flags
& NDR_IN
) {
5633 ndr_print_struct(ndr
, "in", "svcctl_StartServiceA");
5635 ndr_print_ptr(ndr
, "handle", r
->in
.handle
);
5637 ndr_print_policy_handle(ndr
, "handle", r
->in
.handle
);
5639 ndr_print_uint32(ndr
, "NumArgs", r
->in
.NumArgs
);
5640 ndr_print_ptr(ndr
, "Arguments", r
->in
.Arguments
);
5642 if (r
->in
.Arguments
) {
5643 ndr_print_string(ndr
, "Arguments", r
->in
.Arguments
);
5648 if (flags
& NDR_OUT
) {
5649 ndr_print_struct(ndr
, "out", "svcctl_StartServiceA");
5651 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
5657 static enum ndr_err_code
ndr_push_svcctl_GetServiceDisplayNameA(struct ndr_push
*ndr
, int flags
, const struct svcctl_GetServiceDisplayNameA
*r
)
5659 if (flags
& NDR_IN
) {
5660 if (r
->in
.handle
== NULL
) {
5661 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
5663 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
, r
->in
.handle
));
5664 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.service_name
));
5665 if (r
->in
.service_name
) {
5666 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.service_name
, CH_UTF16
)));
5667 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, 0));
5668 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.service_name
, CH_UTF16
)));
5669 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
));
5671 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.display_name_length
));
5672 if (r
->in
.display_name_length
) {
5673 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, *r
->in
.display_name_length
));
5676 if (flags
& NDR_OUT
) {
5677 if (r
->out
.display_name
== NULL
) {
5678 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
5680 NDR_CHECK(ndr_push_unique_ptr(ndr
, *r
->out
.display_name
));
5681 if (*r
->out
.display_name
) {
5682 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(*r
->out
.display_name
, CH_UTF16
)));
5683 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, 0));
5684 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(*r
->out
.display_name
, CH_UTF16
)));
5685 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
));
5687 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->out
.display_name_length
));
5688 if (r
->out
.display_name_length
) {
5689 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, *r
->out
.display_name_length
));
5691 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
5693 return NDR_ERR_SUCCESS
;
5696 static enum ndr_err_code
ndr_pull_svcctl_GetServiceDisplayNameA(struct ndr_pull
*ndr
, int flags
, struct svcctl_GetServiceDisplayNameA
*r
)
5698 uint32_t _ptr_service_name
;
5699 uint32_t size_service_name_1
= 0;
5700 uint32_t length_service_name_1
= 0;
5701 uint32_t _ptr_display_name
;
5702 uint32_t size_display_name_2
= 0;
5703 uint32_t length_display_name_2
= 0;
5704 uint32_t _ptr_display_name_length
;
5705 TALLOC_CTX
*_mem_save_handle_0
;
5706 TALLOC_CTX
*_mem_save_service_name_0
;
5707 TALLOC_CTX
*_mem_save_display_name_0
;
5708 TALLOC_CTX
*_mem_save_display_name_1
;
5709 TALLOC_CTX
*_mem_save_display_name_length_0
;
5710 if (flags
& NDR_IN
) {
5711 ZERO_STRUCT(r
->out
);
5713 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
5714 NDR_PULL_ALLOC(ndr
, r
->in
.handle
);
5716 _mem_save_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
5717 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.handle
, LIBNDR_FLAG_REF_ALLOC
);
5718 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
, r
->in
.handle
));
5719 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_handle_0
, LIBNDR_FLAG_REF_ALLOC
);
5720 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_service_name
));
5721 if (_ptr_service_name
) {
5722 NDR_PULL_ALLOC(ndr
, r
->in
.service_name
);
5724 r
->in
.service_name
= NULL
;
5726 if (r
->in
.service_name
) {
5727 _mem_save_service_name_0
= NDR_PULL_GET_MEM_CTX(ndr
);
5728 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.service_name
, 0);
5729 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->in
.service_name
));
5730 NDR_CHECK(ndr_pull_array_length(ndr
, &r
->in
.service_name
));
5731 size_service_name_1
= ndr_get_array_size(ndr
, &r
->in
.service_name
);
5732 length_service_name_1
= ndr_get_array_length(ndr
, &r
->in
.service_name
);
5733 if (length_service_name_1
> size_service_name_1
) {
5734 return ndr_pull_error(ndr
, NDR_ERR_ARRAY_SIZE
, "Bad array size %u should exceed array length %u", size_service_name_1
, length_service_name_1
);
5736 NDR_CHECK(ndr_check_string_terminator(ndr
, length_service_name_1
, sizeof(uint16_t)));
5737 NDR_CHECK(ndr_pull_charset(ndr
, NDR_SCALARS
, &r
->in
.service_name
, length_service_name_1
, sizeof(uint16_t), CH_UTF16
));
5738 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_service_name_0
, 0);
5740 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_display_name_length
));
5741 if (_ptr_display_name_length
) {
5742 NDR_PULL_ALLOC(ndr
, r
->in
.display_name_length
);
5744 r
->in
.display_name_length
= NULL
;
5746 if (r
->in
.display_name_length
) {
5747 _mem_save_display_name_length_0
= NDR_PULL_GET_MEM_CTX(ndr
);
5748 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.display_name_length
, 0);
5749 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, r
->in
.display_name_length
));
5750 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_display_name_length_0
, 0);
5752 NDR_PULL_ALLOC(ndr
, r
->out
.display_name
);
5753 ZERO_STRUCTP(r
->out
.display_name
);
5755 if (flags
& NDR_OUT
) {
5756 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
5757 NDR_PULL_ALLOC(ndr
, r
->out
.display_name
);
5759 _mem_save_display_name_0
= NDR_PULL_GET_MEM_CTX(ndr
);
5760 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.display_name
, LIBNDR_FLAG_REF_ALLOC
);
5761 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_display_name
));
5762 if (_ptr_display_name
) {
5763 NDR_PULL_ALLOC(ndr
, *r
->out
.display_name
);
5765 *r
->out
.display_name
= NULL
;
5767 if (*r
->out
.display_name
) {
5768 _mem_save_display_name_1
= NDR_PULL_GET_MEM_CTX(ndr
);
5769 NDR_PULL_SET_MEM_CTX(ndr
, *r
->out
.display_name
, 0);
5770 NDR_CHECK(ndr_pull_array_size(ndr
, r
->out
.display_name
));
5771 NDR_CHECK(ndr_pull_array_length(ndr
, r
->out
.display_name
));
5772 size_display_name_2
= ndr_get_array_size(ndr
, r
->out
.display_name
);
5773 length_display_name_2
= ndr_get_array_length(ndr
, r
->out
.display_name
);
5774 if (length_display_name_2
> size_display_name_2
) {
5775 return ndr_pull_error(ndr
, NDR_ERR_ARRAY_SIZE
, "Bad array size %u should exceed array length %u", size_display_name_2
, length_display_name_2
);
5777 NDR_CHECK(ndr_check_string_terminator(ndr
, length_display_name_2
, sizeof(uint16_t)));
5778 NDR_CHECK(ndr_pull_charset(ndr
, NDR_SCALARS
, r
->out
.display_name
, length_display_name_2
, sizeof(uint16_t), CH_UTF16
));
5779 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_display_name_1
, 0);
5781 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_display_name_0
, LIBNDR_FLAG_REF_ALLOC
);
5782 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_display_name_length
));
5783 if (_ptr_display_name_length
) {
5784 NDR_PULL_ALLOC(ndr
, r
->out
.display_name_length
);
5786 r
->out
.display_name_length
= NULL
;
5788 if (r
->out
.display_name_length
) {
5789 _mem_save_display_name_length_0
= NDR_PULL_GET_MEM_CTX(ndr
);
5790 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.display_name_length
, 0);
5791 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, r
->out
.display_name_length
));
5792 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_display_name_length_0
, 0);
5794 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
5796 return NDR_ERR_SUCCESS
;
5799 _PUBLIC_
void ndr_print_svcctl_GetServiceDisplayNameA(struct ndr_print
*ndr
, const char *name
, int flags
, const struct svcctl_GetServiceDisplayNameA
*r
)
5801 ndr_print_struct(ndr
, name
, "svcctl_GetServiceDisplayNameA");
5803 if (flags
& NDR_SET_VALUES
) {
5804 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
5806 if (flags
& NDR_IN
) {
5807 ndr_print_struct(ndr
, "in", "svcctl_GetServiceDisplayNameA");
5809 ndr_print_ptr(ndr
, "handle", r
->in
.handle
);
5811 ndr_print_policy_handle(ndr
, "handle", r
->in
.handle
);
5813 ndr_print_ptr(ndr
, "service_name", r
->in
.service_name
);
5815 if (r
->in
.service_name
) {
5816 ndr_print_string(ndr
, "service_name", r
->in
.service_name
);
5819 ndr_print_ptr(ndr
, "display_name_length", r
->in
.display_name_length
);
5821 if (r
->in
.display_name_length
) {
5822 ndr_print_uint32(ndr
, "display_name_length", *r
->in
.display_name_length
);
5827 if (flags
& NDR_OUT
) {
5828 ndr_print_struct(ndr
, "out", "svcctl_GetServiceDisplayNameA");
5830 ndr_print_ptr(ndr
, "display_name", r
->out
.display_name
);
5832 ndr_print_ptr(ndr
, "display_name", *r
->out
.display_name
);
5834 if (*r
->out
.display_name
) {
5835 ndr_print_string(ndr
, "display_name", *r
->out
.display_name
);
5839 ndr_print_ptr(ndr
, "display_name_length", r
->out
.display_name_length
);
5841 if (r
->out
.display_name_length
) {
5842 ndr_print_uint32(ndr
, "display_name_length", *r
->out
.display_name_length
);
5845 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
5851 static enum ndr_err_code
ndr_push_svcctl_GetServiceKeyNameA(struct ndr_push
*ndr
, int flags
, const struct svcctl_GetServiceKeyNameA
*r
)
5853 if (flags
& NDR_IN
) {
5854 if (r
->in
.handle
== NULL
) {
5855 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
5857 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
, r
->in
.handle
));
5858 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.service_name
));
5859 if (r
->in
.service_name
) {
5860 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.service_name
, CH_UTF16
)));
5861 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, 0));
5862 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.service_name
, CH_UTF16
)));
5863 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
));
5865 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.display_name_length
));
5866 if (r
->in
.display_name_length
) {
5867 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, *r
->in
.display_name_length
));
5870 if (flags
& NDR_OUT
) {
5871 if (r
->out
.key_name
== NULL
) {
5872 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
5874 NDR_CHECK(ndr_push_unique_ptr(ndr
, *r
->out
.key_name
));
5875 if (*r
->out
.key_name
) {
5876 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(*r
->out
.key_name
, CH_UTF16
)));
5877 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, 0));
5878 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(*r
->out
.key_name
, CH_UTF16
)));
5879 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
));
5881 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->out
.display_name_length
));
5882 if (r
->out
.display_name_length
) {
5883 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, *r
->out
.display_name_length
));
5885 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
5887 return NDR_ERR_SUCCESS
;
5890 static enum ndr_err_code
ndr_pull_svcctl_GetServiceKeyNameA(struct ndr_pull
*ndr
, int flags
, struct svcctl_GetServiceKeyNameA
*r
)
5892 uint32_t _ptr_service_name
;
5893 uint32_t size_service_name_1
= 0;
5894 uint32_t length_service_name_1
= 0;
5895 uint32_t _ptr_key_name
;
5896 uint32_t size_key_name_2
= 0;
5897 uint32_t length_key_name_2
= 0;
5898 uint32_t _ptr_display_name_length
;
5899 TALLOC_CTX
*_mem_save_handle_0
;
5900 TALLOC_CTX
*_mem_save_service_name_0
;
5901 TALLOC_CTX
*_mem_save_key_name_0
;
5902 TALLOC_CTX
*_mem_save_key_name_1
;
5903 TALLOC_CTX
*_mem_save_display_name_length_0
;
5904 if (flags
& NDR_IN
) {
5905 ZERO_STRUCT(r
->out
);
5907 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
5908 NDR_PULL_ALLOC(ndr
, r
->in
.handle
);
5910 _mem_save_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
5911 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.handle
, LIBNDR_FLAG_REF_ALLOC
);
5912 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
, r
->in
.handle
));
5913 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_handle_0
, LIBNDR_FLAG_REF_ALLOC
);
5914 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_service_name
));
5915 if (_ptr_service_name
) {
5916 NDR_PULL_ALLOC(ndr
, r
->in
.service_name
);
5918 r
->in
.service_name
= NULL
;
5920 if (r
->in
.service_name
) {
5921 _mem_save_service_name_0
= NDR_PULL_GET_MEM_CTX(ndr
);
5922 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.service_name
, 0);
5923 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->in
.service_name
));
5924 NDR_CHECK(ndr_pull_array_length(ndr
, &r
->in
.service_name
));
5925 size_service_name_1
= ndr_get_array_size(ndr
, &r
->in
.service_name
);
5926 length_service_name_1
= ndr_get_array_length(ndr
, &r
->in
.service_name
);
5927 if (length_service_name_1
> size_service_name_1
) {
5928 return ndr_pull_error(ndr
, NDR_ERR_ARRAY_SIZE
, "Bad array size %u should exceed array length %u", size_service_name_1
, length_service_name_1
);
5930 NDR_CHECK(ndr_check_string_terminator(ndr
, length_service_name_1
, sizeof(uint16_t)));
5931 NDR_CHECK(ndr_pull_charset(ndr
, NDR_SCALARS
, &r
->in
.service_name
, length_service_name_1
, sizeof(uint16_t), CH_UTF16
));
5932 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_service_name_0
, 0);
5934 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_display_name_length
));
5935 if (_ptr_display_name_length
) {
5936 NDR_PULL_ALLOC(ndr
, r
->in
.display_name_length
);
5938 r
->in
.display_name_length
= NULL
;
5940 if (r
->in
.display_name_length
) {
5941 _mem_save_display_name_length_0
= NDR_PULL_GET_MEM_CTX(ndr
);
5942 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.display_name_length
, 0);
5943 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, r
->in
.display_name_length
));
5944 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_display_name_length_0
, 0);
5946 NDR_PULL_ALLOC(ndr
, r
->out
.key_name
);
5947 ZERO_STRUCTP(r
->out
.key_name
);
5949 if (flags
& NDR_OUT
) {
5950 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
5951 NDR_PULL_ALLOC(ndr
, r
->out
.key_name
);
5953 _mem_save_key_name_0
= NDR_PULL_GET_MEM_CTX(ndr
);
5954 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.key_name
, LIBNDR_FLAG_REF_ALLOC
);
5955 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_key_name
));
5956 if (_ptr_key_name
) {
5957 NDR_PULL_ALLOC(ndr
, *r
->out
.key_name
);
5959 *r
->out
.key_name
= NULL
;
5961 if (*r
->out
.key_name
) {
5962 _mem_save_key_name_1
= NDR_PULL_GET_MEM_CTX(ndr
);
5963 NDR_PULL_SET_MEM_CTX(ndr
, *r
->out
.key_name
, 0);
5964 NDR_CHECK(ndr_pull_array_size(ndr
, r
->out
.key_name
));
5965 NDR_CHECK(ndr_pull_array_length(ndr
, r
->out
.key_name
));
5966 size_key_name_2
= ndr_get_array_size(ndr
, r
->out
.key_name
);
5967 length_key_name_2
= ndr_get_array_length(ndr
, r
->out
.key_name
);
5968 if (length_key_name_2
> size_key_name_2
) {
5969 return ndr_pull_error(ndr
, NDR_ERR_ARRAY_SIZE
, "Bad array size %u should exceed array length %u", size_key_name_2
, length_key_name_2
);
5971 NDR_CHECK(ndr_check_string_terminator(ndr
, length_key_name_2
, sizeof(uint16_t)));
5972 NDR_CHECK(ndr_pull_charset(ndr
, NDR_SCALARS
, r
->out
.key_name
, length_key_name_2
, sizeof(uint16_t), CH_UTF16
));
5973 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_key_name_1
, 0);
5975 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_key_name_0
, LIBNDR_FLAG_REF_ALLOC
);
5976 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_display_name_length
));
5977 if (_ptr_display_name_length
) {
5978 NDR_PULL_ALLOC(ndr
, r
->out
.display_name_length
);
5980 r
->out
.display_name_length
= NULL
;
5982 if (r
->out
.display_name_length
) {
5983 _mem_save_display_name_length_0
= NDR_PULL_GET_MEM_CTX(ndr
);
5984 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.display_name_length
, 0);
5985 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, r
->out
.display_name_length
));
5986 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_display_name_length_0
, 0);
5988 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
5990 return NDR_ERR_SUCCESS
;
5993 _PUBLIC_
void ndr_print_svcctl_GetServiceKeyNameA(struct ndr_print
*ndr
, const char *name
, int flags
, const struct svcctl_GetServiceKeyNameA
*r
)
5995 ndr_print_struct(ndr
, name
, "svcctl_GetServiceKeyNameA");
5997 if (flags
& NDR_SET_VALUES
) {
5998 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
6000 if (flags
& NDR_IN
) {
6001 ndr_print_struct(ndr
, "in", "svcctl_GetServiceKeyNameA");
6003 ndr_print_ptr(ndr
, "handle", r
->in
.handle
);
6005 ndr_print_policy_handle(ndr
, "handle", r
->in
.handle
);
6007 ndr_print_ptr(ndr
, "service_name", r
->in
.service_name
);
6009 if (r
->in
.service_name
) {
6010 ndr_print_string(ndr
, "service_name", r
->in
.service_name
);
6013 ndr_print_ptr(ndr
, "display_name_length", r
->in
.display_name_length
);
6015 if (r
->in
.display_name_length
) {
6016 ndr_print_uint32(ndr
, "display_name_length", *r
->in
.display_name_length
);
6021 if (flags
& NDR_OUT
) {
6022 ndr_print_struct(ndr
, "out", "svcctl_GetServiceKeyNameA");
6024 ndr_print_ptr(ndr
, "key_name", r
->out
.key_name
);
6026 ndr_print_ptr(ndr
, "key_name", *r
->out
.key_name
);
6028 if (*r
->out
.key_name
) {
6029 ndr_print_string(ndr
, "key_name", *r
->out
.key_name
);
6033 ndr_print_ptr(ndr
, "display_name_length", r
->out
.display_name_length
);
6035 if (r
->out
.display_name_length
) {
6036 ndr_print_uint32(ndr
, "display_name_length", *r
->out
.display_name_length
);
6039 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
6045 static enum ndr_err_code
ndr_push_svcctl_GetCurrentGroupeStateW(struct ndr_push
*ndr
, int flags
, const struct svcctl_GetCurrentGroupeStateW
*r
)
6047 if (flags
& NDR_IN
) {
6049 if (flags
& NDR_OUT
) {
6050 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
6052 return NDR_ERR_SUCCESS
;
6055 static enum ndr_err_code
ndr_pull_svcctl_GetCurrentGroupeStateW(struct ndr_pull
*ndr
, int flags
, struct svcctl_GetCurrentGroupeStateW
*r
)
6057 if (flags
& NDR_IN
) {
6059 if (flags
& NDR_OUT
) {
6060 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
6062 return NDR_ERR_SUCCESS
;
6065 _PUBLIC_
void ndr_print_svcctl_GetCurrentGroupeStateW(struct ndr_print
*ndr
, const char *name
, int flags
, const struct svcctl_GetCurrentGroupeStateW
*r
)
6067 ndr_print_struct(ndr
, name
, "svcctl_GetCurrentGroupeStateW");
6069 if (flags
& NDR_SET_VALUES
) {
6070 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
6072 if (flags
& NDR_IN
) {
6073 ndr_print_struct(ndr
, "in", "svcctl_GetCurrentGroupeStateW");
6077 if (flags
& NDR_OUT
) {
6078 ndr_print_struct(ndr
, "out", "svcctl_GetCurrentGroupeStateW");
6080 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
6086 static enum ndr_err_code
ndr_push_svcctl_EnumServiceGroupW(struct ndr_push
*ndr
, int flags
, const struct svcctl_EnumServiceGroupW
*r
)
6088 if (flags
& NDR_IN
) {
6090 if (flags
& NDR_OUT
) {
6091 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
6093 return NDR_ERR_SUCCESS
;
6096 static enum ndr_err_code
ndr_pull_svcctl_EnumServiceGroupW(struct ndr_pull
*ndr
, int flags
, struct svcctl_EnumServiceGroupW
*r
)
6098 if (flags
& NDR_IN
) {
6100 if (flags
& NDR_OUT
) {
6101 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
6103 return NDR_ERR_SUCCESS
;
6106 _PUBLIC_
void ndr_print_svcctl_EnumServiceGroupW(struct ndr_print
*ndr
, const char *name
, int flags
, const struct svcctl_EnumServiceGroupW
*r
)
6108 ndr_print_struct(ndr
, name
, "svcctl_EnumServiceGroupW");
6110 if (flags
& NDR_SET_VALUES
) {
6111 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
6113 if (flags
& NDR_IN
) {
6114 ndr_print_struct(ndr
, "in", "svcctl_EnumServiceGroupW");
6118 if (flags
& NDR_OUT
) {
6119 ndr_print_struct(ndr
, "out", "svcctl_EnumServiceGroupW");
6121 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
6127 static enum ndr_err_code
ndr_push_svcctl_ChangeServiceConfig2A(struct ndr_push
*ndr
, int flags
, const struct svcctl_ChangeServiceConfig2A
*r
)
6129 if (flags
& NDR_IN
) {
6130 if (r
->in
.handle
== NULL
) {
6131 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
6133 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
, r
->in
.handle
));
6134 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.info_level
));
6135 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.info
));
6137 NDR_CHECK(ndr_push_uint8(ndr
, NDR_SCALARS
, *r
->in
.info
));
6140 if (flags
& NDR_OUT
) {
6141 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
6143 return NDR_ERR_SUCCESS
;
6146 static enum ndr_err_code
ndr_pull_svcctl_ChangeServiceConfig2A(struct ndr_pull
*ndr
, int flags
, struct svcctl_ChangeServiceConfig2A
*r
)
6149 TALLOC_CTX
*_mem_save_handle_0
;
6150 TALLOC_CTX
*_mem_save_info_0
;
6151 if (flags
& NDR_IN
) {
6152 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
6153 NDR_PULL_ALLOC(ndr
, r
->in
.handle
);
6155 _mem_save_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
6156 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.handle
, LIBNDR_FLAG_REF_ALLOC
);
6157 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
, r
->in
.handle
));
6158 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_handle_0
, LIBNDR_FLAG_REF_ALLOC
);
6159 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.info_level
));
6160 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_info
));
6162 NDR_PULL_ALLOC(ndr
, r
->in
.info
);
6167 _mem_save_info_0
= NDR_PULL_GET_MEM_CTX(ndr
);
6168 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.info
, 0);
6169 NDR_CHECK(ndr_pull_uint8(ndr
, NDR_SCALARS
, r
->in
.info
));
6170 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_info_0
, 0);
6173 if (flags
& NDR_OUT
) {
6174 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
6176 return NDR_ERR_SUCCESS
;
6179 _PUBLIC_
void ndr_print_svcctl_ChangeServiceConfig2A(struct ndr_print
*ndr
, const char *name
, int flags
, const struct svcctl_ChangeServiceConfig2A
*r
)
6181 ndr_print_struct(ndr
, name
, "svcctl_ChangeServiceConfig2A");
6183 if (flags
& NDR_SET_VALUES
) {
6184 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
6186 if (flags
& NDR_IN
) {
6187 ndr_print_struct(ndr
, "in", "svcctl_ChangeServiceConfig2A");
6189 ndr_print_ptr(ndr
, "handle", r
->in
.handle
);
6191 ndr_print_policy_handle(ndr
, "handle", r
->in
.handle
);
6193 ndr_print_uint32(ndr
, "info_level", r
->in
.info_level
);
6194 ndr_print_ptr(ndr
, "info", r
->in
.info
);
6197 ndr_print_uint8(ndr
, "info", *r
->in
.info
);
6202 if (flags
& NDR_OUT
) {
6203 ndr_print_struct(ndr
, "out", "svcctl_ChangeServiceConfig2A");
6205 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
6211 static enum ndr_err_code
ndr_push_svcctl_ChangeServiceConfig2W(struct ndr_push
*ndr
, int flags
, const struct svcctl_ChangeServiceConfig2W
*r
)
6213 if (flags
& NDR_IN
) {
6214 if (r
->in
.handle
== NULL
) {
6215 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
6217 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
, r
->in
.handle
));
6218 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.info_level
));
6219 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.info
));
6221 NDR_CHECK(ndr_push_uint8(ndr
, NDR_SCALARS
, *r
->in
.info
));
6224 if (flags
& NDR_OUT
) {
6225 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
6227 return NDR_ERR_SUCCESS
;
6230 static enum ndr_err_code
ndr_pull_svcctl_ChangeServiceConfig2W(struct ndr_pull
*ndr
, int flags
, struct svcctl_ChangeServiceConfig2W
*r
)
6233 TALLOC_CTX
*_mem_save_handle_0
;
6234 TALLOC_CTX
*_mem_save_info_0
;
6235 if (flags
& NDR_IN
) {
6236 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
6237 NDR_PULL_ALLOC(ndr
, r
->in
.handle
);
6239 _mem_save_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
6240 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.handle
, LIBNDR_FLAG_REF_ALLOC
);
6241 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
, r
->in
.handle
));
6242 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_handle_0
, LIBNDR_FLAG_REF_ALLOC
);
6243 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.info_level
));
6244 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_info
));
6246 NDR_PULL_ALLOC(ndr
, r
->in
.info
);
6251 _mem_save_info_0
= NDR_PULL_GET_MEM_CTX(ndr
);
6252 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.info
, 0);
6253 NDR_CHECK(ndr_pull_uint8(ndr
, NDR_SCALARS
, r
->in
.info
));
6254 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_info_0
, 0);
6257 if (flags
& NDR_OUT
) {
6258 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
6260 return NDR_ERR_SUCCESS
;
6263 _PUBLIC_
void ndr_print_svcctl_ChangeServiceConfig2W(struct ndr_print
*ndr
, const char *name
, int flags
, const struct svcctl_ChangeServiceConfig2W
*r
)
6265 ndr_print_struct(ndr
, name
, "svcctl_ChangeServiceConfig2W");
6267 if (flags
& NDR_SET_VALUES
) {
6268 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
6270 if (flags
& NDR_IN
) {
6271 ndr_print_struct(ndr
, "in", "svcctl_ChangeServiceConfig2W");
6273 ndr_print_ptr(ndr
, "handle", r
->in
.handle
);
6275 ndr_print_policy_handle(ndr
, "handle", r
->in
.handle
);
6277 ndr_print_uint32(ndr
, "info_level", r
->in
.info_level
);
6278 ndr_print_ptr(ndr
, "info", r
->in
.info
);
6281 ndr_print_uint8(ndr
, "info", *r
->in
.info
);
6286 if (flags
& NDR_OUT
) {
6287 ndr_print_struct(ndr
, "out", "svcctl_ChangeServiceConfig2W");
6289 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
6295 static enum ndr_err_code
ndr_push_svcctl_QueryServiceConfig2A(struct ndr_push
*ndr
, int flags
, const struct svcctl_QueryServiceConfig2A
*r
)
6297 if (flags
& NDR_IN
) {
6298 if (r
->in
.handle
== NULL
) {
6299 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
6301 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
, r
->in
.handle
));
6302 NDR_CHECK(ndr_push_svcctl_ConfigLevel(ndr
, NDR_SCALARS
, r
->in
.info_level
));
6303 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.offered
));
6305 if (flags
& NDR_OUT
) {
6306 NDR_CHECK(ndr_push_array_uint8(ndr
, NDR_SCALARS
, r
->out
.buffer
, r
->in
.offered
));
6307 if (r
->out
.needed
== NULL
) {
6308 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
6310 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, *r
->out
.needed
));
6311 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
6313 return NDR_ERR_SUCCESS
;
6316 static enum ndr_err_code
ndr_pull_svcctl_QueryServiceConfig2A(struct ndr_pull
*ndr
, int flags
, struct svcctl_QueryServiceConfig2A
*r
)
6318 uint32_t size_buffer_0
= 0;
6319 TALLOC_CTX
*_mem_save_handle_0
;
6320 TALLOC_CTX
*_mem_save_needed_0
;
6321 if (flags
& NDR_IN
) {
6322 ZERO_STRUCT(r
->out
);
6324 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
6325 NDR_PULL_ALLOC(ndr
, r
->in
.handle
);
6327 _mem_save_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
6328 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.handle
, LIBNDR_FLAG_REF_ALLOC
);
6329 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
, r
->in
.handle
));
6330 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_handle_0
, LIBNDR_FLAG_REF_ALLOC
);
6331 NDR_CHECK(ndr_pull_svcctl_ConfigLevel(ndr
, NDR_SCALARS
, &r
->in
.info_level
));
6332 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.offered
));
6333 NDR_PULL_ALLOC(ndr
, r
->out
.needed
);
6334 ZERO_STRUCTP(r
->out
.needed
);
6336 if (flags
& NDR_OUT
) {
6337 size_buffer_0
= r
->in
.offered
;
6338 NDR_PULL_ALLOC_N(ndr
, r
->out
.buffer
, size_buffer_0
);
6339 NDR_CHECK(ndr_pull_array_uint8(ndr
, NDR_SCALARS
, r
->out
.buffer
, size_buffer_0
));
6340 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
6341 NDR_PULL_ALLOC(ndr
, r
->out
.needed
);
6343 _mem_save_needed_0
= NDR_PULL_GET_MEM_CTX(ndr
);
6344 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.needed
, LIBNDR_FLAG_REF_ALLOC
);
6345 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, r
->out
.needed
));
6346 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_needed_0
, LIBNDR_FLAG_REF_ALLOC
);
6347 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
6349 return NDR_ERR_SUCCESS
;
6352 _PUBLIC_
void ndr_print_svcctl_QueryServiceConfig2A(struct ndr_print
*ndr
, const char *name
, int flags
, const struct svcctl_QueryServiceConfig2A
*r
)
6354 ndr_print_struct(ndr
, name
, "svcctl_QueryServiceConfig2A");
6356 if (flags
& NDR_SET_VALUES
) {
6357 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
6359 if (flags
& NDR_IN
) {
6360 ndr_print_struct(ndr
, "in", "svcctl_QueryServiceConfig2A");
6362 ndr_print_ptr(ndr
, "handle", r
->in
.handle
);
6364 ndr_print_policy_handle(ndr
, "handle", r
->in
.handle
);
6366 ndr_print_svcctl_ConfigLevel(ndr
, "info_level", r
->in
.info_level
);
6367 ndr_print_uint32(ndr
, "offered", r
->in
.offered
);
6370 if (flags
& NDR_OUT
) {
6371 ndr_print_struct(ndr
, "out", "svcctl_QueryServiceConfig2A");
6373 ndr_print_array_uint8(ndr
, "buffer", r
->out
.buffer
, r
->in
.offered
);
6374 ndr_print_ptr(ndr
, "needed", r
->out
.needed
);
6376 ndr_print_uint32(ndr
, "needed", *r
->out
.needed
);
6378 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
6384 static enum ndr_err_code
ndr_push_svcctl_QueryServiceConfig2W(struct ndr_push
*ndr
, int flags
, const struct svcctl_QueryServiceConfig2W
*r
)
6386 if (flags
& NDR_IN
) {
6387 if (r
->in
.handle
== NULL
) {
6388 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
6390 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
, r
->in
.handle
));
6391 NDR_CHECK(ndr_push_svcctl_ConfigLevel(ndr
, NDR_SCALARS
, r
->in
.info_level
));
6392 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.offered
));
6394 if (flags
& NDR_OUT
) {
6395 if (r
->out
.buffer
== NULL
) {
6396 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
6398 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.offered
));
6399 NDR_CHECK(ndr_push_array_uint8(ndr
, NDR_SCALARS
, r
->out
.buffer
, r
->in
.offered
));
6400 if (r
->out
.needed
== NULL
) {
6401 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
6403 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, *r
->out
.needed
));
6404 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
6406 return NDR_ERR_SUCCESS
;
6409 static enum ndr_err_code
ndr_pull_svcctl_QueryServiceConfig2W(struct ndr_pull
*ndr
, int flags
, struct svcctl_QueryServiceConfig2W
*r
)
6411 uint32_t size_buffer_1
= 0;
6412 TALLOC_CTX
*_mem_save_handle_0
;
6413 TALLOC_CTX
*_mem_save_needed_0
;
6414 if (flags
& NDR_IN
) {
6415 ZERO_STRUCT(r
->out
);
6417 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
6418 NDR_PULL_ALLOC(ndr
, r
->in
.handle
);
6420 _mem_save_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
6421 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.handle
, LIBNDR_FLAG_REF_ALLOC
);
6422 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
, r
->in
.handle
));
6423 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_handle_0
, LIBNDR_FLAG_REF_ALLOC
);
6424 NDR_CHECK(ndr_pull_svcctl_ConfigLevel(ndr
, NDR_SCALARS
, &r
->in
.info_level
));
6425 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.offered
));
6426 if (r
->in
.offered
> 8192) {
6427 return ndr_pull_error(ndr
, NDR_ERR_RANGE
, "value out of range");
6429 NDR_PULL_ALLOC_N(ndr
, r
->out
.buffer
, r
->in
.offered
);
6430 memset(r
->out
.buffer
, 0, (r
->in
.offered
) * sizeof(*r
->out
.buffer
));
6431 NDR_PULL_ALLOC(ndr
, r
->out
.needed
);
6432 ZERO_STRUCTP(r
->out
.needed
);
6434 if (flags
& NDR_OUT
) {
6435 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->out
.buffer
));
6436 size_buffer_1
= ndr_get_array_size(ndr
, &r
->out
.buffer
);
6437 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
6438 NDR_PULL_ALLOC_N(ndr
, r
->out
.buffer
, size_buffer_1
);
6440 NDR_CHECK(ndr_pull_array_uint8(ndr
, NDR_SCALARS
, r
->out
.buffer
, size_buffer_1
));
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 if (*r
->out
.needed
> 8192) {
6448 return ndr_pull_error(ndr
, NDR_ERR_RANGE
, "value out of range");
6450 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_needed_0
, LIBNDR_FLAG_REF_ALLOC
);
6451 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
6452 if (r
->out
.buffer
) {
6453 NDR_CHECK(ndr_check_array_size(ndr
, (void*)&r
->out
.buffer
, r
->in
.offered
));
6456 return NDR_ERR_SUCCESS
;
6459 _PUBLIC_
void ndr_print_svcctl_QueryServiceConfig2W(struct ndr_print
*ndr
, const char *name
, int flags
, const struct svcctl_QueryServiceConfig2W
*r
)
6461 ndr_print_struct(ndr
, name
, "svcctl_QueryServiceConfig2W");
6463 if (flags
& NDR_SET_VALUES
) {
6464 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
6466 if (flags
& NDR_IN
) {
6467 ndr_print_struct(ndr
, "in", "svcctl_QueryServiceConfig2W");
6469 ndr_print_ptr(ndr
, "handle", r
->in
.handle
);
6471 ndr_print_policy_handle(ndr
, "handle", r
->in
.handle
);
6473 ndr_print_svcctl_ConfigLevel(ndr
, "info_level", r
->in
.info_level
);
6474 ndr_print_uint32(ndr
, "offered", r
->in
.offered
);
6477 if (flags
& NDR_OUT
) {
6478 ndr_print_struct(ndr
, "out", "svcctl_QueryServiceConfig2W");
6480 ndr_print_ptr(ndr
, "buffer", r
->out
.buffer
);
6482 ndr_print_array_uint8(ndr
, "buffer", r
->out
.buffer
, r
->in
.offered
);
6484 ndr_print_ptr(ndr
, "needed", r
->out
.needed
);
6486 ndr_print_uint32(ndr
, "needed", *r
->out
.needed
);
6488 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
6494 static enum ndr_err_code
ndr_push_svcctl_QueryServiceStatusEx(struct ndr_push
*ndr
, int flags
, const struct svcctl_QueryServiceStatusEx
*r
)
6496 if (flags
& NDR_IN
) {
6497 if (r
->in
.handle
== NULL
) {
6498 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
6500 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
, r
->in
.handle
));
6501 NDR_CHECK(ndr_push_svcctl_StatusLevel(ndr
, NDR_SCALARS
, r
->in
.info_level
));
6502 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.offered
));
6504 if (flags
& NDR_OUT
) {
6505 if (r
->out
.buffer
== NULL
) {
6506 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
6508 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.offered
));
6509 NDR_CHECK(ndr_push_array_uint8(ndr
, NDR_SCALARS
, r
->out
.buffer
, r
->in
.offered
));
6510 if (r
->out
.needed
== NULL
) {
6511 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
6513 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, *r
->out
.needed
));
6514 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
6516 return NDR_ERR_SUCCESS
;
6519 static enum ndr_err_code
ndr_pull_svcctl_QueryServiceStatusEx(struct ndr_pull
*ndr
, int flags
, struct svcctl_QueryServiceStatusEx
*r
)
6521 uint32_t size_buffer_1
= 0;
6522 TALLOC_CTX
*_mem_save_handle_0
;
6523 TALLOC_CTX
*_mem_save_needed_0
;
6524 if (flags
& NDR_IN
) {
6525 ZERO_STRUCT(r
->out
);
6527 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
6528 NDR_PULL_ALLOC(ndr
, r
->in
.handle
);
6530 _mem_save_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
6531 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.handle
, LIBNDR_FLAG_REF_ALLOC
);
6532 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
, r
->in
.handle
));
6533 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_handle_0
, LIBNDR_FLAG_REF_ALLOC
);
6534 NDR_CHECK(ndr_pull_svcctl_StatusLevel(ndr
, NDR_SCALARS
, &r
->in
.info_level
));
6535 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.offered
));
6536 if (r
->in
.offered
> 8192) {
6537 return ndr_pull_error(ndr
, NDR_ERR_RANGE
, "value out of range");
6539 NDR_PULL_ALLOC_N(ndr
, r
->out
.buffer
, r
->in
.offered
);
6540 memset(r
->out
.buffer
, 0, (r
->in
.offered
) * sizeof(*r
->out
.buffer
));
6541 NDR_PULL_ALLOC(ndr
, r
->out
.needed
);
6542 ZERO_STRUCTP(r
->out
.needed
);
6544 if (flags
& NDR_OUT
) {
6545 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->out
.buffer
));
6546 size_buffer_1
= ndr_get_array_size(ndr
, &r
->out
.buffer
);
6547 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
6548 NDR_PULL_ALLOC_N(ndr
, r
->out
.buffer
, size_buffer_1
);
6550 NDR_CHECK(ndr_pull_array_uint8(ndr
, NDR_SCALARS
, r
->out
.buffer
, size_buffer_1
));
6551 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
6552 NDR_PULL_ALLOC(ndr
, r
->out
.needed
);
6554 _mem_save_needed_0
= NDR_PULL_GET_MEM_CTX(ndr
);
6555 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.needed
, LIBNDR_FLAG_REF_ALLOC
);
6556 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, r
->out
.needed
));
6557 if (*r
->out
.needed
> 8192) {
6558 return ndr_pull_error(ndr
, NDR_ERR_RANGE
, "value out of range");
6560 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_needed_0
, LIBNDR_FLAG_REF_ALLOC
);
6561 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
6562 if (r
->out
.buffer
) {
6563 NDR_CHECK(ndr_check_array_size(ndr
, (void*)&r
->out
.buffer
, r
->in
.offered
));
6566 return NDR_ERR_SUCCESS
;
6569 _PUBLIC_
void ndr_print_svcctl_QueryServiceStatusEx(struct ndr_print
*ndr
, const char *name
, int flags
, const struct svcctl_QueryServiceStatusEx
*r
)
6571 ndr_print_struct(ndr
, name
, "svcctl_QueryServiceStatusEx");
6573 if (flags
& NDR_SET_VALUES
) {
6574 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
6576 if (flags
& NDR_IN
) {
6577 ndr_print_struct(ndr
, "in", "svcctl_QueryServiceStatusEx");
6579 ndr_print_ptr(ndr
, "handle", r
->in
.handle
);
6581 ndr_print_policy_handle(ndr
, "handle", r
->in
.handle
);
6583 ndr_print_svcctl_StatusLevel(ndr
, "info_level", r
->in
.info_level
);
6584 ndr_print_uint32(ndr
, "offered", r
->in
.offered
);
6587 if (flags
& NDR_OUT
) {
6588 ndr_print_struct(ndr
, "out", "svcctl_QueryServiceStatusEx");
6590 ndr_print_ptr(ndr
, "buffer", r
->out
.buffer
);
6592 ndr_print_array_uint8(ndr
, "buffer", r
->out
.buffer
, r
->in
.offered
);
6594 ndr_print_ptr(ndr
, "needed", r
->out
.needed
);
6596 ndr_print_uint32(ndr
, "needed", *r
->out
.needed
);
6598 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
6604 static enum ndr_err_code
ndr_push_EnumServicesStatusExA(struct ndr_push
*ndr
, int flags
, const struct EnumServicesStatusExA
*r
)
6606 if (flags
& NDR_IN
) {
6607 if (r
->in
.scmanager
== NULL
) {
6608 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
6610 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
, r
->in
.scmanager
));
6611 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.info_level
));
6612 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.type
));
6613 NDR_CHECK(ndr_push_svcctl_ServiceState(ndr
, NDR_SCALARS
, r
->in
.state
));
6614 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.offered
));
6615 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.resume_handle
));
6616 if (r
->in
.resume_handle
) {
6617 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, *r
->in
.resume_handle
));
6620 if (flags
& NDR_OUT
) {
6621 NDR_CHECK(ndr_push_array_uint8(ndr
, NDR_SCALARS
, r
->out
.services
, r
->in
.offered
));
6622 if (r
->out
.needed
== NULL
) {
6623 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
6625 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, *r
->out
.needed
));
6626 if (r
->out
.service_returned
== NULL
) {
6627 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
6629 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, *r
->out
.service_returned
));
6630 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->out
.resume_handle
));
6631 if (r
->out
.resume_handle
) {
6632 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, *r
->out
.resume_handle
));
6634 if (r
->out
.group_name
== NULL
) {
6635 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
6637 NDR_CHECK(ndr_push_unique_ptr(ndr
, *r
->out
.group_name
));
6638 if (*r
->out
.group_name
) {
6639 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(*r
->out
.group_name
, CH_UTF16
)));
6640 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, 0));
6641 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(*r
->out
.group_name
, CH_UTF16
)));
6642 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
));
6644 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
6646 return NDR_ERR_SUCCESS
;
6649 static enum ndr_err_code
ndr_pull_EnumServicesStatusExA(struct ndr_pull
*ndr
, int flags
, struct EnumServicesStatusExA
*r
)
6651 uint32_t size_services_0
= 0;
6652 uint32_t _ptr_resume_handle
;
6653 uint32_t _ptr_group_name
;
6654 uint32_t size_group_name_2
= 0;
6655 uint32_t length_group_name_2
= 0;
6656 TALLOC_CTX
*_mem_save_scmanager_0
;
6657 TALLOC_CTX
*_mem_save_needed_0
;
6658 TALLOC_CTX
*_mem_save_service_returned_0
;
6659 TALLOC_CTX
*_mem_save_resume_handle_0
;
6660 TALLOC_CTX
*_mem_save_group_name_0
;
6661 TALLOC_CTX
*_mem_save_group_name_1
;
6662 if (flags
& NDR_IN
) {
6663 ZERO_STRUCT(r
->out
);
6665 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
6666 NDR_PULL_ALLOC(ndr
, r
->in
.scmanager
);
6668 _mem_save_scmanager_0
= NDR_PULL_GET_MEM_CTX(ndr
);
6669 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.scmanager
, LIBNDR_FLAG_REF_ALLOC
);
6670 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
, r
->in
.scmanager
));
6671 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_scmanager_0
, LIBNDR_FLAG_REF_ALLOC
);
6672 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.info_level
));
6673 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.type
));
6674 NDR_CHECK(ndr_pull_svcctl_ServiceState(ndr
, NDR_SCALARS
, &r
->in
.state
));
6675 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.offered
));
6676 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_resume_handle
));
6677 if (_ptr_resume_handle
) {
6678 NDR_PULL_ALLOC(ndr
, r
->in
.resume_handle
);
6680 r
->in
.resume_handle
= NULL
;
6682 if (r
->in
.resume_handle
) {
6683 _mem_save_resume_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
6684 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.resume_handle
, 0);
6685 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, r
->in
.resume_handle
));
6686 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_resume_handle_0
, 0);
6688 NDR_PULL_ALLOC(ndr
, r
->out
.needed
);
6689 ZERO_STRUCTP(r
->out
.needed
);
6690 NDR_PULL_ALLOC(ndr
, r
->out
.service_returned
);
6691 ZERO_STRUCTP(r
->out
.service_returned
);
6692 NDR_PULL_ALLOC(ndr
, r
->out
.group_name
);
6693 ZERO_STRUCTP(r
->out
.group_name
);
6695 if (flags
& NDR_OUT
) {
6696 size_services_0
= r
->in
.offered
;
6697 NDR_PULL_ALLOC_N(ndr
, r
->out
.services
, size_services_0
);
6698 NDR_CHECK(ndr_pull_array_uint8(ndr
, NDR_SCALARS
, r
->out
.services
, size_services_0
));
6699 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
6700 NDR_PULL_ALLOC(ndr
, r
->out
.needed
);
6702 _mem_save_needed_0
= NDR_PULL_GET_MEM_CTX(ndr
);
6703 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.needed
, LIBNDR_FLAG_REF_ALLOC
);
6704 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, r
->out
.needed
));
6705 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_needed_0
, LIBNDR_FLAG_REF_ALLOC
);
6706 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
6707 NDR_PULL_ALLOC(ndr
, r
->out
.service_returned
);
6709 _mem_save_service_returned_0
= NDR_PULL_GET_MEM_CTX(ndr
);
6710 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.service_returned
, LIBNDR_FLAG_REF_ALLOC
);
6711 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, r
->out
.service_returned
));
6712 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_service_returned_0
, LIBNDR_FLAG_REF_ALLOC
);
6713 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_resume_handle
));
6714 if (_ptr_resume_handle
) {
6715 NDR_PULL_ALLOC(ndr
, r
->out
.resume_handle
);
6717 r
->out
.resume_handle
= NULL
;
6719 if (r
->out
.resume_handle
) {
6720 _mem_save_resume_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
6721 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.resume_handle
, 0);
6722 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, r
->out
.resume_handle
));
6723 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_resume_handle_0
, 0);
6725 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
6726 NDR_PULL_ALLOC(ndr
, r
->out
.group_name
);
6728 _mem_save_group_name_0
= NDR_PULL_GET_MEM_CTX(ndr
);
6729 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.group_name
, LIBNDR_FLAG_REF_ALLOC
);
6730 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_group_name
));
6731 if (_ptr_group_name
) {
6732 NDR_PULL_ALLOC(ndr
, *r
->out
.group_name
);
6734 *r
->out
.group_name
= NULL
;
6736 if (*r
->out
.group_name
) {
6737 _mem_save_group_name_1
= NDR_PULL_GET_MEM_CTX(ndr
);
6738 NDR_PULL_SET_MEM_CTX(ndr
, *r
->out
.group_name
, 0);
6739 NDR_CHECK(ndr_pull_array_size(ndr
, r
->out
.group_name
));
6740 NDR_CHECK(ndr_pull_array_length(ndr
, r
->out
.group_name
));
6741 size_group_name_2
= ndr_get_array_size(ndr
, r
->out
.group_name
);
6742 length_group_name_2
= ndr_get_array_length(ndr
, r
->out
.group_name
);
6743 if (length_group_name_2
> size_group_name_2
) {
6744 return ndr_pull_error(ndr
, NDR_ERR_ARRAY_SIZE
, "Bad array size %u should exceed array length %u", size_group_name_2
, length_group_name_2
);
6746 NDR_CHECK(ndr_check_string_terminator(ndr
, length_group_name_2
, sizeof(uint16_t)));
6747 NDR_CHECK(ndr_pull_charset(ndr
, NDR_SCALARS
, r
->out
.group_name
, length_group_name_2
, sizeof(uint16_t), CH_UTF16
));
6748 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_group_name_1
, 0);
6750 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_group_name_0
, LIBNDR_FLAG_REF_ALLOC
);
6751 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
6753 return NDR_ERR_SUCCESS
;
6756 _PUBLIC_
void ndr_print_EnumServicesStatusExA(struct ndr_print
*ndr
, const char *name
, int flags
, const struct EnumServicesStatusExA
*r
)
6758 ndr_print_struct(ndr
, name
, "EnumServicesStatusExA");
6760 if (flags
& NDR_SET_VALUES
) {
6761 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
6763 if (flags
& NDR_IN
) {
6764 ndr_print_struct(ndr
, "in", "EnumServicesStatusExA");
6766 ndr_print_ptr(ndr
, "scmanager", r
->in
.scmanager
);
6768 ndr_print_policy_handle(ndr
, "scmanager", r
->in
.scmanager
);
6770 ndr_print_uint32(ndr
, "info_level", r
->in
.info_level
);
6771 ndr_print_uint32(ndr
, "type", r
->in
.type
);
6772 ndr_print_svcctl_ServiceState(ndr
, "state", r
->in
.state
);
6773 ndr_print_uint32(ndr
, "offered", r
->in
.offered
);
6774 ndr_print_ptr(ndr
, "resume_handle", r
->in
.resume_handle
);
6776 if (r
->in
.resume_handle
) {
6777 ndr_print_uint32(ndr
, "resume_handle", *r
->in
.resume_handle
);
6782 if (flags
& NDR_OUT
) {
6783 ndr_print_struct(ndr
, "out", "EnumServicesStatusExA");
6785 ndr_print_array_uint8(ndr
, "services", r
->out
.services
, r
->in
.offered
);
6786 ndr_print_ptr(ndr
, "needed", r
->out
.needed
);
6788 ndr_print_uint32(ndr
, "needed", *r
->out
.needed
);
6790 ndr_print_ptr(ndr
, "service_returned", r
->out
.service_returned
);
6792 ndr_print_uint32(ndr
, "service_returned", *r
->out
.service_returned
);
6794 ndr_print_ptr(ndr
, "resume_handle", r
->out
.resume_handle
);
6796 if (r
->out
.resume_handle
) {
6797 ndr_print_uint32(ndr
, "resume_handle", *r
->out
.resume_handle
);
6800 ndr_print_ptr(ndr
, "group_name", r
->out
.group_name
);
6802 ndr_print_ptr(ndr
, "group_name", *r
->out
.group_name
);
6804 if (*r
->out
.group_name
) {
6805 ndr_print_string(ndr
, "group_name", *r
->out
.group_name
);
6809 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
6815 static enum ndr_err_code
ndr_push_EnumServicesStatusExW(struct ndr_push
*ndr
, int flags
, const struct EnumServicesStatusExW
*r
)
6817 if (flags
& NDR_IN
) {
6818 if (r
->in
.scmanager
== NULL
) {
6819 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
6821 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
, r
->in
.scmanager
));
6822 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.info_level
));
6823 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.type
));
6824 NDR_CHECK(ndr_push_svcctl_ServiceState(ndr
, NDR_SCALARS
, r
->in
.state
));
6825 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.offered
));
6826 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.resume_handle
));
6827 if (r
->in
.resume_handle
) {
6828 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, *r
->in
.resume_handle
));
6830 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.group_name
));
6831 if (r
->in
.group_name
) {
6832 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.group_name
, CH_UTF16
)));
6833 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, 0));
6834 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.group_name
, CH_UTF16
)));
6835 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
));
6838 if (flags
& NDR_OUT
) {
6839 if (r
->out
.services
== NULL
) {
6840 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
6842 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.offered
));
6843 NDR_CHECK(ndr_push_array_uint8(ndr
, NDR_SCALARS
, r
->out
.services
, r
->in
.offered
));
6844 if (r
->out
.needed
== NULL
) {
6845 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
6847 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, *r
->out
.needed
));
6848 if (r
->out
.service_returned
== NULL
) {
6849 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
6851 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, *r
->out
.service_returned
));
6852 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->out
.resume_handle
));
6853 if (r
->out
.resume_handle
) {
6854 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, *r
->out
.resume_handle
));
6856 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
6858 return NDR_ERR_SUCCESS
;
6861 static enum ndr_err_code
ndr_pull_EnumServicesStatusExW(struct ndr_pull
*ndr
, int flags
, struct EnumServicesStatusExW
*r
)
6863 uint32_t size_services_1
= 0;
6864 uint32_t _ptr_resume_handle
;
6865 uint32_t _ptr_group_name
;
6866 uint32_t size_group_name_1
= 0;
6867 uint32_t length_group_name_1
= 0;
6868 TALLOC_CTX
*_mem_save_scmanager_0
;
6869 TALLOC_CTX
*_mem_save_needed_0
;
6870 TALLOC_CTX
*_mem_save_service_returned_0
;
6871 TALLOC_CTX
*_mem_save_resume_handle_0
;
6872 TALLOC_CTX
*_mem_save_group_name_0
;
6873 if (flags
& NDR_IN
) {
6874 ZERO_STRUCT(r
->out
);
6876 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
6877 NDR_PULL_ALLOC(ndr
, r
->in
.scmanager
);
6879 _mem_save_scmanager_0
= NDR_PULL_GET_MEM_CTX(ndr
);
6880 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.scmanager
, LIBNDR_FLAG_REF_ALLOC
);
6881 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
, r
->in
.scmanager
));
6882 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_scmanager_0
, LIBNDR_FLAG_REF_ALLOC
);
6883 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.info_level
));
6884 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.type
));
6885 NDR_CHECK(ndr_pull_svcctl_ServiceState(ndr
, NDR_SCALARS
, &r
->in
.state
));
6886 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.offered
));
6887 if (r
->in
.offered
> 0x40000) {
6888 return ndr_pull_error(ndr
, NDR_ERR_RANGE
, "value out of range");
6890 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_resume_handle
));
6891 if (_ptr_resume_handle
) {
6892 NDR_PULL_ALLOC(ndr
, r
->in
.resume_handle
);
6894 r
->in
.resume_handle
= NULL
;
6896 if (r
->in
.resume_handle
) {
6897 _mem_save_resume_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
6898 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.resume_handle
, 0);
6899 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, r
->in
.resume_handle
));
6900 if (*r
->in
.resume_handle
> 0x40000) {
6901 return ndr_pull_error(ndr
, NDR_ERR_RANGE
, "value out of range");
6903 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_resume_handle_0
, 0);
6905 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_group_name
));
6906 if (_ptr_group_name
) {
6907 NDR_PULL_ALLOC(ndr
, r
->in
.group_name
);
6909 r
->in
.group_name
= NULL
;
6911 if (r
->in
.group_name
) {
6912 _mem_save_group_name_0
= NDR_PULL_GET_MEM_CTX(ndr
);
6913 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.group_name
, 0);
6914 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->in
.group_name
));
6915 NDR_CHECK(ndr_pull_array_length(ndr
, &r
->in
.group_name
));
6916 size_group_name_1
= ndr_get_array_size(ndr
, &r
->in
.group_name
);
6917 length_group_name_1
= ndr_get_array_length(ndr
, &r
->in
.group_name
);
6918 if (length_group_name_1
> size_group_name_1
) {
6919 return ndr_pull_error(ndr
, NDR_ERR_ARRAY_SIZE
, "Bad array size %u should exceed array length %u", size_group_name_1
, length_group_name_1
);
6921 NDR_CHECK(ndr_check_string_terminator(ndr
, length_group_name_1
, sizeof(uint16_t)));
6922 NDR_CHECK(ndr_pull_charset(ndr
, NDR_SCALARS
, &r
->in
.group_name
, length_group_name_1
, sizeof(uint16_t), CH_UTF16
));
6923 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_group_name_0
, 0);
6925 NDR_PULL_ALLOC_N(ndr
, r
->out
.services
, r
->in
.offered
);
6926 memset(r
->out
.services
, 0, (r
->in
.offered
) * sizeof(*r
->out
.services
));
6927 NDR_PULL_ALLOC(ndr
, r
->out
.needed
);
6928 ZERO_STRUCTP(r
->out
.needed
);
6929 NDR_PULL_ALLOC(ndr
, r
->out
.service_returned
);
6930 ZERO_STRUCTP(r
->out
.service_returned
);
6932 if (flags
& NDR_OUT
) {
6933 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->out
.services
));
6934 size_services_1
= ndr_get_array_size(ndr
, &r
->out
.services
);
6935 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
6936 NDR_PULL_ALLOC_N(ndr
, r
->out
.services
, size_services_1
);
6938 NDR_CHECK(ndr_pull_array_uint8(ndr
, NDR_SCALARS
, r
->out
.services
, size_services_1
));
6939 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
6940 NDR_PULL_ALLOC(ndr
, r
->out
.needed
);
6942 _mem_save_needed_0
= NDR_PULL_GET_MEM_CTX(ndr
);
6943 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.needed
, LIBNDR_FLAG_REF_ALLOC
);
6944 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, r
->out
.needed
));
6945 if (*r
->out
.needed
> 0x40000) {
6946 return ndr_pull_error(ndr
, NDR_ERR_RANGE
, "value out of range");
6948 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_needed_0
, LIBNDR_FLAG_REF_ALLOC
);
6949 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
6950 NDR_PULL_ALLOC(ndr
, r
->out
.service_returned
);
6952 _mem_save_service_returned_0
= NDR_PULL_GET_MEM_CTX(ndr
);
6953 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.service_returned
, LIBNDR_FLAG_REF_ALLOC
);
6954 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, r
->out
.service_returned
));
6955 if (*r
->out
.service_returned
> 0x40000) {
6956 return ndr_pull_error(ndr
, NDR_ERR_RANGE
, "value out of range");
6958 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_service_returned_0
, LIBNDR_FLAG_REF_ALLOC
);
6959 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_resume_handle
));
6960 if (_ptr_resume_handle
) {
6961 NDR_PULL_ALLOC(ndr
, r
->out
.resume_handle
);
6963 r
->out
.resume_handle
= NULL
;
6965 if (r
->out
.resume_handle
) {
6966 _mem_save_resume_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
6967 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.resume_handle
, 0);
6968 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, r
->out
.resume_handle
));
6969 if (*r
->out
.resume_handle
> 0x40000) {
6970 return ndr_pull_error(ndr
, NDR_ERR_RANGE
, "value out of range");
6972 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_resume_handle_0
, 0);
6974 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
6975 if (r
->out
.services
) {
6976 NDR_CHECK(ndr_check_array_size(ndr
, (void*)&r
->out
.services
, r
->in
.offered
));
6979 return NDR_ERR_SUCCESS
;
6982 _PUBLIC_
void ndr_print_EnumServicesStatusExW(struct ndr_print
*ndr
, const char *name
, int flags
, const struct EnumServicesStatusExW
*r
)
6984 ndr_print_struct(ndr
, name
, "EnumServicesStatusExW");
6986 if (flags
& NDR_SET_VALUES
) {
6987 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
6989 if (flags
& NDR_IN
) {
6990 ndr_print_struct(ndr
, "in", "EnumServicesStatusExW");
6992 ndr_print_ptr(ndr
, "scmanager", r
->in
.scmanager
);
6994 ndr_print_policy_handle(ndr
, "scmanager", r
->in
.scmanager
);
6996 ndr_print_uint32(ndr
, "info_level", r
->in
.info_level
);
6997 ndr_print_uint32(ndr
, "type", r
->in
.type
);
6998 ndr_print_svcctl_ServiceState(ndr
, "state", r
->in
.state
);
6999 ndr_print_uint32(ndr
, "offered", r
->in
.offered
);
7000 ndr_print_ptr(ndr
, "resume_handle", r
->in
.resume_handle
);
7002 if (r
->in
.resume_handle
) {
7003 ndr_print_uint32(ndr
, "resume_handle", *r
->in
.resume_handle
);
7006 ndr_print_ptr(ndr
, "group_name", r
->in
.group_name
);
7008 if (r
->in
.group_name
) {
7009 ndr_print_string(ndr
, "group_name", r
->in
.group_name
);
7014 if (flags
& NDR_OUT
) {
7015 ndr_print_struct(ndr
, "out", "EnumServicesStatusExW");
7017 ndr_print_ptr(ndr
, "services", r
->out
.services
);
7019 ndr_print_array_uint8(ndr
, "services", r
->out
.services
, r
->in
.offered
);
7021 ndr_print_ptr(ndr
, "needed", r
->out
.needed
);
7023 ndr_print_uint32(ndr
, "needed", *r
->out
.needed
);
7025 ndr_print_ptr(ndr
, "service_returned", r
->out
.service_returned
);
7027 ndr_print_uint32(ndr
, "service_returned", *r
->out
.service_returned
);
7029 ndr_print_ptr(ndr
, "resume_handle", r
->out
.resume_handle
);
7031 if (r
->out
.resume_handle
) {
7032 ndr_print_uint32(ndr
, "resume_handle", *r
->out
.resume_handle
);
7035 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
7041 static enum ndr_err_code
ndr_push_svcctl_SCSendTSMessage(struct ndr_push
*ndr
, int flags
, const struct svcctl_SCSendTSMessage
*r
)
7043 if (flags
& NDR_IN
) {
7045 if (flags
& NDR_OUT
) {
7046 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
7048 return NDR_ERR_SUCCESS
;
7051 static enum ndr_err_code
ndr_pull_svcctl_SCSendTSMessage(struct ndr_pull
*ndr
, int flags
, struct svcctl_SCSendTSMessage
*r
)
7053 if (flags
& NDR_IN
) {
7055 if (flags
& NDR_OUT
) {
7056 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
7058 return NDR_ERR_SUCCESS
;
7061 _PUBLIC_
void ndr_print_svcctl_SCSendTSMessage(struct ndr_print
*ndr
, const char *name
, int flags
, const struct svcctl_SCSendTSMessage
*r
)
7063 ndr_print_struct(ndr
, name
, "svcctl_SCSendTSMessage");
7065 if (flags
& NDR_SET_VALUES
) {
7066 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
7068 if (flags
& NDR_IN
) {
7069 ndr_print_struct(ndr
, "in", "svcctl_SCSendTSMessage");
7073 if (flags
& NDR_OUT
) {
7074 ndr_print_struct(ndr
, "out", "svcctl_SCSendTSMessage");
7076 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
7082 static const struct ndr_interface_call svcctl_calls
[] = {
7084 "svcctl_CloseServiceHandle",
7085 sizeof(struct svcctl_CloseServiceHandle
),
7086 (ndr_push_flags_fn_t
) ndr_push_svcctl_CloseServiceHandle
,
7087 (ndr_pull_flags_fn_t
) ndr_pull_svcctl_CloseServiceHandle
,
7088 (ndr_print_function_t
) ndr_print_svcctl_CloseServiceHandle
,
7092 "svcctl_ControlService",
7093 sizeof(struct svcctl_ControlService
),
7094 (ndr_push_flags_fn_t
) ndr_push_svcctl_ControlService
,
7095 (ndr_pull_flags_fn_t
) ndr_pull_svcctl_ControlService
,
7096 (ndr_print_function_t
) ndr_print_svcctl_ControlService
,
7100 "svcctl_DeleteService",
7101 sizeof(struct svcctl_DeleteService
),
7102 (ndr_push_flags_fn_t
) ndr_push_svcctl_DeleteService
,
7103 (ndr_pull_flags_fn_t
) ndr_pull_svcctl_DeleteService
,
7104 (ndr_print_function_t
) ndr_print_svcctl_DeleteService
,
7108 "svcctl_LockServiceDatabase",
7109 sizeof(struct svcctl_LockServiceDatabase
),
7110 (ndr_push_flags_fn_t
) ndr_push_svcctl_LockServiceDatabase
,
7111 (ndr_pull_flags_fn_t
) ndr_pull_svcctl_LockServiceDatabase
,
7112 (ndr_print_function_t
) ndr_print_svcctl_LockServiceDatabase
,
7116 "svcctl_QueryServiceObjectSecurity",
7117 sizeof(struct svcctl_QueryServiceObjectSecurity
),
7118 (ndr_push_flags_fn_t
) ndr_push_svcctl_QueryServiceObjectSecurity
,
7119 (ndr_pull_flags_fn_t
) ndr_pull_svcctl_QueryServiceObjectSecurity
,
7120 (ndr_print_function_t
) ndr_print_svcctl_QueryServiceObjectSecurity
,
7124 "svcctl_SetServiceObjectSecurity",
7125 sizeof(struct svcctl_SetServiceObjectSecurity
),
7126 (ndr_push_flags_fn_t
) ndr_push_svcctl_SetServiceObjectSecurity
,
7127 (ndr_pull_flags_fn_t
) ndr_pull_svcctl_SetServiceObjectSecurity
,
7128 (ndr_print_function_t
) ndr_print_svcctl_SetServiceObjectSecurity
,
7132 "svcctl_QueryServiceStatus",
7133 sizeof(struct svcctl_QueryServiceStatus
),
7134 (ndr_push_flags_fn_t
) ndr_push_svcctl_QueryServiceStatus
,
7135 (ndr_pull_flags_fn_t
) ndr_pull_svcctl_QueryServiceStatus
,
7136 (ndr_print_function_t
) ndr_print_svcctl_QueryServiceStatus
,
7140 "svcctl_SetServiceStatus",
7141 sizeof(struct svcctl_SetServiceStatus
),
7142 (ndr_push_flags_fn_t
) ndr_push_svcctl_SetServiceStatus
,
7143 (ndr_pull_flags_fn_t
) ndr_pull_svcctl_SetServiceStatus
,
7144 (ndr_print_function_t
) ndr_print_svcctl_SetServiceStatus
,
7148 "svcctl_UnlockServiceDatabase",
7149 sizeof(struct svcctl_UnlockServiceDatabase
),
7150 (ndr_push_flags_fn_t
) ndr_push_svcctl_UnlockServiceDatabase
,
7151 (ndr_pull_flags_fn_t
) ndr_pull_svcctl_UnlockServiceDatabase
,
7152 (ndr_print_function_t
) ndr_print_svcctl_UnlockServiceDatabase
,
7156 "svcctl_NotifyBootConfigStatus",
7157 sizeof(struct svcctl_NotifyBootConfigStatus
),
7158 (ndr_push_flags_fn_t
) ndr_push_svcctl_NotifyBootConfigStatus
,
7159 (ndr_pull_flags_fn_t
) ndr_pull_svcctl_NotifyBootConfigStatus
,
7160 (ndr_print_function_t
) ndr_print_svcctl_NotifyBootConfigStatus
,
7164 "svcctl_SCSetServiceBitsW",
7165 sizeof(struct svcctl_SCSetServiceBitsW
),
7166 (ndr_push_flags_fn_t
) ndr_push_svcctl_SCSetServiceBitsW
,
7167 (ndr_pull_flags_fn_t
) ndr_pull_svcctl_SCSetServiceBitsW
,
7168 (ndr_print_function_t
) ndr_print_svcctl_SCSetServiceBitsW
,
7172 "svcctl_ChangeServiceConfigW",
7173 sizeof(struct svcctl_ChangeServiceConfigW
),
7174 (ndr_push_flags_fn_t
) ndr_push_svcctl_ChangeServiceConfigW
,
7175 (ndr_pull_flags_fn_t
) ndr_pull_svcctl_ChangeServiceConfigW
,
7176 (ndr_print_function_t
) ndr_print_svcctl_ChangeServiceConfigW
,
7180 "svcctl_CreateServiceW",
7181 sizeof(struct svcctl_CreateServiceW
),
7182 (ndr_push_flags_fn_t
) ndr_push_svcctl_CreateServiceW
,
7183 (ndr_pull_flags_fn_t
) ndr_pull_svcctl_CreateServiceW
,
7184 (ndr_print_function_t
) ndr_print_svcctl_CreateServiceW
,
7188 "svcctl_EnumDependentServicesW",
7189 sizeof(struct svcctl_EnumDependentServicesW
),
7190 (ndr_push_flags_fn_t
) ndr_push_svcctl_EnumDependentServicesW
,
7191 (ndr_pull_flags_fn_t
) ndr_pull_svcctl_EnumDependentServicesW
,
7192 (ndr_print_function_t
) ndr_print_svcctl_EnumDependentServicesW
,
7196 "svcctl_EnumServicesStatusW",
7197 sizeof(struct svcctl_EnumServicesStatusW
),
7198 (ndr_push_flags_fn_t
) ndr_push_svcctl_EnumServicesStatusW
,
7199 (ndr_pull_flags_fn_t
) ndr_pull_svcctl_EnumServicesStatusW
,
7200 (ndr_print_function_t
) ndr_print_svcctl_EnumServicesStatusW
,
7204 "svcctl_OpenSCManagerW",
7205 sizeof(struct svcctl_OpenSCManagerW
),
7206 (ndr_push_flags_fn_t
) ndr_push_svcctl_OpenSCManagerW
,
7207 (ndr_pull_flags_fn_t
) ndr_pull_svcctl_OpenSCManagerW
,
7208 (ndr_print_function_t
) ndr_print_svcctl_OpenSCManagerW
,
7212 "svcctl_OpenServiceW",
7213 sizeof(struct svcctl_OpenServiceW
),
7214 (ndr_push_flags_fn_t
) ndr_push_svcctl_OpenServiceW
,
7215 (ndr_pull_flags_fn_t
) ndr_pull_svcctl_OpenServiceW
,
7216 (ndr_print_function_t
) ndr_print_svcctl_OpenServiceW
,
7220 "svcctl_QueryServiceConfigW",
7221 sizeof(struct svcctl_QueryServiceConfigW
),
7222 (ndr_push_flags_fn_t
) ndr_push_svcctl_QueryServiceConfigW
,
7223 (ndr_pull_flags_fn_t
) ndr_pull_svcctl_QueryServiceConfigW
,
7224 (ndr_print_function_t
) ndr_print_svcctl_QueryServiceConfigW
,
7228 "svcctl_QueryServiceLockStatusW",
7229 sizeof(struct svcctl_QueryServiceLockStatusW
),
7230 (ndr_push_flags_fn_t
) ndr_push_svcctl_QueryServiceLockStatusW
,
7231 (ndr_pull_flags_fn_t
) ndr_pull_svcctl_QueryServiceLockStatusW
,
7232 (ndr_print_function_t
) ndr_print_svcctl_QueryServiceLockStatusW
,
7236 "svcctl_StartServiceW",
7237 sizeof(struct svcctl_StartServiceW
),
7238 (ndr_push_flags_fn_t
) ndr_push_svcctl_StartServiceW
,
7239 (ndr_pull_flags_fn_t
) ndr_pull_svcctl_StartServiceW
,
7240 (ndr_print_function_t
) ndr_print_svcctl_StartServiceW
,
7244 "svcctl_GetServiceDisplayNameW",
7245 sizeof(struct svcctl_GetServiceDisplayNameW
),
7246 (ndr_push_flags_fn_t
) ndr_push_svcctl_GetServiceDisplayNameW
,
7247 (ndr_pull_flags_fn_t
) ndr_pull_svcctl_GetServiceDisplayNameW
,
7248 (ndr_print_function_t
) ndr_print_svcctl_GetServiceDisplayNameW
,
7252 "svcctl_GetServiceKeyNameW",
7253 sizeof(struct svcctl_GetServiceKeyNameW
),
7254 (ndr_push_flags_fn_t
) ndr_push_svcctl_GetServiceKeyNameW
,
7255 (ndr_pull_flags_fn_t
) ndr_pull_svcctl_GetServiceKeyNameW
,
7256 (ndr_print_function_t
) ndr_print_svcctl_GetServiceKeyNameW
,
7260 "svcctl_SCSetServiceBitsA",
7261 sizeof(struct svcctl_SCSetServiceBitsA
),
7262 (ndr_push_flags_fn_t
) ndr_push_svcctl_SCSetServiceBitsA
,
7263 (ndr_pull_flags_fn_t
) ndr_pull_svcctl_SCSetServiceBitsA
,
7264 (ndr_print_function_t
) ndr_print_svcctl_SCSetServiceBitsA
,
7268 "svcctl_ChangeServiceConfigA",
7269 sizeof(struct svcctl_ChangeServiceConfigA
),
7270 (ndr_push_flags_fn_t
) ndr_push_svcctl_ChangeServiceConfigA
,
7271 (ndr_pull_flags_fn_t
) ndr_pull_svcctl_ChangeServiceConfigA
,
7272 (ndr_print_function_t
) ndr_print_svcctl_ChangeServiceConfigA
,
7276 "svcctl_CreateServiceA",
7277 sizeof(struct svcctl_CreateServiceA
),
7278 (ndr_push_flags_fn_t
) ndr_push_svcctl_CreateServiceA
,
7279 (ndr_pull_flags_fn_t
) ndr_pull_svcctl_CreateServiceA
,
7280 (ndr_print_function_t
) ndr_print_svcctl_CreateServiceA
,
7284 "svcctl_EnumDependentServicesA",
7285 sizeof(struct svcctl_EnumDependentServicesA
),
7286 (ndr_push_flags_fn_t
) ndr_push_svcctl_EnumDependentServicesA
,
7287 (ndr_pull_flags_fn_t
) ndr_pull_svcctl_EnumDependentServicesA
,
7288 (ndr_print_function_t
) ndr_print_svcctl_EnumDependentServicesA
,
7292 "svcctl_EnumServicesStatusA",
7293 sizeof(struct svcctl_EnumServicesStatusA
),
7294 (ndr_push_flags_fn_t
) ndr_push_svcctl_EnumServicesStatusA
,
7295 (ndr_pull_flags_fn_t
) ndr_pull_svcctl_EnumServicesStatusA
,
7296 (ndr_print_function_t
) ndr_print_svcctl_EnumServicesStatusA
,
7300 "svcctl_OpenSCManagerA",
7301 sizeof(struct svcctl_OpenSCManagerA
),
7302 (ndr_push_flags_fn_t
) ndr_push_svcctl_OpenSCManagerA
,
7303 (ndr_pull_flags_fn_t
) ndr_pull_svcctl_OpenSCManagerA
,
7304 (ndr_print_function_t
) ndr_print_svcctl_OpenSCManagerA
,
7308 "svcctl_OpenServiceA",
7309 sizeof(struct svcctl_OpenServiceA
),
7310 (ndr_push_flags_fn_t
) ndr_push_svcctl_OpenServiceA
,
7311 (ndr_pull_flags_fn_t
) ndr_pull_svcctl_OpenServiceA
,
7312 (ndr_print_function_t
) ndr_print_svcctl_OpenServiceA
,
7316 "svcctl_QueryServiceConfigA",
7317 sizeof(struct svcctl_QueryServiceConfigA
),
7318 (ndr_push_flags_fn_t
) ndr_push_svcctl_QueryServiceConfigA
,
7319 (ndr_pull_flags_fn_t
) ndr_pull_svcctl_QueryServiceConfigA
,
7320 (ndr_print_function_t
) ndr_print_svcctl_QueryServiceConfigA
,
7324 "svcctl_QueryServiceLockStatusA",
7325 sizeof(struct svcctl_QueryServiceLockStatusA
),
7326 (ndr_push_flags_fn_t
) ndr_push_svcctl_QueryServiceLockStatusA
,
7327 (ndr_pull_flags_fn_t
) ndr_pull_svcctl_QueryServiceLockStatusA
,
7328 (ndr_print_function_t
) ndr_print_svcctl_QueryServiceLockStatusA
,
7332 "svcctl_StartServiceA",
7333 sizeof(struct svcctl_StartServiceA
),
7334 (ndr_push_flags_fn_t
) ndr_push_svcctl_StartServiceA
,
7335 (ndr_pull_flags_fn_t
) ndr_pull_svcctl_StartServiceA
,
7336 (ndr_print_function_t
) ndr_print_svcctl_StartServiceA
,
7340 "svcctl_GetServiceDisplayNameA",
7341 sizeof(struct svcctl_GetServiceDisplayNameA
),
7342 (ndr_push_flags_fn_t
) ndr_push_svcctl_GetServiceDisplayNameA
,
7343 (ndr_pull_flags_fn_t
) ndr_pull_svcctl_GetServiceDisplayNameA
,
7344 (ndr_print_function_t
) ndr_print_svcctl_GetServiceDisplayNameA
,
7348 "svcctl_GetServiceKeyNameA",
7349 sizeof(struct svcctl_GetServiceKeyNameA
),
7350 (ndr_push_flags_fn_t
) ndr_push_svcctl_GetServiceKeyNameA
,
7351 (ndr_pull_flags_fn_t
) ndr_pull_svcctl_GetServiceKeyNameA
,
7352 (ndr_print_function_t
) ndr_print_svcctl_GetServiceKeyNameA
,
7356 "svcctl_GetCurrentGroupeStateW",
7357 sizeof(struct svcctl_GetCurrentGroupeStateW
),
7358 (ndr_push_flags_fn_t
) ndr_push_svcctl_GetCurrentGroupeStateW
,
7359 (ndr_pull_flags_fn_t
) ndr_pull_svcctl_GetCurrentGroupeStateW
,
7360 (ndr_print_function_t
) ndr_print_svcctl_GetCurrentGroupeStateW
,
7364 "svcctl_EnumServiceGroupW",
7365 sizeof(struct svcctl_EnumServiceGroupW
),
7366 (ndr_push_flags_fn_t
) ndr_push_svcctl_EnumServiceGroupW
,
7367 (ndr_pull_flags_fn_t
) ndr_pull_svcctl_EnumServiceGroupW
,
7368 (ndr_print_function_t
) ndr_print_svcctl_EnumServiceGroupW
,
7372 "svcctl_ChangeServiceConfig2A",
7373 sizeof(struct svcctl_ChangeServiceConfig2A
),
7374 (ndr_push_flags_fn_t
) ndr_push_svcctl_ChangeServiceConfig2A
,
7375 (ndr_pull_flags_fn_t
) ndr_pull_svcctl_ChangeServiceConfig2A
,
7376 (ndr_print_function_t
) ndr_print_svcctl_ChangeServiceConfig2A
,
7380 "svcctl_ChangeServiceConfig2W",
7381 sizeof(struct svcctl_ChangeServiceConfig2W
),
7382 (ndr_push_flags_fn_t
) ndr_push_svcctl_ChangeServiceConfig2W
,
7383 (ndr_pull_flags_fn_t
) ndr_pull_svcctl_ChangeServiceConfig2W
,
7384 (ndr_print_function_t
) ndr_print_svcctl_ChangeServiceConfig2W
,
7388 "svcctl_QueryServiceConfig2A",
7389 sizeof(struct svcctl_QueryServiceConfig2A
),
7390 (ndr_push_flags_fn_t
) ndr_push_svcctl_QueryServiceConfig2A
,
7391 (ndr_pull_flags_fn_t
) ndr_pull_svcctl_QueryServiceConfig2A
,
7392 (ndr_print_function_t
) ndr_print_svcctl_QueryServiceConfig2A
,
7396 "svcctl_QueryServiceConfig2W",
7397 sizeof(struct svcctl_QueryServiceConfig2W
),
7398 (ndr_push_flags_fn_t
) ndr_push_svcctl_QueryServiceConfig2W
,
7399 (ndr_pull_flags_fn_t
) ndr_pull_svcctl_QueryServiceConfig2W
,
7400 (ndr_print_function_t
) ndr_print_svcctl_QueryServiceConfig2W
,
7404 "svcctl_QueryServiceStatusEx",
7405 sizeof(struct svcctl_QueryServiceStatusEx
),
7406 (ndr_push_flags_fn_t
) ndr_push_svcctl_QueryServiceStatusEx
,
7407 (ndr_pull_flags_fn_t
) ndr_pull_svcctl_QueryServiceStatusEx
,
7408 (ndr_print_function_t
) ndr_print_svcctl_QueryServiceStatusEx
,
7412 "EnumServicesStatusExA",
7413 sizeof(struct EnumServicesStatusExA
),
7414 (ndr_push_flags_fn_t
) ndr_push_EnumServicesStatusExA
,
7415 (ndr_pull_flags_fn_t
) ndr_pull_EnumServicesStatusExA
,
7416 (ndr_print_function_t
) ndr_print_EnumServicesStatusExA
,
7420 "EnumServicesStatusExW",
7421 sizeof(struct EnumServicesStatusExW
),
7422 (ndr_push_flags_fn_t
) ndr_push_EnumServicesStatusExW
,
7423 (ndr_pull_flags_fn_t
) ndr_pull_EnumServicesStatusExW
,
7424 (ndr_print_function_t
) ndr_print_EnumServicesStatusExW
,
7428 "svcctl_SCSendTSMessage",
7429 sizeof(struct svcctl_SCSendTSMessage
),
7430 (ndr_push_flags_fn_t
) ndr_push_svcctl_SCSendTSMessage
,
7431 (ndr_pull_flags_fn_t
) ndr_pull_svcctl_SCSendTSMessage
,
7432 (ndr_print_function_t
) ndr_print_svcctl_SCSendTSMessage
,
7435 { NULL
, 0, NULL
, NULL
, NULL
, false }
7438 static const char * const svcctl_endpoint_strings
[] = {
7439 "ncacn_np:[\\pipe\\svcctl]",
7443 static const struct ndr_interface_string_array svcctl_endpoints
= {
7445 .names
= svcctl_endpoint_strings
7448 static const char * const svcctl_authservice_strings
[] = {
7452 static const struct ndr_interface_string_array svcctl_authservices
= {
7454 .names
= svcctl_authservice_strings
7458 const struct ndr_interface_table ndr_table_svcctl
= {
7461 {0x367abb81,0x9844,0x35f1,{0xad,0x32},{0x98,0xf0,0x38,0x00,0x10,0x03}},
7464 .helpstring
= NDR_SVCCTL_HELPSTRING
,
7466 .calls
= svcctl_calls
,
7467 .endpoints
= &svcctl_endpoints
,
7468 .authservices
= &svcctl_authservices