1 /* parser auto-generated by pidl */
4 #include "librpc/gen_ndr/ndr_svcctl.h"
6 NTSTATUS
ndr_push_SERVICE_LOCK_STATUS(struct ndr_push
*ndr
, int ndr_flags
, const struct SERVICE_LOCK_STATUS
*r
)
8 if (ndr_flags
& NDR_SCALARS
) {
9 NDR_CHECK(ndr_push_align(ndr
, 4));
10 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->is_locked
));
11 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->lock_owner
));
12 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->lock_duration
));
14 if (ndr_flags
& NDR_BUFFERS
) {
16 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->lock_owner
, CH_UTF16
)));
17 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, 0));
18 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->lock_owner
, CH_UTF16
)));
19 NDR_CHECK(ndr_push_charset(ndr
, NDR_SCALARS
, r
->lock_owner
, ndr_charset_length(r
->lock_owner
, CH_UTF16
), sizeof(uint16_t), CH_UTF16
));
25 NTSTATUS
ndr_pull_SERVICE_LOCK_STATUS(struct ndr_pull
*ndr
, int ndr_flags
, struct SERVICE_LOCK_STATUS
*r
)
27 uint32_t _ptr_lock_owner
;
28 TALLOC_CTX
*_mem_save_lock_owner_0
;
29 if (ndr_flags
& NDR_SCALARS
) {
30 NDR_CHECK(ndr_pull_align(ndr
, 4));
31 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->is_locked
));
32 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_lock_owner
));
33 if (_ptr_lock_owner
) {
34 NDR_PULL_ALLOC(ndr
, r
->lock_owner
);
38 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->lock_duration
));
40 if (ndr_flags
& NDR_BUFFERS
) {
42 _mem_save_lock_owner_0
= NDR_PULL_GET_MEM_CTX(ndr
);
43 NDR_PULL_SET_MEM_CTX(ndr
, r
->lock_owner
, 0);
44 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->lock_owner
));
45 NDR_CHECK(ndr_pull_array_length(ndr
, &r
->lock_owner
));
46 if (ndr_get_array_length(ndr
, &r
->lock_owner
) > ndr_get_array_size(ndr
, &r
->lock_owner
)) {
47 return ndr_pull_error(ndr
, NDR_ERR_ARRAY_SIZE
, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr
, &r
->lock_owner
), ndr_get_array_length(ndr
, &r
->lock_owner
));
49 NDR_CHECK(ndr_check_string_terminator(ndr
, ndr_get_array_length(ndr
, &r
->lock_owner
), sizeof(uint16_t)));
50 NDR_CHECK(ndr_pull_charset(ndr
, NDR_SCALARS
, &r
->lock_owner
, ndr_get_array_length(ndr
, &r
->lock_owner
), sizeof(uint16_t), CH_UTF16
));
51 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_lock_owner_0
, 0);
57 _PUBLIC_
void ndr_print_SERVICE_LOCK_STATUS(struct ndr_print
*ndr
, const char *name
, const struct SERVICE_LOCK_STATUS
*r
)
59 ndr_print_struct(ndr
, name
, "SERVICE_LOCK_STATUS");
61 ndr_print_uint32(ndr
, "is_locked", r
->is_locked
);
62 ndr_print_ptr(ndr
, "lock_owner", r
->lock_owner
);
65 ndr_print_string(ndr
, "lock_owner", r
->lock_owner
);
68 ndr_print_uint32(ndr
, "lock_duration", r
->lock_duration
);
72 NTSTATUS
ndr_push_SERVICE_STATUS(struct ndr_push
*ndr
, int ndr_flags
, const struct SERVICE_STATUS
*r
)
74 if (ndr_flags
& NDR_SCALARS
) {
75 NDR_CHECK(ndr_push_align(ndr
, 4));
76 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->type
));
77 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->state
));
78 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->controls_accepted
));
79 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->win32_exit_code
));
80 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->service_exit_code
));
81 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->check_point
));
82 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->wait_hint
));
84 if (ndr_flags
& NDR_BUFFERS
) {
89 NTSTATUS
ndr_pull_SERVICE_STATUS(struct ndr_pull
*ndr
, int ndr_flags
, struct SERVICE_STATUS
*r
)
91 if (ndr_flags
& NDR_SCALARS
) {
92 NDR_CHECK(ndr_pull_align(ndr
, 4));
93 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->type
));
94 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->state
));
95 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->controls_accepted
));
96 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->win32_exit_code
));
97 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->service_exit_code
));
98 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->check_point
));
99 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->wait_hint
));
101 if (ndr_flags
& NDR_BUFFERS
) {
106 _PUBLIC_
void ndr_print_SERVICE_STATUS(struct ndr_print
*ndr
, const char *name
, const struct SERVICE_STATUS
*r
)
108 ndr_print_struct(ndr
, name
, "SERVICE_STATUS");
110 ndr_print_uint32(ndr
, "type", r
->type
);
111 ndr_print_uint32(ndr
, "state", r
->state
);
112 ndr_print_uint32(ndr
, "controls_accepted", r
->controls_accepted
);
113 ndr_print_uint32(ndr
, "win32_exit_code", r
->win32_exit_code
);
114 ndr_print_uint32(ndr
, "service_exit_code", r
->service_exit_code
);
115 ndr_print_uint32(ndr
, "check_point", r
->check_point
);
116 ndr_print_uint32(ndr
, "wait_hint", r
->wait_hint
);
120 NTSTATUS
ndr_push_ENUM_SERVICE_STATUS(struct ndr_push
*ndr
, int ndr_flags
, const struct ENUM_SERVICE_STATUS
*r
)
122 if (ndr_flags
& NDR_SCALARS
) {
123 NDR_CHECK(ndr_push_align(ndr
, 4));
125 uint32_t _flags_save_string
= ndr
->flags
;
126 ndr_set_flags(&ndr
->flags
, LIBNDR_FLAG_STR_ASCII
|LIBNDR_FLAG_STR_NULLTERM
);
127 NDR_CHECK(ndr_push_relative_ptr1(ndr
, r
->service_name
));
128 ndr
->flags
= _flags_save_string
;
131 uint32_t _flags_save_string
= ndr
->flags
;
132 ndr_set_flags(&ndr
->flags
, LIBNDR_FLAG_STR_ASCII
|LIBNDR_FLAG_STR_NULLTERM
);
133 NDR_CHECK(ndr_push_relative_ptr1(ndr
, r
->display_name
));
134 ndr
->flags
= _flags_save_string
;
136 NDR_CHECK(ndr_push_SERVICE_STATUS(ndr
, NDR_SCALARS
, &r
->status
));
138 if (ndr_flags
& NDR_BUFFERS
) {
140 uint32_t _flags_save_string
= ndr
->flags
;
141 ndr_set_flags(&ndr
->flags
, LIBNDR_FLAG_STR_ASCII
|LIBNDR_FLAG_STR_NULLTERM
);
142 if (r
->service_name
) {
143 NDR_CHECK(ndr_push_relative_ptr2(ndr
, r
->service_name
));
144 NDR_CHECK(ndr_push_string(ndr
, NDR_SCALARS
, r
->service_name
));
146 ndr
->flags
= _flags_save_string
;
149 uint32_t _flags_save_string
= ndr
->flags
;
150 ndr_set_flags(&ndr
->flags
, LIBNDR_FLAG_STR_ASCII
|LIBNDR_FLAG_STR_NULLTERM
);
151 if (r
->display_name
) {
152 NDR_CHECK(ndr_push_relative_ptr2(ndr
, r
->display_name
));
153 NDR_CHECK(ndr_push_string(ndr
, NDR_SCALARS
, r
->display_name
));
155 ndr
->flags
= _flags_save_string
;
161 NTSTATUS
ndr_pull_ENUM_SERVICE_STATUS(struct ndr_pull
*ndr
, int ndr_flags
, struct ENUM_SERVICE_STATUS
*r
)
163 uint32_t _ptr_service_name
;
164 TALLOC_CTX
*_mem_save_service_name_0
;
165 uint32_t _ptr_display_name
;
166 TALLOC_CTX
*_mem_save_display_name_0
;
167 if (ndr_flags
& NDR_SCALARS
) {
168 NDR_CHECK(ndr_pull_align(ndr
, 4));
170 uint32_t _flags_save_string
= ndr
->flags
;
171 ndr_set_flags(&ndr
->flags
, LIBNDR_FLAG_STR_ASCII
|LIBNDR_FLAG_STR_NULLTERM
);
172 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_service_name
));
173 if (_ptr_service_name
) {
174 NDR_PULL_ALLOC(ndr
, r
->service_name
);
175 NDR_CHECK(ndr_pull_relative_ptr1(ndr
, r
->service_name
, _ptr_service_name
));
177 r
->service_name
= NULL
;
179 ndr
->flags
= _flags_save_string
;
182 uint32_t _flags_save_string
= ndr
->flags
;
183 ndr_set_flags(&ndr
->flags
, LIBNDR_FLAG_STR_ASCII
|LIBNDR_FLAG_STR_NULLTERM
);
184 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_display_name
));
185 if (_ptr_display_name
) {
186 NDR_PULL_ALLOC(ndr
, r
->display_name
);
187 NDR_CHECK(ndr_pull_relative_ptr1(ndr
, r
->display_name
, _ptr_display_name
));
189 r
->display_name
= NULL
;
191 ndr
->flags
= _flags_save_string
;
193 NDR_CHECK(ndr_pull_SERVICE_STATUS(ndr
, NDR_SCALARS
, &r
->status
));
195 if (ndr_flags
& NDR_BUFFERS
) {
197 uint32_t _flags_save_string
= ndr
->flags
;
198 ndr_set_flags(&ndr
->flags
, LIBNDR_FLAG_STR_ASCII
|LIBNDR_FLAG_STR_NULLTERM
);
199 if (r
->service_name
) {
200 struct ndr_pull_save _relative_save
;
201 ndr_pull_save(ndr
, &_relative_save
);
202 NDR_CHECK(ndr_pull_relative_ptr2(ndr
, r
->service_name
));
203 _mem_save_service_name_0
= NDR_PULL_GET_MEM_CTX(ndr
);
204 NDR_PULL_SET_MEM_CTX(ndr
, r
->service_name
, 0);
205 NDR_CHECK(ndr_pull_string(ndr
, NDR_SCALARS
, &r
->service_name
));
206 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_service_name_0
, 0);
207 ndr_pull_restore(ndr
, &_relative_save
);
209 ndr
->flags
= _flags_save_string
;
212 uint32_t _flags_save_string
= ndr
->flags
;
213 ndr_set_flags(&ndr
->flags
, LIBNDR_FLAG_STR_ASCII
|LIBNDR_FLAG_STR_NULLTERM
);
214 if (r
->display_name
) {
215 struct ndr_pull_save _relative_save
;
216 ndr_pull_save(ndr
, &_relative_save
);
217 NDR_CHECK(ndr_pull_relative_ptr2(ndr
, r
->display_name
));
218 _mem_save_display_name_0
= NDR_PULL_GET_MEM_CTX(ndr
);
219 NDR_PULL_SET_MEM_CTX(ndr
, r
->display_name
, 0);
220 NDR_CHECK(ndr_pull_string(ndr
, NDR_SCALARS
, &r
->display_name
));
221 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_display_name_0
, 0);
222 ndr_pull_restore(ndr
, &_relative_save
);
224 ndr
->flags
= _flags_save_string
;
230 _PUBLIC_
void ndr_print_ENUM_SERVICE_STATUS(struct ndr_print
*ndr
, const char *name
, const struct ENUM_SERVICE_STATUS
*r
)
232 ndr_print_struct(ndr
, name
, "ENUM_SERVICE_STATUS");
234 ndr_print_ptr(ndr
, "service_name", r
->service_name
);
236 if (r
->service_name
) {
237 ndr_print_string(ndr
, "service_name", r
->service_name
);
240 ndr_print_ptr(ndr
, "display_name", r
->display_name
);
242 if (r
->display_name
) {
243 ndr_print_string(ndr
, "display_name", r
->display_name
);
246 ndr_print_SERVICE_STATUS(ndr
, "status", &r
->status
);
250 _PUBLIC_ NTSTATUS
ndr_push_svcctl_ServerType(struct ndr_push
*ndr
, int ndr_flags
, uint32_t r
)
252 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
));
256 _PUBLIC_ NTSTATUS
ndr_pull_svcctl_ServerType(struct ndr_pull
*ndr
, int ndr_flags
, uint32_t *r
)
259 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &v
));
264 _PUBLIC_
void ndr_print_svcctl_ServerType(struct ndr_print
*ndr
, const char *name
, uint32_t r
)
266 ndr_print_uint32(ndr
, name
, r
);
268 ndr_print_bitmap_flag(ndr
, sizeof(uint32_t), "SV_TYPE_WORKSTATION", SV_TYPE_WORKSTATION
, r
);
269 ndr_print_bitmap_flag(ndr
, sizeof(uint32_t), "SV_TYPE_SERVER", SV_TYPE_SERVER
, r
);
270 ndr_print_bitmap_flag(ndr
, sizeof(uint32_t), "SV_TYPE_SQLSERVER", SV_TYPE_SQLSERVER
, r
);
271 ndr_print_bitmap_flag(ndr
, sizeof(uint32_t), "SV_TYPE_DOMAIN_CTRL", SV_TYPE_DOMAIN_CTRL
, r
);
272 ndr_print_bitmap_flag(ndr
, sizeof(uint32_t), "SV_TYPE_DOMAIN_BAKCTRL", SV_TYPE_DOMAIN_BAKCTRL
, r
);
273 ndr_print_bitmap_flag(ndr
, sizeof(uint32_t), "SV_TYPE_TIME_SOURCE", SV_TYPE_TIME_SOURCE
, r
);
274 ndr_print_bitmap_flag(ndr
, sizeof(uint32_t), "SV_TYPE_AFP", SV_TYPE_AFP
, r
);
275 ndr_print_bitmap_flag(ndr
, sizeof(uint32_t), "SV_TYPE_NOVELL", SV_TYPE_NOVELL
, r
);
276 ndr_print_bitmap_flag(ndr
, sizeof(uint32_t), "SV_TYPE_DOMAIN_MEMBER", SV_TYPE_DOMAIN_MEMBER
, r
);
277 ndr_print_bitmap_flag(ndr
, sizeof(uint32_t), "SV_TYPE_PRINTQ_SERVER", SV_TYPE_PRINTQ_SERVER
, r
);
278 ndr_print_bitmap_flag(ndr
, sizeof(uint32_t), "SV_TYPE_DIALIN_SERVER", SV_TYPE_DIALIN_SERVER
, r
);
279 ndr_print_bitmap_flag(ndr
, sizeof(uint32_t), "SV_TYPE_SERVER_UNIX", SV_TYPE_SERVER_UNIX
, r
);
280 ndr_print_bitmap_flag(ndr
, sizeof(uint32_t), "SV_TYPE_NT", SV_TYPE_NT
, r
);
281 ndr_print_bitmap_flag(ndr
, sizeof(uint32_t), "SV_TYPE_WFW", SV_TYPE_WFW
, r
);
282 ndr_print_bitmap_flag(ndr
, sizeof(uint32_t), "SV_TYPE_SERVER_MFPN", SV_TYPE_SERVER_MFPN
, r
);
283 ndr_print_bitmap_flag(ndr
, sizeof(uint32_t), "SV_TYPE_SERVER_NT", SV_TYPE_SERVER_NT
, r
);
284 ndr_print_bitmap_flag(ndr
, sizeof(uint32_t), "SV_TYPE_POTENTIAL_BROWSER", SV_TYPE_POTENTIAL_BROWSER
, r
);
285 ndr_print_bitmap_flag(ndr
, sizeof(uint32_t), "SV_TYPE_BACKUP_BROWSER", SV_TYPE_BACKUP_BROWSER
, r
);
286 ndr_print_bitmap_flag(ndr
, sizeof(uint32_t), "SV_TYPE_MASTER_BROWSER", SV_TYPE_MASTER_BROWSER
, r
);
287 ndr_print_bitmap_flag(ndr
, sizeof(uint32_t), "SV_TYPE_DOMAIN_MASTER", SV_TYPE_DOMAIN_MASTER
, r
);
288 ndr_print_bitmap_flag(ndr
, sizeof(uint32_t), "SV_TYPE_SERVER_OSF", SV_TYPE_SERVER_OSF
, r
);
289 ndr_print_bitmap_flag(ndr
, sizeof(uint32_t), "SV_TYPE_SERVER_VMS", SV_TYPE_SERVER_VMS
, r
);
290 ndr_print_bitmap_flag(ndr
, sizeof(uint32_t), "SV_TYPE_WIN95_PLUS", SV_TYPE_WIN95_PLUS
, r
);
291 ndr_print_bitmap_flag(ndr
, sizeof(uint32_t), "SV_TYPE_DFS_SERVER", SV_TYPE_DFS_SERVER
, r
);
292 ndr_print_bitmap_flag(ndr
, sizeof(uint32_t), "SV_TYPE_ALTERNATE_XPORT", SV_TYPE_ALTERNATE_XPORT
, r
);
293 ndr_print_bitmap_flag(ndr
, sizeof(uint32_t), "SV_TYPE_LOCAL_LIST_ONLY", SV_TYPE_LOCAL_LIST_ONLY
, r
);
294 ndr_print_bitmap_flag(ndr
, sizeof(uint32_t), "SV_TYPE_DOMAIN_ENUM", SV_TYPE_DOMAIN_ENUM
, r
);
298 NTSTATUS
ndr_push_svcctl_CloseServiceHandle(struct ndr_push
*ndr
, int flags
, const struct svcctl_CloseServiceHandle
*r
)
300 if (flags
& NDR_IN
) {
301 if (r
->in
.handle
== NULL
) return NT_STATUS_INVALID_PARAMETER_MIX
;
302 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->in
.handle
));
304 if (flags
& NDR_OUT
) {
305 if (r
->out
.handle
== NULL
) return NT_STATUS_INVALID_PARAMETER_MIX
;
306 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->out
.handle
));
307 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
312 NTSTATUS
ndr_pull_svcctl_CloseServiceHandle(struct ndr_pull
*ndr
, int flags
, struct svcctl_CloseServiceHandle
*r
)
314 TALLOC_CTX
*_mem_save_handle_0
;
315 if (flags
& NDR_IN
) {
318 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
319 NDR_PULL_ALLOC(ndr
, r
->in
.handle
);
321 _mem_save_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
322 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.handle
, LIBNDR_FLAG_REF_ALLOC
);
323 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->in
.handle
));
324 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_handle_0
, LIBNDR_FLAG_REF_ALLOC
);
325 NDR_PULL_ALLOC(ndr
, r
->out
.handle
);
326 *r
->out
.handle
= *r
->in
.handle
;
328 if (flags
& NDR_OUT
) {
329 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
330 NDR_PULL_ALLOC(ndr
, r
->out
.handle
);
332 _mem_save_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
333 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.handle
, LIBNDR_FLAG_REF_ALLOC
);
334 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->out
.handle
));
335 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_handle_0
, LIBNDR_FLAG_REF_ALLOC
);
336 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
341 _PUBLIC_
void ndr_print_svcctl_CloseServiceHandle(struct ndr_print
*ndr
, const char *name
, int flags
, const struct svcctl_CloseServiceHandle
*r
)
343 ndr_print_struct(ndr
, name
, "svcctl_CloseServiceHandle");
345 if (flags
& NDR_SET_VALUES
) {
346 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
348 if (flags
& NDR_IN
) {
349 ndr_print_struct(ndr
, "in", "svcctl_CloseServiceHandle");
351 ndr_print_ptr(ndr
, "handle", r
->in
.handle
);
353 ndr_print_policy_handle(ndr
, "handle", r
->in
.handle
);
357 if (flags
& NDR_OUT
) {
358 ndr_print_struct(ndr
, "out", "svcctl_CloseServiceHandle");
360 ndr_print_ptr(ndr
, "handle", r
->out
.handle
);
362 ndr_print_policy_handle(ndr
, "handle", r
->out
.handle
);
364 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
370 NTSTATUS
ndr_push_svcctl_ControlService(struct ndr_push
*ndr
, int flags
, const struct svcctl_ControlService
*r
)
372 if (flags
& NDR_IN
) {
373 if (r
->in
.handle
== NULL
) return NT_STATUS_INVALID_PARAMETER_MIX
;
374 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->in
.handle
));
375 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.control
));
377 if (flags
& NDR_OUT
) {
378 if (r
->out
.service_status
== NULL
) return NT_STATUS_INVALID_PARAMETER_MIX
;
379 NDR_CHECK(ndr_push_SERVICE_STATUS(ndr
, NDR_SCALARS
, r
->out
.service_status
));
380 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
385 NTSTATUS
ndr_pull_svcctl_ControlService(struct ndr_pull
*ndr
, int flags
, struct svcctl_ControlService
*r
)
387 TALLOC_CTX
*_mem_save_handle_0
;
388 TALLOC_CTX
*_mem_save_service_status_0
;
389 if (flags
& NDR_IN
) {
392 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
393 NDR_PULL_ALLOC(ndr
, r
->in
.handle
);
395 _mem_save_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
396 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.handle
, LIBNDR_FLAG_REF_ALLOC
);
397 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->in
.handle
));
398 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_handle_0
, LIBNDR_FLAG_REF_ALLOC
);
399 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.control
));
400 NDR_PULL_ALLOC(ndr
, r
->out
.service_status
);
401 ZERO_STRUCTP(r
->out
.service_status
);
403 if (flags
& NDR_OUT
) {
404 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
405 NDR_PULL_ALLOC(ndr
, r
->out
.service_status
);
407 _mem_save_service_status_0
= NDR_PULL_GET_MEM_CTX(ndr
);
408 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.service_status
, LIBNDR_FLAG_REF_ALLOC
);
409 NDR_CHECK(ndr_pull_SERVICE_STATUS(ndr
, NDR_SCALARS
, r
->out
.service_status
));
410 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_service_status_0
, LIBNDR_FLAG_REF_ALLOC
);
411 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
416 _PUBLIC_
void ndr_print_svcctl_ControlService(struct ndr_print
*ndr
, const char *name
, int flags
, const struct svcctl_ControlService
*r
)
418 ndr_print_struct(ndr
, name
, "svcctl_ControlService");
420 if (flags
& NDR_SET_VALUES
) {
421 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
423 if (flags
& NDR_IN
) {
424 ndr_print_struct(ndr
, "in", "svcctl_ControlService");
426 ndr_print_ptr(ndr
, "handle", r
->in
.handle
);
428 ndr_print_policy_handle(ndr
, "handle", r
->in
.handle
);
430 ndr_print_uint32(ndr
, "control", r
->in
.control
);
433 if (flags
& NDR_OUT
) {
434 ndr_print_struct(ndr
, "out", "svcctl_ControlService");
436 ndr_print_ptr(ndr
, "service_status", r
->out
.service_status
);
438 ndr_print_SERVICE_STATUS(ndr
, "service_status", r
->out
.service_status
);
440 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
446 NTSTATUS
ndr_push_svcctl_DeleteService(struct ndr_push
*ndr
, int flags
, const struct svcctl_DeleteService
*r
)
448 if (flags
& NDR_IN
) {
449 if (r
->in
.handle
== NULL
) return NT_STATUS_INVALID_PARAMETER_MIX
;
450 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->in
.handle
));
452 if (flags
& NDR_OUT
) {
453 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
458 NTSTATUS
ndr_pull_svcctl_DeleteService(struct ndr_pull
*ndr
, int flags
, struct svcctl_DeleteService
*r
)
460 TALLOC_CTX
*_mem_save_handle_0
;
461 if (flags
& NDR_IN
) {
462 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
463 NDR_PULL_ALLOC(ndr
, r
->in
.handle
);
465 _mem_save_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
466 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.handle
, LIBNDR_FLAG_REF_ALLOC
);
467 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->in
.handle
));
468 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_handle_0
, LIBNDR_FLAG_REF_ALLOC
);
470 if (flags
& NDR_OUT
) {
471 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
476 _PUBLIC_
void ndr_print_svcctl_DeleteService(struct ndr_print
*ndr
, const char *name
, int flags
, const struct svcctl_DeleteService
*r
)
478 ndr_print_struct(ndr
, name
, "svcctl_DeleteService");
480 if (flags
& NDR_SET_VALUES
) {
481 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
483 if (flags
& NDR_IN
) {
484 ndr_print_struct(ndr
, "in", "svcctl_DeleteService");
486 ndr_print_ptr(ndr
, "handle", r
->in
.handle
);
488 ndr_print_policy_handle(ndr
, "handle", r
->in
.handle
);
492 if (flags
& NDR_OUT
) {
493 ndr_print_struct(ndr
, "out", "svcctl_DeleteService");
495 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
501 NTSTATUS
ndr_push_svcctl_LockServiceDatabase(struct ndr_push
*ndr
, int flags
, const struct svcctl_LockServiceDatabase
*r
)
503 if (flags
& NDR_IN
) {
504 if (r
->in
.handle
== NULL
) return NT_STATUS_INVALID_PARAMETER_MIX
;
505 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->in
.handle
));
507 if (flags
& NDR_OUT
) {
508 if (r
->out
.lock
== NULL
) return NT_STATUS_INVALID_PARAMETER_MIX
;
509 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->out
.lock
));
510 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
515 NTSTATUS
ndr_pull_svcctl_LockServiceDatabase(struct ndr_pull
*ndr
, int flags
, struct svcctl_LockServiceDatabase
*r
)
517 TALLOC_CTX
*_mem_save_handle_0
;
518 TALLOC_CTX
*_mem_save_lock_0
;
519 if (flags
& NDR_IN
) {
522 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
523 NDR_PULL_ALLOC(ndr
, r
->in
.handle
);
525 _mem_save_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
526 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.handle
, LIBNDR_FLAG_REF_ALLOC
);
527 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->in
.handle
));
528 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_handle_0
, LIBNDR_FLAG_REF_ALLOC
);
529 NDR_PULL_ALLOC(ndr
, r
->out
.lock
);
530 ZERO_STRUCTP(r
->out
.lock
);
532 if (flags
& NDR_OUT
) {
533 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
534 NDR_PULL_ALLOC(ndr
, r
->out
.lock
);
536 _mem_save_lock_0
= NDR_PULL_GET_MEM_CTX(ndr
);
537 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.lock
, LIBNDR_FLAG_REF_ALLOC
);
538 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->out
.lock
));
539 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_lock_0
, LIBNDR_FLAG_REF_ALLOC
);
540 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
545 _PUBLIC_
void ndr_print_svcctl_LockServiceDatabase(struct ndr_print
*ndr
, const char *name
, int flags
, const struct svcctl_LockServiceDatabase
*r
)
547 ndr_print_struct(ndr
, name
, "svcctl_LockServiceDatabase");
549 if (flags
& NDR_SET_VALUES
) {
550 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
552 if (flags
& NDR_IN
) {
553 ndr_print_struct(ndr
, "in", "svcctl_LockServiceDatabase");
555 ndr_print_ptr(ndr
, "handle", r
->in
.handle
);
557 ndr_print_policy_handle(ndr
, "handle", r
->in
.handle
);
561 if (flags
& NDR_OUT
) {
562 ndr_print_struct(ndr
, "out", "svcctl_LockServiceDatabase");
564 ndr_print_ptr(ndr
, "lock", r
->out
.lock
);
566 ndr_print_policy_handle(ndr
, "lock", r
->out
.lock
);
568 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
574 NTSTATUS
ndr_push_svcctl_QueryServiceObjectSecurity(struct ndr_push
*ndr
, int flags
, const struct svcctl_QueryServiceObjectSecurity
*r
)
576 if (flags
& NDR_IN
) {
578 if (flags
& NDR_OUT
) {
579 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
584 NTSTATUS
ndr_pull_svcctl_QueryServiceObjectSecurity(struct ndr_pull
*ndr
, int flags
, struct svcctl_QueryServiceObjectSecurity
*r
)
586 if (flags
& NDR_IN
) {
588 if (flags
& NDR_OUT
) {
589 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
594 _PUBLIC_
void ndr_print_svcctl_QueryServiceObjectSecurity(struct ndr_print
*ndr
, const char *name
, int flags
, const struct svcctl_QueryServiceObjectSecurity
*r
)
596 ndr_print_struct(ndr
, name
, "svcctl_QueryServiceObjectSecurity");
598 if (flags
& NDR_SET_VALUES
) {
599 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
601 if (flags
& NDR_IN
) {
602 ndr_print_struct(ndr
, "in", "svcctl_QueryServiceObjectSecurity");
606 if (flags
& NDR_OUT
) {
607 ndr_print_struct(ndr
, "out", "svcctl_QueryServiceObjectSecurity");
609 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
615 NTSTATUS
ndr_push_svcctl_SetServiceObjectSecurity(struct ndr_push
*ndr
, int flags
, const struct svcctl_SetServiceObjectSecurity
*r
)
617 if (flags
& NDR_IN
) {
619 if (flags
& NDR_OUT
) {
620 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
625 NTSTATUS
ndr_pull_svcctl_SetServiceObjectSecurity(struct ndr_pull
*ndr
, int flags
, struct svcctl_SetServiceObjectSecurity
*r
)
627 if (flags
& NDR_IN
) {
629 if (flags
& NDR_OUT
) {
630 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
635 _PUBLIC_
void ndr_print_svcctl_SetServiceObjectSecurity(struct ndr_print
*ndr
, const char *name
, int flags
, const struct svcctl_SetServiceObjectSecurity
*r
)
637 ndr_print_struct(ndr
, name
, "svcctl_SetServiceObjectSecurity");
639 if (flags
& NDR_SET_VALUES
) {
640 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
642 if (flags
& NDR_IN
) {
643 ndr_print_struct(ndr
, "in", "svcctl_SetServiceObjectSecurity");
647 if (flags
& NDR_OUT
) {
648 ndr_print_struct(ndr
, "out", "svcctl_SetServiceObjectSecurity");
650 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
656 NTSTATUS
ndr_push_svcctl_QueryServiceStatus(struct ndr_push
*ndr
, int flags
, const struct svcctl_QueryServiceStatus
*r
)
658 if (flags
& NDR_IN
) {
659 if (r
->in
.handle
== NULL
) return NT_STATUS_INVALID_PARAMETER_MIX
;
660 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->in
.handle
));
662 if (flags
& NDR_OUT
) {
663 if (r
->out
.service_status
== NULL
) return NT_STATUS_INVALID_PARAMETER_MIX
;
664 NDR_CHECK(ndr_push_SERVICE_STATUS(ndr
, NDR_SCALARS
, r
->out
.service_status
));
665 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
670 NTSTATUS
ndr_pull_svcctl_QueryServiceStatus(struct ndr_pull
*ndr
, int flags
, struct svcctl_QueryServiceStatus
*r
)
672 TALLOC_CTX
*_mem_save_handle_0
;
673 TALLOC_CTX
*_mem_save_service_status_0
;
674 if (flags
& NDR_IN
) {
677 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
678 NDR_PULL_ALLOC(ndr
, r
->in
.handle
);
680 _mem_save_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
681 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.handle
, LIBNDR_FLAG_REF_ALLOC
);
682 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->in
.handle
));
683 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_handle_0
, LIBNDR_FLAG_REF_ALLOC
);
684 NDR_PULL_ALLOC(ndr
, r
->out
.service_status
);
685 ZERO_STRUCTP(r
->out
.service_status
);
687 if (flags
& NDR_OUT
) {
688 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
689 NDR_PULL_ALLOC(ndr
, r
->out
.service_status
);
691 _mem_save_service_status_0
= NDR_PULL_GET_MEM_CTX(ndr
);
692 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.service_status
, LIBNDR_FLAG_REF_ALLOC
);
693 NDR_CHECK(ndr_pull_SERVICE_STATUS(ndr
, NDR_SCALARS
, r
->out
.service_status
));
694 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_service_status_0
, LIBNDR_FLAG_REF_ALLOC
);
695 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
700 _PUBLIC_
void ndr_print_svcctl_QueryServiceStatus(struct ndr_print
*ndr
, const char *name
, int flags
, const struct svcctl_QueryServiceStatus
*r
)
702 ndr_print_struct(ndr
, name
, "svcctl_QueryServiceStatus");
704 if (flags
& NDR_SET_VALUES
) {
705 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
707 if (flags
& NDR_IN
) {
708 ndr_print_struct(ndr
, "in", "svcctl_QueryServiceStatus");
710 ndr_print_ptr(ndr
, "handle", r
->in
.handle
);
712 ndr_print_policy_handle(ndr
, "handle", r
->in
.handle
);
716 if (flags
& NDR_OUT
) {
717 ndr_print_struct(ndr
, "out", "svcctl_QueryServiceStatus");
719 ndr_print_ptr(ndr
, "service_status", r
->out
.service_status
);
721 ndr_print_SERVICE_STATUS(ndr
, "service_status", r
->out
.service_status
);
723 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
729 NTSTATUS
ndr_push_svcctl_SetServiceStatus(struct ndr_push
*ndr
, int flags
, const struct svcctl_SetServiceStatus
*r
)
731 if (flags
& NDR_IN
) {
733 if (flags
& NDR_OUT
) {
734 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
739 NTSTATUS
ndr_pull_svcctl_SetServiceStatus(struct ndr_pull
*ndr
, int flags
, struct svcctl_SetServiceStatus
*r
)
741 if (flags
& NDR_IN
) {
743 if (flags
& NDR_OUT
) {
744 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
749 _PUBLIC_
void ndr_print_svcctl_SetServiceStatus(struct ndr_print
*ndr
, const char *name
, int flags
, const struct svcctl_SetServiceStatus
*r
)
751 ndr_print_struct(ndr
, name
, "svcctl_SetServiceStatus");
753 if (flags
& NDR_SET_VALUES
) {
754 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
756 if (flags
& NDR_IN
) {
757 ndr_print_struct(ndr
, "in", "svcctl_SetServiceStatus");
761 if (flags
& NDR_OUT
) {
762 ndr_print_struct(ndr
, "out", "svcctl_SetServiceStatus");
764 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
770 NTSTATUS
ndr_push_svcctl_UnlockServiceDatabase(struct ndr_push
*ndr
, int flags
, const struct svcctl_UnlockServiceDatabase
*r
)
772 if (flags
& NDR_IN
) {
773 if (r
->in
.lock
== NULL
) return NT_STATUS_INVALID_PARAMETER_MIX
;
774 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->in
.lock
));
776 if (flags
& NDR_OUT
) {
777 if (r
->out
.lock
== NULL
) return NT_STATUS_INVALID_PARAMETER_MIX
;
778 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->out
.lock
));
779 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
784 NTSTATUS
ndr_pull_svcctl_UnlockServiceDatabase(struct ndr_pull
*ndr
, int flags
, struct svcctl_UnlockServiceDatabase
*r
)
786 TALLOC_CTX
*_mem_save_lock_0
;
787 if (flags
& NDR_IN
) {
790 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
791 NDR_PULL_ALLOC(ndr
, r
->in
.lock
);
793 _mem_save_lock_0
= NDR_PULL_GET_MEM_CTX(ndr
);
794 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.lock
, LIBNDR_FLAG_REF_ALLOC
);
795 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->in
.lock
));
796 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_lock_0
, LIBNDR_FLAG_REF_ALLOC
);
797 NDR_PULL_ALLOC(ndr
, r
->out
.lock
);
798 *r
->out
.lock
= *r
->in
.lock
;
800 if (flags
& NDR_OUT
) {
801 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
802 NDR_PULL_ALLOC(ndr
, r
->out
.lock
);
804 _mem_save_lock_0
= NDR_PULL_GET_MEM_CTX(ndr
);
805 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.lock
, LIBNDR_FLAG_REF_ALLOC
);
806 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->out
.lock
));
807 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_lock_0
, LIBNDR_FLAG_REF_ALLOC
);
808 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
813 _PUBLIC_
void ndr_print_svcctl_UnlockServiceDatabase(struct ndr_print
*ndr
, const char *name
, int flags
, const struct svcctl_UnlockServiceDatabase
*r
)
815 ndr_print_struct(ndr
, name
, "svcctl_UnlockServiceDatabase");
817 if (flags
& NDR_SET_VALUES
) {
818 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
820 if (flags
& NDR_IN
) {
821 ndr_print_struct(ndr
, "in", "svcctl_UnlockServiceDatabase");
823 ndr_print_ptr(ndr
, "lock", r
->in
.lock
);
825 ndr_print_policy_handle(ndr
, "lock", r
->in
.lock
);
829 if (flags
& NDR_OUT
) {
830 ndr_print_struct(ndr
, "out", "svcctl_UnlockServiceDatabase");
832 ndr_print_ptr(ndr
, "lock", r
->out
.lock
);
834 ndr_print_policy_handle(ndr
, "lock", r
->out
.lock
);
836 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
842 NTSTATUS
ndr_push_svcctl_NotifyBootConfigStatus(struct ndr_push
*ndr
, int flags
, const struct svcctl_NotifyBootConfigStatus
*r
)
844 if (flags
& NDR_IN
) {
846 if (flags
& NDR_OUT
) {
847 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
852 NTSTATUS
ndr_pull_svcctl_NotifyBootConfigStatus(struct ndr_pull
*ndr
, int flags
, struct svcctl_NotifyBootConfigStatus
*r
)
854 if (flags
& NDR_IN
) {
856 if (flags
& NDR_OUT
) {
857 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
862 _PUBLIC_
void ndr_print_svcctl_NotifyBootConfigStatus(struct ndr_print
*ndr
, const char *name
, int flags
, const struct svcctl_NotifyBootConfigStatus
*r
)
864 ndr_print_struct(ndr
, name
, "svcctl_NotifyBootConfigStatus");
866 if (flags
& NDR_SET_VALUES
) {
867 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
869 if (flags
& NDR_IN
) {
870 ndr_print_struct(ndr
, "in", "svcctl_NotifyBootConfigStatus");
874 if (flags
& NDR_OUT
) {
875 ndr_print_struct(ndr
, "out", "svcctl_NotifyBootConfigStatus");
877 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
883 NTSTATUS
ndr_push_svcctl_SCSetServiceBitsW(struct ndr_push
*ndr
, int flags
, const struct svcctl_SCSetServiceBitsW
*r
)
885 if (flags
& NDR_IN
) {
886 if (r
->in
.handle
== NULL
) return NT_STATUS_INVALID_PARAMETER_MIX
;
887 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->in
.handle
));
888 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.bits
));
889 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.bitson
));
890 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.immediate
));
892 if (flags
& NDR_OUT
) {
893 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
898 NTSTATUS
ndr_pull_svcctl_SCSetServiceBitsW(struct ndr_pull
*ndr
, int flags
, struct svcctl_SCSetServiceBitsW
*r
)
900 TALLOC_CTX
*_mem_save_handle_0
;
901 if (flags
& NDR_IN
) {
902 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
903 NDR_PULL_ALLOC(ndr
, r
->in
.handle
);
905 _mem_save_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
906 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.handle
, LIBNDR_FLAG_REF_ALLOC
);
907 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->in
.handle
));
908 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_handle_0
, LIBNDR_FLAG_REF_ALLOC
);
909 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.bits
));
910 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.bitson
));
911 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.immediate
));
913 if (flags
& NDR_OUT
) {
914 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
919 _PUBLIC_
void ndr_print_svcctl_SCSetServiceBitsW(struct ndr_print
*ndr
, const char *name
, int flags
, const struct svcctl_SCSetServiceBitsW
*r
)
921 ndr_print_struct(ndr
, name
, "svcctl_SCSetServiceBitsW");
923 if (flags
& NDR_SET_VALUES
) {
924 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
926 if (flags
& NDR_IN
) {
927 ndr_print_struct(ndr
, "in", "svcctl_SCSetServiceBitsW");
929 ndr_print_ptr(ndr
, "handle", r
->in
.handle
);
931 ndr_print_policy_handle(ndr
, "handle", r
->in
.handle
);
933 ndr_print_uint32(ndr
, "bits", r
->in
.bits
);
934 ndr_print_uint32(ndr
, "bitson", r
->in
.bitson
);
935 ndr_print_uint32(ndr
, "immediate", r
->in
.immediate
);
938 if (flags
& NDR_OUT
) {
939 ndr_print_struct(ndr
, "out", "svcctl_SCSetServiceBitsW");
941 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
947 NTSTATUS
ndr_push_svcctl_ChangeServiceConfigW(struct ndr_push
*ndr
, int flags
, const struct svcctl_ChangeServiceConfigW
*r
)
949 if (flags
& NDR_IN
) {
950 if (r
->in
.handle
== NULL
) return NT_STATUS_INVALID_PARAMETER_MIX
;
951 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->in
.handle
));
952 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.type
));
953 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.start
));
954 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.error
));
955 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.binary_path
));
956 if (r
->in
.binary_path
) {
957 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.binary_path
, CH_UTF16
)));
958 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, 0));
959 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.binary_path
, CH_UTF16
)));
960 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
));
962 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.load_order_group
));
963 if (r
->in
.load_order_group
) {
964 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.load_order_group
, CH_UTF16
)));
965 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, 0));
966 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.load_order_group
, CH_UTF16
)));
967 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
));
969 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.dependencies
));
970 if (r
->in
.dependencies
) {
971 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.dependencies
, CH_UTF16
)));
972 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, 0));
973 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.dependencies
, CH_UTF16
)));
974 NDR_CHECK(ndr_push_charset(ndr
, NDR_SCALARS
, r
->in
.dependencies
, ndr_charset_length(r
->in
.dependencies
, CH_UTF16
), sizeof(uint16_t), CH_UTF16
));
976 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.service_start_name
));
977 if (r
->in
.service_start_name
) {
978 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.service_start_name
, CH_UTF16
)));
979 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, 0));
980 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.service_start_name
, CH_UTF16
)));
981 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
));
983 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.password
));
984 if (r
->in
.password
) {
985 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.password
, CH_UTF16
)));
986 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, 0));
987 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.password
, CH_UTF16
)));
988 NDR_CHECK(ndr_push_charset(ndr
, NDR_SCALARS
, r
->in
.password
, ndr_charset_length(r
->in
.password
, CH_UTF16
), sizeof(uint16_t), CH_UTF16
));
990 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.display_name
));
991 if (r
->in
.display_name
) {
992 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.display_name
, CH_UTF16
)));
993 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, 0));
994 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.display_name
, CH_UTF16
)));
995 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
));
998 if (flags
& NDR_OUT
) {
999 if (r
->out
.tag_id
== NULL
) return NT_STATUS_INVALID_PARAMETER_MIX
;
1000 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, *r
->out
.tag_id
));
1001 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
1003 return NT_STATUS_OK
;
1006 NTSTATUS
ndr_pull_svcctl_ChangeServiceConfigW(struct ndr_pull
*ndr
, int flags
, struct svcctl_ChangeServiceConfigW
*r
)
1008 uint32_t _ptr_binary_path
;
1009 uint32_t _ptr_load_order_group
;
1010 uint32_t _ptr_dependencies
;
1011 uint32_t _ptr_service_start_name
;
1012 uint32_t _ptr_password
;
1013 uint32_t _ptr_display_name
;
1014 TALLOC_CTX
*_mem_save_handle_0
;
1015 TALLOC_CTX
*_mem_save_binary_path_0
;
1016 TALLOC_CTX
*_mem_save_load_order_group_0
;
1017 TALLOC_CTX
*_mem_save_tag_id_0
;
1018 TALLOC_CTX
*_mem_save_dependencies_0
;
1019 TALLOC_CTX
*_mem_save_service_start_name_0
;
1020 TALLOC_CTX
*_mem_save_password_0
;
1021 TALLOC_CTX
*_mem_save_display_name_0
;
1022 if (flags
& NDR_IN
) {
1023 ZERO_STRUCT(r
->out
);
1025 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
1026 NDR_PULL_ALLOC(ndr
, r
->in
.handle
);
1028 _mem_save_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
1029 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.handle
, LIBNDR_FLAG_REF_ALLOC
);
1030 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->in
.handle
));
1031 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_handle_0
, LIBNDR_FLAG_REF_ALLOC
);
1032 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.type
));
1033 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.start
));
1034 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.error
));
1035 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_binary_path
));
1036 if (_ptr_binary_path
) {
1037 NDR_PULL_ALLOC(ndr
, r
->in
.binary_path
);
1039 r
->in
.binary_path
= NULL
;
1041 if (r
->in
.binary_path
) {
1042 _mem_save_binary_path_0
= NDR_PULL_GET_MEM_CTX(ndr
);
1043 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.binary_path
, 0);
1044 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->in
.binary_path
));
1045 NDR_CHECK(ndr_pull_array_length(ndr
, &r
->in
.binary_path
));
1046 if (ndr_get_array_length(ndr
, &r
->in
.binary_path
) > ndr_get_array_size(ndr
, &r
->in
.binary_path
)) {
1047 return ndr_pull_error(ndr
, NDR_ERR_ARRAY_SIZE
, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr
, &r
->in
.binary_path
), ndr_get_array_length(ndr
, &r
->in
.binary_path
));
1049 NDR_CHECK(ndr_check_string_terminator(ndr
, ndr_get_array_length(ndr
, &r
->in
.binary_path
), sizeof(uint16_t)));
1050 NDR_CHECK(ndr_pull_charset(ndr
, NDR_SCALARS
, &r
->in
.binary_path
, ndr_get_array_length(ndr
, &r
->in
.binary_path
), sizeof(uint16_t), CH_UTF16
));
1051 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_binary_path_0
, 0);
1053 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_load_order_group
));
1054 if (_ptr_load_order_group
) {
1055 NDR_PULL_ALLOC(ndr
, r
->in
.load_order_group
);
1057 r
->in
.load_order_group
= NULL
;
1059 if (r
->in
.load_order_group
) {
1060 _mem_save_load_order_group_0
= NDR_PULL_GET_MEM_CTX(ndr
);
1061 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.load_order_group
, 0);
1062 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->in
.load_order_group
));
1063 NDR_CHECK(ndr_pull_array_length(ndr
, &r
->in
.load_order_group
));
1064 if (ndr_get_array_length(ndr
, &r
->in
.load_order_group
) > ndr_get_array_size(ndr
, &r
->in
.load_order_group
)) {
1065 return ndr_pull_error(ndr
, NDR_ERR_ARRAY_SIZE
, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr
, &r
->in
.load_order_group
), ndr_get_array_length(ndr
, &r
->in
.load_order_group
));
1067 NDR_CHECK(ndr_check_string_terminator(ndr
, ndr_get_array_length(ndr
, &r
->in
.load_order_group
), sizeof(uint16_t)));
1068 NDR_CHECK(ndr_pull_charset(ndr
, NDR_SCALARS
, &r
->in
.load_order_group
, ndr_get_array_length(ndr
, &r
->in
.load_order_group
), sizeof(uint16_t), CH_UTF16
));
1069 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_load_order_group_0
, 0);
1071 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_dependencies
));
1072 if (_ptr_dependencies
) {
1073 NDR_PULL_ALLOC(ndr
, r
->in
.dependencies
);
1075 r
->in
.dependencies
= NULL
;
1077 if (r
->in
.dependencies
) {
1078 _mem_save_dependencies_0
= NDR_PULL_GET_MEM_CTX(ndr
);
1079 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.dependencies
, 0);
1080 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->in
.dependencies
));
1081 NDR_CHECK(ndr_pull_array_length(ndr
, &r
->in
.dependencies
));
1082 if (ndr_get_array_length(ndr
, &r
->in
.dependencies
) > ndr_get_array_size(ndr
, &r
->in
.dependencies
)) {
1083 return ndr_pull_error(ndr
, NDR_ERR_ARRAY_SIZE
, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr
, &r
->in
.dependencies
), ndr_get_array_length(ndr
, &r
->in
.dependencies
));
1085 NDR_CHECK(ndr_check_string_terminator(ndr
, ndr_get_array_length(ndr
, &r
->in
.dependencies
), sizeof(uint16_t)));
1086 NDR_CHECK(ndr_pull_charset(ndr
, NDR_SCALARS
, &r
->in
.dependencies
, ndr_get_array_length(ndr
, &r
->in
.dependencies
), sizeof(uint16_t), CH_UTF16
));
1087 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_dependencies_0
, 0);
1089 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_service_start_name
));
1090 if (_ptr_service_start_name
) {
1091 NDR_PULL_ALLOC(ndr
, r
->in
.service_start_name
);
1093 r
->in
.service_start_name
= NULL
;
1095 if (r
->in
.service_start_name
) {
1096 _mem_save_service_start_name_0
= NDR_PULL_GET_MEM_CTX(ndr
);
1097 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.service_start_name
, 0);
1098 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->in
.service_start_name
));
1099 NDR_CHECK(ndr_pull_array_length(ndr
, &r
->in
.service_start_name
));
1100 if (ndr_get_array_length(ndr
, &r
->in
.service_start_name
) > ndr_get_array_size(ndr
, &r
->in
.service_start_name
)) {
1101 return ndr_pull_error(ndr
, NDR_ERR_ARRAY_SIZE
, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr
, &r
->in
.service_start_name
), ndr_get_array_length(ndr
, &r
->in
.service_start_name
));
1103 NDR_CHECK(ndr_check_string_terminator(ndr
, ndr_get_array_length(ndr
, &r
->in
.service_start_name
), sizeof(uint16_t)));
1104 NDR_CHECK(ndr_pull_charset(ndr
, NDR_SCALARS
, &r
->in
.service_start_name
, ndr_get_array_length(ndr
, &r
->in
.service_start_name
), sizeof(uint16_t), CH_UTF16
));
1105 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_service_start_name_0
, 0);
1107 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_password
));
1108 if (_ptr_password
) {
1109 NDR_PULL_ALLOC(ndr
, r
->in
.password
);
1111 r
->in
.password
= NULL
;
1113 if (r
->in
.password
) {
1114 _mem_save_password_0
= NDR_PULL_GET_MEM_CTX(ndr
);
1115 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.password
, 0);
1116 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->in
.password
));
1117 NDR_CHECK(ndr_pull_array_length(ndr
, &r
->in
.password
));
1118 if (ndr_get_array_length(ndr
, &r
->in
.password
) > ndr_get_array_size(ndr
, &r
->in
.password
)) {
1119 return ndr_pull_error(ndr
, NDR_ERR_ARRAY_SIZE
, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr
, &r
->in
.password
), ndr_get_array_length(ndr
, &r
->in
.password
));
1121 NDR_CHECK(ndr_check_string_terminator(ndr
, ndr_get_array_length(ndr
, &r
->in
.password
), sizeof(uint16_t)));
1122 NDR_CHECK(ndr_pull_charset(ndr
, NDR_SCALARS
, &r
->in
.password
, ndr_get_array_length(ndr
, &r
->in
.password
), sizeof(uint16_t), CH_UTF16
));
1123 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_password_0
, 0);
1125 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_display_name
));
1126 if (_ptr_display_name
) {
1127 NDR_PULL_ALLOC(ndr
, r
->in
.display_name
);
1129 r
->in
.display_name
= NULL
;
1131 if (r
->in
.display_name
) {
1132 _mem_save_display_name_0
= NDR_PULL_GET_MEM_CTX(ndr
);
1133 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.display_name
, 0);
1134 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->in
.display_name
));
1135 NDR_CHECK(ndr_pull_array_length(ndr
, &r
->in
.display_name
));
1136 if (ndr_get_array_length(ndr
, &r
->in
.display_name
) > ndr_get_array_size(ndr
, &r
->in
.display_name
)) {
1137 return ndr_pull_error(ndr
, NDR_ERR_ARRAY_SIZE
, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr
, &r
->in
.display_name
), ndr_get_array_length(ndr
, &r
->in
.display_name
));
1139 NDR_CHECK(ndr_check_string_terminator(ndr
, ndr_get_array_length(ndr
, &r
->in
.display_name
), sizeof(uint16_t)));
1140 NDR_CHECK(ndr_pull_charset(ndr
, NDR_SCALARS
, &r
->in
.display_name
, ndr_get_array_length(ndr
, &r
->in
.display_name
), sizeof(uint16_t), CH_UTF16
));
1141 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_display_name_0
, 0);
1143 NDR_PULL_ALLOC(ndr
, r
->out
.tag_id
);
1144 ZERO_STRUCTP(r
->out
.tag_id
);
1146 if (flags
& NDR_OUT
) {
1147 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
1148 NDR_PULL_ALLOC(ndr
, r
->out
.tag_id
);
1150 _mem_save_tag_id_0
= NDR_PULL_GET_MEM_CTX(ndr
);
1151 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.tag_id
, LIBNDR_FLAG_REF_ALLOC
);
1152 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, r
->out
.tag_id
));
1153 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_tag_id_0
, LIBNDR_FLAG_REF_ALLOC
);
1154 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
1156 return NT_STATUS_OK
;
1159 _PUBLIC_
void ndr_print_svcctl_ChangeServiceConfigW(struct ndr_print
*ndr
, const char *name
, int flags
, const struct svcctl_ChangeServiceConfigW
*r
)
1161 ndr_print_struct(ndr
, name
, "svcctl_ChangeServiceConfigW");
1163 if (flags
& NDR_SET_VALUES
) {
1164 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
1166 if (flags
& NDR_IN
) {
1167 ndr_print_struct(ndr
, "in", "svcctl_ChangeServiceConfigW");
1169 ndr_print_ptr(ndr
, "handle", r
->in
.handle
);
1171 ndr_print_policy_handle(ndr
, "handle", r
->in
.handle
);
1173 ndr_print_uint32(ndr
, "type", r
->in
.type
);
1174 ndr_print_uint32(ndr
, "start", r
->in
.start
);
1175 ndr_print_uint32(ndr
, "error", r
->in
.error
);
1176 ndr_print_ptr(ndr
, "binary_path", r
->in
.binary_path
);
1178 if (r
->in
.binary_path
) {
1179 ndr_print_string(ndr
, "binary_path", r
->in
.binary_path
);
1182 ndr_print_ptr(ndr
, "load_order_group", r
->in
.load_order_group
);
1184 if (r
->in
.load_order_group
) {
1185 ndr_print_string(ndr
, "load_order_group", r
->in
.load_order_group
);
1188 ndr_print_ptr(ndr
, "dependencies", r
->in
.dependencies
);
1190 if (r
->in
.dependencies
) {
1191 ndr_print_string(ndr
, "dependencies", r
->in
.dependencies
);
1194 ndr_print_ptr(ndr
, "service_start_name", r
->in
.service_start_name
);
1196 if (r
->in
.service_start_name
) {
1197 ndr_print_string(ndr
, "service_start_name", r
->in
.service_start_name
);
1200 ndr_print_ptr(ndr
, "password", r
->in
.password
);
1202 if (r
->in
.password
) {
1203 ndr_print_string(ndr
, "password", r
->in
.password
);
1206 ndr_print_ptr(ndr
, "display_name", r
->in
.display_name
);
1208 if (r
->in
.display_name
) {
1209 ndr_print_string(ndr
, "display_name", r
->in
.display_name
);
1214 if (flags
& NDR_OUT
) {
1215 ndr_print_struct(ndr
, "out", "svcctl_ChangeServiceConfigW");
1217 ndr_print_ptr(ndr
, "tag_id", r
->out
.tag_id
);
1219 ndr_print_uint32(ndr
, "tag_id", *r
->out
.tag_id
);
1221 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
1227 NTSTATUS
ndr_push_svcctl_CreateServiceW(struct ndr_push
*ndr
, int flags
, const struct svcctl_CreateServiceW
*r
)
1229 if (flags
& NDR_IN
) {
1230 if (r
->in
.scmanager_handle
== NULL
) return NT_STATUS_INVALID_PARAMETER_MIX
;
1231 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->in
.scmanager_handle
));
1232 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.ServiceName
, CH_UTF16
)));
1233 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, 0));
1234 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.ServiceName
, CH_UTF16
)));
1235 NDR_CHECK(ndr_push_charset(ndr
, NDR_SCALARS
, r
->in
.ServiceName
, ndr_charset_length(r
->in
.ServiceName
, CH_UTF16
), sizeof(uint16_t), CH_UTF16
));
1236 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.DisplayName
));
1237 if (r
->in
.DisplayName
) {
1238 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.DisplayName
, CH_UTF16
)));
1239 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, 0));
1240 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.DisplayName
, CH_UTF16
)));
1241 NDR_CHECK(ndr_push_charset(ndr
, NDR_SCALARS
, r
->in
.DisplayName
, ndr_charset_length(r
->in
.DisplayName
, CH_UTF16
), sizeof(uint16_t), CH_UTF16
));
1243 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.desired_access
));
1244 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.type
));
1245 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.start_type
));
1246 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.error_control
));
1247 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.binary_path
, CH_UTF16
)));
1248 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, 0));
1249 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.binary_path
, CH_UTF16
)));
1250 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
));
1251 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.LoadOrderGroupKey
));
1252 if (r
->in
.LoadOrderGroupKey
) {
1253 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.LoadOrderGroupKey
, CH_UTF16
)));
1254 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, 0));
1255 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.LoadOrderGroupKey
, CH_UTF16
)));
1256 NDR_CHECK(ndr_push_charset(ndr
, NDR_SCALARS
, r
->in
.LoadOrderGroupKey
, ndr_charset_length(r
->in
.LoadOrderGroupKey
, CH_UTF16
), sizeof(uint16_t), CH_UTF16
));
1258 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.TagId
));
1260 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, *r
->in
.TagId
));
1262 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.dependencies
));
1263 if (r
->in
.dependencies
) {
1264 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.dependencies_size
));
1265 NDR_CHECK(ndr_push_array_uint8(ndr
, NDR_SCALARS
, r
->in
.dependencies
, r
->in
.dependencies_size
));
1267 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.dependencies_size
));
1268 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.service_start_name
));
1269 if (r
->in
.service_start_name
) {
1270 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.service_start_name
, CH_UTF16
)));
1271 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, 0));
1272 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.service_start_name
, CH_UTF16
)));
1273 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
));
1275 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.password
));
1276 if (r
->in
.password
) {
1277 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.password_size
));
1278 NDR_CHECK(ndr_push_array_uint8(ndr
, NDR_SCALARS
, r
->in
.password
, r
->in
.password_size
));
1280 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.password_size
));
1282 if (flags
& NDR_OUT
) {
1283 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->out
.TagId
));
1285 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, *r
->out
.TagId
));
1287 if (r
->out
.handle
== NULL
) return NT_STATUS_INVALID_PARAMETER_MIX
;
1288 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->out
.handle
));
1289 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
1291 return NT_STATUS_OK
;
1294 NTSTATUS
ndr_pull_svcctl_CreateServiceW(struct ndr_pull
*ndr
, int flags
, struct svcctl_CreateServiceW
*r
)
1296 uint32_t _ptr_DisplayName
;
1297 uint32_t _ptr_LoadOrderGroupKey
;
1298 uint32_t _ptr_TagId
;
1299 uint32_t _ptr_dependencies
;
1300 uint32_t _ptr_service_start_name
;
1301 uint32_t _ptr_password
;
1302 TALLOC_CTX
*_mem_save_scmanager_handle_0
;
1303 TALLOC_CTX
*_mem_save_DisplayName_0
;
1304 TALLOC_CTX
*_mem_save_LoadOrderGroupKey_0
;
1305 TALLOC_CTX
*_mem_save_TagId_0
;
1306 TALLOC_CTX
*_mem_save_dependencies_0
;
1307 TALLOC_CTX
*_mem_save_service_start_name_0
;
1308 TALLOC_CTX
*_mem_save_password_0
;
1309 TALLOC_CTX
*_mem_save_handle_0
;
1310 if (flags
& NDR_IN
) {
1311 ZERO_STRUCT(r
->out
);
1313 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
1314 NDR_PULL_ALLOC(ndr
, r
->in
.scmanager_handle
);
1316 _mem_save_scmanager_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
1317 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.scmanager_handle
, LIBNDR_FLAG_REF_ALLOC
);
1318 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->in
.scmanager_handle
));
1319 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_scmanager_handle_0
, LIBNDR_FLAG_REF_ALLOC
);
1320 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->in
.ServiceName
));
1321 NDR_CHECK(ndr_pull_array_length(ndr
, &r
->in
.ServiceName
));
1322 if (ndr_get_array_length(ndr
, &r
->in
.ServiceName
) > ndr_get_array_size(ndr
, &r
->in
.ServiceName
)) {
1323 return ndr_pull_error(ndr
, NDR_ERR_ARRAY_SIZE
, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr
, &r
->in
.ServiceName
), ndr_get_array_length(ndr
, &r
->in
.ServiceName
));
1325 NDR_CHECK(ndr_check_string_terminator(ndr
, ndr_get_array_length(ndr
, &r
->in
.ServiceName
), sizeof(uint16_t)));
1326 NDR_CHECK(ndr_pull_charset(ndr
, NDR_SCALARS
, &r
->in
.ServiceName
, ndr_get_array_length(ndr
, &r
->in
.ServiceName
), sizeof(uint16_t), CH_UTF16
));
1327 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_DisplayName
));
1328 if (_ptr_DisplayName
) {
1329 NDR_PULL_ALLOC(ndr
, r
->in
.DisplayName
);
1331 r
->in
.DisplayName
= NULL
;
1333 if (r
->in
.DisplayName
) {
1334 _mem_save_DisplayName_0
= NDR_PULL_GET_MEM_CTX(ndr
);
1335 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.DisplayName
, 0);
1336 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->in
.DisplayName
));
1337 NDR_CHECK(ndr_pull_array_length(ndr
, &r
->in
.DisplayName
));
1338 if (ndr_get_array_length(ndr
, &r
->in
.DisplayName
) > ndr_get_array_size(ndr
, &r
->in
.DisplayName
)) {
1339 return ndr_pull_error(ndr
, NDR_ERR_ARRAY_SIZE
, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr
, &r
->in
.DisplayName
), ndr_get_array_length(ndr
, &r
->in
.DisplayName
));
1341 NDR_CHECK(ndr_check_string_terminator(ndr
, ndr_get_array_length(ndr
, &r
->in
.DisplayName
), sizeof(uint16_t)));
1342 NDR_CHECK(ndr_pull_charset(ndr
, NDR_SCALARS
, &r
->in
.DisplayName
, ndr_get_array_length(ndr
, &r
->in
.DisplayName
), sizeof(uint16_t), CH_UTF16
));
1343 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_DisplayName_0
, 0);
1345 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.desired_access
));
1346 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.type
));
1347 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.start_type
));
1348 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.error_control
));
1349 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->in
.binary_path
));
1350 NDR_CHECK(ndr_pull_array_length(ndr
, &r
->in
.binary_path
));
1351 if (ndr_get_array_length(ndr
, &r
->in
.binary_path
) > ndr_get_array_size(ndr
, &r
->in
.binary_path
)) {
1352 return ndr_pull_error(ndr
, NDR_ERR_ARRAY_SIZE
, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr
, &r
->in
.binary_path
), ndr_get_array_length(ndr
, &r
->in
.binary_path
));
1354 NDR_CHECK(ndr_check_string_terminator(ndr
, ndr_get_array_length(ndr
, &r
->in
.binary_path
), sizeof(uint16_t)));
1355 NDR_CHECK(ndr_pull_charset(ndr
, NDR_SCALARS
, &r
->in
.binary_path
, ndr_get_array_length(ndr
, &r
->in
.binary_path
), sizeof(uint16_t), CH_UTF16
));
1356 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_LoadOrderGroupKey
));
1357 if (_ptr_LoadOrderGroupKey
) {
1358 NDR_PULL_ALLOC(ndr
, r
->in
.LoadOrderGroupKey
);
1360 r
->in
.LoadOrderGroupKey
= NULL
;
1362 if (r
->in
.LoadOrderGroupKey
) {
1363 _mem_save_LoadOrderGroupKey_0
= NDR_PULL_GET_MEM_CTX(ndr
);
1364 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.LoadOrderGroupKey
, 0);
1365 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->in
.LoadOrderGroupKey
));
1366 NDR_CHECK(ndr_pull_array_length(ndr
, &r
->in
.LoadOrderGroupKey
));
1367 if (ndr_get_array_length(ndr
, &r
->in
.LoadOrderGroupKey
) > ndr_get_array_size(ndr
, &r
->in
.LoadOrderGroupKey
)) {
1368 return ndr_pull_error(ndr
, NDR_ERR_ARRAY_SIZE
, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr
, &r
->in
.LoadOrderGroupKey
), ndr_get_array_length(ndr
, &r
->in
.LoadOrderGroupKey
));
1370 NDR_CHECK(ndr_check_string_terminator(ndr
, ndr_get_array_length(ndr
, &r
->in
.LoadOrderGroupKey
), sizeof(uint16_t)));
1371 NDR_CHECK(ndr_pull_charset(ndr
, NDR_SCALARS
, &r
->in
.LoadOrderGroupKey
, ndr_get_array_length(ndr
, &r
->in
.LoadOrderGroupKey
), sizeof(uint16_t), CH_UTF16
));
1372 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_LoadOrderGroupKey_0
, 0);
1374 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_TagId
));
1376 NDR_PULL_ALLOC(ndr
, r
->in
.TagId
);
1381 _mem_save_TagId_0
= NDR_PULL_GET_MEM_CTX(ndr
);
1382 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.TagId
, 0);
1383 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, r
->in
.TagId
));
1384 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_TagId_0
, 0);
1386 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_dependencies
));
1387 if (_ptr_dependencies
) {
1388 NDR_PULL_ALLOC(ndr
, r
->in
.dependencies
);
1390 r
->in
.dependencies
= NULL
;
1392 if (r
->in
.dependencies
) {
1393 _mem_save_dependencies_0
= NDR_PULL_GET_MEM_CTX(ndr
);
1394 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.dependencies
, 0);
1395 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->in
.dependencies
));
1396 NDR_PULL_ALLOC_N(ndr
, r
->in
.dependencies
, ndr_get_array_size(ndr
, &r
->in
.dependencies
));
1397 NDR_CHECK(ndr_pull_array_uint8(ndr
, NDR_SCALARS
, r
->in
.dependencies
, ndr_get_array_size(ndr
, &r
->in
.dependencies
)));
1398 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_dependencies_0
, 0);
1400 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.dependencies_size
));
1401 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_service_start_name
));
1402 if (_ptr_service_start_name
) {
1403 NDR_PULL_ALLOC(ndr
, r
->in
.service_start_name
);
1405 r
->in
.service_start_name
= NULL
;
1407 if (r
->in
.service_start_name
) {
1408 _mem_save_service_start_name_0
= NDR_PULL_GET_MEM_CTX(ndr
);
1409 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.service_start_name
, 0);
1410 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->in
.service_start_name
));
1411 NDR_CHECK(ndr_pull_array_length(ndr
, &r
->in
.service_start_name
));
1412 if (ndr_get_array_length(ndr
, &r
->in
.service_start_name
) > ndr_get_array_size(ndr
, &r
->in
.service_start_name
)) {
1413 return ndr_pull_error(ndr
, NDR_ERR_ARRAY_SIZE
, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr
, &r
->in
.service_start_name
), ndr_get_array_length(ndr
, &r
->in
.service_start_name
));
1415 NDR_CHECK(ndr_check_string_terminator(ndr
, ndr_get_array_length(ndr
, &r
->in
.service_start_name
), sizeof(uint16_t)));
1416 NDR_CHECK(ndr_pull_charset(ndr
, NDR_SCALARS
, &r
->in
.service_start_name
, ndr_get_array_length(ndr
, &r
->in
.service_start_name
), sizeof(uint16_t), CH_UTF16
));
1417 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_service_start_name_0
, 0);
1419 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_password
));
1420 if (_ptr_password
) {
1421 NDR_PULL_ALLOC(ndr
, r
->in
.password
);
1423 r
->in
.password
= NULL
;
1425 if (r
->in
.password
) {
1426 _mem_save_password_0
= NDR_PULL_GET_MEM_CTX(ndr
);
1427 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.password
, 0);
1428 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->in
.password
));
1429 NDR_PULL_ALLOC_N(ndr
, r
->in
.password
, ndr_get_array_size(ndr
, &r
->in
.password
));
1430 NDR_CHECK(ndr_pull_array_uint8(ndr
, NDR_SCALARS
, r
->in
.password
, ndr_get_array_size(ndr
, &r
->in
.password
)));
1431 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_password_0
, 0);
1433 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.password_size
));
1434 NDR_PULL_ALLOC(ndr
, r
->out
.handle
);
1435 ZERO_STRUCTP(r
->out
.handle
);
1436 if (r
->in
.dependencies
) {
1437 NDR_CHECK(ndr_check_array_size(ndr
, (void*)&r
->in
.dependencies
, r
->in
.dependencies_size
));
1439 if (r
->in
.password
) {
1440 NDR_CHECK(ndr_check_array_size(ndr
, (void*)&r
->in
.password
, r
->in
.password_size
));
1443 if (flags
& NDR_OUT
) {
1444 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_TagId
));
1446 NDR_PULL_ALLOC(ndr
, r
->out
.TagId
);
1448 r
->out
.TagId
= NULL
;
1451 _mem_save_TagId_0
= NDR_PULL_GET_MEM_CTX(ndr
);
1452 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.TagId
, 0);
1453 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, r
->out
.TagId
));
1454 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_TagId_0
, 0);
1456 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
1457 NDR_PULL_ALLOC(ndr
, r
->out
.handle
);
1459 _mem_save_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
1460 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.handle
, LIBNDR_FLAG_REF_ALLOC
);
1461 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->out
.handle
));
1462 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_handle_0
, LIBNDR_FLAG_REF_ALLOC
);
1463 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
1465 return NT_STATUS_OK
;
1468 _PUBLIC_
void ndr_print_svcctl_CreateServiceW(struct ndr_print
*ndr
, const char *name
, int flags
, const struct svcctl_CreateServiceW
*r
)
1470 ndr_print_struct(ndr
, name
, "svcctl_CreateServiceW");
1472 if (flags
& NDR_SET_VALUES
) {
1473 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
1475 if (flags
& NDR_IN
) {
1476 ndr_print_struct(ndr
, "in", "svcctl_CreateServiceW");
1478 ndr_print_ptr(ndr
, "scmanager_handle", r
->in
.scmanager_handle
);
1480 ndr_print_policy_handle(ndr
, "scmanager_handle", r
->in
.scmanager_handle
);
1482 ndr_print_string(ndr
, "ServiceName", r
->in
.ServiceName
);
1483 ndr_print_ptr(ndr
, "DisplayName", r
->in
.DisplayName
);
1485 if (r
->in
.DisplayName
) {
1486 ndr_print_string(ndr
, "DisplayName", r
->in
.DisplayName
);
1489 ndr_print_uint32(ndr
, "desired_access", r
->in
.desired_access
);
1490 ndr_print_uint32(ndr
, "type", r
->in
.type
);
1491 ndr_print_uint32(ndr
, "start_type", r
->in
.start_type
);
1492 ndr_print_uint32(ndr
, "error_control", r
->in
.error_control
);
1493 ndr_print_string(ndr
, "binary_path", r
->in
.binary_path
);
1494 ndr_print_ptr(ndr
, "LoadOrderGroupKey", r
->in
.LoadOrderGroupKey
);
1496 if (r
->in
.LoadOrderGroupKey
) {
1497 ndr_print_string(ndr
, "LoadOrderGroupKey", r
->in
.LoadOrderGroupKey
);
1500 ndr_print_ptr(ndr
, "TagId", r
->in
.TagId
);
1503 ndr_print_uint32(ndr
, "TagId", *r
->in
.TagId
);
1506 ndr_print_ptr(ndr
, "dependencies", r
->in
.dependencies
);
1508 if (r
->in
.dependencies
) {
1509 ndr_print_array_uint8(ndr
, "dependencies", r
->in
.dependencies
, r
->in
.dependencies_size
);
1512 ndr_print_uint32(ndr
, "dependencies_size", r
->in
.dependencies_size
);
1513 ndr_print_ptr(ndr
, "service_start_name", r
->in
.service_start_name
);
1515 if (r
->in
.service_start_name
) {
1516 ndr_print_string(ndr
, "service_start_name", r
->in
.service_start_name
);
1519 ndr_print_ptr(ndr
, "password", r
->in
.password
);
1521 if (r
->in
.password
) {
1522 ndr_print_array_uint8(ndr
, "password", r
->in
.password
, r
->in
.password_size
);
1525 ndr_print_uint32(ndr
, "password_size", r
->in
.password_size
);
1528 if (flags
& NDR_OUT
) {
1529 ndr_print_struct(ndr
, "out", "svcctl_CreateServiceW");
1531 ndr_print_ptr(ndr
, "TagId", r
->out
.TagId
);
1534 ndr_print_uint32(ndr
, "TagId", *r
->out
.TagId
);
1537 ndr_print_ptr(ndr
, "handle", r
->out
.handle
);
1539 ndr_print_policy_handle(ndr
, "handle", r
->out
.handle
);
1541 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
1547 NTSTATUS
ndr_push_svcctl_EnumDependentServicesW(struct ndr_push
*ndr
, int flags
, const struct svcctl_EnumDependentServicesW
*r
)
1549 if (flags
& NDR_IN
) {
1550 if (r
->in
.service
== NULL
) return NT_STATUS_INVALID_PARAMETER_MIX
;
1551 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->in
.service
));
1552 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.state
));
1553 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.buf_size
));
1555 if (flags
& NDR_OUT
) {
1556 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->out
.service_status
));
1557 if (r
->out
.service_status
) {
1558 NDR_CHECK(ndr_push_ENUM_SERVICE_STATUS(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->out
.service_status
));
1560 if (r
->out
.bytes_needed
== NULL
) return NT_STATUS_INVALID_PARAMETER_MIX
;
1561 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, *r
->out
.bytes_needed
));
1562 if (r
->out
.services_returned
== NULL
) return NT_STATUS_INVALID_PARAMETER_MIX
;
1563 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, *r
->out
.services_returned
));
1564 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
1566 return NT_STATUS_OK
;
1569 NTSTATUS
ndr_pull_svcctl_EnumDependentServicesW(struct ndr_pull
*ndr
, int flags
, struct svcctl_EnumDependentServicesW
*r
)
1571 uint32_t _ptr_service_status
;
1572 TALLOC_CTX
*_mem_save_service_0
;
1573 TALLOC_CTX
*_mem_save_service_status_0
;
1574 TALLOC_CTX
*_mem_save_bytes_needed_0
;
1575 TALLOC_CTX
*_mem_save_services_returned_0
;
1576 if (flags
& NDR_IN
) {
1577 ZERO_STRUCT(r
->out
);
1579 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
1580 NDR_PULL_ALLOC(ndr
, r
->in
.service
);
1582 _mem_save_service_0
= NDR_PULL_GET_MEM_CTX(ndr
);
1583 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.service
, LIBNDR_FLAG_REF_ALLOC
);
1584 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->in
.service
));
1585 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_service_0
, LIBNDR_FLAG_REF_ALLOC
);
1586 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.state
));
1587 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.buf_size
));
1588 NDR_PULL_ALLOC(ndr
, r
->out
.bytes_needed
);
1589 ZERO_STRUCTP(r
->out
.bytes_needed
);
1590 NDR_PULL_ALLOC(ndr
, r
->out
.services_returned
);
1591 ZERO_STRUCTP(r
->out
.services_returned
);
1593 if (flags
& NDR_OUT
) {
1594 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_service_status
));
1595 if (_ptr_service_status
) {
1596 NDR_PULL_ALLOC(ndr
, r
->out
.service_status
);
1598 r
->out
.service_status
= NULL
;
1600 if (r
->out
.service_status
) {
1601 _mem_save_service_status_0
= NDR_PULL_GET_MEM_CTX(ndr
);
1602 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.service_status
, 0);
1603 NDR_CHECK(ndr_pull_ENUM_SERVICE_STATUS(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->out
.service_status
));
1604 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_service_status_0
, 0);
1606 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
1607 NDR_PULL_ALLOC(ndr
, r
->out
.bytes_needed
);
1609 _mem_save_bytes_needed_0
= NDR_PULL_GET_MEM_CTX(ndr
);
1610 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.bytes_needed
, LIBNDR_FLAG_REF_ALLOC
);
1611 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, r
->out
.bytes_needed
));
1612 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_bytes_needed_0
, LIBNDR_FLAG_REF_ALLOC
);
1613 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
1614 NDR_PULL_ALLOC(ndr
, r
->out
.services_returned
);
1616 _mem_save_services_returned_0
= NDR_PULL_GET_MEM_CTX(ndr
);
1617 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.services_returned
, LIBNDR_FLAG_REF_ALLOC
);
1618 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, r
->out
.services_returned
));
1619 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_services_returned_0
, LIBNDR_FLAG_REF_ALLOC
);
1620 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
1622 return NT_STATUS_OK
;
1625 _PUBLIC_
void ndr_print_svcctl_EnumDependentServicesW(struct ndr_print
*ndr
, const char *name
, int flags
, const struct svcctl_EnumDependentServicesW
*r
)
1627 ndr_print_struct(ndr
, name
, "svcctl_EnumDependentServicesW");
1629 if (flags
& NDR_SET_VALUES
) {
1630 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
1632 if (flags
& NDR_IN
) {
1633 ndr_print_struct(ndr
, "in", "svcctl_EnumDependentServicesW");
1635 ndr_print_ptr(ndr
, "service", r
->in
.service
);
1637 ndr_print_policy_handle(ndr
, "service", r
->in
.service
);
1639 ndr_print_uint32(ndr
, "state", r
->in
.state
);
1640 ndr_print_uint32(ndr
, "buf_size", r
->in
.buf_size
);
1643 if (flags
& NDR_OUT
) {
1644 ndr_print_struct(ndr
, "out", "svcctl_EnumDependentServicesW");
1646 ndr_print_ptr(ndr
, "service_status", r
->out
.service_status
);
1648 if (r
->out
.service_status
) {
1649 ndr_print_ENUM_SERVICE_STATUS(ndr
, "service_status", r
->out
.service_status
);
1652 ndr_print_ptr(ndr
, "bytes_needed", r
->out
.bytes_needed
);
1654 ndr_print_uint32(ndr
, "bytes_needed", *r
->out
.bytes_needed
);
1656 ndr_print_ptr(ndr
, "services_returned", r
->out
.services_returned
);
1658 ndr_print_uint32(ndr
, "services_returned", *r
->out
.services_returned
);
1660 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
1666 NTSTATUS
ndr_push_svcctl_EnumServicesStatusW(struct ndr_push
*ndr
, int flags
, const struct svcctl_EnumServicesStatusW
*r
)
1668 if (flags
& NDR_IN
) {
1669 if (r
->in
.handle
== NULL
) return NT_STATUS_INVALID_PARAMETER_MIX
;
1670 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->in
.handle
));
1671 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.type
));
1672 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.state
));
1673 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.buf_size
));
1674 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.resume_handle
));
1675 if (r
->in
.resume_handle
) {
1676 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, *r
->in
.resume_handle
));
1679 if (flags
& NDR_OUT
) {
1680 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.buf_size
));
1681 NDR_CHECK(ndr_push_array_uint8(ndr
, NDR_SCALARS
, r
->out
.service
, r
->in
.buf_size
));
1682 if (r
->out
.bytes_needed
== NULL
) return NT_STATUS_INVALID_PARAMETER_MIX
;
1683 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, *r
->out
.bytes_needed
));
1684 if (r
->out
.services_returned
== NULL
) return NT_STATUS_INVALID_PARAMETER_MIX
;
1685 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, *r
->out
.services_returned
));
1686 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->out
.resume_handle
));
1687 if (r
->out
.resume_handle
) {
1688 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, *r
->out
.resume_handle
));
1690 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
1692 return NT_STATUS_OK
;
1695 NTSTATUS
ndr_pull_svcctl_EnumServicesStatusW(struct ndr_pull
*ndr
, int flags
, struct svcctl_EnumServicesStatusW
*r
)
1697 uint32_t _ptr_resume_handle
;
1698 TALLOC_CTX
*_mem_save_handle_0
;
1699 TALLOC_CTX
*_mem_save_bytes_needed_0
;
1700 TALLOC_CTX
*_mem_save_services_returned_0
;
1701 TALLOC_CTX
*_mem_save_resume_handle_0
;
1702 if (flags
& NDR_IN
) {
1703 ZERO_STRUCT(r
->out
);
1705 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
1706 NDR_PULL_ALLOC(ndr
, r
->in
.handle
);
1708 _mem_save_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
1709 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.handle
, LIBNDR_FLAG_REF_ALLOC
);
1710 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->in
.handle
));
1711 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_handle_0
, LIBNDR_FLAG_REF_ALLOC
);
1712 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.type
));
1713 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.state
));
1714 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.buf_size
));
1715 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_resume_handle
));
1716 if (_ptr_resume_handle
) {
1717 NDR_PULL_ALLOC(ndr
, r
->in
.resume_handle
);
1719 r
->in
.resume_handle
= NULL
;
1721 if (r
->in
.resume_handle
) {
1722 _mem_save_resume_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
1723 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.resume_handle
, 0);
1724 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, r
->in
.resume_handle
));
1725 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_resume_handle_0
, 0);
1727 NDR_PULL_ALLOC(ndr
, r
->out
.bytes_needed
);
1728 ZERO_STRUCTP(r
->out
.bytes_needed
);
1729 NDR_PULL_ALLOC(ndr
, r
->out
.services_returned
);
1730 ZERO_STRUCTP(r
->out
.services_returned
);
1732 if (flags
& NDR_OUT
) {
1733 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->out
.service
));
1734 NDR_PULL_ALLOC_N(ndr
, r
->out
.service
, ndr_get_array_size(ndr
, &r
->out
.service
));
1735 NDR_CHECK(ndr_pull_array_uint8(ndr
, NDR_SCALARS
, r
->out
.service
, ndr_get_array_size(ndr
, &r
->out
.service
)));
1736 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
1737 NDR_PULL_ALLOC(ndr
, r
->out
.bytes_needed
);
1739 _mem_save_bytes_needed_0
= NDR_PULL_GET_MEM_CTX(ndr
);
1740 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.bytes_needed
, LIBNDR_FLAG_REF_ALLOC
);
1741 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, r
->out
.bytes_needed
));
1742 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_bytes_needed_0
, LIBNDR_FLAG_REF_ALLOC
);
1743 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
1744 NDR_PULL_ALLOC(ndr
, r
->out
.services_returned
);
1746 _mem_save_services_returned_0
= NDR_PULL_GET_MEM_CTX(ndr
);
1747 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.services_returned
, LIBNDR_FLAG_REF_ALLOC
);
1748 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, r
->out
.services_returned
));
1749 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_services_returned_0
, LIBNDR_FLAG_REF_ALLOC
);
1750 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_resume_handle
));
1751 if (_ptr_resume_handle
) {
1752 NDR_PULL_ALLOC(ndr
, r
->out
.resume_handle
);
1754 r
->out
.resume_handle
= NULL
;
1756 if (r
->out
.resume_handle
) {
1757 _mem_save_resume_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
1758 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.resume_handle
, 0);
1759 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, r
->out
.resume_handle
));
1760 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_resume_handle_0
, 0);
1762 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
1763 if (r
->out
.service
) {
1764 NDR_CHECK(ndr_check_array_size(ndr
, (void*)&r
->out
.service
, r
->in
.buf_size
));
1767 return NT_STATUS_OK
;
1770 _PUBLIC_
void ndr_print_svcctl_EnumServicesStatusW(struct ndr_print
*ndr
, const char *name
, int flags
, const struct svcctl_EnumServicesStatusW
*r
)
1772 ndr_print_struct(ndr
, name
, "svcctl_EnumServicesStatusW");
1774 if (flags
& NDR_SET_VALUES
) {
1775 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
1777 if (flags
& NDR_IN
) {
1778 ndr_print_struct(ndr
, "in", "svcctl_EnumServicesStatusW");
1780 ndr_print_ptr(ndr
, "handle", r
->in
.handle
);
1782 ndr_print_policy_handle(ndr
, "handle", r
->in
.handle
);
1784 ndr_print_uint32(ndr
, "type", r
->in
.type
);
1785 ndr_print_uint32(ndr
, "state", r
->in
.state
);
1786 ndr_print_uint32(ndr
, "buf_size", r
->in
.buf_size
);
1787 ndr_print_ptr(ndr
, "resume_handle", r
->in
.resume_handle
);
1789 if (r
->in
.resume_handle
) {
1790 ndr_print_uint32(ndr
, "resume_handle", *r
->in
.resume_handle
);
1795 if (flags
& NDR_OUT
) {
1796 ndr_print_struct(ndr
, "out", "svcctl_EnumServicesStatusW");
1798 ndr_print_array_uint8(ndr
, "service", r
->out
.service
, r
->in
.buf_size
);
1799 ndr_print_ptr(ndr
, "bytes_needed", r
->out
.bytes_needed
);
1801 ndr_print_uint32(ndr
, "bytes_needed", *r
->out
.bytes_needed
);
1803 ndr_print_ptr(ndr
, "services_returned", r
->out
.services_returned
);
1805 ndr_print_uint32(ndr
, "services_returned", *r
->out
.services_returned
);
1807 ndr_print_ptr(ndr
, "resume_handle", r
->out
.resume_handle
);
1809 if (r
->out
.resume_handle
) {
1810 ndr_print_uint32(ndr
, "resume_handle", *r
->out
.resume_handle
);
1813 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
1819 NTSTATUS
ndr_push_svcctl_OpenSCManagerW(struct ndr_push
*ndr
, int flags
, const struct svcctl_OpenSCManagerW
*r
)
1821 if (flags
& NDR_IN
) {
1822 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.MachineName
));
1823 if (r
->in
.MachineName
) {
1824 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.MachineName
, CH_UTF16
)));
1825 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, 0));
1826 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.MachineName
, CH_UTF16
)));
1827 NDR_CHECK(ndr_push_charset(ndr
, NDR_SCALARS
, r
->in
.MachineName
, ndr_charset_length(r
->in
.MachineName
, CH_UTF16
), sizeof(uint16_t), CH_UTF16
));
1829 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.DatabaseName
));
1830 if (r
->in
.DatabaseName
) {
1831 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.DatabaseName
, CH_UTF16
)));
1832 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, 0));
1833 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.DatabaseName
, CH_UTF16
)));
1834 NDR_CHECK(ndr_push_charset(ndr
, NDR_SCALARS
, r
->in
.DatabaseName
, ndr_charset_length(r
->in
.DatabaseName
, CH_UTF16
), sizeof(uint16_t), CH_UTF16
));
1836 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.access_mask
));
1838 if (flags
& NDR_OUT
) {
1839 if (r
->out
.handle
== NULL
) return NT_STATUS_INVALID_PARAMETER_MIX
;
1840 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->out
.handle
));
1841 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
1843 return NT_STATUS_OK
;
1846 NTSTATUS
ndr_pull_svcctl_OpenSCManagerW(struct ndr_pull
*ndr
, int flags
, struct svcctl_OpenSCManagerW
*r
)
1848 uint32_t _ptr_MachineName
;
1849 uint32_t _ptr_DatabaseName
;
1850 TALLOC_CTX
*_mem_save_MachineName_0
;
1851 TALLOC_CTX
*_mem_save_DatabaseName_0
;
1852 TALLOC_CTX
*_mem_save_handle_0
;
1853 if (flags
& NDR_IN
) {
1854 ZERO_STRUCT(r
->out
);
1856 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_MachineName
));
1857 if (_ptr_MachineName
) {
1858 NDR_PULL_ALLOC(ndr
, r
->in
.MachineName
);
1860 r
->in
.MachineName
= NULL
;
1862 if (r
->in
.MachineName
) {
1863 _mem_save_MachineName_0
= NDR_PULL_GET_MEM_CTX(ndr
);
1864 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.MachineName
, 0);
1865 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->in
.MachineName
));
1866 NDR_CHECK(ndr_pull_array_length(ndr
, &r
->in
.MachineName
));
1867 if (ndr_get_array_length(ndr
, &r
->in
.MachineName
) > ndr_get_array_size(ndr
, &r
->in
.MachineName
)) {
1868 return ndr_pull_error(ndr
, NDR_ERR_ARRAY_SIZE
, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr
, &r
->in
.MachineName
), ndr_get_array_length(ndr
, &r
->in
.MachineName
));
1870 NDR_CHECK(ndr_check_string_terminator(ndr
, ndr_get_array_length(ndr
, &r
->in
.MachineName
), sizeof(uint16_t)));
1871 NDR_CHECK(ndr_pull_charset(ndr
, NDR_SCALARS
, &r
->in
.MachineName
, ndr_get_array_length(ndr
, &r
->in
.MachineName
), sizeof(uint16_t), CH_UTF16
));
1872 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_MachineName_0
, 0);
1874 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_DatabaseName
));
1875 if (_ptr_DatabaseName
) {
1876 NDR_PULL_ALLOC(ndr
, r
->in
.DatabaseName
);
1878 r
->in
.DatabaseName
= NULL
;
1880 if (r
->in
.DatabaseName
) {
1881 _mem_save_DatabaseName_0
= NDR_PULL_GET_MEM_CTX(ndr
);
1882 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.DatabaseName
, 0);
1883 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->in
.DatabaseName
));
1884 NDR_CHECK(ndr_pull_array_length(ndr
, &r
->in
.DatabaseName
));
1885 if (ndr_get_array_length(ndr
, &r
->in
.DatabaseName
) > ndr_get_array_size(ndr
, &r
->in
.DatabaseName
)) {
1886 return ndr_pull_error(ndr
, NDR_ERR_ARRAY_SIZE
, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr
, &r
->in
.DatabaseName
), ndr_get_array_length(ndr
, &r
->in
.DatabaseName
));
1888 NDR_CHECK(ndr_check_string_terminator(ndr
, ndr_get_array_length(ndr
, &r
->in
.DatabaseName
), sizeof(uint16_t)));
1889 NDR_CHECK(ndr_pull_charset(ndr
, NDR_SCALARS
, &r
->in
.DatabaseName
, ndr_get_array_length(ndr
, &r
->in
.DatabaseName
), sizeof(uint16_t), CH_UTF16
));
1890 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_DatabaseName_0
, 0);
1892 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.access_mask
));
1893 NDR_PULL_ALLOC(ndr
, r
->out
.handle
);
1894 ZERO_STRUCTP(r
->out
.handle
);
1896 if (flags
& NDR_OUT
) {
1897 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
1898 NDR_PULL_ALLOC(ndr
, r
->out
.handle
);
1900 _mem_save_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
1901 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.handle
, LIBNDR_FLAG_REF_ALLOC
);
1902 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->out
.handle
));
1903 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_handle_0
, LIBNDR_FLAG_REF_ALLOC
);
1904 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
1906 return NT_STATUS_OK
;
1909 _PUBLIC_
void ndr_print_svcctl_OpenSCManagerW(struct ndr_print
*ndr
, const char *name
, int flags
, const struct svcctl_OpenSCManagerW
*r
)
1911 ndr_print_struct(ndr
, name
, "svcctl_OpenSCManagerW");
1913 if (flags
& NDR_SET_VALUES
) {
1914 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
1916 if (flags
& NDR_IN
) {
1917 ndr_print_struct(ndr
, "in", "svcctl_OpenSCManagerW");
1919 ndr_print_ptr(ndr
, "MachineName", r
->in
.MachineName
);
1921 if (r
->in
.MachineName
) {
1922 ndr_print_string(ndr
, "MachineName", r
->in
.MachineName
);
1925 ndr_print_ptr(ndr
, "DatabaseName", r
->in
.DatabaseName
);
1927 if (r
->in
.DatabaseName
) {
1928 ndr_print_string(ndr
, "DatabaseName", r
->in
.DatabaseName
);
1931 ndr_print_uint32(ndr
, "access_mask", r
->in
.access_mask
);
1934 if (flags
& NDR_OUT
) {
1935 ndr_print_struct(ndr
, "out", "svcctl_OpenSCManagerW");
1937 ndr_print_ptr(ndr
, "handle", r
->out
.handle
);
1939 ndr_print_policy_handle(ndr
, "handle", r
->out
.handle
);
1941 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
1947 NTSTATUS
ndr_push_svcctl_OpenServiceW(struct ndr_push
*ndr
, int flags
, const struct svcctl_OpenServiceW
*r
)
1949 if (flags
& NDR_IN
) {
1950 if (r
->in
.scmanager_handle
== NULL
) return NT_STATUS_INVALID_PARAMETER_MIX
;
1951 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->in
.scmanager_handle
));
1952 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.ServiceName
, CH_UTF16
)));
1953 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, 0));
1954 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.ServiceName
, CH_UTF16
)));
1955 NDR_CHECK(ndr_push_charset(ndr
, NDR_SCALARS
, r
->in
.ServiceName
, ndr_charset_length(r
->in
.ServiceName
, CH_UTF16
), sizeof(uint16_t), CH_UTF16
));
1956 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.access_mask
));
1958 if (flags
& NDR_OUT
) {
1959 if (r
->out
.handle
== NULL
) return NT_STATUS_INVALID_PARAMETER_MIX
;
1960 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->out
.handle
));
1961 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
1963 return NT_STATUS_OK
;
1966 NTSTATUS
ndr_pull_svcctl_OpenServiceW(struct ndr_pull
*ndr
, int flags
, struct svcctl_OpenServiceW
*r
)
1968 TALLOC_CTX
*_mem_save_scmanager_handle_0
;
1969 TALLOC_CTX
*_mem_save_handle_0
;
1970 if (flags
& NDR_IN
) {
1971 ZERO_STRUCT(r
->out
);
1973 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
1974 NDR_PULL_ALLOC(ndr
, r
->in
.scmanager_handle
);
1976 _mem_save_scmanager_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
1977 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.scmanager_handle
, LIBNDR_FLAG_REF_ALLOC
);
1978 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->in
.scmanager_handle
));
1979 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_scmanager_handle_0
, LIBNDR_FLAG_REF_ALLOC
);
1980 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->in
.ServiceName
));
1981 NDR_CHECK(ndr_pull_array_length(ndr
, &r
->in
.ServiceName
));
1982 if (ndr_get_array_length(ndr
, &r
->in
.ServiceName
) > ndr_get_array_size(ndr
, &r
->in
.ServiceName
)) {
1983 return ndr_pull_error(ndr
, NDR_ERR_ARRAY_SIZE
, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr
, &r
->in
.ServiceName
), ndr_get_array_length(ndr
, &r
->in
.ServiceName
));
1985 NDR_CHECK(ndr_check_string_terminator(ndr
, ndr_get_array_length(ndr
, &r
->in
.ServiceName
), sizeof(uint16_t)));
1986 NDR_CHECK(ndr_pull_charset(ndr
, NDR_SCALARS
, &r
->in
.ServiceName
, ndr_get_array_length(ndr
, &r
->in
.ServiceName
), sizeof(uint16_t), CH_UTF16
));
1987 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.access_mask
));
1988 NDR_PULL_ALLOC(ndr
, r
->out
.handle
);
1989 ZERO_STRUCTP(r
->out
.handle
);
1991 if (flags
& NDR_OUT
) {
1992 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
1993 NDR_PULL_ALLOC(ndr
, r
->out
.handle
);
1995 _mem_save_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
1996 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.handle
, LIBNDR_FLAG_REF_ALLOC
);
1997 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->out
.handle
));
1998 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_handle_0
, LIBNDR_FLAG_REF_ALLOC
);
1999 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
2001 return NT_STATUS_OK
;
2004 _PUBLIC_
void ndr_print_svcctl_OpenServiceW(struct ndr_print
*ndr
, const char *name
, int flags
, const struct svcctl_OpenServiceW
*r
)
2006 ndr_print_struct(ndr
, name
, "svcctl_OpenServiceW");
2008 if (flags
& NDR_SET_VALUES
) {
2009 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
2011 if (flags
& NDR_IN
) {
2012 ndr_print_struct(ndr
, "in", "svcctl_OpenServiceW");
2014 ndr_print_ptr(ndr
, "scmanager_handle", r
->in
.scmanager_handle
);
2016 ndr_print_policy_handle(ndr
, "scmanager_handle", r
->in
.scmanager_handle
);
2018 ndr_print_string(ndr
, "ServiceName", r
->in
.ServiceName
);
2019 ndr_print_uint32(ndr
, "access_mask", r
->in
.access_mask
);
2022 if (flags
& NDR_OUT
) {
2023 ndr_print_struct(ndr
, "out", "svcctl_OpenServiceW");
2025 ndr_print_ptr(ndr
, "handle", r
->out
.handle
);
2027 ndr_print_policy_handle(ndr
, "handle", r
->out
.handle
);
2029 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
2035 NTSTATUS
ndr_push_svcctl_QueryServiceConfigW(struct ndr_push
*ndr
, int flags
, const struct svcctl_QueryServiceConfigW
*r
)
2037 if (flags
& NDR_IN
) {
2038 if (r
->in
.handle
== NULL
) return NT_STATUS_INVALID_PARAMETER_MIX
;
2039 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->in
.handle
));
2040 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.buf_size
));
2042 if (flags
& NDR_OUT
) {
2043 NDR_CHECK(ndr_push_array_uint8(ndr
, NDR_SCALARS
, r
->out
.query
, r
->in
.buf_size
));
2044 if (r
->out
.bytes_needed
== NULL
) return NT_STATUS_INVALID_PARAMETER_MIX
;
2045 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, *r
->out
.bytes_needed
));
2046 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
2048 return NT_STATUS_OK
;
2051 NTSTATUS
ndr_pull_svcctl_QueryServiceConfigW(struct ndr_pull
*ndr
, int flags
, struct svcctl_QueryServiceConfigW
*r
)
2053 TALLOC_CTX
*_mem_save_handle_0
;
2054 TALLOC_CTX
*_mem_save_bytes_needed_0
;
2055 if (flags
& NDR_IN
) {
2056 ZERO_STRUCT(r
->out
);
2058 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
2059 NDR_PULL_ALLOC(ndr
, r
->in
.handle
);
2061 _mem_save_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
2062 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.handle
, LIBNDR_FLAG_REF_ALLOC
);
2063 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->in
.handle
));
2064 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_handle_0
, LIBNDR_FLAG_REF_ALLOC
);
2065 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.buf_size
));
2066 NDR_PULL_ALLOC(ndr
, r
->out
.bytes_needed
);
2067 ZERO_STRUCTP(r
->out
.bytes_needed
);
2069 if (flags
& NDR_OUT
) {
2070 NDR_PULL_ALLOC_N(ndr
, r
->out
.query
, r
->in
.buf_size
);
2071 NDR_CHECK(ndr_pull_array_uint8(ndr
, NDR_SCALARS
, r
->out
.query
, r
->in
.buf_size
));
2072 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
2073 NDR_PULL_ALLOC(ndr
, r
->out
.bytes_needed
);
2075 _mem_save_bytes_needed_0
= NDR_PULL_GET_MEM_CTX(ndr
);
2076 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.bytes_needed
, LIBNDR_FLAG_REF_ALLOC
);
2077 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, r
->out
.bytes_needed
));
2078 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_bytes_needed_0
, LIBNDR_FLAG_REF_ALLOC
);
2079 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
2081 return NT_STATUS_OK
;
2084 _PUBLIC_
void ndr_print_svcctl_QueryServiceConfigW(struct ndr_print
*ndr
, const char *name
, int flags
, const struct svcctl_QueryServiceConfigW
*r
)
2086 ndr_print_struct(ndr
, name
, "svcctl_QueryServiceConfigW");
2088 if (flags
& NDR_SET_VALUES
) {
2089 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
2091 if (flags
& NDR_IN
) {
2092 ndr_print_struct(ndr
, "in", "svcctl_QueryServiceConfigW");
2094 ndr_print_ptr(ndr
, "handle", r
->in
.handle
);
2096 ndr_print_policy_handle(ndr
, "handle", r
->in
.handle
);
2098 ndr_print_uint32(ndr
, "buf_size", r
->in
.buf_size
);
2101 if (flags
& NDR_OUT
) {
2102 ndr_print_struct(ndr
, "out", "svcctl_QueryServiceConfigW");
2104 ndr_print_array_uint8(ndr
, "query", r
->out
.query
, r
->in
.buf_size
);
2105 ndr_print_ptr(ndr
, "bytes_needed", r
->out
.bytes_needed
);
2107 ndr_print_uint32(ndr
, "bytes_needed", *r
->out
.bytes_needed
);
2109 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
2115 NTSTATUS
ndr_push_svcctl_QueryServiceLockStatusW(struct ndr_push
*ndr
, int flags
, const struct svcctl_QueryServiceLockStatusW
*r
)
2117 if (flags
& NDR_IN
) {
2118 if (r
->in
.handle
== NULL
) return NT_STATUS_INVALID_PARAMETER_MIX
;
2119 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->in
.handle
));
2120 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.buf_size
));
2122 if (flags
& NDR_OUT
) {
2123 if (r
->out
.lock_status
== NULL
) return NT_STATUS_INVALID_PARAMETER_MIX
;
2124 NDR_CHECK(ndr_push_SERVICE_LOCK_STATUS(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->out
.lock_status
));
2125 if (r
->out
.required_buf_size
== NULL
) return NT_STATUS_INVALID_PARAMETER_MIX
;
2126 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, *r
->out
.required_buf_size
));
2127 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
2129 return NT_STATUS_OK
;
2132 NTSTATUS
ndr_pull_svcctl_QueryServiceLockStatusW(struct ndr_pull
*ndr
, int flags
, struct svcctl_QueryServiceLockStatusW
*r
)
2134 TALLOC_CTX
*_mem_save_handle_0
;
2135 TALLOC_CTX
*_mem_save_lock_status_0
;
2136 TALLOC_CTX
*_mem_save_required_buf_size_0
;
2137 if (flags
& NDR_IN
) {
2138 ZERO_STRUCT(r
->out
);
2140 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
2141 NDR_PULL_ALLOC(ndr
, r
->in
.handle
);
2143 _mem_save_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
2144 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.handle
, LIBNDR_FLAG_REF_ALLOC
);
2145 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->in
.handle
));
2146 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_handle_0
, LIBNDR_FLAG_REF_ALLOC
);
2147 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.buf_size
));
2148 NDR_PULL_ALLOC(ndr
, r
->out
.lock_status
);
2149 ZERO_STRUCTP(r
->out
.lock_status
);
2150 NDR_PULL_ALLOC(ndr
, r
->out
.required_buf_size
);
2151 ZERO_STRUCTP(r
->out
.required_buf_size
);
2153 if (flags
& NDR_OUT
) {
2154 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
2155 NDR_PULL_ALLOC(ndr
, r
->out
.lock_status
);
2157 _mem_save_lock_status_0
= NDR_PULL_GET_MEM_CTX(ndr
);
2158 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.lock_status
, LIBNDR_FLAG_REF_ALLOC
);
2159 NDR_CHECK(ndr_pull_SERVICE_LOCK_STATUS(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->out
.lock_status
));
2160 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_lock_status_0
, LIBNDR_FLAG_REF_ALLOC
);
2161 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
2162 NDR_PULL_ALLOC(ndr
, r
->out
.required_buf_size
);
2164 _mem_save_required_buf_size_0
= NDR_PULL_GET_MEM_CTX(ndr
);
2165 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.required_buf_size
, LIBNDR_FLAG_REF_ALLOC
);
2166 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, r
->out
.required_buf_size
));
2167 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_required_buf_size_0
, LIBNDR_FLAG_REF_ALLOC
);
2168 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
2170 return NT_STATUS_OK
;
2173 _PUBLIC_
void ndr_print_svcctl_QueryServiceLockStatusW(struct ndr_print
*ndr
, const char *name
, int flags
, const struct svcctl_QueryServiceLockStatusW
*r
)
2175 ndr_print_struct(ndr
, name
, "svcctl_QueryServiceLockStatusW");
2177 if (flags
& NDR_SET_VALUES
) {
2178 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
2180 if (flags
& NDR_IN
) {
2181 ndr_print_struct(ndr
, "in", "svcctl_QueryServiceLockStatusW");
2183 ndr_print_ptr(ndr
, "handle", r
->in
.handle
);
2185 ndr_print_policy_handle(ndr
, "handle", r
->in
.handle
);
2187 ndr_print_uint32(ndr
, "buf_size", r
->in
.buf_size
);
2190 if (flags
& NDR_OUT
) {
2191 ndr_print_struct(ndr
, "out", "svcctl_QueryServiceLockStatusW");
2193 ndr_print_ptr(ndr
, "lock_status", r
->out
.lock_status
);
2195 ndr_print_SERVICE_LOCK_STATUS(ndr
, "lock_status", r
->out
.lock_status
);
2197 ndr_print_ptr(ndr
, "required_buf_size", r
->out
.required_buf_size
);
2199 ndr_print_uint32(ndr
, "required_buf_size", *r
->out
.required_buf_size
);
2201 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
2207 NTSTATUS
ndr_push_svcctl_StartServiceW(struct ndr_push
*ndr
, int flags
, const struct svcctl_StartServiceW
*r
)
2209 if (flags
& NDR_IN
) {
2210 if (r
->in
.handle
== NULL
) return NT_STATUS_INVALID_PARAMETER_MIX
;
2211 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->in
.handle
));
2212 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.NumArgs
));
2213 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.Arguments
));
2214 if (r
->in
.Arguments
) {
2215 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.Arguments
, CH_UTF16
)));
2216 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, 0));
2217 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.Arguments
, CH_UTF16
)));
2218 NDR_CHECK(ndr_push_charset(ndr
, NDR_SCALARS
, r
->in
.Arguments
, ndr_charset_length(r
->in
.Arguments
, CH_UTF16
), sizeof(uint16_t), CH_UTF16
));
2221 if (flags
& NDR_OUT
) {
2222 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
2224 return NT_STATUS_OK
;
2227 NTSTATUS
ndr_pull_svcctl_StartServiceW(struct ndr_pull
*ndr
, int flags
, struct svcctl_StartServiceW
*r
)
2229 uint32_t _ptr_Arguments
;
2230 TALLOC_CTX
*_mem_save_handle_0
;
2231 TALLOC_CTX
*_mem_save_Arguments_0
;
2232 if (flags
& NDR_IN
) {
2233 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
2234 NDR_PULL_ALLOC(ndr
, r
->in
.handle
);
2236 _mem_save_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
2237 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.handle
, LIBNDR_FLAG_REF_ALLOC
);
2238 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->in
.handle
));
2239 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_handle_0
, LIBNDR_FLAG_REF_ALLOC
);
2240 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.NumArgs
));
2241 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_Arguments
));
2242 if (_ptr_Arguments
) {
2243 NDR_PULL_ALLOC(ndr
, r
->in
.Arguments
);
2245 r
->in
.Arguments
= NULL
;
2247 if (r
->in
.Arguments
) {
2248 _mem_save_Arguments_0
= NDR_PULL_GET_MEM_CTX(ndr
);
2249 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.Arguments
, 0);
2250 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->in
.Arguments
));
2251 NDR_CHECK(ndr_pull_array_length(ndr
, &r
->in
.Arguments
));
2252 if (ndr_get_array_length(ndr
, &r
->in
.Arguments
) > ndr_get_array_size(ndr
, &r
->in
.Arguments
)) {
2253 return ndr_pull_error(ndr
, NDR_ERR_ARRAY_SIZE
, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr
, &r
->in
.Arguments
), ndr_get_array_length(ndr
, &r
->in
.Arguments
));
2255 NDR_CHECK(ndr_check_string_terminator(ndr
, ndr_get_array_length(ndr
, &r
->in
.Arguments
), sizeof(uint16_t)));
2256 NDR_CHECK(ndr_pull_charset(ndr
, NDR_SCALARS
, &r
->in
.Arguments
, ndr_get_array_length(ndr
, &r
->in
.Arguments
), sizeof(uint16_t), CH_UTF16
));
2257 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_Arguments_0
, 0);
2260 if (flags
& NDR_OUT
) {
2261 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
2263 return NT_STATUS_OK
;
2266 _PUBLIC_
void ndr_print_svcctl_StartServiceW(struct ndr_print
*ndr
, const char *name
, int flags
, const struct svcctl_StartServiceW
*r
)
2268 ndr_print_struct(ndr
, name
, "svcctl_StartServiceW");
2270 if (flags
& NDR_SET_VALUES
) {
2271 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
2273 if (flags
& NDR_IN
) {
2274 ndr_print_struct(ndr
, "in", "svcctl_StartServiceW");
2276 ndr_print_ptr(ndr
, "handle", r
->in
.handle
);
2278 ndr_print_policy_handle(ndr
, "handle", r
->in
.handle
);
2280 ndr_print_uint32(ndr
, "NumArgs", r
->in
.NumArgs
);
2281 ndr_print_ptr(ndr
, "Arguments", r
->in
.Arguments
);
2283 if (r
->in
.Arguments
) {
2284 ndr_print_string(ndr
, "Arguments", r
->in
.Arguments
);
2289 if (flags
& NDR_OUT
) {
2290 ndr_print_struct(ndr
, "out", "svcctl_StartServiceW");
2292 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
2298 NTSTATUS
ndr_push_svcctl_GetServiceDisplayNameW(struct ndr_push
*ndr
, int flags
, const struct svcctl_GetServiceDisplayNameW
*r
)
2300 if (flags
& NDR_IN
) {
2301 if (r
->in
.handle
== NULL
) return NT_STATUS_INVALID_PARAMETER_MIX
;
2302 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->in
.handle
));
2303 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.service_name
));
2304 if (r
->in
.service_name
) {
2305 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.service_name
, CH_UTF16
)));
2306 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, 0));
2307 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.service_name
, CH_UTF16
)));
2308 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
));
2310 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.display_name_length
));
2311 if (r
->in
.display_name_length
) {
2312 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, *r
->in
.display_name_length
));
2315 if (flags
& NDR_OUT
) {
2316 if (r
->out
.display_name
== NULL
) return NT_STATUS_INVALID_PARAMETER_MIX
;
2317 if (*r
->out
.display_name
== NULL
) return NT_STATUS_INVALID_PARAMETER_MIX
;
2318 NDR_CHECK(ndr_push_ref_ptr(ndr
));
2319 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(*r
->out
.display_name
, CH_UTF16
)));
2320 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, 0));
2321 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(*r
->out
.display_name
, CH_UTF16
)));
2322 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
));
2323 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->out
.display_name_length
));
2324 if (r
->out
.display_name_length
) {
2325 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, *r
->out
.display_name_length
));
2327 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
2329 return NT_STATUS_OK
;
2332 NTSTATUS
ndr_pull_svcctl_GetServiceDisplayNameW(struct ndr_pull
*ndr
, int flags
, struct svcctl_GetServiceDisplayNameW
*r
)
2334 uint32_t _ptr_service_name
;
2335 uint32_t _ptr_display_name
;
2336 uint32_t _ptr_display_name_length
;
2337 TALLOC_CTX
*_mem_save_handle_0
;
2338 TALLOC_CTX
*_mem_save_service_name_0
;
2339 TALLOC_CTX
*_mem_save_display_name_0
;
2340 TALLOC_CTX
*_mem_save_display_name_length_0
;
2341 if (flags
& NDR_IN
) {
2342 ZERO_STRUCT(r
->out
);
2344 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
2345 NDR_PULL_ALLOC(ndr
, r
->in
.handle
);
2347 _mem_save_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
2348 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.handle
, LIBNDR_FLAG_REF_ALLOC
);
2349 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->in
.handle
));
2350 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_handle_0
, LIBNDR_FLAG_REF_ALLOC
);
2351 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_service_name
));
2352 if (_ptr_service_name
) {
2353 NDR_PULL_ALLOC(ndr
, r
->in
.service_name
);
2355 r
->in
.service_name
= NULL
;
2357 if (r
->in
.service_name
) {
2358 _mem_save_service_name_0
= NDR_PULL_GET_MEM_CTX(ndr
);
2359 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.service_name
, 0);
2360 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->in
.service_name
));
2361 NDR_CHECK(ndr_pull_array_length(ndr
, &r
->in
.service_name
));
2362 if (ndr_get_array_length(ndr
, &r
->in
.service_name
) > ndr_get_array_size(ndr
, &r
->in
.service_name
)) {
2363 return ndr_pull_error(ndr
, NDR_ERR_ARRAY_SIZE
, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr
, &r
->in
.service_name
), ndr_get_array_length(ndr
, &r
->in
.service_name
));
2365 NDR_CHECK(ndr_check_string_terminator(ndr
, ndr_get_array_length(ndr
, &r
->in
.service_name
), sizeof(uint16_t)));
2366 NDR_CHECK(ndr_pull_charset(ndr
, NDR_SCALARS
, &r
->in
.service_name
, ndr_get_array_length(ndr
, &r
->in
.service_name
), sizeof(uint16_t), CH_UTF16
));
2367 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_service_name_0
, 0);
2369 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_display_name_length
));
2370 if (_ptr_display_name_length
) {
2371 NDR_PULL_ALLOC(ndr
, r
->in
.display_name_length
);
2373 r
->in
.display_name_length
= NULL
;
2375 if (r
->in
.display_name_length
) {
2376 _mem_save_display_name_length_0
= NDR_PULL_GET_MEM_CTX(ndr
);
2377 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.display_name_length
, 0);
2378 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, r
->in
.display_name_length
));
2379 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_display_name_length_0
, 0);
2381 NDR_PULL_ALLOC(ndr
, r
->out
.display_name
);
2382 ZERO_STRUCTP(r
->out
.display_name
);
2384 if (flags
& NDR_OUT
) {
2385 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
2386 NDR_PULL_ALLOC(ndr
, r
->out
.display_name
);
2388 _mem_save_display_name_0
= NDR_PULL_GET_MEM_CTX(ndr
);
2389 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.display_name
, LIBNDR_FLAG_REF_ALLOC
);
2390 NDR_CHECK(ndr_pull_ref_ptr(ndr
, &_ptr_display_name
));
2391 NDR_CHECK(ndr_pull_array_size(ndr
, r
->out
.display_name
));
2392 NDR_CHECK(ndr_pull_array_length(ndr
, r
->out
.display_name
));
2393 if (ndr_get_array_length(ndr
, r
->out
.display_name
) > ndr_get_array_size(ndr
, r
->out
.display_name
)) {
2394 return ndr_pull_error(ndr
, NDR_ERR_ARRAY_SIZE
, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr
, r
->out
.display_name
), ndr_get_array_length(ndr
, r
->out
.display_name
));
2396 NDR_CHECK(ndr_check_string_terminator(ndr
, ndr_get_array_length(ndr
, r
->out
.display_name
), sizeof(uint16_t)));
2397 NDR_CHECK(ndr_pull_charset(ndr
, NDR_SCALARS
, r
->out
.display_name
, ndr_get_array_length(ndr
, r
->out
.display_name
), sizeof(uint16_t), CH_UTF16
));
2398 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_display_name_0
, LIBNDR_FLAG_REF_ALLOC
);
2399 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_display_name_length
));
2400 if (_ptr_display_name_length
) {
2401 NDR_PULL_ALLOC(ndr
, r
->out
.display_name_length
);
2403 r
->out
.display_name_length
= NULL
;
2405 if (r
->out
.display_name_length
) {
2406 _mem_save_display_name_length_0
= NDR_PULL_GET_MEM_CTX(ndr
);
2407 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.display_name_length
, 0);
2408 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, r
->out
.display_name_length
));
2409 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_display_name_length_0
, 0);
2411 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
2413 return NT_STATUS_OK
;
2416 _PUBLIC_
void ndr_print_svcctl_GetServiceDisplayNameW(struct ndr_print
*ndr
, const char *name
, int flags
, const struct svcctl_GetServiceDisplayNameW
*r
)
2418 ndr_print_struct(ndr
, name
, "svcctl_GetServiceDisplayNameW");
2420 if (flags
& NDR_SET_VALUES
) {
2421 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
2423 if (flags
& NDR_IN
) {
2424 ndr_print_struct(ndr
, "in", "svcctl_GetServiceDisplayNameW");
2426 ndr_print_ptr(ndr
, "handle", r
->in
.handle
);
2428 ndr_print_policy_handle(ndr
, "handle", r
->in
.handle
);
2430 ndr_print_ptr(ndr
, "service_name", r
->in
.service_name
);
2432 if (r
->in
.service_name
) {
2433 ndr_print_string(ndr
, "service_name", r
->in
.service_name
);
2436 ndr_print_ptr(ndr
, "display_name_length", r
->in
.display_name_length
);
2438 if (r
->in
.display_name_length
) {
2439 ndr_print_uint32(ndr
, "display_name_length", *r
->in
.display_name_length
);
2444 if (flags
& NDR_OUT
) {
2445 ndr_print_struct(ndr
, "out", "svcctl_GetServiceDisplayNameW");
2447 ndr_print_ptr(ndr
, "display_name", r
->out
.display_name
);
2449 ndr_print_ptr(ndr
, "display_name", *r
->out
.display_name
);
2451 ndr_print_string(ndr
, "display_name", *r
->out
.display_name
);
2454 ndr_print_ptr(ndr
, "display_name_length", r
->out
.display_name_length
);
2456 if (r
->out
.display_name_length
) {
2457 ndr_print_uint32(ndr
, "display_name_length", *r
->out
.display_name_length
);
2460 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
2466 NTSTATUS
ndr_push_svcctl_GetServiceKeyNameW(struct ndr_push
*ndr
, int flags
, const struct svcctl_GetServiceKeyNameW
*r
)
2468 if (flags
& NDR_IN
) {
2469 if (r
->in
.handle
== NULL
) return NT_STATUS_INVALID_PARAMETER_MIX
;
2470 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->in
.handle
));
2471 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.service_name
));
2472 if (r
->in
.service_name
) {
2473 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.service_name
, CH_UTF16
)));
2474 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, 0));
2475 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.service_name
, CH_UTF16
)));
2476 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
));
2478 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.display_name_length
));
2479 if (r
->in
.display_name_length
) {
2480 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, *r
->in
.display_name_length
));
2483 if (flags
& NDR_OUT
) {
2484 if (r
->out
.key_name
== NULL
) return NT_STATUS_INVALID_PARAMETER_MIX
;
2485 if (*r
->out
.key_name
== NULL
) return NT_STATUS_INVALID_PARAMETER_MIX
;
2486 NDR_CHECK(ndr_push_ref_ptr(ndr
));
2487 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(*r
->out
.key_name
, CH_UTF16
)));
2488 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, 0));
2489 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(*r
->out
.key_name
, CH_UTF16
)));
2490 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
));
2491 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->out
.display_name_length
));
2492 if (r
->out
.display_name_length
) {
2493 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, *r
->out
.display_name_length
));
2495 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
2497 return NT_STATUS_OK
;
2500 NTSTATUS
ndr_pull_svcctl_GetServiceKeyNameW(struct ndr_pull
*ndr
, int flags
, struct svcctl_GetServiceKeyNameW
*r
)
2502 uint32_t _ptr_service_name
;
2503 uint32_t _ptr_key_name
;
2504 uint32_t _ptr_display_name_length
;
2505 TALLOC_CTX
*_mem_save_handle_0
;
2506 TALLOC_CTX
*_mem_save_service_name_0
;
2507 TALLOC_CTX
*_mem_save_key_name_0
;
2508 TALLOC_CTX
*_mem_save_display_name_length_0
;
2509 if (flags
& NDR_IN
) {
2510 ZERO_STRUCT(r
->out
);
2512 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
2513 NDR_PULL_ALLOC(ndr
, r
->in
.handle
);
2515 _mem_save_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
2516 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.handle
, LIBNDR_FLAG_REF_ALLOC
);
2517 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->in
.handle
));
2518 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_handle_0
, LIBNDR_FLAG_REF_ALLOC
);
2519 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_service_name
));
2520 if (_ptr_service_name
) {
2521 NDR_PULL_ALLOC(ndr
, r
->in
.service_name
);
2523 r
->in
.service_name
= NULL
;
2525 if (r
->in
.service_name
) {
2526 _mem_save_service_name_0
= NDR_PULL_GET_MEM_CTX(ndr
);
2527 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.service_name
, 0);
2528 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->in
.service_name
));
2529 NDR_CHECK(ndr_pull_array_length(ndr
, &r
->in
.service_name
));
2530 if (ndr_get_array_length(ndr
, &r
->in
.service_name
) > ndr_get_array_size(ndr
, &r
->in
.service_name
)) {
2531 return ndr_pull_error(ndr
, NDR_ERR_ARRAY_SIZE
, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr
, &r
->in
.service_name
), ndr_get_array_length(ndr
, &r
->in
.service_name
));
2533 NDR_CHECK(ndr_check_string_terminator(ndr
, ndr_get_array_length(ndr
, &r
->in
.service_name
), sizeof(uint16_t)));
2534 NDR_CHECK(ndr_pull_charset(ndr
, NDR_SCALARS
, &r
->in
.service_name
, ndr_get_array_length(ndr
, &r
->in
.service_name
), sizeof(uint16_t), CH_UTF16
));
2535 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_service_name_0
, 0);
2537 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_display_name_length
));
2538 if (_ptr_display_name_length
) {
2539 NDR_PULL_ALLOC(ndr
, r
->in
.display_name_length
);
2541 r
->in
.display_name_length
= NULL
;
2543 if (r
->in
.display_name_length
) {
2544 _mem_save_display_name_length_0
= NDR_PULL_GET_MEM_CTX(ndr
);
2545 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.display_name_length
, 0);
2546 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, r
->in
.display_name_length
));
2547 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_display_name_length_0
, 0);
2549 NDR_PULL_ALLOC(ndr
, r
->out
.key_name
);
2550 ZERO_STRUCTP(r
->out
.key_name
);
2552 if (flags
& NDR_OUT
) {
2553 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
2554 NDR_PULL_ALLOC(ndr
, r
->out
.key_name
);
2556 _mem_save_key_name_0
= NDR_PULL_GET_MEM_CTX(ndr
);
2557 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.key_name
, LIBNDR_FLAG_REF_ALLOC
);
2558 NDR_CHECK(ndr_pull_ref_ptr(ndr
, &_ptr_key_name
));
2559 NDR_CHECK(ndr_pull_array_size(ndr
, r
->out
.key_name
));
2560 NDR_CHECK(ndr_pull_array_length(ndr
, r
->out
.key_name
));
2561 if (ndr_get_array_length(ndr
, r
->out
.key_name
) > ndr_get_array_size(ndr
, r
->out
.key_name
)) {
2562 return ndr_pull_error(ndr
, NDR_ERR_ARRAY_SIZE
, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr
, r
->out
.key_name
), ndr_get_array_length(ndr
, r
->out
.key_name
));
2564 NDR_CHECK(ndr_check_string_terminator(ndr
, ndr_get_array_length(ndr
, r
->out
.key_name
), sizeof(uint16_t)));
2565 NDR_CHECK(ndr_pull_charset(ndr
, NDR_SCALARS
, r
->out
.key_name
, ndr_get_array_length(ndr
, r
->out
.key_name
), sizeof(uint16_t), CH_UTF16
));
2566 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_key_name_0
, LIBNDR_FLAG_REF_ALLOC
);
2567 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_display_name_length
));
2568 if (_ptr_display_name_length
) {
2569 NDR_PULL_ALLOC(ndr
, r
->out
.display_name_length
);
2571 r
->out
.display_name_length
= NULL
;
2573 if (r
->out
.display_name_length
) {
2574 _mem_save_display_name_length_0
= NDR_PULL_GET_MEM_CTX(ndr
);
2575 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.display_name_length
, 0);
2576 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, r
->out
.display_name_length
));
2577 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_display_name_length_0
, 0);
2579 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
2581 return NT_STATUS_OK
;
2584 _PUBLIC_
void ndr_print_svcctl_GetServiceKeyNameW(struct ndr_print
*ndr
, const char *name
, int flags
, const struct svcctl_GetServiceKeyNameW
*r
)
2586 ndr_print_struct(ndr
, name
, "svcctl_GetServiceKeyNameW");
2588 if (flags
& NDR_SET_VALUES
) {
2589 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
2591 if (flags
& NDR_IN
) {
2592 ndr_print_struct(ndr
, "in", "svcctl_GetServiceKeyNameW");
2594 ndr_print_ptr(ndr
, "handle", r
->in
.handle
);
2596 ndr_print_policy_handle(ndr
, "handle", r
->in
.handle
);
2598 ndr_print_ptr(ndr
, "service_name", r
->in
.service_name
);
2600 if (r
->in
.service_name
) {
2601 ndr_print_string(ndr
, "service_name", r
->in
.service_name
);
2604 ndr_print_ptr(ndr
, "display_name_length", r
->in
.display_name_length
);
2606 if (r
->in
.display_name_length
) {
2607 ndr_print_uint32(ndr
, "display_name_length", *r
->in
.display_name_length
);
2612 if (flags
& NDR_OUT
) {
2613 ndr_print_struct(ndr
, "out", "svcctl_GetServiceKeyNameW");
2615 ndr_print_ptr(ndr
, "key_name", r
->out
.key_name
);
2617 ndr_print_ptr(ndr
, "key_name", *r
->out
.key_name
);
2619 ndr_print_string(ndr
, "key_name", *r
->out
.key_name
);
2622 ndr_print_ptr(ndr
, "display_name_length", r
->out
.display_name_length
);
2624 if (r
->out
.display_name_length
) {
2625 ndr_print_uint32(ndr
, "display_name_length", *r
->out
.display_name_length
);
2628 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
2634 NTSTATUS
ndr_push_svcctl_SCSetServiceBitsA(struct ndr_push
*ndr
, int flags
, const struct svcctl_SCSetServiceBitsA
*r
)
2636 if (flags
& NDR_IN
) {
2637 if (r
->in
.handle
== NULL
) return NT_STATUS_INVALID_PARAMETER_MIX
;
2638 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->in
.handle
));
2639 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.bits
));
2640 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.bitson
));
2641 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.immediate
));
2643 if (flags
& NDR_OUT
) {
2644 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
2646 return NT_STATUS_OK
;
2649 NTSTATUS
ndr_pull_svcctl_SCSetServiceBitsA(struct ndr_pull
*ndr
, int flags
, struct svcctl_SCSetServiceBitsA
*r
)
2651 TALLOC_CTX
*_mem_save_handle_0
;
2652 if (flags
& NDR_IN
) {
2653 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
2654 NDR_PULL_ALLOC(ndr
, r
->in
.handle
);
2656 _mem_save_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
2657 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.handle
, LIBNDR_FLAG_REF_ALLOC
);
2658 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->in
.handle
));
2659 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_handle_0
, LIBNDR_FLAG_REF_ALLOC
);
2660 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.bits
));
2661 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.bitson
));
2662 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.immediate
));
2664 if (flags
& NDR_OUT
) {
2665 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
2667 return NT_STATUS_OK
;
2670 _PUBLIC_
void ndr_print_svcctl_SCSetServiceBitsA(struct ndr_print
*ndr
, const char *name
, int flags
, const struct svcctl_SCSetServiceBitsA
*r
)
2672 ndr_print_struct(ndr
, name
, "svcctl_SCSetServiceBitsA");
2674 if (flags
& NDR_SET_VALUES
) {
2675 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
2677 if (flags
& NDR_IN
) {
2678 ndr_print_struct(ndr
, "in", "svcctl_SCSetServiceBitsA");
2680 ndr_print_ptr(ndr
, "handle", r
->in
.handle
);
2682 ndr_print_policy_handle(ndr
, "handle", r
->in
.handle
);
2684 ndr_print_uint32(ndr
, "bits", r
->in
.bits
);
2685 ndr_print_uint32(ndr
, "bitson", r
->in
.bitson
);
2686 ndr_print_uint32(ndr
, "immediate", r
->in
.immediate
);
2689 if (flags
& NDR_OUT
) {
2690 ndr_print_struct(ndr
, "out", "svcctl_SCSetServiceBitsA");
2692 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
2698 NTSTATUS
ndr_push_svcctl_ChangeServiceConfigA(struct ndr_push
*ndr
, int flags
, const struct svcctl_ChangeServiceConfigA
*r
)
2700 if (flags
& NDR_IN
) {
2701 if (r
->in
.handle
== NULL
) return NT_STATUS_INVALID_PARAMETER_MIX
;
2702 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->in
.handle
));
2703 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.type
));
2704 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.start
));
2705 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.error
));
2706 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.binary_path
));
2707 if (r
->in
.binary_path
) {
2708 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.binary_path
, CH_UTF16
)));
2709 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, 0));
2710 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.binary_path
, CH_UTF16
)));
2711 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
));
2713 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.load_order_group
));
2714 if (r
->in
.load_order_group
) {
2715 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.load_order_group
, CH_UTF16
)));
2716 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, 0));
2717 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.load_order_group
, CH_UTF16
)));
2718 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
));
2720 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.dependencies
));
2721 if (r
->in
.dependencies
) {
2722 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.dependencies
, CH_UTF16
)));
2723 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, 0));
2724 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.dependencies
, CH_UTF16
)));
2725 NDR_CHECK(ndr_push_charset(ndr
, NDR_SCALARS
, r
->in
.dependencies
, ndr_charset_length(r
->in
.dependencies
, CH_UTF16
), sizeof(uint16_t), CH_UTF16
));
2727 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.service_start_name
));
2728 if (r
->in
.service_start_name
) {
2729 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.service_start_name
, CH_UTF16
)));
2730 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, 0));
2731 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.service_start_name
, CH_UTF16
)));
2732 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
));
2734 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.password
));
2735 if (r
->in
.password
) {
2736 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.password
, CH_UTF16
)));
2737 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, 0));
2738 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.password
, CH_UTF16
)));
2739 NDR_CHECK(ndr_push_charset(ndr
, NDR_SCALARS
, r
->in
.password
, ndr_charset_length(r
->in
.password
, CH_UTF16
), sizeof(uint16_t), CH_UTF16
));
2741 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.display_name
));
2742 if (r
->in
.display_name
) {
2743 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.display_name
, CH_UTF16
)));
2744 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, 0));
2745 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.display_name
, CH_UTF16
)));
2746 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
));
2749 if (flags
& NDR_OUT
) {
2750 if (r
->out
.tag_id
== NULL
) return NT_STATUS_INVALID_PARAMETER_MIX
;
2751 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, *r
->out
.tag_id
));
2752 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
2754 return NT_STATUS_OK
;
2757 NTSTATUS
ndr_pull_svcctl_ChangeServiceConfigA(struct ndr_pull
*ndr
, int flags
, struct svcctl_ChangeServiceConfigA
*r
)
2759 uint32_t _ptr_binary_path
;
2760 uint32_t _ptr_load_order_group
;
2761 uint32_t _ptr_dependencies
;
2762 uint32_t _ptr_service_start_name
;
2763 uint32_t _ptr_password
;
2764 uint32_t _ptr_display_name
;
2765 TALLOC_CTX
*_mem_save_handle_0
;
2766 TALLOC_CTX
*_mem_save_binary_path_0
;
2767 TALLOC_CTX
*_mem_save_load_order_group_0
;
2768 TALLOC_CTX
*_mem_save_tag_id_0
;
2769 TALLOC_CTX
*_mem_save_dependencies_0
;
2770 TALLOC_CTX
*_mem_save_service_start_name_0
;
2771 TALLOC_CTX
*_mem_save_password_0
;
2772 TALLOC_CTX
*_mem_save_display_name_0
;
2773 if (flags
& NDR_IN
) {
2774 ZERO_STRUCT(r
->out
);
2776 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
2777 NDR_PULL_ALLOC(ndr
, r
->in
.handle
);
2779 _mem_save_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
2780 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.handle
, LIBNDR_FLAG_REF_ALLOC
);
2781 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->in
.handle
));
2782 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_handle_0
, LIBNDR_FLAG_REF_ALLOC
);
2783 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.type
));
2784 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.start
));
2785 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.error
));
2786 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_binary_path
));
2787 if (_ptr_binary_path
) {
2788 NDR_PULL_ALLOC(ndr
, r
->in
.binary_path
);
2790 r
->in
.binary_path
= NULL
;
2792 if (r
->in
.binary_path
) {
2793 _mem_save_binary_path_0
= NDR_PULL_GET_MEM_CTX(ndr
);
2794 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.binary_path
, 0);
2795 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->in
.binary_path
));
2796 NDR_CHECK(ndr_pull_array_length(ndr
, &r
->in
.binary_path
));
2797 if (ndr_get_array_length(ndr
, &r
->in
.binary_path
) > ndr_get_array_size(ndr
, &r
->in
.binary_path
)) {
2798 return ndr_pull_error(ndr
, NDR_ERR_ARRAY_SIZE
, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr
, &r
->in
.binary_path
), ndr_get_array_length(ndr
, &r
->in
.binary_path
));
2800 NDR_CHECK(ndr_check_string_terminator(ndr
, ndr_get_array_length(ndr
, &r
->in
.binary_path
), sizeof(uint16_t)));
2801 NDR_CHECK(ndr_pull_charset(ndr
, NDR_SCALARS
, &r
->in
.binary_path
, ndr_get_array_length(ndr
, &r
->in
.binary_path
), sizeof(uint16_t), CH_UTF16
));
2802 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_binary_path_0
, 0);
2804 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_load_order_group
));
2805 if (_ptr_load_order_group
) {
2806 NDR_PULL_ALLOC(ndr
, r
->in
.load_order_group
);
2808 r
->in
.load_order_group
= NULL
;
2810 if (r
->in
.load_order_group
) {
2811 _mem_save_load_order_group_0
= NDR_PULL_GET_MEM_CTX(ndr
);
2812 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.load_order_group
, 0);
2813 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->in
.load_order_group
));
2814 NDR_CHECK(ndr_pull_array_length(ndr
, &r
->in
.load_order_group
));
2815 if (ndr_get_array_length(ndr
, &r
->in
.load_order_group
) > ndr_get_array_size(ndr
, &r
->in
.load_order_group
)) {
2816 return ndr_pull_error(ndr
, NDR_ERR_ARRAY_SIZE
, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr
, &r
->in
.load_order_group
), ndr_get_array_length(ndr
, &r
->in
.load_order_group
));
2818 NDR_CHECK(ndr_check_string_terminator(ndr
, ndr_get_array_length(ndr
, &r
->in
.load_order_group
), sizeof(uint16_t)));
2819 NDR_CHECK(ndr_pull_charset(ndr
, NDR_SCALARS
, &r
->in
.load_order_group
, ndr_get_array_length(ndr
, &r
->in
.load_order_group
), sizeof(uint16_t), CH_UTF16
));
2820 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_load_order_group_0
, 0);
2822 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_dependencies
));
2823 if (_ptr_dependencies
) {
2824 NDR_PULL_ALLOC(ndr
, r
->in
.dependencies
);
2826 r
->in
.dependencies
= NULL
;
2828 if (r
->in
.dependencies
) {
2829 _mem_save_dependencies_0
= NDR_PULL_GET_MEM_CTX(ndr
);
2830 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.dependencies
, 0);
2831 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->in
.dependencies
));
2832 NDR_CHECK(ndr_pull_array_length(ndr
, &r
->in
.dependencies
));
2833 if (ndr_get_array_length(ndr
, &r
->in
.dependencies
) > ndr_get_array_size(ndr
, &r
->in
.dependencies
)) {
2834 return ndr_pull_error(ndr
, NDR_ERR_ARRAY_SIZE
, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr
, &r
->in
.dependencies
), ndr_get_array_length(ndr
, &r
->in
.dependencies
));
2836 NDR_CHECK(ndr_check_string_terminator(ndr
, ndr_get_array_length(ndr
, &r
->in
.dependencies
), sizeof(uint16_t)));
2837 NDR_CHECK(ndr_pull_charset(ndr
, NDR_SCALARS
, &r
->in
.dependencies
, ndr_get_array_length(ndr
, &r
->in
.dependencies
), sizeof(uint16_t), CH_UTF16
));
2838 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_dependencies_0
, 0);
2840 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_service_start_name
));
2841 if (_ptr_service_start_name
) {
2842 NDR_PULL_ALLOC(ndr
, r
->in
.service_start_name
);
2844 r
->in
.service_start_name
= NULL
;
2846 if (r
->in
.service_start_name
) {
2847 _mem_save_service_start_name_0
= NDR_PULL_GET_MEM_CTX(ndr
);
2848 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.service_start_name
, 0);
2849 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->in
.service_start_name
));
2850 NDR_CHECK(ndr_pull_array_length(ndr
, &r
->in
.service_start_name
));
2851 if (ndr_get_array_length(ndr
, &r
->in
.service_start_name
) > ndr_get_array_size(ndr
, &r
->in
.service_start_name
)) {
2852 return ndr_pull_error(ndr
, NDR_ERR_ARRAY_SIZE
, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr
, &r
->in
.service_start_name
), ndr_get_array_length(ndr
, &r
->in
.service_start_name
));
2854 NDR_CHECK(ndr_check_string_terminator(ndr
, ndr_get_array_length(ndr
, &r
->in
.service_start_name
), sizeof(uint16_t)));
2855 NDR_CHECK(ndr_pull_charset(ndr
, NDR_SCALARS
, &r
->in
.service_start_name
, ndr_get_array_length(ndr
, &r
->in
.service_start_name
), sizeof(uint16_t), CH_UTF16
));
2856 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_service_start_name_0
, 0);
2858 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_password
));
2859 if (_ptr_password
) {
2860 NDR_PULL_ALLOC(ndr
, r
->in
.password
);
2862 r
->in
.password
= NULL
;
2864 if (r
->in
.password
) {
2865 _mem_save_password_0
= NDR_PULL_GET_MEM_CTX(ndr
);
2866 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.password
, 0);
2867 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->in
.password
));
2868 NDR_CHECK(ndr_pull_array_length(ndr
, &r
->in
.password
));
2869 if (ndr_get_array_length(ndr
, &r
->in
.password
) > ndr_get_array_size(ndr
, &r
->in
.password
)) {
2870 return ndr_pull_error(ndr
, NDR_ERR_ARRAY_SIZE
, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr
, &r
->in
.password
), ndr_get_array_length(ndr
, &r
->in
.password
));
2872 NDR_CHECK(ndr_check_string_terminator(ndr
, ndr_get_array_length(ndr
, &r
->in
.password
), sizeof(uint16_t)));
2873 NDR_CHECK(ndr_pull_charset(ndr
, NDR_SCALARS
, &r
->in
.password
, ndr_get_array_length(ndr
, &r
->in
.password
), sizeof(uint16_t), CH_UTF16
));
2874 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_password_0
, 0);
2876 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_display_name
));
2877 if (_ptr_display_name
) {
2878 NDR_PULL_ALLOC(ndr
, r
->in
.display_name
);
2880 r
->in
.display_name
= NULL
;
2882 if (r
->in
.display_name
) {
2883 _mem_save_display_name_0
= NDR_PULL_GET_MEM_CTX(ndr
);
2884 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.display_name
, 0);
2885 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->in
.display_name
));
2886 NDR_CHECK(ndr_pull_array_length(ndr
, &r
->in
.display_name
));
2887 if (ndr_get_array_length(ndr
, &r
->in
.display_name
) > ndr_get_array_size(ndr
, &r
->in
.display_name
)) {
2888 return ndr_pull_error(ndr
, NDR_ERR_ARRAY_SIZE
, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr
, &r
->in
.display_name
), ndr_get_array_length(ndr
, &r
->in
.display_name
));
2890 NDR_CHECK(ndr_check_string_terminator(ndr
, ndr_get_array_length(ndr
, &r
->in
.display_name
), sizeof(uint16_t)));
2891 NDR_CHECK(ndr_pull_charset(ndr
, NDR_SCALARS
, &r
->in
.display_name
, ndr_get_array_length(ndr
, &r
->in
.display_name
), sizeof(uint16_t), CH_UTF16
));
2892 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_display_name_0
, 0);
2894 NDR_PULL_ALLOC(ndr
, r
->out
.tag_id
);
2895 ZERO_STRUCTP(r
->out
.tag_id
);
2897 if (flags
& NDR_OUT
) {
2898 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
2899 NDR_PULL_ALLOC(ndr
, r
->out
.tag_id
);
2901 _mem_save_tag_id_0
= NDR_PULL_GET_MEM_CTX(ndr
);
2902 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.tag_id
, LIBNDR_FLAG_REF_ALLOC
);
2903 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, r
->out
.tag_id
));
2904 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_tag_id_0
, LIBNDR_FLAG_REF_ALLOC
);
2905 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
2907 return NT_STATUS_OK
;
2910 _PUBLIC_
void ndr_print_svcctl_ChangeServiceConfigA(struct ndr_print
*ndr
, const char *name
, int flags
, const struct svcctl_ChangeServiceConfigA
*r
)
2912 ndr_print_struct(ndr
, name
, "svcctl_ChangeServiceConfigA");
2914 if (flags
& NDR_SET_VALUES
) {
2915 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
2917 if (flags
& NDR_IN
) {
2918 ndr_print_struct(ndr
, "in", "svcctl_ChangeServiceConfigA");
2920 ndr_print_ptr(ndr
, "handle", r
->in
.handle
);
2922 ndr_print_policy_handle(ndr
, "handle", r
->in
.handle
);
2924 ndr_print_uint32(ndr
, "type", r
->in
.type
);
2925 ndr_print_uint32(ndr
, "start", r
->in
.start
);
2926 ndr_print_uint32(ndr
, "error", r
->in
.error
);
2927 ndr_print_ptr(ndr
, "binary_path", r
->in
.binary_path
);
2929 if (r
->in
.binary_path
) {
2930 ndr_print_string(ndr
, "binary_path", r
->in
.binary_path
);
2933 ndr_print_ptr(ndr
, "load_order_group", r
->in
.load_order_group
);
2935 if (r
->in
.load_order_group
) {
2936 ndr_print_string(ndr
, "load_order_group", r
->in
.load_order_group
);
2939 ndr_print_ptr(ndr
, "dependencies", r
->in
.dependencies
);
2941 if (r
->in
.dependencies
) {
2942 ndr_print_string(ndr
, "dependencies", r
->in
.dependencies
);
2945 ndr_print_ptr(ndr
, "service_start_name", r
->in
.service_start_name
);
2947 if (r
->in
.service_start_name
) {
2948 ndr_print_string(ndr
, "service_start_name", r
->in
.service_start_name
);
2951 ndr_print_ptr(ndr
, "password", r
->in
.password
);
2953 if (r
->in
.password
) {
2954 ndr_print_string(ndr
, "password", r
->in
.password
);
2957 ndr_print_ptr(ndr
, "display_name", r
->in
.display_name
);
2959 if (r
->in
.display_name
) {
2960 ndr_print_string(ndr
, "display_name", r
->in
.display_name
);
2965 if (flags
& NDR_OUT
) {
2966 ndr_print_struct(ndr
, "out", "svcctl_ChangeServiceConfigA");
2968 ndr_print_ptr(ndr
, "tag_id", r
->out
.tag_id
);
2970 ndr_print_uint32(ndr
, "tag_id", *r
->out
.tag_id
);
2972 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
2978 NTSTATUS
ndr_push_svcctl_CreateServiceA(struct ndr_push
*ndr
, int flags
, const struct svcctl_CreateServiceA
*r
)
2980 if (flags
& NDR_IN
) {
2981 if (r
->in
.handle
== NULL
) return NT_STATUS_INVALID_PARAMETER_MIX
;
2982 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->in
.handle
));
2983 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.ServiceName
));
2984 if (r
->in
.ServiceName
) {
2985 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.ServiceName
, CH_UTF16
)));
2986 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, 0));
2987 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.ServiceName
, CH_UTF16
)));
2988 NDR_CHECK(ndr_push_charset(ndr
, NDR_SCALARS
, r
->in
.ServiceName
, ndr_charset_length(r
->in
.ServiceName
, CH_UTF16
), sizeof(uint16_t), CH_UTF16
));
2990 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.DisplayName
));
2991 if (r
->in
.DisplayName
) {
2992 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.DisplayName
, CH_UTF16
)));
2993 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, 0));
2994 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.DisplayName
, CH_UTF16
)));
2995 NDR_CHECK(ndr_push_charset(ndr
, NDR_SCALARS
, r
->in
.DisplayName
, ndr_charset_length(r
->in
.DisplayName
, CH_UTF16
), sizeof(uint16_t), CH_UTF16
));
2997 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.desired_access
));
2998 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.type
));
2999 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.start_type
));
3000 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.error_control
));
3001 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.binary_path
));
3002 if (r
->in
.binary_path
) {
3003 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.binary_path
, CH_UTF16
)));
3004 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, 0));
3005 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.binary_path
, CH_UTF16
)));
3006 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
));
3008 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.LoadOrderGroupKey
));
3009 if (r
->in
.LoadOrderGroupKey
) {
3010 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.LoadOrderGroupKey
, CH_UTF16
)));
3011 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, 0));
3012 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.LoadOrderGroupKey
, CH_UTF16
)));
3013 NDR_CHECK(ndr_push_charset(ndr
, NDR_SCALARS
, r
->in
.LoadOrderGroupKey
, ndr_charset_length(r
->in
.LoadOrderGroupKey
, CH_UTF16
), sizeof(uint16_t), CH_UTF16
));
3015 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.dependencies
));
3016 if (r
->in
.dependencies
) {
3017 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.dependencies
, CH_UTF16
)));
3018 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, 0));
3019 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.dependencies
, CH_UTF16
)));
3020 NDR_CHECK(ndr_push_charset(ndr
, NDR_SCALARS
, r
->in
.dependencies
, ndr_charset_length(r
->in
.dependencies
, CH_UTF16
), sizeof(uint16_t), CH_UTF16
));
3022 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.service_start_name
));
3023 if (r
->in
.service_start_name
) {
3024 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.service_start_name
, CH_UTF16
)));
3025 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, 0));
3026 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.service_start_name
, CH_UTF16
)));
3027 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
));
3029 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.password
));
3030 if (r
->in
.password
) {
3031 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.password
, CH_UTF16
)));
3032 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, 0));
3033 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.password
, CH_UTF16
)));
3034 NDR_CHECK(ndr_push_charset(ndr
, NDR_SCALARS
, r
->in
.password
, ndr_charset_length(r
->in
.password
, CH_UTF16
), sizeof(uint16_t), CH_UTF16
));
3037 if (flags
& NDR_OUT
) {
3038 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->out
.TagId
));
3040 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, *r
->out
.TagId
));
3042 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
3044 return NT_STATUS_OK
;
3047 NTSTATUS
ndr_pull_svcctl_CreateServiceA(struct ndr_pull
*ndr
, int flags
, struct svcctl_CreateServiceA
*r
)
3049 uint32_t _ptr_ServiceName
;
3050 uint32_t _ptr_DisplayName
;
3051 uint32_t _ptr_binary_path
;
3052 uint32_t _ptr_LoadOrderGroupKey
;
3053 uint32_t _ptr_TagId
;
3054 uint32_t _ptr_dependencies
;
3055 uint32_t _ptr_service_start_name
;
3056 uint32_t _ptr_password
;
3057 TALLOC_CTX
*_mem_save_handle_0
;
3058 TALLOC_CTX
*_mem_save_ServiceName_0
;
3059 TALLOC_CTX
*_mem_save_DisplayName_0
;
3060 TALLOC_CTX
*_mem_save_binary_path_0
;
3061 TALLOC_CTX
*_mem_save_LoadOrderGroupKey_0
;
3062 TALLOC_CTX
*_mem_save_TagId_0
;
3063 TALLOC_CTX
*_mem_save_dependencies_0
;
3064 TALLOC_CTX
*_mem_save_service_start_name_0
;
3065 TALLOC_CTX
*_mem_save_password_0
;
3066 if (flags
& NDR_IN
) {
3067 ZERO_STRUCT(r
->out
);
3069 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
3070 NDR_PULL_ALLOC(ndr
, r
->in
.handle
);
3072 _mem_save_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
3073 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.handle
, LIBNDR_FLAG_REF_ALLOC
);
3074 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->in
.handle
));
3075 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_handle_0
, LIBNDR_FLAG_REF_ALLOC
);
3076 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_ServiceName
));
3077 if (_ptr_ServiceName
) {
3078 NDR_PULL_ALLOC(ndr
, r
->in
.ServiceName
);
3080 r
->in
.ServiceName
= NULL
;
3082 if (r
->in
.ServiceName
) {
3083 _mem_save_ServiceName_0
= NDR_PULL_GET_MEM_CTX(ndr
);
3084 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.ServiceName
, 0);
3085 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->in
.ServiceName
));
3086 NDR_CHECK(ndr_pull_array_length(ndr
, &r
->in
.ServiceName
));
3087 if (ndr_get_array_length(ndr
, &r
->in
.ServiceName
) > ndr_get_array_size(ndr
, &r
->in
.ServiceName
)) {
3088 return ndr_pull_error(ndr
, NDR_ERR_ARRAY_SIZE
, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr
, &r
->in
.ServiceName
), ndr_get_array_length(ndr
, &r
->in
.ServiceName
));
3090 NDR_CHECK(ndr_check_string_terminator(ndr
, ndr_get_array_length(ndr
, &r
->in
.ServiceName
), sizeof(uint16_t)));
3091 NDR_CHECK(ndr_pull_charset(ndr
, NDR_SCALARS
, &r
->in
.ServiceName
, ndr_get_array_length(ndr
, &r
->in
.ServiceName
), sizeof(uint16_t), CH_UTF16
));
3092 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_ServiceName_0
, 0);
3094 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_DisplayName
));
3095 if (_ptr_DisplayName
) {
3096 NDR_PULL_ALLOC(ndr
, r
->in
.DisplayName
);
3098 r
->in
.DisplayName
= NULL
;
3100 if (r
->in
.DisplayName
) {
3101 _mem_save_DisplayName_0
= NDR_PULL_GET_MEM_CTX(ndr
);
3102 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.DisplayName
, 0);
3103 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->in
.DisplayName
));
3104 NDR_CHECK(ndr_pull_array_length(ndr
, &r
->in
.DisplayName
));
3105 if (ndr_get_array_length(ndr
, &r
->in
.DisplayName
) > ndr_get_array_size(ndr
, &r
->in
.DisplayName
)) {
3106 return ndr_pull_error(ndr
, NDR_ERR_ARRAY_SIZE
, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr
, &r
->in
.DisplayName
), ndr_get_array_length(ndr
, &r
->in
.DisplayName
));
3108 NDR_CHECK(ndr_check_string_terminator(ndr
, ndr_get_array_length(ndr
, &r
->in
.DisplayName
), sizeof(uint16_t)));
3109 NDR_CHECK(ndr_pull_charset(ndr
, NDR_SCALARS
, &r
->in
.DisplayName
, ndr_get_array_length(ndr
, &r
->in
.DisplayName
), sizeof(uint16_t), CH_UTF16
));
3110 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_DisplayName_0
, 0);
3112 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.desired_access
));
3113 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.type
));
3114 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.start_type
));
3115 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.error_control
));
3116 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_binary_path
));
3117 if (_ptr_binary_path
) {
3118 NDR_PULL_ALLOC(ndr
, r
->in
.binary_path
);
3120 r
->in
.binary_path
= NULL
;
3122 if (r
->in
.binary_path
) {
3123 _mem_save_binary_path_0
= NDR_PULL_GET_MEM_CTX(ndr
);
3124 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.binary_path
, 0);
3125 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->in
.binary_path
));
3126 NDR_CHECK(ndr_pull_array_length(ndr
, &r
->in
.binary_path
));
3127 if (ndr_get_array_length(ndr
, &r
->in
.binary_path
) > ndr_get_array_size(ndr
, &r
->in
.binary_path
)) {
3128 return ndr_pull_error(ndr
, NDR_ERR_ARRAY_SIZE
, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr
, &r
->in
.binary_path
), ndr_get_array_length(ndr
, &r
->in
.binary_path
));
3130 NDR_CHECK(ndr_check_string_terminator(ndr
, ndr_get_array_length(ndr
, &r
->in
.binary_path
), sizeof(uint16_t)));
3131 NDR_CHECK(ndr_pull_charset(ndr
, NDR_SCALARS
, &r
->in
.binary_path
, ndr_get_array_length(ndr
, &r
->in
.binary_path
), sizeof(uint16_t), CH_UTF16
));
3132 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_binary_path_0
, 0);
3134 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_LoadOrderGroupKey
));
3135 if (_ptr_LoadOrderGroupKey
) {
3136 NDR_PULL_ALLOC(ndr
, r
->in
.LoadOrderGroupKey
);
3138 r
->in
.LoadOrderGroupKey
= NULL
;
3140 if (r
->in
.LoadOrderGroupKey
) {
3141 _mem_save_LoadOrderGroupKey_0
= NDR_PULL_GET_MEM_CTX(ndr
);
3142 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.LoadOrderGroupKey
, 0);
3143 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->in
.LoadOrderGroupKey
));
3144 NDR_CHECK(ndr_pull_array_length(ndr
, &r
->in
.LoadOrderGroupKey
));
3145 if (ndr_get_array_length(ndr
, &r
->in
.LoadOrderGroupKey
) > ndr_get_array_size(ndr
, &r
->in
.LoadOrderGroupKey
)) {
3146 return ndr_pull_error(ndr
, NDR_ERR_ARRAY_SIZE
, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr
, &r
->in
.LoadOrderGroupKey
), ndr_get_array_length(ndr
, &r
->in
.LoadOrderGroupKey
));
3148 NDR_CHECK(ndr_check_string_terminator(ndr
, ndr_get_array_length(ndr
, &r
->in
.LoadOrderGroupKey
), sizeof(uint16_t)));
3149 NDR_CHECK(ndr_pull_charset(ndr
, NDR_SCALARS
, &r
->in
.LoadOrderGroupKey
, ndr_get_array_length(ndr
, &r
->in
.LoadOrderGroupKey
), sizeof(uint16_t), CH_UTF16
));
3150 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_LoadOrderGroupKey_0
, 0);
3152 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_dependencies
));
3153 if (_ptr_dependencies
) {
3154 NDR_PULL_ALLOC(ndr
, r
->in
.dependencies
);
3156 r
->in
.dependencies
= NULL
;
3158 if (r
->in
.dependencies
) {
3159 _mem_save_dependencies_0
= NDR_PULL_GET_MEM_CTX(ndr
);
3160 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.dependencies
, 0);
3161 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->in
.dependencies
));
3162 NDR_CHECK(ndr_pull_array_length(ndr
, &r
->in
.dependencies
));
3163 if (ndr_get_array_length(ndr
, &r
->in
.dependencies
) > ndr_get_array_size(ndr
, &r
->in
.dependencies
)) {
3164 return ndr_pull_error(ndr
, NDR_ERR_ARRAY_SIZE
, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr
, &r
->in
.dependencies
), ndr_get_array_length(ndr
, &r
->in
.dependencies
));
3166 NDR_CHECK(ndr_check_string_terminator(ndr
, ndr_get_array_length(ndr
, &r
->in
.dependencies
), sizeof(uint16_t)));
3167 NDR_CHECK(ndr_pull_charset(ndr
, NDR_SCALARS
, &r
->in
.dependencies
, ndr_get_array_length(ndr
, &r
->in
.dependencies
), sizeof(uint16_t), CH_UTF16
));
3168 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_dependencies_0
, 0);
3170 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_service_start_name
));
3171 if (_ptr_service_start_name
) {
3172 NDR_PULL_ALLOC(ndr
, r
->in
.service_start_name
);
3174 r
->in
.service_start_name
= NULL
;
3176 if (r
->in
.service_start_name
) {
3177 _mem_save_service_start_name_0
= NDR_PULL_GET_MEM_CTX(ndr
);
3178 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.service_start_name
, 0);
3179 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->in
.service_start_name
));
3180 NDR_CHECK(ndr_pull_array_length(ndr
, &r
->in
.service_start_name
));
3181 if (ndr_get_array_length(ndr
, &r
->in
.service_start_name
) > ndr_get_array_size(ndr
, &r
->in
.service_start_name
)) {
3182 return ndr_pull_error(ndr
, NDR_ERR_ARRAY_SIZE
, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr
, &r
->in
.service_start_name
), ndr_get_array_length(ndr
, &r
->in
.service_start_name
));
3184 NDR_CHECK(ndr_check_string_terminator(ndr
, ndr_get_array_length(ndr
, &r
->in
.service_start_name
), sizeof(uint16_t)));
3185 NDR_CHECK(ndr_pull_charset(ndr
, NDR_SCALARS
, &r
->in
.service_start_name
, ndr_get_array_length(ndr
, &r
->in
.service_start_name
), sizeof(uint16_t), CH_UTF16
));
3186 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_service_start_name_0
, 0);
3188 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_password
));
3189 if (_ptr_password
) {
3190 NDR_PULL_ALLOC(ndr
, r
->in
.password
);
3192 r
->in
.password
= NULL
;
3194 if (r
->in
.password
) {
3195 _mem_save_password_0
= NDR_PULL_GET_MEM_CTX(ndr
);
3196 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.password
, 0);
3197 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->in
.password
));
3198 NDR_CHECK(ndr_pull_array_length(ndr
, &r
->in
.password
));
3199 if (ndr_get_array_length(ndr
, &r
->in
.password
) > ndr_get_array_size(ndr
, &r
->in
.password
)) {
3200 return ndr_pull_error(ndr
, NDR_ERR_ARRAY_SIZE
, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr
, &r
->in
.password
), ndr_get_array_length(ndr
, &r
->in
.password
));
3202 NDR_CHECK(ndr_check_string_terminator(ndr
, ndr_get_array_length(ndr
, &r
->in
.password
), sizeof(uint16_t)));
3203 NDR_CHECK(ndr_pull_charset(ndr
, NDR_SCALARS
, &r
->in
.password
, ndr_get_array_length(ndr
, &r
->in
.password
), sizeof(uint16_t), CH_UTF16
));
3204 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_password_0
, 0);
3207 if (flags
& NDR_OUT
) {
3208 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_TagId
));
3210 NDR_PULL_ALLOC(ndr
, r
->out
.TagId
);
3212 r
->out
.TagId
= NULL
;
3215 _mem_save_TagId_0
= NDR_PULL_GET_MEM_CTX(ndr
);
3216 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.TagId
, 0);
3217 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, r
->out
.TagId
));
3218 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_TagId_0
, 0);
3220 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
3222 return NT_STATUS_OK
;
3225 _PUBLIC_
void ndr_print_svcctl_CreateServiceA(struct ndr_print
*ndr
, const char *name
, int flags
, const struct svcctl_CreateServiceA
*r
)
3227 ndr_print_struct(ndr
, name
, "svcctl_CreateServiceA");
3229 if (flags
& NDR_SET_VALUES
) {
3230 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
3232 if (flags
& NDR_IN
) {
3233 ndr_print_struct(ndr
, "in", "svcctl_CreateServiceA");
3235 ndr_print_ptr(ndr
, "handle", r
->in
.handle
);
3237 ndr_print_policy_handle(ndr
, "handle", r
->in
.handle
);
3239 ndr_print_ptr(ndr
, "ServiceName", r
->in
.ServiceName
);
3241 if (r
->in
.ServiceName
) {
3242 ndr_print_string(ndr
, "ServiceName", r
->in
.ServiceName
);
3245 ndr_print_ptr(ndr
, "DisplayName", r
->in
.DisplayName
);
3247 if (r
->in
.DisplayName
) {
3248 ndr_print_string(ndr
, "DisplayName", r
->in
.DisplayName
);
3251 ndr_print_uint32(ndr
, "desired_access", r
->in
.desired_access
);
3252 ndr_print_uint32(ndr
, "type", r
->in
.type
);
3253 ndr_print_uint32(ndr
, "start_type", r
->in
.start_type
);
3254 ndr_print_uint32(ndr
, "error_control", r
->in
.error_control
);
3255 ndr_print_ptr(ndr
, "binary_path", r
->in
.binary_path
);
3257 if (r
->in
.binary_path
) {
3258 ndr_print_string(ndr
, "binary_path", r
->in
.binary_path
);
3261 ndr_print_ptr(ndr
, "LoadOrderGroupKey", r
->in
.LoadOrderGroupKey
);
3263 if (r
->in
.LoadOrderGroupKey
) {
3264 ndr_print_string(ndr
, "LoadOrderGroupKey", r
->in
.LoadOrderGroupKey
);
3267 ndr_print_ptr(ndr
, "dependencies", r
->in
.dependencies
);
3269 if (r
->in
.dependencies
) {
3270 ndr_print_string(ndr
, "dependencies", r
->in
.dependencies
);
3273 ndr_print_ptr(ndr
, "service_start_name", r
->in
.service_start_name
);
3275 if (r
->in
.service_start_name
) {
3276 ndr_print_string(ndr
, "service_start_name", r
->in
.service_start_name
);
3279 ndr_print_ptr(ndr
, "password", r
->in
.password
);
3281 if (r
->in
.password
) {
3282 ndr_print_string(ndr
, "password", r
->in
.password
);
3287 if (flags
& NDR_OUT
) {
3288 ndr_print_struct(ndr
, "out", "svcctl_CreateServiceA");
3290 ndr_print_ptr(ndr
, "TagId", r
->out
.TagId
);
3293 ndr_print_uint32(ndr
, "TagId", *r
->out
.TagId
);
3296 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
3302 NTSTATUS
ndr_push_svcctl_EnumDependentServicesA(struct ndr_push
*ndr
, int flags
, const struct svcctl_EnumDependentServicesA
*r
)
3304 if (flags
& NDR_IN
) {
3305 if (r
->in
.service
== NULL
) return NT_STATUS_INVALID_PARAMETER_MIX
;
3306 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->in
.service
));
3307 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.state
));
3308 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.buf_size
));
3310 if (flags
& NDR_OUT
) {
3311 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->out
.service_status
));
3312 if (r
->out
.service_status
) {
3313 NDR_CHECK(ndr_push_ENUM_SERVICE_STATUS(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->out
.service_status
));
3315 if (r
->out
.bytes_needed
== NULL
) return NT_STATUS_INVALID_PARAMETER_MIX
;
3316 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, *r
->out
.bytes_needed
));
3317 if (r
->out
.services_returned
== NULL
) return NT_STATUS_INVALID_PARAMETER_MIX
;
3318 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, *r
->out
.services_returned
));
3319 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
3321 return NT_STATUS_OK
;
3324 NTSTATUS
ndr_pull_svcctl_EnumDependentServicesA(struct ndr_pull
*ndr
, int flags
, struct svcctl_EnumDependentServicesA
*r
)
3326 uint32_t _ptr_service_status
;
3327 TALLOC_CTX
*_mem_save_service_0
;
3328 TALLOC_CTX
*_mem_save_service_status_0
;
3329 TALLOC_CTX
*_mem_save_bytes_needed_0
;
3330 TALLOC_CTX
*_mem_save_services_returned_0
;
3331 if (flags
& NDR_IN
) {
3332 ZERO_STRUCT(r
->out
);
3334 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
3335 NDR_PULL_ALLOC(ndr
, r
->in
.service
);
3337 _mem_save_service_0
= NDR_PULL_GET_MEM_CTX(ndr
);
3338 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.service
, LIBNDR_FLAG_REF_ALLOC
);
3339 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->in
.service
));
3340 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_service_0
, LIBNDR_FLAG_REF_ALLOC
);
3341 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.state
));
3342 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.buf_size
));
3343 NDR_PULL_ALLOC(ndr
, r
->out
.bytes_needed
);
3344 ZERO_STRUCTP(r
->out
.bytes_needed
);
3345 NDR_PULL_ALLOC(ndr
, r
->out
.services_returned
);
3346 ZERO_STRUCTP(r
->out
.services_returned
);
3348 if (flags
& NDR_OUT
) {
3349 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_service_status
));
3350 if (_ptr_service_status
) {
3351 NDR_PULL_ALLOC(ndr
, r
->out
.service_status
);
3353 r
->out
.service_status
= NULL
;
3355 if (r
->out
.service_status
) {
3356 _mem_save_service_status_0
= NDR_PULL_GET_MEM_CTX(ndr
);
3357 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.service_status
, 0);
3358 NDR_CHECK(ndr_pull_ENUM_SERVICE_STATUS(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->out
.service_status
));
3359 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_service_status_0
, 0);
3361 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
3362 NDR_PULL_ALLOC(ndr
, r
->out
.bytes_needed
);
3364 _mem_save_bytes_needed_0
= NDR_PULL_GET_MEM_CTX(ndr
);
3365 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.bytes_needed
, LIBNDR_FLAG_REF_ALLOC
);
3366 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, r
->out
.bytes_needed
));
3367 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_bytes_needed_0
, LIBNDR_FLAG_REF_ALLOC
);
3368 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
3369 NDR_PULL_ALLOC(ndr
, r
->out
.services_returned
);
3371 _mem_save_services_returned_0
= NDR_PULL_GET_MEM_CTX(ndr
);
3372 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.services_returned
, LIBNDR_FLAG_REF_ALLOC
);
3373 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, r
->out
.services_returned
));
3374 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_services_returned_0
, LIBNDR_FLAG_REF_ALLOC
);
3375 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
3377 return NT_STATUS_OK
;
3380 _PUBLIC_
void ndr_print_svcctl_EnumDependentServicesA(struct ndr_print
*ndr
, const char *name
, int flags
, const struct svcctl_EnumDependentServicesA
*r
)
3382 ndr_print_struct(ndr
, name
, "svcctl_EnumDependentServicesA");
3384 if (flags
& NDR_SET_VALUES
) {
3385 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
3387 if (flags
& NDR_IN
) {
3388 ndr_print_struct(ndr
, "in", "svcctl_EnumDependentServicesA");
3390 ndr_print_ptr(ndr
, "service", r
->in
.service
);
3392 ndr_print_policy_handle(ndr
, "service", r
->in
.service
);
3394 ndr_print_uint32(ndr
, "state", r
->in
.state
);
3395 ndr_print_uint32(ndr
, "buf_size", r
->in
.buf_size
);
3398 if (flags
& NDR_OUT
) {
3399 ndr_print_struct(ndr
, "out", "svcctl_EnumDependentServicesA");
3401 ndr_print_ptr(ndr
, "service_status", r
->out
.service_status
);
3403 if (r
->out
.service_status
) {
3404 ndr_print_ENUM_SERVICE_STATUS(ndr
, "service_status", r
->out
.service_status
);
3407 ndr_print_ptr(ndr
, "bytes_needed", r
->out
.bytes_needed
);
3409 ndr_print_uint32(ndr
, "bytes_needed", *r
->out
.bytes_needed
);
3411 ndr_print_ptr(ndr
, "services_returned", r
->out
.services_returned
);
3413 ndr_print_uint32(ndr
, "services_returned", *r
->out
.services_returned
);
3415 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
3421 NTSTATUS
ndr_push_svcctl_EnumServicesStatusA(struct ndr_push
*ndr
, int flags
, const struct svcctl_EnumServicesStatusA
*r
)
3423 if (flags
& NDR_IN
) {
3424 if (r
->in
.handle
== NULL
) return NT_STATUS_INVALID_PARAMETER_MIX
;
3425 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->in
.handle
));
3426 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.type
));
3427 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.state
));
3428 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.buf_size
));
3429 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.resume_handle
));
3430 if (r
->in
.resume_handle
) {
3431 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, *r
->in
.resume_handle
));
3434 if (flags
& NDR_OUT
) {
3435 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.buf_size
));
3436 NDR_CHECK(ndr_push_array_uint8(ndr
, NDR_SCALARS
, r
->out
.service
, r
->in
.buf_size
));
3437 if (r
->out
.bytes_needed
== NULL
) return NT_STATUS_INVALID_PARAMETER_MIX
;
3438 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, *r
->out
.bytes_needed
));
3439 if (r
->out
.services_returned
== NULL
) return NT_STATUS_INVALID_PARAMETER_MIX
;
3440 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, *r
->out
.services_returned
));
3441 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->out
.resume_handle
));
3442 if (r
->out
.resume_handle
) {
3443 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, *r
->out
.resume_handle
));
3445 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
3447 return NT_STATUS_OK
;
3450 NTSTATUS
ndr_pull_svcctl_EnumServicesStatusA(struct ndr_pull
*ndr
, int flags
, struct svcctl_EnumServicesStatusA
*r
)
3452 uint32_t _ptr_resume_handle
;
3453 TALLOC_CTX
*_mem_save_handle_0
;
3454 TALLOC_CTX
*_mem_save_bytes_needed_0
;
3455 TALLOC_CTX
*_mem_save_services_returned_0
;
3456 TALLOC_CTX
*_mem_save_resume_handle_0
;
3457 if (flags
& NDR_IN
) {
3458 ZERO_STRUCT(r
->out
);
3460 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
3461 NDR_PULL_ALLOC(ndr
, r
->in
.handle
);
3463 _mem_save_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
3464 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.handle
, LIBNDR_FLAG_REF_ALLOC
);
3465 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->in
.handle
));
3466 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_handle_0
, LIBNDR_FLAG_REF_ALLOC
);
3467 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.type
));
3468 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.state
));
3469 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.buf_size
));
3470 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_resume_handle
));
3471 if (_ptr_resume_handle
) {
3472 NDR_PULL_ALLOC(ndr
, r
->in
.resume_handle
);
3474 r
->in
.resume_handle
= NULL
;
3476 if (r
->in
.resume_handle
) {
3477 _mem_save_resume_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
3478 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.resume_handle
, 0);
3479 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, r
->in
.resume_handle
));
3480 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_resume_handle_0
, 0);
3482 NDR_PULL_ALLOC(ndr
, r
->out
.bytes_needed
);
3483 ZERO_STRUCTP(r
->out
.bytes_needed
);
3484 NDR_PULL_ALLOC(ndr
, r
->out
.services_returned
);
3485 ZERO_STRUCTP(r
->out
.services_returned
);
3487 if (flags
& NDR_OUT
) {
3488 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->out
.service
));
3489 NDR_PULL_ALLOC_N(ndr
, r
->out
.service
, ndr_get_array_size(ndr
, &r
->out
.service
));
3490 NDR_CHECK(ndr_pull_array_uint8(ndr
, NDR_SCALARS
, r
->out
.service
, ndr_get_array_size(ndr
, &r
->out
.service
)));
3491 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
3492 NDR_PULL_ALLOC(ndr
, r
->out
.bytes_needed
);
3494 _mem_save_bytes_needed_0
= NDR_PULL_GET_MEM_CTX(ndr
);
3495 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.bytes_needed
, LIBNDR_FLAG_REF_ALLOC
);
3496 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, r
->out
.bytes_needed
));
3497 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_bytes_needed_0
, LIBNDR_FLAG_REF_ALLOC
);
3498 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
3499 NDR_PULL_ALLOC(ndr
, r
->out
.services_returned
);
3501 _mem_save_services_returned_0
= NDR_PULL_GET_MEM_CTX(ndr
);
3502 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.services_returned
, LIBNDR_FLAG_REF_ALLOC
);
3503 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, r
->out
.services_returned
));
3504 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_services_returned_0
, LIBNDR_FLAG_REF_ALLOC
);
3505 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_resume_handle
));
3506 if (_ptr_resume_handle
) {
3507 NDR_PULL_ALLOC(ndr
, r
->out
.resume_handle
);
3509 r
->out
.resume_handle
= NULL
;
3511 if (r
->out
.resume_handle
) {
3512 _mem_save_resume_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
3513 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.resume_handle
, 0);
3514 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, r
->out
.resume_handle
));
3515 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_resume_handle_0
, 0);
3517 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
3518 if (r
->out
.service
) {
3519 NDR_CHECK(ndr_check_array_size(ndr
, (void*)&r
->out
.service
, r
->in
.buf_size
));
3522 return NT_STATUS_OK
;
3525 _PUBLIC_
void ndr_print_svcctl_EnumServicesStatusA(struct ndr_print
*ndr
, const char *name
, int flags
, const struct svcctl_EnumServicesStatusA
*r
)
3527 ndr_print_struct(ndr
, name
, "svcctl_EnumServicesStatusA");
3529 if (flags
& NDR_SET_VALUES
) {
3530 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
3532 if (flags
& NDR_IN
) {
3533 ndr_print_struct(ndr
, "in", "svcctl_EnumServicesStatusA");
3535 ndr_print_ptr(ndr
, "handle", r
->in
.handle
);
3537 ndr_print_policy_handle(ndr
, "handle", r
->in
.handle
);
3539 ndr_print_uint32(ndr
, "type", r
->in
.type
);
3540 ndr_print_uint32(ndr
, "state", r
->in
.state
);
3541 ndr_print_uint32(ndr
, "buf_size", r
->in
.buf_size
);
3542 ndr_print_ptr(ndr
, "resume_handle", r
->in
.resume_handle
);
3544 if (r
->in
.resume_handle
) {
3545 ndr_print_uint32(ndr
, "resume_handle", *r
->in
.resume_handle
);
3550 if (flags
& NDR_OUT
) {
3551 ndr_print_struct(ndr
, "out", "svcctl_EnumServicesStatusA");
3553 ndr_print_array_uint8(ndr
, "service", r
->out
.service
, r
->in
.buf_size
);
3554 ndr_print_ptr(ndr
, "bytes_needed", r
->out
.bytes_needed
);
3556 ndr_print_uint32(ndr
, "bytes_needed", *r
->out
.bytes_needed
);
3558 ndr_print_ptr(ndr
, "services_returned", r
->out
.services_returned
);
3560 ndr_print_uint32(ndr
, "services_returned", *r
->out
.services_returned
);
3562 ndr_print_ptr(ndr
, "resume_handle", r
->out
.resume_handle
);
3564 if (r
->out
.resume_handle
) {
3565 ndr_print_uint32(ndr
, "resume_handle", *r
->out
.resume_handle
);
3568 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
3574 NTSTATUS
ndr_push_svcctl_OpenSCManagerA(struct ndr_push
*ndr
, int flags
, const struct svcctl_OpenSCManagerA
*r
)
3576 if (flags
& NDR_IN
) {
3577 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.MachineName
));
3578 if (r
->in
.MachineName
) {
3579 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.MachineName
, CH_UTF16
)));
3580 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, 0));
3581 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.MachineName
, CH_UTF16
)));
3582 NDR_CHECK(ndr_push_charset(ndr
, NDR_SCALARS
, r
->in
.MachineName
, ndr_charset_length(r
->in
.MachineName
, CH_UTF16
), sizeof(uint16_t), CH_UTF16
));
3584 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.DatabaseName
));
3585 if (r
->in
.DatabaseName
) {
3586 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.DatabaseName
, CH_UTF16
)));
3587 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, 0));
3588 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.DatabaseName
, CH_UTF16
)));
3589 NDR_CHECK(ndr_push_charset(ndr
, NDR_SCALARS
, r
->in
.DatabaseName
, ndr_charset_length(r
->in
.DatabaseName
, CH_UTF16
), sizeof(uint16_t), CH_UTF16
));
3591 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.access_mask
));
3593 if (flags
& NDR_OUT
) {
3594 if (r
->out
.handle
== NULL
) return NT_STATUS_INVALID_PARAMETER_MIX
;
3595 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->out
.handle
));
3596 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
3598 return NT_STATUS_OK
;
3601 NTSTATUS
ndr_pull_svcctl_OpenSCManagerA(struct ndr_pull
*ndr
, int flags
, struct svcctl_OpenSCManagerA
*r
)
3603 uint32_t _ptr_MachineName
;
3604 uint32_t _ptr_DatabaseName
;
3605 TALLOC_CTX
*_mem_save_MachineName_0
;
3606 TALLOC_CTX
*_mem_save_DatabaseName_0
;
3607 TALLOC_CTX
*_mem_save_handle_0
;
3608 if (flags
& NDR_IN
) {
3609 ZERO_STRUCT(r
->out
);
3611 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_MachineName
));
3612 if (_ptr_MachineName
) {
3613 NDR_PULL_ALLOC(ndr
, r
->in
.MachineName
);
3615 r
->in
.MachineName
= NULL
;
3617 if (r
->in
.MachineName
) {
3618 _mem_save_MachineName_0
= NDR_PULL_GET_MEM_CTX(ndr
);
3619 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.MachineName
, 0);
3620 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->in
.MachineName
));
3621 NDR_CHECK(ndr_pull_array_length(ndr
, &r
->in
.MachineName
));
3622 if (ndr_get_array_length(ndr
, &r
->in
.MachineName
) > ndr_get_array_size(ndr
, &r
->in
.MachineName
)) {
3623 return ndr_pull_error(ndr
, NDR_ERR_ARRAY_SIZE
, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr
, &r
->in
.MachineName
), ndr_get_array_length(ndr
, &r
->in
.MachineName
));
3625 NDR_CHECK(ndr_check_string_terminator(ndr
, ndr_get_array_length(ndr
, &r
->in
.MachineName
), sizeof(uint16_t)));
3626 NDR_CHECK(ndr_pull_charset(ndr
, NDR_SCALARS
, &r
->in
.MachineName
, ndr_get_array_length(ndr
, &r
->in
.MachineName
), sizeof(uint16_t), CH_UTF16
));
3627 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_MachineName_0
, 0);
3629 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_DatabaseName
));
3630 if (_ptr_DatabaseName
) {
3631 NDR_PULL_ALLOC(ndr
, r
->in
.DatabaseName
);
3633 r
->in
.DatabaseName
= NULL
;
3635 if (r
->in
.DatabaseName
) {
3636 _mem_save_DatabaseName_0
= NDR_PULL_GET_MEM_CTX(ndr
);
3637 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.DatabaseName
, 0);
3638 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->in
.DatabaseName
));
3639 NDR_CHECK(ndr_pull_array_length(ndr
, &r
->in
.DatabaseName
));
3640 if (ndr_get_array_length(ndr
, &r
->in
.DatabaseName
) > ndr_get_array_size(ndr
, &r
->in
.DatabaseName
)) {
3641 return ndr_pull_error(ndr
, NDR_ERR_ARRAY_SIZE
, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr
, &r
->in
.DatabaseName
), ndr_get_array_length(ndr
, &r
->in
.DatabaseName
));
3643 NDR_CHECK(ndr_check_string_terminator(ndr
, ndr_get_array_length(ndr
, &r
->in
.DatabaseName
), sizeof(uint16_t)));
3644 NDR_CHECK(ndr_pull_charset(ndr
, NDR_SCALARS
, &r
->in
.DatabaseName
, ndr_get_array_length(ndr
, &r
->in
.DatabaseName
), sizeof(uint16_t), CH_UTF16
));
3645 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_DatabaseName_0
, 0);
3647 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.access_mask
));
3648 NDR_PULL_ALLOC(ndr
, r
->out
.handle
);
3649 ZERO_STRUCTP(r
->out
.handle
);
3651 if (flags
& NDR_OUT
) {
3652 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
3653 NDR_PULL_ALLOC(ndr
, r
->out
.handle
);
3655 _mem_save_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
3656 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.handle
, LIBNDR_FLAG_REF_ALLOC
);
3657 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->out
.handle
));
3658 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_handle_0
, LIBNDR_FLAG_REF_ALLOC
);
3659 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
3661 return NT_STATUS_OK
;
3664 _PUBLIC_
void ndr_print_svcctl_OpenSCManagerA(struct ndr_print
*ndr
, const char *name
, int flags
, const struct svcctl_OpenSCManagerA
*r
)
3666 ndr_print_struct(ndr
, name
, "svcctl_OpenSCManagerA");
3668 if (flags
& NDR_SET_VALUES
) {
3669 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
3671 if (flags
& NDR_IN
) {
3672 ndr_print_struct(ndr
, "in", "svcctl_OpenSCManagerA");
3674 ndr_print_ptr(ndr
, "MachineName", r
->in
.MachineName
);
3676 if (r
->in
.MachineName
) {
3677 ndr_print_string(ndr
, "MachineName", r
->in
.MachineName
);
3680 ndr_print_ptr(ndr
, "DatabaseName", r
->in
.DatabaseName
);
3682 if (r
->in
.DatabaseName
) {
3683 ndr_print_string(ndr
, "DatabaseName", r
->in
.DatabaseName
);
3686 ndr_print_uint32(ndr
, "access_mask", r
->in
.access_mask
);
3689 if (flags
& NDR_OUT
) {
3690 ndr_print_struct(ndr
, "out", "svcctl_OpenSCManagerA");
3692 ndr_print_ptr(ndr
, "handle", r
->out
.handle
);
3694 ndr_print_policy_handle(ndr
, "handle", r
->out
.handle
);
3696 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
3702 NTSTATUS
ndr_push_svcctl_OpenServiceA(struct ndr_push
*ndr
, int flags
, const struct svcctl_OpenServiceA
*r
)
3704 if (flags
& NDR_IN
) {
3705 if (r
->in
.scmanager_handle
== NULL
) return NT_STATUS_INVALID_PARAMETER_MIX
;
3706 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->in
.scmanager_handle
));
3707 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.ServiceName
));
3708 if (r
->in
.ServiceName
) {
3709 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.ServiceName
, CH_UTF16
)));
3710 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, 0));
3711 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.ServiceName
, CH_UTF16
)));
3712 NDR_CHECK(ndr_push_charset(ndr
, NDR_SCALARS
, r
->in
.ServiceName
, ndr_charset_length(r
->in
.ServiceName
, CH_UTF16
), sizeof(uint16_t), CH_UTF16
));
3714 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.access_mask
));
3716 if (flags
& NDR_OUT
) {
3717 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
3719 return NT_STATUS_OK
;
3722 NTSTATUS
ndr_pull_svcctl_OpenServiceA(struct ndr_pull
*ndr
, int flags
, struct svcctl_OpenServiceA
*r
)
3724 uint32_t _ptr_ServiceName
;
3725 TALLOC_CTX
*_mem_save_scmanager_handle_0
;
3726 TALLOC_CTX
*_mem_save_ServiceName_0
;
3727 if (flags
& NDR_IN
) {
3728 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
3729 NDR_PULL_ALLOC(ndr
, r
->in
.scmanager_handle
);
3731 _mem_save_scmanager_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
3732 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.scmanager_handle
, LIBNDR_FLAG_REF_ALLOC
);
3733 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->in
.scmanager_handle
));
3734 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_scmanager_handle_0
, LIBNDR_FLAG_REF_ALLOC
);
3735 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_ServiceName
));
3736 if (_ptr_ServiceName
) {
3737 NDR_PULL_ALLOC(ndr
, r
->in
.ServiceName
);
3739 r
->in
.ServiceName
= NULL
;
3741 if (r
->in
.ServiceName
) {
3742 _mem_save_ServiceName_0
= NDR_PULL_GET_MEM_CTX(ndr
);
3743 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.ServiceName
, 0);
3744 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->in
.ServiceName
));
3745 NDR_CHECK(ndr_pull_array_length(ndr
, &r
->in
.ServiceName
));
3746 if (ndr_get_array_length(ndr
, &r
->in
.ServiceName
) > ndr_get_array_size(ndr
, &r
->in
.ServiceName
)) {
3747 return ndr_pull_error(ndr
, NDR_ERR_ARRAY_SIZE
, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr
, &r
->in
.ServiceName
), ndr_get_array_length(ndr
, &r
->in
.ServiceName
));
3749 NDR_CHECK(ndr_check_string_terminator(ndr
, ndr_get_array_length(ndr
, &r
->in
.ServiceName
), sizeof(uint16_t)));
3750 NDR_CHECK(ndr_pull_charset(ndr
, NDR_SCALARS
, &r
->in
.ServiceName
, ndr_get_array_length(ndr
, &r
->in
.ServiceName
), sizeof(uint16_t), CH_UTF16
));
3751 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_ServiceName_0
, 0);
3753 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.access_mask
));
3755 if (flags
& NDR_OUT
) {
3756 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
3758 return NT_STATUS_OK
;
3761 _PUBLIC_
void ndr_print_svcctl_OpenServiceA(struct ndr_print
*ndr
, const char *name
, int flags
, const struct svcctl_OpenServiceA
*r
)
3763 ndr_print_struct(ndr
, name
, "svcctl_OpenServiceA");
3765 if (flags
& NDR_SET_VALUES
) {
3766 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
3768 if (flags
& NDR_IN
) {
3769 ndr_print_struct(ndr
, "in", "svcctl_OpenServiceA");
3771 ndr_print_ptr(ndr
, "scmanager_handle", r
->in
.scmanager_handle
);
3773 ndr_print_policy_handle(ndr
, "scmanager_handle", r
->in
.scmanager_handle
);
3775 ndr_print_ptr(ndr
, "ServiceName", r
->in
.ServiceName
);
3777 if (r
->in
.ServiceName
) {
3778 ndr_print_string(ndr
, "ServiceName", r
->in
.ServiceName
);
3781 ndr_print_uint32(ndr
, "access_mask", r
->in
.access_mask
);
3784 if (flags
& NDR_OUT
) {
3785 ndr_print_struct(ndr
, "out", "svcctl_OpenServiceA");
3787 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
3793 NTSTATUS
ndr_push_svcctl_QueryServiceConfigA(struct ndr_push
*ndr
, int flags
, const struct svcctl_QueryServiceConfigA
*r
)
3795 if (flags
& NDR_IN
) {
3796 if (r
->in
.handle
== NULL
) return NT_STATUS_INVALID_PARAMETER_MIX
;
3797 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->in
.handle
));
3798 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.buf_size
));
3800 if (flags
& NDR_OUT
) {
3801 NDR_CHECK(ndr_push_array_uint8(ndr
, NDR_SCALARS
, r
->out
.query
, r
->in
.buf_size
));
3802 if (r
->out
.bytes_needed
== NULL
) return NT_STATUS_INVALID_PARAMETER_MIX
;
3803 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, *r
->out
.bytes_needed
));
3804 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
3806 return NT_STATUS_OK
;
3809 NTSTATUS
ndr_pull_svcctl_QueryServiceConfigA(struct ndr_pull
*ndr
, int flags
, struct svcctl_QueryServiceConfigA
*r
)
3811 TALLOC_CTX
*_mem_save_handle_0
;
3812 TALLOC_CTX
*_mem_save_bytes_needed_0
;
3813 if (flags
& NDR_IN
) {
3814 ZERO_STRUCT(r
->out
);
3816 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
3817 NDR_PULL_ALLOC(ndr
, r
->in
.handle
);
3819 _mem_save_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
3820 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.handle
, LIBNDR_FLAG_REF_ALLOC
);
3821 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->in
.handle
));
3822 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_handle_0
, LIBNDR_FLAG_REF_ALLOC
);
3823 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.buf_size
));
3824 NDR_PULL_ALLOC(ndr
, r
->out
.bytes_needed
);
3825 ZERO_STRUCTP(r
->out
.bytes_needed
);
3827 if (flags
& NDR_OUT
) {
3828 NDR_PULL_ALLOC_N(ndr
, r
->out
.query
, r
->in
.buf_size
);
3829 NDR_CHECK(ndr_pull_array_uint8(ndr
, NDR_SCALARS
, r
->out
.query
, r
->in
.buf_size
));
3830 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
3831 NDR_PULL_ALLOC(ndr
, r
->out
.bytes_needed
);
3833 _mem_save_bytes_needed_0
= NDR_PULL_GET_MEM_CTX(ndr
);
3834 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.bytes_needed
, LIBNDR_FLAG_REF_ALLOC
);
3835 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, r
->out
.bytes_needed
));
3836 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_bytes_needed_0
, LIBNDR_FLAG_REF_ALLOC
);
3837 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
3839 return NT_STATUS_OK
;
3842 _PUBLIC_
void ndr_print_svcctl_QueryServiceConfigA(struct ndr_print
*ndr
, const char *name
, int flags
, const struct svcctl_QueryServiceConfigA
*r
)
3844 ndr_print_struct(ndr
, name
, "svcctl_QueryServiceConfigA");
3846 if (flags
& NDR_SET_VALUES
) {
3847 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
3849 if (flags
& NDR_IN
) {
3850 ndr_print_struct(ndr
, "in", "svcctl_QueryServiceConfigA");
3852 ndr_print_ptr(ndr
, "handle", r
->in
.handle
);
3854 ndr_print_policy_handle(ndr
, "handle", r
->in
.handle
);
3856 ndr_print_uint32(ndr
, "buf_size", r
->in
.buf_size
);
3859 if (flags
& NDR_OUT
) {
3860 ndr_print_struct(ndr
, "out", "svcctl_QueryServiceConfigA");
3862 ndr_print_array_uint8(ndr
, "query", r
->out
.query
, r
->in
.buf_size
);
3863 ndr_print_ptr(ndr
, "bytes_needed", r
->out
.bytes_needed
);
3865 ndr_print_uint32(ndr
, "bytes_needed", *r
->out
.bytes_needed
);
3867 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
3873 NTSTATUS
ndr_push_svcctl_QueryServiceLockStatusA(struct ndr_push
*ndr
, int flags
, const struct svcctl_QueryServiceLockStatusA
*r
)
3875 if (flags
& NDR_IN
) {
3876 if (r
->in
.handle
== NULL
) return NT_STATUS_INVALID_PARAMETER_MIX
;
3877 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->in
.handle
));
3878 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.buf_size
));
3880 if (flags
& NDR_OUT
) {
3881 if (r
->out
.lock_status
== NULL
) return NT_STATUS_INVALID_PARAMETER_MIX
;
3882 NDR_CHECK(ndr_push_SERVICE_LOCK_STATUS(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->out
.lock_status
));
3883 if (r
->out
.required_buf_size
== NULL
) return NT_STATUS_INVALID_PARAMETER_MIX
;
3884 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, *r
->out
.required_buf_size
));
3885 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
3887 return NT_STATUS_OK
;
3890 NTSTATUS
ndr_pull_svcctl_QueryServiceLockStatusA(struct ndr_pull
*ndr
, int flags
, struct svcctl_QueryServiceLockStatusA
*r
)
3892 TALLOC_CTX
*_mem_save_handle_0
;
3893 TALLOC_CTX
*_mem_save_lock_status_0
;
3894 TALLOC_CTX
*_mem_save_required_buf_size_0
;
3895 if (flags
& NDR_IN
) {
3896 ZERO_STRUCT(r
->out
);
3898 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
3899 NDR_PULL_ALLOC(ndr
, r
->in
.handle
);
3901 _mem_save_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
3902 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.handle
, LIBNDR_FLAG_REF_ALLOC
);
3903 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->in
.handle
));
3904 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_handle_0
, LIBNDR_FLAG_REF_ALLOC
);
3905 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.buf_size
));
3906 NDR_PULL_ALLOC(ndr
, r
->out
.lock_status
);
3907 ZERO_STRUCTP(r
->out
.lock_status
);
3908 NDR_PULL_ALLOC(ndr
, r
->out
.required_buf_size
);
3909 ZERO_STRUCTP(r
->out
.required_buf_size
);
3911 if (flags
& NDR_OUT
) {
3912 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
3913 NDR_PULL_ALLOC(ndr
, r
->out
.lock_status
);
3915 _mem_save_lock_status_0
= NDR_PULL_GET_MEM_CTX(ndr
);
3916 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.lock_status
, LIBNDR_FLAG_REF_ALLOC
);
3917 NDR_CHECK(ndr_pull_SERVICE_LOCK_STATUS(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->out
.lock_status
));
3918 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_lock_status_0
, LIBNDR_FLAG_REF_ALLOC
);
3919 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
3920 NDR_PULL_ALLOC(ndr
, r
->out
.required_buf_size
);
3922 _mem_save_required_buf_size_0
= NDR_PULL_GET_MEM_CTX(ndr
);
3923 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.required_buf_size
, LIBNDR_FLAG_REF_ALLOC
);
3924 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, r
->out
.required_buf_size
));
3925 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_required_buf_size_0
, LIBNDR_FLAG_REF_ALLOC
);
3926 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
3928 return NT_STATUS_OK
;
3931 _PUBLIC_
void ndr_print_svcctl_QueryServiceLockStatusA(struct ndr_print
*ndr
, const char *name
, int flags
, const struct svcctl_QueryServiceLockStatusA
*r
)
3933 ndr_print_struct(ndr
, name
, "svcctl_QueryServiceLockStatusA");
3935 if (flags
& NDR_SET_VALUES
) {
3936 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
3938 if (flags
& NDR_IN
) {
3939 ndr_print_struct(ndr
, "in", "svcctl_QueryServiceLockStatusA");
3941 ndr_print_ptr(ndr
, "handle", r
->in
.handle
);
3943 ndr_print_policy_handle(ndr
, "handle", r
->in
.handle
);
3945 ndr_print_uint32(ndr
, "buf_size", r
->in
.buf_size
);
3948 if (flags
& NDR_OUT
) {
3949 ndr_print_struct(ndr
, "out", "svcctl_QueryServiceLockStatusA");
3951 ndr_print_ptr(ndr
, "lock_status", r
->out
.lock_status
);
3953 ndr_print_SERVICE_LOCK_STATUS(ndr
, "lock_status", r
->out
.lock_status
);
3955 ndr_print_ptr(ndr
, "required_buf_size", r
->out
.required_buf_size
);
3957 ndr_print_uint32(ndr
, "required_buf_size", *r
->out
.required_buf_size
);
3959 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
3965 NTSTATUS
ndr_push_svcctl_StartServiceA(struct ndr_push
*ndr
, int flags
, const struct svcctl_StartServiceA
*r
)
3967 if (flags
& NDR_IN
) {
3968 if (r
->in
.handle
== NULL
) return NT_STATUS_INVALID_PARAMETER_MIX
;
3969 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->in
.handle
));
3970 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.NumArgs
));
3971 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.Arguments
));
3972 if (r
->in
.Arguments
) {
3973 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.Arguments
, CH_UTF16
)));
3974 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, 0));
3975 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.Arguments
, CH_UTF16
)));
3976 NDR_CHECK(ndr_push_charset(ndr
, NDR_SCALARS
, r
->in
.Arguments
, ndr_charset_length(r
->in
.Arguments
, CH_UTF16
), sizeof(uint16_t), CH_UTF16
));
3979 if (flags
& NDR_OUT
) {
3980 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
3982 return NT_STATUS_OK
;
3985 NTSTATUS
ndr_pull_svcctl_StartServiceA(struct ndr_pull
*ndr
, int flags
, struct svcctl_StartServiceA
*r
)
3987 uint32_t _ptr_Arguments
;
3988 TALLOC_CTX
*_mem_save_handle_0
;
3989 TALLOC_CTX
*_mem_save_Arguments_0
;
3990 if (flags
& NDR_IN
) {
3991 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
3992 NDR_PULL_ALLOC(ndr
, r
->in
.handle
);
3994 _mem_save_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
3995 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.handle
, LIBNDR_FLAG_REF_ALLOC
);
3996 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->in
.handle
));
3997 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_handle_0
, LIBNDR_FLAG_REF_ALLOC
);
3998 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.NumArgs
));
3999 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_Arguments
));
4000 if (_ptr_Arguments
) {
4001 NDR_PULL_ALLOC(ndr
, r
->in
.Arguments
);
4003 r
->in
.Arguments
= NULL
;
4005 if (r
->in
.Arguments
) {
4006 _mem_save_Arguments_0
= NDR_PULL_GET_MEM_CTX(ndr
);
4007 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.Arguments
, 0);
4008 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->in
.Arguments
));
4009 NDR_CHECK(ndr_pull_array_length(ndr
, &r
->in
.Arguments
));
4010 if (ndr_get_array_length(ndr
, &r
->in
.Arguments
) > ndr_get_array_size(ndr
, &r
->in
.Arguments
)) {
4011 return ndr_pull_error(ndr
, NDR_ERR_ARRAY_SIZE
, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr
, &r
->in
.Arguments
), ndr_get_array_length(ndr
, &r
->in
.Arguments
));
4013 NDR_CHECK(ndr_check_string_terminator(ndr
, ndr_get_array_length(ndr
, &r
->in
.Arguments
), sizeof(uint16_t)));
4014 NDR_CHECK(ndr_pull_charset(ndr
, NDR_SCALARS
, &r
->in
.Arguments
, ndr_get_array_length(ndr
, &r
->in
.Arguments
), sizeof(uint16_t), CH_UTF16
));
4015 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_Arguments_0
, 0);
4018 if (flags
& NDR_OUT
) {
4019 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
4021 return NT_STATUS_OK
;
4024 _PUBLIC_
void ndr_print_svcctl_StartServiceA(struct ndr_print
*ndr
, const char *name
, int flags
, const struct svcctl_StartServiceA
*r
)
4026 ndr_print_struct(ndr
, name
, "svcctl_StartServiceA");
4028 if (flags
& NDR_SET_VALUES
) {
4029 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
4031 if (flags
& NDR_IN
) {
4032 ndr_print_struct(ndr
, "in", "svcctl_StartServiceA");
4034 ndr_print_ptr(ndr
, "handle", r
->in
.handle
);
4036 ndr_print_policy_handle(ndr
, "handle", r
->in
.handle
);
4038 ndr_print_uint32(ndr
, "NumArgs", r
->in
.NumArgs
);
4039 ndr_print_ptr(ndr
, "Arguments", r
->in
.Arguments
);
4041 if (r
->in
.Arguments
) {
4042 ndr_print_string(ndr
, "Arguments", r
->in
.Arguments
);
4047 if (flags
& NDR_OUT
) {
4048 ndr_print_struct(ndr
, "out", "svcctl_StartServiceA");
4050 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
4056 NTSTATUS
ndr_push_svcctl_GetServiceDisplayNameA(struct ndr_push
*ndr
, int flags
, const struct svcctl_GetServiceDisplayNameA
*r
)
4058 if (flags
& NDR_IN
) {
4059 if (r
->in
.handle
== NULL
) return NT_STATUS_INVALID_PARAMETER_MIX
;
4060 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->in
.handle
));
4061 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.service_name
));
4062 if (r
->in
.service_name
) {
4063 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.service_name
, CH_UTF16
)));
4064 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, 0));
4065 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.service_name
, CH_UTF16
)));
4066 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
));
4068 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.display_name_length
));
4069 if (r
->in
.display_name_length
) {
4070 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, *r
->in
.display_name_length
));
4073 if (flags
& NDR_OUT
) {
4074 if (r
->out
.display_name
== NULL
) return NT_STATUS_INVALID_PARAMETER_MIX
;
4075 if (*r
->out
.display_name
== NULL
) return NT_STATUS_INVALID_PARAMETER_MIX
;
4076 NDR_CHECK(ndr_push_ref_ptr(ndr
));
4077 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(*r
->out
.display_name
, CH_UTF16
)));
4078 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, 0));
4079 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(*r
->out
.display_name
, CH_UTF16
)));
4080 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
));
4081 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->out
.display_name_length
));
4082 if (r
->out
.display_name_length
) {
4083 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, *r
->out
.display_name_length
));
4085 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
4087 return NT_STATUS_OK
;
4090 NTSTATUS
ndr_pull_svcctl_GetServiceDisplayNameA(struct ndr_pull
*ndr
, int flags
, struct svcctl_GetServiceDisplayNameA
*r
)
4092 uint32_t _ptr_service_name
;
4093 uint32_t _ptr_display_name
;
4094 uint32_t _ptr_display_name_length
;
4095 TALLOC_CTX
*_mem_save_handle_0
;
4096 TALLOC_CTX
*_mem_save_service_name_0
;
4097 TALLOC_CTX
*_mem_save_display_name_0
;
4098 TALLOC_CTX
*_mem_save_display_name_length_0
;
4099 if (flags
& NDR_IN
) {
4100 ZERO_STRUCT(r
->out
);
4102 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
4103 NDR_PULL_ALLOC(ndr
, r
->in
.handle
);
4105 _mem_save_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
4106 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.handle
, LIBNDR_FLAG_REF_ALLOC
);
4107 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->in
.handle
));
4108 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_handle_0
, LIBNDR_FLAG_REF_ALLOC
);
4109 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_service_name
));
4110 if (_ptr_service_name
) {
4111 NDR_PULL_ALLOC(ndr
, r
->in
.service_name
);
4113 r
->in
.service_name
= NULL
;
4115 if (r
->in
.service_name
) {
4116 _mem_save_service_name_0
= NDR_PULL_GET_MEM_CTX(ndr
);
4117 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.service_name
, 0);
4118 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->in
.service_name
));
4119 NDR_CHECK(ndr_pull_array_length(ndr
, &r
->in
.service_name
));
4120 if (ndr_get_array_length(ndr
, &r
->in
.service_name
) > ndr_get_array_size(ndr
, &r
->in
.service_name
)) {
4121 return ndr_pull_error(ndr
, NDR_ERR_ARRAY_SIZE
, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr
, &r
->in
.service_name
), ndr_get_array_length(ndr
, &r
->in
.service_name
));
4123 NDR_CHECK(ndr_check_string_terminator(ndr
, ndr_get_array_length(ndr
, &r
->in
.service_name
), sizeof(uint16_t)));
4124 NDR_CHECK(ndr_pull_charset(ndr
, NDR_SCALARS
, &r
->in
.service_name
, ndr_get_array_length(ndr
, &r
->in
.service_name
), sizeof(uint16_t), CH_UTF16
));
4125 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_service_name_0
, 0);
4127 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_display_name_length
));
4128 if (_ptr_display_name_length
) {
4129 NDR_PULL_ALLOC(ndr
, r
->in
.display_name_length
);
4131 r
->in
.display_name_length
= NULL
;
4133 if (r
->in
.display_name_length
) {
4134 _mem_save_display_name_length_0
= NDR_PULL_GET_MEM_CTX(ndr
);
4135 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.display_name_length
, 0);
4136 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, r
->in
.display_name_length
));
4137 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_display_name_length_0
, 0);
4139 NDR_PULL_ALLOC(ndr
, r
->out
.display_name
);
4140 ZERO_STRUCTP(r
->out
.display_name
);
4142 if (flags
& NDR_OUT
) {
4143 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
4144 NDR_PULL_ALLOC(ndr
, r
->out
.display_name
);
4146 _mem_save_display_name_0
= NDR_PULL_GET_MEM_CTX(ndr
);
4147 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.display_name
, LIBNDR_FLAG_REF_ALLOC
);
4148 NDR_CHECK(ndr_pull_ref_ptr(ndr
, &_ptr_display_name
));
4149 NDR_CHECK(ndr_pull_array_size(ndr
, r
->out
.display_name
));
4150 NDR_CHECK(ndr_pull_array_length(ndr
, r
->out
.display_name
));
4151 if (ndr_get_array_length(ndr
, r
->out
.display_name
) > ndr_get_array_size(ndr
, r
->out
.display_name
)) {
4152 return ndr_pull_error(ndr
, NDR_ERR_ARRAY_SIZE
, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr
, r
->out
.display_name
), ndr_get_array_length(ndr
, r
->out
.display_name
));
4154 NDR_CHECK(ndr_check_string_terminator(ndr
, ndr_get_array_length(ndr
, r
->out
.display_name
), sizeof(uint16_t)));
4155 NDR_CHECK(ndr_pull_charset(ndr
, NDR_SCALARS
, r
->out
.display_name
, ndr_get_array_length(ndr
, r
->out
.display_name
), sizeof(uint16_t), CH_UTF16
));
4156 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_display_name_0
, LIBNDR_FLAG_REF_ALLOC
);
4157 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_display_name_length
));
4158 if (_ptr_display_name_length
) {
4159 NDR_PULL_ALLOC(ndr
, r
->out
.display_name_length
);
4161 r
->out
.display_name_length
= NULL
;
4163 if (r
->out
.display_name_length
) {
4164 _mem_save_display_name_length_0
= NDR_PULL_GET_MEM_CTX(ndr
);
4165 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.display_name_length
, 0);
4166 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, r
->out
.display_name_length
));
4167 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_display_name_length_0
, 0);
4169 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
4171 return NT_STATUS_OK
;
4174 _PUBLIC_
void ndr_print_svcctl_GetServiceDisplayNameA(struct ndr_print
*ndr
, const char *name
, int flags
, const struct svcctl_GetServiceDisplayNameA
*r
)
4176 ndr_print_struct(ndr
, name
, "svcctl_GetServiceDisplayNameA");
4178 if (flags
& NDR_SET_VALUES
) {
4179 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
4181 if (flags
& NDR_IN
) {
4182 ndr_print_struct(ndr
, "in", "svcctl_GetServiceDisplayNameA");
4184 ndr_print_ptr(ndr
, "handle", r
->in
.handle
);
4186 ndr_print_policy_handle(ndr
, "handle", r
->in
.handle
);
4188 ndr_print_ptr(ndr
, "service_name", r
->in
.service_name
);
4190 if (r
->in
.service_name
) {
4191 ndr_print_string(ndr
, "service_name", r
->in
.service_name
);
4194 ndr_print_ptr(ndr
, "display_name_length", r
->in
.display_name_length
);
4196 if (r
->in
.display_name_length
) {
4197 ndr_print_uint32(ndr
, "display_name_length", *r
->in
.display_name_length
);
4202 if (flags
& NDR_OUT
) {
4203 ndr_print_struct(ndr
, "out", "svcctl_GetServiceDisplayNameA");
4205 ndr_print_ptr(ndr
, "display_name", r
->out
.display_name
);
4207 ndr_print_ptr(ndr
, "display_name", *r
->out
.display_name
);
4209 ndr_print_string(ndr
, "display_name", *r
->out
.display_name
);
4212 ndr_print_ptr(ndr
, "display_name_length", r
->out
.display_name_length
);
4214 if (r
->out
.display_name_length
) {
4215 ndr_print_uint32(ndr
, "display_name_length", *r
->out
.display_name_length
);
4218 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
4224 NTSTATUS
ndr_push_svcctl_GetServiceKeyNameA(struct ndr_push
*ndr
, int flags
, const struct svcctl_GetServiceKeyNameA
*r
)
4226 if (flags
& NDR_IN
) {
4227 if (r
->in
.handle
== NULL
) return NT_STATUS_INVALID_PARAMETER_MIX
;
4228 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->in
.handle
));
4229 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.service_name
));
4230 if (r
->in
.service_name
) {
4231 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.service_name
, CH_UTF16
)));
4232 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, 0));
4233 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.service_name
, CH_UTF16
)));
4234 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
));
4236 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.display_name_length
));
4237 if (r
->in
.display_name_length
) {
4238 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, *r
->in
.display_name_length
));
4241 if (flags
& NDR_OUT
) {
4242 if (r
->out
.key_name
== NULL
) return NT_STATUS_INVALID_PARAMETER_MIX
;
4243 if (*r
->out
.key_name
== NULL
) return NT_STATUS_INVALID_PARAMETER_MIX
;
4244 NDR_CHECK(ndr_push_ref_ptr(ndr
));
4245 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(*r
->out
.key_name
, CH_UTF16
)));
4246 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, 0));
4247 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(*r
->out
.key_name
, CH_UTF16
)));
4248 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
));
4249 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->out
.display_name_length
));
4250 if (r
->out
.display_name_length
) {
4251 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, *r
->out
.display_name_length
));
4253 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
4255 return NT_STATUS_OK
;
4258 NTSTATUS
ndr_pull_svcctl_GetServiceKeyNameA(struct ndr_pull
*ndr
, int flags
, struct svcctl_GetServiceKeyNameA
*r
)
4260 uint32_t _ptr_service_name
;
4261 uint32_t _ptr_key_name
;
4262 uint32_t _ptr_display_name_length
;
4263 TALLOC_CTX
*_mem_save_handle_0
;
4264 TALLOC_CTX
*_mem_save_service_name_0
;
4265 TALLOC_CTX
*_mem_save_key_name_0
;
4266 TALLOC_CTX
*_mem_save_display_name_length_0
;
4267 if (flags
& NDR_IN
) {
4268 ZERO_STRUCT(r
->out
);
4270 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
4271 NDR_PULL_ALLOC(ndr
, r
->in
.handle
);
4273 _mem_save_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
4274 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.handle
, LIBNDR_FLAG_REF_ALLOC
);
4275 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->in
.handle
));
4276 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_handle_0
, LIBNDR_FLAG_REF_ALLOC
);
4277 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_service_name
));
4278 if (_ptr_service_name
) {
4279 NDR_PULL_ALLOC(ndr
, r
->in
.service_name
);
4281 r
->in
.service_name
= NULL
;
4283 if (r
->in
.service_name
) {
4284 _mem_save_service_name_0
= NDR_PULL_GET_MEM_CTX(ndr
);
4285 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.service_name
, 0);
4286 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->in
.service_name
));
4287 NDR_CHECK(ndr_pull_array_length(ndr
, &r
->in
.service_name
));
4288 if (ndr_get_array_length(ndr
, &r
->in
.service_name
) > ndr_get_array_size(ndr
, &r
->in
.service_name
)) {
4289 return ndr_pull_error(ndr
, NDR_ERR_ARRAY_SIZE
, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr
, &r
->in
.service_name
), ndr_get_array_length(ndr
, &r
->in
.service_name
));
4291 NDR_CHECK(ndr_check_string_terminator(ndr
, ndr_get_array_length(ndr
, &r
->in
.service_name
), sizeof(uint16_t)));
4292 NDR_CHECK(ndr_pull_charset(ndr
, NDR_SCALARS
, &r
->in
.service_name
, ndr_get_array_length(ndr
, &r
->in
.service_name
), sizeof(uint16_t), CH_UTF16
));
4293 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_service_name_0
, 0);
4295 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_display_name_length
));
4296 if (_ptr_display_name_length
) {
4297 NDR_PULL_ALLOC(ndr
, r
->in
.display_name_length
);
4299 r
->in
.display_name_length
= NULL
;
4301 if (r
->in
.display_name_length
) {
4302 _mem_save_display_name_length_0
= NDR_PULL_GET_MEM_CTX(ndr
);
4303 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.display_name_length
, 0);
4304 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, r
->in
.display_name_length
));
4305 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_display_name_length_0
, 0);
4307 NDR_PULL_ALLOC(ndr
, r
->out
.key_name
);
4308 ZERO_STRUCTP(r
->out
.key_name
);
4310 if (flags
& NDR_OUT
) {
4311 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
4312 NDR_PULL_ALLOC(ndr
, r
->out
.key_name
);
4314 _mem_save_key_name_0
= NDR_PULL_GET_MEM_CTX(ndr
);
4315 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.key_name
, LIBNDR_FLAG_REF_ALLOC
);
4316 NDR_CHECK(ndr_pull_ref_ptr(ndr
, &_ptr_key_name
));
4317 NDR_CHECK(ndr_pull_array_size(ndr
, r
->out
.key_name
));
4318 NDR_CHECK(ndr_pull_array_length(ndr
, r
->out
.key_name
));
4319 if (ndr_get_array_length(ndr
, r
->out
.key_name
) > ndr_get_array_size(ndr
, r
->out
.key_name
)) {
4320 return ndr_pull_error(ndr
, NDR_ERR_ARRAY_SIZE
, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr
, r
->out
.key_name
), ndr_get_array_length(ndr
, r
->out
.key_name
));
4322 NDR_CHECK(ndr_check_string_terminator(ndr
, ndr_get_array_length(ndr
, r
->out
.key_name
), sizeof(uint16_t)));
4323 NDR_CHECK(ndr_pull_charset(ndr
, NDR_SCALARS
, r
->out
.key_name
, ndr_get_array_length(ndr
, r
->out
.key_name
), sizeof(uint16_t), CH_UTF16
));
4324 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_key_name_0
, LIBNDR_FLAG_REF_ALLOC
);
4325 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_display_name_length
));
4326 if (_ptr_display_name_length
) {
4327 NDR_PULL_ALLOC(ndr
, r
->out
.display_name_length
);
4329 r
->out
.display_name_length
= NULL
;
4331 if (r
->out
.display_name_length
) {
4332 _mem_save_display_name_length_0
= NDR_PULL_GET_MEM_CTX(ndr
);
4333 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.display_name_length
, 0);
4334 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, r
->out
.display_name_length
));
4335 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_display_name_length_0
, 0);
4337 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
4339 return NT_STATUS_OK
;
4342 _PUBLIC_
void ndr_print_svcctl_GetServiceKeyNameA(struct ndr_print
*ndr
, const char *name
, int flags
, const struct svcctl_GetServiceKeyNameA
*r
)
4344 ndr_print_struct(ndr
, name
, "svcctl_GetServiceKeyNameA");
4346 if (flags
& NDR_SET_VALUES
) {
4347 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
4349 if (flags
& NDR_IN
) {
4350 ndr_print_struct(ndr
, "in", "svcctl_GetServiceKeyNameA");
4352 ndr_print_ptr(ndr
, "handle", r
->in
.handle
);
4354 ndr_print_policy_handle(ndr
, "handle", r
->in
.handle
);
4356 ndr_print_ptr(ndr
, "service_name", r
->in
.service_name
);
4358 if (r
->in
.service_name
) {
4359 ndr_print_string(ndr
, "service_name", r
->in
.service_name
);
4362 ndr_print_ptr(ndr
, "display_name_length", r
->in
.display_name_length
);
4364 if (r
->in
.display_name_length
) {
4365 ndr_print_uint32(ndr
, "display_name_length", *r
->in
.display_name_length
);
4370 if (flags
& NDR_OUT
) {
4371 ndr_print_struct(ndr
, "out", "svcctl_GetServiceKeyNameA");
4373 ndr_print_ptr(ndr
, "key_name", r
->out
.key_name
);
4375 ndr_print_ptr(ndr
, "key_name", *r
->out
.key_name
);
4377 ndr_print_string(ndr
, "key_name", *r
->out
.key_name
);
4380 ndr_print_ptr(ndr
, "display_name_length", r
->out
.display_name_length
);
4382 if (r
->out
.display_name_length
) {
4383 ndr_print_uint32(ndr
, "display_name_length", *r
->out
.display_name_length
);
4386 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
4392 NTSTATUS
ndr_push_svcctl_GetCurrentGroupeStateW(struct ndr_push
*ndr
, int flags
, const struct svcctl_GetCurrentGroupeStateW
*r
)
4394 if (flags
& NDR_IN
) {
4396 if (flags
& NDR_OUT
) {
4397 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
4399 return NT_STATUS_OK
;
4402 NTSTATUS
ndr_pull_svcctl_GetCurrentGroupeStateW(struct ndr_pull
*ndr
, int flags
, struct svcctl_GetCurrentGroupeStateW
*r
)
4404 if (flags
& NDR_IN
) {
4406 if (flags
& NDR_OUT
) {
4407 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
4409 return NT_STATUS_OK
;
4412 _PUBLIC_
void ndr_print_svcctl_GetCurrentGroupeStateW(struct ndr_print
*ndr
, const char *name
, int flags
, const struct svcctl_GetCurrentGroupeStateW
*r
)
4414 ndr_print_struct(ndr
, name
, "svcctl_GetCurrentGroupeStateW");
4416 if (flags
& NDR_SET_VALUES
) {
4417 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
4419 if (flags
& NDR_IN
) {
4420 ndr_print_struct(ndr
, "in", "svcctl_GetCurrentGroupeStateW");
4424 if (flags
& NDR_OUT
) {
4425 ndr_print_struct(ndr
, "out", "svcctl_GetCurrentGroupeStateW");
4427 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
4433 NTSTATUS
ndr_push_svcctl_EnumServiceGroupW(struct ndr_push
*ndr
, int flags
, const struct svcctl_EnumServiceGroupW
*r
)
4435 if (flags
& NDR_IN
) {
4437 if (flags
& NDR_OUT
) {
4438 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
4440 return NT_STATUS_OK
;
4443 NTSTATUS
ndr_pull_svcctl_EnumServiceGroupW(struct ndr_pull
*ndr
, int flags
, struct svcctl_EnumServiceGroupW
*r
)
4445 if (flags
& NDR_IN
) {
4447 if (flags
& NDR_OUT
) {
4448 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
4450 return NT_STATUS_OK
;
4453 _PUBLIC_
void ndr_print_svcctl_EnumServiceGroupW(struct ndr_print
*ndr
, const char *name
, int flags
, const struct svcctl_EnumServiceGroupW
*r
)
4455 ndr_print_struct(ndr
, name
, "svcctl_EnumServiceGroupW");
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_EnumServiceGroupW");
4465 if (flags
& NDR_OUT
) {
4466 ndr_print_struct(ndr
, "out", "svcctl_EnumServiceGroupW");
4468 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
4474 NTSTATUS
ndr_push_svcctl_ChangeServiceConfig2A(struct ndr_push
*ndr
, int flags
, const struct svcctl_ChangeServiceConfig2A
*r
)
4476 if (flags
& NDR_IN
) {
4477 if (r
->in
.handle
== NULL
) return NT_STATUS_INVALID_PARAMETER_MIX
;
4478 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->in
.handle
));
4479 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.info_level
));
4480 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.info
));
4482 NDR_CHECK(ndr_push_uint8(ndr
, NDR_SCALARS
, *r
->in
.info
));
4485 if (flags
& NDR_OUT
) {
4486 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
4488 return NT_STATUS_OK
;
4491 NTSTATUS
ndr_pull_svcctl_ChangeServiceConfig2A(struct ndr_pull
*ndr
, int flags
, struct svcctl_ChangeServiceConfig2A
*r
)
4494 TALLOC_CTX
*_mem_save_handle_0
;
4495 TALLOC_CTX
*_mem_save_info_0
;
4496 if (flags
& NDR_IN
) {
4497 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
4498 NDR_PULL_ALLOC(ndr
, r
->in
.handle
);
4500 _mem_save_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
4501 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.handle
, LIBNDR_FLAG_REF_ALLOC
);
4502 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->in
.handle
));
4503 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_handle_0
, LIBNDR_FLAG_REF_ALLOC
);
4504 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.info_level
));
4505 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_info
));
4507 NDR_PULL_ALLOC(ndr
, r
->in
.info
);
4512 _mem_save_info_0
= NDR_PULL_GET_MEM_CTX(ndr
);
4513 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.info
, 0);
4514 NDR_CHECK(ndr_pull_uint8(ndr
, NDR_SCALARS
, r
->in
.info
));
4515 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_info_0
, 0);
4518 if (flags
& NDR_OUT
) {
4519 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
4521 return NT_STATUS_OK
;
4524 _PUBLIC_
void ndr_print_svcctl_ChangeServiceConfig2A(struct ndr_print
*ndr
, const char *name
, int flags
, const struct svcctl_ChangeServiceConfig2A
*r
)
4526 ndr_print_struct(ndr
, name
, "svcctl_ChangeServiceConfig2A");
4528 if (flags
& NDR_SET_VALUES
) {
4529 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
4531 if (flags
& NDR_IN
) {
4532 ndr_print_struct(ndr
, "in", "svcctl_ChangeServiceConfig2A");
4534 ndr_print_ptr(ndr
, "handle", r
->in
.handle
);
4536 ndr_print_policy_handle(ndr
, "handle", r
->in
.handle
);
4538 ndr_print_uint32(ndr
, "info_level", r
->in
.info_level
);
4539 ndr_print_ptr(ndr
, "info", r
->in
.info
);
4542 ndr_print_uint8(ndr
, "info", *r
->in
.info
);
4547 if (flags
& NDR_OUT
) {
4548 ndr_print_struct(ndr
, "out", "svcctl_ChangeServiceConfig2A");
4550 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
4556 NTSTATUS
ndr_push_svcctl_ChangeServiceConfig2W(struct ndr_push
*ndr
, int flags
, const struct svcctl_ChangeServiceConfig2W
*r
)
4558 if (flags
& NDR_IN
) {
4559 if (r
->in
.handle
== NULL
) return NT_STATUS_INVALID_PARAMETER_MIX
;
4560 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->in
.handle
));
4561 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.info_level
));
4562 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.info
));
4564 NDR_CHECK(ndr_push_uint8(ndr
, NDR_SCALARS
, *r
->in
.info
));
4567 if (flags
& NDR_OUT
) {
4568 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
4570 return NT_STATUS_OK
;
4573 NTSTATUS
ndr_pull_svcctl_ChangeServiceConfig2W(struct ndr_pull
*ndr
, int flags
, struct svcctl_ChangeServiceConfig2W
*r
)
4576 TALLOC_CTX
*_mem_save_handle_0
;
4577 TALLOC_CTX
*_mem_save_info_0
;
4578 if (flags
& NDR_IN
) {
4579 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
4580 NDR_PULL_ALLOC(ndr
, r
->in
.handle
);
4582 _mem_save_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
4583 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.handle
, LIBNDR_FLAG_REF_ALLOC
);
4584 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->in
.handle
));
4585 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_handle_0
, LIBNDR_FLAG_REF_ALLOC
);
4586 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.info_level
));
4587 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_info
));
4589 NDR_PULL_ALLOC(ndr
, r
->in
.info
);
4594 _mem_save_info_0
= NDR_PULL_GET_MEM_CTX(ndr
);
4595 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.info
, 0);
4596 NDR_CHECK(ndr_pull_uint8(ndr
, NDR_SCALARS
, r
->in
.info
));
4597 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_info_0
, 0);
4600 if (flags
& NDR_OUT
) {
4601 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
4603 return NT_STATUS_OK
;
4606 _PUBLIC_
void ndr_print_svcctl_ChangeServiceConfig2W(struct ndr_print
*ndr
, const char *name
, int flags
, const struct svcctl_ChangeServiceConfig2W
*r
)
4608 ndr_print_struct(ndr
, name
, "svcctl_ChangeServiceConfig2W");
4610 if (flags
& NDR_SET_VALUES
) {
4611 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
4613 if (flags
& NDR_IN
) {
4614 ndr_print_struct(ndr
, "in", "svcctl_ChangeServiceConfig2W");
4616 ndr_print_ptr(ndr
, "handle", r
->in
.handle
);
4618 ndr_print_policy_handle(ndr
, "handle", r
->in
.handle
);
4620 ndr_print_uint32(ndr
, "info_level", r
->in
.info_level
);
4621 ndr_print_ptr(ndr
, "info", r
->in
.info
);
4624 ndr_print_uint8(ndr
, "info", *r
->in
.info
);
4629 if (flags
& NDR_OUT
) {
4630 ndr_print_struct(ndr
, "out", "svcctl_ChangeServiceConfig2W");
4632 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
4638 NTSTATUS
ndr_push_svcctl_QueryServiceConfig2A(struct ndr_push
*ndr
, int flags
, const struct svcctl_QueryServiceConfig2A
*r
)
4640 if (flags
& NDR_IN
) {
4641 if (r
->in
.handle
== NULL
) return NT_STATUS_INVALID_PARAMETER_MIX
;
4642 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->in
.handle
));
4643 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.info_level
));
4644 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.buf_size
));
4646 if (flags
& NDR_OUT
) {
4647 NDR_CHECK(ndr_push_array_uint8(ndr
, NDR_SCALARS
, r
->out
.buffer
, r
->in
.buf_size
));
4648 if (r
->out
.bytes_needed
== NULL
) return NT_STATUS_INVALID_PARAMETER_MIX
;
4649 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, *r
->out
.bytes_needed
));
4650 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
4652 return NT_STATUS_OK
;
4655 NTSTATUS
ndr_pull_svcctl_QueryServiceConfig2A(struct ndr_pull
*ndr
, int flags
, struct svcctl_QueryServiceConfig2A
*r
)
4657 TALLOC_CTX
*_mem_save_handle_0
;
4658 TALLOC_CTX
*_mem_save_bytes_needed_0
;
4659 if (flags
& NDR_IN
) {
4660 ZERO_STRUCT(r
->out
);
4662 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
4663 NDR_PULL_ALLOC(ndr
, r
->in
.handle
);
4665 _mem_save_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
4666 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.handle
, LIBNDR_FLAG_REF_ALLOC
);
4667 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->in
.handle
));
4668 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_handle_0
, LIBNDR_FLAG_REF_ALLOC
);
4669 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.info_level
));
4670 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.buf_size
));
4671 NDR_PULL_ALLOC(ndr
, r
->out
.bytes_needed
);
4672 ZERO_STRUCTP(r
->out
.bytes_needed
);
4674 if (flags
& NDR_OUT
) {
4675 NDR_PULL_ALLOC_N(ndr
, r
->out
.buffer
, r
->in
.buf_size
);
4676 NDR_CHECK(ndr_pull_array_uint8(ndr
, NDR_SCALARS
, r
->out
.buffer
, r
->in
.buf_size
));
4677 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
4678 NDR_PULL_ALLOC(ndr
, r
->out
.bytes_needed
);
4680 _mem_save_bytes_needed_0
= NDR_PULL_GET_MEM_CTX(ndr
);
4681 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.bytes_needed
, LIBNDR_FLAG_REF_ALLOC
);
4682 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, r
->out
.bytes_needed
));
4683 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_bytes_needed_0
, LIBNDR_FLAG_REF_ALLOC
);
4684 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
4686 return NT_STATUS_OK
;
4689 _PUBLIC_
void ndr_print_svcctl_QueryServiceConfig2A(struct ndr_print
*ndr
, const char *name
, int flags
, const struct svcctl_QueryServiceConfig2A
*r
)
4691 ndr_print_struct(ndr
, name
, "svcctl_QueryServiceConfig2A");
4693 if (flags
& NDR_SET_VALUES
) {
4694 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
4696 if (flags
& NDR_IN
) {
4697 ndr_print_struct(ndr
, "in", "svcctl_QueryServiceConfig2A");
4699 ndr_print_ptr(ndr
, "handle", r
->in
.handle
);
4701 ndr_print_policy_handle(ndr
, "handle", r
->in
.handle
);
4703 ndr_print_uint32(ndr
, "info_level", r
->in
.info_level
);
4704 ndr_print_uint32(ndr
, "buf_size", r
->in
.buf_size
);
4707 if (flags
& NDR_OUT
) {
4708 ndr_print_struct(ndr
, "out", "svcctl_QueryServiceConfig2A");
4710 ndr_print_array_uint8(ndr
, "buffer", r
->out
.buffer
, r
->in
.buf_size
);
4711 ndr_print_ptr(ndr
, "bytes_needed", r
->out
.bytes_needed
);
4713 ndr_print_uint32(ndr
, "bytes_needed", *r
->out
.bytes_needed
);
4715 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
4721 NTSTATUS
ndr_push_svcctl_QueryServiceConfig2W(struct ndr_push
*ndr
, int flags
, const struct svcctl_QueryServiceConfig2W
*r
)
4723 if (flags
& NDR_IN
) {
4724 if (r
->in
.handle
== NULL
) return NT_STATUS_INVALID_PARAMETER_MIX
;
4725 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->in
.handle
));
4726 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.info_level
));
4727 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.buf_size
));
4729 if (flags
& NDR_OUT
) {
4730 NDR_CHECK(ndr_push_array_uint8(ndr
, NDR_SCALARS
, r
->out
.buffer
, r
->in
.buf_size
));
4731 if (r
->out
.bytes_needed
== NULL
) return NT_STATUS_INVALID_PARAMETER_MIX
;
4732 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, *r
->out
.bytes_needed
));
4733 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
4735 return NT_STATUS_OK
;
4738 NTSTATUS
ndr_pull_svcctl_QueryServiceConfig2W(struct ndr_pull
*ndr
, int flags
, struct svcctl_QueryServiceConfig2W
*r
)
4740 TALLOC_CTX
*_mem_save_handle_0
;
4741 TALLOC_CTX
*_mem_save_bytes_needed_0
;
4742 if (flags
& NDR_IN
) {
4743 ZERO_STRUCT(r
->out
);
4745 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
4746 NDR_PULL_ALLOC(ndr
, r
->in
.handle
);
4748 _mem_save_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
4749 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.handle
, LIBNDR_FLAG_REF_ALLOC
);
4750 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->in
.handle
));
4751 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_handle_0
, LIBNDR_FLAG_REF_ALLOC
);
4752 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.info_level
));
4753 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.buf_size
));
4754 NDR_PULL_ALLOC(ndr
, r
->out
.bytes_needed
);
4755 ZERO_STRUCTP(r
->out
.bytes_needed
);
4757 if (flags
& NDR_OUT
) {
4758 NDR_PULL_ALLOC_N(ndr
, r
->out
.buffer
, r
->in
.buf_size
);
4759 NDR_CHECK(ndr_pull_array_uint8(ndr
, NDR_SCALARS
, r
->out
.buffer
, r
->in
.buf_size
));
4760 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
4761 NDR_PULL_ALLOC(ndr
, r
->out
.bytes_needed
);
4763 _mem_save_bytes_needed_0
= NDR_PULL_GET_MEM_CTX(ndr
);
4764 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.bytes_needed
, LIBNDR_FLAG_REF_ALLOC
);
4765 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, r
->out
.bytes_needed
));
4766 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_bytes_needed_0
, LIBNDR_FLAG_REF_ALLOC
);
4767 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
4769 return NT_STATUS_OK
;
4772 _PUBLIC_
void ndr_print_svcctl_QueryServiceConfig2W(struct ndr_print
*ndr
, const char *name
, int flags
, const struct svcctl_QueryServiceConfig2W
*r
)
4774 ndr_print_struct(ndr
, name
, "svcctl_QueryServiceConfig2W");
4776 if (flags
& NDR_SET_VALUES
) {
4777 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
4779 if (flags
& NDR_IN
) {
4780 ndr_print_struct(ndr
, "in", "svcctl_QueryServiceConfig2W");
4782 ndr_print_ptr(ndr
, "handle", r
->in
.handle
);
4784 ndr_print_policy_handle(ndr
, "handle", r
->in
.handle
);
4786 ndr_print_uint32(ndr
, "info_level", r
->in
.info_level
);
4787 ndr_print_uint32(ndr
, "buf_size", r
->in
.buf_size
);
4790 if (flags
& NDR_OUT
) {
4791 ndr_print_struct(ndr
, "out", "svcctl_QueryServiceConfig2W");
4793 ndr_print_array_uint8(ndr
, "buffer", r
->out
.buffer
, r
->in
.buf_size
);
4794 ndr_print_ptr(ndr
, "bytes_needed", r
->out
.bytes_needed
);
4796 ndr_print_uint32(ndr
, "bytes_needed", *r
->out
.bytes_needed
);
4798 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
4804 NTSTATUS
ndr_push_svcctl_QueryServiceStatusEx(struct ndr_push
*ndr
, int flags
, const struct svcctl_QueryServiceStatusEx
*r
)
4806 if (flags
& NDR_IN
) {
4807 if (r
->in
.handle
== NULL
) return NT_STATUS_INVALID_PARAMETER_MIX
;
4808 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->in
.handle
));
4809 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.info_level
));
4810 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.buf_size
));
4812 if (flags
& NDR_OUT
) {
4813 NDR_CHECK(ndr_push_array_uint8(ndr
, NDR_SCALARS
, r
->out
.buffer
, r
->in
.buf_size
));
4814 if (r
->out
.bytes_needed
== NULL
) return NT_STATUS_INVALID_PARAMETER_MIX
;
4815 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, *r
->out
.bytes_needed
));
4816 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
4818 return NT_STATUS_OK
;
4821 NTSTATUS
ndr_pull_svcctl_QueryServiceStatusEx(struct ndr_pull
*ndr
, int flags
, struct svcctl_QueryServiceStatusEx
*r
)
4823 TALLOC_CTX
*_mem_save_handle_0
;
4824 TALLOC_CTX
*_mem_save_bytes_needed_0
;
4825 if (flags
& NDR_IN
) {
4826 ZERO_STRUCT(r
->out
);
4828 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
4829 NDR_PULL_ALLOC(ndr
, r
->in
.handle
);
4831 _mem_save_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
4832 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.handle
, LIBNDR_FLAG_REF_ALLOC
);
4833 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->in
.handle
));
4834 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_handle_0
, LIBNDR_FLAG_REF_ALLOC
);
4835 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.info_level
));
4836 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.buf_size
));
4837 NDR_PULL_ALLOC(ndr
, r
->out
.bytes_needed
);
4838 ZERO_STRUCTP(r
->out
.bytes_needed
);
4840 if (flags
& NDR_OUT
) {
4841 NDR_PULL_ALLOC_N(ndr
, r
->out
.buffer
, r
->in
.buf_size
);
4842 NDR_CHECK(ndr_pull_array_uint8(ndr
, NDR_SCALARS
, r
->out
.buffer
, r
->in
.buf_size
));
4843 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
4844 NDR_PULL_ALLOC(ndr
, r
->out
.bytes_needed
);
4846 _mem_save_bytes_needed_0
= NDR_PULL_GET_MEM_CTX(ndr
);
4847 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.bytes_needed
, LIBNDR_FLAG_REF_ALLOC
);
4848 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, r
->out
.bytes_needed
));
4849 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_bytes_needed_0
, LIBNDR_FLAG_REF_ALLOC
);
4850 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
4852 return NT_STATUS_OK
;
4855 _PUBLIC_
void ndr_print_svcctl_QueryServiceStatusEx(struct ndr_print
*ndr
, const char *name
, int flags
, const struct svcctl_QueryServiceStatusEx
*r
)
4857 ndr_print_struct(ndr
, name
, "svcctl_QueryServiceStatusEx");
4859 if (flags
& NDR_SET_VALUES
) {
4860 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
4862 if (flags
& NDR_IN
) {
4863 ndr_print_struct(ndr
, "in", "svcctl_QueryServiceStatusEx");
4865 ndr_print_ptr(ndr
, "handle", r
->in
.handle
);
4867 ndr_print_policy_handle(ndr
, "handle", r
->in
.handle
);
4869 ndr_print_uint32(ndr
, "info_level", r
->in
.info_level
);
4870 ndr_print_uint32(ndr
, "buf_size", r
->in
.buf_size
);
4873 if (flags
& NDR_OUT
) {
4874 ndr_print_struct(ndr
, "out", "svcctl_QueryServiceStatusEx");
4876 ndr_print_array_uint8(ndr
, "buffer", r
->out
.buffer
, r
->in
.buf_size
);
4877 ndr_print_ptr(ndr
, "bytes_needed", r
->out
.bytes_needed
);
4879 ndr_print_uint32(ndr
, "bytes_needed", *r
->out
.bytes_needed
);
4881 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
4887 NTSTATUS
ndr_push_EnumServicesStatusExA(struct ndr_push
*ndr
, int flags
, const struct EnumServicesStatusExA
*r
)
4889 if (flags
& NDR_IN
) {
4890 if (r
->in
.scmanager
== NULL
) return NT_STATUS_INVALID_PARAMETER_MIX
;
4891 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->in
.scmanager
));
4892 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.info_level
));
4893 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.type
));
4894 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.state
));
4895 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.buf_size
));
4896 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.resume_handle
));
4897 if (r
->in
.resume_handle
) {
4898 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, *r
->in
.resume_handle
));
4901 if (flags
& NDR_OUT
) {
4902 NDR_CHECK(ndr_push_array_uint8(ndr
, NDR_SCALARS
, r
->out
.services
, r
->in
.buf_size
));
4903 if (r
->out
.bytes_needed
== NULL
) return NT_STATUS_INVALID_PARAMETER_MIX
;
4904 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, *r
->out
.bytes_needed
));
4905 if (r
->out
.service_returned
== NULL
) return NT_STATUS_INVALID_PARAMETER_MIX
;
4906 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, *r
->out
.service_returned
));
4907 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->out
.resume_handle
));
4908 if (r
->out
.resume_handle
) {
4909 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, *r
->out
.resume_handle
));
4911 if (r
->out
.group_name
== NULL
) return NT_STATUS_INVALID_PARAMETER_MIX
;
4912 if (*r
->out
.group_name
== NULL
) return NT_STATUS_INVALID_PARAMETER_MIX
;
4913 NDR_CHECK(ndr_push_ref_ptr(ndr
));
4914 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(*r
->out
.group_name
, CH_UTF16
)));
4915 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, 0));
4916 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(*r
->out
.group_name
, CH_UTF16
)));
4917 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
));
4918 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
4920 return NT_STATUS_OK
;
4923 NTSTATUS
ndr_pull_EnumServicesStatusExA(struct ndr_pull
*ndr
, int flags
, struct EnumServicesStatusExA
*r
)
4925 uint32_t _ptr_resume_handle
;
4926 uint32_t _ptr_group_name
;
4927 TALLOC_CTX
*_mem_save_scmanager_0
;
4928 TALLOC_CTX
*_mem_save_bytes_needed_0
;
4929 TALLOC_CTX
*_mem_save_service_returned_0
;
4930 TALLOC_CTX
*_mem_save_resume_handle_0
;
4931 TALLOC_CTX
*_mem_save_group_name_0
;
4932 if (flags
& NDR_IN
) {
4933 ZERO_STRUCT(r
->out
);
4935 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
4936 NDR_PULL_ALLOC(ndr
, r
->in
.scmanager
);
4938 _mem_save_scmanager_0
= NDR_PULL_GET_MEM_CTX(ndr
);
4939 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.scmanager
, LIBNDR_FLAG_REF_ALLOC
);
4940 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->in
.scmanager
));
4941 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_scmanager_0
, LIBNDR_FLAG_REF_ALLOC
);
4942 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.info_level
));
4943 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.type
));
4944 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.state
));
4945 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.buf_size
));
4946 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_resume_handle
));
4947 if (_ptr_resume_handle
) {
4948 NDR_PULL_ALLOC(ndr
, r
->in
.resume_handle
);
4950 r
->in
.resume_handle
= NULL
;
4952 if (r
->in
.resume_handle
) {
4953 _mem_save_resume_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
4954 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.resume_handle
, 0);
4955 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, r
->in
.resume_handle
));
4956 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_resume_handle_0
, 0);
4958 NDR_PULL_ALLOC(ndr
, r
->out
.bytes_needed
);
4959 ZERO_STRUCTP(r
->out
.bytes_needed
);
4960 NDR_PULL_ALLOC(ndr
, r
->out
.service_returned
);
4961 ZERO_STRUCTP(r
->out
.service_returned
);
4962 NDR_PULL_ALLOC(ndr
, r
->out
.group_name
);
4963 ZERO_STRUCTP(r
->out
.group_name
);
4965 if (flags
& NDR_OUT
) {
4966 NDR_PULL_ALLOC_N(ndr
, r
->out
.services
, r
->in
.buf_size
);
4967 NDR_CHECK(ndr_pull_array_uint8(ndr
, NDR_SCALARS
, r
->out
.services
, r
->in
.buf_size
));
4968 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
4969 NDR_PULL_ALLOC(ndr
, r
->out
.bytes_needed
);
4971 _mem_save_bytes_needed_0
= NDR_PULL_GET_MEM_CTX(ndr
);
4972 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.bytes_needed
, LIBNDR_FLAG_REF_ALLOC
);
4973 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, r
->out
.bytes_needed
));
4974 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_bytes_needed_0
, LIBNDR_FLAG_REF_ALLOC
);
4975 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
4976 NDR_PULL_ALLOC(ndr
, r
->out
.service_returned
);
4978 _mem_save_service_returned_0
= NDR_PULL_GET_MEM_CTX(ndr
);
4979 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.service_returned
, LIBNDR_FLAG_REF_ALLOC
);
4980 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, r
->out
.service_returned
));
4981 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_service_returned_0
, LIBNDR_FLAG_REF_ALLOC
);
4982 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_resume_handle
));
4983 if (_ptr_resume_handle
) {
4984 NDR_PULL_ALLOC(ndr
, r
->out
.resume_handle
);
4986 r
->out
.resume_handle
= NULL
;
4988 if (r
->out
.resume_handle
) {
4989 _mem_save_resume_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
4990 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.resume_handle
, 0);
4991 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, r
->out
.resume_handle
));
4992 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_resume_handle_0
, 0);
4994 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
4995 NDR_PULL_ALLOC(ndr
, r
->out
.group_name
);
4997 _mem_save_group_name_0
= NDR_PULL_GET_MEM_CTX(ndr
);
4998 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.group_name
, LIBNDR_FLAG_REF_ALLOC
);
4999 NDR_CHECK(ndr_pull_ref_ptr(ndr
, &_ptr_group_name
));
5000 NDR_CHECK(ndr_pull_array_size(ndr
, r
->out
.group_name
));
5001 NDR_CHECK(ndr_pull_array_length(ndr
, r
->out
.group_name
));
5002 if (ndr_get_array_length(ndr
, r
->out
.group_name
) > ndr_get_array_size(ndr
, r
->out
.group_name
)) {
5003 return ndr_pull_error(ndr
, NDR_ERR_ARRAY_SIZE
, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr
, r
->out
.group_name
), ndr_get_array_length(ndr
, r
->out
.group_name
));
5005 NDR_CHECK(ndr_check_string_terminator(ndr
, ndr_get_array_length(ndr
, r
->out
.group_name
), sizeof(uint16_t)));
5006 NDR_CHECK(ndr_pull_charset(ndr
, NDR_SCALARS
, r
->out
.group_name
, ndr_get_array_length(ndr
, r
->out
.group_name
), sizeof(uint16_t), CH_UTF16
));
5007 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_group_name_0
, LIBNDR_FLAG_REF_ALLOC
);
5008 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
5010 return NT_STATUS_OK
;
5013 _PUBLIC_
void ndr_print_EnumServicesStatusExA(struct ndr_print
*ndr
, const char *name
, int flags
, const struct EnumServicesStatusExA
*r
)
5015 ndr_print_struct(ndr
, name
, "EnumServicesStatusExA");
5017 if (flags
& NDR_SET_VALUES
) {
5018 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
5020 if (flags
& NDR_IN
) {
5021 ndr_print_struct(ndr
, "in", "EnumServicesStatusExA");
5023 ndr_print_ptr(ndr
, "scmanager", r
->in
.scmanager
);
5025 ndr_print_policy_handle(ndr
, "scmanager", r
->in
.scmanager
);
5027 ndr_print_uint32(ndr
, "info_level", r
->in
.info_level
);
5028 ndr_print_uint32(ndr
, "type", r
->in
.type
);
5029 ndr_print_uint32(ndr
, "state", r
->in
.state
);
5030 ndr_print_uint32(ndr
, "buf_size", r
->in
.buf_size
);
5031 ndr_print_ptr(ndr
, "resume_handle", r
->in
.resume_handle
);
5033 if (r
->in
.resume_handle
) {
5034 ndr_print_uint32(ndr
, "resume_handle", *r
->in
.resume_handle
);
5039 if (flags
& NDR_OUT
) {
5040 ndr_print_struct(ndr
, "out", "EnumServicesStatusExA");
5042 ndr_print_array_uint8(ndr
, "services", r
->out
.services
, r
->in
.buf_size
);
5043 ndr_print_ptr(ndr
, "bytes_needed", r
->out
.bytes_needed
);
5045 ndr_print_uint32(ndr
, "bytes_needed", *r
->out
.bytes_needed
);
5047 ndr_print_ptr(ndr
, "service_returned", r
->out
.service_returned
);
5049 ndr_print_uint32(ndr
, "service_returned", *r
->out
.service_returned
);
5051 ndr_print_ptr(ndr
, "resume_handle", r
->out
.resume_handle
);
5053 if (r
->out
.resume_handle
) {
5054 ndr_print_uint32(ndr
, "resume_handle", *r
->out
.resume_handle
);
5057 ndr_print_ptr(ndr
, "group_name", r
->out
.group_name
);
5059 ndr_print_ptr(ndr
, "group_name", *r
->out
.group_name
);
5061 ndr_print_string(ndr
, "group_name", *r
->out
.group_name
);
5064 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
5070 NTSTATUS
ndr_push_EnumServicesStatusExW(struct ndr_push
*ndr
, int flags
, const struct EnumServicesStatusExW
*r
)
5072 if (flags
& NDR_IN
) {
5073 if (r
->in
.scmanager
== NULL
) return NT_STATUS_INVALID_PARAMETER_MIX
;
5074 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->in
.scmanager
));
5075 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.info_level
));
5076 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.type
));
5077 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.state
));
5078 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.buf_size
));
5079 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.resume_handle
));
5080 if (r
->in
.resume_handle
) {
5081 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, *r
->in
.resume_handle
));
5084 if (flags
& NDR_OUT
) {
5085 NDR_CHECK(ndr_push_array_uint8(ndr
, NDR_SCALARS
, r
->out
.services
, r
->in
.buf_size
));
5086 if (r
->out
.bytes_needed
== NULL
) return NT_STATUS_INVALID_PARAMETER_MIX
;
5087 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, *r
->out
.bytes_needed
));
5088 if (r
->out
.service_returned
== NULL
) return NT_STATUS_INVALID_PARAMETER_MIX
;
5089 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, *r
->out
.service_returned
));
5090 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->out
.resume_handle
));
5091 if (r
->out
.resume_handle
) {
5092 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, *r
->out
.resume_handle
));
5094 if (r
->out
.group_name
== NULL
) return NT_STATUS_INVALID_PARAMETER_MIX
;
5095 if (*r
->out
.group_name
== NULL
) return NT_STATUS_INVALID_PARAMETER_MIX
;
5096 NDR_CHECK(ndr_push_ref_ptr(ndr
));
5097 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(*r
->out
.group_name
, CH_UTF16
)));
5098 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, 0));
5099 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(*r
->out
.group_name
, CH_UTF16
)));
5100 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
));
5101 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
5103 return NT_STATUS_OK
;
5106 NTSTATUS
ndr_pull_EnumServicesStatusExW(struct ndr_pull
*ndr
, int flags
, struct EnumServicesStatusExW
*r
)
5108 uint32_t _ptr_resume_handle
;
5109 uint32_t _ptr_group_name
;
5110 TALLOC_CTX
*_mem_save_scmanager_0
;
5111 TALLOC_CTX
*_mem_save_bytes_needed_0
;
5112 TALLOC_CTX
*_mem_save_service_returned_0
;
5113 TALLOC_CTX
*_mem_save_resume_handle_0
;
5114 TALLOC_CTX
*_mem_save_group_name_0
;
5115 if (flags
& NDR_IN
) {
5116 ZERO_STRUCT(r
->out
);
5118 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
5119 NDR_PULL_ALLOC(ndr
, r
->in
.scmanager
);
5121 _mem_save_scmanager_0
= NDR_PULL_GET_MEM_CTX(ndr
);
5122 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.scmanager
, LIBNDR_FLAG_REF_ALLOC
);
5123 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->in
.scmanager
));
5124 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_scmanager_0
, LIBNDR_FLAG_REF_ALLOC
);
5125 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.info_level
));
5126 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.type
));
5127 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.state
));
5128 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.buf_size
));
5129 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_resume_handle
));
5130 if (_ptr_resume_handle
) {
5131 NDR_PULL_ALLOC(ndr
, r
->in
.resume_handle
);
5133 r
->in
.resume_handle
= NULL
;
5135 if (r
->in
.resume_handle
) {
5136 _mem_save_resume_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
5137 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.resume_handle
, 0);
5138 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, r
->in
.resume_handle
));
5139 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_resume_handle_0
, 0);
5141 NDR_PULL_ALLOC(ndr
, r
->out
.bytes_needed
);
5142 ZERO_STRUCTP(r
->out
.bytes_needed
);
5143 NDR_PULL_ALLOC(ndr
, r
->out
.service_returned
);
5144 ZERO_STRUCTP(r
->out
.service_returned
);
5145 NDR_PULL_ALLOC(ndr
, r
->out
.group_name
);
5146 ZERO_STRUCTP(r
->out
.group_name
);
5148 if (flags
& NDR_OUT
) {
5149 NDR_PULL_ALLOC_N(ndr
, r
->out
.services
, r
->in
.buf_size
);
5150 NDR_CHECK(ndr_pull_array_uint8(ndr
, NDR_SCALARS
, r
->out
.services
, r
->in
.buf_size
));
5151 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
5152 NDR_PULL_ALLOC(ndr
, r
->out
.bytes_needed
);
5154 _mem_save_bytes_needed_0
= NDR_PULL_GET_MEM_CTX(ndr
);
5155 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.bytes_needed
, LIBNDR_FLAG_REF_ALLOC
);
5156 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, r
->out
.bytes_needed
));
5157 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_bytes_needed_0
, LIBNDR_FLAG_REF_ALLOC
);
5158 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
5159 NDR_PULL_ALLOC(ndr
, r
->out
.service_returned
);
5161 _mem_save_service_returned_0
= NDR_PULL_GET_MEM_CTX(ndr
);
5162 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.service_returned
, LIBNDR_FLAG_REF_ALLOC
);
5163 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, r
->out
.service_returned
));
5164 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_service_returned_0
, LIBNDR_FLAG_REF_ALLOC
);
5165 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_resume_handle
));
5166 if (_ptr_resume_handle
) {
5167 NDR_PULL_ALLOC(ndr
, r
->out
.resume_handle
);
5169 r
->out
.resume_handle
= NULL
;
5171 if (r
->out
.resume_handle
) {
5172 _mem_save_resume_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
5173 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.resume_handle
, 0);
5174 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, r
->out
.resume_handle
));
5175 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_resume_handle_0
, 0);
5177 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
5178 NDR_PULL_ALLOC(ndr
, r
->out
.group_name
);
5180 _mem_save_group_name_0
= NDR_PULL_GET_MEM_CTX(ndr
);
5181 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.group_name
, LIBNDR_FLAG_REF_ALLOC
);
5182 NDR_CHECK(ndr_pull_ref_ptr(ndr
, &_ptr_group_name
));
5183 NDR_CHECK(ndr_pull_array_size(ndr
, r
->out
.group_name
));
5184 NDR_CHECK(ndr_pull_array_length(ndr
, r
->out
.group_name
));
5185 if (ndr_get_array_length(ndr
, r
->out
.group_name
) > ndr_get_array_size(ndr
, r
->out
.group_name
)) {
5186 return ndr_pull_error(ndr
, NDR_ERR_ARRAY_SIZE
, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr
, r
->out
.group_name
), ndr_get_array_length(ndr
, r
->out
.group_name
));
5188 NDR_CHECK(ndr_check_string_terminator(ndr
, ndr_get_array_length(ndr
, r
->out
.group_name
), sizeof(uint16_t)));
5189 NDR_CHECK(ndr_pull_charset(ndr
, NDR_SCALARS
, r
->out
.group_name
, ndr_get_array_length(ndr
, r
->out
.group_name
), sizeof(uint16_t), CH_UTF16
));
5190 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_group_name_0
, LIBNDR_FLAG_REF_ALLOC
);
5191 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
5193 return NT_STATUS_OK
;
5196 _PUBLIC_
void ndr_print_EnumServicesStatusExW(struct ndr_print
*ndr
, const char *name
, int flags
, const struct EnumServicesStatusExW
*r
)
5198 ndr_print_struct(ndr
, name
, "EnumServicesStatusExW");
5200 if (flags
& NDR_SET_VALUES
) {
5201 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
5203 if (flags
& NDR_IN
) {
5204 ndr_print_struct(ndr
, "in", "EnumServicesStatusExW");
5206 ndr_print_ptr(ndr
, "scmanager", r
->in
.scmanager
);
5208 ndr_print_policy_handle(ndr
, "scmanager", r
->in
.scmanager
);
5210 ndr_print_uint32(ndr
, "info_level", r
->in
.info_level
);
5211 ndr_print_uint32(ndr
, "type", r
->in
.type
);
5212 ndr_print_uint32(ndr
, "state", r
->in
.state
);
5213 ndr_print_uint32(ndr
, "buf_size", r
->in
.buf_size
);
5214 ndr_print_ptr(ndr
, "resume_handle", r
->in
.resume_handle
);
5216 if (r
->in
.resume_handle
) {
5217 ndr_print_uint32(ndr
, "resume_handle", *r
->in
.resume_handle
);
5222 if (flags
& NDR_OUT
) {
5223 ndr_print_struct(ndr
, "out", "EnumServicesStatusExW");
5225 ndr_print_array_uint8(ndr
, "services", r
->out
.services
, r
->in
.buf_size
);
5226 ndr_print_ptr(ndr
, "bytes_needed", r
->out
.bytes_needed
);
5228 ndr_print_uint32(ndr
, "bytes_needed", *r
->out
.bytes_needed
);
5230 ndr_print_ptr(ndr
, "service_returned", r
->out
.service_returned
);
5232 ndr_print_uint32(ndr
, "service_returned", *r
->out
.service_returned
);
5234 ndr_print_ptr(ndr
, "resume_handle", r
->out
.resume_handle
);
5236 if (r
->out
.resume_handle
) {
5237 ndr_print_uint32(ndr
, "resume_handle", *r
->out
.resume_handle
);
5240 ndr_print_ptr(ndr
, "group_name", r
->out
.group_name
);
5242 ndr_print_ptr(ndr
, "group_name", *r
->out
.group_name
);
5244 ndr_print_string(ndr
, "group_name", *r
->out
.group_name
);
5247 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
5253 NTSTATUS
ndr_push_svcctl_SCSendTSMessage(struct ndr_push
*ndr
, int flags
, const struct svcctl_SCSendTSMessage
*r
)
5255 if (flags
& NDR_IN
) {
5257 if (flags
& NDR_OUT
) {
5258 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
5260 return NT_STATUS_OK
;
5263 NTSTATUS
ndr_pull_svcctl_SCSendTSMessage(struct ndr_pull
*ndr
, int flags
, struct svcctl_SCSendTSMessage
*r
)
5265 if (flags
& NDR_IN
) {
5267 if (flags
& NDR_OUT
) {
5268 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
5270 return NT_STATUS_OK
;
5273 _PUBLIC_
void ndr_print_svcctl_SCSendTSMessage(struct ndr_print
*ndr
, const char *name
, int flags
, const struct svcctl_SCSendTSMessage
*r
)
5275 ndr_print_struct(ndr
, name
, "svcctl_SCSendTSMessage");
5277 if (flags
& NDR_SET_VALUES
) {
5278 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
5280 if (flags
& NDR_IN
) {
5281 ndr_print_struct(ndr
, "in", "svcctl_SCSendTSMessage");
5285 if (flags
& NDR_OUT
) {
5286 ndr_print_struct(ndr
, "out", "svcctl_SCSendTSMessage");
5288 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
5294 const struct dcerpc_interface_call svcctl_calls
[] = {
5296 "svcctl_CloseServiceHandle",
5297 sizeof(struct svcctl_CloseServiceHandle
),
5298 (ndr_push_flags_fn_t
) ndr_push_svcctl_CloseServiceHandle
,
5299 (ndr_pull_flags_fn_t
) ndr_pull_svcctl_CloseServiceHandle
,
5300 (ndr_print_function_t
) ndr_print_svcctl_CloseServiceHandle
,
5304 "svcctl_ControlService",
5305 sizeof(struct svcctl_ControlService
),
5306 (ndr_push_flags_fn_t
) ndr_push_svcctl_ControlService
,
5307 (ndr_pull_flags_fn_t
) ndr_pull_svcctl_ControlService
,
5308 (ndr_print_function_t
) ndr_print_svcctl_ControlService
,
5312 "svcctl_DeleteService",
5313 sizeof(struct svcctl_DeleteService
),
5314 (ndr_push_flags_fn_t
) ndr_push_svcctl_DeleteService
,
5315 (ndr_pull_flags_fn_t
) ndr_pull_svcctl_DeleteService
,
5316 (ndr_print_function_t
) ndr_print_svcctl_DeleteService
,
5320 "svcctl_LockServiceDatabase",
5321 sizeof(struct svcctl_LockServiceDatabase
),
5322 (ndr_push_flags_fn_t
) ndr_push_svcctl_LockServiceDatabase
,
5323 (ndr_pull_flags_fn_t
) ndr_pull_svcctl_LockServiceDatabase
,
5324 (ndr_print_function_t
) ndr_print_svcctl_LockServiceDatabase
,
5328 "svcctl_QueryServiceObjectSecurity",
5329 sizeof(struct svcctl_QueryServiceObjectSecurity
),
5330 (ndr_push_flags_fn_t
) ndr_push_svcctl_QueryServiceObjectSecurity
,
5331 (ndr_pull_flags_fn_t
) ndr_pull_svcctl_QueryServiceObjectSecurity
,
5332 (ndr_print_function_t
) ndr_print_svcctl_QueryServiceObjectSecurity
,
5336 "svcctl_SetServiceObjectSecurity",
5337 sizeof(struct svcctl_SetServiceObjectSecurity
),
5338 (ndr_push_flags_fn_t
) ndr_push_svcctl_SetServiceObjectSecurity
,
5339 (ndr_pull_flags_fn_t
) ndr_pull_svcctl_SetServiceObjectSecurity
,
5340 (ndr_print_function_t
) ndr_print_svcctl_SetServiceObjectSecurity
,
5344 "svcctl_QueryServiceStatus",
5345 sizeof(struct svcctl_QueryServiceStatus
),
5346 (ndr_push_flags_fn_t
) ndr_push_svcctl_QueryServiceStatus
,
5347 (ndr_pull_flags_fn_t
) ndr_pull_svcctl_QueryServiceStatus
,
5348 (ndr_print_function_t
) ndr_print_svcctl_QueryServiceStatus
,
5352 "svcctl_SetServiceStatus",
5353 sizeof(struct svcctl_SetServiceStatus
),
5354 (ndr_push_flags_fn_t
) ndr_push_svcctl_SetServiceStatus
,
5355 (ndr_pull_flags_fn_t
) ndr_pull_svcctl_SetServiceStatus
,
5356 (ndr_print_function_t
) ndr_print_svcctl_SetServiceStatus
,
5360 "svcctl_UnlockServiceDatabase",
5361 sizeof(struct svcctl_UnlockServiceDatabase
),
5362 (ndr_push_flags_fn_t
) ndr_push_svcctl_UnlockServiceDatabase
,
5363 (ndr_pull_flags_fn_t
) ndr_pull_svcctl_UnlockServiceDatabase
,
5364 (ndr_print_function_t
) ndr_print_svcctl_UnlockServiceDatabase
,
5368 "svcctl_NotifyBootConfigStatus",
5369 sizeof(struct svcctl_NotifyBootConfigStatus
),
5370 (ndr_push_flags_fn_t
) ndr_push_svcctl_NotifyBootConfigStatus
,
5371 (ndr_pull_flags_fn_t
) ndr_pull_svcctl_NotifyBootConfigStatus
,
5372 (ndr_print_function_t
) ndr_print_svcctl_NotifyBootConfigStatus
,
5376 "svcctl_SCSetServiceBitsW",
5377 sizeof(struct svcctl_SCSetServiceBitsW
),
5378 (ndr_push_flags_fn_t
) ndr_push_svcctl_SCSetServiceBitsW
,
5379 (ndr_pull_flags_fn_t
) ndr_pull_svcctl_SCSetServiceBitsW
,
5380 (ndr_print_function_t
) ndr_print_svcctl_SCSetServiceBitsW
,
5384 "svcctl_ChangeServiceConfigW",
5385 sizeof(struct svcctl_ChangeServiceConfigW
),
5386 (ndr_push_flags_fn_t
) ndr_push_svcctl_ChangeServiceConfigW
,
5387 (ndr_pull_flags_fn_t
) ndr_pull_svcctl_ChangeServiceConfigW
,
5388 (ndr_print_function_t
) ndr_print_svcctl_ChangeServiceConfigW
,
5392 "svcctl_CreateServiceW",
5393 sizeof(struct svcctl_CreateServiceW
),
5394 (ndr_push_flags_fn_t
) ndr_push_svcctl_CreateServiceW
,
5395 (ndr_pull_flags_fn_t
) ndr_pull_svcctl_CreateServiceW
,
5396 (ndr_print_function_t
) ndr_print_svcctl_CreateServiceW
,
5400 "svcctl_EnumDependentServicesW",
5401 sizeof(struct svcctl_EnumDependentServicesW
),
5402 (ndr_push_flags_fn_t
) ndr_push_svcctl_EnumDependentServicesW
,
5403 (ndr_pull_flags_fn_t
) ndr_pull_svcctl_EnumDependentServicesW
,
5404 (ndr_print_function_t
) ndr_print_svcctl_EnumDependentServicesW
,
5408 "svcctl_EnumServicesStatusW",
5409 sizeof(struct svcctl_EnumServicesStatusW
),
5410 (ndr_push_flags_fn_t
) ndr_push_svcctl_EnumServicesStatusW
,
5411 (ndr_pull_flags_fn_t
) ndr_pull_svcctl_EnumServicesStatusW
,
5412 (ndr_print_function_t
) ndr_print_svcctl_EnumServicesStatusW
,
5416 "svcctl_OpenSCManagerW",
5417 sizeof(struct svcctl_OpenSCManagerW
),
5418 (ndr_push_flags_fn_t
) ndr_push_svcctl_OpenSCManagerW
,
5419 (ndr_pull_flags_fn_t
) ndr_pull_svcctl_OpenSCManagerW
,
5420 (ndr_print_function_t
) ndr_print_svcctl_OpenSCManagerW
,
5424 "svcctl_OpenServiceW",
5425 sizeof(struct svcctl_OpenServiceW
),
5426 (ndr_push_flags_fn_t
) ndr_push_svcctl_OpenServiceW
,
5427 (ndr_pull_flags_fn_t
) ndr_pull_svcctl_OpenServiceW
,
5428 (ndr_print_function_t
) ndr_print_svcctl_OpenServiceW
,
5432 "svcctl_QueryServiceConfigW",
5433 sizeof(struct svcctl_QueryServiceConfigW
),
5434 (ndr_push_flags_fn_t
) ndr_push_svcctl_QueryServiceConfigW
,
5435 (ndr_pull_flags_fn_t
) ndr_pull_svcctl_QueryServiceConfigW
,
5436 (ndr_print_function_t
) ndr_print_svcctl_QueryServiceConfigW
,
5440 "svcctl_QueryServiceLockStatusW",
5441 sizeof(struct svcctl_QueryServiceLockStatusW
),
5442 (ndr_push_flags_fn_t
) ndr_push_svcctl_QueryServiceLockStatusW
,
5443 (ndr_pull_flags_fn_t
) ndr_pull_svcctl_QueryServiceLockStatusW
,
5444 (ndr_print_function_t
) ndr_print_svcctl_QueryServiceLockStatusW
,
5448 "svcctl_StartServiceW",
5449 sizeof(struct svcctl_StartServiceW
),
5450 (ndr_push_flags_fn_t
) ndr_push_svcctl_StartServiceW
,
5451 (ndr_pull_flags_fn_t
) ndr_pull_svcctl_StartServiceW
,
5452 (ndr_print_function_t
) ndr_print_svcctl_StartServiceW
,
5456 "svcctl_GetServiceDisplayNameW",
5457 sizeof(struct svcctl_GetServiceDisplayNameW
),
5458 (ndr_push_flags_fn_t
) ndr_push_svcctl_GetServiceDisplayNameW
,
5459 (ndr_pull_flags_fn_t
) ndr_pull_svcctl_GetServiceDisplayNameW
,
5460 (ndr_print_function_t
) ndr_print_svcctl_GetServiceDisplayNameW
,
5464 "svcctl_GetServiceKeyNameW",
5465 sizeof(struct svcctl_GetServiceKeyNameW
),
5466 (ndr_push_flags_fn_t
) ndr_push_svcctl_GetServiceKeyNameW
,
5467 (ndr_pull_flags_fn_t
) ndr_pull_svcctl_GetServiceKeyNameW
,
5468 (ndr_print_function_t
) ndr_print_svcctl_GetServiceKeyNameW
,
5472 "svcctl_SCSetServiceBitsA",
5473 sizeof(struct svcctl_SCSetServiceBitsA
),
5474 (ndr_push_flags_fn_t
) ndr_push_svcctl_SCSetServiceBitsA
,
5475 (ndr_pull_flags_fn_t
) ndr_pull_svcctl_SCSetServiceBitsA
,
5476 (ndr_print_function_t
) ndr_print_svcctl_SCSetServiceBitsA
,
5480 "svcctl_ChangeServiceConfigA",
5481 sizeof(struct svcctl_ChangeServiceConfigA
),
5482 (ndr_push_flags_fn_t
) ndr_push_svcctl_ChangeServiceConfigA
,
5483 (ndr_pull_flags_fn_t
) ndr_pull_svcctl_ChangeServiceConfigA
,
5484 (ndr_print_function_t
) ndr_print_svcctl_ChangeServiceConfigA
,
5488 "svcctl_CreateServiceA",
5489 sizeof(struct svcctl_CreateServiceA
),
5490 (ndr_push_flags_fn_t
) ndr_push_svcctl_CreateServiceA
,
5491 (ndr_pull_flags_fn_t
) ndr_pull_svcctl_CreateServiceA
,
5492 (ndr_print_function_t
) ndr_print_svcctl_CreateServiceA
,
5496 "svcctl_EnumDependentServicesA",
5497 sizeof(struct svcctl_EnumDependentServicesA
),
5498 (ndr_push_flags_fn_t
) ndr_push_svcctl_EnumDependentServicesA
,
5499 (ndr_pull_flags_fn_t
) ndr_pull_svcctl_EnumDependentServicesA
,
5500 (ndr_print_function_t
) ndr_print_svcctl_EnumDependentServicesA
,
5504 "svcctl_EnumServicesStatusA",
5505 sizeof(struct svcctl_EnumServicesStatusA
),
5506 (ndr_push_flags_fn_t
) ndr_push_svcctl_EnumServicesStatusA
,
5507 (ndr_pull_flags_fn_t
) ndr_pull_svcctl_EnumServicesStatusA
,
5508 (ndr_print_function_t
) ndr_print_svcctl_EnumServicesStatusA
,
5512 "svcctl_OpenSCManagerA",
5513 sizeof(struct svcctl_OpenSCManagerA
),
5514 (ndr_push_flags_fn_t
) ndr_push_svcctl_OpenSCManagerA
,
5515 (ndr_pull_flags_fn_t
) ndr_pull_svcctl_OpenSCManagerA
,
5516 (ndr_print_function_t
) ndr_print_svcctl_OpenSCManagerA
,
5520 "svcctl_OpenServiceA",
5521 sizeof(struct svcctl_OpenServiceA
),
5522 (ndr_push_flags_fn_t
) ndr_push_svcctl_OpenServiceA
,
5523 (ndr_pull_flags_fn_t
) ndr_pull_svcctl_OpenServiceA
,
5524 (ndr_print_function_t
) ndr_print_svcctl_OpenServiceA
,
5528 "svcctl_QueryServiceConfigA",
5529 sizeof(struct svcctl_QueryServiceConfigA
),
5530 (ndr_push_flags_fn_t
) ndr_push_svcctl_QueryServiceConfigA
,
5531 (ndr_pull_flags_fn_t
) ndr_pull_svcctl_QueryServiceConfigA
,
5532 (ndr_print_function_t
) ndr_print_svcctl_QueryServiceConfigA
,
5536 "svcctl_QueryServiceLockStatusA",
5537 sizeof(struct svcctl_QueryServiceLockStatusA
),
5538 (ndr_push_flags_fn_t
) ndr_push_svcctl_QueryServiceLockStatusA
,
5539 (ndr_pull_flags_fn_t
) ndr_pull_svcctl_QueryServiceLockStatusA
,
5540 (ndr_print_function_t
) ndr_print_svcctl_QueryServiceLockStatusA
,
5544 "svcctl_StartServiceA",
5545 sizeof(struct svcctl_StartServiceA
),
5546 (ndr_push_flags_fn_t
) ndr_push_svcctl_StartServiceA
,
5547 (ndr_pull_flags_fn_t
) ndr_pull_svcctl_StartServiceA
,
5548 (ndr_print_function_t
) ndr_print_svcctl_StartServiceA
,
5552 "svcctl_GetServiceDisplayNameA",
5553 sizeof(struct svcctl_GetServiceDisplayNameA
),
5554 (ndr_push_flags_fn_t
) ndr_push_svcctl_GetServiceDisplayNameA
,
5555 (ndr_pull_flags_fn_t
) ndr_pull_svcctl_GetServiceDisplayNameA
,
5556 (ndr_print_function_t
) ndr_print_svcctl_GetServiceDisplayNameA
,
5560 "svcctl_GetServiceKeyNameA",
5561 sizeof(struct svcctl_GetServiceKeyNameA
),
5562 (ndr_push_flags_fn_t
) ndr_push_svcctl_GetServiceKeyNameA
,
5563 (ndr_pull_flags_fn_t
) ndr_pull_svcctl_GetServiceKeyNameA
,
5564 (ndr_print_function_t
) ndr_print_svcctl_GetServiceKeyNameA
,
5568 "svcctl_GetCurrentGroupeStateW",
5569 sizeof(struct svcctl_GetCurrentGroupeStateW
),
5570 (ndr_push_flags_fn_t
) ndr_push_svcctl_GetCurrentGroupeStateW
,
5571 (ndr_pull_flags_fn_t
) ndr_pull_svcctl_GetCurrentGroupeStateW
,
5572 (ndr_print_function_t
) ndr_print_svcctl_GetCurrentGroupeStateW
,
5576 "svcctl_EnumServiceGroupW",
5577 sizeof(struct svcctl_EnumServiceGroupW
),
5578 (ndr_push_flags_fn_t
) ndr_push_svcctl_EnumServiceGroupW
,
5579 (ndr_pull_flags_fn_t
) ndr_pull_svcctl_EnumServiceGroupW
,
5580 (ndr_print_function_t
) ndr_print_svcctl_EnumServiceGroupW
,
5584 "svcctl_ChangeServiceConfig2A",
5585 sizeof(struct svcctl_ChangeServiceConfig2A
),
5586 (ndr_push_flags_fn_t
) ndr_push_svcctl_ChangeServiceConfig2A
,
5587 (ndr_pull_flags_fn_t
) ndr_pull_svcctl_ChangeServiceConfig2A
,
5588 (ndr_print_function_t
) ndr_print_svcctl_ChangeServiceConfig2A
,
5592 "svcctl_ChangeServiceConfig2W",
5593 sizeof(struct svcctl_ChangeServiceConfig2W
),
5594 (ndr_push_flags_fn_t
) ndr_push_svcctl_ChangeServiceConfig2W
,
5595 (ndr_pull_flags_fn_t
) ndr_pull_svcctl_ChangeServiceConfig2W
,
5596 (ndr_print_function_t
) ndr_print_svcctl_ChangeServiceConfig2W
,
5600 "svcctl_QueryServiceConfig2A",
5601 sizeof(struct svcctl_QueryServiceConfig2A
),
5602 (ndr_push_flags_fn_t
) ndr_push_svcctl_QueryServiceConfig2A
,
5603 (ndr_pull_flags_fn_t
) ndr_pull_svcctl_QueryServiceConfig2A
,
5604 (ndr_print_function_t
) ndr_print_svcctl_QueryServiceConfig2A
,
5608 "svcctl_QueryServiceConfig2W",
5609 sizeof(struct svcctl_QueryServiceConfig2W
),
5610 (ndr_push_flags_fn_t
) ndr_push_svcctl_QueryServiceConfig2W
,
5611 (ndr_pull_flags_fn_t
) ndr_pull_svcctl_QueryServiceConfig2W
,
5612 (ndr_print_function_t
) ndr_print_svcctl_QueryServiceConfig2W
,
5616 "svcctl_QueryServiceStatusEx",
5617 sizeof(struct svcctl_QueryServiceStatusEx
),
5618 (ndr_push_flags_fn_t
) ndr_push_svcctl_QueryServiceStatusEx
,
5619 (ndr_pull_flags_fn_t
) ndr_pull_svcctl_QueryServiceStatusEx
,
5620 (ndr_print_function_t
) ndr_print_svcctl_QueryServiceStatusEx
,
5624 "EnumServicesStatusExA",
5625 sizeof(struct EnumServicesStatusExA
),
5626 (ndr_push_flags_fn_t
) ndr_push_EnumServicesStatusExA
,
5627 (ndr_pull_flags_fn_t
) ndr_pull_EnumServicesStatusExA
,
5628 (ndr_print_function_t
) ndr_print_EnumServicesStatusExA
,
5632 "EnumServicesStatusExW",
5633 sizeof(struct EnumServicesStatusExW
),
5634 (ndr_push_flags_fn_t
) ndr_push_EnumServicesStatusExW
,
5635 (ndr_pull_flags_fn_t
) ndr_pull_EnumServicesStatusExW
,
5636 (ndr_print_function_t
) ndr_print_EnumServicesStatusExW
,
5640 "svcctl_SCSendTSMessage",
5641 sizeof(struct svcctl_SCSendTSMessage
),
5642 (ndr_push_flags_fn_t
) ndr_push_svcctl_SCSendTSMessage
,
5643 (ndr_pull_flags_fn_t
) ndr_pull_svcctl_SCSendTSMessage
,
5644 (ndr_print_function_t
) ndr_print_svcctl_SCSendTSMessage
,
5647 { NULL
, 0, NULL
, NULL
, NULL
, False
}
5650 const char * const svcctl_endpoint_strings
[] = {
5651 "ncacn_np:[\\pipe\\svcctl]",
5655 const struct dcerpc_endpoint_list svcctl_endpoints
= {
5657 .names
= svcctl_endpoint_strings
5660 const char * const svcctl_authservice_strings
[] = {
5664 const struct dcerpc_authservice_list svcctl_authservices
= {
5666 .names
= svcctl_authservice_strings
5670 const struct dcerpc_interface_table dcerpc_table_svcctl
= {
5673 {0x367abb81,0x9844,0x35f1,{0xad,0x32},{0x98,0xf0,0x38,0x00,0x10,0x03}},
5674 DCERPC_SVCCTL_VERSION
5676 .helpstring
= DCERPC_SVCCTL_HELPSTRING
,
5678 .calls
= svcctl_calls
,
5679 .endpoints
= &svcctl_endpoints
,
5680 .authservices
= &svcctl_authservices