1 /* parser auto-generated by pidl */
4 #include "../librpc/gen_ndr/ndr_svcctl.h"
6 #include "librpc/gen_ndr/ndr_misc.h"
7 #include "librpc/gen_ndr/ndr_security.h"
8 static enum ndr_err_code
ndr_push_SERVICE_LOCK_STATUS(struct ndr_push
*ndr
, int ndr_flags
, const struct SERVICE_LOCK_STATUS
*r
)
10 if (ndr_flags
& NDR_SCALARS
) {
11 NDR_CHECK(ndr_push_align(ndr
, 5));
12 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->is_locked
));
13 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->lock_owner
));
14 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->lock_duration
));
15 NDR_CHECK(ndr_push_trailer_align(ndr
, 5));
17 if (ndr_flags
& NDR_BUFFERS
) {
19 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, ndr_charset_length(r
->lock_owner
, CH_UTF16
)));
20 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, 0));
21 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, ndr_charset_length(r
->lock_owner
, CH_UTF16
)));
22 NDR_CHECK(ndr_push_charset(ndr
, NDR_SCALARS
, r
->lock_owner
, ndr_charset_length(r
->lock_owner
, CH_UTF16
), sizeof(uint16_t), CH_UTF16
));
25 return NDR_ERR_SUCCESS
;
28 static enum ndr_err_code
ndr_pull_SERVICE_LOCK_STATUS(struct ndr_pull
*ndr
, int ndr_flags
, struct SERVICE_LOCK_STATUS
*r
)
30 uint32_t _ptr_lock_owner
;
31 uint32_t size_lock_owner_1
= 0;
32 uint32_t length_lock_owner_1
= 0;
33 TALLOC_CTX
*_mem_save_lock_owner_0
;
34 if (ndr_flags
& NDR_SCALARS
) {
35 NDR_CHECK(ndr_pull_align(ndr
, 5));
36 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->is_locked
));
37 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_lock_owner
));
38 if (_ptr_lock_owner
) {
39 NDR_PULL_ALLOC(ndr
, r
->lock_owner
);
43 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->lock_duration
));
44 NDR_CHECK(ndr_pull_trailer_align(ndr
, 5));
46 if (ndr_flags
& NDR_BUFFERS
) {
48 _mem_save_lock_owner_0
= NDR_PULL_GET_MEM_CTX(ndr
);
49 NDR_PULL_SET_MEM_CTX(ndr
, r
->lock_owner
, 0);
50 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->lock_owner
));
51 NDR_CHECK(ndr_pull_array_length(ndr
, &r
->lock_owner
));
52 size_lock_owner_1
= ndr_get_array_size(ndr
, &r
->lock_owner
);
53 length_lock_owner_1
= ndr_get_array_length(ndr
, &r
->lock_owner
);
54 if (length_lock_owner_1
> size_lock_owner_1
) {
55 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
);
57 NDR_CHECK(ndr_check_string_terminator(ndr
, length_lock_owner_1
, sizeof(uint16_t)));
58 NDR_CHECK(ndr_pull_charset(ndr
, NDR_SCALARS
, &r
->lock_owner
, length_lock_owner_1
, sizeof(uint16_t), CH_UTF16
));
59 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_lock_owner_0
, 0);
62 return NDR_ERR_SUCCESS
;
65 _PUBLIC_
void ndr_print_SERVICE_LOCK_STATUS(struct ndr_print
*ndr
, const char *name
, const struct SERVICE_LOCK_STATUS
*r
)
67 ndr_print_struct(ndr
, name
, "SERVICE_LOCK_STATUS");
69 ndr_print_uint32(ndr
, "is_locked", r
->is_locked
);
70 ndr_print_ptr(ndr
, "lock_owner", r
->lock_owner
);
73 ndr_print_string(ndr
, "lock_owner", r
->lock_owner
);
76 ndr_print_uint32(ndr
, "lock_duration", r
->lock_duration
);
80 static enum ndr_err_code
ndr_push_svcctl_ServiceStatus(struct ndr_push
*ndr
, int ndr_flags
, enum svcctl_ServiceStatus r
)
82 NDR_CHECK(ndr_push_enum_uint32(ndr
, NDR_SCALARS
, r
));
83 return NDR_ERR_SUCCESS
;
86 static enum ndr_err_code
ndr_pull_svcctl_ServiceStatus(struct ndr_pull
*ndr
, int ndr_flags
, enum svcctl_ServiceStatus
*r
)
89 NDR_CHECK(ndr_pull_enum_uint32(ndr
, NDR_SCALARS
, &v
));
91 return NDR_ERR_SUCCESS
;
94 _PUBLIC_
void ndr_print_svcctl_ServiceStatus(struct ndr_print
*ndr
, const char *name
, enum svcctl_ServiceStatus r
)
96 const char *val
= NULL
;
99 case SVCCTL_STATE_UNKNOWN
: val
= "SVCCTL_STATE_UNKNOWN"; break;
100 case SVCCTL_STOPPED
: val
= "SVCCTL_STOPPED"; break;
101 case SVCCTL_START_PENDING
: val
= "SVCCTL_START_PENDING"; break;
102 case SVCCTL_STOP_PENDING
: val
= "SVCCTL_STOP_PENDING"; break;
103 case SVCCTL_RUNNING
: val
= "SVCCTL_RUNNING"; break;
104 case SVCCTL_CONTINUE_PENDING
: val
= "SVCCTL_CONTINUE_PENDING"; break;
105 case SVCCTL_PAUSE_PENDING
: val
= "SVCCTL_PAUSE_PENDING"; break;
106 case SVCCTL_PAUSED
: val
= "SVCCTL_PAUSED"; break;
108 ndr_print_enum(ndr
, name
, "ENUM", val
, r
);
111 static enum ndr_err_code
ndr_push_svcctl_ControlsAccepted(struct ndr_push
*ndr
, int ndr_flags
, uint32_t r
)
113 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
));
114 return NDR_ERR_SUCCESS
;
117 static enum ndr_err_code
ndr_pull_svcctl_ControlsAccepted(struct ndr_pull
*ndr
, int ndr_flags
, uint32_t *r
)
120 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &v
));
122 return NDR_ERR_SUCCESS
;
125 _PUBLIC_
void ndr_print_svcctl_ControlsAccepted(struct ndr_print
*ndr
, const char *name
, uint32_t r
)
127 ndr_print_uint32(ndr
, name
, r
);
129 ndr_print_bitmap_flag(ndr
, sizeof(uint32_t), "SVCCTL_ACCEPT_STOP", SVCCTL_ACCEPT_STOP
, r
);
130 ndr_print_bitmap_flag(ndr
, sizeof(uint32_t), "SVCCTL_ACCEPT_PAUSE_CONTINUE", SVCCTL_ACCEPT_PAUSE_CONTINUE
, r
);
131 ndr_print_bitmap_flag(ndr
, sizeof(uint32_t), "SVCCTL_ACCEPT_SHUTDOWN", SVCCTL_ACCEPT_SHUTDOWN
, r
);
132 ndr_print_bitmap_flag(ndr
, sizeof(uint32_t), "SVCCTL_ACCEPT_PARAMCHANGE", SVCCTL_ACCEPT_PARAMCHANGE
, r
);
133 ndr_print_bitmap_flag(ndr
, sizeof(uint32_t), "SVCCTL_ACCEPT_NETBINDCHANGE", SVCCTL_ACCEPT_NETBINDCHANGE
, r
);
134 ndr_print_bitmap_flag(ndr
, sizeof(uint32_t), "SVCCTL_ACCEPT_HARDWAREPROFILECHANGE", SVCCTL_ACCEPT_HARDWAREPROFILECHANGE
, r
);
135 ndr_print_bitmap_flag(ndr
, sizeof(uint32_t), "SVCCTL_ACCEPT_POWEREVENT", SVCCTL_ACCEPT_POWEREVENT
, r
);
139 static enum ndr_err_code
ndr_push_SERVICE_STATUS(struct ndr_push
*ndr
, int ndr_flags
, const struct SERVICE_STATUS
*r
)
141 if (ndr_flags
& NDR_SCALARS
) {
142 NDR_CHECK(ndr_push_align(ndr
, 4));
143 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->type
));
144 NDR_CHECK(ndr_push_svcctl_ServiceStatus(ndr
, NDR_SCALARS
, r
->state
));
145 NDR_CHECK(ndr_push_svcctl_ControlsAccepted(ndr
, NDR_SCALARS
, r
->controls_accepted
));
146 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->win32_exit_code
));
147 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->service_exit_code
));
148 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->check_point
));
149 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->wait_hint
));
150 NDR_CHECK(ndr_push_trailer_align(ndr
, 4));
152 if (ndr_flags
& NDR_BUFFERS
) {
154 return NDR_ERR_SUCCESS
;
157 static enum ndr_err_code
ndr_pull_SERVICE_STATUS(struct ndr_pull
*ndr
, int ndr_flags
, struct SERVICE_STATUS
*r
)
159 if (ndr_flags
& NDR_SCALARS
) {
160 NDR_CHECK(ndr_pull_align(ndr
, 4));
161 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->type
));
162 NDR_CHECK(ndr_pull_svcctl_ServiceStatus(ndr
, NDR_SCALARS
, &r
->state
));
163 NDR_CHECK(ndr_pull_svcctl_ControlsAccepted(ndr
, NDR_SCALARS
, &r
->controls_accepted
));
164 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->win32_exit_code
));
165 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->service_exit_code
));
166 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->check_point
));
167 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->wait_hint
));
168 NDR_CHECK(ndr_pull_trailer_align(ndr
, 4));
170 if (ndr_flags
& NDR_BUFFERS
) {
172 return NDR_ERR_SUCCESS
;
175 _PUBLIC_
void ndr_print_SERVICE_STATUS(struct ndr_print
*ndr
, const char *name
, const struct SERVICE_STATUS
*r
)
177 ndr_print_struct(ndr
, name
, "SERVICE_STATUS");
179 ndr_print_uint32(ndr
, "type", r
->type
);
180 ndr_print_svcctl_ServiceStatus(ndr
, "state", r
->state
);
181 ndr_print_svcctl_ControlsAccepted(ndr
, "controls_accepted", r
->controls_accepted
);
182 ndr_print_WERROR(ndr
, "win32_exit_code", r
->win32_exit_code
);
183 ndr_print_uint32(ndr
, "service_exit_code", r
->service_exit_code
);
184 ndr_print_uint32(ndr
, "check_point", r
->check_point
);
185 ndr_print_uint32(ndr
, "wait_hint", r
->wait_hint
);
189 _PUBLIC_
enum ndr_err_code
ndr_push_SERVICE_STATUS_PROCESS(struct ndr_push
*ndr
, int ndr_flags
, const struct SERVICE_STATUS_PROCESS
*r
)
191 if (ndr_flags
& NDR_SCALARS
) {
192 NDR_CHECK(ndr_push_align(ndr
, 4));
193 NDR_CHECK(ndr_push_SERVICE_STATUS(ndr
, NDR_SCALARS
, &r
->status
));
194 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->process_id
));
195 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->service_flags
));
196 NDR_CHECK(ndr_push_trailer_align(ndr
, 4));
198 if (ndr_flags
& NDR_BUFFERS
) {
200 return NDR_ERR_SUCCESS
;
203 _PUBLIC_
enum ndr_err_code
ndr_pull_SERVICE_STATUS_PROCESS(struct ndr_pull
*ndr
, int ndr_flags
, struct SERVICE_STATUS_PROCESS
*r
)
205 if (ndr_flags
& NDR_SCALARS
) {
206 NDR_CHECK(ndr_pull_align(ndr
, 4));
207 NDR_CHECK(ndr_pull_SERVICE_STATUS(ndr
, NDR_SCALARS
, &r
->status
));
208 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->process_id
));
209 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->service_flags
));
210 NDR_CHECK(ndr_pull_trailer_align(ndr
, 4));
212 if (ndr_flags
& NDR_BUFFERS
) {
214 return NDR_ERR_SUCCESS
;
217 _PUBLIC_
void ndr_print_SERVICE_STATUS_PROCESS(struct ndr_print
*ndr
, const char *name
, const struct SERVICE_STATUS_PROCESS
*r
)
219 ndr_print_struct(ndr
, name
, "SERVICE_STATUS_PROCESS");
221 ndr_print_SERVICE_STATUS(ndr
, "status", &r
->status
);
222 ndr_print_uint32(ndr
, "process_id", r
->process_id
);
223 ndr_print_uint32(ndr
, "service_flags", r
->service_flags
);
227 _PUBLIC_
enum ndr_err_code
ndr_push_ENUM_SERVICE_STATUSW(struct ndr_push
*ndr
, int ndr_flags
, const struct ENUM_SERVICE_STATUSW
*r
)
229 if (ndr_flags
& NDR_SCALARS
) {
230 NDR_CHECK(ndr_push_align(ndr
, 5));
232 uint32_t _flags_save_string
= ndr
->flags
;
233 ndr_set_flags(&ndr
->flags
, LIBNDR_FLAG_STR_NULLTERM
|LIBNDR_FLAG_ALIGN2
);
234 NDR_CHECK(ndr_push_relative_ptr1(ndr
, r
->service_name
));
235 ndr
->flags
= _flags_save_string
;
238 uint32_t _flags_save_string
= ndr
->flags
;
239 ndr_set_flags(&ndr
->flags
, LIBNDR_FLAG_STR_NULLTERM
|LIBNDR_FLAG_ALIGN2
);
240 NDR_CHECK(ndr_push_relative_ptr1(ndr
, r
->display_name
));
241 ndr
->flags
= _flags_save_string
;
243 NDR_CHECK(ndr_push_SERVICE_STATUS(ndr
, NDR_SCALARS
, &r
->status
));
244 NDR_CHECK(ndr_push_trailer_align(ndr
, 5));
246 if (ndr_flags
& NDR_BUFFERS
) {
248 uint32_t _flags_save_string
= ndr
->flags
;
249 ndr_set_flags(&ndr
->flags
, LIBNDR_FLAG_STR_NULLTERM
|LIBNDR_FLAG_ALIGN2
);
250 if (r
->service_name
) {
251 NDR_CHECK(ndr_push_relative_ptr2_start(ndr
, r
->service_name
));
252 NDR_CHECK(ndr_push_string(ndr
, NDR_SCALARS
, r
->service_name
));
253 NDR_CHECK(ndr_push_relative_ptr2_end(ndr
, r
->service_name
));
255 ndr
->flags
= _flags_save_string
;
258 uint32_t _flags_save_string
= ndr
->flags
;
259 ndr_set_flags(&ndr
->flags
, LIBNDR_FLAG_STR_NULLTERM
|LIBNDR_FLAG_ALIGN2
);
260 if (r
->display_name
) {
261 NDR_CHECK(ndr_push_relative_ptr2_start(ndr
, r
->display_name
));
262 NDR_CHECK(ndr_push_string(ndr
, NDR_SCALARS
, r
->display_name
));
263 NDR_CHECK(ndr_push_relative_ptr2_end(ndr
, r
->display_name
));
265 ndr
->flags
= _flags_save_string
;
268 return NDR_ERR_SUCCESS
;
271 _PUBLIC_
enum ndr_err_code
ndr_pull_ENUM_SERVICE_STATUSW(struct ndr_pull
*ndr
, int ndr_flags
, struct ENUM_SERVICE_STATUSW
*r
)
273 uint32_t _ptr_service_name
;
274 TALLOC_CTX
*_mem_save_service_name_0
;
275 uint32_t _ptr_display_name
;
276 TALLOC_CTX
*_mem_save_display_name_0
;
277 if (ndr_flags
& NDR_SCALARS
) {
278 NDR_CHECK(ndr_pull_align(ndr
, 5));
280 uint32_t _flags_save_string
= ndr
->flags
;
281 ndr_set_flags(&ndr
->flags
, LIBNDR_FLAG_STR_NULLTERM
|LIBNDR_FLAG_ALIGN2
);
282 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_service_name
));
283 if (_ptr_service_name
) {
284 NDR_PULL_ALLOC(ndr
, r
->service_name
);
285 NDR_CHECK(ndr_pull_relative_ptr1(ndr
, r
->service_name
, _ptr_service_name
));
287 r
->service_name
= NULL
;
289 ndr
->flags
= _flags_save_string
;
292 uint32_t _flags_save_string
= ndr
->flags
;
293 ndr_set_flags(&ndr
->flags
, LIBNDR_FLAG_STR_NULLTERM
|LIBNDR_FLAG_ALIGN2
);
294 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_display_name
));
295 if (_ptr_display_name
) {
296 NDR_PULL_ALLOC(ndr
, r
->display_name
);
297 NDR_CHECK(ndr_pull_relative_ptr1(ndr
, r
->display_name
, _ptr_display_name
));
299 r
->display_name
= NULL
;
301 ndr
->flags
= _flags_save_string
;
303 NDR_CHECK(ndr_pull_SERVICE_STATUS(ndr
, NDR_SCALARS
, &r
->status
));
304 NDR_CHECK(ndr_pull_trailer_align(ndr
, 5));
306 if (ndr_flags
& NDR_BUFFERS
) {
308 uint32_t _flags_save_string
= ndr
->flags
;
309 ndr_set_flags(&ndr
->flags
, LIBNDR_FLAG_STR_NULLTERM
|LIBNDR_FLAG_ALIGN2
);
310 if (r
->service_name
) {
311 uint32_t _relative_save_offset
;
312 _relative_save_offset
= ndr
->offset
;
313 NDR_CHECK(ndr_pull_relative_ptr2(ndr
, r
->service_name
));
314 _mem_save_service_name_0
= NDR_PULL_GET_MEM_CTX(ndr
);
315 NDR_PULL_SET_MEM_CTX(ndr
, r
->service_name
, 0);
316 NDR_CHECK(ndr_pull_string(ndr
, NDR_SCALARS
, &r
->service_name
));
317 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_service_name_0
, 0);
318 ndr
->offset
= _relative_save_offset
;
320 ndr
->flags
= _flags_save_string
;
323 uint32_t _flags_save_string
= ndr
->flags
;
324 ndr_set_flags(&ndr
->flags
, LIBNDR_FLAG_STR_NULLTERM
|LIBNDR_FLAG_ALIGN2
);
325 if (r
->display_name
) {
326 uint32_t _relative_save_offset
;
327 _relative_save_offset
= ndr
->offset
;
328 NDR_CHECK(ndr_pull_relative_ptr2(ndr
, r
->display_name
));
329 _mem_save_display_name_0
= NDR_PULL_GET_MEM_CTX(ndr
);
330 NDR_PULL_SET_MEM_CTX(ndr
, r
->display_name
, 0);
331 NDR_CHECK(ndr_pull_string(ndr
, NDR_SCALARS
, &r
->display_name
));
332 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_display_name_0
, 0);
333 ndr
->offset
= _relative_save_offset
;
335 ndr
->flags
= _flags_save_string
;
338 return NDR_ERR_SUCCESS
;
341 _PUBLIC_
void ndr_print_ENUM_SERVICE_STATUSW(struct ndr_print
*ndr
, const char *name
, const struct ENUM_SERVICE_STATUSW
*r
)
343 ndr_print_struct(ndr
, name
, "ENUM_SERVICE_STATUSW");
345 ndr_print_ptr(ndr
, "service_name", r
->service_name
);
347 if (r
->service_name
) {
348 ndr_print_string(ndr
, "service_name", r
->service_name
);
351 ndr_print_ptr(ndr
, "display_name", r
->display_name
);
353 if (r
->display_name
) {
354 ndr_print_string(ndr
, "display_name", r
->display_name
);
357 ndr_print_SERVICE_STATUS(ndr
, "status", &r
->status
);
361 _PUBLIC_
size_t ndr_size_ENUM_SERVICE_STATUSW(const struct ENUM_SERVICE_STATUSW
*r
, struct smb_iconv_convenience
*ic
, int flags
)
363 return ndr_size_struct(r
, flags
, (ndr_push_flags_fn_t
)ndr_push_ENUM_SERVICE_STATUSW
, ic
);
366 _PUBLIC_
enum ndr_err_code
ndr_push_ENUM_SERVICE_STATUSA(struct ndr_push
*ndr
, int ndr_flags
, const struct ENUM_SERVICE_STATUSA
*r
)
368 if (ndr_flags
& NDR_SCALARS
) {
369 NDR_CHECK(ndr_push_align(ndr
, 5));
371 uint32_t _flags_save_string
= ndr
->flags
;
372 ndr_set_flags(&ndr
->flags
, LIBNDR_FLAG_STR_ASCII
|LIBNDR_FLAG_STR_NULLTERM
);
373 NDR_CHECK(ndr_push_relative_ptr1(ndr
, r
->service_name
));
374 ndr
->flags
= _flags_save_string
;
377 uint32_t _flags_save_string
= ndr
->flags
;
378 ndr_set_flags(&ndr
->flags
, LIBNDR_FLAG_STR_ASCII
|LIBNDR_FLAG_STR_NULLTERM
);
379 NDR_CHECK(ndr_push_relative_ptr1(ndr
, r
->display_name
));
380 ndr
->flags
= _flags_save_string
;
382 NDR_CHECK(ndr_push_SERVICE_STATUS(ndr
, NDR_SCALARS
, &r
->status
));
383 NDR_CHECK(ndr_push_trailer_align(ndr
, 5));
385 if (ndr_flags
& NDR_BUFFERS
) {
387 uint32_t _flags_save_string
= ndr
->flags
;
388 ndr_set_flags(&ndr
->flags
, LIBNDR_FLAG_STR_ASCII
|LIBNDR_FLAG_STR_NULLTERM
);
389 if (r
->service_name
) {
390 NDR_CHECK(ndr_push_relative_ptr2_start(ndr
, r
->service_name
));
391 NDR_CHECK(ndr_push_string(ndr
, NDR_SCALARS
, r
->service_name
));
392 NDR_CHECK(ndr_push_relative_ptr2_end(ndr
, r
->service_name
));
394 ndr
->flags
= _flags_save_string
;
397 uint32_t _flags_save_string
= ndr
->flags
;
398 ndr_set_flags(&ndr
->flags
, LIBNDR_FLAG_STR_ASCII
|LIBNDR_FLAG_STR_NULLTERM
);
399 if (r
->display_name
) {
400 NDR_CHECK(ndr_push_relative_ptr2_start(ndr
, r
->display_name
));
401 NDR_CHECK(ndr_push_string(ndr
, NDR_SCALARS
, r
->display_name
));
402 NDR_CHECK(ndr_push_relative_ptr2_end(ndr
, r
->display_name
));
404 ndr
->flags
= _flags_save_string
;
407 return NDR_ERR_SUCCESS
;
410 _PUBLIC_
enum ndr_err_code
ndr_pull_ENUM_SERVICE_STATUSA(struct ndr_pull
*ndr
, int ndr_flags
, struct ENUM_SERVICE_STATUSA
*r
)
412 uint32_t _ptr_service_name
;
413 TALLOC_CTX
*_mem_save_service_name_0
;
414 uint32_t _ptr_display_name
;
415 TALLOC_CTX
*_mem_save_display_name_0
;
416 if (ndr_flags
& NDR_SCALARS
) {
417 NDR_CHECK(ndr_pull_align(ndr
, 5));
419 uint32_t _flags_save_string
= ndr
->flags
;
420 ndr_set_flags(&ndr
->flags
, LIBNDR_FLAG_STR_ASCII
|LIBNDR_FLAG_STR_NULLTERM
);
421 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_service_name
));
422 if (_ptr_service_name
) {
423 NDR_PULL_ALLOC(ndr
, r
->service_name
);
424 NDR_CHECK(ndr_pull_relative_ptr1(ndr
, r
->service_name
, _ptr_service_name
));
426 r
->service_name
= NULL
;
428 ndr
->flags
= _flags_save_string
;
431 uint32_t _flags_save_string
= ndr
->flags
;
432 ndr_set_flags(&ndr
->flags
, LIBNDR_FLAG_STR_ASCII
|LIBNDR_FLAG_STR_NULLTERM
);
433 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_display_name
));
434 if (_ptr_display_name
) {
435 NDR_PULL_ALLOC(ndr
, r
->display_name
);
436 NDR_CHECK(ndr_pull_relative_ptr1(ndr
, r
->display_name
, _ptr_display_name
));
438 r
->display_name
= NULL
;
440 ndr
->flags
= _flags_save_string
;
442 NDR_CHECK(ndr_pull_SERVICE_STATUS(ndr
, NDR_SCALARS
, &r
->status
));
443 NDR_CHECK(ndr_pull_trailer_align(ndr
, 5));
445 if (ndr_flags
& NDR_BUFFERS
) {
447 uint32_t _flags_save_string
= ndr
->flags
;
448 ndr_set_flags(&ndr
->flags
, LIBNDR_FLAG_STR_ASCII
|LIBNDR_FLAG_STR_NULLTERM
);
449 if (r
->service_name
) {
450 uint32_t _relative_save_offset
;
451 _relative_save_offset
= ndr
->offset
;
452 NDR_CHECK(ndr_pull_relative_ptr2(ndr
, r
->service_name
));
453 _mem_save_service_name_0
= NDR_PULL_GET_MEM_CTX(ndr
);
454 NDR_PULL_SET_MEM_CTX(ndr
, r
->service_name
, 0);
455 NDR_CHECK(ndr_pull_string(ndr
, NDR_SCALARS
, &r
->service_name
));
456 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_service_name_0
, 0);
457 ndr
->offset
= _relative_save_offset
;
459 ndr
->flags
= _flags_save_string
;
462 uint32_t _flags_save_string
= ndr
->flags
;
463 ndr_set_flags(&ndr
->flags
, LIBNDR_FLAG_STR_ASCII
|LIBNDR_FLAG_STR_NULLTERM
);
464 if (r
->display_name
) {
465 uint32_t _relative_save_offset
;
466 _relative_save_offset
= ndr
->offset
;
467 NDR_CHECK(ndr_pull_relative_ptr2(ndr
, r
->display_name
));
468 _mem_save_display_name_0
= NDR_PULL_GET_MEM_CTX(ndr
);
469 NDR_PULL_SET_MEM_CTX(ndr
, r
->display_name
, 0);
470 NDR_CHECK(ndr_pull_string(ndr
, NDR_SCALARS
, &r
->display_name
));
471 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_display_name_0
, 0);
472 ndr
->offset
= _relative_save_offset
;
474 ndr
->flags
= _flags_save_string
;
477 return NDR_ERR_SUCCESS
;
480 _PUBLIC_
void ndr_print_ENUM_SERVICE_STATUSA(struct ndr_print
*ndr
, const char *name
, const struct ENUM_SERVICE_STATUSA
*r
)
482 ndr_print_struct(ndr
, name
, "ENUM_SERVICE_STATUSA");
484 ndr_print_ptr(ndr
, "service_name", r
->service_name
);
486 if (r
->service_name
) {
487 ndr_print_string(ndr
, "service_name", r
->service_name
);
490 ndr_print_ptr(ndr
, "display_name", r
->display_name
);
492 if (r
->display_name
) {
493 ndr_print_string(ndr
, "display_name", r
->display_name
);
496 ndr_print_SERVICE_STATUS(ndr
, "status", &r
->status
);
500 _PUBLIC_
size_t ndr_size_ENUM_SERVICE_STATUSA(const struct ENUM_SERVICE_STATUSA
*r
, struct smb_iconv_convenience
*ic
, int flags
)
502 return ndr_size_struct(r
, flags
, (ndr_push_flags_fn_t
)ndr_push_ENUM_SERVICE_STATUSA
, ic
);
505 _PUBLIC_
enum ndr_err_code
ndr_push_svcctl_ServerType(struct ndr_push
*ndr
, int ndr_flags
, uint32_t r
)
507 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
));
508 return NDR_ERR_SUCCESS
;
511 _PUBLIC_
enum ndr_err_code
ndr_pull_svcctl_ServerType(struct ndr_pull
*ndr
, int ndr_flags
, uint32_t *r
)
514 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &v
));
516 return NDR_ERR_SUCCESS
;
519 _PUBLIC_
void ndr_print_svcctl_ServerType(struct ndr_print
*ndr
, const char *name
, uint32_t r
)
521 ndr_print_uint32(ndr
, name
, r
);
523 ndr_print_bitmap_flag(ndr
, sizeof(uint32_t), "SV_TYPE_WORKSTATION", SV_TYPE_WORKSTATION
, r
);
524 ndr_print_bitmap_flag(ndr
, sizeof(uint32_t), "SV_TYPE_SERVER", SV_TYPE_SERVER
, r
);
525 ndr_print_bitmap_flag(ndr
, sizeof(uint32_t), "SV_TYPE_SQLSERVER", SV_TYPE_SQLSERVER
, r
);
526 ndr_print_bitmap_flag(ndr
, sizeof(uint32_t), "SV_TYPE_DOMAIN_CTRL", SV_TYPE_DOMAIN_CTRL
, r
);
527 ndr_print_bitmap_flag(ndr
, sizeof(uint32_t), "SV_TYPE_DOMAIN_BAKCTRL", SV_TYPE_DOMAIN_BAKCTRL
, r
);
528 ndr_print_bitmap_flag(ndr
, sizeof(uint32_t), "SV_TYPE_TIME_SOURCE", SV_TYPE_TIME_SOURCE
, r
);
529 ndr_print_bitmap_flag(ndr
, sizeof(uint32_t), "SV_TYPE_AFP", SV_TYPE_AFP
, r
);
530 ndr_print_bitmap_flag(ndr
, sizeof(uint32_t), "SV_TYPE_NOVELL", SV_TYPE_NOVELL
, r
);
531 ndr_print_bitmap_flag(ndr
, sizeof(uint32_t), "SV_TYPE_DOMAIN_MEMBER", SV_TYPE_DOMAIN_MEMBER
, r
);
532 ndr_print_bitmap_flag(ndr
, sizeof(uint32_t), "SV_TYPE_PRINTQ_SERVER", SV_TYPE_PRINTQ_SERVER
, r
);
533 ndr_print_bitmap_flag(ndr
, sizeof(uint32_t), "SV_TYPE_DIALIN_SERVER", SV_TYPE_DIALIN_SERVER
, r
);
534 ndr_print_bitmap_flag(ndr
, sizeof(uint32_t), "SV_TYPE_SERVER_UNIX", SV_TYPE_SERVER_UNIX
, r
);
535 ndr_print_bitmap_flag(ndr
, sizeof(uint32_t), "SV_TYPE_NT", SV_TYPE_NT
, r
);
536 ndr_print_bitmap_flag(ndr
, sizeof(uint32_t), "SV_TYPE_WFW", SV_TYPE_WFW
, r
);
537 ndr_print_bitmap_flag(ndr
, sizeof(uint32_t), "SV_TYPE_SERVER_MFPN", SV_TYPE_SERVER_MFPN
, r
);
538 ndr_print_bitmap_flag(ndr
, sizeof(uint32_t), "SV_TYPE_SERVER_NT", SV_TYPE_SERVER_NT
, r
);
539 ndr_print_bitmap_flag(ndr
, sizeof(uint32_t), "SV_TYPE_POTENTIAL_BROWSER", SV_TYPE_POTENTIAL_BROWSER
, r
);
540 ndr_print_bitmap_flag(ndr
, sizeof(uint32_t), "SV_TYPE_BACKUP_BROWSER", SV_TYPE_BACKUP_BROWSER
, r
);
541 ndr_print_bitmap_flag(ndr
, sizeof(uint32_t), "SV_TYPE_MASTER_BROWSER", SV_TYPE_MASTER_BROWSER
, r
);
542 ndr_print_bitmap_flag(ndr
, sizeof(uint32_t), "SV_TYPE_DOMAIN_MASTER", SV_TYPE_DOMAIN_MASTER
, r
);
543 ndr_print_bitmap_flag(ndr
, sizeof(uint32_t), "SV_TYPE_SERVER_OSF", SV_TYPE_SERVER_OSF
, r
);
544 ndr_print_bitmap_flag(ndr
, sizeof(uint32_t), "SV_TYPE_SERVER_VMS", SV_TYPE_SERVER_VMS
, r
);
545 ndr_print_bitmap_flag(ndr
, sizeof(uint32_t), "SV_TYPE_WIN95_PLUS", SV_TYPE_WIN95_PLUS
, r
);
546 ndr_print_bitmap_flag(ndr
, sizeof(uint32_t), "SV_TYPE_DFS_SERVER", SV_TYPE_DFS_SERVER
, r
);
547 ndr_print_bitmap_flag(ndr
, sizeof(uint32_t), "SV_TYPE_ALTERNATE_XPORT", SV_TYPE_ALTERNATE_XPORT
, r
);
548 ndr_print_bitmap_flag(ndr
, sizeof(uint32_t), "SV_TYPE_LOCAL_LIST_ONLY", SV_TYPE_LOCAL_LIST_ONLY
, r
);
549 ndr_print_bitmap_flag(ndr
, sizeof(uint32_t), "SV_TYPE_DOMAIN_ENUM", SV_TYPE_DOMAIN_ENUM
, r
);
553 static enum ndr_err_code
ndr_push_SERVICE_CONTROL(struct ndr_push
*ndr
, int ndr_flags
, enum SERVICE_CONTROL r
)
555 NDR_CHECK(ndr_push_enum_uint32(ndr
, NDR_SCALARS
, r
));
556 return NDR_ERR_SUCCESS
;
559 static enum ndr_err_code
ndr_pull_SERVICE_CONTROL(struct ndr_pull
*ndr
, int ndr_flags
, enum SERVICE_CONTROL
*r
)
562 NDR_CHECK(ndr_pull_enum_uint32(ndr
, NDR_SCALARS
, &v
));
564 return NDR_ERR_SUCCESS
;
567 _PUBLIC_
void ndr_print_SERVICE_CONTROL(struct ndr_print
*ndr
, const char *name
, enum SERVICE_CONTROL r
)
569 const char *val
= NULL
;
572 case SVCCTL_CONTROL_STOP
: val
= "SVCCTL_CONTROL_STOP"; break;
573 case SVCCTL_CONTROL_PAUSE
: val
= "SVCCTL_CONTROL_PAUSE"; break;
574 case SVCCTL_CONTROL_CONTINUE
: val
= "SVCCTL_CONTROL_CONTINUE"; break;
575 case SVCCTL_CONTROL_INTERROGATE
: val
= "SVCCTL_CONTROL_INTERROGATE"; break;
576 case SVCCTL_CONTROL_SHUTDOWN
: val
= "SVCCTL_CONTROL_SHUTDOWN"; break;
578 ndr_print_enum(ndr
, name
, "ENUM", val
, r
);
581 static enum ndr_err_code
ndr_push_svcctl_ErrorControl(struct ndr_push
*ndr
, int ndr_flags
, enum svcctl_ErrorControl r
)
583 NDR_CHECK(ndr_push_enum_uint32(ndr
, NDR_SCALARS
, r
));
584 return NDR_ERR_SUCCESS
;
587 static enum ndr_err_code
ndr_pull_svcctl_ErrorControl(struct ndr_pull
*ndr
, int ndr_flags
, enum svcctl_ErrorControl
*r
)
590 NDR_CHECK(ndr_pull_enum_uint32(ndr
, NDR_SCALARS
, &v
));
592 return NDR_ERR_SUCCESS
;
595 _PUBLIC_
void ndr_print_svcctl_ErrorControl(struct ndr_print
*ndr
, const char *name
, enum svcctl_ErrorControl r
)
597 const char *val
= NULL
;
600 case SVCCTL_SVC_ERROR_IGNORE
: val
= "SVCCTL_SVC_ERROR_IGNORE"; break;
601 case SVCCTL_SVC_ERROR_NORMAL
: val
= "SVCCTL_SVC_ERROR_NORMAL"; break;
602 case SVCCTL_SVC_ERROR_CRITICAL
: val
= "SVCCTL_SVC_ERROR_CRITICAL"; break;
603 case SVCCTL_SVC_ERROR_SEVERE
: val
= "SVCCTL_SVC_ERROR_SEVERE"; break;
605 ndr_print_enum(ndr
, name
, "ENUM", val
, r
);
608 static enum ndr_err_code
ndr_push_svcctl_StartType(struct ndr_push
*ndr
, int ndr_flags
, enum svcctl_StartType r
)
610 NDR_CHECK(ndr_push_enum_uint32(ndr
, NDR_SCALARS
, r
));
611 return NDR_ERR_SUCCESS
;
614 static enum ndr_err_code
ndr_pull_svcctl_StartType(struct ndr_pull
*ndr
, int ndr_flags
, enum svcctl_StartType
*r
)
617 NDR_CHECK(ndr_pull_enum_uint32(ndr
, NDR_SCALARS
, &v
));
619 return NDR_ERR_SUCCESS
;
622 _PUBLIC_
void ndr_print_svcctl_StartType(struct ndr_print
*ndr
, const char *name
, enum svcctl_StartType r
)
624 const char *val
= NULL
;
627 case SVCCTL_BOOT_START
: val
= "SVCCTL_BOOT_START"; break;
628 case SVCCTL_SYSTEM_START
: val
= "SVCCTL_SYSTEM_START"; break;
629 case SVCCTL_AUTO_START
: val
= "SVCCTL_AUTO_START"; break;
630 case SVCCTL_DEMAND_START
: val
= "SVCCTL_DEMAND_START"; break;
631 case SVCCTL_DISABLED
: val
= "SVCCTL_DISABLED"; break;
633 ndr_print_enum(ndr
, name
, "ENUM", val
, r
);
636 static enum ndr_err_code
ndr_push_svcctl_ServiceState(struct ndr_push
*ndr
, int ndr_flags
, enum svcctl_ServiceState r
)
638 NDR_CHECK(ndr_push_enum_uint32(ndr
, NDR_SCALARS
, r
));
639 return NDR_ERR_SUCCESS
;
642 static enum ndr_err_code
ndr_pull_svcctl_ServiceState(struct ndr_pull
*ndr
, int ndr_flags
, enum svcctl_ServiceState
*r
)
645 NDR_CHECK(ndr_pull_enum_uint32(ndr
, NDR_SCALARS
, &v
));
647 return NDR_ERR_SUCCESS
;
650 _PUBLIC_
void ndr_print_svcctl_ServiceState(struct ndr_print
*ndr
, const char *name
, enum svcctl_ServiceState r
)
652 const char *val
= NULL
;
655 case SERVICE_STATE_ACTIVE
: val
= "SERVICE_STATE_ACTIVE"; break;
656 case SERVICE_STATE_INACTIVE
: val
= "SERVICE_STATE_INACTIVE"; break;
657 case SERVICE_STATE_ALL
: val
= "SERVICE_STATE_ALL"; break;
659 ndr_print_enum(ndr
, name
, "ENUM", val
, r
);
662 static enum ndr_err_code
ndr_push_svcctl_MgrAccessMask(struct ndr_push
*ndr
, int ndr_flags
, uint32_t r
)
664 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
));
665 return NDR_ERR_SUCCESS
;
668 static enum ndr_err_code
ndr_pull_svcctl_MgrAccessMask(struct ndr_pull
*ndr
, int ndr_flags
, uint32_t *r
)
671 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &v
));
673 return NDR_ERR_SUCCESS
;
676 _PUBLIC_
void ndr_print_svcctl_MgrAccessMask(struct ndr_print
*ndr
, const char *name
, uint32_t r
)
678 ndr_print_uint32(ndr
, name
, r
);
680 ndr_print_bitmap_flag(ndr
, sizeof(uint32_t), "SC_RIGHT_MGR_CONNECT", SC_RIGHT_MGR_CONNECT
, r
);
681 ndr_print_bitmap_flag(ndr
, sizeof(uint32_t), "SC_RIGHT_MGR_CREATE_SERVICE", SC_RIGHT_MGR_CREATE_SERVICE
, r
);
682 ndr_print_bitmap_flag(ndr
, sizeof(uint32_t), "SC_RIGHT_MGR_ENUMERATE_SERVICE", SC_RIGHT_MGR_ENUMERATE_SERVICE
, r
);
683 ndr_print_bitmap_flag(ndr
, sizeof(uint32_t), "SC_RIGHT_MGR_LOCK", SC_RIGHT_MGR_LOCK
, r
);
684 ndr_print_bitmap_flag(ndr
, sizeof(uint32_t), "SC_RIGHT_MGR_QUERY_LOCK_STATUS", SC_RIGHT_MGR_QUERY_LOCK_STATUS
, r
);
685 ndr_print_bitmap_flag(ndr
, sizeof(uint32_t), "SC_RIGHT_MGR_MODIFY_BOOT_CONFIG", SC_RIGHT_MGR_MODIFY_BOOT_CONFIG
, r
);
689 static enum ndr_err_code
ndr_push_svcctl_ServiceAccessMask(struct ndr_push
*ndr
, int ndr_flags
, uint32_t r
)
691 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
));
692 return NDR_ERR_SUCCESS
;
695 static enum ndr_err_code
ndr_pull_svcctl_ServiceAccessMask(struct ndr_pull
*ndr
, int ndr_flags
, uint32_t *r
)
698 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &v
));
700 return NDR_ERR_SUCCESS
;
703 _PUBLIC_
void ndr_print_svcctl_ServiceAccessMask(struct ndr_print
*ndr
, const char *name
, uint32_t r
)
705 ndr_print_uint32(ndr
, name
, r
);
707 ndr_print_bitmap_flag(ndr
, sizeof(uint32_t), "SC_RIGHT_SVC_QUERY_CONFIG", SC_RIGHT_SVC_QUERY_CONFIG
, r
);
708 ndr_print_bitmap_flag(ndr
, sizeof(uint32_t), "SC_RIGHT_SVC_CHANGE_CONFIG", SC_RIGHT_SVC_CHANGE_CONFIG
, r
);
709 ndr_print_bitmap_flag(ndr
, sizeof(uint32_t), "SC_RIGHT_SVC_QUERY_STATUS", SC_RIGHT_SVC_QUERY_STATUS
, r
);
710 ndr_print_bitmap_flag(ndr
, sizeof(uint32_t), "SC_RIGHT_SVC_ENUMERATE_DEPENDENTS", SC_RIGHT_SVC_ENUMERATE_DEPENDENTS
, r
);
711 ndr_print_bitmap_flag(ndr
, sizeof(uint32_t), "SC_RIGHT_SVC_START", SC_RIGHT_SVC_START
, r
);
712 ndr_print_bitmap_flag(ndr
, sizeof(uint32_t), "SC_RIGHT_SVC_STOP", SC_RIGHT_SVC_STOP
, r
);
713 ndr_print_bitmap_flag(ndr
, sizeof(uint32_t), "SC_RIGHT_SVC_PAUSE_CONTINUE", SC_RIGHT_SVC_PAUSE_CONTINUE
, r
);
714 ndr_print_bitmap_flag(ndr
, sizeof(uint32_t), "SC_RIGHT_SVC_INTERROGATE", SC_RIGHT_SVC_INTERROGATE
, r
);
715 ndr_print_bitmap_flag(ndr
, sizeof(uint32_t), "SC_RIGHT_SVC_USER_DEFINED_CONTROL", SC_RIGHT_SVC_USER_DEFINED_CONTROL
, r
);
719 _PUBLIC_
enum ndr_err_code
ndr_push_QUERY_SERVICE_CONFIG(struct ndr_push
*ndr
, int ndr_flags
, const struct QUERY_SERVICE_CONFIG
*r
)
721 if (ndr_flags
& NDR_SCALARS
) {
722 NDR_CHECK(ndr_push_align(ndr
, 5));
723 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->service_type
));
724 NDR_CHECK(ndr_push_svcctl_StartType(ndr
, NDR_SCALARS
, r
->start_type
));
725 NDR_CHECK(ndr_push_svcctl_ErrorControl(ndr
, NDR_SCALARS
, r
->error_control
));
726 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->executablepath
));
727 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->loadordergroup
));
728 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->tag_id
));
729 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->dependencies
));
730 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->startname
));
731 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->displayname
));
732 NDR_CHECK(ndr_push_trailer_align(ndr
, 5));
734 if (ndr_flags
& NDR_BUFFERS
) {
735 if (r
->executablepath
) {
736 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, ndr_charset_length(r
->executablepath
, CH_UTF16
)));
737 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, 0));
738 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, ndr_charset_length(r
->executablepath
, CH_UTF16
)));
739 NDR_CHECK(ndr_push_charset(ndr
, NDR_SCALARS
, r
->executablepath
, ndr_charset_length(r
->executablepath
, CH_UTF16
), sizeof(uint16_t), CH_UTF16
));
741 if (r
->loadordergroup
) {
742 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, ndr_charset_length(r
->loadordergroup
, CH_UTF16
)));
743 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, 0));
744 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, ndr_charset_length(r
->loadordergroup
, CH_UTF16
)));
745 NDR_CHECK(ndr_push_charset(ndr
, NDR_SCALARS
, r
->loadordergroup
, ndr_charset_length(r
->loadordergroup
, CH_UTF16
), sizeof(uint16_t), CH_UTF16
));
747 if (r
->dependencies
) {
748 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, ndr_charset_length(r
->dependencies
, CH_UTF16
)));
749 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, 0));
750 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, ndr_charset_length(r
->dependencies
, CH_UTF16
)));
751 NDR_CHECK(ndr_push_charset(ndr
, NDR_SCALARS
, r
->dependencies
, ndr_charset_length(r
->dependencies
, CH_UTF16
), sizeof(uint16_t), CH_UTF16
));
754 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, ndr_charset_length(r
->startname
, CH_UTF16
)));
755 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, 0));
756 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, ndr_charset_length(r
->startname
, CH_UTF16
)));
757 NDR_CHECK(ndr_push_charset(ndr
, NDR_SCALARS
, r
->startname
, ndr_charset_length(r
->startname
, CH_UTF16
), sizeof(uint16_t), CH_UTF16
));
759 if (r
->displayname
) {
760 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, ndr_charset_length(r
->displayname
, CH_UTF16
)));
761 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, 0));
762 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, ndr_charset_length(r
->displayname
, CH_UTF16
)));
763 NDR_CHECK(ndr_push_charset(ndr
, NDR_SCALARS
, r
->displayname
, ndr_charset_length(r
->displayname
, CH_UTF16
), sizeof(uint16_t), CH_UTF16
));
766 return NDR_ERR_SUCCESS
;
769 _PUBLIC_
enum ndr_err_code
ndr_pull_QUERY_SERVICE_CONFIG(struct ndr_pull
*ndr
, int ndr_flags
, struct QUERY_SERVICE_CONFIG
*r
)
771 uint32_t _ptr_executablepath
;
772 uint32_t size_executablepath_1
= 0;
773 uint32_t length_executablepath_1
= 0;
774 TALLOC_CTX
*_mem_save_executablepath_0
;
775 uint32_t _ptr_loadordergroup
;
776 uint32_t size_loadordergroup_1
= 0;
777 uint32_t length_loadordergroup_1
= 0;
778 TALLOC_CTX
*_mem_save_loadordergroup_0
;
779 uint32_t _ptr_dependencies
;
780 uint32_t size_dependencies_1
= 0;
781 uint32_t length_dependencies_1
= 0;
782 TALLOC_CTX
*_mem_save_dependencies_0
;
783 uint32_t _ptr_startname
;
784 uint32_t size_startname_1
= 0;
785 uint32_t length_startname_1
= 0;
786 TALLOC_CTX
*_mem_save_startname_0
;
787 uint32_t _ptr_displayname
;
788 uint32_t size_displayname_1
= 0;
789 uint32_t length_displayname_1
= 0;
790 TALLOC_CTX
*_mem_save_displayname_0
;
791 if (ndr_flags
& NDR_SCALARS
) {
792 NDR_CHECK(ndr_pull_align(ndr
, 5));
793 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->service_type
));
794 NDR_CHECK(ndr_pull_svcctl_StartType(ndr
, NDR_SCALARS
, &r
->start_type
));
795 NDR_CHECK(ndr_pull_svcctl_ErrorControl(ndr
, NDR_SCALARS
, &r
->error_control
));
796 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_executablepath
));
797 if (_ptr_executablepath
) {
798 NDR_PULL_ALLOC(ndr
, r
->executablepath
);
800 r
->executablepath
= NULL
;
802 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_loadordergroup
));
803 if (_ptr_loadordergroup
) {
804 NDR_PULL_ALLOC(ndr
, r
->loadordergroup
);
806 r
->loadordergroup
= NULL
;
808 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->tag_id
));
809 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_dependencies
));
810 if (_ptr_dependencies
) {
811 NDR_PULL_ALLOC(ndr
, r
->dependencies
);
813 r
->dependencies
= NULL
;
815 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_startname
));
816 if (_ptr_startname
) {
817 NDR_PULL_ALLOC(ndr
, r
->startname
);
821 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_displayname
));
822 if (_ptr_displayname
) {
823 NDR_PULL_ALLOC(ndr
, r
->displayname
);
825 r
->displayname
= NULL
;
827 NDR_CHECK(ndr_pull_trailer_align(ndr
, 5));
829 if (ndr_flags
& NDR_BUFFERS
) {
830 if (r
->executablepath
) {
831 _mem_save_executablepath_0
= NDR_PULL_GET_MEM_CTX(ndr
);
832 NDR_PULL_SET_MEM_CTX(ndr
, r
->executablepath
, 0);
833 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->executablepath
));
834 NDR_CHECK(ndr_pull_array_length(ndr
, &r
->executablepath
));
835 size_executablepath_1
= ndr_get_array_size(ndr
, &r
->executablepath
);
836 if (size_executablepath_1
> 8192) {
837 return ndr_pull_error(ndr
, NDR_ERR_RANGE
, "value out of range");
839 length_executablepath_1
= ndr_get_array_length(ndr
, &r
->executablepath
);
840 if (length_executablepath_1
> 8192) {
841 return ndr_pull_error(ndr
, NDR_ERR_RANGE
, "value out of range");
843 if (length_executablepath_1
> size_executablepath_1
) {
844 return ndr_pull_error(ndr
, NDR_ERR_ARRAY_SIZE
, "Bad array size %u should exceed array length %u", size_executablepath_1
, length_executablepath_1
);
846 NDR_CHECK(ndr_check_string_terminator(ndr
, length_executablepath_1
, sizeof(uint16_t)));
847 NDR_CHECK(ndr_pull_charset(ndr
, NDR_SCALARS
, &r
->executablepath
, length_executablepath_1
, sizeof(uint16_t), CH_UTF16
));
848 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_executablepath_0
, 0);
850 if (r
->loadordergroup
) {
851 _mem_save_loadordergroup_0
= NDR_PULL_GET_MEM_CTX(ndr
);
852 NDR_PULL_SET_MEM_CTX(ndr
, r
->loadordergroup
, 0);
853 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->loadordergroup
));
854 NDR_CHECK(ndr_pull_array_length(ndr
, &r
->loadordergroup
));
855 size_loadordergroup_1
= ndr_get_array_size(ndr
, &r
->loadordergroup
);
856 if (size_loadordergroup_1
> 8192) {
857 return ndr_pull_error(ndr
, NDR_ERR_RANGE
, "value out of range");
859 length_loadordergroup_1
= ndr_get_array_length(ndr
, &r
->loadordergroup
);
860 if (length_loadordergroup_1
> 8192) {
861 return ndr_pull_error(ndr
, NDR_ERR_RANGE
, "value out of range");
863 if (length_loadordergroup_1
> size_loadordergroup_1
) {
864 return ndr_pull_error(ndr
, NDR_ERR_ARRAY_SIZE
, "Bad array size %u should exceed array length %u", size_loadordergroup_1
, length_loadordergroup_1
);
866 NDR_CHECK(ndr_check_string_terminator(ndr
, length_loadordergroup_1
, sizeof(uint16_t)));
867 NDR_CHECK(ndr_pull_charset(ndr
, NDR_SCALARS
, &r
->loadordergroup
, length_loadordergroup_1
, sizeof(uint16_t), CH_UTF16
));
868 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_loadordergroup_0
, 0);
870 if (r
->dependencies
) {
871 _mem_save_dependencies_0
= NDR_PULL_GET_MEM_CTX(ndr
);
872 NDR_PULL_SET_MEM_CTX(ndr
, r
->dependencies
, 0);
873 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->dependencies
));
874 NDR_CHECK(ndr_pull_array_length(ndr
, &r
->dependencies
));
875 size_dependencies_1
= ndr_get_array_size(ndr
, &r
->dependencies
);
876 if (size_dependencies_1
> 8192) {
877 return ndr_pull_error(ndr
, NDR_ERR_RANGE
, "value out of range");
879 length_dependencies_1
= ndr_get_array_length(ndr
, &r
->dependencies
);
880 if (length_dependencies_1
> 8192) {
881 return ndr_pull_error(ndr
, NDR_ERR_RANGE
, "value out of range");
883 if (length_dependencies_1
> size_dependencies_1
) {
884 return ndr_pull_error(ndr
, NDR_ERR_ARRAY_SIZE
, "Bad array size %u should exceed array length %u", size_dependencies_1
, length_dependencies_1
);
886 NDR_CHECK(ndr_check_string_terminator(ndr
, length_dependencies_1
, sizeof(uint16_t)));
887 NDR_CHECK(ndr_pull_charset(ndr
, NDR_SCALARS
, &r
->dependencies
, length_dependencies_1
, sizeof(uint16_t), CH_UTF16
));
888 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_dependencies_0
, 0);
891 _mem_save_startname_0
= NDR_PULL_GET_MEM_CTX(ndr
);
892 NDR_PULL_SET_MEM_CTX(ndr
, r
->startname
, 0);
893 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->startname
));
894 NDR_CHECK(ndr_pull_array_length(ndr
, &r
->startname
));
895 size_startname_1
= ndr_get_array_size(ndr
, &r
->startname
);
896 if (size_startname_1
> 8192) {
897 return ndr_pull_error(ndr
, NDR_ERR_RANGE
, "value out of range");
899 length_startname_1
= ndr_get_array_length(ndr
, &r
->startname
);
900 if (length_startname_1
> 8192) {
901 return ndr_pull_error(ndr
, NDR_ERR_RANGE
, "value out of range");
903 if (length_startname_1
> size_startname_1
) {
904 return ndr_pull_error(ndr
, NDR_ERR_ARRAY_SIZE
, "Bad array size %u should exceed array length %u", size_startname_1
, length_startname_1
);
906 NDR_CHECK(ndr_check_string_terminator(ndr
, length_startname_1
, sizeof(uint16_t)));
907 NDR_CHECK(ndr_pull_charset(ndr
, NDR_SCALARS
, &r
->startname
, length_startname_1
, sizeof(uint16_t), CH_UTF16
));
908 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_startname_0
, 0);
910 if (r
->displayname
) {
911 _mem_save_displayname_0
= NDR_PULL_GET_MEM_CTX(ndr
);
912 NDR_PULL_SET_MEM_CTX(ndr
, r
->displayname
, 0);
913 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->displayname
));
914 NDR_CHECK(ndr_pull_array_length(ndr
, &r
->displayname
));
915 size_displayname_1
= ndr_get_array_size(ndr
, &r
->displayname
);
916 if (size_displayname_1
> 8192) {
917 return ndr_pull_error(ndr
, NDR_ERR_RANGE
, "value out of range");
919 length_displayname_1
= ndr_get_array_length(ndr
, &r
->displayname
);
920 if (length_displayname_1
> 8192) {
921 return ndr_pull_error(ndr
, NDR_ERR_RANGE
, "value out of range");
923 if (length_displayname_1
> size_displayname_1
) {
924 return ndr_pull_error(ndr
, NDR_ERR_ARRAY_SIZE
, "Bad array size %u should exceed array length %u", size_displayname_1
, length_displayname_1
);
926 NDR_CHECK(ndr_check_string_terminator(ndr
, length_displayname_1
, sizeof(uint16_t)));
927 NDR_CHECK(ndr_pull_charset(ndr
, NDR_SCALARS
, &r
->displayname
, length_displayname_1
, sizeof(uint16_t), CH_UTF16
));
928 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_displayname_0
, 0);
931 return NDR_ERR_SUCCESS
;
934 _PUBLIC_
void ndr_print_QUERY_SERVICE_CONFIG(struct ndr_print
*ndr
, const char *name
, const struct QUERY_SERVICE_CONFIG
*r
)
936 ndr_print_struct(ndr
, name
, "QUERY_SERVICE_CONFIG");
938 ndr_print_uint32(ndr
, "service_type", r
->service_type
);
939 ndr_print_svcctl_StartType(ndr
, "start_type", r
->start_type
);
940 ndr_print_svcctl_ErrorControl(ndr
, "error_control", r
->error_control
);
941 ndr_print_ptr(ndr
, "executablepath", r
->executablepath
);
943 if (r
->executablepath
) {
944 ndr_print_string(ndr
, "executablepath", r
->executablepath
);
947 ndr_print_ptr(ndr
, "loadordergroup", r
->loadordergroup
);
949 if (r
->loadordergroup
) {
950 ndr_print_string(ndr
, "loadordergroup", r
->loadordergroup
);
953 ndr_print_uint32(ndr
, "tag_id", r
->tag_id
);
954 ndr_print_ptr(ndr
, "dependencies", r
->dependencies
);
956 if (r
->dependencies
) {
957 ndr_print_string(ndr
, "dependencies", r
->dependencies
);
960 ndr_print_ptr(ndr
, "startname", r
->startname
);
963 ndr_print_string(ndr
, "startname", r
->startname
);
966 ndr_print_ptr(ndr
, "displayname", r
->displayname
);
968 if (r
->displayname
) {
969 ndr_print_string(ndr
, "displayname", r
->displayname
);
975 _PUBLIC_
size_t ndr_size_QUERY_SERVICE_CONFIG(const struct QUERY_SERVICE_CONFIG
*r
, struct smb_iconv_convenience
*ic
, int flags
)
977 return ndr_size_struct(r
, flags
, (ndr_push_flags_fn_t
)ndr_push_QUERY_SERVICE_CONFIG
, ic
);
980 static enum ndr_err_code
ndr_push_svcctl_ArgumentString(struct ndr_push
*ndr
, int ndr_flags
, const struct svcctl_ArgumentString
*r
)
982 if (ndr_flags
& NDR_SCALARS
) {
983 NDR_CHECK(ndr_push_align(ndr
, 5));
984 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->string
));
985 NDR_CHECK(ndr_push_trailer_align(ndr
, 5));
987 if (ndr_flags
& NDR_BUFFERS
) {
989 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, ndr_charset_length(r
->string
, CH_UTF16
)));
990 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, 0));
991 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, ndr_charset_length(r
->string
, CH_UTF16
)));
992 NDR_CHECK(ndr_push_charset(ndr
, NDR_SCALARS
, r
->string
, ndr_charset_length(r
->string
, CH_UTF16
), sizeof(uint16_t), CH_UTF16
));
995 return NDR_ERR_SUCCESS
;
998 static enum ndr_err_code
ndr_pull_svcctl_ArgumentString(struct ndr_pull
*ndr
, int ndr_flags
, struct svcctl_ArgumentString
*r
)
1000 uint32_t _ptr_string
;
1001 uint32_t size_string_1
= 0;
1002 uint32_t length_string_1
= 0;
1003 TALLOC_CTX
*_mem_save_string_0
;
1004 if (ndr_flags
& NDR_SCALARS
) {
1005 NDR_CHECK(ndr_pull_align(ndr
, 5));
1006 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_string
));
1008 NDR_PULL_ALLOC(ndr
, r
->string
);
1012 NDR_CHECK(ndr_pull_trailer_align(ndr
, 5));
1014 if (ndr_flags
& NDR_BUFFERS
) {
1016 _mem_save_string_0
= NDR_PULL_GET_MEM_CTX(ndr
);
1017 NDR_PULL_SET_MEM_CTX(ndr
, r
->string
, 0);
1018 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->string
));
1019 NDR_CHECK(ndr_pull_array_length(ndr
, &r
->string
));
1020 size_string_1
= ndr_get_array_size(ndr
, &r
->string
);
1021 if (size_string_1
> SC_MAX_ARGUMENT_LENGTH
) {
1022 return ndr_pull_error(ndr
, NDR_ERR_RANGE
, "value out of range");
1024 length_string_1
= ndr_get_array_length(ndr
, &r
->string
);
1025 if (length_string_1
> SC_MAX_ARGUMENT_LENGTH
) {
1026 return ndr_pull_error(ndr
, NDR_ERR_RANGE
, "value out of range");
1028 if (length_string_1
> size_string_1
) {
1029 return ndr_pull_error(ndr
, NDR_ERR_ARRAY_SIZE
, "Bad array size %u should exceed array length %u", size_string_1
, length_string_1
);
1031 NDR_CHECK(ndr_check_string_terminator(ndr
, length_string_1
, sizeof(uint16_t)));
1032 NDR_CHECK(ndr_pull_charset(ndr
, NDR_SCALARS
, &r
->string
, length_string_1
, sizeof(uint16_t), CH_UTF16
));
1033 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_string_0
, 0);
1036 return NDR_ERR_SUCCESS
;
1039 _PUBLIC_
void ndr_print_svcctl_ArgumentString(struct ndr_print
*ndr
, const char *name
, const struct svcctl_ArgumentString
*r
)
1041 ndr_print_struct(ndr
, name
, "svcctl_ArgumentString");
1043 ndr_print_ptr(ndr
, "string", r
->string
);
1046 ndr_print_string(ndr
, "string", r
->string
);
1052 static enum ndr_err_code
ndr_push_svcctl_ConfigLevel(struct ndr_push
*ndr
, int ndr_flags
, enum svcctl_ConfigLevel r
)
1054 NDR_CHECK(ndr_push_enum_uint32(ndr
, NDR_SCALARS
, r
));
1055 return NDR_ERR_SUCCESS
;
1058 static enum ndr_err_code
ndr_pull_svcctl_ConfigLevel(struct ndr_pull
*ndr
, int ndr_flags
, enum svcctl_ConfigLevel
*r
)
1061 NDR_CHECK(ndr_pull_enum_uint32(ndr
, NDR_SCALARS
, &v
));
1063 return NDR_ERR_SUCCESS
;
1066 _PUBLIC_
void ndr_print_svcctl_ConfigLevel(struct ndr_print
*ndr
, const char *name
, enum svcctl_ConfigLevel r
)
1068 const char *val
= NULL
;
1071 case SERVICE_CONFIG_DESCRIPTION
: val
= "SERVICE_CONFIG_DESCRIPTION"; break;
1072 case SERVICE_CONFIG_FAILURE_ACTIONS
: val
= "SERVICE_CONFIG_FAILURE_ACTIONS"; break;
1074 ndr_print_enum(ndr
, name
, "ENUM", val
, r
);
1077 _PUBLIC_
enum ndr_err_code
ndr_push_SERVICE_DESCRIPTION(struct ndr_push
*ndr
, int ndr_flags
, const struct SERVICE_DESCRIPTION
*r
)
1079 if (ndr_flags
& NDR_SCALARS
) {
1080 NDR_CHECK(ndr_push_align(ndr
, 5));
1082 uint32_t _flags_save_string
= ndr
->flags
;
1083 ndr_set_flags(&ndr
->flags
, LIBNDR_FLAG_STR_NULLTERM
|LIBNDR_FLAG_ALIGN2
);
1084 NDR_CHECK(ndr_push_relative_ptr1(ndr
, r
->description
));
1085 ndr
->flags
= _flags_save_string
;
1087 NDR_CHECK(ndr_push_trailer_align(ndr
, 5));
1089 if (ndr_flags
& NDR_BUFFERS
) {
1091 uint32_t _flags_save_string
= ndr
->flags
;
1092 ndr_set_flags(&ndr
->flags
, LIBNDR_FLAG_STR_NULLTERM
|LIBNDR_FLAG_ALIGN2
);
1093 if (r
->description
) {
1094 NDR_CHECK(ndr_push_relative_ptr2_start(ndr
, r
->description
));
1095 NDR_CHECK(ndr_push_string(ndr
, NDR_SCALARS
, r
->description
));
1096 NDR_CHECK(ndr_push_relative_ptr2_end(ndr
, r
->description
));
1098 ndr
->flags
= _flags_save_string
;
1101 return NDR_ERR_SUCCESS
;
1104 _PUBLIC_
enum ndr_err_code
ndr_pull_SERVICE_DESCRIPTION(struct ndr_pull
*ndr
, int ndr_flags
, struct SERVICE_DESCRIPTION
*r
)
1106 uint32_t _ptr_description
;
1107 TALLOC_CTX
*_mem_save_description_0
;
1108 if (ndr_flags
& NDR_SCALARS
) {
1109 NDR_CHECK(ndr_pull_align(ndr
, 5));
1111 uint32_t _flags_save_string
= ndr
->flags
;
1112 ndr_set_flags(&ndr
->flags
, LIBNDR_FLAG_STR_NULLTERM
|LIBNDR_FLAG_ALIGN2
);
1113 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_description
));
1114 if (_ptr_description
) {
1115 NDR_PULL_ALLOC(ndr
, r
->description
);
1116 NDR_CHECK(ndr_pull_relative_ptr1(ndr
, r
->description
, _ptr_description
));
1118 r
->description
= NULL
;
1120 ndr
->flags
= _flags_save_string
;
1122 NDR_CHECK(ndr_pull_trailer_align(ndr
, 5));
1124 if (ndr_flags
& NDR_BUFFERS
) {
1126 uint32_t _flags_save_string
= ndr
->flags
;
1127 ndr_set_flags(&ndr
->flags
, LIBNDR_FLAG_STR_NULLTERM
|LIBNDR_FLAG_ALIGN2
);
1128 if (r
->description
) {
1129 uint32_t _relative_save_offset
;
1130 _relative_save_offset
= ndr
->offset
;
1131 NDR_CHECK(ndr_pull_relative_ptr2(ndr
, r
->description
));
1132 _mem_save_description_0
= NDR_PULL_GET_MEM_CTX(ndr
);
1133 NDR_PULL_SET_MEM_CTX(ndr
, r
->description
, 0);
1134 NDR_CHECK(ndr_pull_string(ndr
, NDR_SCALARS
, &r
->description
));
1135 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_description_0
, 0);
1136 ndr
->offset
= _relative_save_offset
;
1138 ndr
->flags
= _flags_save_string
;
1141 return NDR_ERR_SUCCESS
;
1144 _PUBLIC_
void ndr_print_SERVICE_DESCRIPTION(struct ndr_print
*ndr
, const char *name
, const struct SERVICE_DESCRIPTION
*r
)
1146 ndr_print_struct(ndr
, name
, "SERVICE_DESCRIPTION");
1148 ndr_print_ptr(ndr
, "description", r
->description
);
1150 if (r
->description
) {
1151 ndr_print_string(ndr
, "description", r
->description
);
1157 _PUBLIC_
size_t ndr_size_SERVICE_DESCRIPTION(const struct SERVICE_DESCRIPTION
*r
, struct smb_iconv_convenience
*ic
, int flags
)
1159 return ndr_size_struct(r
, flags
, (ndr_push_flags_fn_t
)ndr_push_SERVICE_DESCRIPTION
, ic
);
1162 static enum ndr_err_code
ndr_push_SC_ACTION_TYPE(struct ndr_push
*ndr
, int ndr_flags
, enum SC_ACTION_TYPE r
)
1164 NDR_CHECK(ndr_push_enum_uint32(ndr
, NDR_SCALARS
, r
));
1165 return NDR_ERR_SUCCESS
;
1168 static enum ndr_err_code
ndr_pull_SC_ACTION_TYPE(struct ndr_pull
*ndr
, int ndr_flags
, enum SC_ACTION_TYPE
*r
)
1171 NDR_CHECK(ndr_pull_enum_uint32(ndr
, NDR_SCALARS
, &v
));
1173 return NDR_ERR_SUCCESS
;
1176 _PUBLIC_
void ndr_print_SC_ACTION_TYPE(struct ndr_print
*ndr
, const char *name
, enum SC_ACTION_TYPE r
)
1178 const char *val
= NULL
;
1181 case SC_ACTION_NONE
: val
= "SC_ACTION_NONE"; break;
1182 case SC_ACTION_RESTART
: val
= "SC_ACTION_RESTART"; break;
1183 case SC_ACTION_REBOOT
: val
= "SC_ACTION_REBOOT"; break;
1184 case SC_ACTION_RUN_COMMAND
: val
= "SC_ACTION_RUN_COMMAND"; break;
1186 ndr_print_enum(ndr
, name
, "ENUM", val
, r
);
1189 static enum ndr_err_code
ndr_push_SC_ACTION(struct ndr_push
*ndr
, int ndr_flags
, const struct SC_ACTION
*r
)
1191 if (ndr_flags
& NDR_SCALARS
) {
1192 NDR_CHECK(ndr_push_align(ndr
, 4));
1193 NDR_CHECK(ndr_push_SC_ACTION_TYPE(ndr
, NDR_SCALARS
, r
->type
));
1194 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->delay
));
1195 NDR_CHECK(ndr_push_trailer_align(ndr
, 4));
1197 if (ndr_flags
& NDR_BUFFERS
) {
1199 return NDR_ERR_SUCCESS
;
1202 static enum ndr_err_code
ndr_pull_SC_ACTION(struct ndr_pull
*ndr
, int ndr_flags
, struct SC_ACTION
*r
)
1204 if (ndr_flags
& NDR_SCALARS
) {
1205 NDR_CHECK(ndr_pull_align(ndr
, 4));
1206 NDR_CHECK(ndr_pull_SC_ACTION_TYPE(ndr
, NDR_SCALARS
, &r
->type
));
1207 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->delay
));
1208 NDR_CHECK(ndr_pull_trailer_align(ndr
, 4));
1210 if (ndr_flags
& NDR_BUFFERS
) {
1212 return NDR_ERR_SUCCESS
;
1215 _PUBLIC_
void ndr_print_SC_ACTION(struct ndr_print
*ndr
, const char *name
, const struct SC_ACTION
*r
)
1217 ndr_print_struct(ndr
, name
, "SC_ACTION");
1219 ndr_print_SC_ACTION_TYPE(ndr
, "type", r
->type
);
1220 ndr_print_uint32(ndr
, "delay", r
->delay
);
1224 _PUBLIC_
enum ndr_err_code
ndr_push_SERVICE_FAILURE_ACTIONS(struct ndr_push
*ndr
, int ndr_flags
, const struct SERVICE_FAILURE_ACTIONS
*r
)
1226 uint32_t cntr_actions_1
;
1227 if (ndr_flags
& NDR_SCALARS
) {
1228 NDR_CHECK(ndr_push_align(ndr
, 5));
1229 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->reset_period
));
1231 uint32_t _flags_save_string
= ndr
->flags
;
1232 ndr_set_flags(&ndr
->flags
, LIBNDR_FLAG_STR_NULLTERM
|LIBNDR_FLAG_ALIGN2
);
1233 NDR_CHECK(ndr_push_relative_ptr1(ndr
, r
->rebootmsg
));
1234 ndr
->flags
= _flags_save_string
;
1237 uint32_t _flags_save_string
= ndr
->flags
;
1238 ndr_set_flags(&ndr
->flags
, LIBNDR_FLAG_STR_NULLTERM
|LIBNDR_FLAG_ALIGN2
);
1239 NDR_CHECK(ndr_push_relative_ptr1(ndr
, r
->command
));
1240 ndr
->flags
= _flags_save_string
;
1242 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->num_actions
));
1243 NDR_CHECK(ndr_push_relative_ptr1(ndr
, r
->actions
));
1244 NDR_CHECK(ndr_push_trailer_align(ndr
, 5));
1246 if (ndr_flags
& NDR_BUFFERS
) {
1248 uint32_t _flags_save_string
= ndr
->flags
;
1249 ndr_set_flags(&ndr
->flags
, LIBNDR_FLAG_STR_NULLTERM
|LIBNDR_FLAG_ALIGN2
);
1251 NDR_CHECK(ndr_push_relative_ptr2_start(ndr
, r
->rebootmsg
));
1252 NDR_CHECK(ndr_push_string(ndr
, NDR_SCALARS
, r
->rebootmsg
));
1253 NDR_CHECK(ndr_push_relative_ptr2_end(ndr
, r
->rebootmsg
));
1255 ndr
->flags
= _flags_save_string
;
1258 uint32_t _flags_save_string
= ndr
->flags
;
1259 ndr_set_flags(&ndr
->flags
, LIBNDR_FLAG_STR_NULLTERM
|LIBNDR_FLAG_ALIGN2
);
1261 NDR_CHECK(ndr_push_relative_ptr2_start(ndr
, r
->command
));
1262 NDR_CHECK(ndr_push_string(ndr
, NDR_SCALARS
, r
->command
));
1263 NDR_CHECK(ndr_push_relative_ptr2_end(ndr
, r
->command
));
1265 ndr
->flags
= _flags_save_string
;
1268 NDR_CHECK(ndr_push_relative_ptr2_start(ndr
, r
->actions
));
1269 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, r
->num_actions
));
1270 for (cntr_actions_1
= 0; cntr_actions_1
< r
->num_actions
; cntr_actions_1
++) {
1271 NDR_CHECK(ndr_push_SC_ACTION(ndr
, NDR_SCALARS
, &r
->actions
[cntr_actions_1
]));
1273 NDR_CHECK(ndr_push_relative_ptr2_end(ndr
, r
->actions
));
1276 return NDR_ERR_SUCCESS
;
1279 _PUBLIC_
enum ndr_err_code
ndr_pull_SERVICE_FAILURE_ACTIONS(struct ndr_pull
*ndr
, int ndr_flags
, struct SERVICE_FAILURE_ACTIONS
*r
)
1281 uint32_t _ptr_rebootmsg
;
1282 TALLOC_CTX
*_mem_save_rebootmsg_0
;
1283 uint32_t _ptr_command
;
1284 TALLOC_CTX
*_mem_save_command_0
;
1285 uint32_t _ptr_actions
;
1286 uint32_t size_actions_1
= 0;
1287 uint32_t cntr_actions_1
;
1288 TALLOC_CTX
*_mem_save_actions_0
;
1289 TALLOC_CTX
*_mem_save_actions_1
;
1290 if (ndr_flags
& NDR_SCALARS
) {
1291 NDR_CHECK(ndr_pull_align(ndr
, 5));
1292 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->reset_period
));
1294 uint32_t _flags_save_string
= ndr
->flags
;
1295 ndr_set_flags(&ndr
->flags
, LIBNDR_FLAG_STR_NULLTERM
|LIBNDR_FLAG_ALIGN2
);
1296 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_rebootmsg
));
1297 if (_ptr_rebootmsg
) {
1298 NDR_PULL_ALLOC(ndr
, r
->rebootmsg
);
1299 NDR_CHECK(ndr_pull_relative_ptr1(ndr
, r
->rebootmsg
, _ptr_rebootmsg
));
1301 r
->rebootmsg
= NULL
;
1303 ndr
->flags
= _flags_save_string
;
1306 uint32_t _flags_save_string
= ndr
->flags
;
1307 ndr_set_flags(&ndr
->flags
, LIBNDR_FLAG_STR_NULLTERM
|LIBNDR_FLAG_ALIGN2
);
1308 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_command
));
1310 NDR_PULL_ALLOC(ndr
, r
->command
);
1311 NDR_CHECK(ndr_pull_relative_ptr1(ndr
, r
->command
, _ptr_command
));
1315 ndr
->flags
= _flags_save_string
;
1317 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->num_actions
));
1318 if (r
->num_actions
> 1024) {
1319 return ndr_pull_error(ndr
, NDR_ERR_RANGE
, "value out of range");
1321 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_actions
));
1323 NDR_PULL_ALLOC(ndr
, r
->actions
);
1324 NDR_CHECK(ndr_pull_relative_ptr1(ndr
, r
->actions
, _ptr_actions
));
1328 NDR_CHECK(ndr_pull_trailer_align(ndr
, 5));
1330 if (ndr_flags
& NDR_BUFFERS
) {
1332 uint32_t _flags_save_string
= ndr
->flags
;
1333 ndr_set_flags(&ndr
->flags
, LIBNDR_FLAG_STR_NULLTERM
|LIBNDR_FLAG_ALIGN2
);
1335 uint32_t _relative_save_offset
;
1336 _relative_save_offset
= ndr
->offset
;
1337 NDR_CHECK(ndr_pull_relative_ptr2(ndr
, r
->rebootmsg
));
1338 _mem_save_rebootmsg_0
= NDR_PULL_GET_MEM_CTX(ndr
);
1339 NDR_PULL_SET_MEM_CTX(ndr
, r
->rebootmsg
, 0);
1340 NDR_CHECK(ndr_pull_string(ndr
, NDR_SCALARS
, &r
->rebootmsg
));
1341 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_rebootmsg_0
, 0);
1342 ndr
->offset
= _relative_save_offset
;
1344 ndr
->flags
= _flags_save_string
;
1347 uint32_t _flags_save_string
= ndr
->flags
;
1348 ndr_set_flags(&ndr
->flags
, LIBNDR_FLAG_STR_NULLTERM
|LIBNDR_FLAG_ALIGN2
);
1350 uint32_t _relative_save_offset
;
1351 _relative_save_offset
= ndr
->offset
;
1352 NDR_CHECK(ndr_pull_relative_ptr2(ndr
, r
->command
));
1353 _mem_save_command_0
= NDR_PULL_GET_MEM_CTX(ndr
);
1354 NDR_PULL_SET_MEM_CTX(ndr
, r
->command
, 0);
1355 NDR_CHECK(ndr_pull_string(ndr
, NDR_SCALARS
, &r
->command
));
1356 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_command_0
, 0);
1357 ndr
->offset
= _relative_save_offset
;
1359 ndr
->flags
= _flags_save_string
;
1362 uint32_t _relative_save_offset
;
1363 _relative_save_offset
= ndr
->offset
;
1364 NDR_CHECK(ndr_pull_relative_ptr2(ndr
, r
->actions
));
1365 _mem_save_actions_0
= NDR_PULL_GET_MEM_CTX(ndr
);
1366 NDR_PULL_SET_MEM_CTX(ndr
, r
->actions
, 0);
1367 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->actions
));
1368 size_actions_1
= ndr_get_array_size(ndr
, &r
->actions
);
1369 NDR_PULL_ALLOC_N(ndr
, r
->actions
, size_actions_1
);
1370 _mem_save_actions_1
= NDR_PULL_GET_MEM_CTX(ndr
);
1371 NDR_PULL_SET_MEM_CTX(ndr
, r
->actions
, 0);
1372 for (cntr_actions_1
= 0; cntr_actions_1
< size_actions_1
; cntr_actions_1
++) {
1373 NDR_CHECK(ndr_pull_SC_ACTION(ndr
, NDR_SCALARS
, &r
->actions
[cntr_actions_1
]));
1375 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_actions_1
, 0);
1376 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_actions_0
, 0);
1377 ndr
->offset
= _relative_save_offset
;
1380 NDR_CHECK(ndr_check_array_size(ndr
, (void*)&r
->actions
, r
->num_actions
));
1383 return NDR_ERR_SUCCESS
;
1386 _PUBLIC_
void ndr_print_SERVICE_FAILURE_ACTIONS(struct ndr_print
*ndr
, const char *name
, const struct SERVICE_FAILURE_ACTIONS
*r
)
1388 uint32_t cntr_actions_1
;
1389 ndr_print_struct(ndr
, name
, "SERVICE_FAILURE_ACTIONS");
1391 ndr_print_uint32(ndr
, "reset_period", r
->reset_period
);
1392 ndr_print_ptr(ndr
, "rebootmsg", r
->rebootmsg
);
1395 ndr_print_string(ndr
, "rebootmsg", r
->rebootmsg
);
1398 ndr_print_ptr(ndr
, "command", r
->command
);
1401 ndr_print_string(ndr
, "command", r
->command
);
1404 ndr_print_uint32(ndr
, "num_actions", r
->num_actions
);
1405 ndr_print_ptr(ndr
, "actions", r
->actions
);
1408 ndr
->print(ndr
, "%s: ARRAY(%d)", "actions", (int)r
->num_actions
);
1410 for (cntr_actions_1
=0;cntr_actions_1
<r
->num_actions
;cntr_actions_1
++) {
1412 if (asprintf(&idx_1
, "[%d]", cntr_actions_1
) != -1) {
1413 ndr_print_SC_ACTION(ndr
, "actions", &r
->actions
[cntr_actions_1
]);
1423 _PUBLIC_
size_t ndr_size_SERVICE_FAILURE_ACTIONS(const struct SERVICE_FAILURE_ACTIONS
*r
, struct smb_iconv_convenience
*ic
, int flags
)
1425 return ndr_size_struct(r
, flags
, (ndr_push_flags_fn_t
)ndr_push_SERVICE_FAILURE_ACTIONS
, ic
);
1428 static enum ndr_err_code
ndr_push_svcctl_StatusLevel(struct ndr_push
*ndr
, int ndr_flags
, enum svcctl_StatusLevel r
)
1430 NDR_CHECK(ndr_push_enum_uint32(ndr
, NDR_SCALARS
, r
));
1431 return NDR_ERR_SUCCESS
;
1434 static enum ndr_err_code
ndr_pull_svcctl_StatusLevel(struct ndr_pull
*ndr
, int ndr_flags
, enum svcctl_StatusLevel
*r
)
1437 NDR_CHECK(ndr_pull_enum_uint32(ndr
, NDR_SCALARS
, &v
));
1439 return NDR_ERR_SUCCESS
;
1442 _PUBLIC_
void ndr_print_svcctl_StatusLevel(struct ndr_print
*ndr
, const char *name
, enum svcctl_StatusLevel r
)
1444 const char *val
= NULL
;
1447 case SVC_STATUS_PROCESS_INFO
: val
= "SVC_STATUS_PROCESS_INFO"; break;
1449 ndr_print_enum(ndr
, name
, "ENUM", val
, r
);
1452 static enum ndr_err_code
ndr_push_svcctl_CloseServiceHandle(struct ndr_push
*ndr
, int flags
, const struct svcctl_CloseServiceHandle
*r
)
1454 if (flags
& NDR_IN
) {
1455 if (r
->in
.handle
== NULL
) {
1456 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
1458 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
, r
->in
.handle
));
1460 if (flags
& NDR_OUT
) {
1461 if (r
->out
.handle
== NULL
) {
1462 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
1464 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
, r
->out
.handle
));
1465 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
1467 return NDR_ERR_SUCCESS
;
1470 static enum ndr_err_code
ndr_pull_svcctl_CloseServiceHandle(struct ndr_pull
*ndr
, int flags
, struct svcctl_CloseServiceHandle
*r
)
1472 TALLOC_CTX
*_mem_save_handle_0
;
1473 if (flags
& NDR_IN
) {
1474 ZERO_STRUCT(r
->out
);
1476 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
1477 NDR_PULL_ALLOC(ndr
, r
->in
.handle
);
1479 _mem_save_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
1480 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.handle
, LIBNDR_FLAG_REF_ALLOC
);
1481 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
, r
->in
.handle
));
1482 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_handle_0
, LIBNDR_FLAG_REF_ALLOC
);
1483 NDR_PULL_ALLOC(ndr
, r
->out
.handle
);
1484 *r
->out
.handle
= *r
->in
.handle
;
1486 if (flags
& NDR_OUT
) {
1487 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
1488 NDR_PULL_ALLOC(ndr
, r
->out
.handle
);
1490 _mem_save_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
1491 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.handle
, LIBNDR_FLAG_REF_ALLOC
);
1492 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
, r
->out
.handle
));
1493 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_handle_0
, LIBNDR_FLAG_REF_ALLOC
);
1494 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
1496 return NDR_ERR_SUCCESS
;
1499 _PUBLIC_
void ndr_print_svcctl_CloseServiceHandle(struct ndr_print
*ndr
, const char *name
, int flags
, const struct svcctl_CloseServiceHandle
*r
)
1501 ndr_print_struct(ndr
, name
, "svcctl_CloseServiceHandle");
1503 if (flags
& NDR_SET_VALUES
) {
1504 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
1506 if (flags
& NDR_IN
) {
1507 ndr_print_struct(ndr
, "in", "svcctl_CloseServiceHandle");
1509 ndr_print_ptr(ndr
, "handle", r
->in
.handle
);
1511 ndr_print_policy_handle(ndr
, "handle", r
->in
.handle
);
1515 if (flags
& NDR_OUT
) {
1516 ndr_print_struct(ndr
, "out", "svcctl_CloseServiceHandle");
1518 ndr_print_ptr(ndr
, "handle", r
->out
.handle
);
1520 ndr_print_policy_handle(ndr
, "handle", r
->out
.handle
);
1522 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
1528 static enum ndr_err_code
ndr_push_svcctl_ControlService(struct ndr_push
*ndr
, int flags
, const struct svcctl_ControlService
*r
)
1530 if (flags
& NDR_IN
) {
1531 if (r
->in
.handle
== NULL
) {
1532 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
1534 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
, r
->in
.handle
));
1535 NDR_CHECK(ndr_push_SERVICE_CONTROL(ndr
, NDR_SCALARS
, r
->in
.control
));
1537 if (flags
& NDR_OUT
) {
1538 if (r
->out
.service_status
== NULL
) {
1539 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
1541 NDR_CHECK(ndr_push_SERVICE_STATUS(ndr
, NDR_SCALARS
, r
->out
.service_status
));
1542 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
1544 return NDR_ERR_SUCCESS
;
1547 static enum ndr_err_code
ndr_pull_svcctl_ControlService(struct ndr_pull
*ndr
, int flags
, struct svcctl_ControlService
*r
)
1549 TALLOC_CTX
*_mem_save_handle_0
;
1550 TALLOC_CTX
*_mem_save_service_status_0
;
1551 if (flags
& NDR_IN
) {
1552 ZERO_STRUCT(r
->out
);
1554 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
1555 NDR_PULL_ALLOC(ndr
, r
->in
.handle
);
1557 _mem_save_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
1558 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.handle
, LIBNDR_FLAG_REF_ALLOC
);
1559 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
, r
->in
.handle
));
1560 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_handle_0
, LIBNDR_FLAG_REF_ALLOC
);
1561 NDR_CHECK(ndr_pull_SERVICE_CONTROL(ndr
, NDR_SCALARS
, &r
->in
.control
));
1562 NDR_PULL_ALLOC(ndr
, r
->out
.service_status
);
1563 ZERO_STRUCTP(r
->out
.service_status
);
1565 if (flags
& NDR_OUT
) {
1566 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
1567 NDR_PULL_ALLOC(ndr
, r
->out
.service_status
);
1569 _mem_save_service_status_0
= NDR_PULL_GET_MEM_CTX(ndr
);
1570 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.service_status
, LIBNDR_FLAG_REF_ALLOC
);
1571 NDR_CHECK(ndr_pull_SERVICE_STATUS(ndr
, NDR_SCALARS
, r
->out
.service_status
));
1572 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_service_status_0
, LIBNDR_FLAG_REF_ALLOC
);
1573 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
1575 return NDR_ERR_SUCCESS
;
1578 _PUBLIC_
void ndr_print_svcctl_ControlService(struct ndr_print
*ndr
, const char *name
, int flags
, const struct svcctl_ControlService
*r
)
1580 ndr_print_struct(ndr
, name
, "svcctl_ControlService");
1582 if (flags
& NDR_SET_VALUES
) {
1583 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
1585 if (flags
& NDR_IN
) {
1586 ndr_print_struct(ndr
, "in", "svcctl_ControlService");
1588 ndr_print_ptr(ndr
, "handle", r
->in
.handle
);
1590 ndr_print_policy_handle(ndr
, "handle", r
->in
.handle
);
1592 ndr_print_SERVICE_CONTROL(ndr
, "control", r
->in
.control
);
1595 if (flags
& NDR_OUT
) {
1596 ndr_print_struct(ndr
, "out", "svcctl_ControlService");
1598 ndr_print_ptr(ndr
, "service_status", r
->out
.service_status
);
1600 ndr_print_SERVICE_STATUS(ndr
, "service_status", r
->out
.service_status
);
1602 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
1608 static enum ndr_err_code
ndr_push_svcctl_DeleteService(struct ndr_push
*ndr
, int flags
, const struct svcctl_DeleteService
*r
)
1610 if (flags
& NDR_IN
) {
1611 if (r
->in
.handle
== NULL
) {
1612 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
1614 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
, r
->in
.handle
));
1616 if (flags
& NDR_OUT
) {
1617 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
1619 return NDR_ERR_SUCCESS
;
1622 static enum ndr_err_code
ndr_pull_svcctl_DeleteService(struct ndr_pull
*ndr
, int flags
, struct svcctl_DeleteService
*r
)
1624 TALLOC_CTX
*_mem_save_handle_0
;
1625 if (flags
& NDR_IN
) {
1626 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
1627 NDR_PULL_ALLOC(ndr
, r
->in
.handle
);
1629 _mem_save_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
1630 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.handle
, LIBNDR_FLAG_REF_ALLOC
);
1631 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
, r
->in
.handle
));
1632 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_handle_0
, LIBNDR_FLAG_REF_ALLOC
);
1634 if (flags
& NDR_OUT
) {
1635 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
1637 return NDR_ERR_SUCCESS
;
1640 _PUBLIC_
void ndr_print_svcctl_DeleteService(struct ndr_print
*ndr
, const char *name
, int flags
, const struct svcctl_DeleteService
*r
)
1642 ndr_print_struct(ndr
, name
, "svcctl_DeleteService");
1644 if (flags
& NDR_SET_VALUES
) {
1645 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
1647 if (flags
& NDR_IN
) {
1648 ndr_print_struct(ndr
, "in", "svcctl_DeleteService");
1650 ndr_print_ptr(ndr
, "handle", r
->in
.handle
);
1652 ndr_print_policy_handle(ndr
, "handle", r
->in
.handle
);
1656 if (flags
& NDR_OUT
) {
1657 ndr_print_struct(ndr
, "out", "svcctl_DeleteService");
1659 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
1665 static enum ndr_err_code
ndr_push_svcctl_LockServiceDatabase(struct ndr_push
*ndr
, int flags
, const struct svcctl_LockServiceDatabase
*r
)
1667 if (flags
& NDR_IN
) {
1668 if (r
->in
.handle
== NULL
) {
1669 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
1671 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
, r
->in
.handle
));
1673 if (flags
& NDR_OUT
) {
1674 if (r
->out
.lock
== NULL
) {
1675 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
1677 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
, r
->out
.lock
));
1678 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
1680 return NDR_ERR_SUCCESS
;
1683 static enum ndr_err_code
ndr_pull_svcctl_LockServiceDatabase(struct ndr_pull
*ndr
, int flags
, struct svcctl_LockServiceDatabase
*r
)
1685 TALLOC_CTX
*_mem_save_handle_0
;
1686 TALLOC_CTX
*_mem_save_lock_0
;
1687 if (flags
& NDR_IN
) {
1688 ZERO_STRUCT(r
->out
);
1690 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
1691 NDR_PULL_ALLOC(ndr
, r
->in
.handle
);
1693 _mem_save_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
1694 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.handle
, LIBNDR_FLAG_REF_ALLOC
);
1695 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
, r
->in
.handle
));
1696 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_handle_0
, LIBNDR_FLAG_REF_ALLOC
);
1697 NDR_PULL_ALLOC(ndr
, r
->out
.lock
);
1698 ZERO_STRUCTP(r
->out
.lock
);
1700 if (flags
& NDR_OUT
) {
1701 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
1702 NDR_PULL_ALLOC(ndr
, r
->out
.lock
);
1704 _mem_save_lock_0
= NDR_PULL_GET_MEM_CTX(ndr
);
1705 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.lock
, LIBNDR_FLAG_REF_ALLOC
);
1706 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
, r
->out
.lock
));
1707 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_lock_0
, LIBNDR_FLAG_REF_ALLOC
);
1708 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
1710 return NDR_ERR_SUCCESS
;
1713 _PUBLIC_
void ndr_print_svcctl_LockServiceDatabase(struct ndr_print
*ndr
, const char *name
, int flags
, const struct svcctl_LockServiceDatabase
*r
)
1715 ndr_print_struct(ndr
, name
, "svcctl_LockServiceDatabase");
1717 if (flags
& NDR_SET_VALUES
) {
1718 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
1720 if (flags
& NDR_IN
) {
1721 ndr_print_struct(ndr
, "in", "svcctl_LockServiceDatabase");
1723 ndr_print_ptr(ndr
, "handle", r
->in
.handle
);
1725 ndr_print_policy_handle(ndr
, "handle", r
->in
.handle
);
1729 if (flags
& NDR_OUT
) {
1730 ndr_print_struct(ndr
, "out", "svcctl_LockServiceDatabase");
1732 ndr_print_ptr(ndr
, "lock", r
->out
.lock
);
1734 ndr_print_policy_handle(ndr
, "lock", r
->out
.lock
);
1736 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
1742 static enum ndr_err_code
ndr_push_svcctl_QueryServiceObjectSecurity(struct ndr_push
*ndr
, int flags
, const struct svcctl_QueryServiceObjectSecurity
*r
)
1744 if (flags
& NDR_IN
) {
1745 if (r
->in
.handle
== NULL
) {
1746 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
1748 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
, r
->in
.handle
));
1749 NDR_CHECK(ndr_push_security_secinfo(ndr
, NDR_SCALARS
, r
->in
.security_flags
));
1750 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.offered
));
1752 if (flags
& NDR_OUT
) {
1753 if (r
->out
.buffer
== NULL
) {
1754 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
1756 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, r
->in
.offered
));
1757 NDR_CHECK(ndr_push_array_uint8(ndr
, NDR_SCALARS
, r
->out
.buffer
, r
->in
.offered
));
1758 if (r
->out
.needed
== NULL
) {
1759 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
1761 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, *r
->out
.needed
));
1762 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
1764 return NDR_ERR_SUCCESS
;
1767 static enum ndr_err_code
ndr_pull_svcctl_QueryServiceObjectSecurity(struct ndr_pull
*ndr
, int flags
, struct svcctl_QueryServiceObjectSecurity
*r
)
1769 uint32_t size_buffer_1
= 0;
1770 TALLOC_CTX
*_mem_save_handle_0
;
1771 TALLOC_CTX
*_mem_save_needed_0
;
1772 if (flags
& NDR_IN
) {
1773 ZERO_STRUCT(r
->out
);
1775 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
1776 NDR_PULL_ALLOC(ndr
, r
->in
.handle
);
1778 _mem_save_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
1779 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.handle
, LIBNDR_FLAG_REF_ALLOC
);
1780 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
, r
->in
.handle
));
1781 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_handle_0
, LIBNDR_FLAG_REF_ALLOC
);
1782 NDR_CHECK(ndr_pull_security_secinfo(ndr
, NDR_SCALARS
, &r
->in
.security_flags
));
1783 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.offered
));
1784 if (r
->in
.offered
> 0x40000) {
1785 return ndr_pull_error(ndr
, NDR_ERR_RANGE
, "value out of range");
1787 NDR_PULL_ALLOC_N(ndr
, r
->out
.buffer
, r
->in
.offered
);
1788 memset(r
->out
.buffer
, 0, (r
->in
.offered
) * sizeof(*r
->out
.buffer
));
1789 NDR_PULL_ALLOC(ndr
, r
->out
.needed
);
1790 ZERO_STRUCTP(r
->out
.needed
);
1792 if (flags
& NDR_OUT
) {
1793 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->out
.buffer
));
1794 size_buffer_1
= ndr_get_array_size(ndr
, &r
->out
.buffer
);
1795 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
1796 NDR_PULL_ALLOC_N(ndr
, r
->out
.buffer
, size_buffer_1
);
1798 NDR_CHECK(ndr_pull_array_uint8(ndr
, NDR_SCALARS
, r
->out
.buffer
, size_buffer_1
));
1799 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
1800 NDR_PULL_ALLOC(ndr
, r
->out
.needed
);
1802 _mem_save_needed_0
= NDR_PULL_GET_MEM_CTX(ndr
);
1803 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.needed
, LIBNDR_FLAG_REF_ALLOC
);
1804 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, r
->out
.needed
));
1805 if (*r
->out
.needed
> 0x40000) {
1806 return ndr_pull_error(ndr
, NDR_ERR_RANGE
, "value out of range");
1808 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_needed_0
, LIBNDR_FLAG_REF_ALLOC
);
1809 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
1810 if (r
->out
.buffer
) {
1811 NDR_CHECK(ndr_check_array_size(ndr
, (void*)&r
->out
.buffer
, r
->in
.offered
));
1814 return NDR_ERR_SUCCESS
;
1817 _PUBLIC_
void ndr_print_svcctl_QueryServiceObjectSecurity(struct ndr_print
*ndr
, const char *name
, int flags
, const struct svcctl_QueryServiceObjectSecurity
*r
)
1819 ndr_print_struct(ndr
, name
, "svcctl_QueryServiceObjectSecurity");
1821 if (flags
& NDR_SET_VALUES
) {
1822 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
1824 if (flags
& NDR_IN
) {
1825 ndr_print_struct(ndr
, "in", "svcctl_QueryServiceObjectSecurity");
1827 ndr_print_ptr(ndr
, "handle", r
->in
.handle
);
1829 ndr_print_policy_handle(ndr
, "handle", r
->in
.handle
);
1831 ndr_print_security_secinfo(ndr
, "security_flags", r
->in
.security_flags
);
1832 ndr_print_uint32(ndr
, "offered", r
->in
.offered
);
1835 if (flags
& NDR_OUT
) {
1836 ndr_print_struct(ndr
, "out", "svcctl_QueryServiceObjectSecurity");
1838 ndr_print_ptr(ndr
, "buffer", r
->out
.buffer
);
1840 ndr_print_array_uint8(ndr
, "buffer", r
->out
.buffer
, r
->in
.offered
);
1842 ndr_print_ptr(ndr
, "needed", r
->out
.needed
);
1844 ndr_print_uint32(ndr
, "needed", *r
->out
.needed
);
1846 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
1852 static enum ndr_err_code
ndr_push_svcctl_SetServiceObjectSecurity(struct ndr_push
*ndr
, int flags
, const struct svcctl_SetServiceObjectSecurity
*r
)
1854 if (flags
& NDR_IN
) {
1855 if (r
->in
.handle
== NULL
) {
1856 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
1858 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
, r
->in
.handle
));
1859 NDR_CHECK(ndr_push_security_secinfo(ndr
, NDR_SCALARS
, r
->in
.security_flags
));
1860 if (r
->in
.buffer
== NULL
) {
1861 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
1863 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, r
->in
.offered
));
1864 NDR_CHECK(ndr_push_array_uint8(ndr
, NDR_SCALARS
, r
->in
.buffer
, r
->in
.offered
));
1865 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.offered
));
1867 if (flags
& NDR_OUT
) {
1868 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
1870 return NDR_ERR_SUCCESS
;
1873 static enum ndr_err_code
ndr_pull_svcctl_SetServiceObjectSecurity(struct ndr_pull
*ndr
, int flags
, struct svcctl_SetServiceObjectSecurity
*r
)
1875 uint32_t size_buffer_1
= 0;
1876 TALLOC_CTX
*_mem_save_handle_0
;
1877 if (flags
& NDR_IN
) {
1878 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
1879 NDR_PULL_ALLOC(ndr
, r
->in
.handle
);
1881 _mem_save_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
1882 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.handle
, LIBNDR_FLAG_REF_ALLOC
);
1883 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
, r
->in
.handle
));
1884 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_handle_0
, LIBNDR_FLAG_REF_ALLOC
);
1885 NDR_CHECK(ndr_pull_security_secinfo(ndr
, NDR_SCALARS
, &r
->in
.security_flags
));
1886 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->in
.buffer
));
1887 size_buffer_1
= ndr_get_array_size(ndr
, &r
->in
.buffer
);
1888 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
1889 NDR_PULL_ALLOC_N(ndr
, r
->in
.buffer
, size_buffer_1
);
1891 NDR_CHECK(ndr_pull_array_uint8(ndr
, NDR_SCALARS
, r
->in
.buffer
, size_buffer_1
));
1892 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.offered
));
1894 NDR_CHECK(ndr_check_array_size(ndr
, (void*)&r
->in
.buffer
, r
->in
.offered
));
1897 if (flags
& NDR_OUT
) {
1898 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
1900 return NDR_ERR_SUCCESS
;
1903 _PUBLIC_
void ndr_print_svcctl_SetServiceObjectSecurity(struct ndr_print
*ndr
, const char *name
, int flags
, const struct svcctl_SetServiceObjectSecurity
*r
)
1905 ndr_print_struct(ndr
, name
, "svcctl_SetServiceObjectSecurity");
1907 if (flags
& NDR_SET_VALUES
) {
1908 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
1910 if (flags
& NDR_IN
) {
1911 ndr_print_struct(ndr
, "in", "svcctl_SetServiceObjectSecurity");
1913 ndr_print_ptr(ndr
, "handle", r
->in
.handle
);
1915 ndr_print_policy_handle(ndr
, "handle", r
->in
.handle
);
1917 ndr_print_security_secinfo(ndr
, "security_flags", r
->in
.security_flags
);
1918 ndr_print_ptr(ndr
, "buffer", r
->in
.buffer
);
1920 ndr_print_array_uint8(ndr
, "buffer", r
->in
.buffer
, r
->in
.offered
);
1922 ndr_print_uint32(ndr
, "offered", r
->in
.offered
);
1925 if (flags
& NDR_OUT
) {
1926 ndr_print_struct(ndr
, "out", "svcctl_SetServiceObjectSecurity");
1928 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
1934 static enum ndr_err_code
ndr_push_svcctl_QueryServiceStatus(struct ndr_push
*ndr
, int flags
, const struct svcctl_QueryServiceStatus
*r
)
1936 if (flags
& NDR_IN
) {
1937 if (r
->in
.handle
== NULL
) {
1938 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
1940 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
, r
->in
.handle
));
1942 if (flags
& NDR_OUT
) {
1943 if (r
->out
.service_status
== NULL
) {
1944 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
1946 NDR_CHECK(ndr_push_SERVICE_STATUS(ndr
, NDR_SCALARS
, r
->out
.service_status
));
1947 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
1949 return NDR_ERR_SUCCESS
;
1952 static enum ndr_err_code
ndr_pull_svcctl_QueryServiceStatus(struct ndr_pull
*ndr
, int flags
, struct svcctl_QueryServiceStatus
*r
)
1954 TALLOC_CTX
*_mem_save_handle_0
;
1955 TALLOC_CTX
*_mem_save_service_status_0
;
1956 if (flags
& NDR_IN
) {
1957 ZERO_STRUCT(r
->out
);
1959 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
1960 NDR_PULL_ALLOC(ndr
, r
->in
.handle
);
1962 _mem_save_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
1963 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.handle
, LIBNDR_FLAG_REF_ALLOC
);
1964 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
, r
->in
.handle
));
1965 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_handle_0
, LIBNDR_FLAG_REF_ALLOC
);
1966 NDR_PULL_ALLOC(ndr
, r
->out
.service_status
);
1967 ZERO_STRUCTP(r
->out
.service_status
);
1969 if (flags
& NDR_OUT
) {
1970 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
1971 NDR_PULL_ALLOC(ndr
, r
->out
.service_status
);
1973 _mem_save_service_status_0
= NDR_PULL_GET_MEM_CTX(ndr
);
1974 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.service_status
, LIBNDR_FLAG_REF_ALLOC
);
1975 NDR_CHECK(ndr_pull_SERVICE_STATUS(ndr
, NDR_SCALARS
, r
->out
.service_status
));
1976 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_service_status_0
, LIBNDR_FLAG_REF_ALLOC
);
1977 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
1979 return NDR_ERR_SUCCESS
;
1982 _PUBLIC_
void ndr_print_svcctl_QueryServiceStatus(struct ndr_print
*ndr
, const char *name
, int flags
, const struct svcctl_QueryServiceStatus
*r
)
1984 ndr_print_struct(ndr
, name
, "svcctl_QueryServiceStatus");
1986 if (flags
& NDR_SET_VALUES
) {
1987 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
1989 if (flags
& NDR_IN
) {
1990 ndr_print_struct(ndr
, "in", "svcctl_QueryServiceStatus");
1992 ndr_print_ptr(ndr
, "handle", r
->in
.handle
);
1994 ndr_print_policy_handle(ndr
, "handle", r
->in
.handle
);
1998 if (flags
& NDR_OUT
) {
1999 ndr_print_struct(ndr
, "out", "svcctl_QueryServiceStatus");
2001 ndr_print_ptr(ndr
, "service_status", r
->out
.service_status
);
2003 ndr_print_SERVICE_STATUS(ndr
, "service_status", r
->out
.service_status
);
2005 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
2011 static enum ndr_err_code
ndr_push_svcctl_SetServiceStatus(struct ndr_push
*ndr
, int flags
, const struct svcctl_SetServiceStatus
*r
)
2013 if (flags
& NDR_IN
) {
2015 if (flags
& NDR_OUT
) {
2016 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
2018 return NDR_ERR_SUCCESS
;
2021 static enum ndr_err_code
ndr_pull_svcctl_SetServiceStatus(struct ndr_pull
*ndr
, int flags
, struct svcctl_SetServiceStatus
*r
)
2023 if (flags
& NDR_IN
) {
2025 if (flags
& NDR_OUT
) {
2026 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
2028 return NDR_ERR_SUCCESS
;
2031 _PUBLIC_
void ndr_print_svcctl_SetServiceStatus(struct ndr_print
*ndr
, const char *name
, int flags
, const struct svcctl_SetServiceStatus
*r
)
2033 ndr_print_struct(ndr
, name
, "svcctl_SetServiceStatus");
2035 if (flags
& NDR_SET_VALUES
) {
2036 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
2038 if (flags
& NDR_IN
) {
2039 ndr_print_struct(ndr
, "in", "svcctl_SetServiceStatus");
2043 if (flags
& NDR_OUT
) {
2044 ndr_print_struct(ndr
, "out", "svcctl_SetServiceStatus");
2046 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
2052 static enum ndr_err_code
ndr_push_svcctl_UnlockServiceDatabase(struct ndr_push
*ndr
, int flags
, const struct svcctl_UnlockServiceDatabase
*r
)
2054 if (flags
& NDR_IN
) {
2055 if (r
->in
.lock
== NULL
) {
2056 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
2058 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
, r
->in
.lock
));
2060 if (flags
& NDR_OUT
) {
2061 if (r
->out
.lock
== NULL
) {
2062 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
2064 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
, r
->out
.lock
));
2065 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
2067 return NDR_ERR_SUCCESS
;
2070 static enum ndr_err_code
ndr_pull_svcctl_UnlockServiceDatabase(struct ndr_pull
*ndr
, int flags
, struct svcctl_UnlockServiceDatabase
*r
)
2072 TALLOC_CTX
*_mem_save_lock_0
;
2073 if (flags
& NDR_IN
) {
2074 ZERO_STRUCT(r
->out
);
2076 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
2077 NDR_PULL_ALLOC(ndr
, r
->in
.lock
);
2079 _mem_save_lock_0
= NDR_PULL_GET_MEM_CTX(ndr
);
2080 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.lock
, LIBNDR_FLAG_REF_ALLOC
);
2081 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
, r
->in
.lock
));
2082 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_lock_0
, LIBNDR_FLAG_REF_ALLOC
);
2083 NDR_PULL_ALLOC(ndr
, r
->out
.lock
);
2084 *r
->out
.lock
= *r
->in
.lock
;
2086 if (flags
& NDR_OUT
) {
2087 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
2088 NDR_PULL_ALLOC(ndr
, r
->out
.lock
);
2090 _mem_save_lock_0
= NDR_PULL_GET_MEM_CTX(ndr
);
2091 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.lock
, LIBNDR_FLAG_REF_ALLOC
);
2092 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
, r
->out
.lock
));
2093 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_lock_0
, LIBNDR_FLAG_REF_ALLOC
);
2094 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
2096 return NDR_ERR_SUCCESS
;
2099 _PUBLIC_
void ndr_print_svcctl_UnlockServiceDatabase(struct ndr_print
*ndr
, const char *name
, int flags
, const struct svcctl_UnlockServiceDatabase
*r
)
2101 ndr_print_struct(ndr
, name
, "svcctl_UnlockServiceDatabase");
2103 if (flags
& NDR_SET_VALUES
) {
2104 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
2106 if (flags
& NDR_IN
) {
2107 ndr_print_struct(ndr
, "in", "svcctl_UnlockServiceDatabase");
2109 ndr_print_ptr(ndr
, "lock", r
->in
.lock
);
2111 ndr_print_policy_handle(ndr
, "lock", r
->in
.lock
);
2115 if (flags
& NDR_OUT
) {
2116 ndr_print_struct(ndr
, "out", "svcctl_UnlockServiceDatabase");
2118 ndr_print_ptr(ndr
, "lock", r
->out
.lock
);
2120 ndr_print_policy_handle(ndr
, "lock", r
->out
.lock
);
2122 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
2128 static enum ndr_err_code
ndr_push_svcctl_NotifyBootConfigStatus(struct ndr_push
*ndr
, int flags
, const struct svcctl_NotifyBootConfigStatus
*r
)
2130 if (flags
& NDR_IN
) {
2132 if (flags
& NDR_OUT
) {
2133 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
2135 return NDR_ERR_SUCCESS
;
2138 static enum ndr_err_code
ndr_pull_svcctl_NotifyBootConfigStatus(struct ndr_pull
*ndr
, int flags
, struct svcctl_NotifyBootConfigStatus
*r
)
2140 if (flags
& NDR_IN
) {
2142 if (flags
& NDR_OUT
) {
2143 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
2145 return NDR_ERR_SUCCESS
;
2148 _PUBLIC_
void ndr_print_svcctl_NotifyBootConfigStatus(struct ndr_print
*ndr
, const char *name
, int flags
, const struct svcctl_NotifyBootConfigStatus
*r
)
2150 ndr_print_struct(ndr
, name
, "svcctl_NotifyBootConfigStatus");
2152 if (flags
& NDR_SET_VALUES
) {
2153 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
2155 if (flags
& NDR_IN
) {
2156 ndr_print_struct(ndr
, "in", "svcctl_NotifyBootConfigStatus");
2160 if (flags
& NDR_OUT
) {
2161 ndr_print_struct(ndr
, "out", "svcctl_NotifyBootConfigStatus");
2163 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
2169 static enum ndr_err_code
ndr_push_svcctl_SCSetServiceBitsW(struct ndr_push
*ndr
, int flags
, const struct svcctl_SCSetServiceBitsW
*r
)
2171 if (flags
& NDR_IN
) {
2172 if (r
->in
.handle
== NULL
) {
2173 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
2175 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
, r
->in
.handle
));
2176 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.bits
));
2177 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.bitson
));
2178 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.immediate
));
2180 if (flags
& NDR_OUT
) {
2181 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
2183 return NDR_ERR_SUCCESS
;
2186 static enum ndr_err_code
ndr_pull_svcctl_SCSetServiceBitsW(struct ndr_pull
*ndr
, int flags
, struct svcctl_SCSetServiceBitsW
*r
)
2188 TALLOC_CTX
*_mem_save_handle_0
;
2189 if (flags
& NDR_IN
) {
2190 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
2191 NDR_PULL_ALLOC(ndr
, r
->in
.handle
);
2193 _mem_save_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
2194 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.handle
, LIBNDR_FLAG_REF_ALLOC
);
2195 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
, r
->in
.handle
));
2196 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_handle_0
, LIBNDR_FLAG_REF_ALLOC
);
2197 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.bits
));
2198 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.bitson
));
2199 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.immediate
));
2201 if (flags
& NDR_OUT
) {
2202 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
2204 return NDR_ERR_SUCCESS
;
2207 _PUBLIC_
void ndr_print_svcctl_SCSetServiceBitsW(struct ndr_print
*ndr
, const char *name
, int flags
, const struct svcctl_SCSetServiceBitsW
*r
)
2209 ndr_print_struct(ndr
, name
, "svcctl_SCSetServiceBitsW");
2211 if (flags
& NDR_SET_VALUES
) {
2212 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
2214 if (flags
& NDR_IN
) {
2215 ndr_print_struct(ndr
, "in", "svcctl_SCSetServiceBitsW");
2217 ndr_print_ptr(ndr
, "handle", r
->in
.handle
);
2219 ndr_print_policy_handle(ndr
, "handle", r
->in
.handle
);
2221 ndr_print_uint32(ndr
, "bits", r
->in
.bits
);
2222 ndr_print_uint32(ndr
, "bitson", r
->in
.bitson
);
2223 ndr_print_uint32(ndr
, "immediate", r
->in
.immediate
);
2226 if (flags
& NDR_OUT
) {
2227 ndr_print_struct(ndr
, "out", "svcctl_SCSetServiceBitsW");
2229 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
2235 static enum ndr_err_code
ndr_push_svcctl_ChangeServiceConfigW(struct ndr_push
*ndr
, int flags
, const struct svcctl_ChangeServiceConfigW
*r
)
2237 if (flags
& NDR_IN
) {
2238 if (r
->in
.handle
== NULL
) {
2239 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
2241 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
, r
->in
.handle
));
2242 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.type
));
2243 NDR_CHECK(ndr_push_svcctl_StartType(ndr
, NDR_SCALARS
, r
->in
.start_type
));
2244 NDR_CHECK(ndr_push_svcctl_ErrorControl(ndr
, NDR_SCALARS
, r
->in
.error_control
));
2245 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.binary_path
));
2246 if (r
->in
.binary_path
) {
2247 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.binary_path
, CH_UTF16
)));
2248 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, 0));
2249 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.binary_path
, CH_UTF16
)));
2250 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
));
2252 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.load_order_group
));
2253 if (r
->in
.load_order_group
) {
2254 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.load_order_group
, CH_UTF16
)));
2255 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, 0));
2256 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.load_order_group
, CH_UTF16
)));
2257 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
));
2259 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.dependencies
));
2260 if (r
->in
.dependencies
) {
2261 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.dependencies
, CH_UTF16
)));
2262 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, 0));
2263 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.dependencies
, CH_UTF16
)));
2264 NDR_CHECK(ndr_push_charset(ndr
, NDR_SCALARS
, r
->in
.dependencies
, ndr_charset_length(r
->in
.dependencies
, CH_UTF16
), sizeof(uint16_t), CH_UTF16
));
2266 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.service_start_name
));
2267 if (r
->in
.service_start_name
) {
2268 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.service_start_name
, CH_UTF16
)));
2269 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, 0));
2270 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.service_start_name
, CH_UTF16
)));
2271 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
));
2273 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.password
));
2274 if (r
->in
.password
) {
2275 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.password
, CH_UTF16
)));
2276 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, 0));
2277 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.password
, CH_UTF16
)));
2278 NDR_CHECK(ndr_push_charset(ndr
, NDR_SCALARS
, r
->in
.password
, ndr_charset_length(r
->in
.password
, CH_UTF16
), sizeof(uint16_t), CH_UTF16
));
2280 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.display_name
));
2281 if (r
->in
.display_name
) {
2282 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.display_name
, CH_UTF16
)));
2283 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, 0));
2284 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.display_name
, CH_UTF16
)));
2285 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
));
2288 if (flags
& NDR_OUT
) {
2289 if (r
->out
.tag_id
== NULL
) {
2290 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
2292 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, *r
->out
.tag_id
));
2293 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
2295 return NDR_ERR_SUCCESS
;
2298 static enum ndr_err_code
ndr_pull_svcctl_ChangeServiceConfigW(struct ndr_pull
*ndr
, int flags
, struct svcctl_ChangeServiceConfigW
*r
)
2300 uint32_t _ptr_binary_path
;
2301 uint32_t size_binary_path_1
= 0;
2302 uint32_t length_binary_path_1
= 0;
2303 uint32_t _ptr_load_order_group
;
2304 uint32_t size_load_order_group_1
= 0;
2305 uint32_t length_load_order_group_1
= 0;
2306 uint32_t _ptr_dependencies
;
2307 uint32_t size_dependencies_1
= 0;
2308 uint32_t length_dependencies_1
= 0;
2309 uint32_t _ptr_service_start_name
;
2310 uint32_t size_service_start_name_1
= 0;
2311 uint32_t length_service_start_name_1
= 0;
2312 uint32_t _ptr_password
;
2313 uint32_t size_password_1
= 0;
2314 uint32_t length_password_1
= 0;
2315 uint32_t _ptr_display_name
;
2316 uint32_t size_display_name_1
= 0;
2317 uint32_t length_display_name_1
= 0;
2318 TALLOC_CTX
*_mem_save_handle_0
;
2319 TALLOC_CTX
*_mem_save_binary_path_0
;
2320 TALLOC_CTX
*_mem_save_load_order_group_0
;
2321 TALLOC_CTX
*_mem_save_tag_id_0
;
2322 TALLOC_CTX
*_mem_save_dependencies_0
;
2323 TALLOC_CTX
*_mem_save_service_start_name_0
;
2324 TALLOC_CTX
*_mem_save_password_0
;
2325 TALLOC_CTX
*_mem_save_display_name_0
;
2326 if (flags
& NDR_IN
) {
2327 ZERO_STRUCT(r
->out
);
2329 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
2330 NDR_PULL_ALLOC(ndr
, r
->in
.handle
);
2332 _mem_save_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
2333 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.handle
, LIBNDR_FLAG_REF_ALLOC
);
2334 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
, r
->in
.handle
));
2335 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_handle_0
, LIBNDR_FLAG_REF_ALLOC
);
2336 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.type
));
2337 NDR_CHECK(ndr_pull_svcctl_StartType(ndr
, NDR_SCALARS
, &r
->in
.start_type
));
2338 NDR_CHECK(ndr_pull_svcctl_ErrorControl(ndr
, NDR_SCALARS
, &r
->in
.error_control
));
2339 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_binary_path
));
2340 if (_ptr_binary_path
) {
2341 NDR_PULL_ALLOC(ndr
, r
->in
.binary_path
);
2343 r
->in
.binary_path
= NULL
;
2345 if (r
->in
.binary_path
) {
2346 _mem_save_binary_path_0
= NDR_PULL_GET_MEM_CTX(ndr
);
2347 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.binary_path
, 0);
2348 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->in
.binary_path
));
2349 NDR_CHECK(ndr_pull_array_length(ndr
, &r
->in
.binary_path
));
2350 size_binary_path_1
= ndr_get_array_size(ndr
, &r
->in
.binary_path
);
2351 length_binary_path_1
= ndr_get_array_length(ndr
, &r
->in
.binary_path
);
2352 if (length_binary_path_1
> size_binary_path_1
) {
2353 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
);
2355 NDR_CHECK(ndr_check_string_terminator(ndr
, length_binary_path_1
, sizeof(uint16_t)));
2356 NDR_CHECK(ndr_pull_charset(ndr
, NDR_SCALARS
, &r
->in
.binary_path
, length_binary_path_1
, sizeof(uint16_t), CH_UTF16
));
2357 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_binary_path_0
, 0);
2359 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_load_order_group
));
2360 if (_ptr_load_order_group
) {
2361 NDR_PULL_ALLOC(ndr
, r
->in
.load_order_group
);
2363 r
->in
.load_order_group
= NULL
;
2365 if (r
->in
.load_order_group
) {
2366 _mem_save_load_order_group_0
= NDR_PULL_GET_MEM_CTX(ndr
);
2367 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.load_order_group
, 0);
2368 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->in
.load_order_group
));
2369 NDR_CHECK(ndr_pull_array_length(ndr
, &r
->in
.load_order_group
));
2370 size_load_order_group_1
= ndr_get_array_size(ndr
, &r
->in
.load_order_group
);
2371 length_load_order_group_1
= ndr_get_array_length(ndr
, &r
->in
.load_order_group
);
2372 if (length_load_order_group_1
> size_load_order_group_1
) {
2373 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
);
2375 NDR_CHECK(ndr_check_string_terminator(ndr
, length_load_order_group_1
, sizeof(uint16_t)));
2376 NDR_CHECK(ndr_pull_charset(ndr
, NDR_SCALARS
, &r
->in
.load_order_group
, length_load_order_group_1
, sizeof(uint16_t), CH_UTF16
));
2377 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_load_order_group_0
, 0);
2379 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_dependencies
));
2380 if (_ptr_dependencies
) {
2381 NDR_PULL_ALLOC(ndr
, r
->in
.dependencies
);
2383 r
->in
.dependencies
= NULL
;
2385 if (r
->in
.dependencies
) {
2386 _mem_save_dependencies_0
= NDR_PULL_GET_MEM_CTX(ndr
);
2387 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.dependencies
, 0);
2388 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->in
.dependencies
));
2389 NDR_CHECK(ndr_pull_array_length(ndr
, &r
->in
.dependencies
));
2390 size_dependencies_1
= ndr_get_array_size(ndr
, &r
->in
.dependencies
);
2391 length_dependencies_1
= ndr_get_array_length(ndr
, &r
->in
.dependencies
);
2392 if (length_dependencies_1
> size_dependencies_1
) {
2393 return ndr_pull_error(ndr
, NDR_ERR_ARRAY_SIZE
, "Bad array size %u should exceed array length %u", size_dependencies_1
, length_dependencies_1
);
2395 NDR_CHECK(ndr_check_string_terminator(ndr
, length_dependencies_1
, sizeof(uint16_t)));
2396 NDR_CHECK(ndr_pull_charset(ndr
, NDR_SCALARS
, &r
->in
.dependencies
, length_dependencies_1
, sizeof(uint16_t), CH_UTF16
));
2397 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_dependencies_0
, 0);
2399 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_service_start_name
));
2400 if (_ptr_service_start_name
) {
2401 NDR_PULL_ALLOC(ndr
, r
->in
.service_start_name
);
2403 r
->in
.service_start_name
= NULL
;
2405 if (r
->in
.service_start_name
) {
2406 _mem_save_service_start_name_0
= NDR_PULL_GET_MEM_CTX(ndr
);
2407 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.service_start_name
, 0);
2408 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->in
.service_start_name
));
2409 NDR_CHECK(ndr_pull_array_length(ndr
, &r
->in
.service_start_name
));
2410 size_service_start_name_1
= ndr_get_array_size(ndr
, &r
->in
.service_start_name
);
2411 length_service_start_name_1
= ndr_get_array_length(ndr
, &r
->in
.service_start_name
);
2412 if (length_service_start_name_1
> size_service_start_name_1
) {
2413 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
);
2415 NDR_CHECK(ndr_check_string_terminator(ndr
, length_service_start_name_1
, sizeof(uint16_t)));
2416 NDR_CHECK(ndr_pull_charset(ndr
, NDR_SCALARS
, &r
->in
.service_start_name
, length_service_start_name_1
, sizeof(uint16_t), CH_UTF16
));
2417 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_service_start_name_0
, 0);
2419 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_password
));
2420 if (_ptr_password
) {
2421 NDR_PULL_ALLOC(ndr
, r
->in
.password
);
2423 r
->in
.password
= NULL
;
2425 if (r
->in
.password
) {
2426 _mem_save_password_0
= NDR_PULL_GET_MEM_CTX(ndr
);
2427 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.password
, 0);
2428 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->in
.password
));
2429 NDR_CHECK(ndr_pull_array_length(ndr
, &r
->in
.password
));
2430 size_password_1
= ndr_get_array_size(ndr
, &r
->in
.password
);
2431 length_password_1
= ndr_get_array_length(ndr
, &r
->in
.password
);
2432 if (length_password_1
> size_password_1
) {
2433 return ndr_pull_error(ndr
, NDR_ERR_ARRAY_SIZE
, "Bad array size %u should exceed array length %u", size_password_1
, length_password_1
);
2435 NDR_CHECK(ndr_check_string_terminator(ndr
, length_password_1
, sizeof(uint16_t)));
2436 NDR_CHECK(ndr_pull_charset(ndr
, NDR_SCALARS
, &r
->in
.password
, length_password_1
, sizeof(uint16_t), CH_UTF16
));
2437 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_password_0
, 0);
2439 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_display_name
));
2440 if (_ptr_display_name
) {
2441 NDR_PULL_ALLOC(ndr
, r
->in
.display_name
);
2443 r
->in
.display_name
= NULL
;
2445 if (r
->in
.display_name
) {
2446 _mem_save_display_name_0
= NDR_PULL_GET_MEM_CTX(ndr
);
2447 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.display_name
, 0);
2448 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->in
.display_name
));
2449 NDR_CHECK(ndr_pull_array_length(ndr
, &r
->in
.display_name
));
2450 size_display_name_1
= ndr_get_array_size(ndr
, &r
->in
.display_name
);
2451 length_display_name_1
= ndr_get_array_length(ndr
, &r
->in
.display_name
);
2452 if (length_display_name_1
> size_display_name_1
) {
2453 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
);
2455 NDR_CHECK(ndr_check_string_terminator(ndr
, length_display_name_1
, sizeof(uint16_t)));
2456 NDR_CHECK(ndr_pull_charset(ndr
, NDR_SCALARS
, &r
->in
.display_name
, length_display_name_1
, sizeof(uint16_t), CH_UTF16
));
2457 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_display_name_0
, 0);
2459 NDR_PULL_ALLOC(ndr
, r
->out
.tag_id
);
2460 ZERO_STRUCTP(r
->out
.tag_id
);
2462 if (flags
& NDR_OUT
) {
2463 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
2464 NDR_PULL_ALLOC(ndr
, r
->out
.tag_id
);
2466 _mem_save_tag_id_0
= NDR_PULL_GET_MEM_CTX(ndr
);
2467 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.tag_id
, LIBNDR_FLAG_REF_ALLOC
);
2468 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, r
->out
.tag_id
));
2469 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_tag_id_0
, LIBNDR_FLAG_REF_ALLOC
);
2470 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
2472 return NDR_ERR_SUCCESS
;
2475 _PUBLIC_
void ndr_print_svcctl_ChangeServiceConfigW(struct ndr_print
*ndr
, const char *name
, int flags
, const struct svcctl_ChangeServiceConfigW
*r
)
2477 ndr_print_struct(ndr
, name
, "svcctl_ChangeServiceConfigW");
2479 if (flags
& NDR_SET_VALUES
) {
2480 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
2482 if (flags
& NDR_IN
) {
2483 ndr_print_struct(ndr
, "in", "svcctl_ChangeServiceConfigW");
2485 ndr_print_ptr(ndr
, "handle", r
->in
.handle
);
2487 ndr_print_policy_handle(ndr
, "handle", r
->in
.handle
);
2489 ndr_print_uint32(ndr
, "type", r
->in
.type
);
2490 ndr_print_svcctl_StartType(ndr
, "start_type", r
->in
.start_type
);
2491 ndr_print_svcctl_ErrorControl(ndr
, "error_control", r
->in
.error_control
);
2492 ndr_print_ptr(ndr
, "binary_path", r
->in
.binary_path
);
2494 if (r
->in
.binary_path
) {
2495 ndr_print_string(ndr
, "binary_path", r
->in
.binary_path
);
2498 ndr_print_ptr(ndr
, "load_order_group", r
->in
.load_order_group
);
2500 if (r
->in
.load_order_group
) {
2501 ndr_print_string(ndr
, "load_order_group", r
->in
.load_order_group
);
2504 ndr_print_ptr(ndr
, "dependencies", r
->in
.dependencies
);
2506 if (r
->in
.dependencies
) {
2507 ndr_print_string(ndr
, "dependencies", r
->in
.dependencies
);
2510 ndr_print_ptr(ndr
, "service_start_name", r
->in
.service_start_name
);
2512 if (r
->in
.service_start_name
) {
2513 ndr_print_string(ndr
, "service_start_name", r
->in
.service_start_name
);
2516 ndr_print_ptr(ndr
, "password", r
->in
.password
);
2518 if (r
->in
.password
) {
2519 ndr_print_string(ndr
, "password", r
->in
.password
);
2522 ndr_print_ptr(ndr
, "display_name", r
->in
.display_name
);
2524 if (r
->in
.display_name
) {
2525 ndr_print_string(ndr
, "display_name", r
->in
.display_name
);
2530 if (flags
& NDR_OUT
) {
2531 ndr_print_struct(ndr
, "out", "svcctl_ChangeServiceConfigW");
2533 ndr_print_ptr(ndr
, "tag_id", r
->out
.tag_id
);
2535 ndr_print_uint32(ndr
, "tag_id", *r
->out
.tag_id
);
2537 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
2543 static enum ndr_err_code
ndr_push_svcctl_CreateServiceW(struct ndr_push
*ndr
, int flags
, const struct svcctl_CreateServiceW
*r
)
2545 if (flags
& NDR_IN
) {
2546 if (r
->in
.scmanager_handle
== NULL
) {
2547 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
2549 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
, r
->in
.scmanager_handle
));
2550 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.ServiceName
, CH_UTF16
)));
2551 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, 0));
2552 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.ServiceName
, CH_UTF16
)));
2553 NDR_CHECK(ndr_push_charset(ndr
, NDR_SCALARS
, r
->in
.ServiceName
, ndr_charset_length(r
->in
.ServiceName
, CH_UTF16
), sizeof(uint16_t), CH_UTF16
));
2554 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.DisplayName
));
2555 if (r
->in
.DisplayName
) {
2556 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.DisplayName
, CH_UTF16
)));
2557 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, 0));
2558 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.DisplayName
, CH_UTF16
)));
2559 NDR_CHECK(ndr_push_charset(ndr
, NDR_SCALARS
, r
->in
.DisplayName
, ndr_charset_length(r
->in
.DisplayName
, CH_UTF16
), sizeof(uint16_t), CH_UTF16
));
2561 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.desired_access
));
2562 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.type
));
2563 NDR_CHECK(ndr_push_svcctl_StartType(ndr
, NDR_SCALARS
, r
->in
.start_type
));
2564 NDR_CHECK(ndr_push_svcctl_ErrorControl(ndr
, NDR_SCALARS
, r
->in
.error_control
));
2565 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.binary_path
, CH_UTF16
)));
2566 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, 0));
2567 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.binary_path
, CH_UTF16
)));
2568 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
));
2569 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.LoadOrderGroupKey
));
2570 if (r
->in
.LoadOrderGroupKey
) {
2571 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.LoadOrderGroupKey
, CH_UTF16
)));
2572 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, 0));
2573 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.LoadOrderGroupKey
, CH_UTF16
)));
2574 NDR_CHECK(ndr_push_charset(ndr
, NDR_SCALARS
, r
->in
.LoadOrderGroupKey
, ndr_charset_length(r
->in
.LoadOrderGroupKey
, CH_UTF16
), sizeof(uint16_t), CH_UTF16
));
2576 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.TagId
));
2578 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, *r
->in
.TagId
));
2580 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.dependencies
));
2581 if (r
->in
.dependencies
) {
2582 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, r
->in
.dependencies_size
));
2583 NDR_CHECK(ndr_push_array_uint8(ndr
, NDR_SCALARS
, r
->in
.dependencies
, r
->in
.dependencies_size
));
2585 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.dependencies_size
));
2586 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.service_start_name
));
2587 if (r
->in
.service_start_name
) {
2588 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.service_start_name
, CH_UTF16
)));
2589 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, 0));
2590 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.service_start_name
, CH_UTF16
)));
2591 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
));
2593 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.password
));
2594 if (r
->in
.password
) {
2595 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, r
->in
.password_size
));
2596 NDR_CHECK(ndr_push_array_uint8(ndr
, NDR_SCALARS
, r
->in
.password
, r
->in
.password_size
));
2598 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.password_size
));
2600 if (flags
& NDR_OUT
) {
2601 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->out
.TagId
));
2603 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, *r
->out
.TagId
));
2605 if (r
->out
.handle
== NULL
) {
2606 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
2608 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
, r
->out
.handle
));
2609 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
2611 return NDR_ERR_SUCCESS
;
2614 static enum ndr_err_code
ndr_pull_svcctl_CreateServiceW(struct ndr_pull
*ndr
, int flags
, struct svcctl_CreateServiceW
*r
)
2616 uint32_t size_ServiceName_0
= 0;
2617 uint32_t length_ServiceName_0
= 0;
2618 uint32_t _ptr_DisplayName
;
2619 uint32_t size_DisplayName_1
= 0;
2620 uint32_t length_DisplayName_1
= 0;
2621 uint32_t size_binary_path_0
= 0;
2622 uint32_t length_binary_path_0
= 0;
2623 uint32_t _ptr_LoadOrderGroupKey
;
2624 uint32_t size_LoadOrderGroupKey_1
= 0;
2625 uint32_t length_LoadOrderGroupKey_1
= 0;
2626 uint32_t _ptr_TagId
;
2627 uint32_t _ptr_dependencies
;
2628 uint32_t size_dependencies_1
= 0;
2629 uint32_t _ptr_service_start_name
;
2630 uint32_t size_service_start_name_1
= 0;
2631 uint32_t length_service_start_name_1
= 0;
2632 uint32_t _ptr_password
;
2633 uint32_t size_password_1
= 0;
2634 TALLOC_CTX
*_mem_save_scmanager_handle_0
;
2635 TALLOC_CTX
*_mem_save_DisplayName_0
;
2636 TALLOC_CTX
*_mem_save_LoadOrderGroupKey_0
;
2637 TALLOC_CTX
*_mem_save_TagId_0
;
2638 TALLOC_CTX
*_mem_save_dependencies_0
;
2639 TALLOC_CTX
*_mem_save_service_start_name_0
;
2640 TALLOC_CTX
*_mem_save_password_0
;
2641 TALLOC_CTX
*_mem_save_handle_0
;
2642 if (flags
& NDR_IN
) {
2643 ZERO_STRUCT(r
->out
);
2645 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
2646 NDR_PULL_ALLOC(ndr
, r
->in
.scmanager_handle
);
2648 _mem_save_scmanager_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
2649 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.scmanager_handle
, LIBNDR_FLAG_REF_ALLOC
);
2650 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
, r
->in
.scmanager_handle
));
2651 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_scmanager_handle_0
, LIBNDR_FLAG_REF_ALLOC
);
2652 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->in
.ServiceName
));
2653 NDR_CHECK(ndr_pull_array_length(ndr
, &r
->in
.ServiceName
));
2654 size_ServiceName_0
= ndr_get_array_size(ndr
, &r
->in
.ServiceName
);
2655 length_ServiceName_0
= ndr_get_array_length(ndr
, &r
->in
.ServiceName
);
2656 if (length_ServiceName_0
> size_ServiceName_0
) {
2657 return ndr_pull_error(ndr
, NDR_ERR_ARRAY_SIZE
, "Bad array size %u should exceed array length %u", size_ServiceName_0
, length_ServiceName_0
);
2659 NDR_CHECK(ndr_check_string_terminator(ndr
, length_ServiceName_0
, sizeof(uint16_t)));
2660 NDR_CHECK(ndr_pull_charset(ndr
, NDR_SCALARS
, &r
->in
.ServiceName
, length_ServiceName_0
, sizeof(uint16_t), CH_UTF16
));
2661 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_DisplayName
));
2662 if (_ptr_DisplayName
) {
2663 NDR_PULL_ALLOC(ndr
, r
->in
.DisplayName
);
2665 r
->in
.DisplayName
= NULL
;
2667 if (r
->in
.DisplayName
) {
2668 _mem_save_DisplayName_0
= NDR_PULL_GET_MEM_CTX(ndr
);
2669 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.DisplayName
, 0);
2670 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->in
.DisplayName
));
2671 NDR_CHECK(ndr_pull_array_length(ndr
, &r
->in
.DisplayName
));
2672 size_DisplayName_1
= ndr_get_array_size(ndr
, &r
->in
.DisplayName
);
2673 length_DisplayName_1
= ndr_get_array_length(ndr
, &r
->in
.DisplayName
);
2674 if (length_DisplayName_1
> size_DisplayName_1
) {
2675 return ndr_pull_error(ndr
, NDR_ERR_ARRAY_SIZE
, "Bad array size %u should exceed array length %u", size_DisplayName_1
, length_DisplayName_1
);
2677 NDR_CHECK(ndr_check_string_terminator(ndr
, length_DisplayName_1
, sizeof(uint16_t)));
2678 NDR_CHECK(ndr_pull_charset(ndr
, NDR_SCALARS
, &r
->in
.DisplayName
, length_DisplayName_1
, sizeof(uint16_t), CH_UTF16
));
2679 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_DisplayName_0
, 0);
2681 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.desired_access
));
2682 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.type
));
2683 NDR_CHECK(ndr_pull_svcctl_StartType(ndr
, NDR_SCALARS
, &r
->in
.start_type
));
2684 NDR_CHECK(ndr_pull_svcctl_ErrorControl(ndr
, NDR_SCALARS
, &r
->in
.error_control
));
2685 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->in
.binary_path
));
2686 NDR_CHECK(ndr_pull_array_length(ndr
, &r
->in
.binary_path
));
2687 size_binary_path_0
= ndr_get_array_size(ndr
, &r
->in
.binary_path
);
2688 length_binary_path_0
= ndr_get_array_length(ndr
, &r
->in
.binary_path
);
2689 if (length_binary_path_0
> size_binary_path_0
) {
2690 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
);
2692 NDR_CHECK(ndr_check_string_terminator(ndr
, length_binary_path_0
, sizeof(uint16_t)));
2693 NDR_CHECK(ndr_pull_charset(ndr
, NDR_SCALARS
, &r
->in
.binary_path
, length_binary_path_0
, sizeof(uint16_t), CH_UTF16
));
2694 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_LoadOrderGroupKey
));
2695 if (_ptr_LoadOrderGroupKey
) {
2696 NDR_PULL_ALLOC(ndr
, r
->in
.LoadOrderGroupKey
);
2698 r
->in
.LoadOrderGroupKey
= NULL
;
2700 if (r
->in
.LoadOrderGroupKey
) {
2701 _mem_save_LoadOrderGroupKey_0
= NDR_PULL_GET_MEM_CTX(ndr
);
2702 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.LoadOrderGroupKey
, 0);
2703 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->in
.LoadOrderGroupKey
));
2704 NDR_CHECK(ndr_pull_array_length(ndr
, &r
->in
.LoadOrderGroupKey
));
2705 size_LoadOrderGroupKey_1
= ndr_get_array_size(ndr
, &r
->in
.LoadOrderGroupKey
);
2706 length_LoadOrderGroupKey_1
= ndr_get_array_length(ndr
, &r
->in
.LoadOrderGroupKey
);
2707 if (length_LoadOrderGroupKey_1
> size_LoadOrderGroupKey_1
) {
2708 return ndr_pull_error(ndr
, NDR_ERR_ARRAY_SIZE
, "Bad array size %u should exceed array length %u", size_LoadOrderGroupKey_1
, length_LoadOrderGroupKey_1
);
2710 NDR_CHECK(ndr_check_string_terminator(ndr
, length_LoadOrderGroupKey_1
, sizeof(uint16_t)));
2711 NDR_CHECK(ndr_pull_charset(ndr
, NDR_SCALARS
, &r
->in
.LoadOrderGroupKey
, length_LoadOrderGroupKey_1
, sizeof(uint16_t), CH_UTF16
));
2712 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_LoadOrderGroupKey_0
, 0);
2714 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_TagId
));
2716 NDR_PULL_ALLOC(ndr
, r
->in
.TagId
);
2721 _mem_save_TagId_0
= NDR_PULL_GET_MEM_CTX(ndr
);
2722 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.TagId
, 0);
2723 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, r
->in
.TagId
));
2724 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_TagId_0
, 0);
2726 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_dependencies
));
2727 if (_ptr_dependencies
) {
2728 NDR_PULL_ALLOC(ndr
, r
->in
.dependencies
);
2730 r
->in
.dependencies
= NULL
;
2732 if (r
->in
.dependencies
) {
2733 _mem_save_dependencies_0
= NDR_PULL_GET_MEM_CTX(ndr
);
2734 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.dependencies
, 0);
2735 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->in
.dependencies
));
2736 size_dependencies_1
= ndr_get_array_size(ndr
, &r
->in
.dependencies
);
2737 NDR_PULL_ALLOC_N(ndr
, r
->in
.dependencies
, size_dependencies_1
);
2738 NDR_CHECK(ndr_pull_array_uint8(ndr
, NDR_SCALARS
, r
->in
.dependencies
, size_dependencies_1
));
2739 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_dependencies_0
, 0);
2741 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.dependencies_size
));
2742 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_service_start_name
));
2743 if (_ptr_service_start_name
) {
2744 NDR_PULL_ALLOC(ndr
, r
->in
.service_start_name
);
2746 r
->in
.service_start_name
= NULL
;
2748 if (r
->in
.service_start_name
) {
2749 _mem_save_service_start_name_0
= NDR_PULL_GET_MEM_CTX(ndr
);
2750 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.service_start_name
, 0);
2751 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->in
.service_start_name
));
2752 NDR_CHECK(ndr_pull_array_length(ndr
, &r
->in
.service_start_name
));
2753 size_service_start_name_1
= ndr_get_array_size(ndr
, &r
->in
.service_start_name
);
2754 length_service_start_name_1
= ndr_get_array_length(ndr
, &r
->in
.service_start_name
);
2755 if (length_service_start_name_1
> size_service_start_name_1
) {
2756 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
);
2758 NDR_CHECK(ndr_check_string_terminator(ndr
, length_service_start_name_1
, sizeof(uint16_t)));
2759 NDR_CHECK(ndr_pull_charset(ndr
, NDR_SCALARS
, &r
->in
.service_start_name
, length_service_start_name_1
, sizeof(uint16_t), CH_UTF16
));
2760 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_service_start_name_0
, 0);
2762 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_password
));
2763 if (_ptr_password
) {
2764 NDR_PULL_ALLOC(ndr
, r
->in
.password
);
2766 r
->in
.password
= NULL
;
2768 if (r
->in
.password
) {
2769 _mem_save_password_0
= NDR_PULL_GET_MEM_CTX(ndr
);
2770 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.password
, 0);
2771 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->in
.password
));
2772 size_password_1
= ndr_get_array_size(ndr
, &r
->in
.password
);
2773 NDR_PULL_ALLOC_N(ndr
, r
->in
.password
, size_password_1
);
2774 NDR_CHECK(ndr_pull_array_uint8(ndr
, NDR_SCALARS
, r
->in
.password
, size_password_1
));
2775 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_password_0
, 0);
2777 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.password_size
));
2778 NDR_PULL_ALLOC(ndr
, r
->out
.handle
);
2779 ZERO_STRUCTP(r
->out
.handle
);
2780 if (r
->in
.dependencies
) {
2781 NDR_CHECK(ndr_check_array_size(ndr
, (void*)&r
->in
.dependencies
, r
->in
.dependencies_size
));
2783 if (r
->in
.password
) {
2784 NDR_CHECK(ndr_check_array_size(ndr
, (void*)&r
->in
.password
, r
->in
.password_size
));
2787 if (flags
& NDR_OUT
) {
2788 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_TagId
));
2790 NDR_PULL_ALLOC(ndr
, r
->out
.TagId
);
2792 r
->out
.TagId
= NULL
;
2795 _mem_save_TagId_0
= NDR_PULL_GET_MEM_CTX(ndr
);
2796 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.TagId
, 0);
2797 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, r
->out
.TagId
));
2798 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_TagId_0
, 0);
2800 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
2801 NDR_PULL_ALLOC(ndr
, r
->out
.handle
);
2803 _mem_save_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
2804 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.handle
, LIBNDR_FLAG_REF_ALLOC
);
2805 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
, r
->out
.handle
));
2806 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_handle_0
, LIBNDR_FLAG_REF_ALLOC
);
2807 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
2809 return NDR_ERR_SUCCESS
;
2812 _PUBLIC_
void ndr_print_svcctl_CreateServiceW(struct ndr_print
*ndr
, const char *name
, int flags
, const struct svcctl_CreateServiceW
*r
)
2814 ndr_print_struct(ndr
, name
, "svcctl_CreateServiceW");
2816 if (flags
& NDR_SET_VALUES
) {
2817 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
2819 if (flags
& NDR_IN
) {
2820 ndr_print_struct(ndr
, "in", "svcctl_CreateServiceW");
2822 ndr_print_ptr(ndr
, "scmanager_handle", r
->in
.scmanager_handle
);
2824 ndr_print_policy_handle(ndr
, "scmanager_handle", r
->in
.scmanager_handle
);
2826 ndr_print_string(ndr
, "ServiceName", r
->in
.ServiceName
);
2827 ndr_print_ptr(ndr
, "DisplayName", r
->in
.DisplayName
);
2829 if (r
->in
.DisplayName
) {
2830 ndr_print_string(ndr
, "DisplayName", r
->in
.DisplayName
);
2833 ndr_print_uint32(ndr
, "desired_access", r
->in
.desired_access
);
2834 ndr_print_uint32(ndr
, "type", r
->in
.type
);
2835 ndr_print_svcctl_StartType(ndr
, "start_type", r
->in
.start_type
);
2836 ndr_print_svcctl_ErrorControl(ndr
, "error_control", r
->in
.error_control
);
2837 ndr_print_string(ndr
, "binary_path", r
->in
.binary_path
);
2838 ndr_print_ptr(ndr
, "LoadOrderGroupKey", r
->in
.LoadOrderGroupKey
);
2840 if (r
->in
.LoadOrderGroupKey
) {
2841 ndr_print_string(ndr
, "LoadOrderGroupKey", r
->in
.LoadOrderGroupKey
);
2844 ndr_print_ptr(ndr
, "TagId", r
->in
.TagId
);
2847 ndr_print_uint32(ndr
, "TagId", *r
->in
.TagId
);
2850 ndr_print_ptr(ndr
, "dependencies", r
->in
.dependencies
);
2852 if (r
->in
.dependencies
) {
2853 ndr_print_array_uint8(ndr
, "dependencies", r
->in
.dependencies
, r
->in
.dependencies_size
);
2856 ndr_print_uint32(ndr
, "dependencies_size", r
->in
.dependencies_size
);
2857 ndr_print_ptr(ndr
, "service_start_name", r
->in
.service_start_name
);
2859 if (r
->in
.service_start_name
) {
2860 ndr_print_string(ndr
, "service_start_name", r
->in
.service_start_name
);
2863 ndr_print_ptr(ndr
, "password", r
->in
.password
);
2865 if (r
->in
.password
) {
2866 ndr_print_array_uint8(ndr
, "password", r
->in
.password
, r
->in
.password_size
);
2869 ndr_print_uint32(ndr
, "password_size", r
->in
.password_size
);
2872 if (flags
& NDR_OUT
) {
2873 ndr_print_struct(ndr
, "out", "svcctl_CreateServiceW");
2875 ndr_print_ptr(ndr
, "TagId", r
->out
.TagId
);
2878 ndr_print_uint32(ndr
, "TagId", *r
->out
.TagId
);
2881 ndr_print_ptr(ndr
, "handle", r
->out
.handle
);
2883 ndr_print_policy_handle(ndr
, "handle", r
->out
.handle
);
2885 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
2891 static enum ndr_err_code
ndr_push_svcctl_EnumDependentServicesW(struct ndr_push
*ndr
, int flags
, const struct svcctl_EnumDependentServicesW
*r
)
2893 if (flags
& NDR_IN
) {
2894 if (r
->in
.service
== NULL
) {
2895 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
2897 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
, r
->in
.service
));
2898 NDR_CHECK(ndr_push_svcctl_ServiceState(ndr
, NDR_SCALARS
, r
->in
.state
));
2899 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.offered
));
2901 if (flags
& NDR_OUT
) {
2902 if (r
->out
.service_status
== NULL
) {
2903 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
2905 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, r
->in
.offered
));
2906 NDR_CHECK(ndr_push_array_uint8(ndr
, NDR_SCALARS
, r
->out
.service_status
, r
->in
.offered
));
2907 if (r
->out
.needed
== NULL
) {
2908 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
2910 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, *r
->out
.needed
));
2911 if (r
->out
.services_returned
== NULL
) {
2912 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
2914 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, *r
->out
.services_returned
));
2915 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
2917 return NDR_ERR_SUCCESS
;
2920 static enum ndr_err_code
ndr_pull_svcctl_EnumDependentServicesW(struct ndr_pull
*ndr
, int flags
, struct svcctl_EnumDependentServicesW
*r
)
2922 uint32_t size_service_status_1
= 0;
2923 TALLOC_CTX
*_mem_save_service_0
;
2924 TALLOC_CTX
*_mem_save_needed_0
;
2925 TALLOC_CTX
*_mem_save_services_returned_0
;
2926 if (flags
& NDR_IN
) {
2927 ZERO_STRUCT(r
->out
);
2929 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
2930 NDR_PULL_ALLOC(ndr
, r
->in
.service
);
2932 _mem_save_service_0
= NDR_PULL_GET_MEM_CTX(ndr
);
2933 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.service
, LIBNDR_FLAG_REF_ALLOC
);
2934 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
, r
->in
.service
));
2935 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_service_0
, LIBNDR_FLAG_REF_ALLOC
);
2936 NDR_CHECK(ndr_pull_svcctl_ServiceState(ndr
, NDR_SCALARS
, &r
->in
.state
));
2937 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.offered
));
2938 if (r
->in
.offered
> 0x40000) {
2939 return ndr_pull_error(ndr
, NDR_ERR_RANGE
, "value out of range");
2941 NDR_PULL_ALLOC_N(ndr
, r
->out
.service_status
, r
->in
.offered
);
2942 memset(r
->out
.service_status
, 0, (r
->in
.offered
) * sizeof(*r
->out
.service_status
));
2943 NDR_PULL_ALLOC(ndr
, r
->out
.needed
);
2944 ZERO_STRUCTP(r
->out
.needed
);
2945 NDR_PULL_ALLOC(ndr
, r
->out
.services_returned
);
2946 ZERO_STRUCTP(r
->out
.services_returned
);
2948 if (flags
& NDR_OUT
) {
2949 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->out
.service_status
));
2950 size_service_status_1
= ndr_get_array_size(ndr
, &r
->out
.service_status
);
2951 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
2952 NDR_PULL_ALLOC_N(ndr
, r
->out
.service_status
, size_service_status_1
);
2954 NDR_CHECK(ndr_pull_array_uint8(ndr
, NDR_SCALARS
, r
->out
.service_status
, size_service_status_1
));
2955 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
2956 NDR_PULL_ALLOC(ndr
, r
->out
.needed
);
2958 _mem_save_needed_0
= NDR_PULL_GET_MEM_CTX(ndr
);
2959 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.needed
, LIBNDR_FLAG_REF_ALLOC
);
2960 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, r
->out
.needed
));
2961 if (*r
->out
.needed
> 0x40000) {
2962 return ndr_pull_error(ndr
, NDR_ERR_RANGE
, "value out of range");
2964 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_needed_0
, LIBNDR_FLAG_REF_ALLOC
);
2965 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
2966 NDR_PULL_ALLOC(ndr
, r
->out
.services_returned
);
2968 _mem_save_services_returned_0
= NDR_PULL_GET_MEM_CTX(ndr
);
2969 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.services_returned
, LIBNDR_FLAG_REF_ALLOC
);
2970 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, r
->out
.services_returned
));
2971 if (*r
->out
.services_returned
> 0x40000) {
2972 return ndr_pull_error(ndr
, NDR_ERR_RANGE
, "value out of range");
2974 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_services_returned_0
, LIBNDR_FLAG_REF_ALLOC
);
2975 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
2976 if (r
->out
.service_status
) {
2977 NDR_CHECK(ndr_check_array_size(ndr
, (void*)&r
->out
.service_status
, r
->in
.offered
));
2980 return NDR_ERR_SUCCESS
;
2983 _PUBLIC_
void ndr_print_svcctl_EnumDependentServicesW(struct ndr_print
*ndr
, const char *name
, int flags
, const struct svcctl_EnumDependentServicesW
*r
)
2985 ndr_print_struct(ndr
, name
, "svcctl_EnumDependentServicesW");
2987 if (flags
& NDR_SET_VALUES
) {
2988 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
2990 if (flags
& NDR_IN
) {
2991 ndr_print_struct(ndr
, "in", "svcctl_EnumDependentServicesW");
2993 ndr_print_ptr(ndr
, "service", r
->in
.service
);
2995 ndr_print_policy_handle(ndr
, "service", r
->in
.service
);
2997 ndr_print_svcctl_ServiceState(ndr
, "state", r
->in
.state
);
2998 ndr_print_uint32(ndr
, "offered", r
->in
.offered
);
3001 if (flags
& NDR_OUT
) {
3002 ndr_print_struct(ndr
, "out", "svcctl_EnumDependentServicesW");
3004 ndr_print_ptr(ndr
, "service_status", r
->out
.service_status
);
3006 ndr_print_array_uint8(ndr
, "service_status", r
->out
.service_status
, r
->in
.offered
);
3008 ndr_print_ptr(ndr
, "needed", r
->out
.needed
);
3010 ndr_print_uint32(ndr
, "needed", *r
->out
.needed
);
3012 ndr_print_ptr(ndr
, "services_returned", r
->out
.services_returned
);
3014 ndr_print_uint32(ndr
, "services_returned", *r
->out
.services_returned
);
3016 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
3022 static enum ndr_err_code
ndr_push_svcctl_EnumServicesStatusW(struct ndr_push
*ndr
, int flags
, const struct svcctl_EnumServicesStatusW
*r
)
3024 if (flags
& NDR_IN
) {
3025 if (r
->in
.handle
== NULL
) {
3026 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
3028 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
, r
->in
.handle
));
3029 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.type
));
3030 NDR_CHECK(ndr_push_svcctl_ServiceState(ndr
, NDR_SCALARS
, r
->in
.state
));
3031 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.offered
));
3032 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.resume_handle
));
3033 if (r
->in
.resume_handle
) {
3034 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, *r
->in
.resume_handle
));
3037 if (flags
& NDR_OUT
) {
3038 if (r
->out
.service
== NULL
) {
3039 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
3041 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, r
->in
.offered
));
3042 NDR_CHECK(ndr_push_array_uint8(ndr
, NDR_SCALARS
, r
->out
.service
, r
->in
.offered
));
3043 if (r
->out
.needed
== NULL
) {
3044 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
3046 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, *r
->out
.needed
));
3047 if (r
->out
.services_returned
== NULL
) {
3048 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
3050 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, *r
->out
.services_returned
));
3051 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->out
.resume_handle
));
3052 if (r
->out
.resume_handle
) {
3053 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, *r
->out
.resume_handle
));
3055 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
3057 return NDR_ERR_SUCCESS
;
3060 static enum ndr_err_code
ndr_pull_svcctl_EnumServicesStatusW(struct ndr_pull
*ndr
, int flags
, struct svcctl_EnumServicesStatusW
*r
)
3062 uint32_t size_service_1
= 0;
3063 uint32_t _ptr_resume_handle
;
3064 TALLOC_CTX
*_mem_save_handle_0
;
3065 TALLOC_CTX
*_mem_save_needed_0
;
3066 TALLOC_CTX
*_mem_save_services_returned_0
;
3067 TALLOC_CTX
*_mem_save_resume_handle_0
;
3068 if (flags
& NDR_IN
) {
3069 ZERO_STRUCT(r
->out
);
3071 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
3072 NDR_PULL_ALLOC(ndr
, r
->in
.handle
);
3074 _mem_save_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
3075 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.handle
, LIBNDR_FLAG_REF_ALLOC
);
3076 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
, r
->in
.handle
));
3077 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_handle_0
, LIBNDR_FLAG_REF_ALLOC
);
3078 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.type
));
3079 NDR_CHECK(ndr_pull_svcctl_ServiceState(ndr
, NDR_SCALARS
, &r
->in
.state
));
3080 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.offered
));
3081 if (r
->in
.offered
> 0x40000) {
3082 return ndr_pull_error(ndr
, NDR_ERR_RANGE
, "value out of range");
3084 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_resume_handle
));
3085 if (_ptr_resume_handle
) {
3086 NDR_PULL_ALLOC(ndr
, r
->in
.resume_handle
);
3088 r
->in
.resume_handle
= NULL
;
3090 if (r
->in
.resume_handle
) {
3091 _mem_save_resume_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
3092 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.resume_handle
, 0);
3093 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, r
->in
.resume_handle
));
3094 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_resume_handle_0
, 0);
3096 NDR_PULL_ALLOC_N(ndr
, r
->out
.service
, r
->in
.offered
);
3097 memset(r
->out
.service
, 0, (r
->in
.offered
) * sizeof(*r
->out
.service
));
3098 NDR_PULL_ALLOC(ndr
, r
->out
.needed
);
3099 ZERO_STRUCTP(r
->out
.needed
);
3100 NDR_PULL_ALLOC(ndr
, r
->out
.services_returned
);
3101 ZERO_STRUCTP(r
->out
.services_returned
);
3103 if (flags
& NDR_OUT
) {
3104 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->out
.service
));
3105 size_service_1
= ndr_get_array_size(ndr
, &r
->out
.service
);
3106 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
3107 NDR_PULL_ALLOC_N(ndr
, r
->out
.service
, size_service_1
);
3109 NDR_CHECK(ndr_pull_array_uint8(ndr
, NDR_SCALARS
, r
->out
.service
, size_service_1
));
3110 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
3111 NDR_PULL_ALLOC(ndr
, r
->out
.needed
);
3113 _mem_save_needed_0
= NDR_PULL_GET_MEM_CTX(ndr
);
3114 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.needed
, LIBNDR_FLAG_REF_ALLOC
);
3115 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, r
->out
.needed
));
3116 if (*r
->out
.needed
> 0x40000) {
3117 return ndr_pull_error(ndr
, NDR_ERR_RANGE
, "value out of range");
3119 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_needed_0
, LIBNDR_FLAG_REF_ALLOC
);
3120 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
3121 NDR_PULL_ALLOC(ndr
, r
->out
.services_returned
);
3123 _mem_save_services_returned_0
= NDR_PULL_GET_MEM_CTX(ndr
);
3124 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.services_returned
, LIBNDR_FLAG_REF_ALLOC
);
3125 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, r
->out
.services_returned
));
3126 if (*r
->out
.services_returned
> 0x40000) {
3127 return ndr_pull_error(ndr
, NDR_ERR_RANGE
, "value out of range");
3129 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_services_returned_0
, LIBNDR_FLAG_REF_ALLOC
);
3130 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_resume_handle
));
3131 if (_ptr_resume_handle
) {
3132 NDR_PULL_ALLOC(ndr
, r
->out
.resume_handle
);
3134 r
->out
.resume_handle
= NULL
;
3136 if (r
->out
.resume_handle
) {
3137 _mem_save_resume_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
3138 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.resume_handle
, 0);
3139 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, r
->out
.resume_handle
));
3140 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_resume_handle_0
, 0);
3142 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
3143 if (r
->out
.service
) {
3144 NDR_CHECK(ndr_check_array_size(ndr
, (void*)&r
->out
.service
, r
->in
.offered
));
3147 return NDR_ERR_SUCCESS
;
3150 _PUBLIC_
void ndr_print_svcctl_EnumServicesStatusW(struct ndr_print
*ndr
, const char *name
, int flags
, const struct svcctl_EnumServicesStatusW
*r
)
3152 ndr_print_struct(ndr
, name
, "svcctl_EnumServicesStatusW");
3154 if (flags
& NDR_SET_VALUES
) {
3155 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
3157 if (flags
& NDR_IN
) {
3158 ndr_print_struct(ndr
, "in", "svcctl_EnumServicesStatusW");
3160 ndr_print_ptr(ndr
, "handle", r
->in
.handle
);
3162 ndr_print_policy_handle(ndr
, "handle", r
->in
.handle
);
3164 ndr_print_uint32(ndr
, "type", r
->in
.type
);
3165 ndr_print_svcctl_ServiceState(ndr
, "state", r
->in
.state
);
3166 ndr_print_uint32(ndr
, "offered", r
->in
.offered
);
3167 ndr_print_ptr(ndr
, "resume_handle", r
->in
.resume_handle
);
3169 if (r
->in
.resume_handle
) {
3170 ndr_print_uint32(ndr
, "resume_handle", *r
->in
.resume_handle
);
3175 if (flags
& NDR_OUT
) {
3176 ndr_print_struct(ndr
, "out", "svcctl_EnumServicesStatusW");
3178 ndr_print_ptr(ndr
, "service", r
->out
.service
);
3180 ndr_print_array_uint8(ndr
, "service", r
->out
.service
, r
->in
.offered
);
3182 ndr_print_ptr(ndr
, "needed", r
->out
.needed
);
3184 ndr_print_uint32(ndr
, "needed", *r
->out
.needed
);
3186 ndr_print_ptr(ndr
, "services_returned", r
->out
.services_returned
);
3188 ndr_print_uint32(ndr
, "services_returned", *r
->out
.services_returned
);
3190 ndr_print_ptr(ndr
, "resume_handle", r
->out
.resume_handle
);
3192 if (r
->out
.resume_handle
) {
3193 ndr_print_uint32(ndr
, "resume_handle", *r
->out
.resume_handle
);
3196 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
3202 static enum ndr_err_code
ndr_push_svcctl_OpenSCManagerW(struct ndr_push
*ndr
, int flags
, const struct svcctl_OpenSCManagerW
*r
)
3204 if (flags
& NDR_IN
) {
3205 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.MachineName
));
3206 if (r
->in
.MachineName
) {
3207 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.MachineName
, CH_UTF16
)));
3208 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, 0));
3209 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.MachineName
, CH_UTF16
)));
3210 NDR_CHECK(ndr_push_charset(ndr
, NDR_SCALARS
, r
->in
.MachineName
, ndr_charset_length(r
->in
.MachineName
, CH_UTF16
), sizeof(uint16_t), CH_UTF16
));
3212 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.DatabaseName
));
3213 if (r
->in
.DatabaseName
) {
3214 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.DatabaseName
, CH_UTF16
)));
3215 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, 0));
3216 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.DatabaseName
, CH_UTF16
)));
3217 NDR_CHECK(ndr_push_charset(ndr
, NDR_SCALARS
, r
->in
.DatabaseName
, ndr_charset_length(r
->in
.DatabaseName
, CH_UTF16
), sizeof(uint16_t), CH_UTF16
));
3219 NDR_CHECK(ndr_push_svcctl_MgrAccessMask(ndr
, NDR_SCALARS
, r
->in
.access_mask
));
3221 if (flags
& NDR_OUT
) {
3222 if (r
->out
.handle
== NULL
) {
3223 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
3225 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
, r
->out
.handle
));
3226 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
3228 return NDR_ERR_SUCCESS
;
3231 static enum ndr_err_code
ndr_pull_svcctl_OpenSCManagerW(struct ndr_pull
*ndr
, int flags
, struct svcctl_OpenSCManagerW
*r
)
3233 uint32_t _ptr_MachineName
;
3234 uint32_t size_MachineName_1
= 0;
3235 uint32_t length_MachineName_1
= 0;
3236 uint32_t _ptr_DatabaseName
;
3237 uint32_t size_DatabaseName_1
= 0;
3238 uint32_t length_DatabaseName_1
= 0;
3239 TALLOC_CTX
*_mem_save_MachineName_0
;
3240 TALLOC_CTX
*_mem_save_DatabaseName_0
;
3241 TALLOC_CTX
*_mem_save_handle_0
;
3242 if (flags
& NDR_IN
) {
3243 ZERO_STRUCT(r
->out
);
3245 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_MachineName
));
3246 if (_ptr_MachineName
) {
3247 NDR_PULL_ALLOC(ndr
, r
->in
.MachineName
);
3249 r
->in
.MachineName
= NULL
;
3251 if (r
->in
.MachineName
) {
3252 _mem_save_MachineName_0
= NDR_PULL_GET_MEM_CTX(ndr
);
3253 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.MachineName
, 0);
3254 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->in
.MachineName
));
3255 NDR_CHECK(ndr_pull_array_length(ndr
, &r
->in
.MachineName
));
3256 size_MachineName_1
= ndr_get_array_size(ndr
, &r
->in
.MachineName
);
3257 length_MachineName_1
= ndr_get_array_length(ndr
, &r
->in
.MachineName
);
3258 if (length_MachineName_1
> size_MachineName_1
) {
3259 return ndr_pull_error(ndr
, NDR_ERR_ARRAY_SIZE
, "Bad array size %u should exceed array length %u", size_MachineName_1
, length_MachineName_1
);
3261 NDR_CHECK(ndr_check_string_terminator(ndr
, length_MachineName_1
, sizeof(uint16_t)));
3262 NDR_CHECK(ndr_pull_charset(ndr
, NDR_SCALARS
, &r
->in
.MachineName
, length_MachineName_1
, sizeof(uint16_t), CH_UTF16
));
3263 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_MachineName_0
, 0);
3265 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_DatabaseName
));
3266 if (_ptr_DatabaseName
) {
3267 NDR_PULL_ALLOC(ndr
, r
->in
.DatabaseName
);
3269 r
->in
.DatabaseName
= NULL
;
3271 if (r
->in
.DatabaseName
) {
3272 _mem_save_DatabaseName_0
= NDR_PULL_GET_MEM_CTX(ndr
);
3273 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.DatabaseName
, 0);
3274 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->in
.DatabaseName
));
3275 NDR_CHECK(ndr_pull_array_length(ndr
, &r
->in
.DatabaseName
));
3276 size_DatabaseName_1
= ndr_get_array_size(ndr
, &r
->in
.DatabaseName
);
3277 length_DatabaseName_1
= ndr_get_array_length(ndr
, &r
->in
.DatabaseName
);
3278 if (length_DatabaseName_1
> size_DatabaseName_1
) {
3279 return ndr_pull_error(ndr
, NDR_ERR_ARRAY_SIZE
, "Bad array size %u should exceed array length %u", size_DatabaseName_1
, length_DatabaseName_1
);
3281 NDR_CHECK(ndr_check_string_terminator(ndr
, length_DatabaseName_1
, sizeof(uint16_t)));
3282 NDR_CHECK(ndr_pull_charset(ndr
, NDR_SCALARS
, &r
->in
.DatabaseName
, length_DatabaseName_1
, sizeof(uint16_t), CH_UTF16
));
3283 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_DatabaseName_0
, 0);
3285 NDR_CHECK(ndr_pull_svcctl_MgrAccessMask(ndr
, NDR_SCALARS
, &r
->in
.access_mask
));
3286 NDR_PULL_ALLOC(ndr
, r
->out
.handle
);
3287 ZERO_STRUCTP(r
->out
.handle
);
3289 if (flags
& NDR_OUT
) {
3290 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
3291 NDR_PULL_ALLOC(ndr
, r
->out
.handle
);
3293 _mem_save_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
3294 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.handle
, LIBNDR_FLAG_REF_ALLOC
);
3295 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
, r
->out
.handle
));
3296 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_handle_0
, LIBNDR_FLAG_REF_ALLOC
);
3297 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
3299 return NDR_ERR_SUCCESS
;
3302 _PUBLIC_
void ndr_print_svcctl_OpenSCManagerW(struct ndr_print
*ndr
, const char *name
, int flags
, const struct svcctl_OpenSCManagerW
*r
)
3304 ndr_print_struct(ndr
, name
, "svcctl_OpenSCManagerW");
3306 if (flags
& NDR_SET_VALUES
) {
3307 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
3309 if (flags
& NDR_IN
) {
3310 ndr_print_struct(ndr
, "in", "svcctl_OpenSCManagerW");
3312 ndr_print_ptr(ndr
, "MachineName", r
->in
.MachineName
);
3314 if (r
->in
.MachineName
) {
3315 ndr_print_string(ndr
, "MachineName", r
->in
.MachineName
);
3318 ndr_print_ptr(ndr
, "DatabaseName", r
->in
.DatabaseName
);
3320 if (r
->in
.DatabaseName
) {
3321 ndr_print_string(ndr
, "DatabaseName", r
->in
.DatabaseName
);
3324 ndr_print_svcctl_MgrAccessMask(ndr
, "access_mask", r
->in
.access_mask
);
3327 if (flags
& NDR_OUT
) {
3328 ndr_print_struct(ndr
, "out", "svcctl_OpenSCManagerW");
3330 ndr_print_ptr(ndr
, "handle", r
->out
.handle
);
3332 ndr_print_policy_handle(ndr
, "handle", r
->out
.handle
);
3334 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
3340 static enum ndr_err_code
ndr_push_svcctl_OpenServiceW(struct ndr_push
*ndr
, int flags
, const struct svcctl_OpenServiceW
*r
)
3342 if (flags
& NDR_IN
) {
3343 if (r
->in
.scmanager_handle
== NULL
) {
3344 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
3346 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
, r
->in
.scmanager_handle
));
3347 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.ServiceName
, CH_UTF16
)));
3348 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, 0));
3349 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.ServiceName
, CH_UTF16
)));
3350 NDR_CHECK(ndr_push_charset(ndr
, NDR_SCALARS
, r
->in
.ServiceName
, ndr_charset_length(r
->in
.ServiceName
, CH_UTF16
), sizeof(uint16_t), CH_UTF16
));
3351 NDR_CHECK(ndr_push_svcctl_ServiceAccessMask(ndr
, NDR_SCALARS
, r
->in
.access_mask
));
3353 if (flags
& NDR_OUT
) {
3354 if (r
->out
.handle
== NULL
) {
3355 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
3357 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
, r
->out
.handle
));
3358 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
3360 return NDR_ERR_SUCCESS
;
3363 static enum ndr_err_code
ndr_pull_svcctl_OpenServiceW(struct ndr_pull
*ndr
, int flags
, struct svcctl_OpenServiceW
*r
)
3365 uint32_t size_ServiceName_0
= 0;
3366 uint32_t length_ServiceName_0
= 0;
3367 TALLOC_CTX
*_mem_save_scmanager_handle_0
;
3368 TALLOC_CTX
*_mem_save_handle_0
;
3369 if (flags
& NDR_IN
) {
3370 ZERO_STRUCT(r
->out
);
3372 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
3373 NDR_PULL_ALLOC(ndr
, r
->in
.scmanager_handle
);
3375 _mem_save_scmanager_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
3376 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.scmanager_handle
, LIBNDR_FLAG_REF_ALLOC
);
3377 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
, r
->in
.scmanager_handle
));
3378 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_scmanager_handle_0
, LIBNDR_FLAG_REF_ALLOC
);
3379 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->in
.ServiceName
));
3380 NDR_CHECK(ndr_pull_array_length(ndr
, &r
->in
.ServiceName
));
3381 size_ServiceName_0
= ndr_get_array_size(ndr
, &r
->in
.ServiceName
);
3382 length_ServiceName_0
= ndr_get_array_length(ndr
, &r
->in
.ServiceName
);
3383 if (length_ServiceName_0
> size_ServiceName_0
) {
3384 return ndr_pull_error(ndr
, NDR_ERR_ARRAY_SIZE
, "Bad array size %u should exceed array length %u", size_ServiceName_0
, length_ServiceName_0
);
3386 NDR_CHECK(ndr_check_string_terminator(ndr
, length_ServiceName_0
, sizeof(uint16_t)));
3387 NDR_CHECK(ndr_pull_charset(ndr
, NDR_SCALARS
, &r
->in
.ServiceName
, length_ServiceName_0
, sizeof(uint16_t), CH_UTF16
));
3388 NDR_CHECK(ndr_pull_svcctl_ServiceAccessMask(ndr
, NDR_SCALARS
, &r
->in
.access_mask
));
3389 NDR_PULL_ALLOC(ndr
, r
->out
.handle
);
3390 ZERO_STRUCTP(r
->out
.handle
);
3392 if (flags
& NDR_OUT
) {
3393 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
3394 NDR_PULL_ALLOC(ndr
, r
->out
.handle
);
3396 _mem_save_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
3397 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.handle
, LIBNDR_FLAG_REF_ALLOC
);
3398 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
, r
->out
.handle
));
3399 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_handle_0
, LIBNDR_FLAG_REF_ALLOC
);
3400 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
3402 return NDR_ERR_SUCCESS
;
3405 _PUBLIC_
void ndr_print_svcctl_OpenServiceW(struct ndr_print
*ndr
, const char *name
, int flags
, const struct svcctl_OpenServiceW
*r
)
3407 ndr_print_struct(ndr
, name
, "svcctl_OpenServiceW");
3409 if (flags
& NDR_SET_VALUES
) {
3410 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
3412 if (flags
& NDR_IN
) {
3413 ndr_print_struct(ndr
, "in", "svcctl_OpenServiceW");
3415 ndr_print_ptr(ndr
, "scmanager_handle", r
->in
.scmanager_handle
);
3417 ndr_print_policy_handle(ndr
, "scmanager_handle", r
->in
.scmanager_handle
);
3419 ndr_print_string(ndr
, "ServiceName", r
->in
.ServiceName
);
3420 ndr_print_svcctl_ServiceAccessMask(ndr
, "access_mask", r
->in
.access_mask
);
3423 if (flags
& NDR_OUT
) {
3424 ndr_print_struct(ndr
, "out", "svcctl_OpenServiceW");
3426 ndr_print_ptr(ndr
, "handle", r
->out
.handle
);
3428 ndr_print_policy_handle(ndr
, "handle", r
->out
.handle
);
3430 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
3436 static enum ndr_err_code
ndr_push_svcctl_QueryServiceConfigW(struct ndr_push
*ndr
, int flags
, const struct svcctl_QueryServiceConfigW
*r
)
3438 if (flags
& NDR_IN
) {
3439 if (r
->in
.handle
== NULL
) {
3440 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
3442 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
, r
->in
.handle
));
3443 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.offered
));
3445 if (flags
& NDR_OUT
) {
3446 if (r
->out
.query
== NULL
) {
3447 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
3449 NDR_CHECK(ndr_push_QUERY_SERVICE_CONFIG(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->out
.query
));
3450 if (r
->out
.needed
== NULL
) {
3451 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
3453 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, *r
->out
.needed
));
3454 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
3456 return NDR_ERR_SUCCESS
;
3459 static enum ndr_err_code
ndr_pull_svcctl_QueryServiceConfigW(struct ndr_pull
*ndr
, int flags
, struct svcctl_QueryServiceConfigW
*r
)
3461 TALLOC_CTX
*_mem_save_handle_0
;
3462 TALLOC_CTX
*_mem_save_query_0
;
3463 TALLOC_CTX
*_mem_save_needed_0
;
3464 if (flags
& NDR_IN
) {
3465 ZERO_STRUCT(r
->out
);
3467 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
3468 NDR_PULL_ALLOC(ndr
, r
->in
.handle
);
3470 _mem_save_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
3471 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.handle
, LIBNDR_FLAG_REF_ALLOC
);
3472 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
, r
->in
.handle
));
3473 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_handle_0
, LIBNDR_FLAG_REF_ALLOC
);
3474 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.offered
));
3475 if (r
->in
.offered
> 8192) {
3476 return ndr_pull_error(ndr
, NDR_ERR_RANGE
, "value out of range");
3478 NDR_PULL_ALLOC(ndr
, r
->out
.query
);
3479 ZERO_STRUCTP(r
->out
.query
);
3480 NDR_PULL_ALLOC(ndr
, r
->out
.needed
);
3481 ZERO_STRUCTP(r
->out
.needed
);
3483 if (flags
& NDR_OUT
) {
3484 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
3485 NDR_PULL_ALLOC(ndr
, r
->out
.query
);
3487 _mem_save_query_0
= NDR_PULL_GET_MEM_CTX(ndr
);
3488 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.query
, LIBNDR_FLAG_REF_ALLOC
);
3489 NDR_CHECK(ndr_pull_QUERY_SERVICE_CONFIG(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->out
.query
));
3490 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_query_0
, LIBNDR_FLAG_REF_ALLOC
);
3491 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
3492 NDR_PULL_ALLOC(ndr
, r
->out
.needed
);
3494 _mem_save_needed_0
= NDR_PULL_GET_MEM_CTX(ndr
);
3495 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.needed
, LIBNDR_FLAG_REF_ALLOC
);
3496 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, r
->out
.needed
));
3497 if (*r
->out
.needed
> 8192) {
3498 return ndr_pull_error(ndr
, NDR_ERR_RANGE
, "value out of range");
3500 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_needed_0
, LIBNDR_FLAG_REF_ALLOC
);
3501 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
3503 return NDR_ERR_SUCCESS
;
3506 _PUBLIC_
void ndr_print_svcctl_QueryServiceConfigW(struct ndr_print
*ndr
, const char *name
, int flags
, const struct svcctl_QueryServiceConfigW
*r
)
3508 ndr_print_struct(ndr
, name
, "svcctl_QueryServiceConfigW");
3510 if (flags
& NDR_SET_VALUES
) {
3511 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
3513 if (flags
& NDR_IN
) {
3514 ndr_print_struct(ndr
, "in", "svcctl_QueryServiceConfigW");
3516 ndr_print_ptr(ndr
, "handle", r
->in
.handle
);
3518 ndr_print_policy_handle(ndr
, "handle", r
->in
.handle
);
3520 ndr_print_uint32(ndr
, "offered", r
->in
.offered
);
3523 if (flags
& NDR_OUT
) {
3524 ndr_print_struct(ndr
, "out", "svcctl_QueryServiceConfigW");
3526 ndr_print_ptr(ndr
, "query", r
->out
.query
);
3528 ndr_print_QUERY_SERVICE_CONFIG(ndr
, "query", r
->out
.query
);
3530 ndr_print_ptr(ndr
, "needed", r
->out
.needed
);
3532 ndr_print_uint32(ndr
, "needed", *r
->out
.needed
);
3534 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
3540 static enum ndr_err_code
ndr_push_svcctl_QueryServiceLockStatusW(struct ndr_push
*ndr
, int flags
, const struct svcctl_QueryServiceLockStatusW
*r
)
3542 if (flags
& NDR_IN
) {
3543 if (r
->in
.handle
== NULL
) {
3544 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
3546 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
, r
->in
.handle
));
3547 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.offered
));
3549 if (flags
& NDR_OUT
) {
3550 if (r
->out
.lock_status
== NULL
) {
3551 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
3553 NDR_CHECK(ndr_push_SERVICE_LOCK_STATUS(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->out
.lock_status
));
3554 if (r
->out
.needed
== NULL
) {
3555 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
3557 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, *r
->out
.needed
));
3558 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
3560 return NDR_ERR_SUCCESS
;
3563 static enum ndr_err_code
ndr_pull_svcctl_QueryServiceLockStatusW(struct ndr_pull
*ndr
, int flags
, struct svcctl_QueryServiceLockStatusW
*r
)
3565 TALLOC_CTX
*_mem_save_handle_0
;
3566 TALLOC_CTX
*_mem_save_lock_status_0
;
3567 TALLOC_CTX
*_mem_save_needed_0
;
3568 if (flags
& NDR_IN
) {
3569 ZERO_STRUCT(r
->out
);
3571 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
3572 NDR_PULL_ALLOC(ndr
, r
->in
.handle
);
3574 _mem_save_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
3575 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.handle
, LIBNDR_FLAG_REF_ALLOC
);
3576 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
, r
->in
.handle
));
3577 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_handle_0
, LIBNDR_FLAG_REF_ALLOC
);
3578 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.offered
));
3579 NDR_PULL_ALLOC(ndr
, r
->out
.lock_status
);
3580 ZERO_STRUCTP(r
->out
.lock_status
);
3581 NDR_PULL_ALLOC(ndr
, r
->out
.needed
);
3582 ZERO_STRUCTP(r
->out
.needed
);
3584 if (flags
& NDR_OUT
) {
3585 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
3586 NDR_PULL_ALLOC(ndr
, r
->out
.lock_status
);
3588 _mem_save_lock_status_0
= NDR_PULL_GET_MEM_CTX(ndr
);
3589 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.lock_status
, LIBNDR_FLAG_REF_ALLOC
);
3590 NDR_CHECK(ndr_pull_SERVICE_LOCK_STATUS(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->out
.lock_status
));
3591 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_lock_status_0
, LIBNDR_FLAG_REF_ALLOC
);
3592 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
3593 NDR_PULL_ALLOC(ndr
, r
->out
.needed
);
3595 _mem_save_needed_0
= NDR_PULL_GET_MEM_CTX(ndr
);
3596 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.needed
, LIBNDR_FLAG_REF_ALLOC
);
3597 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, r
->out
.needed
));
3598 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_needed_0
, LIBNDR_FLAG_REF_ALLOC
);
3599 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
3601 return NDR_ERR_SUCCESS
;
3604 _PUBLIC_
void ndr_print_svcctl_QueryServiceLockStatusW(struct ndr_print
*ndr
, const char *name
, int flags
, const struct svcctl_QueryServiceLockStatusW
*r
)
3606 ndr_print_struct(ndr
, name
, "svcctl_QueryServiceLockStatusW");
3608 if (flags
& NDR_SET_VALUES
) {
3609 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
3611 if (flags
& NDR_IN
) {
3612 ndr_print_struct(ndr
, "in", "svcctl_QueryServiceLockStatusW");
3614 ndr_print_ptr(ndr
, "handle", r
->in
.handle
);
3616 ndr_print_policy_handle(ndr
, "handle", r
->in
.handle
);
3618 ndr_print_uint32(ndr
, "offered", r
->in
.offered
);
3621 if (flags
& NDR_OUT
) {
3622 ndr_print_struct(ndr
, "out", "svcctl_QueryServiceLockStatusW");
3624 ndr_print_ptr(ndr
, "lock_status", r
->out
.lock_status
);
3626 ndr_print_SERVICE_LOCK_STATUS(ndr
, "lock_status", r
->out
.lock_status
);
3628 ndr_print_ptr(ndr
, "needed", r
->out
.needed
);
3630 ndr_print_uint32(ndr
, "needed", *r
->out
.needed
);
3632 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
3638 static enum ndr_err_code
ndr_push_svcctl_StartServiceW(struct ndr_push
*ndr
, int flags
, const struct svcctl_StartServiceW
*r
)
3640 uint32_t cntr_Arguments_1
;
3641 if (flags
& NDR_IN
) {
3642 if (r
->in
.handle
== NULL
) {
3643 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
3645 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
, r
->in
.handle
));
3646 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.NumArgs
));
3647 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.Arguments
));
3648 if (r
->in
.Arguments
) {
3649 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, r
->in
.NumArgs
));
3650 for (cntr_Arguments_1
= 0; cntr_Arguments_1
< r
->in
.NumArgs
; cntr_Arguments_1
++) {
3651 NDR_CHECK(ndr_push_svcctl_ArgumentString(ndr
, NDR_SCALARS
, &r
->in
.Arguments
[cntr_Arguments_1
]));
3653 for (cntr_Arguments_1
= 0; cntr_Arguments_1
< r
->in
.NumArgs
; cntr_Arguments_1
++) {
3654 NDR_CHECK(ndr_push_svcctl_ArgumentString(ndr
, NDR_BUFFERS
, &r
->in
.Arguments
[cntr_Arguments_1
]));
3658 if (flags
& NDR_OUT
) {
3659 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
3661 return NDR_ERR_SUCCESS
;
3664 static enum ndr_err_code
ndr_pull_svcctl_StartServiceW(struct ndr_pull
*ndr
, int flags
, struct svcctl_StartServiceW
*r
)
3666 uint32_t _ptr_Arguments
;
3667 uint32_t size_Arguments_1
= 0;
3668 uint32_t cntr_Arguments_1
;
3669 TALLOC_CTX
*_mem_save_handle_0
;
3670 TALLOC_CTX
*_mem_save_Arguments_0
;
3671 TALLOC_CTX
*_mem_save_Arguments_1
;
3672 if (flags
& NDR_IN
) {
3673 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
3674 NDR_PULL_ALLOC(ndr
, r
->in
.handle
);
3676 _mem_save_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
3677 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.handle
, LIBNDR_FLAG_REF_ALLOC
);
3678 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
, r
->in
.handle
));
3679 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_handle_0
, LIBNDR_FLAG_REF_ALLOC
);
3680 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.NumArgs
));
3681 if (r
->in
.NumArgs
> SC_MAX_ARGUMENTS
) {
3682 return ndr_pull_error(ndr
, NDR_ERR_RANGE
, "value out of range");
3684 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_Arguments
));
3685 if (_ptr_Arguments
) {
3686 NDR_PULL_ALLOC(ndr
, r
->in
.Arguments
);
3688 r
->in
.Arguments
= NULL
;
3690 if (r
->in
.Arguments
) {
3691 _mem_save_Arguments_0
= NDR_PULL_GET_MEM_CTX(ndr
);
3692 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.Arguments
, 0);
3693 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->in
.Arguments
));
3694 size_Arguments_1
= ndr_get_array_size(ndr
, &r
->in
.Arguments
);
3695 NDR_PULL_ALLOC_N(ndr
, r
->in
.Arguments
, size_Arguments_1
);
3696 _mem_save_Arguments_1
= NDR_PULL_GET_MEM_CTX(ndr
);
3697 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.Arguments
, 0);
3698 for (cntr_Arguments_1
= 0; cntr_Arguments_1
< size_Arguments_1
; cntr_Arguments_1
++) {
3699 NDR_CHECK(ndr_pull_svcctl_ArgumentString(ndr
, NDR_SCALARS
, &r
->in
.Arguments
[cntr_Arguments_1
]));
3701 for (cntr_Arguments_1
= 0; cntr_Arguments_1
< size_Arguments_1
; cntr_Arguments_1
++) {
3702 NDR_CHECK(ndr_pull_svcctl_ArgumentString(ndr
, NDR_BUFFERS
, &r
->in
.Arguments
[cntr_Arguments_1
]));
3704 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_Arguments_1
, 0);
3705 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_Arguments_0
, 0);
3707 if (r
->in
.Arguments
) {
3708 NDR_CHECK(ndr_check_array_size(ndr
, (void*)&r
->in
.Arguments
, r
->in
.NumArgs
));
3711 if (flags
& NDR_OUT
) {
3712 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
3714 return NDR_ERR_SUCCESS
;
3717 _PUBLIC_
void ndr_print_svcctl_StartServiceW(struct ndr_print
*ndr
, const char *name
, int flags
, const struct svcctl_StartServiceW
*r
)
3719 uint32_t cntr_Arguments_1
;
3720 ndr_print_struct(ndr
, name
, "svcctl_StartServiceW");
3722 if (flags
& NDR_SET_VALUES
) {
3723 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
3725 if (flags
& NDR_IN
) {
3726 ndr_print_struct(ndr
, "in", "svcctl_StartServiceW");
3728 ndr_print_ptr(ndr
, "handle", r
->in
.handle
);
3730 ndr_print_policy_handle(ndr
, "handle", r
->in
.handle
);
3732 ndr_print_uint32(ndr
, "NumArgs", r
->in
.NumArgs
);
3733 ndr_print_ptr(ndr
, "Arguments", r
->in
.Arguments
);
3735 if (r
->in
.Arguments
) {
3736 ndr
->print(ndr
, "%s: ARRAY(%d)", "Arguments", (int)r
->in
.NumArgs
);
3738 for (cntr_Arguments_1
=0;cntr_Arguments_1
<r
->in
.NumArgs
;cntr_Arguments_1
++) {
3740 if (asprintf(&idx_1
, "[%d]", cntr_Arguments_1
) != -1) {
3741 ndr_print_svcctl_ArgumentString(ndr
, "Arguments", &r
->in
.Arguments
[cntr_Arguments_1
]);
3750 if (flags
& NDR_OUT
) {
3751 ndr_print_struct(ndr
, "out", "svcctl_StartServiceW");
3753 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
3759 static enum ndr_err_code
ndr_push_svcctl_GetServiceDisplayNameW(struct ndr_push
*ndr
, int flags
, const struct svcctl_GetServiceDisplayNameW
*r
)
3761 if (flags
& NDR_IN
) {
3762 if (r
->in
.handle
== NULL
) {
3763 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
3765 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
, r
->in
.handle
));
3766 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.service_name
));
3767 if (r
->in
.service_name
) {
3768 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.service_name
, CH_UTF16
)));
3769 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, 0));
3770 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.service_name
, CH_UTF16
)));
3771 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
));
3773 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.display_name_length
));
3774 if (r
->in
.display_name_length
) {
3775 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, *r
->in
.display_name_length
));
3778 if (flags
& NDR_OUT
) {
3779 if (r
->out
.display_name
== NULL
) {
3780 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
3782 NDR_CHECK(ndr_push_unique_ptr(ndr
, *r
->out
.display_name
));
3783 if (*r
->out
.display_name
) {
3784 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, ndr_charset_length(*r
->out
.display_name
, CH_UTF16
)));
3785 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, 0));
3786 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, ndr_charset_length(*r
->out
.display_name
, CH_UTF16
)));
3787 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
));
3789 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->out
.display_name_length
));
3790 if (r
->out
.display_name_length
) {
3791 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, *r
->out
.display_name_length
));
3793 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
3795 return NDR_ERR_SUCCESS
;
3798 static enum ndr_err_code
ndr_pull_svcctl_GetServiceDisplayNameW(struct ndr_pull
*ndr
, int flags
, struct svcctl_GetServiceDisplayNameW
*r
)
3800 uint32_t _ptr_service_name
;
3801 uint32_t size_service_name_1
= 0;
3802 uint32_t length_service_name_1
= 0;
3803 uint32_t _ptr_display_name
;
3804 uint32_t size_display_name_2
= 0;
3805 uint32_t length_display_name_2
= 0;
3806 uint32_t _ptr_display_name_length
;
3807 TALLOC_CTX
*_mem_save_handle_0
;
3808 TALLOC_CTX
*_mem_save_service_name_0
;
3809 TALLOC_CTX
*_mem_save_display_name_0
;
3810 TALLOC_CTX
*_mem_save_display_name_1
;
3811 TALLOC_CTX
*_mem_save_display_name_length_0
;
3812 if (flags
& NDR_IN
) {
3813 ZERO_STRUCT(r
->out
);
3815 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
3816 NDR_PULL_ALLOC(ndr
, r
->in
.handle
);
3818 _mem_save_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
3819 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.handle
, LIBNDR_FLAG_REF_ALLOC
);
3820 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
, r
->in
.handle
));
3821 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_handle_0
, LIBNDR_FLAG_REF_ALLOC
);
3822 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_service_name
));
3823 if (_ptr_service_name
) {
3824 NDR_PULL_ALLOC(ndr
, r
->in
.service_name
);
3826 r
->in
.service_name
= NULL
;
3828 if (r
->in
.service_name
) {
3829 _mem_save_service_name_0
= NDR_PULL_GET_MEM_CTX(ndr
);
3830 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.service_name
, 0);
3831 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->in
.service_name
));
3832 NDR_CHECK(ndr_pull_array_length(ndr
, &r
->in
.service_name
));
3833 size_service_name_1
= ndr_get_array_size(ndr
, &r
->in
.service_name
);
3834 length_service_name_1
= ndr_get_array_length(ndr
, &r
->in
.service_name
);
3835 if (length_service_name_1
> size_service_name_1
) {
3836 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
);
3838 NDR_CHECK(ndr_check_string_terminator(ndr
, length_service_name_1
, sizeof(uint16_t)));
3839 NDR_CHECK(ndr_pull_charset(ndr
, NDR_SCALARS
, &r
->in
.service_name
, length_service_name_1
, sizeof(uint16_t), CH_UTF16
));
3840 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_service_name_0
, 0);
3842 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_display_name_length
));
3843 if (_ptr_display_name_length
) {
3844 NDR_PULL_ALLOC(ndr
, r
->in
.display_name_length
);
3846 r
->in
.display_name_length
= NULL
;
3848 if (r
->in
.display_name_length
) {
3849 _mem_save_display_name_length_0
= NDR_PULL_GET_MEM_CTX(ndr
);
3850 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.display_name_length
, 0);
3851 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, r
->in
.display_name_length
));
3852 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_display_name_length_0
, 0);
3854 NDR_PULL_ALLOC(ndr
, r
->out
.display_name
);
3855 ZERO_STRUCTP(r
->out
.display_name
);
3857 if (flags
& NDR_OUT
) {
3858 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
3859 NDR_PULL_ALLOC(ndr
, r
->out
.display_name
);
3861 _mem_save_display_name_0
= NDR_PULL_GET_MEM_CTX(ndr
);
3862 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.display_name
, LIBNDR_FLAG_REF_ALLOC
);
3863 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_display_name
));
3864 if (_ptr_display_name
) {
3865 NDR_PULL_ALLOC(ndr
, *r
->out
.display_name
);
3867 *r
->out
.display_name
= NULL
;
3869 if (*r
->out
.display_name
) {
3870 _mem_save_display_name_1
= NDR_PULL_GET_MEM_CTX(ndr
);
3871 NDR_PULL_SET_MEM_CTX(ndr
, *r
->out
.display_name
, 0);
3872 NDR_CHECK(ndr_pull_array_size(ndr
, r
->out
.display_name
));
3873 NDR_CHECK(ndr_pull_array_length(ndr
, r
->out
.display_name
));
3874 size_display_name_2
= ndr_get_array_size(ndr
, r
->out
.display_name
);
3875 length_display_name_2
= ndr_get_array_length(ndr
, r
->out
.display_name
);
3876 if (length_display_name_2
> size_display_name_2
) {
3877 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
);
3879 NDR_CHECK(ndr_check_string_terminator(ndr
, length_display_name_2
, sizeof(uint16_t)));
3880 NDR_CHECK(ndr_pull_charset(ndr
, NDR_SCALARS
, r
->out
.display_name
, length_display_name_2
, sizeof(uint16_t), CH_UTF16
));
3881 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_display_name_1
, 0);
3883 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_display_name_0
, LIBNDR_FLAG_REF_ALLOC
);
3884 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_display_name_length
));
3885 if (_ptr_display_name_length
) {
3886 NDR_PULL_ALLOC(ndr
, r
->out
.display_name_length
);
3888 r
->out
.display_name_length
= NULL
;
3890 if (r
->out
.display_name_length
) {
3891 _mem_save_display_name_length_0
= NDR_PULL_GET_MEM_CTX(ndr
);
3892 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.display_name_length
, 0);
3893 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, r
->out
.display_name_length
));
3894 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_display_name_length_0
, 0);
3896 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
3898 return NDR_ERR_SUCCESS
;
3901 _PUBLIC_
void ndr_print_svcctl_GetServiceDisplayNameW(struct ndr_print
*ndr
, const char *name
, int flags
, const struct svcctl_GetServiceDisplayNameW
*r
)
3903 ndr_print_struct(ndr
, name
, "svcctl_GetServiceDisplayNameW");
3905 if (flags
& NDR_SET_VALUES
) {
3906 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
3908 if (flags
& NDR_IN
) {
3909 ndr_print_struct(ndr
, "in", "svcctl_GetServiceDisplayNameW");
3911 ndr_print_ptr(ndr
, "handle", r
->in
.handle
);
3913 ndr_print_policy_handle(ndr
, "handle", r
->in
.handle
);
3915 ndr_print_ptr(ndr
, "service_name", r
->in
.service_name
);
3917 if (r
->in
.service_name
) {
3918 ndr_print_string(ndr
, "service_name", r
->in
.service_name
);
3921 ndr_print_ptr(ndr
, "display_name_length", r
->in
.display_name_length
);
3923 if (r
->in
.display_name_length
) {
3924 ndr_print_uint32(ndr
, "display_name_length", *r
->in
.display_name_length
);
3929 if (flags
& NDR_OUT
) {
3930 ndr_print_struct(ndr
, "out", "svcctl_GetServiceDisplayNameW");
3932 ndr_print_ptr(ndr
, "display_name", r
->out
.display_name
);
3934 ndr_print_ptr(ndr
, "display_name", *r
->out
.display_name
);
3936 if (*r
->out
.display_name
) {
3937 ndr_print_string(ndr
, "display_name", *r
->out
.display_name
);
3941 ndr_print_ptr(ndr
, "display_name_length", r
->out
.display_name_length
);
3943 if (r
->out
.display_name_length
) {
3944 ndr_print_uint32(ndr
, "display_name_length", *r
->out
.display_name_length
);
3947 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
3953 static enum ndr_err_code
ndr_push_svcctl_GetServiceKeyNameW(struct ndr_push
*ndr
, int flags
, const struct svcctl_GetServiceKeyNameW
*r
)
3955 if (flags
& NDR_IN
) {
3956 if (r
->in
.handle
== NULL
) {
3957 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
3959 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
, r
->in
.handle
));
3960 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.service_name
));
3961 if (r
->in
.service_name
) {
3962 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.service_name
, CH_UTF16
)));
3963 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, 0));
3964 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.service_name
, CH_UTF16
)));
3965 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
));
3967 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.display_name_length
));
3968 if (r
->in
.display_name_length
) {
3969 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, *r
->in
.display_name_length
));
3972 if (flags
& NDR_OUT
) {
3973 if (r
->out
.key_name
== NULL
) {
3974 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
3976 NDR_CHECK(ndr_push_unique_ptr(ndr
, *r
->out
.key_name
));
3977 if (*r
->out
.key_name
) {
3978 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, ndr_charset_length(*r
->out
.key_name
, CH_UTF16
)));
3979 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, 0));
3980 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, ndr_charset_length(*r
->out
.key_name
, CH_UTF16
)));
3981 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
));
3983 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->out
.display_name_length
));
3984 if (r
->out
.display_name_length
) {
3985 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, *r
->out
.display_name_length
));
3987 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
3989 return NDR_ERR_SUCCESS
;
3992 static enum ndr_err_code
ndr_pull_svcctl_GetServiceKeyNameW(struct ndr_pull
*ndr
, int flags
, struct svcctl_GetServiceKeyNameW
*r
)
3994 uint32_t _ptr_service_name
;
3995 uint32_t size_service_name_1
= 0;
3996 uint32_t length_service_name_1
= 0;
3997 uint32_t _ptr_key_name
;
3998 uint32_t size_key_name_2
= 0;
3999 uint32_t length_key_name_2
= 0;
4000 uint32_t _ptr_display_name_length
;
4001 TALLOC_CTX
*_mem_save_handle_0
;
4002 TALLOC_CTX
*_mem_save_service_name_0
;
4003 TALLOC_CTX
*_mem_save_key_name_0
;
4004 TALLOC_CTX
*_mem_save_key_name_1
;
4005 TALLOC_CTX
*_mem_save_display_name_length_0
;
4006 if (flags
& NDR_IN
) {
4007 ZERO_STRUCT(r
->out
);
4009 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
4010 NDR_PULL_ALLOC(ndr
, r
->in
.handle
);
4012 _mem_save_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
4013 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.handle
, LIBNDR_FLAG_REF_ALLOC
);
4014 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
, r
->in
.handle
));
4015 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_handle_0
, LIBNDR_FLAG_REF_ALLOC
);
4016 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_service_name
));
4017 if (_ptr_service_name
) {
4018 NDR_PULL_ALLOC(ndr
, r
->in
.service_name
);
4020 r
->in
.service_name
= NULL
;
4022 if (r
->in
.service_name
) {
4023 _mem_save_service_name_0
= NDR_PULL_GET_MEM_CTX(ndr
);
4024 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.service_name
, 0);
4025 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->in
.service_name
));
4026 NDR_CHECK(ndr_pull_array_length(ndr
, &r
->in
.service_name
));
4027 size_service_name_1
= ndr_get_array_size(ndr
, &r
->in
.service_name
);
4028 length_service_name_1
= ndr_get_array_length(ndr
, &r
->in
.service_name
);
4029 if (length_service_name_1
> size_service_name_1
) {
4030 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
);
4032 NDR_CHECK(ndr_check_string_terminator(ndr
, length_service_name_1
, sizeof(uint16_t)));
4033 NDR_CHECK(ndr_pull_charset(ndr
, NDR_SCALARS
, &r
->in
.service_name
, length_service_name_1
, sizeof(uint16_t), CH_UTF16
));
4034 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_service_name_0
, 0);
4036 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_display_name_length
));
4037 if (_ptr_display_name_length
) {
4038 NDR_PULL_ALLOC(ndr
, r
->in
.display_name_length
);
4040 r
->in
.display_name_length
= NULL
;
4042 if (r
->in
.display_name_length
) {
4043 _mem_save_display_name_length_0
= NDR_PULL_GET_MEM_CTX(ndr
);
4044 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.display_name_length
, 0);
4045 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, r
->in
.display_name_length
));
4046 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_display_name_length_0
, 0);
4048 NDR_PULL_ALLOC(ndr
, r
->out
.key_name
);
4049 ZERO_STRUCTP(r
->out
.key_name
);
4051 if (flags
& NDR_OUT
) {
4052 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
4053 NDR_PULL_ALLOC(ndr
, r
->out
.key_name
);
4055 _mem_save_key_name_0
= NDR_PULL_GET_MEM_CTX(ndr
);
4056 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.key_name
, LIBNDR_FLAG_REF_ALLOC
);
4057 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_key_name
));
4058 if (_ptr_key_name
) {
4059 NDR_PULL_ALLOC(ndr
, *r
->out
.key_name
);
4061 *r
->out
.key_name
= NULL
;
4063 if (*r
->out
.key_name
) {
4064 _mem_save_key_name_1
= NDR_PULL_GET_MEM_CTX(ndr
);
4065 NDR_PULL_SET_MEM_CTX(ndr
, *r
->out
.key_name
, 0);
4066 NDR_CHECK(ndr_pull_array_size(ndr
, r
->out
.key_name
));
4067 NDR_CHECK(ndr_pull_array_length(ndr
, r
->out
.key_name
));
4068 size_key_name_2
= ndr_get_array_size(ndr
, r
->out
.key_name
);
4069 length_key_name_2
= ndr_get_array_length(ndr
, r
->out
.key_name
);
4070 if (length_key_name_2
> size_key_name_2
) {
4071 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
);
4073 NDR_CHECK(ndr_check_string_terminator(ndr
, length_key_name_2
, sizeof(uint16_t)));
4074 NDR_CHECK(ndr_pull_charset(ndr
, NDR_SCALARS
, r
->out
.key_name
, length_key_name_2
, sizeof(uint16_t), CH_UTF16
));
4075 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_key_name_1
, 0);
4077 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_key_name_0
, LIBNDR_FLAG_REF_ALLOC
);
4078 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_display_name_length
));
4079 if (_ptr_display_name_length
) {
4080 NDR_PULL_ALLOC(ndr
, r
->out
.display_name_length
);
4082 r
->out
.display_name_length
= NULL
;
4084 if (r
->out
.display_name_length
) {
4085 _mem_save_display_name_length_0
= NDR_PULL_GET_MEM_CTX(ndr
);
4086 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.display_name_length
, 0);
4087 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, r
->out
.display_name_length
));
4088 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_display_name_length_0
, 0);
4090 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
4092 return NDR_ERR_SUCCESS
;
4095 _PUBLIC_
void ndr_print_svcctl_GetServiceKeyNameW(struct ndr_print
*ndr
, const char *name
, int flags
, const struct svcctl_GetServiceKeyNameW
*r
)
4097 ndr_print_struct(ndr
, name
, "svcctl_GetServiceKeyNameW");
4099 if (flags
& NDR_SET_VALUES
) {
4100 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
4102 if (flags
& NDR_IN
) {
4103 ndr_print_struct(ndr
, "in", "svcctl_GetServiceKeyNameW");
4105 ndr_print_ptr(ndr
, "handle", r
->in
.handle
);
4107 ndr_print_policy_handle(ndr
, "handle", r
->in
.handle
);
4109 ndr_print_ptr(ndr
, "service_name", r
->in
.service_name
);
4111 if (r
->in
.service_name
) {
4112 ndr_print_string(ndr
, "service_name", r
->in
.service_name
);
4115 ndr_print_ptr(ndr
, "display_name_length", r
->in
.display_name_length
);
4117 if (r
->in
.display_name_length
) {
4118 ndr_print_uint32(ndr
, "display_name_length", *r
->in
.display_name_length
);
4123 if (flags
& NDR_OUT
) {
4124 ndr_print_struct(ndr
, "out", "svcctl_GetServiceKeyNameW");
4126 ndr_print_ptr(ndr
, "key_name", r
->out
.key_name
);
4128 ndr_print_ptr(ndr
, "key_name", *r
->out
.key_name
);
4130 if (*r
->out
.key_name
) {
4131 ndr_print_string(ndr
, "key_name", *r
->out
.key_name
);
4135 ndr_print_ptr(ndr
, "display_name_length", r
->out
.display_name_length
);
4137 if (r
->out
.display_name_length
) {
4138 ndr_print_uint32(ndr
, "display_name_length", *r
->out
.display_name_length
);
4141 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
4147 static enum ndr_err_code
ndr_push_svcctl_SCSetServiceBitsA(struct ndr_push
*ndr
, int flags
, const struct svcctl_SCSetServiceBitsA
*r
)
4149 if (flags
& NDR_IN
) {
4150 if (r
->in
.handle
== NULL
) {
4151 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
4153 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
, r
->in
.handle
));
4154 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.bits
));
4155 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.bitson
));
4156 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.immediate
));
4158 if (flags
& NDR_OUT
) {
4159 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
4161 return NDR_ERR_SUCCESS
;
4164 static enum ndr_err_code
ndr_pull_svcctl_SCSetServiceBitsA(struct ndr_pull
*ndr
, int flags
, struct svcctl_SCSetServiceBitsA
*r
)
4166 TALLOC_CTX
*_mem_save_handle_0
;
4167 if (flags
& NDR_IN
) {
4168 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
4169 NDR_PULL_ALLOC(ndr
, r
->in
.handle
);
4171 _mem_save_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
4172 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.handle
, LIBNDR_FLAG_REF_ALLOC
);
4173 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
, r
->in
.handle
));
4174 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_handle_0
, LIBNDR_FLAG_REF_ALLOC
);
4175 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.bits
));
4176 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.bitson
));
4177 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.immediate
));
4179 if (flags
& NDR_OUT
) {
4180 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
4182 return NDR_ERR_SUCCESS
;
4185 _PUBLIC_
void ndr_print_svcctl_SCSetServiceBitsA(struct ndr_print
*ndr
, const char *name
, int flags
, const struct svcctl_SCSetServiceBitsA
*r
)
4187 ndr_print_struct(ndr
, name
, "svcctl_SCSetServiceBitsA");
4189 if (flags
& NDR_SET_VALUES
) {
4190 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
4192 if (flags
& NDR_IN
) {
4193 ndr_print_struct(ndr
, "in", "svcctl_SCSetServiceBitsA");
4195 ndr_print_ptr(ndr
, "handle", r
->in
.handle
);
4197 ndr_print_policy_handle(ndr
, "handle", r
->in
.handle
);
4199 ndr_print_uint32(ndr
, "bits", r
->in
.bits
);
4200 ndr_print_uint32(ndr
, "bitson", r
->in
.bitson
);
4201 ndr_print_uint32(ndr
, "immediate", r
->in
.immediate
);
4204 if (flags
& NDR_OUT
) {
4205 ndr_print_struct(ndr
, "out", "svcctl_SCSetServiceBitsA");
4207 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
4213 static enum ndr_err_code
ndr_push_svcctl_ChangeServiceConfigA(struct ndr_push
*ndr
, int flags
, const struct svcctl_ChangeServiceConfigA
*r
)
4215 if (flags
& NDR_IN
) {
4216 if (r
->in
.handle
== NULL
) {
4217 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
4219 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
, r
->in
.handle
));
4220 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.type
));
4221 NDR_CHECK(ndr_push_svcctl_StartType(ndr
, NDR_SCALARS
, r
->in
.start_type
));
4222 NDR_CHECK(ndr_push_svcctl_ErrorControl(ndr
, NDR_SCALARS
, r
->in
.error_control
));
4223 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.binary_path
));
4224 if (r
->in
.binary_path
) {
4225 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.binary_path
, CH_UTF16
)));
4226 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, 0));
4227 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.binary_path
, CH_UTF16
)));
4228 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
));
4230 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.load_order_group
));
4231 if (r
->in
.load_order_group
) {
4232 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.load_order_group
, CH_UTF16
)));
4233 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, 0));
4234 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.load_order_group
, CH_UTF16
)));
4235 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
));
4237 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.dependencies
));
4238 if (r
->in
.dependencies
) {
4239 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.dependencies
, CH_UTF16
)));
4240 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, 0));
4241 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.dependencies
, CH_UTF16
)));
4242 NDR_CHECK(ndr_push_charset(ndr
, NDR_SCALARS
, r
->in
.dependencies
, ndr_charset_length(r
->in
.dependencies
, CH_UTF16
), sizeof(uint16_t), CH_UTF16
));
4244 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.service_start_name
));
4245 if (r
->in
.service_start_name
) {
4246 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.service_start_name
, CH_UTF16
)));
4247 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, 0));
4248 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.service_start_name
, CH_UTF16
)));
4249 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
));
4251 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.password
));
4252 if (r
->in
.password
) {
4253 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.password
, CH_UTF16
)));
4254 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, 0));
4255 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.password
, CH_UTF16
)));
4256 NDR_CHECK(ndr_push_charset(ndr
, NDR_SCALARS
, r
->in
.password
, ndr_charset_length(r
->in
.password
, CH_UTF16
), sizeof(uint16_t), CH_UTF16
));
4258 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.display_name
));
4259 if (r
->in
.display_name
) {
4260 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.display_name
, CH_UTF16
)));
4261 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, 0));
4262 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.display_name
, CH_UTF16
)));
4263 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
));
4266 if (flags
& NDR_OUT
) {
4267 if (r
->out
.tag_id
== NULL
) {
4268 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
4270 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, *r
->out
.tag_id
));
4271 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
4273 return NDR_ERR_SUCCESS
;
4276 static enum ndr_err_code
ndr_pull_svcctl_ChangeServiceConfigA(struct ndr_pull
*ndr
, int flags
, struct svcctl_ChangeServiceConfigA
*r
)
4278 uint32_t _ptr_binary_path
;
4279 uint32_t size_binary_path_1
= 0;
4280 uint32_t length_binary_path_1
= 0;
4281 uint32_t _ptr_load_order_group
;
4282 uint32_t size_load_order_group_1
= 0;
4283 uint32_t length_load_order_group_1
= 0;
4284 uint32_t _ptr_dependencies
;
4285 uint32_t size_dependencies_1
= 0;
4286 uint32_t length_dependencies_1
= 0;
4287 uint32_t _ptr_service_start_name
;
4288 uint32_t size_service_start_name_1
= 0;
4289 uint32_t length_service_start_name_1
= 0;
4290 uint32_t _ptr_password
;
4291 uint32_t size_password_1
= 0;
4292 uint32_t length_password_1
= 0;
4293 uint32_t _ptr_display_name
;
4294 uint32_t size_display_name_1
= 0;
4295 uint32_t length_display_name_1
= 0;
4296 TALLOC_CTX
*_mem_save_handle_0
;
4297 TALLOC_CTX
*_mem_save_binary_path_0
;
4298 TALLOC_CTX
*_mem_save_load_order_group_0
;
4299 TALLOC_CTX
*_mem_save_tag_id_0
;
4300 TALLOC_CTX
*_mem_save_dependencies_0
;
4301 TALLOC_CTX
*_mem_save_service_start_name_0
;
4302 TALLOC_CTX
*_mem_save_password_0
;
4303 TALLOC_CTX
*_mem_save_display_name_0
;
4304 if (flags
& NDR_IN
) {
4305 ZERO_STRUCT(r
->out
);
4307 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
4308 NDR_PULL_ALLOC(ndr
, r
->in
.handle
);
4310 _mem_save_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
4311 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.handle
, LIBNDR_FLAG_REF_ALLOC
);
4312 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
, r
->in
.handle
));
4313 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_handle_0
, LIBNDR_FLAG_REF_ALLOC
);
4314 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.type
));
4315 NDR_CHECK(ndr_pull_svcctl_StartType(ndr
, NDR_SCALARS
, &r
->in
.start_type
));
4316 NDR_CHECK(ndr_pull_svcctl_ErrorControl(ndr
, NDR_SCALARS
, &r
->in
.error_control
));
4317 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_binary_path
));
4318 if (_ptr_binary_path
) {
4319 NDR_PULL_ALLOC(ndr
, r
->in
.binary_path
);
4321 r
->in
.binary_path
= NULL
;
4323 if (r
->in
.binary_path
) {
4324 _mem_save_binary_path_0
= NDR_PULL_GET_MEM_CTX(ndr
);
4325 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.binary_path
, 0);
4326 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->in
.binary_path
));
4327 NDR_CHECK(ndr_pull_array_length(ndr
, &r
->in
.binary_path
));
4328 size_binary_path_1
= ndr_get_array_size(ndr
, &r
->in
.binary_path
);
4329 length_binary_path_1
= ndr_get_array_length(ndr
, &r
->in
.binary_path
);
4330 if (length_binary_path_1
> size_binary_path_1
) {
4331 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
);
4333 NDR_CHECK(ndr_check_string_terminator(ndr
, length_binary_path_1
, sizeof(uint16_t)));
4334 NDR_CHECK(ndr_pull_charset(ndr
, NDR_SCALARS
, &r
->in
.binary_path
, length_binary_path_1
, sizeof(uint16_t), CH_UTF16
));
4335 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_binary_path_0
, 0);
4337 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_load_order_group
));
4338 if (_ptr_load_order_group
) {
4339 NDR_PULL_ALLOC(ndr
, r
->in
.load_order_group
);
4341 r
->in
.load_order_group
= NULL
;
4343 if (r
->in
.load_order_group
) {
4344 _mem_save_load_order_group_0
= NDR_PULL_GET_MEM_CTX(ndr
);
4345 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.load_order_group
, 0);
4346 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->in
.load_order_group
));
4347 NDR_CHECK(ndr_pull_array_length(ndr
, &r
->in
.load_order_group
));
4348 size_load_order_group_1
= ndr_get_array_size(ndr
, &r
->in
.load_order_group
);
4349 length_load_order_group_1
= ndr_get_array_length(ndr
, &r
->in
.load_order_group
);
4350 if (length_load_order_group_1
> size_load_order_group_1
) {
4351 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
);
4353 NDR_CHECK(ndr_check_string_terminator(ndr
, length_load_order_group_1
, sizeof(uint16_t)));
4354 NDR_CHECK(ndr_pull_charset(ndr
, NDR_SCALARS
, &r
->in
.load_order_group
, length_load_order_group_1
, sizeof(uint16_t), CH_UTF16
));
4355 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_load_order_group_0
, 0);
4357 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_dependencies
));
4358 if (_ptr_dependencies
) {
4359 NDR_PULL_ALLOC(ndr
, r
->in
.dependencies
);
4361 r
->in
.dependencies
= NULL
;
4363 if (r
->in
.dependencies
) {
4364 _mem_save_dependencies_0
= NDR_PULL_GET_MEM_CTX(ndr
);
4365 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.dependencies
, 0);
4366 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->in
.dependencies
));
4367 NDR_CHECK(ndr_pull_array_length(ndr
, &r
->in
.dependencies
));
4368 size_dependencies_1
= ndr_get_array_size(ndr
, &r
->in
.dependencies
);
4369 length_dependencies_1
= ndr_get_array_length(ndr
, &r
->in
.dependencies
);
4370 if (length_dependencies_1
> size_dependencies_1
) {
4371 return ndr_pull_error(ndr
, NDR_ERR_ARRAY_SIZE
, "Bad array size %u should exceed array length %u", size_dependencies_1
, length_dependencies_1
);
4373 NDR_CHECK(ndr_check_string_terminator(ndr
, length_dependencies_1
, sizeof(uint16_t)));
4374 NDR_CHECK(ndr_pull_charset(ndr
, NDR_SCALARS
, &r
->in
.dependencies
, length_dependencies_1
, sizeof(uint16_t), CH_UTF16
));
4375 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_dependencies_0
, 0);
4377 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_service_start_name
));
4378 if (_ptr_service_start_name
) {
4379 NDR_PULL_ALLOC(ndr
, r
->in
.service_start_name
);
4381 r
->in
.service_start_name
= NULL
;
4383 if (r
->in
.service_start_name
) {
4384 _mem_save_service_start_name_0
= NDR_PULL_GET_MEM_CTX(ndr
);
4385 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.service_start_name
, 0);
4386 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->in
.service_start_name
));
4387 NDR_CHECK(ndr_pull_array_length(ndr
, &r
->in
.service_start_name
));
4388 size_service_start_name_1
= ndr_get_array_size(ndr
, &r
->in
.service_start_name
);
4389 length_service_start_name_1
= ndr_get_array_length(ndr
, &r
->in
.service_start_name
);
4390 if (length_service_start_name_1
> size_service_start_name_1
) {
4391 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
);
4393 NDR_CHECK(ndr_check_string_terminator(ndr
, length_service_start_name_1
, sizeof(uint16_t)));
4394 NDR_CHECK(ndr_pull_charset(ndr
, NDR_SCALARS
, &r
->in
.service_start_name
, length_service_start_name_1
, sizeof(uint16_t), CH_UTF16
));
4395 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_service_start_name_0
, 0);
4397 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_password
));
4398 if (_ptr_password
) {
4399 NDR_PULL_ALLOC(ndr
, r
->in
.password
);
4401 r
->in
.password
= NULL
;
4403 if (r
->in
.password
) {
4404 _mem_save_password_0
= NDR_PULL_GET_MEM_CTX(ndr
);
4405 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.password
, 0);
4406 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->in
.password
));
4407 NDR_CHECK(ndr_pull_array_length(ndr
, &r
->in
.password
));
4408 size_password_1
= ndr_get_array_size(ndr
, &r
->in
.password
);
4409 length_password_1
= ndr_get_array_length(ndr
, &r
->in
.password
);
4410 if (length_password_1
> size_password_1
) {
4411 return ndr_pull_error(ndr
, NDR_ERR_ARRAY_SIZE
, "Bad array size %u should exceed array length %u", size_password_1
, length_password_1
);
4413 NDR_CHECK(ndr_check_string_terminator(ndr
, length_password_1
, sizeof(uint16_t)));
4414 NDR_CHECK(ndr_pull_charset(ndr
, NDR_SCALARS
, &r
->in
.password
, length_password_1
, sizeof(uint16_t), CH_UTF16
));
4415 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_password_0
, 0);
4417 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_display_name
));
4418 if (_ptr_display_name
) {
4419 NDR_PULL_ALLOC(ndr
, r
->in
.display_name
);
4421 r
->in
.display_name
= NULL
;
4423 if (r
->in
.display_name
) {
4424 _mem_save_display_name_0
= NDR_PULL_GET_MEM_CTX(ndr
);
4425 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.display_name
, 0);
4426 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->in
.display_name
));
4427 NDR_CHECK(ndr_pull_array_length(ndr
, &r
->in
.display_name
));
4428 size_display_name_1
= ndr_get_array_size(ndr
, &r
->in
.display_name
);
4429 length_display_name_1
= ndr_get_array_length(ndr
, &r
->in
.display_name
);
4430 if (length_display_name_1
> size_display_name_1
) {
4431 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
);
4433 NDR_CHECK(ndr_check_string_terminator(ndr
, length_display_name_1
, sizeof(uint16_t)));
4434 NDR_CHECK(ndr_pull_charset(ndr
, NDR_SCALARS
, &r
->in
.display_name
, length_display_name_1
, sizeof(uint16_t), CH_UTF16
));
4435 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_display_name_0
, 0);
4437 NDR_PULL_ALLOC(ndr
, r
->out
.tag_id
);
4438 ZERO_STRUCTP(r
->out
.tag_id
);
4440 if (flags
& NDR_OUT
) {
4441 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
4442 NDR_PULL_ALLOC(ndr
, r
->out
.tag_id
);
4444 _mem_save_tag_id_0
= NDR_PULL_GET_MEM_CTX(ndr
);
4445 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.tag_id
, LIBNDR_FLAG_REF_ALLOC
);
4446 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, r
->out
.tag_id
));
4447 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_tag_id_0
, LIBNDR_FLAG_REF_ALLOC
);
4448 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
4450 return NDR_ERR_SUCCESS
;
4453 _PUBLIC_
void ndr_print_svcctl_ChangeServiceConfigA(struct ndr_print
*ndr
, const char *name
, int flags
, const struct svcctl_ChangeServiceConfigA
*r
)
4455 ndr_print_struct(ndr
, name
, "svcctl_ChangeServiceConfigA");
4457 if (flags
& NDR_SET_VALUES
) {
4458 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
4460 if (flags
& NDR_IN
) {
4461 ndr_print_struct(ndr
, "in", "svcctl_ChangeServiceConfigA");
4463 ndr_print_ptr(ndr
, "handle", r
->in
.handle
);
4465 ndr_print_policy_handle(ndr
, "handle", r
->in
.handle
);
4467 ndr_print_uint32(ndr
, "type", r
->in
.type
);
4468 ndr_print_svcctl_StartType(ndr
, "start_type", r
->in
.start_type
);
4469 ndr_print_svcctl_ErrorControl(ndr
, "error_control", r
->in
.error_control
);
4470 ndr_print_ptr(ndr
, "binary_path", r
->in
.binary_path
);
4472 if (r
->in
.binary_path
) {
4473 ndr_print_string(ndr
, "binary_path", r
->in
.binary_path
);
4476 ndr_print_ptr(ndr
, "load_order_group", r
->in
.load_order_group
);
4478 if (r
->in
.load_order_group
) {
4479 ndr_print_string(ndr
, "load_order_group", r
->in
.load_order_group
);
4482 ndr_print_ptr(ndr
, "dependencies", r
->in
.dependencies
);
4484 if (r
->in
.dependencies
) {
4485 ndr_print_string(ndr
, "dependencies", r
->in
.dependencies
);
4488 ndr_print_ptr(ndr
, "service_start_name", r
->in
.service_start_name
);
4490 if (r
->in
.service_start_name
) {
4491 ndr_print_string(ndr
, "service_start_name", r
->in
.service_start_name
);
4494 ndr_print_ptr(ndr
, "password", r
->in
.password
);
4496 if (r
->in
.password
) {
4497 ndr_print_string(ndr
, "password", r
->in
.password
);
4500 ndr_print_ptr(ndr
, "display_name", r
->in
.display_name
);
4502 if (r
->in
.display_name
) {
4503 ndr_print_string(ndr
, "display_name", r
->in
.display_name
);
4508 if (flags
& NDR_OUT
) {
4509 ndr_print_struct(ndr
, "out", "svcctl_ChangeServiceConfigA");
4511 ndr_print_ptr(ndr
, "tag_id", r
->out
.tag_id
);
4513 ndr_print_uint32(ndr
, "tag_id", *r
->out
.tag_id
);
4515 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
4521 static enum ndr_err_code
ndr_push_svcctl_CreateServiceA(struct ndr_push
*ndr
, int flags
, const struct svcctl_CreateServiceA
*r
)
4523 if (flags
& NDR_IN
) {
4524 if (r
->in
.handle
== NULL
) {
4525 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
4527 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
, r
->in
.handle
));
4528 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.ServiceName
));
4529 if (r
->in
.ServiceName
) {
4530 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.ServiceName
, CH_UTF16
)));
4531 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, 0));
4532 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.ServiceName
, CH_UTF16
)));
4533 NDR_CHECK(ndr_push_charset(ndr
, NDR_SCALARS
, r
->in
.ServiceName
, ndr_charset_length(r
->in
.ServiceName
, CH_UTF16
), sizeof(uint16_t), CH_UTF16
));
4535 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.DisplayName
));
4536 if (r
->in
.DisplayName
) {
4537 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.DisplayName
, CH_UTF16
)));
4538 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, 0));
4539 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.DisplayName
, CH_UTF16
)));
4540 NDR_CHECK(ndr_push_charset(ndr
, NDR_SCALARS
, r
->in
.DisplayName
, ndr_charset_length(r
->in
.DisplayName
, CH_UTF16
), sizeof(uint16_t), CH_UTF16
));
4542 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.desired_access
));
4543 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.type
));
4544 NDR_CHECK(ndr_push_svcctl_StartType(ndr
, NDR_SCALARS
, r
->in
.start_type
));
4545 NDR_CHECK(ndr_push_svcctl_ErrorControl(ndr
, NDR_SCALARS
, r
->in
.error_control
));
4546 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.binary_path
));
4547 if (r
->in
.binary_path
) {
4548 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.binary_path
, CH_UTF16
)));
4549 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, 0));
4550 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.binary_path
, CH_UTF16
)));
4551 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
));
4553 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.LoadOrderGroupKey
));
4554 if (r
->in
.LoadOrderGroupKey
) {
4555 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.LoadOrderGroupKey
, CH_UTF16
)));
4556 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, 0));
4557 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.LoadOrderGroupKey
, CH_UTF16
)));
4558 NDR_CHECK(ndr_push_charset(ndr
, NDR_SCALARS
, r
->in
.LoadOrderGroupKey
, ndr_charset_length(r
->in
.LoadOrderGroupKey
, CH_UTF16
), sizeof(uint16_t), CH_UTF16
));
4560 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.dependencies
));
4561 if (r
->in
.dependencies
) {
4562 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.dependencies
, CH_UTF16
)));
4563 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, 0));
4564 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.dependencies
, CH_UTF16
)));
4565 NDR_CHECK(ndr_push_charset(ndr
, NDR_SCALARS
, r
->in
.dependencies
, ndr_charset_length(r
->in
.dependencies
, CH_UTF16
), sizeof(uint16_t), CH_UTF16
));
4567 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.service_start_name
));
4568 if (r
->in
.service_start_name
) {
4569 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.service_start_name
, CH_UTF16
)));
4570 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, 0));
4571 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.service_start_name
, CH_UTF16
)));
4572 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
));
4574 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.password
));
4575 if (r
->in
.password
) {
4576 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.password
, CH_UTF16
)));
4577 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, 0));
4578 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.password
, CH_UTF16
)));
4579 NDR_CHECK(ndr_push_charset(ndr
, NDR_SCALARS
, r
->in
.password
, ndr_charset_length(r
->in
.password
, CH_UTF16
), sizeof(uint16_t), CH_UTF16
));
4582 if (flags
& NDR_OUT
) {
4583 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->out
.TagId
));
4585 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, *r
->out
.TagId
));
4587 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
4589 return NDR_ERR_SUCCESS
;
4592 static enum ndr_err_code
ndr_pull_svcctl_CreateServiceA(struct ndr_pull
*ndr
, int flags
, struct svcctl_CreateServiceA
*r
)
4594 uint32_t _ptr_ServiceName
;
4595 uint32_t size_ServiceName_1
= 0;
4596 uint32_t length_ServiceName_1
= 0;
4597 uint32_t _ptr_DisplayName
;
4598 uint32_t size_DisplayName_1
= 0;
4599 uint32_t length_DisplayName_1
= 0;
4600 uint32_t _ptr_binary_path
;
4601 uint32_t size_binary_path_1
= 0;
4602 uint32_t length_binary_path_1
= 0;
4603 uint32_t _ptr_LoadOrderGroupKey
;
4604 uint32_t size_LoadOrderGroupKey_1
= 0;
4605 uint32_t length_LoadOrderGroupKey_1
= 0;
4606 uint32_t _ptr_TagId
;
4607 uint32_t _ptr_dependencies
;
4608 uint32_t size_dependencies_1
= 0;
4609 uint32_t length_dependencies_1
= 0;
4610 uint32_t _ptr_service_start_name
;
4611 uint32_t size_service_start_name_1
= 0;
4612 uint32_t length_service_start_name_1
= 0;
4613 uint32_t _ptr_password
;
4614 uint32_t size_password_1
= 0;
4615 uint32_t length_password_1
= 0;
4616 TALLOC_CTX
*_mem_save_handle_0
;
4617 TALLOC_CTX
*_mem_save_ServiceName_0
;
4618 TALLOC_CTX
*_mem_save_DisplayName_0
;
4619 TALLOC_CTX
*_mem_save_binary_path_0
;
4620 TALLOC_CTX
*_mem_save_LoadOrderGroupKey_0
;
4621 TALLOC_CTX
*_mem_save_TagId_0
;
4622 TALLOC_CTX
*_mem_save_dependencies_0
;
4623 TALLOC_CTX
*_mem_save_service_start_name_0
;
4624 TALLOC_CTX
*_mem_save_password_0
;
4625 if (flags
& NDR_IN
) {
4626 ZERO_STRUCT(r
->out
);
4628 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
4629 NDR_PULL_ALLOC(ndr
, r
->in
.handle
);
4631 _mem_save_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
4632 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.handle
, LIBNDR_FLAG_REF_ALLOC
);
4633 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
, r
->in
.handle
));
4634 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_handle_0
, LIBNDR_FLAG_REF_ALLOC
);
4635 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_ServiceName
));
4636 if (_ptr_ServiceName
) {
4637 NDR_PULL_ALLOC(ndr
, r
->in
.ServiceName
);
4639 r
->in
.ServiceName
= NULL
;
4641 if (r
->in
.ServiceName
) {
4642 _mem_save_ServiceName_0
= NDR_PULL_GET_MEM_CTX(ndr
);
4643 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.ServiceName
, 0);
4644 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->in
.ServiceName
));
4645 NDR_CHECK(ndr_pull_array_length(ndr
, &r
->in
.ServiceName
));
4646 size_ServiceName_1
= ndr_get_array_size(ndr
, &r
->in
.ServiceName
);
4647 length_ServiceName_1
= ndr_get_array_length(ndr
, &r
->in
.ServiceName
);
4648 if (length_ServiceName_1
> size_ServiceName_1
) {
4649 return ndr_pull_error(ndr
, NDR_ERR_ARRAY_SIZE
, "Bad array size %u should exceed array length %u", size_ServiceName_1
, length_ServiceName_1
);
4651 NDR_CHECK(ndr_check_string_terminator(ndr
, length_ServiceName_1
, sizeof(uint16_t)));
4652 NDR_CHECK(ndr_pull_charset(ndr
, NDR_SCALARS
, &r
->in
.ServiceName
, length_ServiceName_1
, sizeof(uint16_t), CH_UTF16
));
4653 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_ServiceName_0
, 0);
4655 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_DisplayName
));
4656 if (_ptr_DisplayName
) {
4657 NDR_PULL_ALLOC(ndr
, r
->in
.DisplayName
);
4659 r
->in
.DisplayName
= NULL
;
4661 if (r
->in
.DisplayName
) {
4662 _mem_save_DisplayName_0
= NDR_PULL_GET_MEM_CTX(ndr
);
4663 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.DisplayName
, 0);
4664 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->in
.DisplayName
));
4665 NDR_CHECK(ndr_pull_array_length(ndr
, &r
->in
.DisplayName
));
4666 size_DisplayName_1
= ndr_get_array_size(ndr
, &r
->in
.DisplayName
);
4667 length_DisplayName_1
= ndr_get_array_length(ndr
, &r
->in
.DisplayName
);
4668 if (length_DisplayName_1
> size_DisplayName_1
) {
4669 return ndr_pull_error(ndr
, NDR_ERR_ARRAY_SIZE
, "Bad array size %u should exceed array length %u", size_DisplayName_1
, length_DisplayName_1
);
4671 NDR_CHECK(ndr_check_string_terminator(ndr
, length_DisplayName_1
, sizeof(uint16_t)));
4672 NDR_CHECK(ndr_pull_charset(ndr
, NDR_SCALARS
, &r
->in
.DisplayName
, length_DisplayName_1
, sizeof(uint16_t), CH_UTF16
));
4673 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_DisplayName_0
, 0);
4675 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.desired_access
));
4676 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.type
));
4677 NDR_CHECK(ndr_pull_svcctl_StartType(ndr
, NDR_SCALARS
, &r
->in
.start_type
));
4678 NDR_CHECK(ndr_pull_svcctl_ErrorControl(ndr
, NDR_SCALARS
, &r
->in
.error_control
));
4679 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_binary_path
));
4680 if (_ptr_binary_path
) {
4681 NDR_PULL_ALLOC(ndr
, r
->in
.binary_path
);
4683 r
->in
.binary_path
= NULL
;
4685 if (r
->in
.binary_path
) {
4686 _mem_save_binary_path_0
= NDR_PULL_GET_MEM_CTX(ndr
);
4687 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.binary_path
, 0);
4688 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->in
.binary_path
));
4689 NDR_CHECK(ndr_pull_array_length(ndr
, &r
->in
.binary_path
));
4690 size_binary_path_1
= ndr_get_array_size(ndr
, &r
->in
.binary_path
);
4691 length_binary_path_1
= ndr_get_array_length(ndr
, &r
->in
.binary_path
);
4692 if (length_binary_path_1
> size_binary_path_1
) {
4693 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
);
4695 NDR_CHECK(ndr_check_string_terminator(ndr
, length_binary_path_1
, sizeof(uint16_t)));
4696 NDR_CHECK(ndr_pull_charset(ndr
, NDR_SCALARS
, &r
->in
.binary_path
, length_binary_path_1
, sizeof(uint16_t), CH_UTF16
));
4697 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_binary_path_0
, 0);
4699 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_LoadOrderGroupKey
));
4700 if (_ptr_LoadOrderGroupKey
) {
4701 NDR_PULL_ALLOC(ndr
, r
->in
.LoadOrderGroupKey
);
4703 r
->in
.LoadOrderGroupKey
= NULL
;
4705 if (r
->in
.LoadOrderGroupKey
) {
4706 _mem_save_LoadOrderGroupKey_0
= NDR_PULL_GET_MEM_CTX(ndr
);
4707 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.LoadOrderGroupKey
, 0);
4708 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->in
.LoadOrderGroupKey
));
4709 NDR_CHECK(ndr_pull_array_length(ndr
, &r
->in
.LoadOrderGroupKey
));
4710 size_LoadOrderGroupKey_1
= ndr_get_array_size(ndr
, &r
->in
.LoadOrderGroupKey
);
4711 length_LoadOrderGroupKey_1
= ndr_get_array_length(ndr
, &r
->in
.LoadOrderGroupKey
);
4712 if (length_LoadOrderGroupKey_1
> size_LoadOrderGroupKey_1
) {
4713 return ndr_pull_error(ndr
, NDR_ERR_ARRAY_SIZE
, "Bad array size %u should exceed array length %u", size_LoadOrderGroupKey_1
, length_LoadOrderGroupKey_1
);
4715 NDR_CHECK(ndr_check_string_terminator(ndr
, length_LoadOrderGroupKey_1
, sizeof(uint16_t)));
4716 NDR_CHECK(ndr_pull_charset(ndr
, NDR_SCALARS
, &r
->in
.LoadOrderGroupKey
, length_LoadOrderGroupKey_1
, sizeof(uint16_t), CH_UTF16
));
4717 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_LoadOrderGroupKey_0
, 0);
4719 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_dependencies
));
4720 if (_ptr_dependencies
) {
4721 NDR_PULL_ALLOC(ndr
, r
->in
.dependencies
);
4723 r
->in
.dependencies
= NULL
;
4725 if (r
->in
.dependencies
) {
4726 _mem_save_dependencies_0
= NDR_PULL_GET_MEM_CTX(ndr
);
4727 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.dependencies
, 0);
4728 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->in
.dependencies
));
4729 NDR_CHECK(ndr_pull_array_length(ndr
, &r
->in
.dependencies
));
4730 size_dependencies_1
= ndr_get_array_size(ndr
, &r
->in
.dependencies
);
4731 length_dependencies_1
= ndr_get_array_length(ndr
, &r
->in
.dependencies
);
4732 if (length_dependencies_1
> size_dependencies_1
) {
4733 return ndr_pull_error(ndr
, NDR_ERR_ARRAY_SIZE
, "Bad array size %u should exceed array length %u", size_dependencies_1
, length_dependencies_1
);
4735 NDR_CHECK(ndr_check_string_terminator(ndr
, length_dependencies_1
, sizeof(uint16_t)));
4736 NDR_CHECK(ndr_pull_charset(ndr
, NDR_SCALARS
, &r
->in
.dependencies
, length_dependencies_1
, sizeof(uint16_t), CH_UTF16
));
4737 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_dependencies_0
, 0);
4739 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_service_start_name
));
4740 if (_ptr_service_start_name
) {
4741 NDR_PULL_ALLOC(ndr
, r
->in
.service_start_name
);
4743 r
->in
.service_start_name
= NULL
;
4745 if (r
->in
.service_start_name
) {
4746 _mem_save_service_start_name_0
= NDR_PULL_GET_MEM_CTX(ndr
);
4747 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.service_start_name
, 0);
4748 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->in
.service_start_name
));
4749 NDR_CHECK(ndr_pull_array_length(ndr
, &r
->in
.service_start_name
));
4750 size_service_start_name_1
= ndr_get_array_size(ndr
, &r
->in
.service_start_name
);
4751 length_service_start_name_1
= ndr_get_array_length(ndr
, &r
->in
.service_start_name
);
4752 if (length_service_start_name_1
> size_service_start_name_1
) {
4753 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
);
4755 NDR_CHECK(ndr_check_string_terminator(ndr
, length_service_start_name_1
, sizeof(uint16_t)));
4756 NDR_CHECK(ndr_pull_charset(ndr
, NDR_SCALARS
, &r
->in
.service_start_name
, length_service_start_name_1
, sizeof(uint16_t), CH_UTF16
));
4757 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_service_start_name_0
, 0);
4759 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_password
));
4760 if (_ptr_password
) {
4761 NDR_PULL_ALLOC(ndr
, r
->in
.password
);
4763 r
->in
.password
= NULL
;
4765 if (r
->in
.password
) {
4766 _mem_save_password_0
= NDR_PULL_GET_MEM_CTX(ndr
);
4767 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.password
, 0);
4768 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->in
.password
));
4769 NDR_CHECK(ndr_pull_array_length(ndr
, &r
->in
.password
));
4770 size_password_1
= ndr_get_array_size(ndr
, &r
->in
.password
);
4771 length_password_1
= ndr_get_array_length(ndr
, &r
->in
.password
);
4772 if (length_password_1
> size_password_1
) {
4773 return ndr_pull_error(ndr
, NDR_ERR_ARRAY_SIZE
, "Bad array size %u should exceed array length %u", size_password_1
, length_password_1
);
4775 NDR_CHECK(ndr_check_string_terminator(ndr
, length_password_1
, sizeof(uint16_t)));
4776 NDR_CHECK(ndr_pull_charset(ndr
, NDR_SCALARS
, &r
->in
.password
, length_password_1
, sizeof(uint16_t), CH_UTF16
));
4777 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_password_0
, 0);
4780 if (flags
& NDR_OUT
) {
4781 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_TagId
));
4783 NDR_PULL_ALLOC(ndr
, r
->out
.TagId
);
4785 r
->out
.TagId
= NULL
;
4788 _mem_save_TagId_0
= NDR_PULL_GET_MEM_CTX(ndr
);
4789 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.TagId
, 0);
4790 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, r
->out
.TagId
));
4791 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_TagId_0
, 0);
4793 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
4795 return NDR_ERR_SUCCESS
;
4798 _PUBLIC_
void ndr_print_svcctl_CreateServiceA(struct ndr_print
*ndr
, const char *name
, int flags
, const struct svcctl_CreateServiceA
*r
)
4800 ndr_print_struct(ndr
, name
, "svcctl_CreateServiceA");
4802 if (flags
& NDR_SET_VALUES
) {
4803 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
4805 if (flags
& NDR_IN
) {
4806 ndr_print_struct(ndr
, "in", "svcctl_CreateServiceA");
4808 ndr_print_ptr(ndr
, "handle", r
->in
.handle
);
4810 ndr_print_policy_handle(ndr
, "handle", r
->in
.handle
);
4812 ndr_print_ptr(ndr
, "ServiceName", r
->in
.ServiceName
);
4814 if (r
->in
.ServiceName
) {
4815 ndr_print_string(ndr
, "ServiceName", r
->in
.ServiceName
);
4818 ndr_print_ptr(ndr
, "DisplayName", r
->in
.DisplayName
);
4820 if (r
->in
.DisplayName
) {
4821 ndr_print_string(ndr
, "DisplayName", r
->in
.DisplayName
);
4824 ndr_print_uint32(ndr
, "desired_access", r
->in
.desired_access
);
4825 ndr_print_uint32(ndr
, "type", r
->in
.type
);
4826 ndr_print_svcctl_StartType(ndr
, "start_type", r
->in
.start_type
);
4827 ndr_print_svcctl_ErrorControl(ndr
, "error_control", r
->in
.error_control
);
4828 ndr_print_ptr(ndr
, "binary_path", r
->in
.binary_path
);
4830 if (r
->in
.binary_path
) {
4831 ndr_print_string(ndr
, "binary_path", r
->in
.binary_path
);
4834 ndr_print_ptr(ndr
, "LoadOrderGroupKey", r
->in
.LoadOrderGroupKey
);
4836 if (r
->in
.LoadOrderGroupKey
) {
4837 ndr_print_string(ndr
, "LoadOrderGroupKey", r
->in
.LoadOrderGroupKey
);
4840 ndr_print_ptr(ndr
, "dependencies", r
->in
.dependencies
);
4842 if (r
->in
.dependencies
) {
4843 ndr_print_string(ndr
, "dependencies", r
->in
.dependencies
);
4846 ndr_print_ptr(ndr
, "service_start_name", r
->in
.service_start_name
);
4848 if (r
->in
.service_start_name
) {
4849 ndr_print_string(ndr
, "service_start_name", r
->in
.service_start_name
);
4852 ndr_print_ptr(ndr
, "password", r
->in
.password
);
4854 if (r
->in
.password
) {
4855 ndr_print_string(ndr
, "password", r
->in
.password
);
4860 if (flags
& NDR_OUT
) {
4861 ndr_print_struct(ndr
, "out", "svcctl_CreateServiceA");
4863 ndr_print_ptr(ndr
, "TagId", r
->out
.TagId
);
4866 ndr_print_uint32(ndr
, "TagId", *r
->out
.TagId
);
4869 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
4875 static enum ndr_err_code
ndr_push_svcctl_EnumDependentServicesA(struct ndr_push
*ndr
, int flags
, const struct svcctl_EnumDependentServicesA
*r
)
4877 if (flags
& NDR_IN
) {
4878 if (r
->in
.service
== NULL
) {
4879 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
4881 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
, r
->in
.service
));
4882 NDR_CHECK(ndr_push_svcctl_ServiceState(ndr
, NDR_SCALARS
, r
->in
.state
));
4883 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.offered
));
4885 if (flags
& NDR_OUT
) {
4886 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->out
.service_status
));
4887 if (r
->out
.service_status
) {
4888 NDR_CHECK(ndr_push_ENUM_SERVICE_STATUSA(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->out
.service_status
));
4890 if (r
->out
.needed
== NULL
) {
4891 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
4893 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, *r
->out
.needed
));
4894 if (r
->out
.services_returned
== NULL
) {
4895 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
4897 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, *r
->out
.services_returned
));
4898 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
4900 return NDR_ERR_SUCCESS
;
4903 static enum ndr_err_code
ndr_pull_svcctl_EnumDependentServicesA(struct ndr_pull
*ndr
, int flags
, struct svcctl_EnumDependentServicesA
*r
)
4905 uint32_t _ptr_service_status
;
4906 TALLOC_CTX
*_mem_save_service_0
;
4907 TALLOC_CTX
*_mem_save_service_status_0
;
4908 TALLOC_CTX
*_mem_save_needed_0
;
4909 TALLOC_CTX
*_mem_save_services_returned_0
;
4910 if (flags
& NDR_IN
) {
4911 ZERO_STRUCT(r
->out
);
4913 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
4914 NDR_PULL_ALLOC(ndr
, r
->in
.service
);
4916 _mem_save_service_0
= NDR_PULL_GET_MEM_CTX(ndr
);
4917 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.service
, LIBNDR_FLAG_REF_ALLOC
);
4918 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
, r
->in
.service
));
4919 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_service_0
, LIBNDR_FLAG_REF_ALLOC
);
4920 NDR_CHECK(ndr_pull_svcctl_ServiceState(ndr
, NDR_SCALARS
, &r
->in
.state
));
4921 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.offered
));
4922 NDR_PULL_ALLOC(ndr
, r
->out
.needed
);
4923 ZERO_STRUCTP(r
->out
.needed
);
4924 NDR_PULL_ALLOC(ndr
, r
->out
.services_returned
);
4925 ZERO_STRUCTP(r
->out
.services_returned
);
4927 if (flags
& NDR_OUT
) {
4928 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_service_status
));
4929 if (_ptr_service_status
) {
4930 NDR_PULL_ALLOC(ndr
, r
->out
.service_status
);
4932 r
->out
.service_status
= NULL
;
4934 if (r
->out
.service_status
) {
4935 _mem_save_service_status_0
= NDR_PULL_GET_MEM_CTX(ndr
);
4936 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.service_status
, 0);
4937 NDR_CHECK(ndr_pull_ENUM_SERVICE_STATUSA(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->out
.service_status
));
4938 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_service_status_0
, 0);
4940 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
4941 NDR_PULL_ALLOC(ndr
, r
->out
.needed
);
4943 _mem_save_needed_0
= NDR_PULL_GET_MEM_CTX(ndr
);
4944 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.needed
, LIBNDR_FLAG_REF_ALLOC
);
4945 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, r
->out
.needed
));
4946 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_needed_0
, LIBNDR_FLAG_REF_ALLOC
);
4947 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
4948 NDR_PULL_ALLOC(ndr
, r
->out
.services_returned
);
4950 _mem_save_services_returned_0
= NDR_PULL_GET_MEM_CTX(ndr
);
4951 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.services_returned
, LIBNDR_FLAG_REF_ALLOC
);
4952 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, r
->out
.services_returned
));
4953 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_services_returned_0
, LIBNDR_FLAG_REF_ALLOC
);
4954 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
4956 return NDR_ERR_SUCCESS
;
4959 _PUBLIC_
void ndr_print_svcctl_EnumDependentServicesA(struct ndr_print
*ndr
, const char *name
, int flags
, const struct svcctl_EnumDependentServicesA
*r
)
4961 ndr_print_struct(ndr
, name
, "svcctl_EnumDependentServicesA");
4963 if (flags
& NDR_SET_VALUES
) {
4964 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
4966 if (flags
& NDR_IN
) {
4967 ndr_print_struct(ndr
, "in", "svcctl_EnumDependentServicesA");
4969 ndr_print_ptr(ndr
, "service", r
->in
.service
);
4971 ndr_print_policy_handle(ndr
, "service", r
->in
.service
);
4973 ndr_print_svcctl_ServiceState(ndr
, "state", r
->in
.state
);
4974 ndr_print_uint32(ndr
, "offered", r
->in
.offered
);
4977 if (flags
& NDR_OUT
) {
4978 ndr_print_struct(ndr
, "out", "svcctl_EnumDependentServicesA");
4980 ndr_print_ptr(ndr
, "service_status", r
->out
.service_status
);
4982 if (r
->out
.service_status
) {
4983 ndr_print_ENUM_SERVICE_STATUSA(ndr
, "service_status", r
->out
.service_status
);
4986 ndr_print_ptr(ndr
, "needed", r
->out
.needed
);
4988 ndr_print_uint32(ndr
, "needed", *r
->out
.needed
);
4990 ndr_print_ptr(ndr
, "services_returned", r
->out
.services_returned
);
4992 ndr_print_uint32(ndr
, "services_returned", *r
->out
.services_returned
);
4994 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
5000 static enum ndr_err_code
ndr_push_svcctl_EnumServicesStatusA(struct ndr_push
*ndr
, int flags
, const struct svcctl_EnumServicesStatusA
*r
)
5002 if (flags
& NDR_IN
) {
5003 if (r
->in
.handle
== NULL
) {
5004 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
5006 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
, r
->in
.handle
));
5007 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.type
));
5008 NDR_CHECK(ndr_push_svcctl_ServiceState(ndr
, NDR_SCALARS
, r
->in
.state
));
5009 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.offered
));
5010 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.resume_handle
));
5011 if (r
->in
.resume_handle
) {
5012 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, *r
->in
.resume_handle
));
5015 if (flags
& NDR_OUT
) {
5016 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, r
->in
.offered
));
5017 NDR_CHECK(ndr_push_array_uint8(ndr
, NDR_SCALARS
, r
->out
.service
, r
->in
.offered
));
5018 if (r
->out
.needed
== NULL
) {
5019 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
5021 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, *r
->out
.needed
));
5022 if (r
->out
.services_returned
== NULL
) {
5023 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
5025 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, *r
->out
.services_returned
));
5026 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->out
.resume_handle
));
5027 if (r
->out
.resume_handle
) {
5028 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, *r
->out
.resume_handle
));
5030 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
5032 return NDR_ERR_SUCCESS
;
5035 static enum ndr_err_code
ndr_pull_svcctl_EnumServicesStatusA(struct ndr_pull
*ndr
, int flags
, struct svcctl_EnumServicesStatusA
*r
)
5037 uint32_t size_service_0
= 0;
5038 uint32_t _ptr_resume_handle
;
5039 TALLOC_CTX
*_mem_save_handle_0
;
5040 TALLOC_CTX
*_mem_save_needed_0
;
5041 TALLOC_CTX
*_mem_save_services_returned_0
;
5042 TALLOC_CTX
*_mem_save_resume_handle_0
;
5043 if (flags
& NDR_IN
) {
5044 ZERO_STRUCT(r
->out
);
5046 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
5047 NDR_PULL_ALLOC(ndr
, r
->in
.handle
);
5049 _mem_save_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
5050 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.handle
, LIBNDR_FLAG_REF_ALLOC
);
5051 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
, r
->in
.handle
));
5052 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_handle_0
, LIBNDR_FLAG_REF_ALLOC
);
5053 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.type
));
5054 NDR_CHECK(ndr_pull_svcctl_ServiceState(ndr
, NDR_SCALARS
, &r
->in
.state
));
5055 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.offered
));
5056 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_resume_handle
));
5057 if (_ptr_resume_handle
) {
5058 NDR_PULL_ALLOC(ndr
, r
->in
.resume_handle
);
5060 r
->in
.resume_handle
= NULL
;
5062 if (r
->in
.resume_handle
) {
5063 _mem_save_resume_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
5064 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.resume_handle
, 0);
5065 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, r
->in
.resume_handle
));
5066 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_resume_handle_0
, 0);
5068 NDR_PULL_ALLOC(ndr
, r
->out
.needed
);
5069 ZERO_STRUCTP(r
->out
.needed
);
5070 NDR_PULL_ALLOC(ndr
, r
->out
.services_returned
);
5071 ZERO_STRUCTP(r
->out
.services_returned
);
5073 if (flags
& NDR_OUT
) {
5074 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->out
.service
));
5075 size_service_0
= ndr_get_array_size(ndr
, &r
->out
.service
);
5076 NDR_PULL_ALLOC_N(ndr
, r
->out
.service
, size_service_0
);
5077 NDR_CHECK(ndr_pull_array_uint8(ndr
, NDR_SCALARS
, r
->out
.service
, size_service_0
));
5078 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
5079 NDR_PULL_ALLOC(ndr
, r
->out
.needed
);
5081 _mem_save_needed_0
= NDR_PULL_GET_MEM_CTX(ndr
);
5082 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.needed
, LIBNDR_FLAG_REF_ALLOC
);
5083 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, r
->out
.needed
));
5084 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_needed_0
, LIBNDR_FLAG_REF_ALLOC
);
5085 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
5086 NDR_PULL_ALLOC(ndr
, r
->out
.services_returned
);
5088 _mem_save_services_returned_0
= NDR_PULL_GET_MEM_CTX(ndr
);
5089 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.services_returned
, LIBNDR_FLAG_REF_ALLOC
);
5090 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, r
->out
.services_returned
));
5091 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_services_returned_0
, LIBNDR_FLAG_REF_ALLOC
);
5092 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_resume_handle
));
5093 if (_ptr_resume_handle
) {
5094 NDR_PULL_ALLOC(ndr
, r
->out
.resume_handle
);
5096 r
->out
.resume_handle
= NULL
;
5098 if (r
->out
.resume_handle
) {
5099 _mem_save_resume_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
5100 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.resume_handle
, 0);
5101 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, r
->out
.resume_handle
));
5102 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_resume_handle_0
, 0);
5104 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
5105 if (r
->out
.service
) {
5106 NDR_CHECK(ndr_check_array_size(ndr
, (void*)&r
->out
.service
, r
->in
.offered
));
5109 return NDR_ERR_SUCCESS
;
5112 _PUBLIC_
void ndr_print_svcctl_EnumServicesStatusA(struct ndr_print
*ndr
, const char *name
, int flags
, const struct svcctl_EnumServicesStatusA
*r
)
5114 ndr_print_struct(ndr
, name
, "svcctl_EnumServicesStatusA");
5116 if (flags
& NDR_SET_VALUES
) {
5117 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
5119 if (flags
& NDR_IN
) {
5120 ndr_print_struct(ndr
, "in", "svcctl_EnumServicesStatusA");
5122 ndr_print_ptr(ndr
, "handle", r
->in
.handle
);
5124 ndr_print_policy_handle(ndr
, "handle", r
->in
.handle
);
5126 ndr_print_uint32(ndr
, "type", r
->in
.type
);
5127 ndr_print_svcctl_ServiceState(ndr
, "state", r
->in
.state
);
5128 ndr_print_uint32(ndr
, "offered", r
->in
.offered
);
5129 ndr_print_ptr(ndr
, "resume_handle", r
->in
.resume_handle
);
5131 if (r
->in
.resume_handle
) {
5132 ndr_print_uint32(ndr
, "resume_handle", *r
->in
.resume_handle
);
5137 if (flags
& NDR_OUT
) {
5138 ndr_print_struct(ndr
, "out", "svcctl_EnumServicesStatusA");
5140 ndr_print_array_uint8(ndr
, "service", r
->out
.service
, r
->in
.offered
);
5141 ndr_print_ptr(ndr
, "needed", r
->out
.needed
);
5143 ndr_print_uint32(ndr
, "needed", *r
->out
.needed
);
5145 ndr_print_ptr(ndr
, "services_returned", r
->out
.services_returned
);
5147 ndr_print_uint32(ndr
, "services_returned", *r
->out
.services_returned
);
5149 ndr_print_ptr(ndr
, "resume_handle", r
->out
.resume_handle
);
5151 if (r
->out
.resume_handle
) {
5152 ndr_print_uint32(ndr
, "resume_handle", *r
->out
.resume_handle
);
5155 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
5161 static enum ndr_err_code
ndr_push_svcctl_OpenSCManagerA(struct ndr_push
*ndr
, int flags
, const struct svcctl_OpenSCManagerA
*r
)
5163 if (flags
& NDR_IN
) {
5164 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.MachineName
));
5165 if (r
->in
.MachineName
) {
5166 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.MachineName
, CH_UTF16
)));
5167 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, 0));
5168 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.MachineName
, CH_UTF16
)));
5169 NDR_CHECK(ndr_push_charset(ndr
, NDR_SCALARS
, r
->in
.MachineName
, ndr_charset_length(r
->in
.MachineName
, CH_UTF16
), sizeof(uint16_t), CH_UTF16
));
5171 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.DatabaseName
));
5172 if (r
->in
.DatabaseName
) {
5173 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.DatabaseName
, CH_UTF16
)));
5174 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, 0));
5175 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.DatabaseName
, CH_UTF16
)));
5176 NDR_CHECK(ndr_push_charset(ndr
, NDR_SCALARS
, r
->in
.DatabaseName
, ndr_charset_length(r
->in
.DatabaseName
, CH_UTF16
), sizeof(uint16_t), CH_UTF16
));
5178 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.access_mask
));
5180 if (flags
& NDR_OUT
) {
5181 if (r
->out
.handle
== NULL
) {
5182 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
5184 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
, r
->out
.handle
));
5185 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
5187 return NDR_ERR_SUCCESS
;
5190 static enum ndr_err_code
ndr_pull_svcctl_OpenSCManagerA(struct ndr_pull
*ndr
, int flags
, struct svcctl_OpenSCManagerA
*r
)
5192 uint32_t _ptr_MachineName
;
5193 uint32_t size_MachineName_1
= 0;
5194 uint32_t length_MachineName_1
= 0;
5195 uint32_t _ptr_DatabaseName
;
5196 uint32_t size_DatabaseName_1
= 0;
5197 uint32_t length_DatabaseName_1
= 0;
5198 TALLOC_CTX
*_mem_save_MachineName_0
;
5199 TALLOC_CTX
*_mem_save_DatabaseName_0
;
5200 TALLOC_CTX
*_mem_save_handle_0
;
5201 if (flags
& NDR_IN
) {
5202 ZERO_STRUCT(r
->out
);
5204 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_MachineName
));
5205 if (_ptr_MachineName
) {
5206 NDR_PULL_ALLOC(ndr
, r
->in
.MachineName
);
5208 r
->in
.MachineName
= NULL
;
5210 if (r
->in
.MachineName
) {
5211 _mem_save_MachineName_0
= NDR_PULL_GET_MEM_CTX(ndr
);
5212 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.MachineName
, 0);
5213 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->in
.MachineName
));
5214 NDR_CHECK(ndr_pull_array_length(ndr
, &r
->in
.MachineName
));
5215 size_MachineName_1
= ndr_get_array_size(ndr
, &r
->in
.MachineName
);
5216 length_MachineName_1
= ndr_get_array_length(ndr
, &r
->in
.MachineName
);
5217 if (length_MachineName_1
> size_MachineName_1
) {
5218 return ndr_pull_error(ndr
, NDR_ERR_ARRAY_SIZE
, "Bad array size %u should exceed array length %u", size_MachineName_1
, length_MachineName_1
);
5220 NDR_CHECK(ndr_check_string_terminator(ndr
, length_MachineName_1
, sizeof(uint16_t)));
5221 NDR_CHECK(ndr_pull_charset(ndr
, NDR_SCALARS
, &r
->in
.MachineName
, length_MachineName_1
, sizeof(uint16_t), CH_UTF16
));
5222 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_MachineName_0
, 0);
5224 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_DatabaseName
));
5225 if (_ptr_DatabaseName
) {
5226 NDR_PULL_ALLOC(ndr
, r
->in
.DatabaseName
);
5228 r
->in
.DatabaseName
= NULL
;
5230 if (r
->in
.DatabaseName
) {
5231 _mem_save_DatabaseName_0
= NDR_PULL_GET_MEM_CTX(ndr
);
5232 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.DatabaseName
, 0);
5233 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->in
.DatabaseName
));
5234 NDR_CHECK(ndr_pull_array_length(ndr
, &r
->in
.DatabaseName
));
5235 size_DatabaseName_1
= ndr_get_array_size(ndr
, &r
->in
.DatabaseName
);
5236 length_DatabaseName_1
= ndr_get_array_length(ndr
, &r
->in
.DatabaseName
);
5237 if (length_DatabaseName_1
> size_DatabaseName_1
) {
5238 return ndr_pull_error(ndr
, NDR_ERR_ARRAY_SIZE
, "Bad array size %u should exceed array length %u", size_DatabaseName_1
, length_DatabaseName_1
);
5240 NDR_CHECK(ndr_check_string_terminator(ndr
, length_DatabaseName_1
, sizeof(uint16_t)));
5241 NDR_CHECK(ndr_pull_charset(ndr
, NDR_SCALARS
, &r
->in
.DatabaseName
, length_DatabaseName_1
, sizeof(uint16_t), CH_UTF16
));
5242 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_DatabaseName_0
, 0);
5244 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.access_mask
));
5245 NDR_PULL_ALLOC(ndr
, r
->out
.handle
);
5246 ZERO_STRUCTP(r
->out
.handle
);
5248 if (flags
& NDR_OUT
) {
5249 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
5250 NDR_PULL_ALLOC(ndr
, r
->out
.handle
);
5252 _mem_save_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
5253 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.handle
, LIBNDR_FLAG_REF_ALLOC
);
5254 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
, r
->out
.handle
));
5255 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_handle_0
, LIBNDR_FLAG_REF_ALLOC
);
5256 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
5258 return NDR_ERR_SUCCESS
;
5261 _PUBLIC_
void ndr_print_svcctl_OpenSCManagerA(struct ndr_print
*ndr
, const char *name
, int flags
, const struct svcctl_OpenSCManagerA
*r
)
5263 ndr_print_struct(ndr
, name
, "svcctl_OpenSCManagerA");
5265 if (flags
& NDR_SET_VALUES
) {
5266 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
5268 if (flags
& NDR_IN
) {
5269 ndr_print_struct(ndr
, "in", "svcctl_OpenSCManagerA");
5271 ndr_print_ptr(ndr
, "MachineName", r
->in
.MachineName
);
5273 if (r
->in
.MachineName
) {
5274 ndr_print_string(ndr
, "MachineName", r
->in
.MachineName
);
5277 ndr_print_ptr(ndr
, "DatabaseName", r
->in
.DatabaseName
);
5279 if (r
->in
.DatabaseName
) {
5280 ndr_print_string(ndr
, "DatabaseName", r
->in
.DatabaseName
);
5283 ndr_print_uint32(ndr
, "access_mask", r
->in
.access_mask
);
5286 if (flags
& NDR_OUT
) {
5287 ndr_print_struct(ndr
, "out", "svcctl_OpenSCManagerA");
5289 ndr_print_ptr(ndr
, "handle", r
->out
.handle
);
5291 ndr_print_policy_handle(ndr
, "handle", r
->out
.handle
);
5293 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
5299 static enum ndr_err_code
ndr_push_svcctl_OpenServiceA(struct ndr_push
*ndr
, int flags
, const struct svcctl_OpenServiceA
*r
)
5301 if (flags
& NDR_IN
) {
5302 if (r
->in
.scmanager_handle
== NULL
) {
5303 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
5305 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
, r
->in
.scmanager_handle
));
5306 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.ServiceName
));
5307 if (r
->in
.ServiceName
) {
5308 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.ServiceName
, CH_UTF16
)));
5309 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, 0));
5310 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.ServiceName
, CH_UTF16
)));
5311 NDR_CHECK(ndr_push_charset(ndr
, NDR_SCALARS
, r
->in
.ServiceName
, ndr_charset_length(r
->in
.ServiceName
, CH_UTF16
), sizeof(uint16_t), CH_UTF16
));
5313 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.access_mask
));
5315 if (flags
& NDR_OUT
) {
5316 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
5318 return NDR_ERR_SUCCESS
;
5321 static enum ndr_err_code
ndr_pull_svcctl_OpenServiceA(struct ndr_pull
*ndr
, int flags
, struct svcctl_OpenServiceA
*r
)
5323 uint32_t _ptr_ServiceName
;
5324 uint32_t size_ServiceName_1
= 0;
5325 uint32_t length_ServiceName_1
= 0;
5326 TALLOC_CTX
*_mem_save_scmanager_handle_0
;
5327 TALLOC_CTX
*_mem_save_ServiceName_0
;
5328 if (flags
& NDR_IN
) {
5329 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
5330 NDR_PULL_ALLOC(ndr
, r
->in
.scmanager_handle
);
5332 _mem_save_scmanager_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
5333 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.scmanager_handle
, LIBNDR_FLAG_REF_ALLOC
);
5334 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
, r
->in
.scmanager_handle
));
5335 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_scmanager_handle_0
, LIBNDR_FLAG_REF_ALLOC
);
5336 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_ServiceName
));
5337 if (_ptr_ServiceName
) {
5338 NDR_PULL_ALLOC(ndr
, r
->in
.ServiceName
);
5340 r
->in
.ServiceName
= NULL
;
5342 if (r
->in
.ServiceName
) {
5343 _mem_save_ServiceName_0
= NDR_PULL_GET_MEM_CTX(ndr
);
5344 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.ServiceName
, 0);
5345 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->in
.ServiceName
));
5346 NDR_CHECK(ndr_pull_array_length(ndr
, &r
->in
.ServiceName
));
5347 size_ServiceName_1
= ndr_get_array_size(ndr
, &r
->in
.ServiceName
);
5348 length_ServiceName_1
= ndr_get_array_length(ndr
, &r
->in
.ServiceName
);
5349 if (length_ServiceName_1
> size_ServiceName_1
) {
5350 return ndr_pull_error(ndr
, NDR_ERR_ARRAY_SIZE
, "Bad array size %u should exceed array length %u", size_ServiceName_1
, length_ServiceName_1
);
5352 NDR_CHECK(ndr_check_string_terminator(ndr
, length_ServiceName_1
, sizeof(uint16_t)));
5353 NDR_CHECK(ndr_pull_charset(ndr
, NDR_SCALARS
, &r
->in
.ServiceName
, length_ServiceName_1
, sizeof(uint16_t), CH_UTF16
));
5354 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_ServiceName_0
, 0);
5356 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.access_mask
));
5358 if (flags
& NDR_OUT
) {
5359 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
5361 return NDR_ERR_SUCCESS
;
5364 _PUBLIC_
void ndr_print_svcctl_OpenServiceA(struct ndr_print
*ndr
, const char *name
, int flags
, const struct svcctl_OpenServiceA
*r
)
5366 ndr_print_struct(ndr
, name
, "svcctl_OpenServiceA");
5368 if (flags
& NDR_SET_VALUES
) {
5369 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
5371 if (flags
& NDR_IN
) {
5372 ndr_print_struct(ndr
, "in", "svcctl_OpenServiceA");
5374 ndr_print_ptr(ndr
, "scmanager_handle", r
->in
.scmanager_handle
);
5376 ndr_print_policy_handle(ndr
, "scmanager_handle", r
->in
.scmanager_handle
);
5378 ndr_print_ptr(ndr
, "ServiceName", r
->in
.ServiceName
);
5380 if (r
->in
.ServiceName
) {
5381 ndr_print_string(ndr
, "ServiceName", r
->in
.ServiceName
);
5384 ndr_print_uint32(ndr
, "access_mask", r
->in
.access_mask
);
5387 if (flags
& NDR_OUT
) {
5388 ndr_print_struct(ndr
, "out", "svcctl_OpenServiceA");
5390 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
5396 static enum ndr_err_code
ndr_push_svcctl_QueryServiceConfigA(struct ndr_push
*ndr
, int flags
, const struct svcctl_QueryServiceConfigA
*r
)
5398 if (flags
& NDR_IN
) {
5399 if (r
->in
.handle
== NULL
) {
5400 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
5402 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
, r
->in
.handle
));
5403 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.offered
));
5405 if (flags
& NDR_OUT
) {
5406 NDR_CHECK(ndr_push_array_uint8(ndr
, NDR_SCALARS
, r
->out
.query
, r
->in
.offered
));
5407 if (r
->out
.needed
== NULL
) {
5408 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
5410 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, *r
->out
.needed
));
5411 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
5413 return NDR_ERR_SUCCESS
;
5416 static enum ndr_err_code
ndr_pull_svcctl_QueryServiceConfigA(struct ndr_pull
*ndr
, int flags
, struct svcctl_QueryServiceConfigA
*r
)
5418 uint32_t size_query_0
= 0;
5419 TALLOC_CTX
*_mem_save_handle_0
;
5420 TALLOC_CTX
*_mem_save_needed_0
;
5421 if (flags
& NDR_IN
) {
5422 ZERO_STRUCT(r
->out
);
5424 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
5425 NDR_PULL_ALLOC(ndr
, r
->in
.handle
);
5427 _mem_save_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
5428 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.handle
, LIBNDR_FLAG_REF_ALLOC
);
5429 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
, r
->in
.handle
));
5430 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_handle_0
, LIBNDR_FLAG_REF_ALLOC
);
5431 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.offered
));
5432 NDR_PULL_ALLOC(ndr
, r
->out
.needed
);
5433 ZERO_STRUCTP(r
->out
.needed
);
5435 if (flags
& NDR_OUT
) {
5436 size_query_0
= r
->in
.offered
;
5437 NDR_PULL_ALLOC_N(ndr
, r
->out
.query
, size_query_0
);
5438 NDR_CHECK(ndr_pull_array_uint8(ndr
, NDR_SCALARS
, r
->out
.query
, size_query_0
));
5439 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
5440 NDR_PULL_ALLOC(ndr
, r
->out
.needed
);
5442 _mem_save_needed_0
= NDR_PULL_GET_MEM_CTX(ndr
);
5443 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.needed
, LIBNDR_FLAG_REF_ALLOC
);
5444 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, r
->out
.needed
));
5445 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_needed_0
, LIBNDR_FLAG_REF_ALLOC
);
5446 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
5448 return NDR_ERR_SUCCESS
;
5451 _PUBLIC_
void ndr_print_svcctl_QueryServiceConfigA(struct ndr_print
*ndr
, const char *name
, int flags
, const struct svcctl_QueryServiceConfigA
*r
)
5453 ndr_print_struct(ndr
, name
, "svcctl_QueryServiceConfigA");
5455 if (flags
& NDR_SET_VALUES
) {
5456 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
5458 if (flags
& NDR_IN
) {
5459 ndr_print_struct(ndr
, "in", "svcctl_QueryServiceConfigA");
5461 ndr_print_ptr(ndr
, "handle", r
->in
.handle
);
5463 ndr_print_policy_handle(ndr
, "handle", r
->in
.handle
);
5465 ndr_print_uint32(ndr
, "offered", r
->in
.offered
);
5468 if (flags
& NDR_OUT
) {
5469 ndr_print_struct(ndr
, "out", "svcctl_QueryServiceConfigA");
5471 ndr_print_array_uint8(ndr
, "query", r
->out
.query
, r
->in
.offered
);
5472 ndr_print_ptr(ndr
, "needed", r
->out
.needed
);
5474 ndr_print_uint32(ndr
, "needed", *r
->out
.needed
);
5476 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
5482 static enum ndr_err_code
ndr_push_svcctl_QueryServiceLockStatusA(struct ndr_push
*ndr
, int flags
, const struct svcctl_QueryServiceLockStatusA
*r
)
5484 if (flags
& NDR_IN
) {
5485 if (r
->in
.handle
== NULL
) {
5486 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
5488 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
, r
->in
.handle
));
5489 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.offered
));
5491 if (flags
& NDR_OUT
) {
5492 if (r
->out
.lock_status
== NULL
) {
5493 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
5495 NDR_CHECK(ndr_push_SERVICE_LOCK_STATUS(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->out
.lock_status
));
5496 if (r
->out
.needed
== NULL
) {
5497 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
5499 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, *r
->out
.needed
));
5500 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
5502 return NDR_ERR_SUCCESS
;
5505 static enum ndr_err_code
ndr_pull_svcctl_QueryServiceLockStatusA(struct ndr_pull
*ndr
, int flags
, struct svcctl_QueryServiceLockStatusA
*r
)
5507 TALLOC_CTX
*_mem_save_handle_0
;
5508 TALLOC_CTX
*_mem_save_lock_status_0
;
5509 TALLOC_CTX
*_mem_save_needed_0
;
5510 if (flags
& NDR_IN
) {
5511 ZERO_STRUCT(r
->out
);
5513 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
5514 NDR_PULL_ALLOC(ndr
, r
->in
.handle
);
5516 _mem_save_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
5517 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.handle
, LIBNDR_FLAG_REF_ALLOC
);
5518 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
, r
->in
.handle
));
5519 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_handle_0
, LIBNDR_FLAG_REF_ALLOC
);
5520 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.offered
));
5521 NDR_PULL_ALLOC(ndr
, r
->out
.lock_status
);
5522 ZERO_STRUCTP(r
->out
.lock_status
);
5523 NDR_PULL_ALLOC(ndr
, r
->out
.needed
);
5524 ZERO_STRUCTP(r
->out
.needed
);
5526 if (flags
& NDR_OUT
) {
5527 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
5528 NDR_PULL_ALLOC(ndr
, r
->out
.lock_status
);
5530 _mem_save_lock_status_0
= NDR_PULL_GET_MEM_CTX(ndr
);
5531 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.lock_status
, LIBNDR_FLAG_REF_ALLOC
);
5532 NDR_CHECK(ndr_pull_SERVICE_LOCK_STATUS(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->out
.lock_status
));
5533 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_lock_status_0
, LIBNDR_FLAG_REF_ALLOC
);
5534 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
5535 NDR_PULL_ALLOC(ndr
, r
->out
.needed
);
5537 _mem_save_needed_0
= NDR_PULL_GET_MEM_CTX(ndr
);
5538 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.needed
, LIBNDR_FLAG_REF_ALLOC
);
5539 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, r
->out
.needed
));
5540 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_needed_0
, LIBNDR_FLAG_REF_ALLOC
);
5541 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
5543 return NDR_ERR_SUCCESS
;
5546 _PUBLIC_
void ndr_print_svcctl_QueryServiceLockStatusA(struct ndr_print
*ndr
, const char *name
, int flags
, const struct svcctl_QueryServiceLockStatusA
*r
)
5548 ndr_print_struct(ndr
, name
, "svcctl_QueryServiceLockStatusA");
5550 if (flags
& NDR_SET_VALUES
) {
5551 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
5553 if (flags
& NDR_IN
) {
5554 ndr_print_struct(ndr
, "in", "svcctl_QueryServiceLockStatusA");
5556 ndr_print_ptr(ndr
, "handle", r
->in
.handle
);
5558 ndr_print_policy_handle(ndr
, "handle", r
->in
.handle
);
5560 ndr_print_uint32(ndr
, "offered", r
->in
.offered
);
5563 if (flags
& NDR_OUT
) {
5564 ndr_print_struct(ndr
, "out", "svcctl_QueryServiceLockStatusA");
5566 ndr_print_ptr(ndr
, "lock_status", r
->out
.lock_status
);
5568 ndr_print_SERVICE_LOCK_STATUS(ndr
, "lock_status", r
->out
.lock_status
);
5570 ndr_print_ptr(ndr
, "needed", r
->out
.needed
);
5572 ndr_print_uint32(ndr
, "needed", *r
->out
.needed
);
5574 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
5580 static enum ndr_err_code
ndr_push_svcctl_StartServiceA(struct ndr_push
*ndr
, int flags
, const struct svcctl_StartServiceA
*r
)
5582 if (flags
& NDR_IN
) {
5583 if (r
->in
.handle
== NULL
) {
5584 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
5586 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
, r
->in
.handle
));
5587 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.NumArgs
));
5588 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.Arguments
));
5589 if (r
->in
.Arguments
) {
5590 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.Arguments
, CH_UTF16
)));
5591 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, 0));
5592 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.Arguments
, CH_UTF16
)));
5593 NDR_CHECK(ndr_push_charset(ndr
, NDR_SCALARS
, r
->in
.Arguments
, ndr_charset_length(r
->in
.Arguments
, CH_UTF16
), sizeof(uint16_t), CH_UTF16
));
5596 if (flags
& NDR_OUT
) {
5597 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
5599 return NDR_ERR_SUCCESS
;
5602 static enum ndr_err_code
ndr_pull_svcctl_StartServiceA(struct ndr_pull
*ndr
, int flags
, struct svcctl_StartServiceA
*r
)
5604 uint32_t _ptr_Arguments
;
5605 uint32_t size_Arguments_1
= 0;
5606 uint32_t length_Arguments_1
= 0;
5607 TALLOC_CTX
*_mem_save_handle_0
;
5608 TALLOC_CTX
*_mem_save_Arguments_0
;
5609 if (flags
& NDR_IN
) {
5610 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
5611 NDR_PULL_ALLOC(ndr
, r
->in
.handle
);
5613 _mem_save_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
5614 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.handle
, LIBNDR_FLAG_REF_ALLOC
);
5615 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
, r
->in
.handle
));
5616 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_handle_0
, LIBNDR_FLAG_REF_ALLOC
);
5617 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.NumArgs
));
5618 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_Arguments
));
5619 if (_ptr_Arguments
) {
5620 NDR_PULL_ALLOC(ndr
, r
->in
.Arguments
);
5622 r
->in
.Arguments
= NULL
;
5624 if (r
->in
.Arguments
) {
5625 _mem_save_Arguments_0
= NDR_PULL_GET_MEM_CTX(ndr
);
5626 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.Arguments
, 0);
5627 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->in
.Arguments
));
5628 NDR_CHECK(ndr_pull_array_length(ndr
, &r
->in
.Arguments
));
5629 size_Arguments_1
= ndr_get_array_size(ndr
, &r
->in
.Arguments
);
5630 length_Arguments_1
= ndr_get_array_length(ndr
, &r
->in
.Arguments
);
5631 if (length_Arguments_1
> size_Arguments_1
) {
5632 return ndr_pull_error(ndr
, NDR_ERR_ARRAY_SIZE
, "Bad array size %u should exceed array length %u", size_Arguments_1
, length_Arguments_1
);
5634 NDR_CHECK(ndr_check_string_terminator(ndr
, length_Arguments_1
, sizeof(uint16_t)));
5635 NDR_CHECK(ndr_pull_charset(ndr
, NDR_SCALARS
, &r
->in
.Arguments
, length_Arguments_1
, sizeof(uint16_t), CH_UTF16
));
5636 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_Arguments_0
, 0);
5639 if (flags
& NDR_OUT
) {
5640 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
5642 return NDR_ERR_SUCCESS
;
5645 _PUBLIC_
void ndr_print_svcctl_StartServiceA(struct ndr_print
*ndr
, const char *name
, int flags
, const struct svcctl_StartServiceA
*r
)
5647 ndr_print_struct(ndr
, name
, "svcctl_StartServiceA");
5649 if (flags
& NDR_SET_VALUES
) {
5650 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
5652 if (flags
& NDR_IN
) {
5653 ndr_print_struct(ndr
, "in", "svcctl_StartServiceA");
5655 ndr_print_ptr(ndr
, "handle", r
->in
.handle
);
5657 ndr_print_policy_handle(ndr
, "handle", r
->in
.handle
);
5659 ndr_print_uint32(ndr
, "NumArgs", r
->in
.NumArgs
);
5660 ndr_print_ptr(ndr
, "Arguments", r
->in
.Arguments
);
5662 if (r
->in
.Arguments
) {
5663 ndr_print_string(ndr
, "Arguments", r
->in
.Arguments
);
5668 if (flags
& NDR_OUT
) {
5669 ndr_print_struct(ndr
, "out", "svcctl_StartServiceA");
5671 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
5677 static enum ndr_err_code
ndr_push_svcctl_GetServiceDisplayNameA(struct ndr_push
*ndr
, int flags
, const struct svcctl_GetServiceDisplayNameA
*r
)
5679 if (flags
& NDR_IN
) {
5680 if (r
->in
.handle
== NULL
) {
5681 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
5683 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
, r
->in
.handle
));
5684 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.service_name
));
5685 if (r
->in
.service_name
) {
5686 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.service_name
, CH_UTF16
)));
5687 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, 0));
5688 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.service_name
, CH_UTF16
)));
5689 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
));
5691 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.display_name_length
));
5692 if (r
->in
.display_name_length
) {
5693 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, *r
->in
.display_name_length
));
5696 if (flags
& NDR_OUT
) {
5697 if (r
->out
.display_name
== NULL
) {
5698 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
5700 NDR_CHECK(ndr_push_unique_ptr(ndr
, *r
->out
.display_name
));
5701 if (*r
->out
.display_name
) {
5702 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, ndr_charset_length(*r
->out
.display_name
, CH_UTF16
)));
5703 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, 0));
5704 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, ndr_charset_length(*r
->out
.display_name
, CH_UTF16
)));
5705 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
));
5707 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->out
.display_name_length
));
5708 if (r
->out
.display_name_length
) {
5709 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, *r
->out
.display_name_length
));
5711 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
5713 return NDR_ERR_SUCCESS
;
5716 static enum ndr_err_code
ndr_pull_svcctl_GetServiceDisplayNameA(struct ndr_pull
*ndr
, int flags
, struct svcctl_GetServiceDisplayNameA
*r
)
5718 uint32_t _ptr_service_name
;
5719 uint32_t size_service_name_1
= 0;
5720 uint32_t length_service_name_1
= 0;
5721 uint32_t _ptr_display_name
;
5722 uint32_t size_display_name_2
= 0;
5723 uint32_t length_display_name_2
= 0;
5724 uint32_t _ptr_display_name_length
;
5725 TALLOC_CTX
*_mem_save_handle_0
;
5726 TALLOC_CTX
*_mem_save_service_name_0
;
5727 TALLOC_CTX
*_mem_save_display_name_0
;
5728 TALLOC_CTX
*_mem_save_display_name_1
;
5729 TALLOC_CTX
*_mem_save_display_name_length_0
;
5730 if (flags
& NDR_IN
) {
5731 ZERO_STRUCT(r
->out
);
5733 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
5734 NDR_PULL_ALLOC(ndr
, r
->in
.handle
);
5736 _mem_save_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
5737 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.handle
, LIBNDR_FLAG_REF_ALLOC
);
5738 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
, r
->in
.handle
));
5739 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_handle_0
, LIBNDR_FLAG_REF_ALLOC
);
5740 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_service_name
));
5741 if (_ptr_service_name
) {
5742 NDR_PULL_ALLOC(ndr
, r
->in
.service_name
);
5744 r
->in
.service_name
= NULL
;
5746 if (r
->in
.service_name
) {
5747 _mem_save_service_name_0
= NDR_PULL_GET_MEM_CTX(ndr
);
5748 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.service_name
, 0);
5749 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->in
.service_name
));
5750 NDR_CHECK(ndr_pull_array_length(ndr
, &r
->in
.service_name
));
5751 size_service_name_1
= ndr_get_array_size(ndr
, &r
->in
.service_name
);
5752 length_service_name_1
= ndr_get_array_length(ndr
, &r
->in
.service_name
);
5753 if (length_service_name_1
> size_service_name_1
) {
5754 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
);
5756 NDR_CHECK(ndr_check_string_terminator(ndr
, length_service_name_1
, sizeof(uint16_t)));
5757 NDR_CHECK(ndr_pull_charset(ndr
, NDR_SCALARS
, &r
->in
.service_name
, length_service_name_1
, sizeof(uint16_t), CH_UTF16
));
5758 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_service_name_0
, 0);
5760 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_display_name_length
));
5761 if (_ptr_display_name_length
) {
5762 NDR_PULL_ALLOC(ndr
, r
->in
.display_name_length
);
5764 r
->in
.display_name_length
= NULL
;
5766 if (r
->in
.display_name_length
) {
5767 _mem_save_display_name_length_0
= NDR_PULL_GET_MEM_CTX(ndr
);
5768 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.display_name_length
, 0);
5769 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, r
->in
.display_name_length
));
5770 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_display_name_length_0
, 0);
5772 NDR_PULL_ALLOC(ndr
, r
->out
.display_name
);
5773 ZERO_STRUCTP(r
->out
.display_name
);
5775 if (flags
& NDR_OUT
) {
5776 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
5777 NDR_PULL_ALLOC(ndr
, r
->out
.display_name
);
5779 _mem_save_display_name_0
= NDR_PULL_GET_MEM_CTX(ndr
);
5780 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.display_name
, LIBNDR_FLAG_REF_ALLOC
);
5781 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_display_name
));
5782 if (_ptr_display_name
) {
5783 NDR_PULL_ALLOC(ndr
, *r
->out
.display_name
);
5785 *r
->out
.display_name
= NULL
;
5787 if (*r
->out
.display_name
) {
5788 _mem_save_display_name_1
= NDR_PULL_GET_MEM_CTX(ndr
);
5789 NDR_PULL_SET_MEM_CTX(ndr
, *r
->out
.display_name
, 0);
5790 NDR_CHECK(ndr_pull_array_size(ndr
, r
->out
.display_name
));
5791 NDR_CHECK(ndr_pull_array_length(ndr
, r
->out
.display_name
));
5792 size_display_name_2
= ndr_get_array_size(ndr
, r
->out
.display_name
);
5793 length_display_name_2
= ndr_get_array_length(ndr
, r
->out
.display_name
);
5794 if (length_display_name_2
> size_display_name_2
) {
5795 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
);
5797 NDR_CHECK(ndr_check_string_terminator(ndr
, length_display_name_2
, sizeof(uint16_t)));
5798 NDR_CHECK(ndr_pull_charset(ndr
, NDR_SCALARS
, r
->out
.display_name
, length_display_name_2
, sizeof(uint16_t), CH_UTF16
));
5799 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_display_name_1
, 0);
5801 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_display_name_0
, LIBNDR_FLAG_REF_ALLOC
);
5802 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_display_name_length
));
5803 if (_ptr_display_name_length
) {
5804 NDR_PULL_ALLOC(ndr
, r
->out
.display_name_length
);
5806 r
->out
.display_name_length
= NULL
;
5808 if (r
->out
.display_name_length
) {
5809 _mem_save_display_name_length_0
= NDR_PULL_GET_MEM_CTX(ndr
);
5810 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.display_name_length
, 0);
5811 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, r
->out
.display_name_length
));
5812 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_display_name_length_0
, 0);
5814 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
5816 return NDR_ERR_SUCCESS
;
5819 _PUBLIC_
void ndr_print_svcctl_GetServiceDisplayNameA(struct ndr_print
*ndr
, const char *name
, int flags
, const struct svcctl_GetServiceDisplayNameA
*r
)
5821 ndr_print_struct(ndr
, name
, "svcctl_GetServiceDisplayNameA");
5823 if (flags
& NDR_SET_VALUES
) {
5824 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
5826 if (flags
& NDR_IN
) {
5827 ndr_print_struct(ndr
, "in", "svcctl_GetServiceDisplayNameA");
5829 ndr_print_ptr(ndr
, "handle", r
->in
.handle
);
5831 ndr_print_policy_handle(ndr
, "handle", r
->in
.handle
);
5833 ndr_print_ptr(ndr
, "service_name", r
->in
.service_name
);
5835 if (r
->in
.service_name
) {
5836 ndr_print_string(ndr
, "service_name", r
->in
.service_name
);
5839 ndr_print_ptr(ndr
, "display_name_length", r
->in
.display_name_length
);
5841 if (r
->in
.display_name_length
) {
5842 ndr_print_uint32(ndr
, "display_name_length", *r
->in
.display_name_length
);
5847 if (flags
& NDR_OUT
) {
5848 ndr_print_struct(ndr
, "out", "svcctl_GetServiceDisplayNameA");
5850 ndr_print_ptr(ndr
, "display_name", r
->out
.display_name
);
5852 ndr_print_ptr(ndr
, "display_name", *r
->out
.display_name
);
5854 if (*r
->out
.display_name
) {
5855 ndr_print_string(ndr
, "display_name", *r
->out
.display_name
);
5859 ndr_print_ptr(ndr
, "display_name_length", r
->out
.display_name_length
);
5861 if (r
->out
.display_name_length
) {
5862 ndr_print_uint32(ndr
, "display_name_length", *r
->out
.display_name_length
);
5865 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
5871 static enum ndr_err_code
ndr_push_svcctl_GetServiceKeyNameA(struct ndr_push
*ndr
, int flags
, const struct svcctl_GetServiceKeyNameA
*r
)
5873 if (flags
& NDR_IN
) {
5874 if (r
->in
.handle
== NULL
) {
5875 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
5877 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
, r
->in
.handle
));
5878 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.service_name
));
5879 if (r
->in
.service_name
) {
5880 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.service_name
, CH_UTF16
)));
5881 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, 0));
5882 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.service_name
, CH_UTF16
)));
5883 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
));
5885 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.display_name_length
));
5886 if (r
->in
.display_name_length
) {
5887 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, *r
->in
.display_name_length
));
5890 if (flags
& NDR_OUT
) {
5891 if (r
->out
.key_name
== NULL
) {
5892 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
5894 NDR_CHECK(ndr_push_unique_ptr(ndr
, *r
->out
.key_name
));
5895 if (*r
->out
.key_name
) {
5896 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, ndr_charset_length(*r
->out
.key_name
, CH_UTF16
)));
5897 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, 0));
5898 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, ndr_charset_length(*r
->out
.key_name
, CH_UTF16
)));
5899 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
));
5901 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->out
.display_name_length
));
5902 if (r
->out
.display_name_length
) {
5903 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, *r
->out
.display_name_length
));
5905 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
5907 return NDR_ERR_SUCCESS
;
5910 static enum ndr_err_code
ndr_pull_svcctl_GetServiceKeyNameA(struct ndr_pull
*ndr
, int flags
, struct svcctl_GetServiceKeyNameA
*r
)
5912 uint32_t _ptr_service_name
;
5913 uint32_t size_service_name_1
= 0;
5914 uint32_t length_service_name_1
= 0;
5915 uint32_t _ptr_key_name
;
5916 uint32_t size_key_name_2
= 0;
5917 uint32_t length_key_name_2
= 0;
5918 uint32_t _ptr_display_name_length
;
5919 TALLOC_CTX
*_mem_save_handle_0
;
5920 TALLOC_CTX
*_mem_save_service_name_0
;
5921 TALLOC_CTX
*_mem_save_key_name_0
;
5922 TALLOC_CTX
*_mem_save_key_name_1
;
5923 TALLOC_CTX
*_mem_save_display_name_length_0
;
5924 if (flags
& NDR_IN
) {
5925 ZERO_STRUCT(r
->out
);
5927 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
5928 NDR_PULL_ALLOC(ndr
, r
->in
.handle
);
5930 _mem_save_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
5931 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.handle
, LIBNDR_FLAG_REF_ALLOC
);
5932 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
, r
->in
.handle
));
5933 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_handle_0
, LIBNDR_FLAG_REF_ALLOC
);
5934 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_service_name
));
5935 if (_ptr_service_name
) {
5936 NDR_PULL_ALLOC(ndr
, r
->in
.service_name
);
5938 r
->in
.service_name
= NULL
;
5940 if (r
->in
.service_name
) {
5941 _mem_save_service_name_0
= NDR_PULL_GET_MEM_CTX(ndr
);
5942 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.service_name
, 0);
5943 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->in
.service_name
));
5944 NDR_CHECK(ndr_pull_array_length(ndr
, &r
->in
.service_name
));
5945 size_service_name_1
= ndr_get_array_size(ndr
, &r
->in
.service_name
);
5946 length_service_name_1
= ndr_get_array_length(ndr
, &r
->in
.service_name
);
5947 if (length_service_name_1
> size_service_name_1
) {
5948 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
);
5950 NDR_CHECK(ndr_check_string_terminator(ndr
, length_service_name_1
, sizeof(uint16_t)));
5951 NDR_CHECK(ndr_pull_charset(ndr
, NDR_SCALARS
, &r
->in
.service_name
, length_service_name_1
, sizeof(uint16_t), CH_UTF16
));
5952 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_service_name_0
, 0);
5954 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_display_name_length
));
5955 if (_ptr_display_name_length
) {
5956 NDR_PULL_ALLOC(ndr
, r
->in
.display_name_length
);
5958 r
->in
.display_name_length
= NULL
;
5960 if (r
->in
.display_name_length
) {
5961 _mem_save_display_name_length_0
= NDR_PULL_GET_MEM_CTX(ndr
);
5962 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.display_name_length
, 0);
5963 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, r
->in
.display_name_length
));
5964 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_display_name_length_0
, 0);
5966 NDR_PULL_ALLOC(ndr
, r
->out
.key_name
);
5967 ZERO_STRUCTP(r
->out
.key_name
);
5969 if (flags
& NDR_OUT
) {
5970 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
5971 NDR_PULL_ALLOC(ndr
, r
->out
.key_name
);
5973 _mem_save_key_name_0
= NDR_PULL_GET_MEM_CTX(ndr
);
5974 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.key_name
, LIBNDR_FLAG_REF_ALLOC
);
5975 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_key_name
));
5976 if (_ptr_key_name
) {
5977 NDR_PULL_ALLOC(ndr
, *r
->out
.key_name
);
5979 *r
->out
.key_name
= NULL
;
5981 if (*r
->out
.key_name
) {
5982 _mem_save_key_name_1
= NDR_PULL_GET_MEM_CTX(ndr
);
5983 NDR_PULL_SET_MEM_CTX(ndr
, *r
->out
.key_name
, 0);
5984 NDR_CHECK(ndr_pull_array_size(ndr
, r
->out
.key_name
));
5985 NDR_CHECK(ndr_pull_array_length(ndr
, r
->out
.key_name
));
5986 size_key_name_2
= ndr_get_array_size(ndr
, r
->out
.key_name
);
5987 length_key_name_2
= ndr_get_array_length(ndr
, r
->out
.key_name
);
5988 if (length_key_name_2
> size_key_name_2
) {
5989 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
);
5991 NDR_CHECK(ndr_check_string_terminator(ndr
, length_key_name_2
, sizeof(uint16_t)));
5992 NDR_CHECK(ndr_pull_charset(ndr
, NDR_SCALARS
, r
->out
.key_name
, length_key_name_2
, sizeof(uint16_t), CH_UTF16
));
5993 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_key_name_1
, 0);
5995 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_key_name_0
, LIBNDR_FLAG_REF_ALLOC
);
5996 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_display_name_length
));
5997 if (_ptr_display_name_length
) {
5998 NDR_PULL_ALLOC(ndr
, r
->out
.display_name_length
);
6000 r
->out
.display_name_length
= NULL
;
6002 if (r
->out
.display_name_length
) {
6003 _mem_save_display_name_length_0
= NDR_PULL_GET_MEM_CTX(ndr
);
6004 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.display_name_length
, 0);
6005 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, r
->out
.display_name_length
));
6006 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_display_name_length_0
, 0);
6008 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
6010 return NDR_ERR_SUCCESS
;
6013 _PUBLIC_
void ndr_print_svcctl_GetServiceKeyNameA(struct ndr_print
*ndr
, const char *name
, int flags
, const struct svcctl_GetServiceKeyNameA
*r
)
6015 ndr_print_struct(ndr
, name
, "svcctl_GetServiceKeyNameA");
6017 if (flags
& NDR_SET_VALUES
) {
6018 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
6020 if (flags
& NDR_IN
) {
6021 ndr_print_struct(ndr
, "in", "svcctl_GetServiceKeyNameA");
6023 ndr_print_ptr(ndr
, "handle", r
->in
.handle
);
6025 ndr_print_policy_handle(ndr
, "handle", r
->in
.handle
);
6027 ndr_print_ptr(ndr
, "service_name", r
->in
.service_name
);
6029 if (r
->in
.service_name
) {
6030 ndr_print_string(ndr
, "service_name", r
->in
.service_name
);
6033 ndr_print_ptr(ndr
, "display_name_length", r
->in
.display_name_length
);
6035 if (r
->in
.display_name_length
) {
6036 ndr_print_uint32(ndr
, "display_name_length", *r
->in
.display_name_length
);
6041 if (flags
& NDR_OUT
) {
6042 ndr_print_struct(ndr
, "out", "svcctl_GetServiceKeyNameA");
6044 ndr_print_ptr(ndr
, "key_name", r
->out
.key_name
);
6046 ndr_print_ptr(ndr
, "key_name", *r
->out
.key_name
);
6048 if (*r
->out
.key_name
) {
6049 ndr_print_string(ndr
, "key_name", *r
->out
.key_name
);
6053 ndr_print_ptr(ndr
, "display_name_length", r
->out
.display_name_length
);
6055 if (r
->out
.display_name_length
) {
6056 ndr_print_uint32(ndr
, "display_name_length", *r
->out
.display_name_length
);
6059 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
6065 static enum ndr_err_code
ndr_push_svcctl_GetCurrentGroupeStateW(struct ndr_push
*ndr
, int flags
, const struct svcctl_GetCurrentGroupeStateW
*r
)
6067 if (flags
& NDR_IN
) {
6069 if (flags
& NDR_OUT
) {
6070 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
6072 return NDR_ERR_SUCCESS
;
6075 static enum ndr_err_code
ndr_pull_svcctl_GetCurrentGroupeStateW(struct ndr_pull
*ndr
, int flags
, struct svcctl_GetCurrentGroupeStateW
*r
)
6077 if (flags
& NDR_IN
) {
6079 if (flags
& NDR_OUT
) {
6080 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
6082 return NDR_ERR_SUCCESS
;
6085 _PUBLIC_
void ndr_print_svcctl_GetCurrentGroupeStateW(struct ndr_print
*ndr
, const char *name
, int flags
, const struct svcctl_GetCurrentGroupeStateW
*r
)
6087 ndr_print_struct(ndr
, name
, "svcctl_GetCurrentGroupeStateW");
6089 if (flags
& NDR_SET_VALUES
) {
6090 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
6092 if (flags
& NDR_IN
) {
6093 ndr_print_struct(ndr
, "in", "svcctl_GetCurrentGroupeStateW");
6097 if (flags
& NDR_OUT
) {
6098 ndr_print_struct(ndr
, "out", "svcctl_GetCurrentGroupeStateW");
6100 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
6106 static enum ndr_err_code
ndr_push_svcctl_EnumServiceGroupW(struct ndr_push
*ndr
, int flags
, const struct svcctl_EnumServiceGroupW
*r
)
6108 if (flags
& NDR_IN
) {
6110 if (flags
& NDR_OUT
) {
6111 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
6113 return NDR_ERR_SUCCESS
;
6116 static enum ndr_err_code
ndr_pull_svcctl_EnumServiceGroupW(struct ndr_pull
*ndr
, int flags
, struct svcctl_EnumServiceGroupW
*r
)
6118 if (flags
& NDR_IN
) {
6120 if (flags
& NDR_OUT
) {
6121 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
6123 return NDR_ERR_SUCCESS
;
6126 _PUBLIC_
void ndr_print_svcctl_EnumServiceGroupW(struct ndr_print
*ndr
, const char *name
, int flags
, const struct svcctl_EnumServiceGroupW
*r
)
6128 ndr_print_struct(ndr
, name
, "svcctl_EnumServiceGroupW");
6130 if (flags
& NDR_SET_VALUES
) {
6131 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
6133 if (flags
& NDR_IN
) {
6134 ndr_print_struct(ndr
, "in", "svcctl_EnumServiceGroupW");
6138 if (flags
& NDR_OUT
) {
6139 ndr_print_struct(ndr
, "out", "svcctl_EnumServiceGroupW");
6141 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
6147 static enum ndr_err_code
ndr_push_svcctl_ChangeServiceConfig2A(struct ndr_push
*ndr
, int flags
, const struct svcctl_ChangeServiceConfig2A
*r
)
6149 if (flags
& NDR_IN
) {
6150 if (r
->in
.handle
== NULL
) {
6151 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
6153 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
, r
->in
.handle
));
6154 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.info_level
));
6155 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.info
));
6157 NDR_CHECK(ndr_push_uint8(ndr
, NDR_SCALARS
, *r
->in
.info
));
6160 if (flags
& NDR_OUT
) {
6161 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
6163 return NDR_ERR_SUCCESS
;
6166 static enum ndr_err_code
ndr_pull_svcctl_ChangeServiceConfig2A(struct ndr_pull
*ndr
, int flags
, struct svcctl_ChangeServiceConfig2A
*r
)
6169 TALLOC_CTX
*_mem_save_handle_0
;
6170 TALLOC_CTX
*_mem_save_info_0
;
6171 if (flags
& NDR_IN
) {
6172 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
6173 NDR_PULL_ALLOC(ndr
, r
->in
.handle
);
6175 _mem_save_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
6176 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.handle
, LIBNDR_FLAG_REF_ALLOC
);
6177 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
, r
->in
.handle
));
6178 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_handle_0
, LIBNDR_FLAG_REF_ALLOC
);
6179 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.info_level
));
6180 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_info
));
6182 NDR_PULL_ALLOC(ndr
, r
->in
.info
);
6187 _mem_save_info_0
= NDR_PULL_GET_MEM_CTX(ndr
);
6188 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.info
, 0);
6189 NDR_CHECK(ndr_pull_uint8(ndr
, NDR_SCALARS
, r
->in
.info
));
6190 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_info_0
, 0);
6193 if (flags
& NDR_OUT
) {
6194 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
6196 return NDR_ERR_SUCCESS
;
6199 _PUBLIC_
void ndr_print_svcctl_ChangeServiceConfig2A(struct ndr_print
*ndr
, const char *name
, int flags
, const struct svcctl_ChangeServiceConfig2A
*r
)
6201 ndr_print_struct(ndr
, name
, "svcctl_ChangeServiceConfig2A");
6203 if (flags
& NDR_SET_VALUES
) {
6204 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
6206 if (flags
& NDR_IN
) {
6207 ndr_print_struct(ndr
, "in", "svcctl_ChangeServiceConfig2A");
6209 ndr_print_ptr(ndr
, "handle", r
->in
.handle
);
6211 ndr_print_policy_handle(ndr
, "handle", r
->in
.handle
);
6213 ndr_print_uint32(ndr
, "info_level", r
->in
.info_level
);
6214 ndr_print_ptr(ndr
, "info", r
->in
.info
);
6217 ndr_print_uint8(ndr
, "info", *r
->in
.info
);
6222 if (flags
& NDR_OUT
) {
6223 ndr_print_struct(ndr
, "out", "svcctl_ChangeServiceConfig2A");
6225 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
6231 static enum ndr_err_code
ndr_push_svcctl_ChangeServiceConfig2W(struct ndr_push
*ndr
, int flags
, const struct svcctl_ChangeServiceConfig2W
*r
)
6233 if (flags
& NDR_IN
) {
6234 if (r
->in
.handle
== NULL
) {
6235 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
6237 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
, r
->in
.handle
));
6238 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.info_level
));
6239 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.info
));
6241 NDR_CHECK(ndr_push_uint8(ndr
, NDR_SCALARS
, *r
->in
.info
));
6244 if (flags
& NDR_OUT
) {
6245 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
6247 return NDR_ERR_SUCCESS
;
6250 static enum ndr_err_code
ndr_pull_svcctl_ChangeServiceConfig2W(struct ndr_pull
*ndr
, int flags
, struct svcctl_ChangeServiceConfig2W
*r
)
6253 TALLOC_CTX
*_mem_save_handle_0
;
6254 TALLOC_CTX
*_mem_save_info_0
;
6255 if (flags
& NDR_IN
) {
6256 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
6257 NDR_PULL_ALLOC(ndr
, r
->in
.handle
);
6259 _mem_save_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
6260 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.handle
, LIBNDR_FLAG_REF_ALLOC
);
6261 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
, r
->in
.handle
));
6262 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_handle_0
, LIBNDR_FLAG_REF_ALLOC
);
6263 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.info_level
));
6264 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_info
));
6266 NDR_PULL_ALLOC(ndr
, r
->in
.info
);
6271 _mem_save_info_0
= NDR_PULL_GET_MEM_CTX(ndr
);
6272 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.info
, 0);
6273 NDR_CHECK(ndr_pull_uint8(ndr
, NDR_SCALARS
, r
->in
.info
));
6274 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_info_0
, 0);
6277 if (flags
& NDR_OUT
) {
6278 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
6280 return NDR_ERR_SUCCESS
;
6283 _PUBLIC_
void ndr_print_svcctl_ChangeServiceConfig2W(struct ndr_print
*ndr
, const char *name
, int flags
, const struct svcctl_ChangeServiceConfig2W
*r
)
6285 ndr_print_struct(ndr
, name
, "svcctl_ChangeServiceConfig2W");
6287 if (flags
& NDR_SET_VALUES
) {
6288 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
6290 if (flags
& NDR_IN
) {
6291 ndr_print_struct(ndr
, "in", "svcctl_ChangeServiceConfig2W");
6293 ndr_print_ptr(ndr
, "handle", r
->in
.handle
);
6295 ndr_print_policy_handle(ndr
, "handle", r
->in
.handle
);
6297 ndr_print_uint32(ndr
, "info_level", r
->in
.info_level
);
6298 ndr_print_ptr(ndr
, "info", r
->in
.info
);
6301 ndr_print_uint8(ndr
, "info", *r
->in
.info
);
6306 if (flags
& NDR_OUT
) {
6307 ndr_print_struct(ndr
, "out", "svcctl_ChangeServiceConfig2W");
6309 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
6315 static enum ndr_err_code
ndr_push_svcctl_QueryServiceConfig2A(struct ndr_push
*ndr
, int flags
, const struct svcctl_QueryServiceConfig2A
*r
)
6317 if (flags
& NDR_IN
) {
6318 if (r
->in
.handle
== NULL
) {
6319 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
6321 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
, r
->in
.handle
));
6322 NDR_CHECK(ndr_push_svcctl_ConfigLevel(ndr
, NDR_SCALARS
, r
->in
.info_level
));
6323 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.offered
));
6325 if (flags
& NDR_OUT
) {
6326 NDR_CHECK(ndr_push_array_uint8(ndr
, NDR_SCALARS
, r
->out
.buffer
, r
->in
.offered
));
6327 if (r
->out
.needed
== NULL
) {
6328 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
6330 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, *r
->out
.needed
));
6331 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
6333 return NDR_ERR_SUCCESS
;
6336 static enum ndr_err_code
ndr_pull_svcctl_QueryServiceConfig2A(struct ndr_pull
*ndr
, int flags
, struct svcctl_QueryServiceConfig2A
*r
)
6338 uint32_t size_buffer_0
= 0;
6339 TALLOC_CTX
*_mem_save_handle_0
;
6340 TALLOC_CTX
*_mem_save_needed_0
;
6341 if (flags
& NDR_IN
) {
6342 ZERO_STRUCT(r
->out
);
6344 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
6345 NDR_PULL_ALLOC(ndr
, r
->in
.handle
);
6347 _mem_save_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
6348 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.handle
, LIBNDR_FLAG_REF_ALLOC
);
6349 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
, r
->in
.handle
));
6350 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_handle_0
, LIBNDR_FLAG_REF_ALLOC
);
6351 NDR_CHECK(ndr_pull_svcctl_ConfigLevel(ndr
, NDR_SCALARS
, &r
->in
.info_level
));
6352 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.offered
));
6353 NDR_PULL_ALLOC(ndr
, r
->out
.needed
);
6354 ZERO_STRUCTP(r
->out
.needed
);
6356 if (flags
& NDR_OUT
) {
6357 size_buffer_0
= r
->in
.offered
;
6358 NDR_PULL_ALLOC_N(ndr
, r
->out
.buffer
, size_buffer_0
);
6359 NDR_CHECK(ndr_pull_array_uint8(ndr
, NDR_SCALARS
, r
->out
.buffer
, size_buffer_0
));
6360 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
6361 NDR_PULL_ALLOC(ndr
, r
->out
.needed
);
6363 _mem_save_needed_0
= NDR_PULL_GET_MEM_CTX(ndr
);
6364 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.needed
, LIBNDR_FLAG_REF_ALLOC
);
6365 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, r
->out
.needed
));
6366 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_needed_0
, LIBNDR_FLAG_REF_ALLOC
);
6367 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
6369 return NDR_ERR_SUCCESS
;
6372 _PUBLIC_
void ndr_print_svcctl_QueryServiceConfig2A(struct ndr_print
*ndr
, const char *name
, int flags
, const struct svcctl_QueryServiceConfig2A
*r
)
6374 ndr_print_struct(ndr
, name
, "svcctl_QueryServiceConfig2A");
6376 if (flags
& NDR_SET_VALUES
) {
6377 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
6379 if (flags
& NDR_IN
) {
6380 ndr_print_struct(ndr
, "in", "svcctl_QueryServiceConfig2A");
6382 ndr_print_ptr(ndr
, "handle", r
->in
.handle
);
6384 ndr_print_policy_handle(ndr
, "handle", r
->in
.handle
);
6386 ndr_print_svcctl_ConfigLevel(ndr
, "info_level", r
->in
.info_level
);
6387 ndr_print_uint32(ndr
, "offered", r
->in
.offered
);
6390 if (flags
& NDR_OUT
) {
6391 ndr_print_struct(ndr
, "out", "svcctl_QueryServiceConfig2A");
6393 ndr_print_array_uint8(ndr
, "buffer", r
->out
.buffer
, r
->in
.offered
);
6394 ndr_print_ptr(ndr
, "needed", r
->out
.needed
);
6396 ndr_print_uint32(ndr
, "needed", *r
->out
.needed
);
6398 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
6404 static enum ndr_err_code
ndr_push_svcctl_QueryServiceConfig2W(struct ndr_push
*ndr
, int flags
, const struct svcctl_QueryServiceConfig2W
*r
)
6406 if (flags
& NDR_IN
) {
6407 if (r
->in
.handle
== NULL
) {
6408 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
6410 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
, r
->in
.handle
));
6411 NDR_CHECK(ndr_push_svcctl_ConfigLevel(ndr
, NDR_SCALARS
, r
->in
.info_level
));
6412 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.offered
));
6414 if (flags
& NDR_OUT
) {
6415 if (r
->out
.buffer
== NULL
) {
6416 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
6418 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, r
->in
.offered
));
6419 NDR_CHECK(ndr_push_array_uint8(ndr
, NDR_SCALARS
, r
->out
.buffer
, r
->in
.offered
));
6420 if (r
->out
.needed
== NULL
) {
6421 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
6423 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, *r
->out
.needed
));
6424 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
6426 return NDR_ERR_SUCCESS
;
6429 static enum ndr_err_code
ndr_pull_svcctl_QueryServiceConfig2W(struct ndr_pull
*ndr
, int flags
, struct svcctl_QueryServiceConfig2W
*r
)
6431 uint32_t size_buffer_1
= 0;
6432 TALLOC_CTX
*_mem_save_handle_0
;
6433 TALLOC_CTX
*_mem_save_needed_0
;
6434 if (flags
& NDR_IN
) {
6435 ZERO_STRUCT(r
->out
);
6437 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
6438 NDR_PULL_ALLOC(ndr
, r
->in
.handle
);
6440 _mem_save_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
6441 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.handle
, LIBNDR_FLAG_REF_ALLOC
);
6442 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
, r
->in
.handle
));
6443 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_handle_0
, LIBNDR_FLAG_REF_ALLOC
);
6444 NDR_CHECK(ndr_pull_svcctl_ConfigLevel(ndr
, NDR_SCALARS
, &r
->in
.info_level
));
6445 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.offered
));
6446 if (r
->in
.offered
> 8192) {
6447 return ndr_pull_error(ndr
, NDR_ERR_RANGE
, "value out of range");
6449 NDR_PULL_ALLOC_N(ndr
, r
->out
.buffer
, r
->in
.offered
);
6450 memset(r
->out
.buffer
, 0, (r
->in
.offered
) * sizeof(*r
->out
.buffer
));
6451 NDR_PULL_ALLOC(ndr
, r
->out
.needed
);
6452 ZERO_STRUCTP(r
->out
.needed
);
6454 if (flags
& NDR_OUT
) {
6455 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->out
.buffer
));
6456 size_buffer_1
= ndr_get_array_size(ndr
, &r
->out
.buffer
);
6457 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
6458 NDR_PULL_ALLOC_N(ndr
, r
->out
.buffer
, size_buffer_1
);
6460 NDR_CHECK(ndr_pull_array_uint8(ndr
, NDR_SCALARS
, r
->out
.buffer
, size_buffer_1
));
6461 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
6462 NDR_PULL_ALLOC(ndr
, r
->out
.needed
);
6464 _mem_save_needed_0
= NDR_PULL_GET_MEM_CTX(ndr
);
6465 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.needed
, LIBNDR_FLAG_REF_ALLOC
);
6466 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, r
->out
.needed
));
6467 if (*r
->out
.needed
> 8192) {
6468 return ndr_pull_error(ndr
, NDR_ERR_RANGE
, "value out of range");
6470 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_needed_0
, LIBNDR_FLAG_REF_ALLOC
);
6471 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
6472 if (r
->out
.buffer
) {
6473 NDR_CHECK(ndr_check_array_size(ndr
, (void*)&r
->out
.buffer
, r
->in
.offered
));
6476 return NDR_ERR_SUCCESS
;
6479 _PUBLIC_
void ndr_print_svcctl_QueryServiceConfig2W(struct ndr_print
*ndr
, const char *name
, int flags
, const struct svcctl_QueryServiceConfig2W
*r
)
6481 ndr_print_struct(ndr
, name
, "svcctl_QueryServiceConfig2W");
6483 if (flags
& NDR_SET_VALUES
) {
6484 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
6486 if (flags
& NDR_IN
) {
6487 ndr_print_struct(ndr
, "in", "svcctl_QueryServiceConfig2W");
6489 ndr_print_ptr(ndr
, "handle", r
->in
.handle
);
6491 ndr_print_policy_handle(ndr
, "handle", r
->in
.handle
);
6493 ndr_print_svcctl_ConfigLevel(ndr
, "info_level", r
->in
.info_level
);
6494 ndr_print_uint32(ndr
, "offered", r
->in
.offered
);
6497 if (flags
& NDR_OUT
) {
6498 ndr_print_struct(ndr
, "out", "svcctl_QueryServiceConfig2W");
6500 ndr_print_ptr(ndr
, "buffer", r
->out
.buffer
);
6502 ndr_print_array_uint8(ndr
, "buffer", r
->out
.buffer
, r
->in
.offered
);
6504 ndr_print_ptr(ndr
, "needed", r
->out
.needed
);
6506 ndr_print_uint32(ndr
, "needed", *r
->out
.needed
);
6508 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
6514 static enum ndr_err_code
ndr_push_svcctl_QueryServiceStatusEx(struct ndr_push
*ndr
, int flags
, const struct svcctl_QueryServiceStatusEx
*r
)
6516 if (flags
& NDR_IN
) {
6517 if (r
->in
.handle
== NULL
) {
6518 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
6520 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
, r
->in
.handle
));
6521 NDR_CHECK(ndr_push_svcctl_StatusLevel(ndr
, NDR_SCALARS
, r
->in
.info_level
));
6522 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.offered
));
6524 if (flags
& NDR_OUT
) {
6525 if (r
->out
.buffer
== NULL
) {
6526 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
6528 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, r
->in
.offered
));
6529 NDR_CHECK(ndr_push_array_uint8(ndr
, NDR_SCALARS
, r
->out
.buffer
, r
->in
.offered
));
6530 if (r
->out
.needed
== NULL
) {
6531 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
6533 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, *r
->out
.needed
));
6534 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
6536 return NDR_ERR_SUCCESS
;
6539 static enum ndr_err_code
ndr_pull_svcctl_QueryServiceStatusEx(struct ndr_pull
*ndr
, int flags
, struct svcctl_QueryServiceStatusEx
*r
)
6541 uint32_t size_buffer_1
= 0;
6542 TALLOC_CTX
*_mem_save_handle_0
;
6543 TALLOC_CTX
*_mem_save_needed_0
;
6544 if (flags
& NDR_IN
) {
6545 ZERO_STRUCT(r
->out
);
6547 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
6548 NDR_PULL_ALLOC(ndr
, r
->in
.handle
);
6550 _mem_save_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
6551 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.handle
, LIBNDR_FLAG_REF_ALLOC
);
6552 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
, r
->in
.handle
));
6553 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_handle_0
, LIBNDR_FLAG_REF_ALLOC
);
6554 NDR_CHECK(ndr_pull_svcctl_StatusLevel(ndr
, NDR_SCALARS
, &r
->in
.info_level
));
6555 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.offered
));
6556 if (r
->in
.offered
> 8192) {
6557 return ndr_pull_error(ndr
, NDR_ERR_RANGE
, "value out of range");
6559 NDR_PULL_ALLOC_N(ndr
, r
->out
.buffer
, r
->in
.offered
);
6560 memset(r
->out
.buffer
, 0, (r
->in
.offered
) * sizeof(*r
->out
.buffer
));
6561 NDR_PULL_ALLOC(ndr
, r
->out
.needed
);
6562 ZERO_STRUCTP(r
->out
.needed
);
6564 if (flags
& NDR_OUT
) {
6565 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->out
.buffer
));
6566 size_buffer_1
= ndr_get_array_size(ndr
, &r
->out
.buffer
);
6567 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
6568 NDR_PULL_ALLOC_N(ndr
, r
->out
.buffer
, size_buffer_1
);
6570 NDR_CHECK(ndr_pull_array_uint8(ndr
, NDR_SCALARS
, r
->out
.buffer
, size_buffer_1
));
6571 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
6572 NDR_PULL_ALLOC(ndr
, r
->out
.needed
);
6574 _mem_save_needed_0
= NDR_PULL_GET_MEM_CTX(ndr
);
6575 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.needed
, LIBNDR_FLAG_REF_ALLOC
);
6576 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, r
->out
.needed
));
6577 if (*r
->out
.needed
> 8192) {
6578 return ndr_pull_error(ndr
, NDR_ERR_RANGE
, "value out of range");
6580 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_needed_0
, LIBNDR_FLAG_REF_ALLOC
);
6581 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
6582 if (r
->out
.buffer
) {
6583 NDR_CHECK(ndr_check_array_size(ndr
, (void*)&r
->out
.buffer
, r
->in
.offered
));
6586 return NDR_ERR_SUCCESS
;
6589 _PUBLIC_
void ndr_print_svcctl_QueryServiceStatusEx(struct ndr_print
*ndr
, const char *name
, int flags
, const struct svcctl_QueryServiceStatusEx
*r
)
6591 ndr_print_struct(ndr
, name
, "svcctl_QueryServiceStatusEx");
6593 if (flags
& NDR_SET_VALUES
) {
6594 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
6596 if (flags
& NDR_IN
) {
6597 ndr_print_struct(ndr
, "in", "svcctl_QueryServiceStatusEx");
6599 ndr_print_ptr(ndr
, "handle", r
->in
.handle
);
6601 ndr_print_policy_handle(ndr
, "handle", r
->in
.handle
);
6603 ndr_print_svcctl_StatusLevel(ndr
, "info_level", r
->in
.info_level
);
6604 ndr_print_uint32(ndr
, "offered", r
->in
.offered
);
6607 if (flags
& NDR_OUT
) {
6608 ndr_print_struct(ndr
, "out", "svcctl_QueryServiceStatusEx");
6610 ndr_print_ptr(ndr
, "buffer", r
->out
.buffer
);
6612 ndr_print_array_uint8(ndr
, "buffer", r
->out
.buffer
, r
->in
.offered
);
6614 ndr_print_ptr(ndr
, "needed", r
->out
.needed
);
6616 ndr_print_uint32(ndr
, "needed", *r
->out
.needed
);
6618 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
6624 static enum ndr_err_code
ndr_push_EnumServicesStatusExA(struct ndr_push
*ndr
, int flags
, const struct EnumServicesStatusExA
*r
)
6626 if (flags
& NDR_IN
) {
6627 if (r
->in
.scmanager
== NULL
) {
6628 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
6630 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
, r
->in
.scmanager
));
6631 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.info_level
));
6632 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.type
));
6633 NDR_CHECK(ndr_push_svcctl_ServiceState(ndr
, NDR_SCALARS
, r
->in
.state
));
6634 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.offered
));
6635 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.resume_handle
));
6636 if (r
->in
.resume_handle
) {
6637 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, *r
->in
.resume_handle
));
6640 if (flags
& NDR_OUT
) {
6641 NDR_CHECK(ndr_push_array_uint8(ndr
, NDR_SCALARS
, r
->out
.services
, r
->in
.offered
));
6642 if (r
->out
.needed
== NULL
) {
6643 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
6645 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, *r
->out
.needed
));
6646 if (r
->out
.service_returned
== NULL
) {
6647 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
6649 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, *r
->out
.service_returned
));
6650 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->out
.resume_handle
));
6651 if (r
->out
.resume_handle
) {
6652 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, *r
->out
.resume_handle
));
6654 if (r
->out
.group_name
== NULL
) {
6655 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
6657 NDR_CHECK(ndr_push_unique_ptr(ndr
, *r
->out
.group_name
));
6658 if (*r
->out
.group_name
) {
6659 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, ndr_charset_length(*r
->out
.group_name
, CH_UTF16
)));
6660 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, 0));
6661 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, ndr_charset_length(*r
->out
.group_name
, CH_UTF16
)));
6662 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
));
6664 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
6666 return NDR_ERR_SUCCESS
;
6669 static enum ndr_err_code
ndr_pull_EnumServicesStatusExA(struct ndr_pull
*ndr
, int flags
, struct EnumServicesStatusExA
*r
)
6671 uint32_t size_services_0
= 0;
6672 uint32_t _ptr_resume_handle
;
6673 uint32_t _ptr_group_name
;
6674 uint32_t size_group_name_2
= 0;
6675 uint32_t length_group_name_2
= 0;
6676 TALLOC_CTX
*_mem_save_scmanager_0
;
6677 TALLOC_CTX
*_mem_save_needed_0
;
6678 TALLOC_CTX
*_mem_save_service_returned_0
;
6679 TALLOC_CTX
*_mem_save_resume_handle_0
;
6680 TALLOC_CTX
*_mem_save_group_name_0
;
6681 TALLOC_CTX
*_mem_save_group_name_1
;
6682 if (flags
& NDR_IN
) {
6683 ZERO_STRUCT(r
->out
);
6685 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
6686 NDR_PULL_ALLOC(ndr
, r
->in
.scmanager
);
6688 _mem_save_scmanager_0
= NDR_PULL_GET_MEM_CTX(ndr
);
6689 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.scmanager
, LIBNDR_FLAG_REF_ALLOC
);
6690 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
, r
->in
.scmanager
));
6691 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_scmanager_0
, LIBNDR_FLAG_REF_ALLOC
);
6692 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.info_level
));
6693 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.type
));
6694 NDR_CHECK(ndr_pull_svcctl_ServiceState(ndr
, NDR_SCALARS
, &r
->in
.state
));
6695 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.offered
));
6696 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_resume_handle
));
6697 if (_ptr_resume_handle
) {
6698 NDR_PULL_ALLOC(ndr
, r
->in
.resume_handle
);
6700 r
->in
.resume_handle
= NULL
;
6702 if (r
->in
.resume_handle
) {
6703 _mem_save_resume_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
6704 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.resume_handle
, 0);
6705 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, r
->in
.resume_handle
));
6706 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_resume_handle_0
, 0);
6708 NDR_PULL_ALLOC(ndr
, r
->out
.needed
);
6709 ZERO_STRUCTP(r
->out
.needed
);
6710 NDR_PULL_ALLOC(ndr
, r
->out
.service_returned
);
6711 ZERO_STRUCTP(r
->out
.service_returned
);
6712 NDR_PULL_ALLOC(ndr
, r
->out
.group_name
);
6713 ZERO_STRUCTP(r
->out
.group_name
);
6715 if (flags
& NDR_OUT
) {
6716 size_services_0
= r
->in
.offered
;
6717 NDR_PULL_ALLOC_N(ndr
, r
->out
.services
, size_services_0
);
6718 NDR_CHECK(ndr_pull_array_uint8(ndr
, NDR_SCALARS
, r
->out
.services
, size_services_0
));
6719 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
6720 NDR_PULL_ALLOC(ndr
, r
->out
.needed
);
6722 _mem_save_needed_0
= NDR_PULL_GET_MEM_CTX(ndr
);
6723 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.needed
, LIBNDR_FLAG_REF_ALLOC
);
6724 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, r
->out
.needed
));
6725 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_needed_0
, LIBNDR_FLAG_REF_ALLOC
);
6726 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
6727 NDR_PULL_ALLOC(ndr
, r
->out
.service_returned
);
6729 _mem_save_service_returned_0
= NDR_PULL_GET_MEM_CTX(ndr
);
6730 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.service_returned
, LIBNDR_FLAG_REF_ALLOC
);
6731 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, r
->out
.service_returned
));
6732 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_service_returned_0
, LIBNDR_FLAG_REF_ALLOC
);
6733 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_resume_handle
));
6734 if (_ptr_resume_handle
) {
6735 NDR_PULL_ALLOC(ndr
, r
->out
.resume_handle
);
6737 r
->out
.resume_handle
= NULL
;
6739 if (r
->out
.resume_handle
) {
6740 _mem_save_resume_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
6741 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.resume_handle
, 0);
6742 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, r
->out
.resume_handle
));
6743 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_resume_handle_0
, 0);
6745 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
6746 NDR_PULL_ALLOC(ndr
, r
->out
.group_name
);
6748 _mem_save_group_name_0
= NDR_PULL_GET_MEM_CTX(ndr
);
6749 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.group_name
, LIBNDR_FLAG_REF_ALLOC
);
6750 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_group_name
));
6751 if (_ptr_group_name
) {
6752 NDR_PULL_ALLOC(ndr
, *r
->out
.group_name
);
6754 *r
->out
.group_name
= NULL
;
6756 if (*r
->out
.group_name
) {
6757 _mem_save_group_name_1
= NDR_PULL_GET_MEM_CTX(ndr
);
6758 NDR_PULL_SET_MEM_CTX(ndr
, *r
->out
.group_name
, 0);
6759 NDR_CHECK(ndr_pull_array_size(ndr
, r
->out
.group_name
));
6760 NDR_CHECK(ndr_pull_array_length(ndr
, r
->out
.group_name
));
6761 size_group_name_2
= ndr_get_array_size(ndr
, r
->out
.group_name
);
6762 length_group_name_2
= ndr_get_array_length(ndr
, r
->out
.group_name
);
6763 if (length_group_name_2
> size_group_name_2
) {
6764 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
);
6766 NDR_CHECK(ndr_check_string_terminator(ndr
, length_group_name_2
, sizeof(uint16_t)));
6767 NDR_CHECK(ndr_pull_charset(ndr
, NDR_SCALARS
, r
->out
.group_name
, length_group_name_2
, sizeof(uint16_t), CH_UTF16
));
6768 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_group_name_1
, 0);
6770 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_group_name_0
, LIBNDR_FLAG_REF_ALLOC
);
6771 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
6773 return NDR_ERR_SUCCESS
;
6776 _PUBLIC_
void ndr_print_EnumServicesStatusExA(struct ndr_print
*ndr
, const char *name
, int flags
, const struct EnumServicesStatusExA
*r
)
6778 ndr_print_struct(ndr
, name
, "EnumServicesStatusExA");
6780 if (flags
& NDR_SET_VALUES
) {
6781 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
6783 if (flags
& NDR_IN
) {
6784 ndr_print_struct(ndr
, "in", "EnumServicesStatusExA");
6786 ndr_print_ptr(ndr
, "scmanager", r
->in
.scmanager
);
6788 ndr_print_policy_handle(ndr
, "scmanager", r
->in
.scmanager
);
6790 ndr_print_uint32(ndr
, "info_level", r
->in
.info_level
);
6791 ndr_print_uint32(ndr
, "type", r
->in
.type
);
6792 ndr_print_svcctl_ServiceState(ndr
, "state", r
->in
.state
);
6793 ndr_print_uint32(ndr
, "offered", r
->in
.offered
);
6794 ndr_print_ptr(ndr
, "resume_handle", r
->in
.resume_handle
);
6796 if (r
->in
.resume_handle
) {
6797 ndr_print_uint32(ndr
, "resume_handle", *r
->in
.resume_handle
);
6802 if (flags
& NDR_OUT
) {
6803 ndr_print_struct(ndr
, "out", "EnumServicesStatusExA");
6805 ndr_print_array_uint8(ndr
, "services", r
->out
.services
, r
->in
.offered
);
6806 ndr_print_ptr(ndr
, "needed", r
->out
.needed
);
6808 ndr_print_uint32(ndr
, "needed", *r
->out
.needed
);
6810 ndr_print_ptr(ndr
, "service_returned", r
->out
.service_returned
);
6812 ndr_print_uint32(ndr
, "service_returned", *r
->out
.service_returned
);
6814 ndr_print_ptr(ndr
, "resume_handle", r
->out
.resume_handle
);
6816 if (r
->out
.resume_handle
) {
6817 ndr_print_uint32(ndr
, "resume_handle", *r
->out
.resume_handle
);
6820 ndr_print_ptr(ndr
, "group_name", r
->out
.group_name
);
6822 ndr_print_ptr(ndr
, "group_name", *r
->out
.group_name
);
6824 if (*r
->out
.group_name
) {
6825 ndr_print_string(ndr
, "group_name", *r
->out
.group_name
);
6829 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
6835 static enum ndr_err_code
ndr_push_EnumServicesStatusExW(struct ndr_push
*ndr
, int flags
, const struct EnumServicesStatusExW
*r
)
6837 if (flags
& NDR_IN
) {
6838 if (r
->in
.scmanager
== NULL
) {
6839 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
6841 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
, r
->in
.scmanager
));
6842 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.info_level
));
6843 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.type
));
6844 NDR_CHECK(ndr_push_svcctl_ServiceState(ndr
, NDR_SCALARS
, r
->in
.state
));
6845 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.offered
));
6846 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.resume_handle
));
6847 if (r
->in
.resume_handle
) {
6848 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, *r
->in
.resume_handle
));
6850 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.group_name
));
6851 if (r
->in
.group_name
) {
6852 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.group_name
, CH_UTF16
)));
6853 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, 0));
6854 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.group_name
, CH_UTF16
)));
6855 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
));
6858 if (flags
& NDR_OUT
) {
6859 if (r
->out
.services
== NULL
) {
6860 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
6862 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, r
->in
.offered
));
6863 NDR_CHECK(ndr_push_array_uint8(ndr
, NDR_SCALARS
, r
->out
.services
, r
->in
.offered
));
6864 if (r
->out
.needed
== NULL
) {
6865 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
6867 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, *r
->out
.needed
));
6868 if (r
->out
.service_returned
== NULL
) {
6869 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
6871 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, *r
->out
.service_returned
));
6872 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->out
.resume_handle
));
6873 if (r
->out
.resume_handle
) {
6874 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, *r
->out
.resume_handle
));
6876 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
6878 return NDR_ERR_SUCCESS
;
6881 static enum ndr_err_code
ndr_pull_EnumServicesStatusExW(struct ndr_pull
*ndr
, int flags
, struct EnumServicesStatusExW
*r
)
6883 uint32_t size_services_1
= 0;
6884 uint32_t _ptr_resume_handle
;
6885 uint32_t _ptr_group_name
;
6886 uint32_t size_group_name_1
= 0;
6887 uint32_t length_group_name_1
= 0;
6888 TALLOC_CTX
*_mem_save_scmanager_0
;
6889 TALLOC_CTX
*_mem_save_needed_0
;
6890 TALLOC_CTX
*_mem_save_service_returned_0
;
6891 TALLOC_CTX
*_mem_save_resume_handle_0
;
6892 TALLOC_CTX
*_mem_save_group_name_0
;
6893 if (flags
& NDR_IN
) {
6894 ZERO_STRUCT(r
->out
);
6896 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
6897 NDR_PULL_ALLOC(ndr
, r
->in
.scmanager
);
6899 _mem_save_scmanager_0
= NDR_PULL_GET_MEM_CTX(ndr
);
6900 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.scmanager
, LIBNDR_FLAG_REF_ALLOC
);
6901 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
, r
->in
.scmanager
));
6902 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_scmanager_0
, LIBNDR_FLAG_REF_ALLOC
);
6903 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.info_level
));
6904 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.type
));
6905 NDR_CHECK(ndr_pull_svcctl_ServiceState(ndr
, NDR_SCALARS
, &r
->in
.state
));
6906 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.offered
));
6907 if (r
->in
.offered
> 0x40000) {
6908 return ndr_pull_error(ndr
, NDR_ERR_RANGE
, "value out of range");
6910 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_resume_handle
));
6911 if (_ptr_resume_handle
) {
6912 NDR_PULL_ALLOC(ndr
, r
->in
.resume_handle
);
6914 r
->in
.resume_handle
= NULL
;
6916 if (r
->in
.resume_handle
) {
6917 _mem_save_resume_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
6918 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.resume_handle
, 0);
6919 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, r
->in
.resume_handle
));
6920 if (*r
->in
.resume_handle
> 0x40000) {
6921 return ndr_pull_error(ndr
, NDR_ERR_RANGE
, "value out of range");
6923 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_resume_handle_0
, 0);
6925 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_group_name
));
6926 if (_ptr_group_name
) {
6927 NDR_PULL_ALLOC(ndr
, r
->in
.group_name
);
6929 r
->in
.group_name
= NULL
;
6931 if (r
->in
.group_name
) {
6932 _mem_save_group_name_0
= NDR_PULL_GET_MEM_CTX(ndr
);
6933 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.group_name
, 0);
6934 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->in
.group_name
));
6935 NDR_CHECK(ndr_pull_array_length(ndr
, &r
->in
.group_name
));
6936 size_group_name_1
= ndr_get_array_size(ndr
, &r
->in
.group_name
);
6937 length_group_name_1
= ndr_get_array_length(ndr
, &r
->in
.group_name
);
6938 if (length_group_name_1
> size_group_name_1
) {
6939 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
);
6941 NDR_CHECK(ndr_check_string_terminator(ndr
, length_group_name_1
, sizeof(uint16_t)));
6942 NDR_CHECK(ndr_pull_charset(ndr
, NDR_SCALARS
, &r
->in
.group_name
, length_group_name_1
, sizeof(uint16_t), CH_UTF16
));
6943 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_group_name_0
, 0);
6945 NDR_PULL_ALLOC_N(ndr
, r
->out
.services
, r
->in
.offered
);
6946 memset(r
->out
.services
, 0, (r
->in
.offered
) * sizeof(*r
->out
.services
));
6947 NDR_PULL_ALLOC(ndr
, r
->out
.needed
);
6948 ZERO_STRUCTP(r
->out
.needed
);
6949 NDR_PULL_ALLOC(ndr
, r
->out
.service_returned
);
6950 ZERO_STRUCTP(r
->out
.service_returned
);
6952 if (flags
& NDR_OUT
) {
6953 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->out
.services
));
6954 size_services_1
= ndr_get_array_size(ndr
, &r
->out
.services
);
6955 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
6956 NDR_PULL_ALLOC_N(ndr
, r
->out
.services
, size_services_1
);
6958 NDR_CHECK(ndr_pull_array_uint8(ndr
, NDR_SCALARS
, r
->out
.services
, size_services_1
));
6959 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
6960 NDR_PULL_ALLOC(ndr
, r
->out
.needed
);
6962 _mem_save_needed_0
= NDR_PULL_GET_MEM_CTX(ndr
);
6963 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.needed
, LIBNDR_FLAG_REF_ALLOC
);
6964 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, r
->out
.needed
));
6965 if (*r
->out
.needed
> 0x40000) {
6966 return ndr_pull_error(ndr
, NDR_ERR_RANGE
, "value out of range");
6968 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_needed_0
, LIBNDR_FLAG_REF_ALLOC
);
6969 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
6970 NDR_PULL_ALLOC(ndr
, r
->out
.service_returned
);
6972 _mem_save_service_returned_0
= NDR_PULL_GET_MEM_CTX(ndr
);
6973 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.service_returned
, LIBNDR_FLAG_REF_ALLOC
);
6974 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, r
->out
.service_returned
));
6975 if (*r
->out
.service_returned
> 0x40000) {
6976 return ndr_pull_error(ndr
, NDR_ERR_RANGE
, "value out of range");
6978 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_service_returned_0
, LIBNDR_FLAG_REF_ALLOC
);
6979 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_resume_handle
));
6980 if (_ptr_resume_handle
) {
6981 NDR_PULL_ALLOC(ndr
, r
->out
.resume_handle
);
6983 r
->out
.resume_handle
= NULL
;
6985 if (r
->out
.resume_handle
) {
6986 _mem_save_resume_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
6987 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.resume_handle
, 0);
6988 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, r
->out
.resume_handle
));
6989 if (*r
->out
.resume_handle
> 0x40000) {
6990 return ndr_pull_error(ndr
, NDR_ERR_RANGE
, "value out of range");
6992 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_resume_handle_0
, 0);
6994 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
6995 if (r
->out
.services
) {
6996 NDR_CHECK(ndr_check_array_size(ndr
, (void*)&r
->out
.services
, r
->in
.offered
));
6999 return NDR_ERR_SUCCESS
;
7002 _PUBLIC_
void ndr_print_EnumServicesStatusExW(struct ndr_print
*ndr
, const char *name
, int flags
, const struct EnumServicesStatusExW
*r
)
7004 ndr_print_struct(ndr
, name
, "EnumServicesStatusExW");
7006 if (flags
& NDR_SET_VALUES
) {
7007 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
7009 if (flags
& NDR_IN
) {
7010 ndr_print_struct(ndr
, "in", "EnumServicesStatusExW");
7012 ndr_print_ptr(ndr
, "scmanager", r
->in
.scmanager
);
7014 ndr_print_policy_handle(ndr
, "scmanager", r
->in
.scmanager
);
7016 ndr_print_uint32(ndr
, "info_level", r
->in
.info_level
);
7017 ndr_print_uint32(ndr
, "type", r
->in
.type
);
7018 ndr_print_svcctl_ServiceState(ndr
, "state", r
->in
.state
);
7019 ndr_print_uint32(ndr
, "offered", r
->in
.offered
);
7020 ndr_print_ptr(ndr
, "resume_handle", r
->in
.resume_handle
);
7022 if (r
->in
.resume_handle
) {
7023 ndr_print_uint32(ndr
, "resume_handle", *r
->in
.resume_handle
);
7026 ndr_print_ptr(ndr
, "group_name", r
->in
.group_name
);
7028 if (r
->in
.group_name
) {
7029 ndr_print_string(ndr
, "group_name", r
->in
.group_name
);
7034 if (flags
& NDR_OUT
) {
7035 ndr_print_struct(ndr
, "out", "EnumServicesStatusExW");
7037 ndr_print_ptr(ndr
, "services", r
->out
.services
);
7039 ndr_print_array_uint8(ndr
, "services", r
->out
.services
, r
->in
.offered
);
7041 ndr_print_ptr(ndr
, "needed", r
->out
.needed
);
7043 ndr_print_uint32(ndr
, "needed", *r
->out
.needed
);
7045 ndr_print_ptr(ndr
, "service_returned", r
->out
.service_returned
);
7047 ndr_print_uint32(ndr
, "service_returned", *r
->out
.service_returned
);
7049 ndr_print_ptr(ndr
, "resume_handle", r
->out
.resume_handle
);
7051 if (r
->out
.resume_handle
) {
7052 ndr_print_uint32(ndr
, "resume_handle", *r
->out
.resume_handle
);
7055 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
7061 static enum ndr_err_code
ndr_push_svcctl_SCSendTSMessage(struct ndr_push
*ndr
, int flags
, const struct svcctl_SCSendTSMessage
*r
)
7063 if (flags
& NDR_IN
) {
7065 if (flags
& NDR_OUT
) {
7066 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
7068 return NDR_ERR_SUCCESS
;
7071 static enum ndr_err_code
ndr_pull_svcctl_SCSendTSMessage(struct ndr_pull
*ndr
, int flags
, struct svcctl_SCSendTSMessage
*r
)
7073 if (flags
& NDR_IN
) {
7075 if (flags
& NDR_OUT
) {
7076 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
7078 return NDR_ERR_SUCCESS
;
7081 _PUBLIC_
void ndr_print_svcctl_SCSendTSMessage(struct ndr_print
*ndr
, const char *name
, int flags
, const struct svcctl_SCSendTSMessage
*r
)
7083 ndr_print_struct(ndr
, name
, "svcctl_SCSendTSMessage");
7085 if (flags
& NDR_SET_VALUES
) {
7086 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
7088 if (flags
& NDR_IN
) {
7089 ndr_print_struct(ndr
, "in", "svcctl_SCSendTSMessage");
7093 if (flags
& NDR_OUT
) {
7094 ndr_print_struct(ndr
, "out", "svcctl_SCSendTSMessage");
7096 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
7102 static const struct ndr_interface_call svcctl_calls
[] = {
7104 "svcctl_CloseServiceHandle",
7105 sizeof(struct svcctl_CloseServiceHandle
),
7106 (ndr_push_flags_fn_t
) ndr_push_svcctl_CloseServiceHandle
,
7107 (ndr_pull_flags_fn_t
) ndr_pull_svcctl_CloseServiceHandle
,
7108 (ndr_print_function_t
) ndr_print_svcctl_CloseServiceHandle
,
7112 "svcctl_ControlService",
7113 sizeof(struct svcctl_ControlService
),
7114 (ndr_push_flags_fn_t
) ndr_push_svcctl_ControlService
,
7115 (ndr_pull_flags_fn_t
) ndr_pull_svcctl_ControlService
,
7116 (ndr_print_function_t
) ndr_print_svcctl_ControlService
,
7120 "svcctl_DeleteService",
7121 sizeof(struct svcctl_DeleteService
),
7122 (ndr_push_flags_fn_t
) ndr_push_svcctl_DeleteService
,
7123 (ndr_pull_flags_fn_t
) ndr_pull_svcctl_DeleteService
,
7124 (ndr_print_function_t
) ndr_print_svcctl_DeleteService
,
7128 "svcctl_LockServiceDatabase",
7129 sizeof(struct svcctl_LockServiceDatabase
),
7130 (ndr_push_flags_fn_t
) ndr_push_svcctl_LockServiceDatabase
,
7131 (ndr_pull_flags_fn_t
) ndr_pull_svcctl_LockServiceDatabase
,
7132 (ndr_print_function_t
) ndr_print_svcctl_LockServiceDatabase
,
7136 "svcctl_QueryServiceObjectSecurity",
7137 sizeof(struct svcctl_QueryServiceObjectSecurity
),
7138 (ndr_push_flags_fn_t
) ndr_push_svcctl_QueryServiceObjectSecurity
,
7139 (ndr_pull_flags_fn_t
) ndr_pull_svcctl_QueryServiceObjectSecurity
,
7140 (ndr_print_function_t
) ndr_print_svcctl_QueryServiceObjectSecurity
,
7144 "svcctl_SetServiceObjectSecurity",
7145 sizeof(struct svcctl_SetServiceObjectSecurity
),
7146 (ndr_push_flags_fn_t
) ndr_push_svcctl_SetServiceObjectSecurity
,
7147 (ndr_pull_flags_fn_t
) ndr_pull_svcctl_SetServiceObjectSecurity
,
7148 (ndr_print_function_t
) ndr_print_svcctl_SetServiceObjectSecurity
,
7152 "svcctl_QueryServiceStatus",
7153 sizeof(struct svcctl_QueryServiceStatus
),
7154 (ndr_push_flags_fn_t
) ndr_push_svcctl_QueryServiceStatus
,
7155 (ndr_pull_flags_fn_t
) ndr_pull_svcctl_QueryServiceStatus
,
7156 (ndr_print_function_t
) ndr_print_svcctl_QueryServiceStatus
,
7160 "svcctl_SetServiceStatus",
7161 sizeof(struct svcctl_SetServiceStatus
),
7162 (ndr_push_flags_fn_t
) ndr_push_svcctl_SetServiceStatus
,
7163 (ndr_pull_flags_fn_t
) ndr_pull_svcctl_SetServiceStatus
,
7164 (ndr_print_function_t
) ndr_print_svcctl_SetServiceStatus
,
7168 "svcctl_UnlockServiceDatabase",
7169 sizeof(struct svcctl_UnlockServiceDatabase
),
7170 (ndr_push_flags_fn_t
) ndr_push_svcctl_UnlockServiceDatabase
,
7171 (ndr_pull_flags_fn_t
) ndr_pull_svcctl_UnlockServiceDatabase
,
7172 (ndr_print_function_t
) ndr_print_svcctl_UnlockServiceDatabase
,
7176 "svcctl_NotifyBootConfigStatus",
7177 sizeof(struct svcctl_NotifyBootConfigStatus
),
7178 (ndr_push_flags_fn_t
) ndr_push_svcctl_NotifyBootConfigStatus
,
7179 (ndr_pull_flags_fn_t
) ndr_pull_svcctl_NotifyBootConfigStatus
,
7180 (ndr_print_function_t
) ndr_print_svcctl_NotifyBootConfigStatus
,
7184 "svcctl_SCSetServiceBitsW",
7185 sizeof(struct svcctl_SCSetServiceBitsW
),
7186 (ndr_push_flags_fn_t
) ndr_push_svcctl_SCSetServiceBitsW
,
7187 (ndr_pull_flags_fn_t
) ndr_pull_svcctl_SCSetServiceBitsW
,
7188 (ndr_print_function_t
) ndr_print_svcctl_SCSetServiceBitsW
,
7192 "svcctl_ChangeServiceConfigW",
7193 sizeof(struct svcctl_ChangeServiceConfigW
),
7194 (ndr_push_flags_fn_t
) ndr_push_svcctl_ChangeServiceConfigW
,
7195 (ndr_pull_flags_fn_t
) ndr_pull_svcctl_ChangeServiceConfigW
,
7196 (ndr_print_function_t
) ndr_print_svcctl_ChangeServiceConfigW
,
7200 "svcctl_CreateServiceW",
7201 sizeof(struct svcctl_CreateServiceW
),
7202 (ndr_push_flags_fn_t
) ndr_push_svcctl_CreateServiceW
,
7203 (ndr_pull_flags_fn_t
) ndr_pull_svcctl_CreateServiceW
,
7204 (ndr_print_function_t
) ndr_print_svcctl_CreateServiceW
,
7208 "svcctl_EnumDependentServicesW",
7209 sizeof(struct svcctl_EnumDependentServicesW
),
7210 (ndr_push_flags_fn_t
) ndr_push_svcctl_EnumDependentServicesW
,
7211 (ndr_pull_flags_fn_t
) ndr_pull_svcctl_EnumDependentServicesW
,
7212 (ndr_print_function_t
) ndr_print_svcctl_EnumDependentServicesW
,
7216 "svcctl_EnumServicesStatusW",
7217 sizeof(struct svcctl_EnumServicesStatusW
),
7218 (ndr_push_flags_fn_t
) ndr_push_svcctl_EnumServicesStatusW
,
7219 (ndr_pull_flags_fn_t
) ndr_pull_svcctl_EnumServicesStatusW
,
7220 (ndr_print_function_t
) ndr_print_svcctl_EnumServicesStatusW
,
7224 "svcctl_OpenSCManagerW",
7225 sizeof(struct svcctl_OpenSCManagerW
),
7226 (ndr_push_flags_fn_t
) ndr_push_svcctl_OpenSCManagerW
,
7227 (ndr_pull_flags_fn_t
) ndr_pull_svcctl_OpenSCManagerW
,
7228 (ndr_print_function_t
) ndr_print_svcctl_OpenSCManagerW
,
7232 "svcctl_OpenServiceW",
7233 sizeof(struct svcctl_OpenServiceW
),
7234 (ndr_push_flags_fn_t
) ndr_push_svcctl_OpenServiceW
,
7235 (ndr_pull_flags_fn_t
) ndr_pull_svcctl_OpenServiceW
,
7236 (ndr_print_function_t
) ndr_print_svcctl_OpenServiceW
,
7240 "svcctl_QueryServiceConfigW",
7241 sizeof(struct svcctl_QueryServiceConfigW
),
7242 (ndr_push_flags_fn_t
) ndr_push_svcctl_QueryServiceConfigW
,
7243 (ndr_pull_flags_fn_t
) ndr_pull_svcctl_QueryServiceConfigW
,
7244 (ndr_print_function_t
) ndr_print_svcctl_QueryServiceConfigW
,
7248 "svcctl_QueryServiceLockStatusW",
7249 sizeof(struct svcctl_QueryServiceLockStatusW
),
7250 (ndr_push_flags_fn_t
) ndr_push_svcctl_QueryServiceLockStatusW
,
7251 (ndr_pull_flags_fn_t
) ndr_pull_svcctl_QueryServiceLockStatusW
,
7252 (ndr_print_function_t
) ndr_print_svcctl_QueryServiceLockStatusW
,
7256 "svcctl_StartServiceW",
7257 sizeof(struct svcctl_StartServiceW
),
7258 (ndr_push_flags_fn_t
) ndr_push_svcctl_StartServiceW
,
7259 (ndr_pull_flags_fn_t
) ndr_pull_svcctl_StartServiceW
,
7260 (ndr_print_function_t
) ndr_print_svcctl_StartServiceW
,
7264 "svcctl_GetServiceDisplayNameW",
7265 sizeof(struct svcctl_GetServiceDisplayNameW
),
7266 (ndr_push_flags_fn_t
) ndr_push_svcctl_GetServiceDisplayNameW
,
7267 (ndr_pull_flags_fn_t
) ndr_pull_svcctl_GetServiceDisplayNameW
,
7268 (ndr_print_function_t
) ndr_print_svcctl_GetServiceDisplayNameW
,
7272 "svcctl_GetServiceKeyNameW",
7273 sizeof(struct svcctl_GetServiceKeyNameW
),
7274 (ndr_push_flags_fn_t
) ndr_push_svcctl_GetServiceKeyNameW
,
7275 (ndr_pull_flags_fn_t
) ndr_pull_svcctl_GetServiceKeyNameW
,
7276 (ndr_print_function_t
) ndr_print_svcctl_GetServiceKeyNameW
,
7280 "svcctl_SCSetServiceBitsA",
7281 sizeof(struct svcctl_SCSetServiceBitsA
),
7282 (ndr_push_flags_fn_t
) ndr_push_svcctl_SCSetServiceBitsA
,
7283 (ndr_pull_flags_fn_t
) ndr_pull_svcctl_SCSetServiceBitsA
,
7284 (ndr_print_function_t
) ndr_print_svcctl_SCSetServiceBitsA
,
7288 "svcctl_ChangeServiceConfigA",
7289 sizeof(struct svcctl_ChangeServiceConfigA
),
7290 (ndr_push_flags_fn_t
) ndr_push_svcctl_ChangeServiceConfigA
,
7291 (ndr_pull_flags_fn_t
) ndr_pull_svcctl_ChangeServiceConfigA
,
7292 (ndr_print_function_t
) ndr_print_svcctl_ChangeServiceConfigA
,
7296 "svcctl_CreateServiceA",
7297 sizeof(struct svcctl_CreateServiceA
),
7298 (ndr_push_flags_fn_t
) ndr_push_svcctl_CreateServiceA
,
7299 (ndr_pull_flags_fn_t
) ndr_pull_svcctl_CreateServiceA
,
7300 (ndr_print_function_t
) ndr_print_svcctl_CreateServiceA
,
7304 "svcctl_EnumDependentServicesA",
7305 sizeof(struct svcctl_EnumDependentServicesA
),
7306 (ndr_push_flags_fn_t
) ndr_push_svcctl_EnumDependentServicesA
,
7307 (ndr_pull_flags_fn_t
) ndr_pull_svcctl_EnumDependentServicesA
,
7308 (ndr_print_function_t
) ndr_print_svcctl_EnumDependentServicesA
,
7312 "svcctl_EnumServicesStatusA",
7313 sizeof(struct svcctl_EnumServicesStatusA
),
7314 (ndr_push_flags_fn_t
) ndr_push_svcctl_EnumServicesStatusA
,
7315 (ndr_pull_flags_fn_t
) ndr_pull_svcctl_EnumServicesStatusA
,
7316 (ndr_print_function_t
) ndr_print_svcctl_EnumServicesStatusA
,
7320 "svcctl_OpenSCManagerA",
7321 sizeof(struct svcctl_OpenSCManagerA
),
7322 (ndr_push_flags_fn_t
) ndr_push_svcctl_OpenSCManagerA
,
7323 (ndr_pull_flags_fn_t
) ndr_pull_svcctl_OpenSCManagerA
,
7324 (ndr_print_function_t
) ndr_print_svcctl_OpenSCManagerA
,
7328 "svcctl_OpenServiceA",
7329 sizeof(struct svcctl_OpenServiceA
),
7330 (ndr_push_flags_fn_t
) ndr_push_svcctl_OpenServiceA
,
7331 (ndr_pull_flags_fn_t
) ndr_pull_svcctl_OpenServiceA
,
7332 (ndr_print_function_t
) ndr_print_svcctl_OpenServiceA
,
7336 "svcctl_QueryServiceConfigA",
7337 sizeof(struct svcctl_QueryServiceConfigA
),
7338 (ndr_push_flags_fn_t
) ndr_push_svcctl_QueryServiceConfigA
,
7339 (ndr_pull_flags_fn_t
) ndr_pull_svcctl_QueryServiceConfigA
,
7340 (ndr_print_function_t
) ndr_print_svcctl_QueryServiceConfigA
,
7344 "svcctl_QueryServiceLockStatusA",
7345 sizeof(struct svcctl_QueryServiceLockStatusA
),
7346 (ndr_push_flags_fn_t
) ndr_push_svcctl_QueryServiceLockStatusA
,
7347 (ndr_pull_flags_fn_t
) ndr_pull_svcctl_QueryServiceLockStatusA
,
7348 (ndr_print_function_t
) ndr_print_svcctl_QueryServiceLockStatusA
,
7352 "svcctl_StartServiceA",
7353 sizeof(struct svcctl_StartServiceA
),
7354 (ndr_push_flags_fn_t
) ndr_push_svcctl_StartServiceA
,
7355 (ndr_pull_flags_fn_t
) ndr_pull_svcctl_StartServiceA
,
7356 (ndr_print_function_t
) ndr_print_svcctl_StartServiceA
,
7360 "svcctl_GetServiceDisplayNameA",
7361 sizeof(struct svcctl_GetServiceDisplayNameA
),
7362 (ndr_push_flags_fn_t
) ndr_push_svcctl_GetServiceDisplayNameA
,
7363 (ndr_pull_flags_fn_t
) ndr_pull_svcctl_GetServiceDisplayNameA
,
7364 (ndr_print_function_t
) ndr_print_svcctl_GetServiceDisplayNameA
,
7368 "svcctl_GetServiceKeyNameA",
7369 sizeof(struct svcctl_GetServiceKeyNameA
),
7370 (ndr_push_flags_fn_t
) ndr_push_svcctl_GetServiceKeyNameA
,
7371 (ndr_pull_flags_fn_t
) ndr_pull_svcctl_GetServiceKeyNameA
,
7372 (ndr_print_function_t
) ndr_print_svcctl_GetServiceKeyNameA
,
7376 "svcctl_GetCurrentGroupeStateW",
7377 sizeof(struct svcctl_GetCurrentGroupeStateW
),
7378 (ndr_push_flags_fn_t
) ndr_push_svcctl_GetCurrentGroupeStateW
,
7379 (ndr_pull_flags_fn_t
) ndr_pull_svcctl_GetCurrentGroupeStateW
,
7380 (ndr_print_function_t
) ndr_print_svcctl_GetCurrentGroupeStateW
,
7384 "svcctl_EnumServiceGroupW",
7385 sizeof(struct svcctl_EnumServiceGroupW
),
7386 (ndr_push_flags_fn_t
) ndr_push_svcctl_EnumServiceGroupW
,
7387 (ndr_pull_flags_fn_t
) ndr_pull_svcctl_EnumServiceGroupW
,
7388 (ndr_print_function_t
) ndr_print_svcctl_EnumServiceGroupW
,
7392 "svcctl_ChangeServiceConfig2A",
7393 sizeof(struct svcctl_ChangeServiceConfig2A
),
7394 (ndr_push_flags_fn_t
) ndr_push_svcctl_ChangeServiceConfig2A
,
7395 (ndr_pull_flags_fn_t
) ndr_pull_svcctl_ChangeServiceConfig2A
,
7396 (ndr_print_function_t
) ndr_print_svcctl_ChangeServiceConfig2A
,
7400 "svcctl_ChangeServiceConfig2W",
7401 sizeof(struct svcctl_ChangeServiceConfig2W
),
7402 (ndr_push_flags_fn_t
) ndr_push_svcctl_ChangeServiceConfig2W
,
7403 (ndr_pull_flags_fn_t
) ndr_pull_svcctl_ChangeServiceConfig2W
,
7404 (ndr_print_function_t
) ndr_print_svcctl_ChangeServiceConfig2W
,
7408 "svcctl_QueryServiceConfig2A",
7409 sizeof(struct svcctl_QueryServiceConfig2A
),
7410 (ndr_push_flags_fn_t
) ndr_push_svcctl_QueryServiceConfig2A
,
7411 (ndr_pull_flags_fn_t
) ndr_pull_svcctl_QueryServiceConfig2A
,
7412 (ndr_print_function_t
) ndr_print_svcctl_QueryServiceConfig2A
,
7416 "svcctl_QueryServiceConfig2W",
7417 sizeof(struct svcctl_QueryServiceConfig2W
),
7418 (ndr_push_flags_fn_t
) ndr_push_svcctl_QueryServiceConfig2W
,
7419 (ndr_pull_flags_fn_t
) ndr_pull_svcctl_QueryServiceConfig2W
,
7420 (ndr_print_function_t
) ndr_print_svcctl_QueryServiceConfig2W
,
7424 "svcctl_QueryServiceStatusEx",
7425 sizeof(struct svcctl_QueryServiceStatusEx
),
7426 (ndr_push_flags_fn_t
) ndr_push_svcctl_QueryServiceStatusEx
,
7427 (ndr_pull_flags_fn_t
) ndr_pull_svcctl_QueryServiceStatusEx
,
7428 (ndr_print_function_t
) ndr_print_svcctl_QueryServiceStatusEx
,
7432 "EnumServicesStatusExA",
7433 sizeof(struct EnumServicesStatusExA
),
7434 (ndr_push_flags_fn_t
) ndr_push_EnumServicesStatusExA
,
7435 (ndr_pull_flags_fn_t
) ndr_pull_EnumServicesStatusExA
,
7436 (ndr_print_function_t
) ndr_print_EnumServicesStatusExA
,
7440 "EnumServicesStatusExW",
7441 sizeof(struct EnumServicesStatusExW
),
7442 (ndr_push_flags_fn_t
) ndr_push_EnumServicesStatusExW
,
7443 (ndr_pull_flags_fn_t
) ndr_pull_EnumServicesStatusExW
,
7444 (ndr_print_function_t
) ndr_print_EnumServicesStatusExW
,
7448 "svcctl_SCSendTSMessage",
7449 sizeof(struct svcctl_SCSendTSMessage
),
7450 (ndr_push_flags_fn_t
) ndr_push_svcctl_SCSendTSMessage
,
7451 (ndr_pull_flags_fn_t
) ndr_pull_svcctl_SCSendTSMessage
,
7452 (ndr_print_function_t
) ndr_print_svcctl_SCSendTSMessage
,
7455 { NULL
, 0, NULL
, NULL
, NULL
, false }
7458 static const char * const svcctl_endpoint_strings
[] = {
7459 "ncacn_np:[\\pipe\\svcctl]",
7463 static const struct ndr_interface_string_array svcctl_endpoints
= {
7465 .names
= svcctl_endpoint_strings
7468 static const char * const svcctl_authservice_strings
[] = {
7472 static const struct ndr_interface_string_array svcctl_authservices
= {
7474 .names
= svcctl_authservice_strings
7478 const struct ndr_interface_table ndr_table_svcctl
= {
7481 {0x367abb81,0x9844,0x35f1,{0xad,0x32},{0x98,0xf0,0x38,0x00,0x10,0x03}},
7484 .helpstring
= NDR_SVCCTL_HELPSTRING
,
7486 .calls
= svcctl_calls
,
7487 .endpoints
= &svcctl_endpoints
,
7488 .authservices
= &svcctl_authservices