1 /* parser auto-generated by pidl */
4 #include "librpc/gen_ndr/ndr_svcctl.h"
6 static enum ndr_err_code
ndr_push_SERVICE_LOCK_STATUS(struct ndr_push
*ndr
, int ndr_flags
, const struct SERVICE_LOCK_STATUS
*r
)
8 if (ndr_flags
& NDR_SCALARS
) {
9 NDR_CHECK(ndr_push_align(ndr
, 4));
10 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->is_locked
));
11 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->lock_owner
));
12 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->lock_duration
));
14 if (ndr_flags
& NDR_BUFFERS
) {
16 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->lock_owner
, CH_UTF16
)));
17 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, 0));
18 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->lock_owner
, CH_UTF16
)));
19 NDR_CHECK(ndr_push_charset(ndr
, NDR_SCALARS
, r
->lock_owner
, ndr_charset_length(r
->lock_owner
, CH_UTF16
), sizeof(uint16_t), CH_UTF16
));
22 return NDR_ERR_SUCCESS
;
25 static enum ndr_err_code
ndr_pull_SERVICE_LOCK_STATUS(struct ndr_pull
*ndr
, int ndr_flags
, struct SERVICE_LOCK_STATUS
*r
)
27 uint32_t _ptr_lock_owner
;
28 TALLOC_CTX
*_mem_save_lock_owner_0
;
29 if (ndr_flags
& NDR_SCALARS
) {
30 NDR_CHECK(ndr_pull_align(ndr
, 4));
31 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->is_locked
));
32 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_lock_owner
));
33 if (_ptr_lock_owner
) {
34 NDR_PULL_ALLOC(ndr
, r
->lock_owner
);
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);
54 return NDR_ERR_SUCCESS
;
57 _PUBLIC_
void ndr_print_SERVICE_LOCK_STATUS(struct ndr_print
*ndr
, const char *name
, const struct SERVICE_LOCK_STATUS
*r
)
59 ndr_print_struct(ndr
, name
, "SERVICE_LOCK_STATUS");
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 static enum ndr_err_code
ndr_push_SERVICE_STATUS(struct ndr_push
*ndr
, int ndr_flags
, const struct SERVICE_STATUS
*r
)
74 if (ndr_flags
& NDR_SCALARS
) {
75 NDR_CHECK(ndr_push_align(ndr
, 4));
76 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->type
));
77 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->state
));
78 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->controls_accepted
));
79 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->win32_exit_code
));
80 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->service_exit_code
));
81 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->check_point
));
82 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->wait_hint
));
84 if (ndr_flags
& NDR_BUFFERS
) {
86 return NDR_ERR_SUCCESS
;
89 static enum ndr_err_code
ndr_pull_SERVICE_STATUS(struct ndr_pull
*ndr
, int ndr_flags
, struct SERVICE_STATUS
*r
)
91 if (ndr_flags
& NDR_SCALARS
) {
92 NDR_CHECK(ndr_pull_align(ndr
, 4));
93 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->type
));
94 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->state
));
95 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->controls_accepted
));
96 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->win32_exit_code
));
97 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->service_exit_code
));
98 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->check_point
));
99 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->wait_hint
));
101 if (ndr_flags
& NDR_BUFFERS
) {
103 return NDR_ERR_SUCCESS
;
106 _PUBLIC_
void ndr_print_SERVICE_STATUS(struct ndr_print
*ndr
, const char *name
, const struct SERVICE_STATUS
*r
)
108 ndr_print_struct(ndr
, name
, "SERVICE_STATUS");
110 ndr_print_uint32(ndr
, "type", r
->type
);
111 ndr_print_uint32(ndr
, "state", r
->state
);
112 ndr_print_uint32(ndr
, "controls_accepted", r
->controls_accepted
);
113 ndr_print_WERROR(ndr
, "win32_exit_code", r
->win32_exit_code
);
114 ndr_print_uint32(ndr
, "service_exit_code", r
->service_exit_code
);
115 ndr_print_uint32(ndr
, "check_point", r
->check_point
);
116 ndr_print_uint32(ndr
, "wait_hint", r
->wait_hint
);
120 static enum ndr_err_code
ndr_push_ENUM_SERVICE_STATUS(struct ndr_push
*ndr
, int ndr_flags
, const struct ENUM_SERVICE_STATUS
*r
)
122 if (ndr_flags
& NDR_SCALARS
) {
123 NDR_CHECK(ndr_push_align(ndr
, 4));
125 uint32_t _flags_save_string
= ndr
->flags
;
126 ndr_set_flags(&ndr
->flags
, LIBNDR_FLAG_STR_ASCII
|LIBNDR_FLAG_STR_NULLTERM
);
127 NDR_CHECK(ndr_push_relative_ptr1(ndr
, r
->service_name
));
128 ndr
->flags
= _flags_save_string
;
131 uint32_t _flags_save_string
= ndr
->flags
;
132 ndr_set_flags(&ndr
->flags
, LIBNDR_FLAG_STR_ASCII
|LIBNDR_FLAG_STR_NULLTERM
);
133 NDR_CHECK(ndr_push_relative_ptr1(ndr
, r
->display_name
));
134 ndr
->flags
= _flags_save_string
;
136 NDR_CHECK(ndr_push_SERVICE_STATUS(ndr
, NDR_SCALARS
, &r
->status
));
138 if (ndr_flags
& NDR_BUFFERS
) {
140 uint32_t _flags_save_string
= ndr
->flags
;
141 ndr_set_flags(&ndr
->flags
, LIBNDR_FLAG_STR_ASCII
|LIBNDR_FLAG_STR_NULLTERM
);
142 if (r
->service_name
) {
143 NDR_CHECK(ndr_push_relative_ptr2(ndr
, r
->service_name
));
144 NDR_CHECK(ndr_push_string(ndr
, NDR_SCALARS
, r
->service_name
));
146 ndr
->flags
= _flags_save_string
;
149 uint32_t _flags_save_string
= ndr
->flags
;
150 ndr_set_flags(&ndr
->flags
, LIBNDR_FLAG_STR_ASCII
|LIBNDR_FLAG_STR_NULLTERM
);
151 if (r
->display_name
) {
152 NDR_CHECK(ndr_push_relative_ptr2(ndr
, r
->display_name
));
153 NDR_CHECK(ndr_push_string(ndr
, NDR_SCALARS
, r
->display_name
));
155 ndr
->flags
= _flags_save_string
;
158 return NDR_ERR_SUCCESS
;
161 static enum ndr_err_code
ndr_pull_ENUM_SERVICE_STATUS(struct ndr_pull
*ndr
, int ndr_flags
, struct ENUM_SERVICE_STATUS
*r
)
163 uint32_t _ptr_service_name
;
164 TALLOC_CTX
*_mem_save_service_name_0
;
165 uint32_t _ptr_display_name
;
166 TALLOC_CTX
*_mem_save_display_name_0
;
167 if (ndr_flags
& NDR_SCALARS
) {
168 NDR_CHECK(ndr_pull_align(ndr
, 4));
170 uint32_t _flags_save_string
= ndr
->flags
;
171 ndr_set_flags(&ndr
->flags
, LIBNDR_FLAG_STR_ASCII
|LIBNDR_FLAG_STR_NULLTERM
);
172 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_service_name
));
173 if (_ptr_service_name
) {
174 NDR_PULL_ALLOC(ndr
, r
->service_name
);
175 NDR_CHECK(ndr_pull_relative_ptr1(ndr
, r
->service_name
, _ptr_service_name
));
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 uint32_t _relative_save_offset
;
201 _relative_save_offset
= ndr
->offset
;
202 NDR_CHECK(ndr_pull_relative_ptr2(ndr
, r
->service_name
));
203 _mem_save_service_name_0
= NDR_PULL_GET_MEM_CTX(ndr
);
204 NDR_PULL_SET_MEM_CTX(ndr
, r
->service_name
, 0);
205 NDR_CHECK(ndr_pull_string(ndr
, NDR_SCALARS
, &r
->service_name
));
206 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_service_name_0
, 0);
207 ndr
->offset
= _relative_save_offset
;
209 ndr
->flags
= _flags_save_string
;
212 uint32_t _flags_save_string
= ndr
->flags
;
213 ndr_set_flags(&ndr
->flags
, LIBNDR_FLAG_STR_ASCII
|LIBNDR_FLAG_STR_NULLTERM
);
214 if (r
->display_name
) {
215 uint32_t _relative_save_offset
;
216 _relative_save_offset
= ndr
->offset
;
217 NDR_CHECK(ndr_pull_relative_ptr2(ndr
, r
->display_name
));
218 _mem_save_display_name_0
= NDR_PULL_GET_MEM_CTX(ndr
);
219 NDR_PULL_SET_MEM_CTX(ndr
, r
->display_name
, 0);
220 NDR_CHECK(ndr_pull_string(ndr
, NDR_SCALARS
, &r
->display_name
));
221 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_display_name_0
, 0);
222 ndr
->offset
= _relative_save_offset
;
224 ndr
->flags
= _flags_save_string
;
227 return NDR_ERR_SUCCESS
;
230 _PUBLIC_
void ndr_print_ENUM_SERVICE_STATUS(struct ndr_print
*ndr
, const char *name
, const struct ENUM_SERVICE_STATUS
*r
)
232 ndr_print_struct(ndr
, name
, "ENUM_SERVICE_STATUS");
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_
enum ndr_err_code
ndr_push_svcctl_ServerType(struct ndr_push
*ndr
, int ndr_flags
, uint32_t r
)
252 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
));
253 return NDR_ERR_SUCCESS
;
256 _PUBLIC_
enum ndr_err_code
ndr_pull_svcctl_ServerType(struct ndr_pull
*ndr
, int ndr_flags
, uint32_t *r
)
259 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &v
));
261 return NDR_ERR_SUCCESS
;
264 _PUBLIC_
void ndr_print_svcctl_ServerType(struct ndr_print
*ndr
, const char *name
, uint32_t r
)
266 ndr_print_uint32(ndr
, name
, r
);
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 static enum ndr_err_code
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
) {
302 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
304 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->in
.handle
));
306 if (flags
& NDR_OUT
) {
307 if (r
->out
.handle
== NULL
) {
308 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
310 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->out
.handle
));
311 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
313 return NDR_ERR_SUCCESS
;
316 static enum ndr_err_code
ndr_pull_svcctl_CloseServiceHandle(struct ndr_pull
*ndr
, int flags
, struct svcctl_CloseServiceHandle
*r
)
318 TALLOC_CTX
*_mem_save_handle_0
;
319 if (flags
& NDR_IN
) {
322 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
323 NDR_PULL_ALLOC(ndr
, r
->in
.handle
);
325 _mem_save_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
326 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.handle
, LIBNDR_FLAG_REF_ALLOC
);
327 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->in
.handle
));
328 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_handle_0
, LIBNDR_FLAG_REF_ALLOC
);
329 NDR_PULL_ALLOC(ndr
, r
->out
.handle
);
330 *r
->out
.handle
= *r
->in
.handle
;
332 if (flags
& NDR_OUT
) {
333 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
334 NDR_PULL_ALLOC(ndr
, r
->out
.handle
);
336 _mem_save_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
337 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.handle
, LIBNDR_FLAG_REF_ALLOC
);
338 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->out
.handle
));
339 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_handle_0
, LIBNDR_FLAG_REF_ALLOC
);
340 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
342 return NDR_ERR_SUCCESS
;
345 _PUBLIC_
void ndr_print_svcctl_CloseServiceHandle(struct ndr_print
*ndr
, const char *name
, int flags
, const struct svcctl_CloseServiceHandle
*r
)
347 ndr_print_struct(ndr
, name
, "svcctl_CloseServiceHandle");
349 if (flags
& NDR_SET_VALUES
) {
350 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
352 if (flags
& NDR_IN
) {
353 ndr_print_struct(ndr
, "in", "svcctl_CloseServiceHandle");
355 ndr_print_ptr(ndr
, "handle", r
->in
.handle
);
357 ndr_print_policy_handle(ndr
, "handle", r
->in
.handle
);
361 if (flags
& NDR_OUT
) {
362 ndr_print_struct(ndr
, "out", "svcctl_CloseServiceHandle");
364 ndr_print_ptr(ndr
, "handle", r
->out
.handle
);
366 ndr_print_policy_handle(ndr
, "handle", r
->out
.handle
);
368 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
374 static enum ndr_err_code
ndr_push_svcctl_ControlService(struct ndr_push
*ndr
, int flags
, const struct svcctl_ControlService
*r
)
376 if (flags
& NDR_IN
) {
377 if (r
->in
.handle
== NULL
) {
378 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
380 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->in
.handle
));
381 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.control
));
383 if (flags
& NDR_OUT
) {
384 if (r
->out
.service_status
== NULL
) {
385 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
387 NDR_CHECK(ndr_push_SERVICE_STATUS(ndr
, NDR_SCALARS
, r
->out
.service_status
));
388 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
390 return NDR_ERR_SUCCESS
;
393 static enum ndr_err_code
ndr_pull_svcctl_ControlService(struct ndr_pull
*ndr
, int flags
, struct svcctl_ControlService
*r
)
395 TALLOC_CTX
*_mem_save_handle_0
;
396 TALLOC_CTX
*_mem_save_service_status_0
;
397 if (flags
& NDR_IN
) {
400 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
401 NDR_PULL_ALLOC(ndr
, r
->in
.handle
);
403 _mem_save_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
404 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.handle
, LIBNDR_FLAG_REF_ALLOC
);
405 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->in
.handle
));
406 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_handle_0
, LIBNDR_FLAG_REF_ALLOC
);
407 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.control
));
408 NDR_PULL_ALLOC(ndr
, r
->out
.service_status
);
409 ZERO_STRUCTP(r
->out
.service_status
);
411 if (flags
& NDR_OUT
) {
412 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
413 NDR_PULL_ALLOC(ndr
, r
->out
.service_status
);
415 _mem_save_service_status_0
= NDR_PULL_GET_MEM_CTX(ndr
);
416 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.service_status
, LIBNDR_FLAG_REF_ALLOC
);
417 NDR_CHECK(ndr_pull_SERVICE_STATUS(ndr
, NDR_SCALARS
, r
->out
.service_status
));
418 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_service_status_0
, LIBNDR_FLAG_REF_ALLOC
);
419 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
421 return NDR_ERR_SUCCESS
;
424 _PUBLIC_
void ndr_print_svcctl_ControlService(struct ndr_print
*ndr
, const char *name
, int flags
, const struct svcctl_ControlService
*r
)
426 ndr_print_struct(ndr
, name
, "svcctl_ControlService");
428 if (flags
& NDR_SET_VALUES
) {
429 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
431 if (flags
& NDR_IN
) {
432 ndr_print_struct(ndr
, "in", "svcctl_ControlService");
434 ndr_print_ptr(ndr
, "handle", r
->in
.handle
);
436 ndr_print_policy_handle(ndr
, "handle", r
->in
.handle
);
438 ndr_print_uint32(ndr
, "control", r
->in
.control
);
441 if (flags
& NDR_OUT
) {
442 ndr_print_struct(ndr
, "out", "svcctl_ControlService");
444 ndr_print_ptr(ndr
, "service_status", r
->out
.service_status
);
446 ndr_print_SERVICE_STATUS(ndr
, "service_status", r
->out
.service_status
);
448 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
454 static enum ndr_err_code
ndr_push_svcctl_DeleteService(struct ndr_push
*ndr
, int flags
, const struct svcctl_DeleteService
*r
)
456 if (flags
& NDR_IN
) {
457 if (r
->in
.handle
== NULL
) {
458 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
460 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->in
.handle
));
462 if (flags
& NDR_OUT
) {
463 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
465 return NDR_ERR_SUCCESS
;
468 static enum ndr_err_code
ndr_pull_svcctl_DeleteService(struct ndr_pull
*ndr
, int flags
, struct svcctl_DeleteService
*r
)
470 TALLOC_CTX
*_mem_save_handle_0
;
471 if (flags
& NDR_IN
) {
472 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
473 NDR_PULL_ALLOC(ndr
, r
->in
.handle
);
475 _mem_save_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
476 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.handle
, LIBNDR_FLAG_REF_ALLOC
);
477 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->in
.handle
));
478 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_handle_0
, LIBNDR_FLAG_REF_ALLOC
);
480 if (flags
& NDR_OUT
) {
481 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
483 return NDR_ERR_SUCCESS
;
486 _PUBLIC_
void ndr_print_svcctl_DeleteService(struct ndr_print
*ndr
, const char *name
, int flags
, const struct svcctl_DeleteService
*r
)
488 ndr_print_struct(ndr
, name
, "svcctl_DeleteService");
490 if (flags
& NDR_SET_VALUES
) {
491 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
493 if (flags
& NDR_IN
) {
494 ndr_print_struct(ndr
, "in", "svcctl_DeleteService");
496 ndr_print_ptr(ndr
, "handle", r
->in
.handle
);
498 ndr_print_policy_handle(ndr
, "handle", r
->in
.handle
);
502 if (flags
& NDR_OUT
) {
503 ndr_print_struct(ndr
, "out", "svcctl_DeleteService");
505 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
511 static enum ndr_err_code
ndr_push_svcctl_LockServiceDatabase(struct ndr_push
*ndr
, int flags
, const struct svcctl_LockServiceDatabase
*r
)
513 if (flags
& NDR_IN
) {
514 if (r
->in
.handle
== NULL
) {
515 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
517 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->in
.handle
));
519 if (flags
& NDR_OUT
) {
520 if (r
->out
.lock
== NULL
) {
521 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
523 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->out
.lock
));
524 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
526 return NDR_ERR_SUCCESS
;
529 static enum ndr_err_code
ndr_pull_svcctl_LockServiceDatabase(struct ndr_pull
*ndr
, int flags
, struct svcctl_LockServiceDatabase
*r
)
531 TALLOC_CTX
*_mem_save_handle_0
;
532 TALLOC_CTX
*_mem_save_lock_0
;
533 if (flags
& NDR_IN
) {
536 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
537 NDR_PULL_ALLOC(ndr
, r
->in
.handle
);
539 _mem_save_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
540 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.handle
, LIBNDR_FLAG_REF_ALLOC
);
541 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->in
.handle
));
542 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_handle_0
, LIBNDR_FLAG_REF_ALLOC
);
543 NDR_PULL_ALLOC(ndr
, r
->out
.lock
);
544 ZERO_STRUCTP(r
->out
.lock
);
546 if (flags
& NDR_OUT
) {
547 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
548 NDR_PULL_ALLOC(ndr
, r
->out
.lock
);
550 _mem_save_lock_0
= NDR_PULL_GET_MEM_CTX(ndr
);
551 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.lock
, LIBNDR_FLAG_REF_ALLOC
);
552 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->out
.lock
));
553 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_lock_0
, LIBNDR_FLAG_REF_ALLOC
);
554 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
556 return NDR_ERR_SUCCESS
;
559 _PUBLIC_
void ndr_print_svcctl_LockServiceDatabase(struct ndr_print
*ndr
, const char *name
, int flags
, const struct svcctl_LockServiceDatabase
*r
)
561 ndr_print_struct(ndr
, name
, "svcctl_LockServiceDatabase");
563 if (flags
& NDR_SET_VALUES
) {
564 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
566 if (flags
& NDR_IN
) {
567 ndr_print_struct(ndr
, "in", "svcctl_LockServiceDatabase");
569 ndr_print_ptr(ndr
, "handle", r
->in
.handle
);
571 ndr_print_policy_handle(ndr
, "handle", r
->in
.handle
);
575 if (flags
& NDR_OUT
) {
576 ndr_print_struct(ndr
, "out", "svcctl_LockServiceDatabase");
578 ndr_print_ptr(ndr
, "lock", r
->out
.lock
);
580 ndr_print_policy_handle(ndr
, "lock", r
->out
.lock
);
582 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
588 static enum ndr_err_code
ndr_push_svcctl_QueryServiceObjectSecurity(struct ndr_push
*ndr
, int flags
, const struct svcctl_QueryServiceObjectSecurity
*r
)
590 if (flags
& NDR_IN
) {
591 if (r
->in
.handle
== NULL
) {
592 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
594 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->in
.handle
));
595 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.security_flags
));
596 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.buffer_size
));
598 if (flags
& NDR_OUT
) {
599 if (r
->out
.buffer
== NULL
) {
600 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
602 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.buffer_size
));
603 NDR_CHECK(ndr_push_array_uint8(ndr
, NDR_SCALARS
, r
->out
.buffer
, r
->in
.buffer_size
));
604 if (r
->out
.needed
== NULL
) {
605 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
607 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, *r
->out
.needed
));
608 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
610 return NDR_ERR_SUCCESS
;
613 static enum ndr_err_code
ndr_pull_svcctl_QueryServiceObjectSecurity(struct ndr_pull
*ndr
, int flags
, struct svcctl_QueryServiceObjectSecurity
*r
)
615 TALLOC_CTX
*_mem_save_handle_0
;
616 TALLOC_CTX
*_mem_save_needed_0
;
617 if (flags
& NDR_IN
) {
620 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
621 NDR_PULL_ALLOC(ndr
, r
->in
.handle
);
623 _mem_save_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
624 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.handle
, LIBNDR_FLAG_REF_ALLOC
);
625 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->in
.handle
));
626 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_handle_0
, LIBNDR_FLAG_REF_ALLOC
);
627 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.security_flags
));
628 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.buffer_size
));
629 if (r
->in
.buffer_size
< 0 || r
->in
.buffer_size
> 0x40000) {
630 return ndr_pull_error(ndr
, NDR_ERR_RANGE
, "value out of range");
632 NDR_PULL_ALLOC_N(ndr
, r
->out
.buffer
, r
->in
.buffer_size
);
633 memset(r
->out
.buffer
, 0, (r
->in
.buffer_size
) * sizeof(*r
->out
.buffer
));
634 NDR_PULL_ALLOC(ndr
, r
->out
.needed
);
635 ZERO_STRUCTP(r
->out
.needed
);
637 if (flags
& NDR_OUT
) {
638 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->out
.buffer
));
639 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
640 NDR_PULL_ALLOC_N(ndr
, r
->out
.buffer
, ndr_get_array_size(ndr
, &r
->out
.buffer
));
642 NDR_CHECK(ndr_pull_array_uint8(ndr
, NDR_SCALARS
, r
->out
.buffer
, ndr_get_array_size(ndr
, &r
->out
.buffer
)));
643 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
644 NDR_PULL_ALLOC(ndr
, r
->out
.needed
);
646 _mem_save_needed_0
= NDR_PULL_GET_MEM_CTX(ndr
);
647 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.needed
, LIBNDR_FLAG_REF_ALLOC
);
648 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, r
->out
.needed
));
649 if (*r
->out
.needed
< 0 || *r
->out
.needed
> 0x40000) {
650 return ndr_pull_error(ndr
, NDR_ERR_RANGE
, "value out of range");
652 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_needed_0
, LIBNDR_FLAG_REF_ALLOC
);
653 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
655 NDR_CHECK(ndr_check_array_size(ndr
, (void*)&r
->out
.buffer
, r
->in
.buffer_size
));
658 return NDR_ERR_SUCCESS
;
661 _PUBLIC_
void ndr_print_svcctl_QueryServiceObjectSecurity(struct ndr_print
*ndr
, const char *name
, int flags
, const struct svcctl_QueryServiceObjectSecurity
*r
)
663 ndr_print_struct(ndr
, name
, "svcctl_QueryServiceObjectSecurity");
665 if (flags
& NDR_SET_VALUES
) {
666 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
668 if (flags
& NDR_IN
) {
669 ndr_print_struct(ndr
, "in", "svcctl_QueryServiceObjectSecurity");
671 ndr_print_ptr(ndr
, "handle", r
->in
.handle
);
673 ndr_print_policy_handle(ndr
, "handle", r
->in
.handle
);
675 ndr_print_uint32(ndr
, "security_flags", r
->in
.security_flags
);
676 ndr_print_uint32(ndr
, "buffer_size", r
->in
.buffer_size
);
679 if (flags
& NDR_OUT
) {
680 ndr_print_struct(ndr
, "out", "svcctl_QueryServiceObjectSecurity");
682 ndr_print_ptr(ndr
, "buffer", r
->out
.buffer
);
684 ndr_print_array_uint8(ndr
, "buffer", r
->out
.buffer
, r
->in
.buffer_size
);
686 ndr_print_ptr(ndr
, "needed", r
->out
.needed
);
688 ndr_print_uint32(ndr
, "needed", *r
->out
.needed
);
690 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
696 static enum ndr_err_code
ndr_push_svcctl_SetServiceObjectSecurity(struct ndr_push
*ndr
, int flags
, const struct svcctl_SetServiceObjectSecurity
*r
)
698 if (flags
& NDR_IN
) {
699 if (r
->in
.handle
== NULL
) {
700 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
702 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->in
.handle
));
703 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.security_flags
));
704 if (r
->in
.buffer
== NULL
) {
705 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
707 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.buffer_size
));
708 NDR_CHECK(ndr_push_array_uint8(ndr
, NDR_SCALARS
, r
->in
.buffer
, r
->in
.buffer_size
));
709 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.buffer_size
));
711 if (flags
& NDR_OUT
) {
712 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
714 return NDR_ERR_SUCCESS
;
717 static enum ndr_err_code
ndr_pull_svcctl_SetServiceObjectSecurity(struct ndr_pull
*ndr
, int flags
, struct svcctl_SetServiceObjectSecurity
*r
)
719 TALLOC_CTX
*_mem_save_handle_0
;
720 if (flags
& NDR_IN
) {
721 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
722 NDR_PULL_ALLOC(ndr
, r
->in
.handle
);
724 _mem_save_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
725 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.handle
, LIBNDR_FLAG_REF_ALLOC
);
726 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->in
.handle
));
727 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_handle_0
, LIBNDR_FLAG_REF_ALLOC
);
728 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.security_flags
));
729 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->in
.buffer
));
730 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
731 NDR_PULL_ALLOC_N(ndr
, r
->in
.buffer
, ndr_get_array_size(ndr
, &r
->in
.buffer
));
733 NDR_CHECK(ndr_pull_array_uint8(ndr
, NDR_SCALARS
, r
->in
.buffer
, ndr_get_array_size(ndr
, &r
->in
.buffer
)));
734 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.buffer_size
));
736 NDR_CHECK(ndr_check_array_size(ndr
, (void*)&r
->in
.buffer
, r
->in
.buffer_size
));
739 if (flags
& NDR_OUT
) {
740 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
742 return NDR_ERR_SUCCESS
;
745 _PUBLIC_
void ndr_print_svcctl_SetServiceObjectSecurity(struct ndr_print
*ndr
, const char *name
, int flags
, const struct svcctl_SetServiceObjectSecurity
*r
)
747 ndr_print_struct(ndr
, name
, "svcctl_SetServiceObjectSecurity");
749 if (flags
& NDR_SET_VALUES
) {
750 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
752 if (flags
& NDR_IN
) {
753 ndr_print_struct(ndr
, "in", "svcctl_SetServiceObjectSecurity");
755 ndr_print_ptr(ndr
, "handle", r
->in
.handle
);
757 ndr_print_policy_handle(ndr
, "handle", r
->in
.handle
);
759 ndr_print_uint32(ndr
, "security_flags", r
->in
.security_flags
);
760 ndr_print_ptr(ndr
, "buffer", r
->in
.buffer
);
762 ndr_print_array_uint8(ndr
, "buffer", r
->in
.buffer
, r
->in
.buffer_size
);
764 ndr_print_uint32(ndr
, "buffer_size", r
->in
.buffer_size
);
767 if (flags
& NDR_OUT
) {
768 ndr_print_struct(ndr
, "out", "svcctl_SetServiceObjectSecurity");
770 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
776 static enum ndr_err_code
ndr_push_svcctl_QueryServiceStatus(struct ndr_push
*ndr
, int flags
, const struct svcctl_QueryServiceStatus
*r
)
778 if (flags
& NDR_IN
) {
779 if (r
->in
.handle
== NULL
) {
780 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
782 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->in
.handle
));
784 if (flags
& NDR_OUT
) {
785 if (r
->out
.service_status
== NULL
) {
786 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
788 NDR_CHECK(ndr_push_SERVICE_STATUS(ndr
, NDR_SCALARS
, r
->out
.service_status
));
789 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
791 return NDR_ERR_SUCCESS
;
794 static enum ndr_err_code
ndr_pull_svcctl_QueryServiceStatus(struct ndr_pull
*ndr
, int flags
, struct svcctl_QueryServiceStatus
*r
)
796 TALLOC_CTX
*_mem_save_handle_0
;
797 TALLOC_CTX
*_mem_save_service_status_0
;
798 if (flags
& NDR_IN
) {
801 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
802 NDR_PULL_ALLOC(ndr
, r
->in
.handle
);
804 _mem_save_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
805 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.handle
, LIBNDR_FLAG_REF_ALLOC
);
806 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->in
.handle
));
807 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_handle_0
, LIBNDR_FLAG_REF_ALLOC
);
808 NDR_PULL_ALLOC(ndr
, r
->out
.service_status
);
809 ZERO_STRUCTP(r
->out
.service_status
);
811 if (flags
& NDR_OUT
) {
812 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
813 NDR_PULL_ALLOC(ndr
, r
->out
.service_status
);
815 _mem_save_service_status_0
= NDR_PULL_GET_MEM_CTX(ndr
);
816 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.service_status
, LIBNDR_FLAG_REF_ALLOC
);
817 NDR_CHECK(ndr_pull_SERVICE_STATUS(ndr
, NDR_SCALARS
, r
->out
.service_status
));
818 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_service_status_0
, LIBNDR_FLAG_REF_ALLOC
);
819 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
821 return NDR_ERR_SUCCESS
;
824 _PUBLIC_
void ndr_print_svcctl_QueryServiceStatus(struct ndr_print
*ndr
, const char *name
, int flags
, const struct svcctl_QueryServiceStatus
*r
)
826 ndr_print_struct(ndr
, name
, "svcctl_QueryServiceStatus");
828 if (flags
& NDR_SET_VALUES
) {
829 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
831 if (flags
& NDR_IN
) {
832 ndr_print_struct(ndr
, "in", "svcctl_QueryServiceStatus");
834 ndr_print_ptr(ndr
, "handle", r
->in
.handle
);
836 ndr_print_policy_handle(ndr
, "handle", r
->in
.handle
);
840 if (flags
& NDR_OUT
) {
841 ndr_print_struct(ndr
, "out", "svcctl_QueryServiceStatus");
843 ndr_print_ptr(ndr
, "service_status", r
->out
.service_status
);
845 ndr_print_SERVICE_STATUS(ndr
, "service_status", r
->out
.service_status
);
847 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
853 static enum ndr_err_code
ndr_push_svcctl_SetServiceStatus(struct ndr_push
*ndr
, int flags
, const struct svcctl_SetServiceStatus
*r
)
855 if (flags
& NDR_IN
) {
857 if (flags
& NDR_OUT
) {
858 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
860 return NDR_ERR_SUCCESS
;
863 static enum ndr_err_code
ndr_pull_svcctl_SetServiceStatus(struct ndr_pull
*ndr
, int flags
, struct svcctl_SetServiceStatus
*r
)
865 if (flags
& NDR_IN
) {
867 if (flags
& NDR_OUT
) {
868 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
870 return NDR_ERR_SUCCESS
;
873 _PUBLIC_
void ndr_print_svcctl_SetServiceStatus(struct ndr_print
*ndr
, const char *name
, int flags
, const struct svcctl_SetServiceStatus
*r
)
875 ndr_print_struct(ndr
, name
, "svcctl_SetServiceStatus");
877 if (flags
& NDR_SET_VALUES
) {
878 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
880 if (flags
& NDR_IN
) {
881 ndr_print_struct(ndr
, "in", "svcctl_SetServiceStatus");
885 if (flags
& NDR_OUT
) {
886 ndr_print_struct(ndr
, "out", "svcctl_SetServiceStatus");
888 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
894 static enum ndr_err_code
ndr_push_svcctl_UnlockServiceDatabase(struct ndr_push
*ndr
, int flags
, const struct svcctl_UnlockServiceDatabase
*r
)
896 if (flags
& NDR_IN
) {
897 if (r
->in
.lock
== NULL
) {
898 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
900 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->in
.lock
));
902 if (flags
& NDR_OUT
) {
903 if (r
->out
.lock
== NULL
) {
904 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
906 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->out
.lock
));
907 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
909 return NDR_ERR_SUCCESS
;
912 static enum ndr_err_code
ndr_pull_svcctl_UnlockServiceDatabase(struct ndr_pull
*ndr
, int flags
, struct svcctl_UnlockServiceDatabase
*r
)
914 TALLOC_CTX
*_mem_save_lock_0
;
915 if (flags
& NDR_IN
) {
918 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
919 NDR_PULL_ALLOC(ndr
, r
->in
.lock
);
921 _mem_save_lock_0
= NDR_PULL_GET_MEM_CTX(ndr
);
922 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.lock
, LIBNDR_FLAG_REF_ALLOC
);
923 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->in
.lock
));
924 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_lock_0
, LIBNDR_FLAG_REF_ALLOC
);
925 NDR_PULL_ALLOC(ndr
, r
->out
.lock
);
926 *r
->out
.lock
= *r
->in
.lock
;
928 if (flags
& NDR_OUT
) {
929 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
930 NDR_PULL_ALLOC(ndr
, r
->out
.lock
);
932 _mem_save_lock_0
= NDR_PULL_GET_MEM_CTX(ndr
);
933 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.lock
, LIBNDR_FLAG_REF_ALLOC
);
934 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->out
.lock
));
935 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_lock_0
, LIBNDR_FLAG_REF_ALLOC
);
936 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
938 return NDR_ERR_SUCCESS
;
941 _PUBLIC_
void ndr_print_svcctl_UnlockServiceDatabase(struct ndr_print
*ndr
, const char *name
, int flags
, const struct svcctl_UnlockServiceDatabase
*r
)
943 ndr_print_struct(ndr
, name
, "svcctl_UnlockServiceDatabase");
945 if (flags
& NDR_SET_VALUES
) {
946 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
948 if (flags
& NDR_IN
) {
949 ndr_print_struct(ndr
, "in", "svcctl_UnlockServiceDatabase");
951 ndr_print_ptr(ndr
, "lock", r
->in
.lock
);
953 ndr_print_policy_handle(ndr
, "lock", r
->in
.lock
);
957 if (flags
& NDR_OUT
) {
958 ndr_print_struct(ndr
, "out", "svcctl_UnlockServiceDatabase");
960 ndr_print_ptr(ndr
, "lock", r
->out
.lock
);
962 ndr_print_policy_handle(ndr
, "lock", r
->out
.lock
);
964 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
970 static enum ndr_err_code
ndr_push_svcctl_NotifyBootConfigStatus(struct ndr_push
*ndr
, int flags
, const struct svcctl_NotifyBootConfigStatus
*r
)
972 if (flags
& NDR_IN
) {
974 if (flags
& NDR_OUT
) {
975 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
977 return NDR_ERR_SUCCESS
;
980 static enum ndr_err_code
ndr_pull_svcctl_NotifyBootConfigStatus(struct ndr_pull
*ndr
, int flags
, struct svcctl_NotifyBootConfigStatus
*r
)
982 if (flags
& NDR_IN
) {
984 if (flags
& NDR_OUT
) {
985 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
987 return NDR_ERR_SUCCESS
;
990 _PUBLIC_
void ndr_print_svcctl_NotifyBootConfigStatus(struct ndr_print
*ndr
, const char *name
, int flags
, const struct svcctl_NotifyBootConfigStatus
*r
)
992 ndr_print_struct(ndr
, name
, "svcctl_NotifyBootConfigStatus");
994 if (flags
& NDR_SET_VALUES
) {
995 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
997 if (flags
& NDR_IN
) {
998 ndr_print_struct(ndr
, "in", "svcctl_NotifyBootConfigStatus");
1002 if (flags
& NDR_OUT
) {
1003 ndr_print_struct(ndr
, "out", "svcctl_NotifyBootConfigStatus");
1005 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
1011 static enum ndr_err_code
ndr_push_svcctl_SCSetServiceBitsW(struct ndr_push
*ndr
, int flags
, const struct svcctl_SCSetServiceBitsW
*r
)
1013 if (flags
& NDR_IN
) {
1014 if (r
->in
.handle
== NULL
) {
1015 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
1017 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->in
.handle
));
1018 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.bits
));
1019 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.bitson
));
1020 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.immediate
));
1022 if (flags
& NDR_OUT
) {
1023 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
1025 return NDR_ERR_SUCCESS
;
1028 static enum ndr_err_code
ndr_pull_svcctl_SCSetServiceBitsW(struct ndr_pull
*ndr
, int flags
, struct svcctl_SCSetServiceBitsW
*r
)
1030 TALLOC_CTX
*_mem_save_handle_0
;
1031 if (flags
& NDR_IN
) {
1032 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
1033 NDR_PULL_ALLOC(ndr
, r
->in
.handle
);
1035 _mem_save_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
1036 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.handle
, LIBNDR_FLAG_REF_ALLOC
);
1037 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->in
.handle
));
1038 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_handle_0
, LIBNDR_FLAG_REF_ALLOC
);
1039 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.bits
));
1040 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.bitson
));
1041 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.immediate
));
1043 if (flags
& NDR_OUT
) {
1044 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
1046 return NDR_ERR_SUCCESS
;
1049 _PUBLIC_
void ndr_print_svcctl_SCSetServiceBitsW(struct ndr_print
*ndr
, const char *name
, int flags
, const struct svcctl_SCSetServiceBitsW
*r
)
1051 ndr_print_struct(ndr
, name
, "svcctl_SCSetServiceBitsW");
1053 if (flags
& NDR_SET_VALUES
) {
1054 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
1056 if (flags
& NDR_IN
) {
1057 ndr_print_struct(ndr
, "in", "svcctl_SCSetServiceBitsW");
1059 ndr_print_ptr(ndr
, "handle", r
->in
.handle
);
1061 ndr_print_policy_handle(ndr
, "handle", r
->in
.handle
);
1063 ndr_print_uint32(ndr
, "bits", r
->in
.bits
);
1064 ndr_print_uint32(ndr
, "bitson", r
->in
.bitson
);
1065 ndr_print_uint32(ndr
, "immediate", r
->in
.immediate
);
1068 if (flags
& NDR_OUT
) {
1069 ndr_print_struct(ndr
, "out", "svcctl_SCSetServiceBitsW");
1071 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
1077 static enum ndr_err_code
ndr_push_svcctl_ChangeServiceConfigW(struct ndr_push
*ndr
, int flags
, const struct svcctl_ChangeServiceConfigW
*r
)
1079 if (flags
& NDR_IN
) {
1080 if (r
->in
.handle
== NULL
) {
1081 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
1083 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->in
.handle
));
1084 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.type
));
1085 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.start
));
1086 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.error
));
1087 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.binary_path
));
1088 if (r
->in
.binary_path
) {
1089 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.binary_path
, CH_UTF16
)));
1090 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, 0));
1091 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.binary_path
, CH_UTF16
)));
1092 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
));
1094 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.load_order_group
));
1095 if (r
->in
.load_order_group
) {
1096 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.load_order_group
, CH_UTF16
)));
1097 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, 0));
1098 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.load_order_group
, CH_UTF16
)));
1099 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
));
1101 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.dependencies
));
1102 if (r
->in
.dependencies
) {
1103 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.dependencies
, CH_UTF16
)));
1104 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, 0));
1105 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.dependencies
, CH_UTF16
)));
1106 NDR_CHECK(ndr_push_charset(ndr
, NDR_SCALARS
, r
->in
.dependencies
, ndr_charset_length(r
->in
.dependencies
, CH_UTF16
), sizeof(uint16_t), CH_UTF16
));
1108 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.service_start_name
));
1109 if (r
->in
.service_start_name
) {
1110 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.service_start_name
, CH_UTF16
)));
1111 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, 0));
1112 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.service_start_name
, CH_UTF16
)));
1113 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
));
1115 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.password
));
1116 if (r
->in
.password
) {
1117 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.password
, CH_UTF16
)));
1118 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, 0));
1119 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.password
, CH_UTF16
)));
1120 NDR_CHECK(ndr_push_charset(ndr
, NDR_SCALARS
, r
->in
.password
, ndr_charset_length(r
->in
.password
, CH_UTF16
), sizeof(uint16_t), CH_UTF16
));
1122 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.display_name
));
1123 if (r
->in
.display_name
) {
1124 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.display_name
, CH_UTF16
)));
1125 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, 0));
1126 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.display_name
, CH_UTF16
)));
1127 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
));
1130 if (flags
& NDR_OUT
) {
1131 if (r
->out
.tag_id
== NULL
) {
1132 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
1134 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, *r
->out
.tag_id
));
1135 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
1137 return NDR_ERR_SUCCESS
;
1140 static enum ndr_err_code
ndr_pull_svcctl_ChangeServiceConfigW(struct ndr_pull
*ndr
, int flags
, struct svcctl_ChangeServiceConfigW
*r
)
1142 uint32_t _ptr_binary_path
;
1143 uint32_t _ptr_load_order_group
;
1144 uint32_t _ptr_dependencies
;
1145 uint32_t _ptr_service_start_name
;
1146 uint32_t _ptr_password
;
1147 uint32_t _ptr_display_name
;
1148 TALLOC_CTX
*_mem_save_handle_0
;
1149 TALLOC_CTX
*_mem_save_binary_path_0
;
1150 TALLOC_CTX
*_mem_save_load_order_group_0
;
1151 TALLOC_CTX
*_mem_save_tag_id_0
;
1152 TALLOC_CTX
*_mem_save_dependencies_0
;
1153 TALLOC_CTX
*_mem_save_service_start_name_0
;
1154 TALLOC_CTX
*_mem_save_password_0
;
1155 TALLOC_CTX
*_mem_save_display_name_0
;
1156 if (flags
& NDR_IN
) {
1157 ZERO_STRUCT(r
->out
);
1159 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
1160 NDR_PULL_ALLOC(ndr
, r
->in
.handle
);
1162 _mem_save_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
1163 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.handle
, LIBNDR_FLAG_REF_ALLOC
);
1164 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->in
.handle
));
1165 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_handle_0
, LIBNDR_FLAG_REF_ALLOC
);
1166 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.type
));
1167 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.start
));
1168 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.error
));
1169 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_binary_path
));
1170 if (_ptr_binary_path
) {
1171 NDR_PULL_ALLOC(ndr
, r
->in
.binary_path
);
1173 r
->in
.binary_path
= NULL
;
1175 if (r
->in
.binary_path
) {
1176 _mem_save_binary_path_0
= NDR_PULL_GET_MEM_CTX(ndr
);
1177 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.binary_path
, 0);
1178 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->in
.binary_path
));
1179 NDR_CHECK(ndr_pull_array_length(ndr
, &r
->in
.binary_path
));
1180 if (ndr_get_array_length(ndr
, &r
->in
.binary_path
) > ndr_get_array_size(ndr
, &r
->in
.binary_path
)) {
1181 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
));
1183 NDR_CHECK(ndr_check_string_terminator(ndr
, ndr_get_array_length(ndr
, &r
->in
.binary_path
), sizeof(uint16_t)));
1184 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
));
1185 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_binary_path_0
, 0);
1187 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_load_order_group
));
1188 if (_ptr_load_order_group
) {
1189 NDR_PULL_ALLOC(ndr
, r
->in
.load_order_group
);
1191 r
->in
.load_order_group
= NULL
;
1193 if (r
->in
.load_order_group
) {
1194 _mem_save_load_order_group_0
= NDR_PULL_GET_MEM_CTX(ndr
);
1195 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.load_order_group
, 0);
1196 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->in
.load_order_group
));
1197 NDR_CHECK(ndr_pull_array_length(ndr
, &r
->in
.load_order_group
));
1198 if (ndr_get_array_length(ndr
, &r
->in
.load_order_group
) > ndr_get_array_size(ndr
, &r
->in
.load_order_group
)) {
1199 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
));
1201 NDR_CHECK(ndr_check_string_terminator(ndr
, ndr_get_array_length(ndr
, &r
->in
.load_order_group
), sizeof(uint16_t)));
1202 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
));
1203 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_load_order_group_0
, 0);
1205 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_dependencies
));
1206 if (_ptr_dependencies
) {
1207 NDR_PULL_ALLOC(ndr
, r
->in
.dependencies
);
1209 r
->in
.dependencies
= NULL
;
1211 if (r
->in
.dependencies
) {
1212 _mem_save_dependencies_0
= NDR_PULL_GET_MEM_CTX(ndr
);
1213 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.dependencies
, 0);
1214 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->in
.dependencies
));
1215 NDR_CHECK(ndr_pull_array_length(ndr
, &r
->in
.dependencies
));
1216 if (ndr_get_array_length(ndr
, &r
->in
.dependencies
) > ndr_get_array_size(ndr
, &r
->in
.dependencies
)) {
1217 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
));
1219 NDR_CHECK(ndr_check_string_terminator(ndr
, ndr_get_array_length(ndr
, &r
->in
.dependencies
), sizeof(uint16_t)));
1220 NDR_CHECK(ndr_pull_charset(ndr
, NDR_SCALARS
, &r
->in
.dependencies
, ndr_get_array_length(ndr
, &r
->in
.dependencies
), sizeof(uint16_t), CH_UTF16
));
1221 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_dependencies_0
, 0);
1223 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_service_start_name
));
1224 if (_ptr_service_start_name
) {
1225 NDR_PULL_ALLOC(ndr
, r
->in
.service_start_name
);
1227 r
->in
.service_start_name
= NULL
;
1229 if (r
->in
.service_start_name
) {
1230 _mem_save_service_start_name_0
= NDR_PULL_GET_MEM_CTX(ndr
);
1231 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.service_start_name
, 0);
1232 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->in
.service_start_name
));
1233 NDR_CHECK(ndr_pull_array_length(ndr
, &r
->in
.service_start_name
));
1234 if (ndr_get_array_length(ndr
, &r
->in
.service_start_name
) > ndr_get_array_size(ndr
, &r
->in
.service_start_name
)) {
1235 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
));
1237 NDR_CHECK(ndr_check_string_terminator(ndr
, ndr_get_array_length(ndr
, &r
->in
.service_start_name
), sizeof(uint16_t)));
1238 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
));
1239 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_service_start_name_0
, 0);
1241 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_password
));
1242 if (_ptr_password
) {
1243 NDR_PULL_ALLOC(ndr
, r
->in
.password
);
1245 r
->in
.password
= NULL
;
1247 if (r
->in
.password
) {
1248 _mem_save_password_0
= NDR_PULL_GET_MEM_CTX(ndr
);
1249 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.password
, 0);
1250 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->in
.password
));
1251 NDR_CHECK(ndr_pull_array_length(ndr
, &r
->in
.password
));
1252 if (ndr_get_array_length(ndr
, &r
->in
.password
) > ndr_get_array_size(ndr
, &r
->in
.password
)) {
1253 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
));
1255 NDR_CHECK(ndr_check_string_terminator(ndr
, ndr_get_array_length(ndr
, &r
->in
.password
), sizeof(uint16_t)));
1256 NDR_CHECK(ndr_pull_charset(ndr
, NDR_SCALARS
, &r
->in
.password
, ndr_get_array_length(ndr
, &r
->in
.password
), sizeof(uint16_t), CH_UTF16
));
1257 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_password_0
, 0);
1259 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_display_name
));
1260 if (_ptr_display_name
) {
1261 NDR_PULL_ALLOC(ndr
, r
->in
.display_name
);
1263 r
->in
.display_name
= NULL
;
1265 if (r
->in
.display_name
) {
1266 _mem_save_display_name_0
= NDR_PULL_GET_MEM_CTX(ndr
);
1267 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.display_name
, 0);
1268 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->in
.display_name
));
1269 NDR_CHECK(ndr_pull_array_length(ndr
, &r
->in
.display_name
));
1270 if (ndr_get_array_length(ndr
, &r
->in
.display_name
) > ndr_get_array_size(ndr
, &r
->in
.display_name
)) {
1271 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
));
1273 NDR_CHECK(ndr_check_string_terminator(ndr
, ndr_get_array_length(ndr
, &r
->in
.display_name
), sizeof(uint16_t)));
1274 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
));
1275 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_display_name_0
, 0);
1277 NDR_PULL_ALLOC(ndr
, r
->out
.tag_id
);
1278 ZERO_STRUCTP(r
->out
.tag_id
);
1280 if (flags
& NDR_OUT
) {
1281 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
1282 NDR_PULL_ALLOC(ndr
, r
->out
.tag_id
);
1284 _mem_save_tag_id_0
= NDR_PULL_GET_MEM_CTX(ndr
);
1285 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.tag_id
, LIBNDR_FLAG_REF_ALLOC
);
1286 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, r
->out
.tag_id
));
1287 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_tag_id_0
, LIBNDR_FLAG_REF_ALLOC
);
1288 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
1290 return NDR_ERR_SUCCESS
;
1293 _PUBLIC_
void ndr_print_svcctl_ChangeServiceConfigW(struct ndr_print
*ndr
, const char *name
, int flags
, const struct svcctl_ChangeServiceConfigW
*r
)
1295 ndr_print_struct(ndr
, name
, "svcctl_ChangeServiceConfigW");
1297 if (flags
& NDR_SET_VALUES
) {
1298 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
1300 if (flags
& NDR_IN
) {
1301 ndr_print_struct(ndr
, "in", "svcctl_ChangeServiceConfigW");
1303 ndr_print_ptr(ndr
, "handle", r
->in
.handle
);
1305 ndr_print_policy_handle(ndr
, "handle", r
->in
.handle
);
1307 ndr_print_uint32(ndr
, "type", r
->in
.type
);
1308 ndr_print_uint32(ndr
, "start", r
->in
.start
);
1309 ndr_print_uint32(ndr
, "error", r
->in
.error
);
1310 ndr_print_ptr(ndr
, "binary_path", r
->in
.binary_path
);
1312 if (r
->in
.binary_path
) {
1313 ndr_print_string(ndr
, "binary_path", r
->in
.binary_path
);
1316 ndr_print_ptr(ndr
, "load_order_group", r
->in
.load_order_group
);
1318 if (r
->in
.load_order_group
) {
1319 ndr_print_string(ndr
, "load_order_group", r
->in
.load_order_group
);
1322 ndr_print_ptr(ndr
, "dependencies", r
->in
.dependencies
);
1324 if (r
->in
.dependencies
) {
1325 ndr_print_string(ndr
, "dependencies", r
->in
.dependencies
);
1328 ndr_print_ptr(ndr
, "service_start_name", r
->in
.service_start_name
);
1330 if (r
->in
.service_start_name
) {
1331 ndr_print_string(ndr
, "service_start_name", r
->in
.service_start_name
);
1334 ndr_print_ptr(ndr
, "password", r
->in
.password
);
1336 if (r
->in
.password
) {
1337 ndr_print_string(ndr
, "password", r
->in
.password
);
1340 ndr_print_ptr(ndr
, "display_name", r
->in
.display_name
);
1342 if (r
->in
.display_name
) {
1343 ndr_print_string(ndr
, "display_name", r
->in
.display_name
);
1348 if (flags
& NDR_OUT
) {
1349 ndr_print_struct(ndr
, "out", "svcctl_ChangeServiceConfigW");
1351 ndr_print_ptr(ndr
, "tag_id", r
->out
.tag_id
);
1353 ndr_print_uint32(ndr
, "tag_id", *r
->out
.tag_id
);
1355 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
1361 static enum ndr_err_code
ndr_push_svcctl_CreateServiceW(struct ndr_push
*ndr
, int flags
, const struct svcctl_CreateServiceW
*r
)
1363 if (flags
& NDR_IN
) {
1364 if (r
->in
.scmanager_handle
== NULL
) {
1365 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
1367 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->in
.scmanager_handle
));
1368 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.ServiceName
, CH_UTF16
)));
1369 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, 0));
1370 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.ServiceName
, CH_UTF16
)));
1371 NDR_CHECK(ndr_push_charset(ndr
, NDR_SCALARS
, r
->in
.ServiceName
, ndr_charset_length(r
->in
.ServiceName
, CH_UTF16
), sizeof(uint16_t), CH_UTF16
));
1372 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.DisplayName
));
1373 if (r
->in
.DisplayName
) {
1374 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.DisplayName
, CH_UTF16
)));
1375 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, 0));
1376 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.DisplayName
, CH_UTF16
)));
1377 NDR_CHECK(ndr_push_charset(ndr
, NDR_SCALARS
, r
->in
.DisplayName
, ndr_charset_length(r
->in
.DisplayName
, CH_UTF16
), sizeof(uint16_t), CH_UTF16
));
1379 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.desired_access
));
1380 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.type
));
1381 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.start_type
));
1382 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.error_control
));
1383 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.binary_path
, CH_UTF16
)));
1384 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, 0));
1385 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.binary_path
, CH_UTF16
)));
1386 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
));
1387 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.LoadOrderGroupKey
));
1388 if (r
->in
.LoadOrderGroupKey
) {
1389 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.LoadOrderGroupKey
, CH_UTF16
)));
1390 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, 0));
1391 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.LoadOrderGroupKey
, CH_UTF16
)));
1392 NDR_CHECK(ndr_push_charset(ndr
, NDR_SCALARS
, r
->in
.LoadOrderGroupKey
, ndr_charset_length(r
->in
.LoadOrderGroupKey
, CH_UTF16
), sizeof(uint16_t), CH_UTF16
));
1394 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.TagId
));
1396 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, *r
->in
.TagId
));
1398 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.dependencies
));
1399 if (r
->in
.dependencies
) {
1400 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.dependencies_size
));
1401 NDR_CHECK(ndr_push_array_uint8(ndr
, NDR_SCALARS
, r
->in
.dependencies
, r
->in
.dependencies_size
));
1403 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.dependencies_size
));
1404 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.service_start_name
));
1405 if (r
->in
.service_start_name
) {
1406 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.service_start_name
, CH_UTF16
)));
1407 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, 0));
1408 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.service_start_name
, CH_UTF16
)));
1409 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
));
1411 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.password
));
1412 if (r
->in
.password
) {
1413 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.password_size
));
1414 NDR_CHECK(ndr_push_array_uint8(ndr
, NDR_SCALARS
, r
->in
.password
, r
->in
.password_size
));
1416 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.password_size
));
1418 if (flags
& NDR_OUT
) {
1419 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->out
.TagId
));
1421 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, *r
->out
.TagId
));
1423 if (r
->out
.handle
== NULL
) {
1424 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
1426 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->out
.handle
));
1427 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
1429 return NDR_ERR_SUCCESS
;
1432 static enum ndr_err_code
ndr_pull_svcctl_CreateServiceW(struct ndr_pull
*ndr
, int flags
, struct svcctl_CreateServiceW
*r
)
1434 uint32_t _ptr_DisplayName
;
1435 uint32_t _ptr_LoadOrderGroupKey
;
1436 uint32_t _ptr_TagId
;
1437 uint32_t _ptr_dependencies
;
1438 uint32_t _ptr_service_start_name
;
1439 uint32_t _ptr_password
;
1440 TALLOC_CTX
*_mem_save_scmanager_handle_0
;
1441 TALLOC_CTX
*_mem_save_DisplayName_0
;
1442 TALLOC_CTX
*_mem_save_LoadOrderGroupKey_0
;
1443 TALLOC_CTX
*_mem_save_TagId_0
;
1444 TALLOC_CTX
*_mem_save_dependencies_0
;
1445 TALLOC_CTX
*_mem_save_service_start_name_0
;
1446 TALLOC_CTX
*_mem_save_password_0
;
1447 TALLOC_CTX
*_mem_save_handle_0
;
1448 if (flags
& NDR_IN
) {
1449 ZERO_STRUCT(r
->out
);
1451 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
1452 NDR_PULL_ALLOC(ndr
, r
->in
.scmanager_handle
);
1454 _mem_save_scmanager_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
1455 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.scmanager_handle
, LIBNDR_FLAG_REF_ALLOC
);
1456 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->in
.scmanager_handle
));
1457 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_scmanager_handle_0
, LIBNDR_FLAG_REF_ALLOC
);
1458 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->in
.ServiceName
));
1459 NDR_CHECK(ndr_pull_array_length(ndr
, &r
->in
.ServiceName
));
1460 if (ndr_get_array_length(ndr
, &r
->in
.ServiceName
) > ndr_get_array_size(ndr
, &r
->in
.ServiceName
)) {
1461 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
));
1463 NDR_CHECK(ndr_check_string_terminator(ndr
, ndr_get_array_length(ndr
, &r
->in
.ServiceName
), sizeof(uint16_t)));
1464 NDR_CHECK(ndr_pull_charset(ndr
, NDR_SCALARS
, &r
->in
.ServiceName
, ndr_get_array_length(ndr
, &r
->in
.ServiceName
), sizeof(uint16_t), CH_UTF16
));
1465 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_DisplayName
));
1466 if (_ptr_DisplayName
) {
1467 NDR_PULL_ALLOC(ndr
, r
->in
.DisplayName
);
1469 r
->in
.DisplayName
= NULL
;
1471 if (r
->in
.DisplayName
) {
1472 _mem_save_DisplayName_0
= NDR_PULL_GET_MEM_CTX(ndr
);
1473 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.DisplayName
, 0);
1474 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->in
.DisplayName
));
1475 NDR_CHECK(ndr_pull_array_length(ndr
, &r
->in
.DisplayName
));
1476 if (ndr_get_array_length(ndr
, &r
->in
.DisplayName
) > ndr_get_array_size(ndr
, &r
->in
.DisplayName
)) {
1477 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
));
1479 NDR_CHECK(ndr_check_string_terminator(ndr
, ndr_get_array_length(ndr
, &r
->in
.DisplayName
), sizeof(uint16_t)));
1480 NDR_CHECK(ndr_pull_charset(ndr
, NDR_SCALARS
, &r
->in
.DisplayName
, ndr_get_array_length(ndr
, &r
->in
.DisplayName
), sizeof(uint16_t), CH_UTF16
));
1481 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_DisplayName_0
, 0);
1483 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.desired_access
));
1484 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.type
));
1485 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.start_type
));
1486 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.error_control
));
1487 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->in
.binary_path
));
1488 NDR_CHECK(ndr_pull_array_length(ndr
, &r
->in
.binary_path
));
1489 if (ndr_get_array_length(ndr
, &r
->in
.binary_path
) > ndr_get_array_size(ndr
, &r
->in
.binary_path
)) {
1490 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
));
1492 NDR_CHECK(ndr_check_string_terminator(ndr
, ndr_get_array_length(ndr
, &r
->in
.binary_path
), sizeof(uint16_t)));
1493 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
));
1494 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_LoadOrderGroupKey
));
1495 if (_ptr_LoadOrderGroupKey
) {
1496 NDR_PULL_ALLOC(ndr
, r
->in
.LoadOrderGroupKey
);
1498 r
->in
.LoadOrderGroupKey
= NULL
;
1500 if (r
->in
.LoadOrderGroupKey
) {
1501 _mem_save_LoadOrderGroupKey_0
= NDR_PULL_GET_MEM_CTX(ndr
);
1502 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.LoadOrderGroupKey
, 0);
1503 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->in
.LoadOrderGroupKey
));
1504 NDR_CHECK(ndr_pull_array_length(ndr
, &r
->in
.LoadOrderGroupKey
));
1505 if (ndr_get_array_length(ndr
, &r
->in
.LoadOrderGroupKey
) > ndr_get_array_size(ndr
, &r
->in
.LoadOrderGroupKey
)) {
1506 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
));
1508 NDR_CHECK(ndr_check_string_terminator(ndr
, ndr_get_array_length(ndr
, &r
->in
.LoadOrderGroupKey
), sizeof(uint16_t)));
1509 NDR_CHECK(ndr_pull_charset(ndr
, NDR_SCALARS
, &r
->in
.LoadOrderGroupKey
, ndr_get_array_length(ndr
, &r
->in
.LoadOrderGroupKey
), sizeof(uint16_t), CH_UTF16
));
1510 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_LoadOrderGroupKey_0
, 0);
1512 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_TagId
));
1514 NDR_PULL_ALLOC(ndr
, r
->in
.TagId
);
1519 _mem_save_TagId_0
= NDR_PULL_GET_MEM_CTX(ndr
);
1520 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.TagId
, 0);
1521 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, r
->in
.TagId
));
1522 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_TagId_0
, 0);
1524 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_dependencies
));
1525 if (_ptr_dependencies
) {
1526 NDR_PULL_ALLOC(ndr
, r
->in
.dependencies
);
1528 r
->in
.dependencies
= NULL
;
1530 if (r
->in
.dependencies
) {
1531 _mem_save_dependencies_0
= NDR_PULL_GET_MEM_CTX(ndr
);
1532 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.dependencies
, 0);
1533 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->in
.dependencies
));
1534 NDR_PULL_ALLOC_N(ndr
, r
->in
.dependencies
, ndr_get_array_size(ndr
, &r
->in
.dependencies
));
1535 NDR_CHECK(ndr_pull_array_uint8(ndr
, NDR_SCALARS
, r
->in
.dependencies
, ndr_get_array_size(ndr
, &r
->in
.dependencies
)));
1536 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_dependencies_0
, 0);
1538 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.dependencies_size
));
1539 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_service_start_name
));
1540 if (_ptr_service_start_name
) {
1541 NDR_PULL_ALLOC(ndr
, r
->in
.service_start_name
);
1543 r
->in
.service_start_name
= NULL
;
1545 if (r
->in
.service_start_name
) {
1546 _mem_save_service_start_name_0
= NDR_PULL_GET_MEM_CTX(ndr
);
1547 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.service_start_name
, 0);
1548 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->in
.service_start_name
));
1549 NDR_CHECK(ndr_pull_array_length(ndr
, &r
->in
.service_start_name
));
1550 if (ndr_get_array_length(ndr
, &r
->in
.service_start_name
) > ndr_get_array_size(ndr
, &r
->in
.service_start_name
)) {
1551 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
));
1553 NDR_CHECK(ndr_check_string_terminator(ndr
, ndr_get_array_length(ndr
, &r
->in
.service_start_name
), sizeof(uint16_t)));
1554 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
));
1555 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_service_start_name_0
, 0);
1557 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_password
));
1558 if (_ptr_password
) {
1559 NDR_PULL_ALLOC(ndr
, r
->in
.password
);
1561 r
->in
.password
= NULL
;
1563 if (r
->in
.password
) {
1564 _mem_save_password_0
= NDR_PULL_GET_MEM_CTX(ndr
);
1565 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.password
, 0);
1566 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->in
.password
));
1567 NDR_PULL_ALLOC_N(ndr
, r
->in
.password
, ndr_get_array_size(ndr
, &r
->in
.password
));
1568 NDR_CHECK(ndr_pull_array_uint8(ndr
, NDR_SCALARS
, r
->in
.password
, ndr_get_array_size(ndr
, &r
->in
.password
)));
1569 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_password_0
, 0);
1571 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.password_size
));
1572 NDR_PULL_ALLOC(ndr
, r
->out
.handle
);
1573 ZERO_STRUCTP(r
->out
.handle
);
1574 if (r
->in
.dependencies
) {
1575 NDR_CHECK(ndr_check_array_size(ndr
, (void*)&r
->in
.dependencies
, r
->in
.dependencies_size
));
1577 if (r
->in
.password
) {
1578 NDR_CHECK(ndr_check_array_size(ndr
, (void*)&r
->in
.password
, r
->in
.password_size
));
1581 if (flags
& NDR_OUT
) {
1582 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_TagId
));
1584 NDR_PULL_ALLOC(ndr
, r
->out
.TagId
);
1586 r
->out
.TagId
= NULL
;
1589 _mem_save_TagId_0
= NDR_PULL_GET_MEM_CTX(ndr
);
1590 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.TagId
, 0);
1591 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, r
->out
.TagId
));
1592 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_TagId_0
, 0);
1594 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
1595 NDR_PULL_ALLOC(ndr
, r
->out
.handle
);
1597 _mem_save_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
1598 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.handle
, LIBNDR_FLAG_REF_ALLOC
);
1599 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->out
.handle
));
1600 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_handle_0
, LIBNDR_FLAG_REF_ALLOC
);
1601 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
1603 return NDR_ERR_SUCCESS
;
1606 _PUBLIC_
void ndr_print_svcctl_CreateServiceW(struct ndr_print
*ndr
, const char *name
, int flags
, const struct svcctl_CreateServiceW
*r
)
1608 ndr_print_struct(ndr
, name
, "svcctl_CreateServiceW");
1610 if (flags
& NDR_SET_VALUES
) {
1611 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
1613 if (flags
& NDR_IN
) {
1614 ndr_print_struct(ndr
, "in", "svcctl_CreateServiceW");
1616 ndr_print_ptr(ndr
, "scmanager_handle", r
->in
.scmanager_handle
);
1618 ndr_print_policy_handle(ndr
, "scmanager_handle", r
->in
.scmanager_handle
);
1620 ndr_print_string(ndr
, "ServiceName", r
->in
.ServiceName
);
1621 ndr_print_ptr(ndr
, "DisplayName", r
->in
.DisplayName
);
1623 if (r
->in
.DisplayName
) {
1624 ndr_print_string(ndr
, "DisplayName", r
->in
.DisplayName
);
1627 ndr_print_uint32(ndr
, "desired_access", r
->in
.desired_access
);
1628 ndr_print_uint32(ndr
, "type", r
->in
.type
);
1629 ndr_print_uint32(ndr
, "start_type", r
->in
.start_type
);
1630 ndr_print_uint32(ndr
, "error_control", r
->in
.error_control
);
1631 ndr_print_string(ndr
, "binary_path", r
->in
.binary_path
);
1632 ndr_print_ptr(ndr
, "LoadOrderGroupKey", r
->in
.LoadOrderGroupKey
);
1634 if (r
->in
.LoadOrderGroupKey
) {
1635 ndr_print_string(ndr
, "LoadOrderGroupKey", r
->in
.LoadOrderGroupKey
);
1638 ndr_print_ptr(ndr
, "TagId", r
->in
.TagId
);
1641 ndr_print_uint32(ndr
, "TagId", *r
->in
.TagId
);
1644 ndr_print_ptr(ndr
, "dependencies", r
->in
.dependencies
);
1646 if (r
->in
.dependencies
) {
1647 ndr_print_array_uint8(ndr
, "dependencies", r
->in
.dependencies
, r
->in
.dependencies_size
);
1650 ndr_print_uint32(ndr
, "dependencies_size", r
->in
.dependencies_size
);
1651 ndr_print_ptr(ndr
, "service_start_name", r
->in
.service_start_name
);
1653 if (r
->in
.service_start_name
) {
1654 ndr_print_string(ndr
, "service_start_name", r
->in
.service_start_name
);
1657 ndr_print_ptr(ndr
, "password", r
->in
.password
);
1659 if (r
->in
.password
) {
1660 ndr_print_array_uint8(ndr
, "password", r
->in
.password
, r
->in
.password_size
);
1663 ndr_print_uint32(ndr
, "password_size", r
->in
.password_size
);
1666 if (flags
& NDR_OUT
) {
1667 ndr_print_struct(ndr
, "out", "svcctl_CreateServiceW");
1669 ndr_print_ptr(ndr
, "TagId", r
->out
.TagId
);
1672 ndr_print_uint32(ndr
, "TagId", *r
->out
.TagId
);
1675 ndr_print_ptr(ndr
, "handle", r
->out
.handle
);
1677 ndr_print_policy_handle(ndr
, "handle", r
->out
.handle
);
1679 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
1685 static enum ndr_err_code
ndr_push_svcctl_EnumDependentServicesW(struct ndr_push
*ndr
, int flags
, const struct svcctl_EnumDependentServicesW
*r
)
1687 if (flags
& NDR_IN
) {
1688 if (r
->in
.service
== NULL
) {
1689 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
1691 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->in
.service
));
1692 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.state
));
1693 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.buf_size
));
1695 if (flags
& NDR_OUT
) {
1696 if (r
->out
.service_status
== NULL
) {
1697 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
1699 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.buf_size
));
1700 NDR_CHECK(ndr_push_array_uint8(ndr
, NDR_SCALARS
, r
->out
.service_status
, r
->in
.buf_size
));
1701 if (r
->out
.bytes_needed
== NULL
) {
1702 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
1704 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, *r
->out
.bytes_needed
));
1705 if (r
->out
.services_returned
== NULL
) {
1706 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
1708 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, *r
->out
.services_returned
));
1709 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
1711 return NDR_ERR_SUCCESS
;
1714 static enum ndr_err_code
ndr_pull_svcctl_EnumDependentServicesW(struct ndr_pull
*ndr
, int flags
, struct svcctl_EnumDependentServicesW
*r
)
1716 TALLOC_CTX
*_mem_save_service_0
;
1717 TALLOC_CTX
*_mem_save_bytes_needed_0
;
1718 TALLOC_CTX
*_mem_save_services_returned_0
;
1719 if (flags
& NDR_IN
) {
1720 ZERO_STRUCT(r
->out
);
1722 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
1723 NDR_PULL_ALLOC(ndr
, r
->in
.service
);
1725 _mem_save_service_0
= NDR_PULL_GET_MEM_CTX(ndr
);
1726 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.service
, LIBNDR_FLAG_REF_ALLOC
);
1727 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->in
.service
));
1728 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_service_0
, LIBNDR_FLAG_REF_ALLOC
);
1729 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.state
));
1730 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.buf_size
));
1731 if (r
->in
.buf_size
< 0 || r
->in
.buf_size
> 0x40000) {
1732 return ndr_pull_error(ndr
, NDR_ERR_RANGE
, "value out of range");
1734 NDR_PULL_ALLOC_N(ndr
, r
->out
.service_status
, r
->in
.buf_size
);
1735 memset(r
->out
.service_status
, 0, (r
->in
.buf_size
) * sizeof(*r
->out
.service_status
));
1736 NDR_PULL_ALLOC(ndr
, r
->out
.bytes_needed
);
1737 ZERO_STRUCTP(r
->out
.bytes_needed
);
1738 NDR_PULL_ALLOC(ndr
, r
->out
.services_returned
);
1739 ZERO_STRUCTP(r
->out
.services_returned
);
1741 if (flags
& NDR_OUT
) {
1742 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->out
.service_status
));
1743 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
1744 NDR_PULL_ALLOC_N(ndr
, r
->out
.service_status
, ndr_get_array_size(ndr
, &r
->out
.service_status
));
1746 NDR_CHECK(ndr_pull_array_uint8(ndr
, NDR_SCALARS
, r
->out
.service_status
, ndr_get_array_size(ndr
, &r
->out
.service_status
)));
1747 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
1748 NDR_PULL_ALLOC(ndr
, r
->out
.bytes_needed
);
1750 _mem_save_bytes_needed_0
= NDR_PULL_GET_MEM_CTX(ndr
);
1751 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.bytes_needed
, LIBNDR_FLAG_REF_ALLOC
);
1752 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, r
->out
.bytes_needed
));
1753 if (*r
->out
.bytes_needed
< 0 || *r
->out
.bytes_needed
> 0x40000) {
1754 return ndr_pull_error(ndr
, NDR_ERR_RANGE
, "value out of range");
1756 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_bytes_needed_0
, LIBNDR_FLAG_REF_ALLOC
);
1757 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
1758 NDR_PULL_ALLOC(ndr
, r
->out
.services_returned
);
1760 _mem_save_services_returned_0
= NDR_PULL_GET_MEM_CTX(ndr
);
1761 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.services_returned
, LIBNDR_FLAG_REF_ALLOC
);
1762 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, r
->out
.services_returned
));
1763 if (*r
->out
.services_returned
< 0 || *r
->out
.services_returned
> 0x40000) {
1764 return ndr_pull_error(ndr
, NDR_ERR_RANGE
, "value out of range");
1766 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_services_returned_0
, LIBNDR_FLAG_REF_ALLOC
);
1767 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
1768 if (r
->out
.service_status
) {
1769 NDR_CHECK(ndr_check_array_size(ndr
, (void*)&r
->out
.service_status
, r
->in
.buf_size
));
1772 return NDR_ERR_SUCCESS
;
1775 _PUBLIC_
void ndr_print_svcctl_EnumDependentServicesW(struct ndr_print
*ndr
, const char *name
, int flags
, const struct svcctl_EnumDependentServicesW
*r
)
1777 ndr_print_struct(ndr
, name
, "svcctl_EnumDependentServicesW");
1779 if (flags
& NDR_SET_VALUES
) {
1780 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
1782 if (flags
& NDR_IN
) {
1783 ndr_print_struct(ndr
, "in", "svcctl_EnumDependentServicesW");
1785 ndr_print_ptr(ndr
, "service", r
->in
.service
);
1787 ndr_print_policy_handle(ndr
, "service", r
->in
.service
);
1789 ndr_print_uint32(ndr
, "state", r
->in
.state
);
1790 ndr_print_uint32(ndr
, "buf_size", r
->in
.buf_size
);
1793 if (flags
& NDR_OUT
) {
1794 ndr_print_struct(ndr
, "out", "svcctl_EnumDependentServicesW");
1796 ndr_print_ptr(ndr
, "service_status", r
->out
.service_status
);
1798 ndr_print_array_uint8(ndr
, "service_status", r
->out
.service_status
, r
->in
.buf_size
);
1800 ndr_print_ptr(ndr
, "bytes_needed", r
->out
.bytes_needed
);
1802 ndr_print_uint32(ndr
, "bytes_needed", *r
->out
.bytes_needed
);
1804 ndr_print_ptr(ndr
, "services_returned", r
->out
.services_returned
);
1806 ndr_print_uint32(ndr
, "services_returned", *r
->out
.services_returned
);
1808 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
1814 static enum ndr_err_code
ndr_push_svcctl_EnumServicesStatusW(struct ndr_push
*ndr
, int flags
, const struct svcctl_EnumServicesStatusW
*r
)
1816 if (flags
& NDR_IN
) {
1817 if (r
->in
.handle
== NULL
) {
1818 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
1820 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->in
.handle
));
1821 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.type
));
1822 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.state
));
1823 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.buf_size
));
1824 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.resume_handle
));
1825 if (r
->in
.resume_handle
) {
1826 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, *r
->in
.resume_handle
));
1829 if (flags
& NDR_OUT
) {
1830 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.buf_size
));
1831 NDR_CHECK(ndr_push_array_uint8(ndr
, NDR_SCALARS
, r
->out
.service
, r
->in
.buf_size
));
1832 if (r
->out
.bytes_needed
== NULL
) {
1833 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
1835 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, *r
->out
.bytes_needed
));
1836 if (r
->out
.services_returned
== NULL
) {
1837 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
1839 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, *r
->out
.services_returned
));
1840 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->out
.resume_handle
));
1841 if (r
->out
.resume_handle
) {
1842 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, *r
->out
.resume_handle
));
1844 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
1846 return NDR_ERR_SUCCESS
;
1849 static enum ndr_err_code
ndr_pull_svcctl_EnumServicesStatusW(struct ndr_pull
*ndr
, int flags
, struct svcctl_EnumServicesStatusW
*r
)
1851 uint32_t _ptr_resume_handle
;
1852 TALLOC_CTX
*_mem_save_handle_0
;
1853 TALLOC_CTX
*_mem_save_bytes_needed_0
;
1854 TALLOC_CTX
*_mem_save_services_returned_0
;
1855 TALLOC_CTX
*_mem_save_resume_handle_0
;
1856 if (flags
& NDR_IN
) {
1857 ZERO_STRUCT(r
->out
);
1859 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
1860 NDR_PULL_ALLOC(ndr
, r
->in
.handle
);
1862 _mem_save_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
1863 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.handle
, LIBNDR_FLAG_REF_ALLOC
);
1864 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->in
.handle
));
1865 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_handle_0
, LIBNDR_FLAG_REF_ALLOC
);
1866 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.type
));
1867 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.state
));
1868 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.buf_size
));
1869 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_resume_handle
));
1870 if (_ptr_resume_handle
) {
1871 NDR_PULL_ALLOC(ndr
, r
->in
.resume_handle
);
1873 r
->in
.resume_handle
= NULL
;
1875 if (r
->in
.resume_handle
) {
1876 _mem_save_resume_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
1877 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.resume_handle
, 0);
1878 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, r
->in
.resume_handle
));
1879 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_resume_handle_0
, 0);
1881 NDR_PULL_ALLOC(ndr
, r
->out
.bytes_needed
);
1882 ZERO_STRUCTP(r
->out
.bytes_needed
);
1883 NDR_PULL_ALLOC(ndr
, r
->out
.services_returned
);
1884 ZERO_STRUCTP(r
->out
.services_returned
);
1886 if (flags
& NDR_OUT
) {
1887 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->out
.service
));
1888 NDR_PULL_ALLOC_N(ndr
, r
->out
.service
, ndr_get_array_size(ndr
, &r
->out
.service
));
1889 NDR_CHECK(ndr_pull_array_uint8(ndr
, NDR_SCALARS
, r
->out
.service
, ndr_get_array_size(ndr
, &r
->out
.service
)));
1890 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
1891 NDR_PULL_ALLOC(ndr
, r
->out
.bytes_needed
);
1893 _mem_save_bytes_needed_0
= NDR_PULL_GET_MEM_CTX(ndr
);
1894 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.bytes_needed
, LIBNDR_FLAG_REF_ALLOC
);
1895 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, r
->out
.bytes_needed
));
1896 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_bytes_needed_0
, LIBNDR_FLAG_REF_ALLOC
);
1897 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
1898 NDR_PULL_ALLOC(ndr
, r
->out
.services_returned
);
1900 _mem_save_services_returned_0
= NDR_PULL_GET_MEM_CTX(ndr
);
1901 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.services_returned
, LIBNDR_FLAG_REF_ALLOC
);
1902 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, r
->out
.services_returned
));
1903 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_services_returned_0
, LIBNDR_FLAG_REF_ALLOC
);
1904 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_resume_handle
));
1905 if (_ptr_resume_handle
) {
1906 NDR_PULL_ALLOC(ndr
, r
->out
.resume_handle
);
1908 r
->out
.resume_handle
= NULL
;
1910 if (r
->out
.resume_handle
) {
1911 _mem_save_resume_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
1912 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.resume_handle
, 0);
1913 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, r
->out
.resume_handle
));
1914 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_resume_handle_0
, 0);
1916 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
1917 if (r
->out
.service
) {
1918 NDR_CHECK(ndr_check_array_size(ndr
, (void*)&r
->out
.service
, r
->in
.buf_size
));
1921 return NDR_ERR_SUCCESS
;
1924 _PUBLIC_
void ndr_print_svcctl_EnumServicesStatusW(struct ndr_print
*ndr
, const char *name
, int flags
, const struct svcctl_EnumServicesStatusW
*r
)
1926 ndr_print_struct(ndr
, name
, "svcctl_EnumServicesStatusW");
1928 if (flags
& NDR_SET_VALUES
) {
1929 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
1931 if (flags
& NDR_IN
) {
1932 ndr_print_struct(ndr
, "in", "svcctl_EnumServicesStatusW");
1934 ndr_print_ptr(ndr
, "handle", r
->in
.handle
);
1936 ndr_print_policy_handle(ndr
, "handle", r
->in
.handle
);
1938 ndr_print_uint32(ndr
, "type", r
->in
.type
);
1939 ndr_print_uint32(ndr
, "state", r
->in
.state
);
1940 ndr_print_uint32(ndr
, "buf_size", r
->in
.buf_size
);
1941 ndr_print_ptr(ndr
, "resume_handle", r
->in
.resume_handle
);
1943 if (r
->in
.resume_handle
) {
1944 ndr_print_uint32(ndr
, "resume_handle", *r
->in
.resume_handle
);
1949 if (flags
& NDR_OUT
) {
1950 ndr_print_struct(ndr
, "out", "svcctl_EnumServicesStatusW");
1952 ndr_print_array_uint8(ndr
, "service", r
->out
.service
, r
->in
.buf_size
);
1953 ndr_print_ptr(ndr
, "bytes_needed", r
->out
.bytes_needed
);
1955 ndr_print_uint32(ndr
, "bytes_needed", *r
->out
.bytes_needed
);
1957 ndr_print_ptr(ndr
, "services_returned", r
->out
.services_returned
);
1959 ndr_print_uint32(ndr
, "services_returned", *r
->out
.services_returned
);
1961 ndr_print_ptr(ndr
, "resume_handle", r
->out
.resume_handle
);
1963 if (r
->out
.resume_handle
) {
1964 ndr_print_uint32(ndr
, "resume_handle", *r
->out
.resume_handle
);
1967 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
1973 static enum ndr_err_code
ndr_push_svcctl_OpenSCManagerW(struct ndr_push
*ndr
, int flags
, const struct svcctl_OpenSCManagerW
*r
)
1975 if (flags
& NDR_IN
) {
1976 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.MachineName
));
1977 if (r
->in
.MachineName
) {
1978 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.MachineName
, CH_UTF16
)));
1979 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, 0));
1980 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.MachineName
, CH_UTF16
)));
1981 NDR_CHECK(ndr_push_charset(ndr
, NDR_SCALARS
, r
->in
.MachineName
, ndr_charset_length(r
->in
.MachineName
, CH_UTF16
), sizeof(uint16_t), CH_UTF16
));
1983 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.DatabaseName
));
1984 if (r
->in
.DatabaseName
) {
1985 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.DatabaseName
, CH_UTF16
)));
1986 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, 0));
1987 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.DatabaseName
, CH_UTF16
)));
1988 NDR_CHECK(ndr_push_charset(ndr
, NDR_SCALARS
, r
->in
.DatabaseName
, ndr_charset_length(r
->in
.DatabaseName
, CH_UTF16
), sizeof(uint16_t), CH_UTF16
));
1990 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.access_mask
));
1992 if (flags
& NDR_OUT
) {
1993 if (r
->out
.handle
== NULL
) {
1994 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
1996 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->out
.handle
));
1997 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
1999 return NDR_ERR_SUCCESS
;
2002 static enum ndr_err_code
ndr_pull_svcctl_OpenSCManagerW(struct ndr_pull
*ndr
, int flags
, struct svcctl_OpenSCManagerW
*r
)
2004 uint32_t _ptr_MachineName
;
2005 uint32_t _ptr_DatabaseName
;
2006 TALLOC_CTX
*_mem_save_MachineName_0
;
2007 TALLOC_CTX
*_mem_save_DatabaseName_0
;
2008 TALLOC_CTX
*_mem_save_handle_0
;
2009 if (flags
& NDR_IN
) {
2010 ZERO_STRUCT(r
->out
);
2012 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_MachineName
));
2013 if (_ptr_MachineName
) {
2014 NDR_PULL_ALLOC(ndr
, r
->in
.MachineName
);
2016 r
->in
.MachineName
= NULL
;
2018 if (r
->in
.MachineName
) {
2019 _mem_save_MachineName_0
= NDR_PULL_GET_MEM_CTX(ndr
);
2020 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.MachineName
, 0);
2021 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->in
.MachineName
));
2022 NDR_CHECK(ndr_pull_array_length(ndr
, &r
->in
.MachineName
));
2023 if (ndr_get_array_length(ndr
, &r
->in
.MachineName
) > ndr_get_array_size(ndr
, &r
->in
.MachineName
)) {
2024 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
));
2026 NDR_CHECK(ndr_check_string_terminator(ndr
, ndr_get_array_length(ndr
, &r
->in
.MachineName
), sizeof(uint16_t)));
2027 NDR_CHECK(ndr_pull_charset(ndr
, NDR_SCALARS
, &r
->in
.MachineName
, ndr_get_array_length(ndr
, &r
->in
.MachineName
), sizeof(uint16_t), CH_UTF16
));
2028 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_MachineName_0
, 0);
2030 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_DatabaseName
));
2031 if (_ptr_DatabaseName
) {
2032 NDR_PULL_ALLOC(ndr
, r
->in
.DatabaseName
);
2034 r
->in
.DatabaseName
= NULL
;
2036 if (r
->in
.DatabaseName
) {
2037 _mem_save_DatabaseName_0
= NDR_PULL_GET_MEM_CTX(ndr
);
2038 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.DatabaseName
, 0);
2039 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->in
.DatabaseName
));
2040 NDR_CHECK(ndr_pull_array_length(ndr
, &r
->in
.DatabaseName
));
2041 if (ndr_get_array_length(ndr
, &r
->in
.DatabaseName
) > ndr_get_array_size(ndr
, &r
->in
.DatabaseName
)) {
2042 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
));
2044 NDR_CHECK(ndr_check_string_terminator(ndr
, ndr_get_array_length(ndr
, &r
->in
.DatabaseName
), sizeof(uint16_t)));
2045 NDR_CHECK(ndr_pull_charset(ndr
, NDR_SCALARS
, &r
->in
.DatabaseName
, ndr_get_array_length(ndr
, &r
->in
.DatabaseName
), sizeof(uint16_t), CH_UTF16
));
2046 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_DatabaseName_0
, 0);
2048 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.access_mask
));
2049 NDR_PULL_ALLOC(ndr
, r
->out
.handle
);
2050 ZERO_STRUCTP(r
->out
.handle
);
2052 if (flags
& NDR_OUT
) {
2053 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
2054 NDR_PULL_ALLOC(ndr
, r
->out
.handle
);
2056 _mem_save_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
2057 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.handle
, LIBNDR_FLAG_REF_ALLOC
);
2058 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->out
.handle
));
2059 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_handle_0
, LIBNDR_FLAG_REF_ALLOC
);
2060 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
2062 return NDR_ERR_SUCCESS
;
2065 _PUBLIC_
void ndr_print_svcctl_OpenSCManagerW(struct ndr_print
*ndr
, const char *name
, int flags
, const struct svcctl_OpenSCManagerW
*r
)
2067 ndr_print_struct(ndr
, name
, "svcctl_OpenSCManagerW");
2069 if (flags
& NDR_SET_VALUES
) {
2070 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
2072 if (flags
& NDR_IN
) {
2073 ndr_print_struct(ndr
, "in", "svcctl_OpenSCManagerW");
2075 ndr_print_ptr(ndr
, "MachineName", r
->in
.MachineName
);
2077 if (r
->in
.MachineName
) {
2078 ndr_print_string(ndr
, "MachineName", r
->in
.MachineName
);
2081 ndr_print_ptr(ndr
, "DatabaseName", r
->in
.DatabaseName
);
2083 if (r
->in
.DatabaseName
) {
2084 ndr_print_string(ndr
, "DatabaseName", r
->in
.DatabaseName
);
2087 ndr_print_uint32(ndr
, "access_mask", r
->in
.access_mask
);
2090 if (flags
& NDR_OUT
) {
2091 ndr_print_struct(ndr
, "out", "svcctl_OpenSCManagerW");
2093 ndr_print_ptr(ndr
, "handle", r
->out
.handle
);
2095 ndr_print_policy_handle(ndr
, "handle", r
->out
.handle
);
2097 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
2103 static enum ndr_err_code
ndr_push_svcctl_OpenServiceW(struct ndr_push
*ndr
, int flags
, const struct svcctl_OpenServiceW
*r
)
2105 if (flags
& NDR_IN
) {
2106 if (r
->in
.scmanager_handle
== NULL
) {
2107 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
2109 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->in
.scmanager_handle
));
2110 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.ServiceName
, CH_UTF16
)));
2111 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, 0));
2112 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.ServiceName
, CH_UTF16
)));
2113 NDR_CHECK(ndr_push_charset(ndr
, NDR_SCALARS
, r
->in
.ServiceName
, ndr_charset_length(r
->in
.ServiceName
, CH_UTF16
), sizeof(uint16_t), CH_UTF16
));
2114 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.access_mask
));
2116 if (flags
& NDR_OUT
) {
2117 if (r
->out
.handle
== NULL
) {
2118 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
2120 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->out
.handle
));
2121 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
2123 return NDR_ERR_SUCCESS
;
2126 static enum ndr_err_code
ndr_pull_svcctl_OpenServiceW(struct ndr_pull
*ndr
, int flags
, struct svcctl_OpenServiceW
*r
)
2128 TALLOC_CTX
*_mem_save_scmanager_handle_0
;
2129 TALLOC_CTX
*_mem_save_handle_0
;
2130 if (flags
& NDR_IN
) {
2131 ZERO_STRUCT(r
->out
);
2133 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
2134 NDR_PULL_ALLOC(ndr
, r
->in
.scmanager_handle
);
2136 _mem_save_scmanager_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
2137 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.scmanager_handle
, LIBNDR_FLAG_REF_ALLOC
);
2138 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->in
.scmanager_handle
));
2139 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_scmanager_handle_0
, LIBNDR_FLAG_REF_ALLOC
);
2140 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->in
.ServiceName
));
2141 NDR_CHECK(ndr_pull_array_length(ndr
, &r
->in
.ServiceName
));
2142 if (ndr_get_array_length(ndr
, &r
->in
.ServiceName
) > ndr_get_array_size(ndr
, &r
->in
.ServiceName
)) {
2143 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
));
2145 NDR_CHECK(ndr_check_string_terminator(ndr
, ndr_get_array_length(ndr
, &r
->in
.ServiceName
), sizeof(uint16_t)));
2146 NDR_CHECK(ndr_pull_charset(ndr
, NDR_SCALARS
, &r
->in
.ServiceName
, ndr_get_array_length(ndr
, &r
->in
.ServiceName
), sizeof(uint16_t), CH_UTF16
));
2147 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.access_mask
));
2148 NDR_PULL_ALLOC(ndr
, r
->out
.handle
);
2149 ZERO_STRUCTP(r
->out
.handle
);
2151 if (flags
& NDR_OUT
) {
2152 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
2153 NDR_PULL_ALLOC(ndr
, r
->out
.handle
);
2155 _mem_save_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
2156 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.handle
, LIBNDR_FLAG_REF_ALLOC
);
2157 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->out
.handle
));
2158 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_handle_0
, LIBNDR_FLAG_REF_ALLOC
);
2159 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
2161 return NDR_ERR_SUCCESS
;
2164 _PUBLIC_
void ndr_print_svcctl_OpenServiceW(struct ndr_print
*ndr
, const char *name
, int flags
, const struct svcctl_OpenServiceW
*r
)
2166 ndr_print_struct(ndr
, name
, "svcctl_OpenServiceW");
2168 if (flags
& NDR_SET_VALUES
) {
2169 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
2171 if (flags
& NDR_IN
) {
2172 ndr_print_struct(ndr
, "in", "svcctl_OpenServiceW");
2174 ndr_print_ptr(ndr
, "scmanager_handle", r
->in
.scmanager_handle
);
2176 ndr_print_policy_handle(ndr
, "scmanager_handle", r
->in
.scmanager_handle
);
2178 ndr_print_string(ndr
, "ServiceName", r
->in
.ServiceName
);
2179 ndr_print_uint32(ndr
, "access_mask", r
->in
.access_mask
);
2182 if (flags
& NDR_OUT
) {
2183 ndr_print_struct(ndr
, "out", "svcctl_OpenServiceW");
2185 ndr_print_ptr(ndr
, "handle", r
->out
.handle
);
2187 ndr_print_policy_handle(ndr
, "handle", r
->out
.handle
);
2189 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
2195 static enum ndr_err_code
ndr_push_svcctl_QueryServiceConfigW(struct ndr_push
*ndr
, int flags
, const struct svcctl_QueryServiceConfigW
*r
)
2197 if (flags
& NDR_IN
) {
2198 if (r
->in
.handle
== NULL
) {
2199 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
2201 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->in
.handle
));
2202 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.buf_size
));
2204 if (flags
& NDR_OUT
) {
2205 NDR_CHECK(ndr_push_array_uint8(ndr
, NDR_SCALARS
, r
->out
.query
, r
->in
.buf_size
));
2206 if (r
->out
.bytes_needed
== NULL
) {
2207 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
2209 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, *r
->out
.bytes_needed
));
2210 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
2212 return NDR_ERR_SUCCESS
;
2215 static enum ndr_err_code
ndr_pull_svcctl_QueryServiceConfigW(struct ndr_pull
*ndr
, int flags
, struct svcctl_QueryServiceConfigW
*r
)
2217 TALLOC_CTX
*_mem_save_handle_0
;
2218 TALLOC_CTX
*_mem_save_bytes_needed_0
;
2219 if (flags
& NDR_IN
) {
2220 ZERO_STRUCT(r
->out
);
2222 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
2223 NDR_PULL_ALLOC(ndr
, r
->in
.handle
);
2225 _mem_save_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
2226 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.handle
, LIBNDR_FLAG_REF_ALLOC
);
2227 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->in
.handle
));
2228 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_handle_0
, LIBNDR_FLAG_REF_ALLOC
);
2229 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.buf_size
));
2230 NDR_PULL_ALLOC(ndr
, r
->out
.bytes_needed
);
2231 ZERO_STRUCTP(r
->out
.bytes_needed
);
2233 if (flags
& NDR_OUT
) {
2234 NDR_PULL_ALLOC_N(ndr
, r
->out
.query
, r
->in
.buf_size
);
2235 NDR_CHECK(ndr_pull_array_uint8(ndr
, NDR_SCALARS
, r
->out
.query
, r
->in
.buf_size
));
2236 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
2237 NDR_PULL_ALLOC(ndr
, r
->out
.bytes_needed
);
2239 _mem_save_bytes_needed_0
= NDR_PULL_GET_MEM_CTX(ndr
);
2240 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.bytes_needed
, LIBNDR_FLAG_REF_ALLOC
);
2241 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, r
->out
.bytes_needed
));
2242 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_bytes_needed_0
, LIBNDR_FLAG_REF_ALLOC
);
2243 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
2245 return NDR_ERR_SUCCESS
;
2248 _PUBLIC_
void ndr_print_svcctl_QueryServiceConfigW(struct ndr_print
*ndr
, const char *name
, int flags
, const struct svcctl_QueryServiceConfigW
*r
)
2250 ndr_print_struct(ndr
, name
, "svcctl_QueryServiceConfigW");
2252 if (flags
& NDR_SET_VALUES
) {
2253 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
2255 if (flags
& NDR_IN
) {
2256 ndr_print_struct(ndr
, "in", "svcctl_QueryServiceConfigW");
2258 ndr_print_ptr(ndr
, "handle", r
->in
.handle
);
2260 ndr_print_policy_handle(ndr
, "handle", r
->in
.handle
);
2262 ndr_print_uint32(ndr
, "buf_size", r
->in
.buf_size
);
2265 if (flags
& NDR_OUT
) {
2266 ndr_print_struct(ndr
, "out", "svcctl_QueryServiceConfigW");
2268 ndr_print_array_uint8(ndr
, "query", r
->out
.query
, r
->in
.buf_size
);
2269 ndr_print_ptr(ndr
, "bytes_needed", r
->out
.bytes_needed
);
2271 ndr_print_uint32(ndr
, "bytes_needed", *r
->out
.bytes_needed
);
2273 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
2279 static enum ndr_err_code
ndr_push_svcctl_QueryServiceLockStatusW(struct ndr_push
*ndr
, int flags
, const struct svcctl_QueryServiceLockStatusW
*r
)
2281 if (flags
& NDR_IN
) {
2282 if (r
->in
.handle
== NULL
) {
2283 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
2285 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->in
.handle
));
2286 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.buf_size
));
2288 if (flags
& NDR_OUT
) {
2289 if (r
->out
.lock_status
== NULL
) {
2290 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
2292 NDR_CHECK(ndr_push_SERVICE_LOCK_STATUS(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->out
.lock_status
));
2293 if (r
->out
.required_buf_size
== NULL
) {
2294 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
2296 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, *r
->out
.required_buf_size
));
2297 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
2299 return NDR_ERR_SUCCESS
;
2302 static enum ndr_err_code
ndr_pull_svcctl_QueryServiceLockStatusW(struct ndr_pull
*ndr
, int flags
, struct svcctl_QueryServiceLockStatusW
*r
)
2304 TALLOC_CTX
*_mem_save_handle_0
;
2305 TALLOC_CTX
*_mem_save_lock_status_0
;
2306 TALLOC_CTX
*_mem_save_required_buf_size_0
;
2307 if (flags
& NDR_IN
) {
2308 ZERO_STRUCT(r
->out
);
2310 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
2311 NDR_PULL_ALLOC(ndr
, r
->in
.handle
);
2313 _mem_save_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
2314 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.handle
, LIBNDR_FLAG_REF_ALLOC
);
2315 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->in
.handle
));
2316 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_handle_0
, LIBNDR_FLAG_REF_ALLOC
);
2317 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.buf_size
));
2318 NDR_PULL_ALLOC(ndr
, r
->out
.lock_status
);
2319 ZERO_STRUCTP(r
->out
.lock_status
);
2320 NDR_PULL_ALLOC(ndr
, r
->out
.required_buf_size
);
2321 ZERO_STRUCTP(r
->out
.required_buf_size
);
2323 if (flags
& NDR_OUT
) {
2324 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
2325 NDR_PULL_ALLOC(ndr
, r
->out
.lock_status
);
2327 _mem_save_lock_status_0
= NDR_PULL_GET_MEM_CTX(ndr
);
2328 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.lock_status
, LIBNDR_FLAG_REF_ALLOC
);
2329 NDR_CHECK(ndr_pull_SERVICE_LOCK_STATUS(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->out
.lock_status
));
2330 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_lock_status_0
, LIBNDR_FLAG_REF_ALLOC
);
2331 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
2332 NDR_PULL_ALLOC(ndr
, r
->out
.required_buf_size
);
2334 _mem_save_required_buf_size_0
= NDR_PULL_GET_MEM_CTX(ndr
);
2335 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.required_buf_size
, LIBNDR_FLAG_REF_ALLOC
);
2336 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, r
->out
.required_buf_size
));
2337 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_required_buf_size_0
, LIBNDR_FLAG_REF_ALLOC
);
2338 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
2340 return NDR_ERR_SUCCESS
;
2343 _PUBLIC_
void ndr_print_svcctl_QueryServiceLockStatusW(struct ndr_print
*ndr
, const char *name
, int flags
, const struct svcctl_QueryServiceLockStatusW
*r
)
2345 ndr_print_struct(ndr
, name
, "svcctl_QueryServiceLockStatusW");
2347 if (flags
& NDR_SET_VALUES
) {
2348 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
2350 if (flags
& NDR_IN
) {
2351 ndr_print_struct(ndr
, "in", "svcctl_QueryServiceLockStatusW");
2353 ndr_print_ptr(ndr
, "handle", r
->in
.handle
);
2355 ndr_print_policy_handle(ndr
, "handle", r
->in
.handle
);
2357 ndr_print_uint32(ndr
, "buf_size", r
->in
.buf_size
);
2360 if (flags
& NDR_OUT
) {
2361 ndr_print_struct(ndr
, "out", "svcctl_QueryServiceLockStatusW");
2363 ndr_print_ptr(ndr
, "lock_status", r
->out
.lock_status
);
2365 ndr_print_SERVICE_LOCK_STATUS(ndr
, "lock_status", r
->out
.lock_status
);
2367 ndr_print_ptr(ndr
, "required_buf_size", r
->out
.required_buf_size
);
2369 ndr_print_uint32(ndr
, "required_buf_size", *r
->out
.required_buf_size
);
2371 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
2377 static enum ndr_err_code
ndr_push_svcctl_StartServiceW(struct ndr_push
*ndr
, int flags
, const struct svcctl_StartServiceW
*r
)
2379 if (flags
& NDR_IN
) {
2380 if (r
->in
.handle
== NULL
) {
2381 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
2383 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->in
.handle
));
2384 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.NumArgs
));
2385 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.Arguments
));
2386 if (r
->in
.Arguments
) {
2387 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.Arguments
, CH_UTF16
)));
2388 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, 0));
2389 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.Arguments
, CH_UTF16
)));
2390 NDR_CHECK(ndr_push_charset(ndr
, NDR_SCALARS
, r
->in
.Arguments
, ndr_charset_length(r
->in
.Arguments
, CH_UTF16
), sizeof(uint16_t), CH_UTF16
));
2393 if (flags
& NDR_OUT
) {
2394 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
2396 return NDR_ERR_SUCCESS
;
2399 static enum ndr_err_code
ndr_pull_svcctl_StartServiceW(struct ndr_pull
*ndr
, int flags
, struct svcctl_StartServiceW
*r
)
2401 uint32_t _ptr_Arguments
;
2402 TALLOC_CTX
*_mem_save_handle_0
;
2403 TALLOC_CTX
*_mem_save_Arguments_0
;
2404 if (flags
& NDR_IN
) {
2405 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
2406 NDR_PULL_ALLOC(ndr
, r
->in
.handle
);
2408 _mem_save_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
2409 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.handle
, LIBNDR_FLAG_REF_ALLOC
);
2410 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->in
.handle
));
2411 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_handle_0
, LIBNDR_FLAG_REF_ALLOC
);
2412 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.NumArgs
));
2413 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_Arguments
));
2414 if (_ptr_Arguments
) {
2415 NDR_PULL_ALLOC(ndr
, r
->in
.Arguments
);
2417 r
->in
.Arguments
= NULL
;
2419 if (r
->in
.Arguments
) {
2420 _mem_save_Arguments_0
= NDR_PULL_GET_MEM_CTX(ndr
);
2421 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.Arguments
, 0);
2422 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->in
.Arguments
));
2423 NDR_CHECK(ndr_pull_array_length(ndr
, &r
->in
.Arguments
));
2424 if (ndr_get_array_length(ndr
, &r
->in
.Arguments
) > ndr_get_array_size(ndr
, &r
->in
.Arguments
)) {
2425 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
));
2427 NDR_CHECK(ndr_check_string_terminator(ndr
, ndr_get_array_length(ndr
, &r
->in
.Arguments
), sizeof(uint16_t)));
2428 NDR_CHECK(ndr_pull_charset(ndr
, NDR_SCALARS
, &r
->in
.Arguments
, ndr_get_array_length(ndr
, &r
->in
.Arguments
), sizeof(uint16_t), CH_UTF16
));
2429 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_Arguments_0
, 0);
2432 if (flags
& NDR_OUT
) {
2433 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
2435 return NDR_ERR_SUCCESS
;
2438 _PUBLIC_
void ndr_print_svcctl_StartServiceW(struct ndr_print
*ndr
, const char *name
, int flags
, const struct svcctl_StartServiceW
*r
)
2440 ndr_print_struct(ndr
, name
, "svcctl_StartServiceW");
2442 if (flags
& NDR_SET_VALUES
) {
2443 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
2445 if (flags
& NDR_IN
) {
2446 ndr_print_struct(ndr
, "in", "svcctl_StartServiceW");
2448 ndr_print_ptr(ndr
, "handle", r
->in
.handle
);
2450 ndr_print_policy_handle(ndr
, "handle", r
->in
.handle
);
2452 ndr_print_uint32(ndr
, "NumArgs", r
->in
.NumArgs
);
2453 ndr_print_ptr(ndr
, "Arguments", r
->in
.Arguments
);
2455 if (r
->in
.Arguments
) {
2456 ndr_print_string(ndr
, "Arguments", r
->in
.Arguments
);
2461 if (flags
& NDR_OUT
) {
2462 ndr_print_struct(ndr
, "out", "svcctl_StartServiceW");
2464 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
2470 static enum ndr_err_code
ndr_push_svcctl_GetServiceDisplayNameW(struct ndr_push
*ndr
, int flags
, const struct svcctl_GetServiceDisplayNameW
*r
)
2472 if (flags
& NDR_IN
) {
2473 if (r
->in
.handle
== NULL
) {
2474 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
2476 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->in
.handle
));
2477 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.service_name
));
2478 if (r
->in
.service_name
) {
2479 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.service_name
, CH_UTF16
)));
2480 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, 0));
2481 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.service_name
, CH_UTF16
)));
2482 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
));
2484 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.display_name_length
));
2485 if (r
->in
.display_name_length
) {
2486 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, *r
->in
.display_name_length
));
2489 if (flags
& NDR_OUT
) {
2490 if (r
->out
.display_name
== NULL
) {
2491 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
2493 NDR_CHECK(ndr_push_unique_ptr(ndr
, *r
->out
.display_name
));
2494 if (*r
->out
.display_name
) {
2495 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(*r
->out
.display_name
, CH_UTF16
)));
2496 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, 0));
2497 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(*r
->out
.display_name
, CH_UTF16
)));
2498 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
));
2500 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->out
.display_name_length
));
2501 if (r
->out
.display_name_length
) {
2502 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, *r
->out
.display_name_length
));
2504 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
2506 return NDR_ERR_SUCCESS
;
2509 static enum ndr_err_code
ndr_pull_svcctl_GetServiceDisplayNameW(struct ndr_pull
*ndr
, int flags
, struct svcctl_GetServiceDisplayNameW
*r
)
2511 uint32_t _ptr_service_name
;
2512 uint32_t _ptr_display_name
;
2513 uint32_t _ptr_display_name_length
;
2514 TALLOC_CTX
*_mem_save_handle_0
;
2515 TALLOC_CTX
*_mem_save_service_name_0
;
2516 TALLOC_CTX
*_mem_save_display_name_0
;
2517 TALLOC_CTX
*_mem_save_display_name_1
;
2518 TALLOC_CTX
*_mem_save_display_name_length_0
;
2519 if (flags
& NDR_IN
) {
2520 ZERO_STRUCT(r
->out
);
2522 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
2523 NDR_PULL_ALLOC(ndr
, r
->in
.handle
);
2525 _mem_save_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
2526 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.handle
, LIBNDR_FLAG_REF_ALLOC
);
2527 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->in
.handle
));
2528 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_handle_0
, LIBNDR_FLAG_REF_ALLOC
);
2529 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_service_name
));
2530 if (_ptr_service_name
) {
2531 NDR_PULL_ALLOC(ndr
, r
->in
.service_name
);
2533 r
->in
.service_name
= NULL
;
2535 if (r
->in
.service_name
) {
2536 _mem_save_service_name_0
= NDR_PULL_GET_MEM_CTX(ndr
);
2537 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.service_name
, 0);
2538 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->in
.service_name
));
2539 NDR_CHECK(ndr_pull_array_length(ndr
, &r
->in
.service_name
));
2540 if (ndr_get_array_length(ndr
, &r
->in
.service_name
) > ndr_get_array_size(ndr
, &r
->in
.service_name
)) {
2541 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
));
2543 NDR_CHECK(ndr_check_string_terminator(ndr
, ndr_get_array_length(ndr
, &r
->in
.service_name
), sizeof(uint16_t)));
2544 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
));
2545 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_service_name_0
, 0);
2547 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_display_name_length
));
2548 if (_ptr_display_name_length
) {
2549 NDR_PULL_ALLOC(ndr
, r
->in
.display_name_length
);
2551 r
->in
.display_name_length
= NULL
;
2553 if (r
->in
.display_name_length
) {
2554 _mem_save_display_name_length_0
= NDR_PULL_GET_MEM_CTX(ndr
);
2555 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.display_name_length
, 0);
2556 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, r
->in
.display_name_length
));
2557 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_display_name_length_0
, 0);
2559 NDR_PULL_ALLOC(ndr
, r
->out
.display_name
);
2560 ZERO_STRUCTP(r
->out
.display_name
);
2562 if (flags
& NDR_OUT
) {
2563 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
2564 NDR_PULL_ALLOC(ndr
, r
->out
.display_name
);
2566 _mem_save_display_name_0
= NDR_PULL_GET_MEM_CTX(ndr
);
2567 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.display_name
, LIBNDR_FLAG_REF_ALLOC
);
2568 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_display_name
));
2569 if (_ptr_display_name
) {
2570 NDR_PULL_ALLOC(ndr
, *r
->out
.display_name
);
2572 *r
->out
.display_name
= NULL
;
2574 if (*r
->out
.display_name
) {
2575 _mem_save_display_name_1
= NDR_PULL_GET_MEM_CTX(ndr
);
2576 NDR_PULL_SET_MEM_CTX(ndr
, *r
->out
.display_name
, 0);
2577 NDR_CHECK(ndr_pull_array_size(ndr
, r
->out
.display_name
));
2578 NDR_CHECK(ndr_pull_array_length(ndr
, r
->out
.display_name
));
2579 if (ndr_get_array_length(ndr
, r
->out
.display_name
) > ndr_get_array_size(ndr
, r
->out
.display_name
)) {
2580 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
));
2582 NDR_CHECK(ndr_check_string_terminator(ndr
, ndr_get_array_length(ndr
, r
->out
.display_name
), sizeof(uint16_t)));
2583 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
));
2584 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_display_name_1
, 0);
2586 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_display_name_0
, LIBNDR_FLAG_REF_ALLOC
);
2587 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_display_name_length
));
2588 if (_ptr_display_name_length
) {
2589 NDR_PULL_ALLOC(ndr
, r
->out
.display_name_length
);
2591 r
->out
.display_name_length
= NULL
;
2593 if (r
->out
.display_name_length
) {
2594 _mem_save_display_name_length_0
= NDR_PULL_GET_MEM_CTX(ndr
);
2595 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.display_name_length
, 0);
2596 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, r
->out
.display_name_length
));
2597 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_display_name_length_0
, 0);
2599 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
2601 return NDR_ERR_SUCCESS
;
2604 _PUBLIC_
void ndr_print_svcctl_GetServiceDisplayNameW(struct ndr_print
*ndr
, const char *name
, int flags
, const struct svcctl_GetServiceDisplayNameW
*r
)
2606 ndr_print_struct(ndr
, name
, "svcctl_GetServiceDisplayNameW");
2608 if (flags
& NDR_SET_VALUES
) {
2609 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
2611 if (flags
& NDR_IN
) {
2612 ndr_print_struct(ndr
, "in", "svcctl_GetServiceDisplayNameW");
2614 ndr_print_ptr(ndr
, "handle", r
->in
.handle
);
2616 ndr_print_policy_handle(ndr
, "handle", r
->in
.handle
);
2618 ndr_print_ptr(ndr
, "service_name", r
->in
.service_name
);
2620 if (r
->in
.service_name
) {
2621 ndr_print_string(ndr
, "service_name", r
->in
.service_name
);
2624 ndr_print_ptr(ndr
, "display_name_length", r
->in
.display_name_length
);
2626 if (r
->in
.display_name_length
) {
2627 ndr_print_uint32(ndr
, "display_name_length", *r
->in
.display_name_length
);
2632 if (flags
& NDR_OUT
) {
2633 ndr_print_struct(ndr
, "out", "svcctl_GetServiceDisplayNameW");
2635 ndr_print_ptr(ndr
, "display_name", r
->out
.display_name
);
2637 ndr_print_ptr(ndr
, "display_name", *r
->out
.display_name
);
2639 if (*r
->out
.display_name
) {
2640 ndr_print_string(ndr
, "display_name", *r
->out
.display_name
);
2644 ndr_print_ptr(ndr
, "display_name_length", r
->out
.display_name_length
);
2646 if (r
->out
.display_name_length
) {
2647 ndr_print_uint32(ndr
, "display_name_length", *r
->out
.display_name_length
);
2650 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
2656 static enum ndr_err_code
ndr_push_svcctl_GetServiceKeyNameW(struct ndr_push
*ndr
, int flags
, const struct svcctl_GetServiceKeyNameW
*r
)
2658 if (flags
& NDR_IN
) {
2659 if (r
->in
.handle
== NULL
) {
2660 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
2662 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->in
.handle
));
2663 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.service_name
));
2664 if (r
->in
.service_name
) {
2665 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.service_name
, CH_UTF16
)));
2666 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, 0));
2667 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.service_name
, CH_UTF16
)));
2668 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
));
2670 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.display_name_length
));
2671 if (r
->in
.display_name_length
) {
2672 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, *r
->in
.display_name_length
));
2675 if (flags
& NDR_OUT
) {
2676 if (r
->out
.key_name
== NULL
) {
2677 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
2679 NDR_CHECK(ndr_push_unique_ptr(ndr
, *r
->out
.key_name
));
2680 if (*r
->out
.key_name
) {
2681 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(*r
->out
.key_name
, CH_UTF16
)));
2682 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, 0));
2683 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(*r
->out
.key_name
, CH_UTF16
)));
2684 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
));
2686 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->out
.display_name_length
));
2687 if (r
->out
.display_name_length
) {
2688 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, *r
->out
.display_name_length
));
2690 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
2692 return NDR_ERR_SUCCESS
;
2695 static enum ndr_err_code
ndr_pull_svcctl_GetServiceKeyNameW(struct ndr_pull
*ndr
, int flags
, struct svcctl_GetServiceKeyNameW
*r
)
2697 uint32_t _ptr_service_name
;
2698 uint32_t _ptr_key_name
;
2699 uint32_t _ptr_display_name_length
;
2700 TALLOC_CTX
*_mem_save_handle_0
;
2701 TALLOC_CTX
*_mem_save_service_name_0
;
2702 TALLOC_CTX
*_mem_save_key_name_0
;
2703 TALLOC_CTX
*_mem_save_key_name_1
;
2704 TALLOC_CTX
*_mem_save_display_name_length_0
;
2705 if (flags
& NDR_IN
) {
2706 ZERO_STRUCT(r
->out
);
2708 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
2709 NDR_PULL_ALLOC(ndr
, r
->in
.handle
);
2711 _mem_save_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
2712 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.handle
, LIBNDR_FLAG_REF_ALLOC
);
2713 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->in
.handle
));
2714 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_handle_0
, LIBNDR_FLAG_REF_ALLOC
);
2715 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_service_name
));
2716 if (_ptr_service_name
) {
2717 NDR_PULL_ALLOC(ndr
, r
->in
.service_name
);
2719 r
->in
.service_name
= NULL
;
2721 if (r
->in
.service_name
) {
2722 _mem_save_service_name_0
= NDR_PULL_GET_MEM_CTX(ndr
);
2723 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.service_name
, 0);
2724 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->in
.service_name
));
2725 NDR_CHECK(ndr_pull_array_length(ndr
, &r
->in
.service_name
));
2726 if (ndr_get_array_length(ndr
, &r
->in
.service_name
) > ndr_get_array_size(ndr
, &r
->in
.service_name
)) {
2727 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
));
2729 NDR_CHECK(ndr_check_string_terminator(ndr
, ndr_get_array_length(ndr
, &r
->in
.service_name
), sizeof(uint16_t)));
2730 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
));
2731 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_service_name_0
, 0);
2733 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_display_name_length
));
2734 if (_ptr_display_name_length
) {
2735 NDR_PULL_ALLOC(ndr
, r
->in
.display_name_length
);
2737 r
->in
.display_name_length
= NULL
;
2739 if (r
->in
.display_name_length
) {
2740 _mem_save_display_name_length_0
= NDR_PULL_GET_MEM_CTX(ndr
);
2741 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.display_name_length
, 0);
2742 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, r
->in
.display_name_length
));
2743 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_display_name_length_0
, 0);
2745 NDR_PULL_ALLOC(ndr
, r
->out
.key_name
);
2746 ZERO_STRUCTP(r
->out
.key_name
);
2748 if (flags
& NDR_OUT
) {
2749 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
2750 NDR_PULL_ALLOC(ndr
, r
->out
.key_name
);
2752 _mem_save_key_name_0
= NDR_PULL_GET_MEM_CTX(ndr
);
2753 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.key_name
, LIBNDR_FLAG_REF_ALLOC
);
2754 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_key_name
));
2755 if (_ptr_key_name
) {
2756 NDR_PULL_ALLOC(ndr
, *r
->out
.key_name
);
2758 *r
->out
.key_name
= NULL
;
2760 if (*r
->out
.key_name
) {
2761 _mem_save_key_name_1
= NDR_PULL_GET_MEM_CTX(ndr
);
2762 NDR_PULL_SET_MEM_CTX(ndr
, *r
->out
.key_name
, 0);
2763 NDR_CHECK(ndr_pull_array_size(ndr
, r
->out
.key_name
));
2764 NDR_CHECK(ndr_pull_array_length(ndr
, r
->out
.key_name
));
2765 if (ndr_get_array_length(ndr
, r
->out
.key_name
) > ndr_get_array_size(ndr
, r
->out
.key_name
)) {
2766 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
));
2768 NDR_CHECK(ndr_check_string_terminator(ndr
, ndr_get_array_length(ndr
, r
->out
.key_name
), sizeof(uint16_t)));
2769 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
));
2770 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_key_name_1
, 0);
2772 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_key_name_0
, LIBNDR_FLAG_REF_ALLOC
);
2773 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_display_name_length
));
2774 if (_ptr_display_name_length
) {
2775 NDR_PULL_ALLOC(ndr
, r
->out
.display_name_length
);
2777 r
->out
.display_name_length
= NULL
;
2779 if (r
->out
.display_name_length
) {
2780 _mem_save_display_name_length_0
= NDR_PULL_GET_MEM_CTX(ndr
);
2781 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.display_name_length
, 0);
2782 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, r
->out
.display_name_length
));
2783 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_display_name_length_0
, 0);
2785 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
2787 return NDR_ERR_SUCCESS
;
2790 _PUBLIC_
void ndr_print_svcctl_GetServiceKeyNameW(struct ndr_print
*ndr
, const char *name
, int flags
, const struct svcctl_GetServiceKeyNameW
*r
)
2792 ndr_print_struct(ndr
, name
, "svcctl_GetServiceKeyNameW");
2794 if (flags
& NDR_SET_VALUES
) {
2795 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
2797 if (flags
& NDR_IN
) {
2798 ndr_print_struct(ndr
, "in", "svcctl_GetServiceKeyNameW");
2800 ndr_print_ptr(ndr
, "handle", r
->in
.handle
);
2802 ndr_print_policy_handle(ndr
, "handle", r
->in
.handle
);
2804 ndr_print_ptr(ndr
, "service_name", r
->in
.service_name
);
2806 if (r
->in
.service_name
) {
2807 ndr_print_string(ndr
, "service_name", r
->in
.service_name
);
2810 ndr_print_ptr(ndr
, "display_name_length", r
->in
.display_name_length
);
2812 if (r
->in
.display_name_length
) {
2813 ndr_print_uint32(ndr
, "display_name_length", *r
->in
.display_name_length
);
2818 if (flags
& NDR_OUT
) {
2819 ndr_print_struct(ndr
, "out", "svcctl_GetServiceKeyNameW");
2821 ndr_print_ptr(ndr
, "key_name", r
->out
.key_name
);
2823 ndr_print_ptr(ndr
, "key_name", *r
->out
.key_name
);
2825 if (*r
->out
.key_name
) {
2826 ndr_print_string(ndr
, "key_name", *r
->out
.key_name
);
2830 ndr_print_ptr(ndr
, "display_name_length", r
->out
.display_name_length
);
2832 if (r
->out
.display_name_length
) {
2833 ndr_print_uint32(ndr
, "display_name_length", *r
->out
.display_name_length
);
2836 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
2842 static enum ndr_err_code
ndr_push_svcctl_SCSetServiceBitsA(struct ndr_push
*ndr
, int flags
, const struct svcctl_SCSetServiceBitsA
*r
)
2844 if (flags
& NDR_IN
) {
2845 if (r
->in
.handle
== NULL
) {
2846 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
2848 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->in
.handle
));
2849 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.bits
));
2850 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.bitson
));
2851 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.immediate
));
2853 if (flags
& NDR_OUT
) {
2854 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
2856 return NDR_ERR_SUCCESS
;
2859 static enum ndr_err_code
ndr_pull_svcctl_SCSetServiceBitsA(struct ndr_pull
*ndr
, int flags
, struct svcctl_SCSetServiceBitsA
*r
)
2861 TALLOC_CTX
*_mem_save_handle_0
;
2862 if (flags
& NDR_IN
) {
2863 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
2864 NDR_PULL_ALLOC(ndr
, r
->in
.handle
);
2866 _mem_save_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
2867 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.handle
, LIBNDR_FLAG_REF_ALLOC
);
2868 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->in
.handle
));
2869 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_handle_0
, LIBNDR_FLAG_REF_ALLOC
);
2870 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.bits
));
2871 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.bitson
));
2872 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.immediate
));
2874 if (flags
& NDR_OUT
) {
2875 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
2877 return NDR_ERR_SUCCESS
;
2880 _PUBLIC_
void ndr_print_svcctl_SCSetServiceBitsA(struct ndr_print
*ndr
, const char *name
, int flags
, const struct svcctl_SCSetServiceBitsA
*r
)
2882 ndr_print_struct(ndr
, name
, "svcctl_SCSetServiceBitsA");
2884 if (flags
& NDR_SET_VALUES
) {
2885 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
2887 if (flags
& NDR_IN
) {
2888 ndr_print_struct(ndr
, "in", "svcctl_SCSetServiceBitsA");
2890 ndr_print_ptr(ndr
, "handle", r
->in
.handle
);
2892 ndr_print_policy_handle(ndr
, "handle", r
->in
.handle
);
2894 ndr_print_uint32(ndr
, "bits", r
->in
.bits
);
2895 ndr_print_uint32(ndr
, "bitson", r
->in
.bitson
);
2896 ndr_print_uint32(ndr
, "immediate", r
->in
.immediate
);
2899 if (flags
& NDR_OUT
) {
2900 ndr_print_struct(ndr
, "out", "svcctl_SCSetServiceBitsA");
2902 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
2908 static enum ndr_err_code
ndr_push_svcctl_ChangeServiceConfigA(struct ndr_push
*ndr
, int flags
, const struct svcctl_ChangeServiceConfigA
*r
)
2910 if (flags
& NDR_IN
) {
2911 if (r
->in
.handle
== NULL
) {
2912 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
2914 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->in
.handle
));
2915 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.type
));
2916 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.start
));
2917 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.error
));
2918 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.binary_path
));
2919 if (r
->in
.binary_path
) {
2920 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.binary_path
, CH_UTF16
)));
2921 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, 0));
2922 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.binary_path
, CH_UTF16
)));
2923 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
));
2925 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.load_order_group
));
2926 if (r
->in
.load_order_group
) {
2927 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.load_order_group
, CH_UTF16
)));
2928 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, 0));
2929 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.load_order_group
, CH_UTF16
)));
2930 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
));
2932 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.dependencies
));
2933 if (r
->in
.dependencies
) {
2934 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.dependencies
, CH_UTF16
)));
2935 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, 0));
2936 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.dependencies
, CH_UTF16
)));
2937 NDR_CHECK(ndr_push_charset(ndr
, NDR_SCALARS
, r
->in
.dependencies
, ndr_charset_length(r
->in
.dependencies
, CH_UTF16
), sizeof(uint16_t), CH_UTF16
));
2939 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.service_start_name
));
2940 if (r
->in
.service_start_name
) {
2941 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.service_start_name
, CH_UTF16
)));
2942 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, 0));
2943 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.service_start_name
, CH_UTF16
)));
2944 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
));
2946 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.password
));
2947 if (r
->in
.password
) {
2948 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.password
, CH_UTF16
)));
2949 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, 0));
2950 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.password
, CH_UTF16
)));
2951 NDR_CHECK(ndr_push_charset(ndr
, NDR_SCALARS
, r
->in
.password
, ndr_charset_length(r
->in
.password
, CH_UTF16
), sizeof(uint16_t), CH_UTF16
));
2953 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.display_name
));
2954 if (r
->in
.display_name
) {
2955 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.display_name
, CH_UTF16
)));
2956 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, 0));
2957 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.display_name
, CH_UTF16
)));
2958 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
));
2961 if (flags
& NDR_OUT
) {
2962 if (r
->out
.tag_id
== NULL
) {
2963 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
2965 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, *r
->out
.tag_id
));
2966 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
2968 return NDR_ERR_SUCCESS
;
2971 static enum ndr_err_code
ndr_pull_svcctl_ChangeServiceConfigA(struct ndr_pull
*ndr
, int flags
, struct svcctl_ChangeServiceConfigA
*r
)
2973 uint32_t _ptr_binary_path
;
2974 uint32_t _ptr_load_order_group
;
2975 uint32_t _ptr_dependencies
;
2976 uint32_t _ptr_service_start_name
;
2977 uint32_t _ptr_password
;
2978 uint32_t _ptr_display_name
;
2979 TALLOC_CTX
*_mem_save_handle_0
;
2980 TALLOC_CTX
*_mem_save_binary_path_0
;
2981 TALLOC_CTX
*_mem_save_load_order_group_0
;
2982 TALLOC_CTX
*_mem_save_tag_id_0
;
2983 TALLOC_CTX
*_mem_save_dependencies_0
;
2984 TALLOC_CTX
*_mem_save_service_start_name_0
;
2985 TALLOC_CTX
*_mem_save_password_0
;
2986 TALLOC_CTX
*_mem_save_display_name_0
;
2987 if (flags
& NDR_IN
) {
2988 ZERO_STRUCT(r
->out
);
2990 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
2991 NDR_PULL_ALLOC(ndr
, r
->in
.handle
);
2993 _mem_save_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
2994 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.handle
, LIBNDR_FLAG_REF_ALLOC
);
2995 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->in
.handle
));
2996 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_handle_0
, LIBNDR_FLAG_REF_ALLOC
);
2997 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.type
));
2998 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.start
));
2999 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.error
));
3000 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_binary_path
));
3001 if (_ptr_binary_path
) {
3002 NDR_PULL_ALLOC(ndr
, r
->in
.binary_path
);
3004 r
->in
.binary_path
= NULL
;
3006 if (r
->in
.binary_path
) {
3007 _mem_save_binary_path_0
= NDR_PULL_GET_MEM_CTX(ndr
);
3008 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.binary_path
, 0);
3009 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->in
.binary_path
));
3010 NDR_CHECK(ndr_pull_array_length(ndr
, &r
->in
.binary_path
));
3011 if (ndr_get_array_length(ndr
, &r
->in
.binary_path
) > ndr_get_array_size(ndr
, &r
->in
.binary_path
)) {
3012 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
));
3014 NDR_CHECK(ndr_check_string_terminator(ndr
, ndr_get_array_length(ndr
, &r
->in
.binary_path
), sizeof(uint16_t)));
3015 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
));
3016 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_binary_path_0
, 0);
3018 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_load_order_group
));
3019 if (_ptr_load_order_group
) {
3020 NDR_PULL_ALLOC(ndr
, r
->in
.load_order_group
);
3022 r
->in
.load_order_group
= NULL
;
3024 if (r
->in
.load_order_group
) {
3025 _mem_save_load_order_group_0
= NDR_PULL_GET_MEM_CTX(ndr
);
3026 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.load_order_group
, 0);
3027 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->in
.load_order_group
));
3028 NDR_CHECK(ndr_pull_array_length(ndr
, &r
->in
.load_order_group
));
3029 if (ndr_get_array_length(ndr
, &r
->in
.load_order_group
) > ndr_get_array_size(ndr
, &r
->in
.load_order_group
)) {
3030 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
));
3032 NDR_CHECK(ndr_check_string_terminator(ndr
, ndr_get_array_length(ndr
, &r
->in
.load_order_group
), sizeof(uint16_t)));
3033 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
));
3034 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_load_order_group_0
, 0);
3036 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_dependencies
));
3037 if (_ptr_dependencies
) {
3038 NDR_PULL_ALLOC(ndr
, r
->in
.dependencies
);
3040 r
->in
.dependencies
= NULL
;
3042 if (r
->in
.dependencies
) {
3043 _mem_save_dependencies_0
= NDR_PULL_GET_MEM_CTX(ndr
);
3044 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.dependencies
, 0);
3045 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->in
.dependencies
));
3046 NDR_CHECK(ndr_pull_array_length(ndr
, &r
->in
.dependencies
));
3047 if (ndr_get_array_length(ndr
, &r
->in
.dependencies
) > ndr_get_array_size(ndr
, &r
->in
.dependencies
)) {
3048 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
));
3050 NDR_CHECK(ndr_check_string_terminator(ndr
, ndr_get_array_length(ndr
, &r
->in
.dependencies
), sizeof(uint16_t)));
3051 NDR_CHECK(ndr_pull_charset(ndr
, NDR_SCALARS
, &r
->in
.dependencies
, ndr_get_array_length(ndr
, &r
->in
.dependencies
), sizeof(uint16_t), CH_UTF16
));
3052 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_dependencies_0
, 0);
3054 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_service_start_name
));
3055 if (_ptr_service_start_name
) {
3056 NDR_PULL_ALLOC(ndr
, r
->in
.service_start_name
);
3058 r
->in
.service_start_name
= NULL
;
3060 if (r
->in
.service_start_name
) {
3061 _mem_save_service_start_name_0
= NDR_PULL_GET_MEM_CTX(ndr
);
3062 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.service_start_name
, 0);
3063 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->in
.service_start_name
));
3064 NDR_CHECK(ndr_pull_array_length(ndr
, &r
->in
.service_start_name
));
3065 if (ndr_get_array_length(ndr
, &r
->in
.service_start_name
) > ndr_get_array_size(ndr
, &r
->in
.service_start_name
)) {
3066 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
));
3068 NDR_CHECK(ndr_check_string_terminator(ndr
, ndr_get_array_length(ndr
, &r
->in
.service_start_name
), sizeof(uint16_t)));
3069 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
));
3070 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_service_start_name_0
, 0);
3072 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_password
));
3073 if (_ptr_password
) {
3074 NDR_PULL_ALLOC(ndr
, r
->in
.password
);
3076 r
->in
.password
= NULL
;
3078 if (r
->in
.password
) {
3079 _mem_save_password_0
= NDR_PULL_GET_MEM_CTX(ndr
);
3080 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.password
, 0);
3081 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->in
.password
));
3082 NDR_CHECK(ndr_pull_array_length(ndr
, &r
->in
.password
));
3083 if (ndr_get_array_length(ndr
, &r
->in
.password
) > ndr_get_array_size(ndr
, &r
->in
.password
)) {
3084 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
));
3086 NDR_CHECK(ndr_check_string_terminator(ndr
, ndr_get_array_length(ndr
, &r
->in
.password
), sizeof(uint16_t)));
3087 NDR_CHECK(ndr_pull_charset(ndr
, NDR_SCALARS
, &r
->in
.password
, ndr_get_array_length(ndr
, &r
->in
.password
), sizeof(uint16_t), CH_UTF16
));
3088 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_password_0
, 0);
3090 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_display_name
));
3091 if (_ptr_display_name
) {
3092 NDR_PULL_ALLOC(ndr
, r
->in
.display_name
);
3094 r
->in
.display_name
= NULL
;
3096 if (r
->in
.display_name
) {
3097 _mem_save_display_name_0
= NDR_PULL_GET_MEM_CTX(ndr
);
3098 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.display_name
, 0);
3099 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->in
.display_name
));
3100 NDR_CHECK(ndr_pull_array_length(ndr
, &r
->in
.display_name
));
3101 if (ndr_get_array_length(ndr
, &r
->in
.display_name
) > ndr_get_array_size(ndr
, &r
->in
.display_name
)) {
3102 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
));
3104 NDR_CHECK(ndr_check_string_terminator(ndr
, ndr_get_array_length(ndr
, &r
->in
.display_name
), sizeof(uint16_t)));
3105 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
));
3106 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_display_name_0
, 0);
3108 NDR_PULL_ALLOC(ndr
, r
->out
.tag_id
);
3109 ZERO_STRUCTP(r
->out
.tag_id
);
3111 if (flags
& NDR_OUT
) {
3112 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
3113 NDR_PULL_ALLOC(ndr
, r
->out
.tag_id
);
3115 _mem_save_tag_id_0
= NDR_PULL_GET_MEM_CTX(ndr
);
3116 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.tag_id
, LIBNDR_FLAG_REF_ALLOC
);
3117 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, r
->out
.tag_id
));
3118 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_tag_id_0
, LIBNDR_FLAG_REF_ALLOC
);
3119 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
3121 return NDR_ERR_SUCCESS
;
3124 _PUBLIC_
void ndr_print_svcctl_ChangeServiceConfigA(struct ndr_print
*ndr
, const char *name
, int flags
, const struct svcctl_ChangeServiceConfigA
*r
)
3126 ndr_print_struct(ndr
, name
, "svcctl_ChangeServiceConfigA");
3128 if (flags
& NDR_SET_VALUES
) {
3129 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
3131 if (flags
& NDR_IN
) {
3132 ndr_print_struct(ndr
, "in", "svcctl_ChangeServiceConfigA");
3134 ndr_print_ptr(ndr
, "handle", r
->in
.handle
);
3136 ndr_print_policy_handle(ndr
, "handle", r
->in
.handle
);
3138 ndr_print_uint32(ndr
, "type", r
->in
.type
);
3139 ndr_print_uint32(ndr
, "start", r
->in
.start
);
3140 ndr_print_uint32(ndr
, "error", r
->in
.error
);
3141 ndr_print_ptr(ndr
, "binary_path", r
->in
.binary_path
);
3143 if (r
->in
.binary_path
) {
3144 ndr_print_string(ndr
, "binary_path", r
->in
.binary_path
);
3147 ndr_print_ptr(ndr
, "load_order_group", r
->in
.load_order_group
);
3149 if (r
->in
.load_order_group
) {
3150 ndr_print_string(ndr
, "load_order_group", r
->in
.load_order_group
);
3153 ndr_print_ptr(ndr
, "dependencies", r
->in
.dependencies
);
3155 if (r
->in
.dependencies
) {
3156 ndr_print_string(ndr
, "dependencies", r
->in
.dependencies
);
3159 ndr_print_ptr(ndr
, "service_start_name", r
->in
.service_start_name
);
3161 if (r
->in
.service_start_name
) {
3162 ndr_print_string(ndr
, "service_start_name", r
->in
.service_start_name
);
3165 ndr_print_ptr(ndr
, "password", r
->in
.password
);
3167 if (r
->in
.password
) {
3168 ndr_print_string(ndr
, "password", r
->in
.password
);
3171 ndr_print_ptr(ndr
, "display_name", r
->in
.display_name
);
3173 if (r
->in
.display_name
) {
3174 ndr_print_string(ndr
, "display_name", r
->in
.display_name
);
3179 if (flags
& NDR_OUT
) {
3180 ndr_print_struct(ndr
, "out", "svcctl_ChangeServiceConfigA");
3182 ndr_print_ptr(ndr
, "tag_id", r
->out
.tag_id
);
3184 ndr_print_uint32(ndr
, "tag_id", *r
->out
.tag_id
);
3186 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
3192 static enum ndr_err_code
ndr_push_svcctl_CreateServiceA(struct ndr_push
*ndr
, int flags
, const struct svcctl_CreateServiceA
*r
)
3194 if (flags
& NDR_IN
) {
3195 if (r
->in
.handle
== NULL
) {
3196 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
3198 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->in
.handle
));
3199 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.ServiceName
));
3200 if (r
->in
.ServiceName
) {
3201 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.ServiceName
, CH_UTF16
)));
3202 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, 0));
3203 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.ServiceName
, CH_UTF16
)));
3204 NDR_CHECK(ndr_push_charset(ndr
, NDR_SCALARS
, r
->in
.ServiceName
, ndr_charset_length(r
->in
.ServiceName
, CH_UTF16
), sizeof(uint16_t), CH_UTF16
));
3206 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.DisplayName
));
3207 if (r
->in
.DisplayName
) {
3208 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.DisplayName
, CH_UTF16
)));
3209 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, 0));
3210 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.DisplayName
, CH_UTF16
)));
3211 NDR_CHECK(ndr_push_charset(ndr
, NDR_SCALARS
, r
->in
.DisplayName
, ndr_charset_length(r
->in
.DisplayName
, CH_UTF16
), sizeof(uint16_t), CH_UTF16
));
3213 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.desired_access
));
3214 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.type
));
3215 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.start_type
));
3216 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.error_control
));
3217 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.binary_path
));
3218 if (r
->in
.binary_path
) {
3219 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.binary_path
, CH_UTF16
)));
3220 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, 0));
3221 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.binary_path
, CH_UTF16
)));
3222 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
));
3224 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.LoadOrderGroupKey
));
3225 if (r
->in
.LoadOrderGroupKey
) {
3226 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.LoadOrderGroupKey
, CH_UTF16
)));
3227 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, 0));
3228 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.LoadOrderGroupKey
, CH_UTF16
)));
3229 NDR_CHECK(ndr_push_charset(ndr
, NDR_SCALARS
, r
->in
.LoadOrderGroupKey
, ndr_charset_length(r
->in
.LoadOrderGroupKey
, CH_UTF16
), sizeof(uint16_t), CH_UTF16
));
3231 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.dependencies
));
3232 if (r
->in
.dependencies
) {
3233 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.dependencies
, CH_UTF16
)));
3234 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, 0));
3235 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.dependencies
, CH_UTF16
)));
3236 NDR_CHECK(ndr_push_charset(ndr
, NDR_SCALARS
, r
->in
.dependencies
, ndr_charset_length(r
->in
.dependencies
, CH_UTF16
), sizeof(uint16_t), CH_UTF16
));
3238 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.service_start_name
));
3239 if (r
->in
.service_start_name
) {
3240 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.service_start_name
, CH_UTF16
)));
3241 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, 0));
3242 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.service_start_name
, CH_UTF16
)));
3243 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
));
3245 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.password
));
3246 if (r
->in
.password
) {
3247 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.password
, CH_UTF16
)));
3248 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, 0));
3249 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.password
, CH_UTF16
)));
3250 NDR_CHECK(ndr_push_charset(ndr
, NDR_SCALARS
, r
->in
.password
, ndr_charset_length(r
->in
.password
, CH_UTF16
), sizeof(uint16_t), CH_UTF16
));
3253 if (flags
& NDR_OUT
) {
3254 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->out
.TagId
));
3256 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, *r
->out
.TagId
));
3258 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
3260 return NDR_ERR_SUCCESS
;
3263 static enum ndr_err_code
ndr_pull_svcctl_CreateServiceA(struct ndr_pull
*ndr
, int flags
, struct svcctl_CreateServiceA
*r
)
3265 uint32_t _ptr_ServiceName
;
3266 uint32_t _ptr_DisplayName
;
3267 uint32_t _ptr_binary_path
;
3268 uint32_t _ptr_LoadOrderGroupKey
;
3269 uint32_t _ptr_TagId
;
3270 uint32_t _ptr_dependencies
;
3271 uint32_t _ptr_service_start_name
;
3272 uint32_t _ptr_password
;
3273 TALLOC_CTX
*_mem_save_handle_0
;
3274 TALLOC_CTX
*_mem_save_ServiceName_0
;
3275 TALLOC_CTX
*_mem_save_DisplayName_0
;
3276 TALLOC_CTX
*_mem_save_binary_path_0
;
3277 TALLOC_CTX
*_mem_save_LoadOrderGroupKey_0
;
3278 TALLOC_CTX
*_mem_save_TagId_0
;
3279 TALLOC_CTX
*_mem_save_dependencies_0
;
3280 TALLOC_CTX
*_mem_save_service_start_name_0
;
3281 TALLOC_CTX
*_mem_save_password_0
;
3282 if (flags
& NDR_IN
) {
3283 ZERO_STRUCT(r
->out
);
3285 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
3286 NDR_PULL_ALLOC(ndr
, r
->in
.handle
);
3288 _mem_save_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
3289 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.handle
, LIBNDR_FLAG_REF_ALLOC
);
3290 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->in
.handle
));
3291 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_handle_0
, LIBNDR_FLAG_REF_ALLOC
);
3292 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_ServiceName
));
3293 if (_ptr_ServiceName
) {
3294 NDR_PULL_ALLOC(ndr
, r
->in
.ServiceName
);
3296 r
->in
.ServiceName
= NULL
;
3298 if (r
->in
.ServiceName
) {
3299 _mem_save_ServiceName_0
= NDR_PULL_GET_MEM_CTX(ndr
);
3300 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.ServiceName
, 0);
3301 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->in
.ServiceName
));
3302 NDR_CHECK(ndr_pull_array_length(ndr
, &r
->in
.ServiceName
));
3303 if (ndr_get_array_length(ndr
, &r
->in
.ServiceName
) > ndr_get_array_size(ndr
, &r
->in
.ServiceName
)) {
3304 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
));
3306 NDR_CHECK(ndr_check_string_terminator(ndr
, ndr_get_array_length(ndr
, &r
->in
.ServiceName
), sizeof(uint16_t)));
3307 NDR_CHECK(ndr_pull_charset(ndr
, NDR_SCALARS
, &r
->in
.ServiceName
, ndr_get_array_length(ndr
, &r
->in
.ServiceName
), sizeof(uint16_t), CH_UTF16
));
3308 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_ServiceName_0
, 0);
3310 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_DisplayName
));
3311 if (_ptr_DisplayName
) {
3312 NDR_PULL_ALLOC(ndr
, r
->in
.DisplayName
);
3314 r
->in
.DisplayName
= NULL
;
3316 if (r
->in
.DisplayName
) {
3317 _mem_save_DisplayName_0
= NDR_PULL_GET_MEM_CTX(ndr
);
3318 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.DisplayName
, 0);
3319 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->in
.DisplayName
));
3320 NDR_CHECK(ndr_pull_array_length(ndr
, &r
->in
.DisplayName
));
3321 if (ndr_get_array_length(ndr
, &r
->in
.DisplayName
) > ndr_get_array_size(ndr
, &r
->in
.DisplayName
)) {
3322 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
));
3324 NDR_CHECK(ndr_check_string_terminator(ndr
, ndr_get_array_length(ndr
, &r
->in
.DisplayName
), sizeof(uint16_t)));
3325 NDR_CHECK(ndr_pull_charset(ndr
, NDR_SCALARS
, &r
->in
.DisplayName
, ndr_get_array_length(ndr
, &r
->in
.DisplayName
), sizeof(uint16_t), CH_UTF16
));
3326 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_DisplayName_0
, 0);
3328 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.desired_access
));
3329 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.type
));
3330 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.start_type
));
3331 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.error_control
));
3332 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_binary_path
));
3333 if (_ptr_binary_path
) {
3334 NDR_PULL_ALLOC(ndr
, r
->in
.binary_path
);
3336 r
->in
.binary_path
= NULL
;
3338 if (r
->in
.binary_path
) {
3339 _mem_save_binary_path_0
= NDR_PULL_GET_MEM_CTX(ndr
);
3340 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.binary_path
, 0);
3341 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->in
.binary_path
));
3342 NDR_CHECK(ndr_pull_array_length(ndr
, &r
->in
.binary_path
));
3343 if (ndr_get_array_length(ndr
, &r
->in
.binary_path
) > ndr_get_array_size(ndr
, &r
->in
.binary_path
)) {
3344 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
));
3346 NDR_CHECK(ndr_check_string_terminator(ndr
, ndr_get_array_length(ndr
, &r
->in
.binary_path
), sizeof(uint16_t)));
3347 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
));
3348 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_binary_path_0
, 0);
3350 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_LoadOrderGroupKey
));
3351 if (_ptr_LoadOrderGroupKey
) {
3352 NDR_PULL_ALLOC(ndr
, r
->in
.LoadOrderGroupKey
);
3354 r
->in
.LoadOrderGroupKey
= NULL
;
3356 if (r
->in
.LoadOrderGroupKey
) {
3357 _mem_save_LoadOrderGroupKey_0
= NDR_PULL_GET_MEM_CTX(ndr
);
3358 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.LoadOrderGroupKey
, 0);
3359 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->in
.LoadOrderGroupKey
));
3360 NDR_CHECK(ndr_pull_array_length(ndr
, &r
->in
.LoadOrderGroupKey
));
3361 if (ndr_get_array_length(ndr
, &r
->in
.LoadOrderGroupKey
) > ndr_get_array_size(ndr
, &r
->in
.LoadOrderGroupKey
)) {
3362 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
));
3364 NDR_CHECK(ndr_check_string_terminator(ndr
, ndr_get_array_length(ndr
, &r
->in
.LoadOrderGroupKey
), sizeof(uint16_t)));
3365 NDR_CHECK(ndr_pull_charset(ndr
, NDR_SCALARS
, &r
->in
.LoadOrderGroupKey
, ndr_get_array_length(ndr
, &r
->in
.LoadOrderGroupKey
), sizeof(uint16_t), CH_UTF16
));
3366 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_LoadOrderGroupKey_0
, 0);
3368 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_dependencies
));
3369 if (_ptr_dependencies
) {
3370 NDR_PULL_ALLOC(ndr
, r
->in
.dependencies
);
3372 r
->in
.dependencies
= NULL
;
3374 if (r
->in
.dependencies
) {
3375 _mem_save_dependencies_0
= NDR_PULL_GET_MEM_CTX(ndr
);
3376 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.dependencies
, 0);
3377 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->in
.dependencies
));
3378 NDR_CHECK(ndr_pull_array_length(ndr
, &r
->in
.dependencies
));
3379 if (ndr_get_array_length(ndr
, &r
->in
.dependencies
) > ndr_get_array_size(ndr
, &r
->in
.dependencies
)) {
3380 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
));
3382 NDR_CHECK(ndr_check_string_terminator(ndr
, ndr_get_array_length(ndr
, &r
->in
.dependencies
), sizeof(uint16_t)));
3383 NDR_CHECK(ndr_pull_charset(ndr
, NDR_SCALARS
, &r
->in
.dependencies
, ndr_get_array_length(ndr
, &r
->in
.dependencies
), sizeof(uint16_t), CH_UTF16
));
3384 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_dependencies_0
, 0);
3386 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_service_start_name
));
3387 if (_ptr_service_start_name
) {
3388 NDR_PULL_ALLOC(ndr
, r
->in
.service_start_name
);
3390 r
->in
.service_start_name
= NULL
;
3392 if (r
->in
.service_start_name
) {
3393 _mem_save_service_start_name_0
= NDR_PULL_GET_MEM_CTX(ndr
);
3394 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.service_start_name
, 0);
3395 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->in
.service_start_name
));
3396 NDR_CHECK(ndr_pull_array_length(ndr
, &r
->in
.service_start_name
));
3397 if (ndr_get_array_length(ndr
, &r
->in
.service_start_name
) > ndr_get_array_size(ndr
, &r
->in
.service_start_name
)) {
3398 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
));
3400 NDR_CHECK(ndr_check_string_terminator(ndr
, ndr_get_array_length(ndr
, &r
->in
.service_start_name
), sizeof(uint16_t)));
3401 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
));
3402 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_service_start_name_0
, 0);
3404 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_password
));
3405 if (_ptr_password
) {
3406 NDR_PULL_ALLOC(ndr
, r
->in
.password
);
3408 r
->in
.password
= NULL
;
3410 if (r
->in
.password
) {
3411 _mem_save_password_0
= NDR_PULL_GET_MEM_CTX(ndr
);
3412 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.password
, 0);
3413 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->in
.password
));
3414 NDR_CHECK(ndr_pull_array_length(ndr
, &r
->in
.password
));
3415 if (ndr_get_array_length(ndr
, &r
->in
.password
) > ndr_get_array_size(ndr
, &r
->in
.password
)) {
3416 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
));
3418 NDR_CHECK(ndr_check_string_terminator(ndr
, ndr_get_array_length(ndr
, &r
->in
.password
), sizeof(uint16_t)));
3419 NDR_CHECK(ndr_pull_charset(ndr
, NDR_SCALARS
, &r
->in
.password
, ndr_get_array_length(ndr
, &r
->in
.password
), sizeof(uint16_t), CH_UTF16
));
3420 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_password_0
, 0);
3423 if (flags
& NDR_OUT
) {
3424 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_TagId
));
3426 NDR_PULL_ALLOC(ndr
, r
->out
.TagId
);
3428 r
->out
.TagId
= NULL
;
3431 _mem_save_TagId_0
= NDR_PULL_GET_MEM_CTX(ndr
);
3432 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.TagId
, 0);
3433 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, r
->out
.TagId
));
3434 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_TagId_0
, 0);
3436 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
3438 return NDR_ERR_SUCCESS
;
3441 _PUBLIC_
void ndr_print_svcctl_CreateServiceA(struct ndr_print
*ndr
, const char *name
, int flags
, const struct svcctl_CreateServiceA
*r
)
3443 ndr_print_struct(ndr
, name
, "svcctl_CreateServiceA");
3445 if (flags
& NDR_SET_VALUES
) {
3446 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
3448 if (flags
& NDR_IN
) {
3449 ndr_print_struct(ndr
, "in", "svcctl_CreateServiceA");
3451 ndr_print_ptr(ndr
, "handle", r
->in
.handle
);
3453 ndr_print_policy_handle(ndr
, "handle", r
->in
.handle
);
3455 ndr_print_ptr(ndr
, "ServiceName", r
->in
.ServiceName
);
3457 if (r
->in
.ServiceName
) {
3458 ndr_print_string(ndr
, "ServiceName", r
->in
.ServiceName
);
3461 ndr_print_ptr(ndr
, "DisplayName", r
->in
.DisplayName
);
3463 if (r
->in
.DisplayName
) {
3464 ndr_print_string(ndr
, "DisplayName", r
->in
.DisplayName
);
3467 ndr_print_uint32(ndr
, "desired_access", r
->in
.desired_access
);
3468 ndr_print_uint32(ndr
, "type", r
->in
.type
);
3469 ndr_print_uint32(ndr
, "start_type", r
->in
.start_type
);
3470 ndr_print_uint32(ndr
, "error_control", r
->in
.error_control
);
3471 ndr_print_ptr(ndr
, "binary_path", r
->in
.binary_path
);
3473 if (r
->in
.binary_path
) {
3474 ndr_print_string(ndr
, "binary_path", r
->in
.binary_path
);
3477 ndr_print_ptr(ndr
, "LoadOrderGroupKey", r
->in
.LoadOrderGroupKey
);
3479 if (r
->in
.LoadOrderGroupKey
) {
3480 ndr_print_string(ndr
, "LoadOrderGroupKey", r
->in
.LoadOrderGroupKey
);
3483 ndr_print_ptr(ndr
, "dependencies", r
->in
.dependencies
);
3485 if (r
->in
.dependencies
) {
3486 ndr_print_string(ndr
, "dependencies", r
->in
.dependencies
);
3489 ndr_print_ptr(ndr
, "service_start_name", r
->in
.service_start_name
);
3491 if (r
->in
.service_start_name
) {
3492 ndr_print_string(ndr
, "service_start_name", r
->in
.service_start_name
);
3495 ndr_print_ptr(ndr
, "password", r
->in
.password
);
3497 if (r
->in
.password
) {
3498 ndr_print_string(ndr
, "password", r
->in
.password
);
3503 if (flags
& NDR_OUT
) {
3504 ndr_print_struct(ndr
, "out", "svcctl_CreateServiceA");
3506 ndr_print_ptr(ndr
, "TagId", r
->out
.TagId
);
3509 ndr_print_uint32(ndr
, "TagId", *r
->out
.TagId
);
3512 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
3518 static enum ndr_err_code
ndr_push_svcctl_EnumDependentServicesA(struct ndr_push
*ndr
, int flags
, const struct svcctl_EnumDependentServicesA
*r
)
3520 if (flags
& NDR_IN
) {
3521 if (r
->in
.service
== NULL
) {
3522 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
3524 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->in
.service
));
3525 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.state
));
3526 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.buf_size
));
3528 if (flags
& NDR_OUT
) {
3529 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->out
.service_status
));
3530 if (r
->out
.service_status
) {
3531 NDR_CHECK(ndr_push_ENUM_SERVICE_STATUS(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->out
.service_status
));
3533 if (r
->out
.bytes_needed
== NULL
) {
3534 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
3536 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, *r
->out
.bytes_needed
));
3537 if (r
->out
.services_returned
== NULL
) {
3538 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
3540 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, *r
->out
.services_returned
));
3541 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
3543 return NDR_ERR_SUCCESS
;
3546 static enum ndr_err_code
ndr_pull_svcctl_EnumDependentServicesA(struct ndr_pull
*ndr
, int flags
, struct svcctl_EnumDependentServicesA
*r
)
3548 uint32_t _ptr_service_status
;
3549 TALLOC_CTX
*_mem_save_service_0
;
3550 TALLOC_CTX
*_mem_save_service_status_0
;
3551 TALLOC_CTX
*_mem_save_bytes_needed_0
;
3552 TALLOC_CTX
*_mem_save_services_returned_0
;
3553 if (flags
& NDR_IN
) {
3554 ZERO_STRUCT(r
->out
);
3556 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
3557 NDR_PULL_ALLOC(ndr
, r
->in
.service
);
3559 _mem_save_service_0
= NDR_PULL_GET_MEM_CTX(ndr
);
3560 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.service
, LIBNDR_FLAG_REF_ALLOC
);
3561 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->in
.service
));
3562 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_service_0
, LIBNDR_FLAG_REF_ALLOC
);
3563 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.state
));
3564 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.buf_size
));
3565 NDR_PULL_ALLOC(ndr
, r
->out
.bytes_needed
);
3566 ZERO_STRUCTP(r
->out
.bytes_needed
);
3567 NDR_PULL_ALLOC(ndr
, r
->out
.services_returned
);
3568 ZERO_STRUCTP(r
->out
.services_returned
);
3570 if (flags
& NDR_OUT
) {
3571 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_service_status
));
3572 if (_ptr_service_status
) {
3573 NDR_PULL_ALLOC(ndr
, r
->out
.service_status
);
3575 r
->out
.service_status
= NULL
;
3577 if (r
->out
.service_status
) {
3578 _mem_save_service_status_0
= NDR_PULL_GET_MEM_CTX(ndr
);
3579 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.service_status
, 0);
3580 NDR_CHECK(ndr_pull_ENUM_SERVICE_STATUS(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->out
.service_status
));
3581 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_service_status_0
, 0);
3583 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
3584 NDR_PULL_ALLOC(ndr
, r
->out
.bytes_needed
);
3586 _mem_save_bytes_needed_0
= NDR_PULL_GET_MEM_CTX(ndr
);
3587 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.bytes_needed
, LIBNDR_FLAG_REF_ALLOC
);
3588 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, r
->out
.bytes_needed
));
3589 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_bytes_needed_0
, LIBNDR_FLAG_REF_ALLOC
);
3590 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
3591 NDR_PULL_ALLOC(ndr
, r
->out
.services_returned
);
3593 _mem_save_services_returned_0
= NDR_PULL_GET_MEM_CTX(ndr
);
3594 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.services_returned
, LIBNDR_FLAG_REF_ALLOC
);
3595 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, r
->out
.services_returned
));
3596 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_services_returned_0
, LIBNDR_FLAG_REF_ALLOC
);
3597 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
3599 return NDR_ERR_SUCCESS
;
3602 _PUBLIC_
void ndr_print_svcctl_EnumDependentServicesA(struct ndr_print
*ndr
, const char *name
, int flags
, const struct svcctl_EnumDependentServicesA
*r
)
3604 ndr_print_struct(ndr
, name
, "svcctl_EnumDependentServicesA");
3606 if (flags
& NDR_SET_VALUES
) {
3607 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
3609 if (flags
& NDR_IN
) {
3610 ndr_print_struct(ndr
, "in", "svcctl_EnumDependentServicesA");
3612 ndr_print_ptr(ndr
, "service", r
->in
.service
);
3614 ndr_print_policy_handle(ndr
, "service", r
->in
.service
);
3616 ndr_print_uint32(ndr
, "state", r
->in
.state
);
3617 ndr_print_uint32(ndr
, "buf_size", r
->in
.buf_size
);
3620 if (flags
& NDR_OUT
) {
3621 ndr_print_struct(ndr
, "out", "svcctl_EnumDependentServicesA");
3623 ndr_print_ptr(ndr
, "service_status", r
->out
.service_status
);
3625 if (r
->out
.service_status
) {
3626 ndr_print_ENUM_SERVICE_STATUS(ndr
, "service_status", r
->out
.service_status
);
3629 ndr_print_ptr(ndr
, "bytes_needed", r
->out
.bytes_needed
);
3631 ndr_print_uint32(ndr
, "bytes_needed", *r
->out
.bytes_needed
);
3633 ndr_print_ptr(ndr
, "services_returned", r
->out
.services_returned
);
3635 ndr_print_uint32(ndr
, "services_returned", *r
->out
.services_returned
);
3637 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
3643 static enum ndr_err_code
ndr_push_svcctl_EnumServicesStatusA(struct ndr_push
*ndr
, int flags
, const struct svcctl_EnumServicesStatusA
*r
)
3645 if (flags
& NDR_IN
) {
3646 if (r
->in
.handle
== NULL
) {
3647 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
3649 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->in
.handle
));
3650 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.type
));
3651 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.state
));
3652 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.buf_size
));
3653 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.resume_handle
));
3654 if (r
->in
.resume_handle
) {
3655 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, *r
->in
.resume_handle
));
3658 if (flags
& NDR_OUT
) {
3659 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.buf_size
));
3660 NDR_CHECK(ndr_push_array_uint8(ndr
, NDR_SCALARS
, r
->out
.service
, r
->in
.buf_size
));
3661 if (r
->out
.bytes_needed
== NULL
) {
3662 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
3664 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, *r
->out
.bytes_needed
));
3665 if (r
->out
.services_returned
== NULL
) {
3666 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
3668 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, *r
->out
.services_returned
));
3669 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->out
.resume_handle
));
3670 if (r
->out
.resume_handle
) {
3671 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, *r
->out
.resume_handle
));
3673 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
3675 return NDR_ERR_SUCCESS
;
3678 static enum ndr_err_code
ndr_pull_svcctl_EnumServicesStatusA(struct ndr_pull
*ndr
, int flags
, struct svcctl_EnumServicesStatusA
*r
)
3680 uint32_t _ptr_resume_handle
;
3681 TALLOC_CTX
*_mem_save_handle_0
;
3682 TALLOC_CTX
*_mem_save_bytes_needed_0
;
3683 TALLOC_CTX
*_mem_save_services_returned_0
;
3684 TALLOC_CTX
*_mem_save_resume_handle_0
;
3685 if (flags
& NDR_IN
) {
3686 ZERO_STRUCT(r
->out
);
3688 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
3689 NDR_PULL_ALLOC(ndr
, r
->in
.handle
);
3691 _mem_save_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
3692 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.handle
, LIBNDR_FLAG_REF_ALLOC
);
3693 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->in
.handle
));
3694 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_handle_0
, LIBNDR_FLAG_REF_ALLOC
);
3695 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.type
));
3696 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.state
));
3697 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.buf_size
));
3698 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_resume_handle
));
3699 if (_ptr_resume_handle
) {
3700 NDR_PULL_ALLOC(ndr
, r
->in
.resume_handle
);
3702 r
->in
.resume_handle
= NULL
;
3704 if (r
->in
.resume_handle
) {
3705 _mem_save_resume_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
3706 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.resume_handle
, 0);
3707 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, r
->in
.resume_handle
));
3708 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_resume_handle_0
, 0);
3710 NDR_PULL_ALLOC(ndr
, r
->out
.bytes_needed
);
3711 ZERO_STRUCTP(r
->out
.bytes_needed
);
3712 NDR_PULL_ALLOC(ndr
, r
->out
.services_returned
);
3713 ZERO_STRUCTP(r
->out
.services_returned
);
3715 if (flags
& NDR_OUT
) {
3716 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->out
.service
));
3717 NDR_PULL_ALLOC_N(ndr
, r
->out
.service
, ndr_get_array_size(ndr
, &r
->out
.service
));
3718 NDR_CHECK(ndr_pull_array_uint8(ndr
, NDR_SCALARS
, r
->out
.service
, ndr_get_array_size(ndr
, &r
->out
.service
)));
3719 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
3720 NDR_PULL_ALLOC(ndr
, r
->out
.bytes_needed
);
3722 _mem_save_bytes_needed_0
= NDR_PULL_GET_MEM_CTX(ndr
);
3723 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.bytes_needed
, LIBNDR_FLAG_REF_ALLOC
);
3724 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, r
->out
.bytes_needed
));
3725 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_bytes_needed_0
, LIBNDR_FLAG_REF_ALLOC
);
3726 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
3727 NDR_PULL_ALLOC(ndr
, r
->out
.services_returned
);
3729 _mem_save_services_returned_0
= NDR_PULL_GET_MEM_CTX(ndr
);
3730 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.services_returned
, LIBNDR_FLAG_REF_ALLOC
);
3731 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, r
->out
.services_returned
));
3732 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_services_returned_0
, LIBNDR_FLAG_REF_ALLOC
);
3733 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_resume_handle
));
3734 if (_ptr_resume_handle
) {
3735 NDR_PULL_ALLOC(ndr
, r
->out
.resume_handle
);
3737 r
->out
.resume_handle
= NULL
;
3739 if (r
->out
.resume_handle
) {
3740 _mem_save_resume_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
3741 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.resume_handle
, 0);
3742 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, r
->out
.resume_handle
));
3743 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_resume_handle_0
, 0);
3745 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
3746 if (r
->out
.service
) {
3747 NDR_CHECK(ndr_check_array_size(ndr
, (void*)&r
->out
.service
, r
->in
.buf_size
));
3750 return NDR_ERR_SUCCESS
;
3753 _PUBLIC_
void ndr_print_svcctl_EnumServicesStatusA(struct ndr_print
*ndr
, const char *name
, int flags
, const struct svcctl_EnumServicesStatusA
*r
)
3755 ndr_print_struct(ndr
, name
, "svcctl_EnumServicesStatusA");
3757 if (flags
& NDR_SET_VALUES
) {
3758 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
3760 if (flags
& NDR_IN
) {
3761 ndr_print_struct(ndr
, "in", "svcctl_EnumServicesStatusA");
3763 ndr_print_ptr(ndr
, "handle", r
->in
.handle
);
3765 ndr_print_policy_handle(ndr
, "handle", r
->in
.handle
);
3767 ndr_print_uint32(ndr
, "type", r
->in
.type
);
3768 ndr_print_uint32(ndr
, "state", r
->in
.state
);
3769 ndr_print_uint32(ndr
, "buf_size", r
->in
.buf_size
);
3770 ndr_print_ptr(ndr
, "resume_handle", r
->in
.resume_handle
);
3772 if (r
->in
.resume_handle
) {
3773 ndr_print_uint32(ndr
, "resume_handle", *r
->in
.resume_handle
);
3778 if (flags
& NDR_OUT
) {
3779 ndr_print_struct(ndr
, "out", "svcctl_EnumServicesStatusA");
3781 ndr_print_array_uint8(ndr
, "service", r
->out
.service
, r
->in
.buf_size
);
3782 ndr_print_ptr(ndr
, "bytes_needed", r
->out
.bytes_needed
);
3784 ndr_print_uint32(ndr
, "bytes_needed", *r
->out
.bytes_needed
);
3786 ndr_print_ptr(ndr
, "services_returned", r
->out
.services_returned
);
3788 ndr_print_uint32(ndr
, "services_returned", *r
->out
.services_returned
);
3790 ndr_print_ptr(ndr
, "resume_handle", r
->out
.resume_handle
);
3792 if (r
->out
.resume_handle
) {
3793 ndr_print_uint32(ndr
, "resume_handle", *r
->out
.resume_handle
);
3796 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
3802 static enum ndr_err_code
ndr_push_svcctl_OpenSCManagerA(struct ndr_push
*ndr
, int flags
, const struct svcctl_OpenSCManagerA
*r
)
3804 if (flags
& NDR_IN
) {
3805 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.MachineName
));
3806 if (r
->in
.MachineName
) {
3807 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.MachineName
, CH_UTF16
)));
3808 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, 0));
3809 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.MachineName
, CH_UTF16
)));
3810 NDR_CHECK(ndr_push_charset(ndr
, NDR_SCALARS
, r
->in
.MachineName
, ndr_charset_length(r
->in
.MachineName
, CH_UTF16
), sizeof(uint16_t), CH_UTF16
));
3812 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.DatabaseName
));
3813 if (r
->in
.DatabaseName
) {
3814 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.DatabaseName
, CH_UTF16
)));
3815 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, 0));
3816 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.DatabaseName
, CH_UTF16
)));
3817 NDR_CHECK(ndr_push_charset(ndr
, NDR_SCALARS
, r
->in
.DatabaseName
, ndr_charset_length(r
->in
.DatabaseName
, CH_UTF16
), sizeof(uint16_t), CH_UTF16
));
3819 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.access_mask
));
3821 if (flags
& NDR_OUT
) {
3822 if (r
->out
.handle
== NULL
) {
3823 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
3825 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->out
.handle
));
3826 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
3828 return NDR_ERR_SUCCESS
;
3831 static enum ndr_err_code
ndr_pull_svcctl_OpenSCManagerA(struct ndr_pull
*ndr
, int flags
, struct svcctl_OpenSCManagerA
*r
)
3833 uint32_t _ptr_MachineName
;
3834 uint32_t _ptr_DatabaseName
;
3835 TALLOC_CTX
*_mem_save_MachineName_0
;
3836 TALLOC_CTX
*_mem_save_DatabaseName_0
;
3837 TALLOC_CTX
*_mem_save_handle_0
;
3838 if (flags
& NDR_IN
) {
3839 ZERO_STRUCT(r
->out
);
3841 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_MachineName
));
3842 if (_ptr_MachineName
) {
3843 NDR_PULL_ALLOC(ndr
, r
->in
.MachineName
);
3845 r
->in
.MachineName
= NULL
;
3847 if (r
->in
.MachineName
) {
3848 _mem_save_MachineName_0
= NDR_PULL_GET_MEM_CTX(ndr
);
3849 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.MachineName
, 0);
3850 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->in
.MachineName
));
3851 NDR_CHECK(ndr_pull_array_length(ndr
, &r
->in
.MachineName
));
3852 if (ndr_get_array_length(ndr
, &r
->in
.MachineName
) > ndr_get_array_size(ndr
, &r
->in
.MachineName
)) {
3853 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
));
3855 NDR_CHECK(ndr_check_string_terminator(ndr
, ndr_get_array_length(ndr
, &r
->in
.MachineName
), sizeof(uint16_t)));
3856 NDR_CHECK(ndr_pull_charset(ndr
, NDR_SCALARS
, &r
->in
.MachineName
, ndr_get_array_length(ndr
, &r
->in
.MachineName
), sizeof(uint16_t), CH_UTF16
));
3857 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_MachineName_0
, 0);
3859 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_DatabaseName
));
3860 if (_ptr_DatabaseName
) {
3861 NDR_PULL_ALLOC(ndr
, r
->in
.DatabaseName
);
3863 r
->in
.DatabaseName
= NULL
;
3865 if (r
->in
.DatabaseName
) {
3866 _mem_save_DatabaseName_0
= NDR_PULL_GET_MEM_CTX(ndr
);
3867 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.DatabaseName
, 0);
3868 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->in
.DatabaseName
));
3869 NDR_CHECK(ndr_pull_array_length(ndr
, &r
->in
.DatabaseName
));
3870 if (ndr_get_array_length(ndr
, &r
->in
.DatabaseName
) > ndr_get_array_size(ndr
, &r
->in
.DatabaseName
)) {
3871 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
));
3873 NDR_CHECK(ndr_check_string_terminator(ndr
, ndr_get_array_length(ndr
, &r
->in
.DatabaseName
), sizeof(uint16_t)));
3874 NDR_CHECK(ndr_pull_charset(ndr
, NDR_SCALARS
, &r
->in
.DatabaseName
, ndr_get_array_length(ndr
, &r
->in
.DatabaseName
), sizeof(uint16_t), CH_UTF16
));
3875 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_DatabaseName_0
, 0);
3877 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.access_mask
));
3878 NDR_PULL_ALLOC(ndr
, r
->out
.handle
);
3879 ZERO_STRUCTP(r
->out
.handle
);
3881 if (flags
& NDR_OUT
) {
3882 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
3883 NDR_PULL_ALLOC(ndr
, r
->out
.handle
);
3885 _mem_save_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
3886 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.handle
, LIBNDR_FLAG_REF_ALLOC
);
3887 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->out
.handle
));
3888 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_handle_0
, LIBNDR_FLAG_REF_ALLOC
);
3889 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
3891 return NDR_ERR_SUCCESS
;
3894 _PUBLIC_
void ndr_print_svcctl_OpenSCManagerA(struct ndr_print
*ndr
, const char *name
, int flags
, const struct svcctl_OpenSCManagerA
*r
)
3896 ndr_print_struct(ndr
, name
, "svcctl_OpenSCManagerA");
3898 if (flags
& NDR_SET_VALUES
) {
3899 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
3901 if (flags
& NDR_IN
) {
3902 ndr_print_struct(ndr
, "in", "svcctl_OpenSCManagerA");
3904 ndr_print_ptr(ndr
, "MachineName", r
->in
.MachineName
);
3906 if (r
->in
.MachineName
) {
3907 ndr_print_string(ndr
, "MachineName", r
->in
.MachineName
);
3910 ndr_print_ptr(ndr
, "DatabaseName", r
->in
.DatabaseName
);
3912 if (r
->in
.DatabaseName
) {
3913 ndr_print_string(ndr
, "DatabaseName", r
->in
.DatabaseName
);
3916 ndr_print_uint32(ndr
, "access_mask", r
->in
.access_mask
);
3919 if (flags
& NDR_OUT
) {
3920 ndr_print_struct(ndr
, "out", "svcctl_OpenSCManagerA");
3922 ndr_print_ptr(ndr
, "handle", r
->out
.handle
);
3924 ndr_print_policy_handle(ndr
, "handle", r
->out
.handle
);
3926 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
3932 static enum ndr_err_code
ndr_push_svcctl_OpenServiceA(struct ndr_push
*ndr
, int flags
, const struct svcctl_OpenServiceA
*r
)
3934 if (flags
& NDR_IN
) {
3935 if (r
->in
.scmanager_handle
== NULL
) {
3936 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
3938 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->in
.scmanager_handle
));
3939 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.ServiceName
));
3940 if (r
->in
.ServiceName
) {
3941 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.ServiceName
, CH_UTF16
)));
3942 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, 0));
3943 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.ServiceName
, CH_UTF16
)));
3944 NDR_CHECK(ndr_push_charset(ndr
, NDR_SCALARS
, r
->in
.ServiceName
, ndr_charset_length(r
->in
.ServiceName
, CH_UTF16
), sizeof(uint16_t), CH_UTF16
));
3946 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.access_mask
));
3948 if (flags
& NDR_OUT
) {
3949 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
3951 return NDR_ERR_SUCCESS
;
3954 static enum ndr_err_code
ndr_pull_svcctl_OpenServiceA(struct ndr_pull
*ndr
, int flags
, struct svcctl_OpenServiceA
*r
)
3956 uint32_t _ptr_ServiceName
;
3957 TALLOC_CTX
*_mem_save_scmanager_handle_0
;
3958 TALLOC_CTX
*_mem_save_ServiceName_0
;
3959 if (flags
& NDR_IN
) {
3960 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
3961 NDR_PULL_ALLOC(ndr
, r
->in
.scmanager_handle
);
3963 _mem_save_scmanager_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
3964 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.scmanager_handle
, LIBNDR_FLAG_REF_ALLOC
);
3965 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->in
.scmanager_handle
));
3966 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_scmanager_handle_0
, LIBNDR_FLAG_REF_ALLOC
);
3967 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_ServiceName
));
3968 if (_ptr_ServiceName
) {
3969 NDR_PULL_ALLOC(ndr
, r
->in
.ServiceName
);
3971 r
->in
.ServiceName
= NULL
;
3973 if (r
->in
.ServiceName
) {
3974 _mem_save_ServiceName_0
= NDR_PULL_GET_MEM_CTX(ndr
);
3975 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.ServiceName
, 0);
3976 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->in
.ServiceName
));
3977 NDR_CHECK(ndr_pull_array_length(ndr
, &r
->in
.ServiceName
));
3978 if (ndr_get_array_length(ndr
, &r
->in
.ServiceName
) > ndr_get_array_size(ndr
, &r
->in
.ServiceName
)) {
3979 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
));
3981 NDR_CHECK(ndr_check_string_terminator(ndr
, ndr_get_array_length(ndr
, &r
->in
.ServiceName
), sizeof(uint16_t)));
3982 NDR_CHECK(ndr_pull_charset(ndr
, NDR_SCALARS
, &r
->in
.ServiceName
, ndr_get_array_length(ndr
, &r
->in
.ServiceName
), sizeof(uint16_t), CH_UTF16
));
3983 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_ServiceName_0
, 0);
3985 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.access_mask
));
3987 if (flags
& NDR_OUT
) {
3988 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
3990 return NDR_ERR_SUCCESS
;
3993 _PUBLIC_
void ndr_print_svcctl_OpenServiceA(struct ndr_print
*ndr
, const char *name
, int flags
, const struct svcctl_OpenServiceA
*r
)
3995 ndr_print_struct(ndr
, name
, "svcctl_OpenServiceA");
3997 if (flags
& NDR_SET_VALUES
) {
3998 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
4000 if (flags
& NDR_IN
) {
4001 ndr_print_struct(ndr
, "in", "svcctl_OpenServiceA");
4003 ndr_print_ptr(ndr
, "scmanager_handle", r
->in
.scmanager_handle
);
4005 ndr_print_policy_handle(ndr
, "scmanager_handle", r
->in
.scmanager_handle
);
4007 ndr_print_ptr(ndr
, "ServiceName", r
->in
.ServiceName
);
4009 if (r
->in
.ServiceName
) {
4010 ndr_print_string(ndr
, "ServiceName", r
->in
.ServiceName
);
4013 ndr_print_uint32(ndr
, "access_mask", r
->in
.access_mask
);
4016 if (flags
& NDR_OUT
) {
4017 ndr_print_struct(ndr
, "out", "svcctl_OpenServiceA");
4019 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
4025 static enum ndr_err_code
ndr_push_svcctl_QueryServiceConfigA(struct ndr_push
*ndr
, int flags
, const struct svcctl_QueryServiceConfigA
*r
)
4027 if (flags
& NDR_IN
) {
4028 if (r
->in
.handle
== NULL
) {
4029 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
4031 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->in
.handle
));
4032 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.buf_size
));
4034 if (flags
& NDR_OUT
) {
4035 NDR_CHECK(ndr_push_array_uint8(ndr
, NDR_SCALARS
, r
->out
.query
, r
->in
.buf_size
));
4036 if (r
->out
.bytes_needed
== NULL
) {
4037 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
4039 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, *r
->out
.bytes_needed
));
4040 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
4042 return NDR_ERR_SUCCESS
;
4045 static enum ndr_err_code
ndr_pull_svcctl_QueryServiceConfigA(struct ndr_pull
*ndr
, int flags
, struct svcctl_QueryServiceConfigA
*r
)
4047 TALLOC_CTX
*_mem_save_handle_0
;
4048 TALLOC_CTX
*_mem_save_bytes_needed_0
;
4049 if (flags
& NDR_IN
) {
4050 ZERO_STRUCT(r
->out
);
4052 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
4053 NDR_PULL_ALLOC(ndr
, r
->in
.handle
);
4055 _mem_save_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
4056 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.handle
, LIBNDR_FLAG_REF_ALLOC
);
4057 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->in
.handle
));
4058 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_handle_0
, LIBNDR_FLAG_REF_ALLOC
);
4059 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.buf_size
));
4060 NDR_PULL_ALLOC(ndr
, r
->out
.bytes_needed
);
4061 ZERO_STRUCTP(r
->out
.bytes_needed
);
4063 if (flags
& NDR_OUT
) {
4064 NDR_PULL_ALLOC_N(ndr
, r
->out
.query
, r
->in
.buf_size
);
4065 NDR_CHECK(ndr_pull_array_uint8(ndr
, NDR_SCALARS
, r
->out
.query
, r
->in
.buf_size
));
4066 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
4067 NDR_PULL_ALLOC(ndr
, r
->out
.bytes_needed
);
4069 _mem_save_bytes_needed_0
= NDR_PULL_GET_MEM_CTX(ndr
);
4070 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.bytes_needed
, LIBNDR_FLAG_REF_ALLOC
);
4071 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, r
->out
.bytes_needed
));
4072 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_bytes_needed_0
, LIBNDR_FLAG_REF_ALLOC
);
4073 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
4075 return NDR_ERR_SUCCESS
;
4078 _PUBLIC_
void ndr_print_svcctl_QueryServiceConfigA(struct ndr_print
*ndr
, const char *name
, int flags
, const struct svcctl_QueryServiceConfigA
*r
)
4080 ndr_print_struct(ndr
, name
, "svcctl_QueryServiceConfigA");
4082 if (flags
& NDR_SET_VALUES
) {
4083 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
4085 if (flags
& NDR_IN
) {
4086 ndr_print_struct(ndr
, "in", "svcctl_QueryServiceConfigA");
4088 ndr_print_ptr(ndr
, "handle", r
->in
.handle
);
4090 ndr_print_policy_handle(ndr
, "handle", r
->in
.handle
);
4092 ndr_print_uint32(ndr
, "buf_size", r
->in
.buf_size
);
4095 if (flags
& NDR_OUT
) {
4096 ndr_print_struct(ndr
, "out", "svcctl_QueryServiceConfigA");
4098 ndr_print_array_uint8(ndr
, "query", r
->out
.query
, r
->in
.buf_size
);
4099 ndr_print_ptr(ndr
, "bytes_needed", r
->out
.bytes_needed
);
4101 ndr_print_uint32(ndr
, "bytes_needed", *r
->out
.bytes_needed
);
4103 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
4109 static enum ndr_err_code
ndr_push_svcctl_QueryServiceLockStatusA(struct ndr_push
*ndr
, int flags
, const struct svcctl_QueryServiceLockStatusA
*r
)
4111 if (flags
& NDR_IN
) {
4112 if (r
->in
.handle
== NULL
) {
4113 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
4115 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->in
.handle
));
4116 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.buf_size
));
4118 if (flags
& NDR_OUT
) {
4119 if (r
->out
.lock_status
== NULL
) {
4120 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
4122 NDR_CHECK(ndr_push_SERVICE_LOCK_STATUS(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->out
.lock_status
));
4123 if (r
->out
.required_buf_size
== NULL
) {
4124 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
4126 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, *r
->out
.required_buf_size
));
4127 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
4129 return NDR_ERR_SUCCESS
;
4132 static enum ndr_err_code
ndr_pull_svcctl_QueryServiceLockStatusA(struct ndr_pull
*ndr
, int flags
, struct svcctl_QueryServiceLockStatusA
*r
)
4134 TALLOC_CTX
*_mem_save_handle_0
;
4135 TALLOC_CTX
*_mem_save_lock_status_0
;
4136 TALLOC_CTX
*_mem_save_required_buf_size_0
;
4137 if (flags
& NDR_IN
) {
4138 ZERO_STRUCT(r
->out
);
4140 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
4141 NDR_PULL_ALLOC(ndr
, r
->in
.handle
);
4143 _mem_save_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
4144 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.handle
, LIBNDR_FLAG_REF_ALLOC
);
4145 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->in
.handle
));
4146 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_handle_0
, LIBNDR_FLAG_REF_ALLOC
);
4147 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.buf_size
));
4148 NDR_PULL_ALLOC(ndr
, r
->out
.lock_status
);
4149 ZERO_STRUCTP(r
->out
.lock_status
);
4150 NDR_PULL_ALLOC(ndr
, r
->out
.required_buf_size
);
4151 ZERO_STRUCTP(r
->out
.required_buf_size
);
4153 if (flags
& NDR_OUT
) {
4154 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
4155 NDR_PULL_ALLOC(ndr
, r
->out
.lock_status
);
4157 _mem_save_lock_status_0
= NDR_PULL_GET_MEM_CTX(ndr
);
4158 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.lock_status
, LIBNDR_FLAG_REF_ALLOC
);
4159 NDR_CHECK(ndr_pull_SERVICE_LOCK_STATUS(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->out
.lock_status
));
4160 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_lock_status_0
, LIBNDR_FLAG_REF_ALLOC
);
4161 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
4162 NDR_PULL_ALLOC(ndr
, r
->out
.required_buf_size
);
4164 _mem_save_required_buf_size_0
= NDR_PULL_GET_MEM_CTX(ndr
);
4165 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.required_buf_size
, LIBNDR_FLAG_REF_ALLOC
);
4166 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, r
->out
.required_buf_size
));
4167 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_required_buf_size_0
, LIBNDR_FLAG_REF_ALLOC
);
4168 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
4170 return NDR_ERR_SUCCESS
;
4173 _PUBLIC_
void ndr_print_svcctl_QueryServiceLockStatusA(struct ndr_print
*ndr
, const char *name
, int flags
, const struct svcctl_QueryServiceLockStatusA
*r
)
4175 ndr_print_struct(ndr
, name
, "svcctl_QueryServiceLockStatusA");
4177 if (flags
& NDR_SET_VALUES
) {
4178 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
4180 if (flags
& NDR_IN
) {
4181 ndr_print_struct(ndr
, "in", "svcctl_QueryServiceLockStatusA");
4183 ndr_print_ptr(ndr
, "handle", r
->in
.handle
);
4185 ndr_print_policy_handle(ndr
, "handle", r
->in
.handle
);
4187 ndr_print_uint32(ndr
, "buf_size", r
->in
.buf_size
);
4190 if (flags
& NDR_OUT
) {
4191 ndr_print_struct(ndr
, "out", "svcctl_QueryServiceLockStatusA");
4193 ndr_print_ptr(ndr
, "lock_status", r
->out
.lock_status
);
4195 ndr_print_SERVICE_LOCK_STATUS(ndr
, "lock_status", r
->out
.lock_status
);
4197 ndr_print_ptr(ndr
, "required_buf_size", r
->out
.required_buf_size
);
4199 ndr_print_uint32(ndr
, "required_buf_size", *r
->out
.required_buf_size
);
4201 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
4207 static enum ndr_err_code
ndr_push_svcctl_StartServiceA(struct ndr_push
*ndr
, int flags
, const struct svcctl_StartServiceA
*r
)
4209 if (flags
& NDR_IN
) {
4210 if (r
->in
.handle
== NULL
) {
4211 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
4213 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->in
.handle
));
4214 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.NumArgs
));
4215 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.Arguments
));
4216 if (r
->in
.Arguments
) {
4217 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.Arguments
, CH_UTF16
)));
4218 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, 0));
4219 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.Arguments
, CH_UTF16
)));
4220 NDR_CHECK(ndr_push_charset(ndr
, NDR_SCALARS
, r
->in
.Arguments
, ndr_charset_length(r
->in
.Arguments
, CH_UTF16
), sizeof(uint16_t), CH_UTF16
));
4223 if (flags
& NDR_OUT
) {
4224 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
4226 return NDR_ERR_SUCCESS
;
4229 static enum ndr_err_code
ndr_pull_svcctl_StartServiceA(struct ndr_pull
*ndr
, int flags
, struct svcctl_StartServiceA
*r
)
4231 uint32_t _ptr_Arguments
;
4232 TALLOC_CTX
*_mem_save_handle_0
;
4233 TALLOC_CTX
*_mem_save_Arguments_0
;
4234 if (flags
& NDR_IN
) {
4235 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
4236 NDR_PULL_ALLOC(ndr
, r
->in
.handle
);
4238 _mem_save_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
4239 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.handle
, LIBNDR_FLAG_REF_ALLOC
);
4240 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->in
.handle
));
4241 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_handle_0
, LIBNDR_FLAG_REF_ALLOC
);
4242 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.NumArgs
));
4243 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_Arguments
));
4244 if (_ptr_Arguments
) {
4245 NDR_PULL_ALLOC(ndr
, r
->in
.Arguments
);
4247 r
->in
.Arguments
= NULL
;
4249 if (r
->in
.Arguments
) {
4250 _mem_save_Arguments_0
= NDR_PULL_GET_MEM_CTX(ndr
);
4251 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.Arguments
, 0);
4252 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->in
.Arguments
));
4253 NDR_CHECK(ndr_pull_array_length(ndr
, &r
->in
.Arguments
));
4254 if (ndr_get_array_length(ndr
, &r
->in
.Arguments
) > ndr_get_array_size(ndr
, &r
->in
.Arguments
)) {
4255 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
));
4257 NDR_CHECK(ndr_check_string_terminator(ndr
, ndr_get_array_length(ndr
, &r
->in
.Arguments
), sizeof(uint16_t)));
4258 NDR_CHECK(ndr_pull_charset(ndr
, NDR_SCALARS
, &r
->in
.Arguments
, ndr_get_array_length(ndr
, &r
->in
.Arguments
), sizeof(uint16_t), CH_UTF16
));
4259 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_Arguments_0
, 0);
4262 if (flags
& NDR_OUT
) {
4263 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
4265 return NDR_ERR_SUCCESS
;
4268 _PUBLIC_
void ndr_print_svcctl_StartServiceA(struct ndr_print
*ndr
, const char *name
, int flags
, const struct svcctl_StartServiceA
*r
)
4270 ndr_print_struct(ndr
, name
, "svcctl_StartServiceA");
4272 if (flags
& NDR_SET_VALUES
) {
4273 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
4275 if (flags
& NDR_IN
) {
4276 ndr_print_struct(ndr
, "in", "svcctl_StartServiceA");
4278 ndr_print_ptr(ndr
, "handle", r
->in
.handle
);
4280 ndr_print_policy_handle(ndr
, "handle", r
->in
.handle
);
4282 ndr_print_uint32(ndr
, "NumArgs", r
->in
.NumArgs
);
4283 ndr_print_ptr(ndr
, "Arguments", r
->in
.Arguments
);
4285 if (r
->in
.Arguments
) {
4286 ndr_print_string(ndr
, "Arguments", r
->in
.Arguments
);
4291 if (flags
& NDR_OUT
) {
4292 ndr_print_struct(ndr
, "out", "svcctl_StartServiceA");
4294 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
4300 static enum ndr_err_code
ndr_push_svcctl_GetServiceDisplayNameA(struct ndr_push
*ndr
, int flags
, const struct svcctl_GetServiceDisplayNameA
*r
)
4302 if (flags
& NDR_IN
) {
4303 if (r
->in
.handle
== NULL
) {
4304 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
4306 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->in
.handle
));
4307 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.service_name
));
4308 if (r
->in
.service_name
) {
4309 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.service_name
, CH_UTF16
)));
4310 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, 0));
4311 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.service_name
, CH_UTF16
)));
4312 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
));
4314 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.display_name_length
));
4315 if (r
->in
.display_name_length
) {
4316 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, *r
->in
.display_name_length
));
4319 if (flags
& NDR_OUT
) {
4320 if (r
->out
.display_name
== NULL
) {
4321 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
4323 NDR_CHECK(ndr_push_unique_ptr(ndr
, *r
->out
.display_name
));
4324 if (*r
->out
.display_name
) {
4325 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(*r
->out
.display_name
, CH_UTF16
)));
4326 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, 0));
4327 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(*r
->out
.display_name
, CH_UTF16
)));
4328 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
));
4330 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->out
.display_name_length
));
4331 if (r
->out
.display_name_length
) {
4332 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, *r
->out
.display_name_length
));
4334 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
4336 return NDR_ERR_SUCCESS
;
4339 static enum ndr_err_code
ndr_pull_svcctl_GetServiceDisplayNameA(struct ndr_pull
*ndr
, int flags
, struct svcctl_GetServiceDisplayNameA
*r
)
4341 uint32_t _ptr_service_name
;
4342 uint32_t _ptr_display_name
;
4343 uint32_t _ptr_display_name_length
;
4344 TALLOC_CTX
*_mem_save_handle_0
;
4345 TALLOC_CTX
*_mem_save_service_name_0
;
4346 TALLOC_CTX
*_mem_save_display_name_0
;
4347 TALLOC_CTX
*_mem_save_display_name_1
;
4348 TALLOC_CTX
*_mem_save_display_name_length_0
;
4349 if (flags
& NDR_IN
) {
4350 ZERO_STRUCT(r
->out
);
4352 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
4353 NDR_PULL_ALLOC(ndr
, r
->in
.handle
);
4355 _mem_save_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
4356 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.handle
, LIBNDR_FLAG_REF_ALLOC
);
4357 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->in
.handle
));
4358 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_handle_0
, LIBNDR_FLAG_REF_ALLOC
);
4359 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_service_name
));
4360 if (_ptr_service_name
) {
4361 NDR_PULL_ALLOC(ndr
, r
->in
.service_name
);
4363 r
->in
.service_name
= NULL
;
4365 if (r
->in
.service_name
) {
4366 _mem_save_service_name_0
= NDR_PULL_GET_MEM_CTX(ndr
);
4367 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.service_name
, 0);
4368 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->in
.service_name
));
4369 NDR_CHECK(ndr_pull_array_length(ndr
, &r
->in
.service_name
));
4370 if (ndr_get_array_length(ndr
, &r
->in
.service_name
) > ndr_get_array_size(ndr
, &r
->in
.service_name
)) {
4371 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
));
4373 NDR_CHECK(ndr_check_string_terminator(ndr
, ndr_get_array_length(ndr
, &r
->in
.service_name
), sizeof(uint16_t)));
4374 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
));
4375 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_service_name_0
, 0);
4377 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_display_name_length
));
4378 if (_ptr_display_name_length
) {
4379 NDR_PULL_ALLOC(ndr
, r
->in
.display_name_length
);
4381 r
->in
.display_name_length
= NULL
;
4383 if (r
->in
.display_name_length
) {
4384 _mem_save_display_name_length_0
= NDR_PULL_GET_MEM_CTX(ndr
);
4385 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.display_name_length
, 0);
4386 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, r
->in
.display_name_length
));
4387 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_display_name_length_0
, 0);
4389 NDR_PULL_ALLOC(ndr
, r
->out
.display_name
);
4390 ZERO_STRUCTP(r
->out
.display_name
);
4392 if (flags
& NDR_OUT
) {
4393 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
4394 NDR_PULL_ALLOC(ndr
, r
->out
.display_name
);
4396 _mem_save_display_name_0
= NDR_PULL_GET_MEM_CTX(ndr
);
4397 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.display_name
, LIBNDR_FLAG_REF_ALLOC
);
4398 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_display_name
));
4399 if (_ptr_display_name
) {
4400 NDR_PULL_ALLOC(ndr
, *r
->out
.display_name
);
4402 *r
->out
.display_name
= NULL
;
4404 if (*r
->out
.display_name
) {
4405 _mem_save_display_name_1
= NDR_PULL_GET_MEM_CTX(ndr
);
4406 NDR_PULL_SET_MEM_CTX(ndr
, *r
->out
.display_name
, 0);
4407 NDR_CHECK(ndr_pull_array_size(ndr
, r
->out
.display_name
));
4408 NDR_CHECK(ndr_pull_array_length(ndr
, r
->out
.display_name
));
4409 if (ndr_get_array_length(ndr
, r
->out
.display_name
) > ndr_get_array_size(ndr
, r
->out
.display_name
)) {
4410 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
));
4412 NDR_CHECK(ndr_check_string_terminator(ndr
, ndr_get_array_length(ndr
, r
->out
.display_name
), sizeof(uint16_t)));
4413 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
));
4414 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_display_name_1
, 0);
4416 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_display_name_0
, LIBNDR_FLAG_REF_ALLOC
);
4417 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_display_name_length
));
4418 if (_ptr_display_name_length
) {
4419 NDR_PULL_ALLOC(ndr
, r
->out
.display_name_length
);
4421 r
->out
.display_name_length
= NULL
;
4423 if (r
->out
.display_name_length
) {
4424 _mem_save_display_name_length_0
= NDR_PULL_GET_MEM_CTX(ndr
);
4425 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.display_name_length
, 0);
4426 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, r
->out
.display_name_length
));
4427 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_display_name_length_0
, 0);
4429 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
4431 return NDR_ERR_SUCCESS
;
4434 _PUBLIC_
void ndr_print_svcctl_GetServiceDisplayNameA(struct ndr_print
*ndr
, const char *name
, int flags
, const struct svcctl_GetServiceDisplayNameA
*r
)
4436 ndr_print_struct(ndr
, name
, "svcctl_GetServiceDisplayNameA");
4438 if (flags
& NDR_SET_VALUES
) {
4439 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
4441 if (flags
& NDR_IN
) {
4442 ndr_print_struct(ndr
, "in", "svcctl_GetServiceDisplayNameA");
4444 ndr_print_ptr(ndr
, "handle", r
->in
.handle
);
4446 ndr_print_policy_handle(ndr
, "handle", r
->in
.handle
);
4448 ndr_print_ptr(ndr
, "service_name", r
->in
.service_name
);
4450 if (r
->in
.service_name
) {
4451 ndr_print_string(ndr
, "service_name", r
->in
.service_name
);
4454 ndr_print_ptr(ndr
, "display_name_length", r
->in
.display_name_length
);
4456 if (r
->in
.display_name_length
) {
4457 ndr_print_uint32(ndr
, "display_name_length", *r
->in
.display_name_length
);
4462 if (flags
& NDR_OUT
) {
4463 ndr_print_struct(ndr
, "out", "svcctl_GetServiceDisplayNameA");
4465 ndr_print_ptr(ndr
, "display_name", r
->out
.display_name
);
4467 ndr_print_ptr(ndr
, "display_name", *r
->out
.display_name
);
4469 if (*r
->out
.display_name
) {
4470 ndr_print_string(ndr
, "display_name", *r
->out
.display_name
);
4474 ndr_print_ptr(ndr
, "display_name_length", r
->out
.display_name_length
);
4476 if (r
->out
.display_name_length
) {
4477 ndr_print_uint32(ndr
, "display_name_length", *r
->out
.display_name_length
);
4480 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
4486 static enum ndr_err_code
ndr_push_svcctl_GetServiceKeyNameA(struct ndr_push
*ndr
, int flags
, const struct svcctl_GetServiceKeyNameA
*r
)
4488 if (flags
& NDR_IN
) {
4489 if (r
->in
.handle
== NULL
) {
4490 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
4492 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->in
.handle
));
4493 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.service_name
));
4494 if (r
->in
.service_name
) {
4495 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.service_name
, CH_UTF16
)));
4496 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, 0));
4497 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.service_name
, CH_UTF16
)));
4498 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
));
4500 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.display_name_length
));
4501 if (r
->in
.display_name_length
) {
4502 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, *r
->in
.display_name_length
));
4505 if (flags
& NDR_OUT
) {
4506 if (r
->out
.key_name
== NULL
) {
4507 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
4509 NDR_CHECK(ndr_push_unique_ptr(ndr
, *r
->out
.key_name
));
4510 if (*r
->out
.key_name
) {
4511 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(*r
->out
.key_name
, CH_UTF16
)));
4512 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, 0));
4513 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(*r
->out
.key_name
, CH_UTF16
)));
4514 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
));
4516 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->out
.display_name_length
));
4517 if (r
->out
.display_name_length
) {
4518 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, *r
->out
.display_name_length
));
4520 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
4522 return NDR_ERR_SUCCESS
;
4525 static enum ndr_err_code
ndr_pull_svcctl_GetServiceKeyNameA(struct ndr_pull
*ndr
, int flags
, struct svcctl_GetServiceKeyNameA
*r
)
4527 uint32_t _ptr_service_name
;
4528 uint32_t _ptr_key_name
;
4529 uint32_t _ptr_display_name_length
;
4530 TALLOC_CTX
*_mem_save_handle_0
;
4531 TALLOC_CTX
*_mem_save_service_name_0
;
4532 TALLOC_CTX
*_mem_save_key_name_0
;
4533 TALLOC_CTX
*_mem_save_key_name_1
;
4534 TALLOC_CTX
*_mem_save_display_name_length_0
;
4535 if (flags
& NDR_IN
) {
4536 ZERO_STRUCT(r
->out
);
4538 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
4539 NDR_PULL_ALLOC(ndr
, r
->in
.handle
);
4541 _mem_save_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
4542 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.handle
, LIBNDR_FLAG_REF_ALLOC
);
4543 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->in
.handle
));
4544 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_handle_0
, LIBNDR_FLAG_REF_ALLOC
);
4545 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_service_name
));
4546 if (_ptr_service_name
) {
4547 NDR_PULL_ALLOC(ndr
, r
->in
.service_name
);
4549 r
->in
.service_name
= NULL
;
4551 if (r
->in
.service_name
) {
4552 _mem_save_service_name_0
= NDR_PULL_GET_MEM_CTX(ndr
);
4553 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.service_name
, 0);
4554 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->in
.service_name
));
4555 NDR_CHECK(ndr_pull_array_length(ndr
, &r
->in
.service_name
));
4556 if (ndr_get_array_length(ndr
, &r
->in
.service_name
) > ndr_get_array_size(ndr
, &r
->in
.service_name
)) {
4557 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
));
4559 NDR_CHECK(ndr_check_string_terminator(ndr
, ndr_get_array_length(ndr
, &r
->in
.service_name
), sizeof(uint16_t)));
4560 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
));
4561 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_service_name_0
, 0);
4563 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_display_name_length
));
4564 if (_ptr_display_name_length
) {
4565 NDR_PULL_ALLOC(ndr
, r
->in
.display_name_length
);
4567 r
->in
.display_name_length
= NULL
;
4569 if (r
->in
.display_name_length
) {
4570 _mem_save_display_name_length_0
= NDR_PULL_GET_MEM_CTX(ndr
);
4571 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.display_name_length
, 0);
4572 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, r
->in
.display_name_length
));
4573 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_display_name_length_0
, 0);
4575 NDR_PULL_ALLOC(ndr
, r
->out
.key_name
);
4576 ZERO_STRUCTP(r
->out
.key_name
);
4578 if (flags
& NDR_OUT
) {
4579 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
4580 NDR_PULL_ALLOC(ndr
, r
->out
.key_name
);
4582 _mem_save_key_name_0
= NDR_PULL_GET_MEM_CTX(ndr
);
4583 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.key_name
, LIBNDR_FLAG_REF_ALLOC
);
4584 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_key_name
));
4585 if (_ptr_key_name
) {
4586 NDR_PULL_ALLOC(ndr
, *r
->out
.key_name
);
4588 *r
->out
.key_name
= NULL
;
4590 if (*r
->out
.key_name
) {
4591 _mem_save_key_name_1
= NDR_PULL_GET_MEM_CTX(ndr
);
4592 NDR_PULL_SET_MEM_CTX(ndr
, *r
->out
.key_name
, 0);
4593 NDR_CHECK(ndr_pull_array_size(ndr
, r
->out
.key_name
));
4594 NDR_CHECK(ndr_pull_array_length(ndr
, r
->out
.key_name
));
4595 if (ndr_get_array_length(ndr
, r
->out
.key_name
) > ndr_get_array_size(ndr
, r
->out
.key_name
)) {
4596 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
));
4598 NDR_CHECK(ndr_check_string_terminator(ndr
, ndr_get_array_length(ndr
, r
->out
.key_name
), sizeof(uint16_t)));
4599 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
));
4600 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_key_name_1
, 0);
4602 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_key_name_0
, LIBNDR_FLAG_REF_ALLOC
);
4603 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_display_name_length
));
4604 if (_ptr_display_name_length
) {
4605 NDR_PULL_ALLOC(ndr
, r
->out
.display_name_length
);
4607 r
->out
.display_name_length
= NULL
;
4609 if (r
->out
.display_name_length
) {
4610 _mem_save_display_name_length_0
= NDR_PULL_GET_MEM_CTX(ndr
);
4611 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.display_name_length
, 0);
4612 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, r
->out
.display_name_length
));
4613 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_display_name_length_0
, 0);
4615 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
4617 return NDR_ERR_SUCCESS
;
4620 _PUBLIC_
void ndr_print_svcctl_GetServiceKeyNameA(struct ndr_print
*ndr
, const char *name
, int flags
, const struct svcctl_GetServiceKeyNameA
*r
)
4622 ndr_print_struct(ndr
, name
, "svcctl_GetServiceKeyNameA");
4624 if (flags
& NDR_SET_VALUES
) {
4625 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
4627 if (flags
& NDR_IN
) {
4628 ndr_print_struct(ndr
, "in", "svcctl_GetServiceKeyNameA");
4630 ndr_print_ptr(ndr
, "handle", r
->in
.handle
);
4632 ndr_print_policy_handle(ndr
, "handle", r
->in
.handle
);
4634 ndr_print_ptr(ndr
, "service_name", r
->in
.service_name
);
4636 if (r
->in
.service_name
) {
4637 ndr_print_string(ndr
, "service_name", r
->in
.service_name
);
4640 ndr_print_ptr(ndr
, "display_name_length", r
->in
.display_name_length
);
4642 if (r
->in
.display_name_length
) {
4643 ndr_print_uint32(ndr
, "display_name_length", *r
->in
.display_name_length
);
4648 if (flags
& NDR_OUT
) {
4649 ndr_print_struct(ndr
, "out", "svcctl_GetServiceKeyNameA");
4651 ndr_print_ptr(ndr
, "key_name", r
->out
.key_name
);
4653 ndr_print_ptr(ndr
, "key_name", *r
->out
.key_name
);
4655 if (*r
->out
.key_name
) {
4656 ndr_print_string(ndr
, "key_name", *r
->out
.key_name
);
4660 ndr_print_ptr(ndr
, "display_name_length", r
->out
.display_name_length
);
4662 if (r
->out
.display_name_length
) {
4663 ndr_print_uint32(ndr
, "display_name_length", *r
->out
.display_name_length
);
4666 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
4672 static enum ndr_err_code
ndr_push_svcctl_GetCurrentGroupeStateW(struct ndr_push
*ndr
, int flags
, const struct svcctl_GetCurrentGroupeStateW
*r
)
4674 if (flags
& NDR_IN
) {
4676 if (flags
& NDR_OUT
) {
4677 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
4679 return NDR_ERR_SUCCESS
;
4682 static enum ndr_err_code
ndr_pull_svcctl_GetCurrentGroupeStateW(struct ndr_pull
*ndr
, int flags
, struct svcctl_GetCurrentGroupeStateW
*r
)
4684 if (flags
& NDR_IN
) {
4686 if (flags
& NDR_OUT
) {
4687 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
4689 return NDR_ERR_SUCCESS
;
4692 _PUBLIC_
void ndr_print_svcctl_GetCurrentGroupeStateW(struct ndr_print
*ndr
, const char *name
, int flags
, const struct svcctl_GetCurrentGroupeStateW
*r
)
4694 ndr_print_struct(ndr
, name
, "svcctl_GetCurrentGroupeStateW");
4696 if (flags
& NDR_SET_VALUES
) {
4697 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
4699 if (flags
& NDR_IN
) {
4700 ndr_print_struct(ndr
, "in", "svcctl_GetCurrentGroupeStateW");
4704 if (flags
& NDR_OUT
) {
4705 ndr_print_struct(ndr
, "out", "svcctl_GetCurrentGroupeStateW");
4707 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
4713 static enum ndr_err_code
ndr_push_svcctl_EnumServiceGroupW(struct ndr_push
*ndr
, int flags
, const struct svcctl_EnumServiceGroupW
*r
)
4715 if (flags
& NDR_IN
) {
4717 if (flags
& NDR_OUT
) {
4718 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
4720 return NDR_ERR_SUCCESS
;
4723 static enum ndr_err_code
ndr_pull_svcctl_EnumServiceGroupW(struct ndr_pull
*ndr
, int flags
, struct svcctl_EnumServiceGroupW
*r
)
4725 if (flags
& NDR_IN
) {
4727 if (flags
& NDR_OUT
) {
4728 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
4730 return NDR_ERR_SUCCESS
;
4733 _PUBLIC_
void ndr_print_svcctl_EnumServiceGroupW(struct ndr_print
*ndr
, const char *name
, int flags
, const struct svcctl_EnumServiceGroupW
*r
)
4735 ndr_print_struct(ndr
, name
, "svcctl_EnumServiceGroupW");
4737 if (flags
& NDR_SET_VALUES
) {
4738 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
4740 if (flags
& NDR_IN
) {
4741 ndr_print_struct(ndr
, "in", "svcctl_EnumServiceGroupW");
4745 if (flags
& NDR_OUT
) {
4746 ndr_print_struct(ndr
, "out", "svcctl_EnumServiceGroupW");
4748 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
4754 static enum ndr_err_code
ndr_push_svcctl_ChangeServiceConfig2A(struct ndr_push
*ndr
, int flags
, const struct svcctl_ChangeServiceConfig2A
*r
)
4756 if (flags
& NDR_IN
) {
4757 if (r
->in
.handle
== NULL
) {
4758 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
4760 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->in
.handle
));
4761 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.info_level
));
4762 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.info
));
4764 NDR_CHECK(ndr_push_uint8(ndr
, NDR_SCALARS
, *r
->in
.info
));
4767 if (flags
& NDR_OUT
) {
4768 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
4770 return NDR_ERR_SUCCESS
;
4773 static enum ndr_err_code
ndr_pull_svcctl_ChangeServiceConfig2A(struct ndr_pull
*ndr
, int flags
, struct svcctl_ChangeServiceConfig2A
*r
)
4776 TALLOC_CTX
*_mem_save_handle_0
;
4777 TALLOC_CTX
*_mem_save_info_0
;
4778 if (flags
& NDR_IN
) {
4779 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
4780 NDR_PULL_ALLOC(ndr
, r
->in
.handle
);
4782 _mem_save_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
4783 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.handle
, LIBNDR_FLAG_REF_ALLOC
);
4784 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->in
.handle
));
4785 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_handle_0
, LIBNDR_FLAG_REF_ALLOC
);
4786 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.info_level
));
4787 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_info
));
4789 NDR_PULL_ALLOC(ndr
, r
->in
.info
);
4794 _mem_save_info_0
= NDR_PULL_GET_MEM_CTX(ndr
);
4795 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.info
, 0);
4796 NDR_CHECK(ndr_pull_uint8(ndr
, NDR_SCALARS
, r
->in
.info
));
4797 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_info_0
, 0);
4800 if (flags
& NDR_OUT
) {
4801 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
4803 return NDR_ERR_SUCCESS
;
4806 _PUBLIC_
void ndr_print_svcctl_ChangeServiceConfig2A(struct ndr_print
*ndr
, const char *name
, int flags
, const struct svcctl_ChangeServiceConfig2A
*r
)
4808 ndr_print_struct(ndr
, name
, "svcctl_ChangeServiceConfig2A");
4810 if (flags
& NDR_SET_VALUES
) {
4811 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
4813 if (flags
& NDR_IN
) {
4814 ndr_print_struct(ndr
, "in", "svcctl_ChangeServiceConfig2A");
4816 ndr_print_ptr(ndr
, "handle", r
->in
.handle
);
4818 ndr_print_policy_handle(ndr
, "handle", r
->in
.handle
);
4820 ndr_print_uint32(ndr
, "info_level", r
->in
.info_level
);
4821 ndr_print_ptr(ndr
, "info", r
->in
.info
);
4824 ndr_print_uint8(ndr
, "info", *r
->in
.info
);
4829 if (flags
& NDR_OUT
) {
4830 ndr_print_struct(ndr
, "out", "svcctl_ChangeServiceConfig2A");
4832 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
4838 static enum ndr_err_code
ndr_push_svcctl_ChangeServiceConfig2W(struct ndr_push
*ndr
, int flags
, const struct svcctl_ChangeServiceConfig2W
*r
)
4840 if (flags
& NDR_IN
) {
4841 if (r
->in
.handle
== NULL
) {
4842 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
4844 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->in
.handle
));
4845 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.info_level
));
4846 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.info
));
4848 NDR_CHECK(ndr_push_uint8(ndr
, NDR_SCALARS
, *r
->in
.info
));
4851 if (flags
& NDR_OUT
) {
4852 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
4854 return NDR_ERR_SUCCESS
;
4857 static enum ndr_err_code
ndr_pull_svcctl_ChangeServiceConfig2W(struct ndr_pull
*ndr
, int flags
, struct svcctl_ChangeServiceConfig2W
*r
)
4860 TALLOC_CTX
*_mem_save_handle_0
;
4861 TALLOC_CTX
*_mem_save_info_0
;
4862 if (flags
& NDR_IN
) {
4863 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
4864 NDR_PULL_ALLOC(ndr
, r
->in
.handle
);
4866 _mem_save_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
4867 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.handle
, LIBNDR_FLAG_REF_ALLOC
);
4868 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->in
.handle
));
4869 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_handle_0
, LIBNDR_FLAG_REF_ALLOC
);
4870 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.info_level
));
4871 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_info
));
4873 NDR_PULL_ALLOC(ndr
, r
->in
.info
);
4878 _mem_save_info_0
= NDR_PULL_GET_MEM_CTX(ndr
);
4879 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.info
, 0);
4880 NDR_CHECK(ndr_pull_uint8(ndr
, NDR_SCALARS
, r
->in
.info
));
4881 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_info_0
, 0);
4884 if (flags
& NDR_OUT
) {
4885 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
4887 return NDR_ERR_SUCCESS
;
4890 _PUBLIC_
void ndr_print_svcctl_ChangeServiceConfig2W(struct ndr_print
*ndr
, const char *name
, int flags
, const struct svcctl_ChangeServiceConfig2W
*r
)
4892 ndr_print_struct(ndr
, name
, "svcctl_ChangeServiceConfig2W");
4894 if (flags
& NDR_SET_VALUES
) {
4895 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
4897 if (flags
& NDR_IN
) {
4898 ndr_print_struct(ndr
, "in", "svcctl_ChangeServiceConfig2W");
4900 ndr_print_ptr(ndr
, "handle", r
->in
.handle
);
4902 ndr_print_policy_handle(ndr
, "handle", r
->in
.handle
);
4904 ndr_print_uint32(ndr
, "info_level", r
->in
.info_level
);
4905 ndr_print_ptr(ndr
, "info", r
->in
.info
);
4908 ndr_print_uint8(ndr
, "info", *r
->in
.info
);
4913 if (flags
& NDR_OUT
) {
4914 ndr_print_struct(ndr
, "out", "svcctl_ChangeServiceConfig2W");
4916 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
4922 static enum ndr_err_code
ndr_push_svcctl_QueryServiceConfig2A(struct ndr_push
*ndr
, int flags
, const struct svcctl_QueryServiceConfig2A
*r
)
4924 if (flags
& NDR_IN
) {
4925 if (r
->in
.handle
== NULL
) {
4926 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
4928 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->in
.handle
));
4929 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.info_level
));
4930 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.buf_size
));
4932 if (flags
& NDR_OUT
) {
4933 NDR_CHECK(ndr_push_array_uint8(ndr
, NDR_SCALARS
, r
->out
.buffer
, r
->in
.buf_size
));
4934 if (r
->out
.bytes_needed
== NULL
) {
4935 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
4937 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, *r
->out
.bytes_needed
));
4938 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
4940 return NDR_ERR_SUCCESS
;
4943 static enum ndr_err_code
ndr_pull_svcctl_QueryServiceConfig2A(struct ndr_pull
*ndr
, int flags
, struct svcctl_QueryServiceConfig2A
*r
)
4945 TALLOC_CTX
*_mem_save_handle_0
;
4946 TALLOC_CTX
*_mem_save_bytes_needed_0
;
4947 if (flags
& NDR_IN
) {
4948 ZERO_STRUCT(r
->out
);
4950 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
4951 NDR_PULL_ALLOC(ndr
, r
->in
.handle
);
4953 _mem_save_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
4954 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.handle
, LIBNDR_FLAG_REF_ALLOC
);
4955 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->in
.handle
));
4956 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_handle_0
, LIBNDR_FLAG_REF_ALLOC
);
4957 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.info_level
));
4958 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.buf_size
));
4959 NDR_PULL_ALLOC(ndr
, r
->out
.bytes_needed
);
4960 ZERO_STRUCTP(r
->out
.bytes_needed
);
4962 if (flags
& NDR_OUT
) {
4963 NDR_PULL_ALLOC_N(ndr
, r
->out
.buffer
, r
->in
.buf_size
);
4964 NDR_CHECK(ndr_pull_array_uint8(ndr
, NDR_SCALARS
, r
->out
.buffer
, r
->in
.buf_size
));
4965 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
4966 NDR_PULL_ALLOC(ndr
, r
->out
.bytes_needed
);
4968 _mem_save_bytes_needed_0
= NDR_PULL_GET_MEM_CTX(ndr
);
4969 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.bytes_needed
, LIBNDR_FLAG_REF_ALLOC
);
4970 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, r
->out
.bytes_needed
));
4971 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_bytes_needed_0
, LIBNDR_FLAG_REF_ALLOC
);
4972 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
4974 return NDR_ERR_SUCCESS
;
4977 _PUBLIC_
void ndr_print_svcctl_QueryServiceConfig2A(struct ndr_print
*ndr
, const char *name
, int flags
, const struct svcctl_QueryServiceConfig2A
*r
)
4979 ndr_print_struct(ndr
, name
, "svcctl_QueryServiceConfig2A");
4981 if (flags
& NDR_SET_VALUES
) {
4982 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
4984 if (flags
& NDR_IN
) {
4985 ndr_print_struct(ndr
, "in", "svcctl_QueryServiceConfig2A");
4987 ndr_print_ptr(ndr
, "handle", r
->in
.handle
);
4989 ndr_print_policy_handle(ndr
, "handle", r
->in
.handle
);
4991 ndr_print_uint32(ndr
, "info_level", r
->in
.info_level
);
4992 ndr_print_uint32(ndr
, "buf_size", r
->in
.buf_size
);
4995 if (flags
& NDR_OUT
) {
4996 ndr_print_struct(ndr
, "out", "svcctl_QueryServiceConfig2A");
4998 ndr_print_array_uint8(ndr
, "buffer", r
->out
.buffer
, r
->in
.buf_size
);
4999 ndr_print_ptr(ndr
, "bytes_needed", r
->out
.bytes_needed
);
5001 ndr_print_uint32(ndr
, "bytes_needed", *r
->out
.bytes_needed
);
5003 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
5009 static enum ndr_err_code
ndr_push_svcctl_QueryServiceConfig2W(struct ndr_push
*ndr
, int flags
, const struct svcctl_QueryServiceConfig2W
*r
)
5011 if (flags
& NDR_IN
) {
5012 if (r
->in
.handle
== NULL
) {
5013 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
5015 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->in
.handle
));
5016 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.info_level
));
5017 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.buf_size
));
5019 if (flags
& NDR_OUT
) {
5020 NDR_CHECK(ndr_push_array_uint8(ndr
, NDR_SCALARS
, r
->out
.buffer
, r
->in
.buf_size
));
5021 if (r
->out
.bytes_needed
== NULL
) {
5022 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
5024 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, *r
->out
.bytes_needed
));
5025 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
5027 return NDR_ERR_SUCCESS
;
5030 static enum ndr_err_code
ndr_pull_svcctl_QueryServiceConfig2W(struct ndr_pull
*ndr
, int flags
, struct svcctl_QueryServiceConfig2W
*r
)
5032 TALLOC_CTX
*_mem_save_handle_0
;
5033 TALLOC_CTX
*_mem_save_bytes_needed_0
;
5034 if (flags
& NDR_IN
) {
5035 ZERO_STRUCT(r
->out
);
5037 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
5038 NDR_PULL_ALLOC(ndr
, r
->in
.handle
);
5040 _mem_save_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
5041 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.handle
, LIBNDR_FLAG_REF_ALLOC
);
5042 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->in
.handle
));
5043 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_handle_0
, LIBNDR_FLAG_REF_ALLOC
);
5044 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.info_level
));
5045 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.buf_size
));
5046 NDR_PULL_ALLOC(ndr
, r
->out
.bytes_needed
);
5047 ZERO_STRUCTP(r
->out
.bytes_needed
);
5049 if (flags
& NDR_OUT
) {
5050 NDR_PULL_ALLOC_N(ndr
, r
->out
.buffer
, r
->in
.buf_size
);
5051 NDR_CHECK(ndr_pull_array_uint8(ndr
, NDR_SCALARS
, r
->out
.buffer
, r
->in
.buf_size
));
5052 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
5053 NDR_PULL_ALLOC(ndr
, r
->out
.bytes_needed
);
5055 _mem_save_bytes_needed_0
= NDR_PULL_GET_MEM_CTX(ndr
);
5056 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.bytes_needed
, LIBNDR_FLAG_REF_ALLOC
);
5057 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, r
->out
.bytes_needed
));
5058 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_bytes_needed_0
, LIBNDR_FLAG_REF_ALLOC
);
5059 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
5061 return NDR_ERR_SUCCESS
;
5064 _PUBLIC_
void ndr_print_svcctl_QueryServiceConfig2W(struct ndr_print
*ndr
, const char *name
, int flags
, const struct svcctl_QueryServiceConfig2W
*r
)
5066 ndr_print_struct(ndr
, name
, "svcctl_QueryServiceConfig2W");
5068 if (flags
& NDR_SET_VALUES
) {
5069 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
5071 if (flags
& NDR_IN
) {
5072 ndr_print_struct(ndr
, "in", "svcctl_QueryServiceConfig2W");
5074 ndr_print_ptr(ndr
, "handle", r
->in
.handle
);
5076 ndr_print_policy_handle(ndr
, "handle", r
->in
.handle
);
5078 ndr_print_uint32(ndr
, "info_level", r
->in
.info_level
);
5079 ndr_print_uint32(ndr
, "buf_size", r
->in
.buf_size
);
5082 if (flags
& NDR_OUT
) {
5083 ndr_print_struct(ndr
, "out", "svcctl_QueryServiceConfig2W");
5085 ndr_print_array_uint8(ndr
, "buffer", r
->out
.buffer
, r
->in
.buf_size
);
5086 ndr_print_ptr(ndr
, "bytes_needed", r
->out
.bytes_needed
);
5088 ndr_print_uint32(ndr
, "bytes_needed", *r
->out
.bytes_needed
);
5090 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
5096 static enum ndr_err_code
ndr_push_svcctl_QueryServiceStatusEx(struct ndr_push
*ndr
, int flags
, const struct svcctl_QueryServiceStatusEx
*r
)
5098 if (flags
& NDR_IN
) {
5099 if (r
->in
.handle
== NULL
) {
5100 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
5102 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->in
.handle
));
5103 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.info_level
));
5104 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.buf_size
));
5106 if (flags
& NDR_OUT
) {
5107 NDR_CHECK(ndr_push_array_uint8(ndr
, NDR_SCALARS
, r
->out
.buffer
, r
->in
.buf_size
));
5108 if (r
->out
.bytes_needed
== NULL
) {
5109 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
5111 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, *r
->out
.bytes_needed
));
5112 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
5114 return NDR_ERR_SUCCESS
;
5117 static enum ndr_err_code
ndr_pull_svcctl_QueryServiceStatusEx(struct ndr_pull
*ndr
, int flags
, struct svcctl_QueryServiceStatusEx
*r
)
5119 TALLOC_CTX
*_mem_save_handle_0
;
5120 TALLOC_CTX
*_mem_save_bytes_needed_0
;
5121 if (flags
& NDR_IN
) {
5122 ZERO_STRUCT(r
->out
);
5124 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
5125 NDR_PULL_ALLOC(ndr
, r
->in
.handle
);
5127 _mem_save_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
5128 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.handle
, LIBNDR_FLAG_REF_ALLOC
);
5129 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->in
.handle
));
5130 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_handle_0
, LIBNDR_FLAG_REF_ALLOC
);
5131 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.info_level
));
5132 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.buf_size
));
5133 NDR_PULL_ALLOC(ndr
, r
->out
.bytes_needed
);
5134 ZERO_STRUCTP(r
->out
.bytes_needed
);
5136 if (flags
& NDR_OUT
) {
5137 NDR_PULL_ALLOC_N(ndr
, r
->out
.buffer
, r
->in
.buf_size
);
5138 NDR_CHECK(ndr_pull_array_uint8(ndr
, NDR_SCALARS
, r
->out
.buffer
, r
->in
.buf_size
));
5139 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
5140 NDR_PULL_ALLOC(ndr
, r
->out
.bytes_needed
);
5142 _mem_save_bytes_needed_0
= NDR_PULL_GET_MEM_CTX(ndr
);
5143 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.bytes_needed
, LIBNDR_FLAG_REF_ALLOC
);
5144 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, r
->out
.bytes_needed
));
5145 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_bytes_needed_0
, LIBNDR_FLAG_REF_ALLOC
);
5146 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
5148 return NDR_ERR_SUCCESS
;
5151 _PUBLIC_
void ndr_print_svcctl_QueryServiceStatusEx(struct ndr_print
*ndr
, const char *name
, int flags
, const struct svcctl_QueryServiceStatusEx
*r
)
5153 ndr_print_struct(ndr
, name
, "svcctl_QueryServiceStatusEx");
5155 if (flags
& NDR_SET_VALUES
) {
5156 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
5158 if (flags
& NDR_IN
) {
5159 ndr_print_struct(ndr
, "in", "svcctl_QueryServiceStatusEx");
5161 ndr_print_ptr(ndr
, "handle", r
->in
.handle
);
5163 ndr_print_policy_handle(ndr
, "handle", r
->in
.handle
);
5165 ndr_print_uint32(ndr
, "info_level", r
->in
.info_level
);
5166 ndr_print_uint32(ndr
, "buf_size", r
->in
.buf_size
);
5169 if (flags
& NDR_OUT
) {
5170 ndr_print_struct(ndr
, "out", "svcctl_QueryServiceStatusEx");
5172 ndr_print_array_uint8(ndr
, "buffer", r
->out
.buffer
, r
->in
.buf_size
);
5173 ndr_print_ptr(ndr
, "bytes_needed", r
->out
.bytes_needed
);
5175 ndr_print_uint32(ndr
, "bytes_needed", *r
->out
.bytes_needed
);
5177 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
5183 static enum ndr_err_code
ndr_push_EnumServicesStatusExA(struct ndr_push
*ndr
, int flags
, const struct EnumServicesStatusExA
*r
)
5185 if (flags
& NDR_IN
) {
5186 if (r
->in
.scmanager
== NULL
) {
5187 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
5189 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->in
.scmanager
));
5190 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.info_level
));
5191 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.type
));
5192 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.state
));
5193 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.buf_size
));
5194 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.resume_handle
));
5195 if (r
->in
.resume_handle
) {
5196 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, *r
->in
.resume_handle
));
5199 if (flags
& NDR_OUT
) {
5200 NDR_CHECK(ndr_push_array_uint8(ndr
, NDR_SCALARS
, r
->out
.services
, r
->in
.buf_size
));
5201 if (r
->out
.bytes_needed
== NULL
) {
5202 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
5204 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, *r
->out
.bytes_needed
));
5205 if (r
->out
.service_returned
== NULL
) {
5206 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
5208 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, *r
->out
.service_returned
));
5209 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->out
.resume_handle
));
5210 if (r
->out
.resume_handle
) {
5211 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, *r
->out
.resume_handle
));
5213 if (r
->out
.group_name
== NULL
) {
5214 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
5216 NDR_CHECK(ndr_push_unique_ptr(ndr
, *r
->out
.group_name
));
5217 if (*r
->out
.group_name
) {
5218 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(*r
->out
.group_name
, CH_UTF16
)));
5219 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, 0));
5220 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(*r
->out
.group_name
, CH_UTF16
)));
5221 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
));
5223 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
5225 return NDR_ERR_SUCCESS
;
5228 static enum ndr_err_code
ndr_pull_EnumServicesStatusExA(struct ndr_pull
*ndr
, int flags
, struct EnumServicesStatusExA
*r
)
5230 uint32_t _ptr_resume_handle
;
5231 uint32_t _ptr_group_name
;
5232 TALLOC_CTX
*_mem_save_scmanager_0
;
5233 TALLOC_CTX
*_mem_save_bytes_needed_0
;
5234 TALLOC_CTX
*_mem_save_service_returned_0
;
5235 TALLOC_CTX
*_mem_save_resume_handle_0
;
5236 TALLOC_CTX
*_mem_save_group_name_0
;
5237 TALLOC_CTX
*_mem_save_group_name_1
;
5238 if (flags
& NDR_IN
) {
5239 ZERO_STRUCT(r
->out
);
5241 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
5242 NDR_PULL_ALLOC(ndr
, r
->in
.scmanager
);
5244 _mem_save_scmanager_0
= NDR_PULL_GET_MEM_CTX(ndr
);
5245 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.scmanager
, LIBNDR_FLAG_REF_ALLOC
);
5246 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->in
.scmanager
));
5247 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_scmanager_0
, LIBNDR_FLAG_REF_ALLOC
);
5248 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.info_level
));
5249 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.type
));
5250 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.state
));
5251 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.buf_size
));
5252 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_resume_handle
));
5253 if (_ptr_resume_handle
) {
5254 NDR_PULL_ALLOC(ndr
, r
->in
.resume_handle
);
5256 r
->in
.resume_handle
= NULL
;
5258 if (r
->in
.resume_handle
) {
5259 _mem_save_resume_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
5260 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.resume_handle
, 0);
5261 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, r
->in
.resume_handle
));
5262 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_resume_handle_0
, 0);
5264 NDR_PULL_ALLOC(ndr
, r
->out
.bytes_needed
);
5265 ZERO_STRUCTP(r
->out
.bytes_needed
);
5266 NDR_PULL_ALLOC(ndr
, r
->out
.service_returned
);
5267 ZERO_STRUCTP(r
->out
.service_returned
);
5268 NDR_PULL_ALLOC(ndr
, r
->out
.group_name
);
5269 ZERO_STRUCTP(r
->out
.group_name
);
5271 if (flags
& NDR_OUT
) {
5272 NDR_PULL_ALLOC_N(ndr
, r
->out
.services
, r
->in
.buf_size
);
5273 NDR_CHECK(ndr_pull_array_uint8(ndr
, NDR_SCALARS
, r
->out
.services
, r
->in
.buf_size
));
5274 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
5275 NDR_PULL_ALLOC(ndr
, r
->out
.bytes_needed
);
5277 _mem_save_bytes_needed_0
= NDR_PULL_GET_MEM_CTX(ndr
);
5278 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.bytes_needed
, LIBNDR_FLAG_REF_ALLOC
);
5279 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, r
->out
.bytes_needed
));
5280 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_bytes_needed_0
, LIBNDR_FLAG_REF_ALLOC
);
5281 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
5282 NDR_PULL_ALLOC(ndr
, r
->out
.service_returned
);
5284 _mem_save_service_returned_0
= NDR_PULL_GET_MEM_CTX(ndr
);
5285 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.service_returned
, LIBNDR_FLAG_REF_ALLOC
);
5286 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, r
->out
.service_returned
));
5287 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_service_returned_0
, LIBNDR_FLAG_REF_ALLOC
);
5288 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_resume_handle
));
5289 if (_ptr_resume_handle
) {
5290 NDR_PULL_ALLOC(ndr
, r
->out
.resume_handle
);
5292 r
->out
.resume_handle
= NULL
;
5294 if (r
->out
.resume_handle
) {
5295 _mem_save_resume_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
5296 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.resume_handle
, 0);
5297 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, r
->out
.resume_handle
));
5298 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_resume_handle_0
, 0);
5300 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
5301 NDR_PULL_ALLOC(ndr
, r
->out
.group_name
);
5303 _mem_save_group_name_0
= NDR_PULL_GET_MEM_CTX(ndr
);
5304 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.group_name
, LIBNDR_FLAG_REF_ALLOC
);
5305 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_group_name
));
5306 if (_ptr_group_name
) {
5307 NDR_PULL_ALLOC(ndr
, *r
->out
.group_name
);
5309 *r
->out
.group_name
= NULL
;
5311 if (*r
->out
.group_name
) {
5312 _mem_save_group_name_1
= NDR_PULL_GET_MEM_CTX(ndr
);
5313 NDR_PULL_SET_MEM_CTX(ndr
, *r
->out
.group_name
, 0);
5314 NDR_CHECK(ndr_pull_array_size(ndr
, r
->out
.group_name
));
5315 NDR_CHECK(ndr_pull_array_length(ndr
, r
->out
.group_name
));
5316 if (ndr_get_array_length(ndr
, r
->out
.group_name
) > ndr_get_array_size(ndr
, r
->out
.group_name
)) {
5317 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
));
5319 NDR_CHECK(ndr_check_string_terminator(ndr
, ndr_get_array_length(ndr
, r
->out
.group_name
), sizeof(uint16_t)));
5320 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
));
5321 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_group_name_1
, 0);
5323 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_group_name_0
, LIBNDR_FLAG_REF_ALLOC
);
5324 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
5326 return NDR_ERR_SUCCESS
;
5329 _PUBLIC_
void ndr_print_EnumServicesStatusExA(struct ndr_print
*ndr
, const char *name
, int flags
, const struct EnumServicesStatusExA
*r
)
5331 ndr_print_struct(ndr
, name
, "EnumServicesStatusExA");
5333 if (flags
& NDR_SET_VALUES
) {
5334 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
5336 if (flags
& NDR_IN
) {
5337 ndr_print_struct(ndr
, "in", "EnumServicesStatusExA");
5339 ndr_print_ptr(ndr
, "scmanager", r
->in
.scmanager
);
5341 ndr_print_policy_handle(ndr
, "scmanager", r
->in
.scmanager
);
5343 ndr_print_uint32(ndr
, "info_level", r
->in
.info_level
);
5344 ndr_print_uint32(ndr
, "type", r
->in
.type
);
5345 ndr_print_uint32(ndr
, "state", r
->in
.state
);
5346 ndr_print_uint32(ndr
, "buf_size", r
->in
.buf_size
);
5347 ndr_print_ptr(ndr
, "resume_handle", r
->in
.resume_handle
);
5349 if (r
->in
.resume_handle
) {
5350 ndr_print_uint32(ndr
, "resume_handle", *r
->in
.resume_handle
);
5355 if (flags
& NDR_OUT
) {
5356 ndr_print_struct(ndr
, "out", "EnumServicesStatusExA");
5358 ndr_print_array_uint8(ndr
, "services", r
->out
.services
, r
->in
.buf_size
);
5359 ndr_print_ptr(ndr
, "bytes_needed", r
->out
.bytes_needed
);
5361 ndr_print_uint32(ndr
, "bytes_needed", *r
->out
.bytes_needed
);
5363 ndr_print_ptr(ndr
, "service_returned", r
->out
.service_returned
);
5365 ndr_print_uint32(ndr
, "service_returned", *r
->out
.service_returned
);
5367 ndr_print_ptr(ndr
, "resume_handle", r
->out
.resume_handle
);
5369 if (r
->out
.resume_handle
) {
5370 ndr_print_uint32(ndr
, "resume_handle", *r
->out
.resume_handle
);
5373 ndr_print_ptr(ndr
, "group_name", r
->out
.group_name
);
5375 ndr_print_ptr(ndr
, "group_name", *r
->out
.group_name
);
5377 if (*r
->out
.group_name
) {
5378 ndr_print_string(ndr
, "group_name", *r
->out
.group_name
);
5382 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
5388 static enum ndr_err_code
ndr_push_EnumServicesStatusExW(struct ndr_push
*ndr
, int flags
, const struct EnumServicesStatusExW
*r
)
5390 if (flags
& NDR_IN
) {
5391 if (r
->in
.scmanager
== NULL
) {
5392 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
5394 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->in
.scmanager
));
5395 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.info_level
));
5396 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.type
));
5397 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.state
));
5398 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.buf_size
));
5399 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.resume_handle
));
5400 if (r
->in
.resume_handle
) {
5401 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, *r
->in
.resume_handle
));
5404 if (flags
& NDR_OUT
) {
5405 NDR_CHECK(ndr_push_array_uint8(ndr
, NDR_SCALARS
, r
->out
.services
, r
->in
.buf_size
));
5406 if (r
->out
.bytes_needed
== NULL
) {
5407 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
5409 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, *r
->out
.bytes_needed
));
5410 if (r
->out
.service_returned
== NULL
) {
5411 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
5413 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, *r
->out
.service_returned
));
5414 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->out
.resume_handle
));
5415 if (r
->out
.resume_handle
) {
5416 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, *r
->out
.resume_handle
));
5418 if (r
->out
.group_name
== NULL
) {
5419 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
5421 NDR_CHECK(ndr_push_unique_ptr(ndr
, *r
->out
.group_name
));
5422 if (*r
->out
.group_name
) {
5423 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(*r
->out
.group_name
, CH_UTF16
)));
5424 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, 0));
5425 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(*r
->out
.group_name
, CH_UTF16
)));
5426 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
));
5428 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
5430 return NDR_ERR_SUCCESS
;
5433 static enum ndr_err_code
ndr_pull_EnumServicesStatusExW(struct ndr_pull
*ndr
, int flags
, struct EnumServicesStatusExW
*r
)
5435 uint32_t _ptr_resume_handle
;
5436 uint32_t _ptr_group_name
;
5437 TALLOC_CTX
*_mem_save_scmanager_0
;
5438 TALLOC_CTX
*_mem_save_bytes_needed_0
;
5439 TALLOC_CTX
*_mem_save_service_returned_0
;
5440 TALLOC_CTX
*_mem_save_resume_handle_0
;
5441 TALLOC_CTX
*_mem_save_group_name_0
;
5442 TALLOC_CTX
*_mem_save_group_name_1
;
5443 if (flags
& NDR_IN
) {
5444 ZERO_STRUCT(r
->out
);
5446 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
5447 NDR_PULL_ALLOC(ndr
, r
->in
.scmanager
);
5449 _mem_save_scmanager_0
= NDR_PULL_GET_MEM_CTX(ndr
);
5450 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.scmanager
, LIBNDR_FLAG_REF_ALLOC
);
5451 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->in
.scmanager
));
5452 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_scmanager_0
, LIBNDR_FLAG_REF_ALLOC
);
5453 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.info_level
));
5454 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.type
));
5455 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.state
));
5456 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.buf_size
));
5457 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_resume_handle
));
5458 if (_ptr_resume_handle
) {
5459 NDR_PULL_ALLOC(ndr
, r
->in
.resume_handle
);
5461 r
->in
.resume_handle
= NULL
;
5463 if (r
->in
.resume_handle
) {
5464 _mem_save_resume_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
5465 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.resume_handle
, 0);
5466 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, r
->in
.resume_handle
));
5467 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_resume_handle_0
, 0);
5469 NDR_PULL_ALLOC(ndr
, r
->out
.bytes_needed
);
5470 ZERO_STRUCTP(r
->out
.bytes_needed
);
5471 NDR_PULL_ALLOC(ndr
, r
->out
.service_returned
);
5472 ZERO_STRUCTP(r
->out
.service_returned
);
5473 NDR_PULL_ALLOC(ndr
, r
->out
.group_name
);
5474 ZERO_STRUCTP(r
->out
.group_name
);
5476 if (flags
& NDR_OUT
) {
5477 NDR_PULL_ALLOC_N(ndr
, r
->out
.services
, r
->in
.buf_size
);
5478 NDR_CHECK(ndr_pull_array_uint8(ndr
, NDR_SCALARS
, r
->out
.services
, r
->in
.buf_size
));
5479 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
5480 NDR_PULL_ALLOC(ndr
, r
->out
.bytes_needed
);
5482 _mem_save_bytes_needed_0
= NDR_PULL_GET_MEM_CTX(ndr
);
5483 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.bytes_needed
, LIBNDR_FLAG_REF_ALLOC
);
5484 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, r
->out
.bytes_needed
));
5485 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_bytes_needed_0
, LIBNDR_FLAG_REF_ALLOC
);
5486 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
5487 NDR_PULL_ALLOC(ndr
, r
->out
.service_returned
);
5489 _mem_save_service_returned_0
= NDR_PULL_GET_MEM_CTX(ndr
);
5490 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.service_returned
, LIBNDR_FLAG_REF_ALLOC
);
5491 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, r
->out
.service_returned
));
5492 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_service_returned_0
, LIBNDR_FLAG_REF_ALLOC
);
5493 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_resume_handle
));
5494 if (_ptr_resume_handle
) {
5495 NDR_PULL_ALLOC(ndr
, r
->out
.resume_handle
);
5497 r
->out
.resume_handle
= NULL
;
5499 if (r
->out
.resume_handle
) {
5500 _mem_save_resume_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
5501 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.resume_handle
, 0);
5502 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, r
->out
.resume_handle
));
5503 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_resume_handle_0
, 0);
5505 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
5506 NDR_PULL_ALLOC(ndr
, r
->out
.group_name
);
5508 _mem_save_group_name_0
= NDR_PULL_GET_MEM_CTX(ndr
);
5509 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.group_name
, LIBNDR_FLAG_REF_ALLOC
);
5510 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_group_name
));
5511 if (_ptr_group_name
) {
5512 NDR_PULL_ALLOC(ndr
, *r
->out
.group_name
);
5514 *r
->out
.group_name
= NULL
;
5516 if (*r
->out
.group_name
) {
5517 _mem_save_group_name_1
= NDR_PULL_GET_MEM_CTX(ndr
);
5518 NDR_PULL_SET_MEM_CTX(ndr
, *r
->out
.group_name
, 0);
5519 NDR_CHECK(ndr_pull_array_size(ndr
, r
->out
.group_name
));
5520 NDR_CHECK(ndr_pull_array_length(ndr
, r
->out
.group_name
));
5521 if (ndr_get_array_length(ndr
, r
->out
.group_name
) > ndr_get_array_size(ndr
, r
->out
.group_name
)) {
5522 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
));
5524 NDR_CHECK(ndr_check_string_terminator(ndr
, ndr_get_array_length(ndr
, r
->out
.group_name
), sizeof(uint16_t)));
5525 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
));
5526 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_group_name_1
, 0);
5528 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_group_name_0
, LIBNDR_FLAG_REF_ALLOC
);
5529 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
5531 return NDR_ERR_SUCCESS
;
5534 _PUBLIC_
void ndr_print_EnumServicesStatusExW(struct ndr_print
*ndr
, const char *name
, int flags
, const struct EnumServicesStatusExW
*r
)
5536 ndr_print_struct(ndr
, name
, "EnumServicesStatusExW");
5538 if (flags
& NDR_SET_VALUES
) {
5539 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
5541 if (flags
& NDR_IN
) {
5542 ndr_print_struct(ndr
, "in", "EnumServicesStatusExW");
5544 ndr_print_ptr(ndr
, "scmanager", r
->in
.scmanager
);
5546 ndr_print_policy_handle(ndr
, "scmanager", r
->in
.scmanager
);
5548 ndr_print_uint32(ndr
, "info_level", r
->in
.info_level
);
5549 ndr_print_uint32(ndr
, "type", r
->in
.type
);
5550 ndr_print_uint32(ndr
, "state", r
->in
.state
);
5551 ndr_print_uint32(ndr
, "buf_size", r
->in
.buf_size
);
5552 ndr_print_ptr(ndr
, "resume_handle", r
->in
.resume_handle
);
5554 if (r
->in
.resume_handle
) {
5555 ndr_print_uint32(ndr
, "resume_handle", *r
->in
.resume_handle
);
5560 if (flags
& NDR_OUT
) {
5561 ndr_print_struct(ndr
, "out", "EnumServicesStatusExW");
5563 ndr_print_array_uint8(ndr
, "services", r
->out
.services
, r
->in
.buf_size
);
5564 ndr_print_ptr(ndr
, "bytes_needed", r
->out
.bytes_needed
);
5566 ndr_print_uint32(ndr
, "bytes_needed", *r
->out
.bytes_needed
);
5568 ndr_print_ptr(ndr
, "service_returned", r
->out
.service_returned
);
5570 ndr_print_uint32(ndr
, "service_returned", *r
->out
.service_returned
);
5572 ndr_print_ptr(ndr
, "resume_handle", r
->out
.resume_handle
);
5574 if (r
->out
.resume_handle
) {
5575 ndr_print_uint32(ndr
, "resume_handle", *r
->out
.resume_handle
);
5578 ndr_print_ptr(ndr
, "group_name", r
->out
.group_name
);
5580 ndr_print_ptr(ndr
, "group_name", *r
->out
.group_name
);
5582 if (*r
->out
.group_name
) {
5583 ndr_print_string(ndr
, "group_name", *r
->out
.group_name
);
5587 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
5593 static enum ndr_err_code
ndr_push_svcctl_SCSendTSMessage(struct ndr_push
*ndr
, int flags
, const struct svcctl_SCSendTSMessage
*r
)
5595 if (flags
& NDR_IN
) {
5597 if (flags
& NDR_OUT
) {
5598 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
5600 return NDR_ERR_SUCCESS
;
5603 static enum ndr_err_code
ndr_pull_svcctl_SCSendTSMessage(struct ndr_pull
*ndr
, int flags
, struct svcctl_SCSendTSMessage
*r
)
5605 if (flags
& NDR_IN
) {
5607 if (flags
& NDR_OUT
) {
5608 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
5610 return NDR_ERR_SUCCESS
;
5613 _PUBLIC_
void ndr_print_svcctl_SCSendTSMessage(struct ndr_print
*ndr
, const char *name
, int flags
, const struct svcctl_SCSendTSMessage
*r
)
5615 ndr_print_struct(ndr
, name
, "svcctl_SCSendTSMessage");
5617 if (flags
& NDR_SET_VALUES
) {
5618 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
5620 if (flags
& NDR_IN
) {
5621 ndr_print_struct(ndr
, "in", "svcctl_SCSendTSMessage");
5625 if (flags
& NDR_OUT
) {
5626 ndr_print_struct(ndr
, "out", "svcctl_SCSendTSMessage");
5628 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
5634 static const struct ndr_interface_call svcctl_calls
[] = {
5636 "svcctl_CloseServiceHandle",
5637 sizeof(struct svcctl_CloseServiceHandle
),
5638 (ndr_push_flags_fn_t
) ndr_push_svcctl_CloseServiceHandle
,
5639 (ndr_pull_flags_fn_t
) ndr_pull_svcctl_CloseServiceHandle
,
5640 (ndr_print_function_t
) ndr_print_svcctl_CloseServiceHandle
,
5644 "svcctl_ControlService",
5645 sizeof(struct svcctl_ControlService
),
5646 (ndr_push_flags_fn_t
) ndr_push_svcctl_ControlService
,
5647 (ndr_pull_flags_fn_t
) ndr_pull_svcctl_ControlService
,
5648 (ndr_print_function_t
) ndr_print_svcctl_ControlService
,
5652 "svcctl_DeleteService",
5653 sizeof(struct svcctl_DeleteService
),
5654 (ndr_push_flags_fn_t
) ndr_push_svcctl_DeleteService
,
5655 (ndr_pull_flags_fn_t
) ndr_pull_svcctl_DeleteService
,
5656 (ndr_print_function_t
) ndr_print_svcctl_DeleteService
,
5660 "svcctl_LockServiceDatabase",
5661 sizeof(struct svcctl_LockServiceDatabase
),
5662 (ndr_push_flags_fn_t
) ndr_push_svcctl_LockServiceDatabase
,
5663 (ndr_pull_flags_fn_t
) ndr_pull_svcctl_LockServiceDatabase
,
5664 (ndr_print_function_t
) ndr_print_svcctl_LockServiceDatabase
,
5668 "svcctl_QueryServiceObjectSecurity",
5669 sizeof(struct svcctl_QueryServiceObjectSecurity
),
5670 (ndr_push_flags_fn_t
) ndr_push_svcctl_QueryServiceObjectSecurity
,
5671 (ndr_pull_flags_fn_t
) ndr_pull_svcctl_QueryServiceObjectSecurity
,
5672 (ndr_print_function_t
) ndr_print_svcctl_QueryServiceObjectSecurity
,
5676 "svcctl_SetServiceObjectSecurity",
5677 sizeof(struct svcctl_SetServiceObjectSecurity
),
5678 (ndr_push_flags_fn_t
) ndr_push_svcctl_SetServiceObjectSecurity
,
5679 (ndr_pull_flags_fn_t
) ndr_pull_svcctl_SetServiceObjectSecurity
,
5680 (ndr_print_function_t
) ndr_print_svcctl_SetServiceObjectSecurity
,
5684 "svcctl_QueryServiceStatus",
5685 sizeof(struct svcctl_QueryServiceStatus
),
5686 (ndr_push_flags_fn_t
) ndr_push_svcctl_QueryServiceStatus
,
5687 (ndr_pull_flags_fn_t
) ndr_pull_svcctl_QueryServiceStatus
,
5688 (ndr_print_function_t
) ndr_print_svcctl_QueryServiceStatus
,
5692 "svcctl_SetServiceStatus",
5693 sizeof(struct svcctl_SetServiceStatus
),
5694 (ndr_push_flags_fn_t
) ndr_push_svcctl_SetServiceStatus
,
5695 (ndr_pull_flags_fn_t
) ndr_pull_svcctl_SetServiceStatus
,
5696 (ndr_print_function_t
) ndr_print_svcctl_SetServiceStatus
,
5700 "svcctl_UnlockServiceDatabase",
5701 sizeof(struct svcctl_UnlockServiceDatabase
),
5702 (ndr_push_flags_fn_t
) ndr_push_svcctl_UnlockServiceDatabase
,
5703 (ndr_pull_flags_fn_t
) ndr_pull_svcctl_UnlockServiceDatabase
,
5704 (ndr_print_function_t
) ndr_print_svcctl_UnlockServiceDatabase
,
5708 "svcctl_NotifyBootConfigStatus",
5709 sizeof(struct svcctl_NotifyBootConfigStatus
),
5710 (ndr_push_flags_fn_t
) ndr_push_svcctl_NotifyBootConfigStatus
,
5711 (ndr_pull_flags_fn_t
) ndr_pull_svcctl_NotifyBootConfigStatus
,
5712 (ndr_print_function_t
) ndr_print_svcctl_NotifyBootConfigStatus
,
5716 "svcctl_SCSetServiceBitsW",
5717 sizeof(struct svcctl_SCSetServiceBitsW
),
5718 (ndr_push_flags_fn_t
) ndr_push_svcctl_SCSetServiceBitsW
,
5719 (ndr_pull_flags_fn_t
) ndr_pull_svcctl_SCSetServiceBitsW
,
5720 (ndr_print_function_t
) ndr_print_svcctl_SCSetServiceBitsW
,
5724 "svcctl_ChangeServiceConfigW",
5725 sizeof(struct svcctl_ChangeServiceConfigW
),
5726 (ndr_push_flags_fn_t
) ndr_push_svcctl_ChangeServiceConfigW
,
5727 (ndr_pull_flags_fn_t
) ndr_pull_svcctl_ChangeServiceConfigW
,
5728 (ndr_print_function_t
) ndr_print_svcctl_ChangeServiceConfigW
,
5732 "svcctl_CreateServiceW",
5733 sizeof(struct svcctl_CreateServiceW
),
5734 (ndr_push_flags_fn_t
) ndr_push_svcctl_CreateServiceW
,
5735 (ndr_pull_flags_fn_t
) ndr_pull_svcctl_CreateServiceW
,
5736 (ndr_print_function_t
) ndr_print_svcctl_CreateServiceW
,
5740 "svcctl_EnumDependentServicesW",
5741 sizeof(struct svcctl_EnumDependentServicesW
),
5742 (ndr_push_flags_fn_t
) ndr_push_svcctl_EnumDependentServicesW
,
5743 (ndr_pull_flags_fn_t
) ndr_pull_svcctl_EnumDependentServicesW
,
5744 (ndr_print_function_t
) ndr_print_svcctl_EnumDependentServicesW
,
5748 "svcctl_EnumServicesStatusW",
5749 sizeof(struct svcctl_EnumServicesStatusW
),
5750 (ndr_push_flags_fn_t
) ndr_push_svcctl_EnumServicesStatusW
,
5751 (ndr_pull_flags_fn_t
) ndr_pull_svcctl_EnumServicesStatusW
,
5752 (ndr_print_function_t
) ndr_print_svcctl_EnumServicesStatusW
,
5756 "svcctl_OpenSCManagerW",
5757 sizeof(struct svcctl_OpenSCManagerW
),
5758 (ndr_push_flags_fn_t
) ndr_push_svcctl_OpenSCManagerW
,
5759 (ndr_pull_flags_fn_t
) ndr_pull_svcctl_OpenSCManagerW
,
5760 (ndr_print_function_t
) ndr_print_svcctl_OpenSCManagerW
,
5764 "svcctl_OpenServiceW",
5765 sizeof(struct svcctl_OpenServiceW
),
5766 (ndr_push_flags_fn_t
) ndr_push_svcctl_OpenServiceW
,
5767 (ndr_pull_flags_fn_t
) ndr_pull_svcctl_OpenServiceW
,
5768 (ndr_print_function_t
) ndr_print_svcctl_OpenServiceW
,
5772 "svcctl_QueryServiceConfigW",
5773 sizeof(struct svcctl_QueryServiceConfigW
),
5774 (ndr_push_flags_fn_t
) ndr_push_svcctl_QueryServiceConfigW
,
5775 (ndr_pull_flags_fn_t
) ndr_pull_svcctl_QueryServiceConfigW
,
5776 (ndr_print_function_t
) ndr_print_svcctl_QueryServiceConfigW
,
5780 "svcctl_QueryServiceLockStatusW",
5781 sizeof(struct svcctl_QueryServiceLockStatusW
),
5782 (ndr_push_flags_fn_t
) ndr_push_svcctl_QueryServiceLockStatusW
,
5783 (ndr_pull_flags_fn_t
) ndr_pull_svcctl_QueryServiceLockStatusW
,
5784 (ndr_print_function_t
) ndr_print_svcctl_QueryServiceLockStatusW
,
5788 "svcctl_StartServiceW",
5789 sizeof(struct svcctl_StartServiceW
),
5790 (ndr_push_flags_fn_t
) ndr_push_svcctl_StartServiceW
,
5791 (ndr_pull_flags_fn_t
) ndr_pull_svcctl_StartServiceW
,
5792 (ndr_print_function_t
) ndr_print_svcctl_StartServiceW
,
5796 "svcctl_GetServiceDisplayNameW",
5797 sizeof(struct svcctl_GetServiceDisplayNameW
),
5798 (ndr_push_flags_fn_t
) ndr_push_svcctl_GetServiceDisplayNameW
,
5799 (ndr_pull_flags_fn_t
) ndr_pull_svcctl_GetServiceDisplayNameW
,
5800 (ndr_print_function_t
) ndr_print_svcctl_GetServiceDisplayNameW
,
5804 "svcctl_GetServiceKeyNameW",
5805 sizeof(struct svcctl_GetServiceKeyNameW
),
5806 (ndr_push_flags_fn_t
) ndr_push_svcctl_GetServiceKeyNameW
,
5807 (ndr_pull_flags_fn_t
) ndr_pull_svcctl_GetServiceKeyNameW
,
5808 (ndr_print_function_t
) ndr_print_svcctl_GetServiceKeyNameW
,
5812 "svcctl_SCSetServiceBitsA",
5813 sizeof(struct svcctl_SCSetServiceBitsA
),
5814 (ndr_push_flags_fn_t
) ndr_push_svcctl_SCSetServiceBitsA
,
5815 (ndr_pull_flags_fn_t
) ndr_pull_svcctl_SCSetServiceBitsA
,
5816 (ndr_print_function_t
) ndr_print_svcctl_SCSetServiceBitsA
,
5820 "svcctl_ChangeServiceConfigA",
5821 sizeof(struct svcctl_ChangeServiceConfigA
),
5822 (ndr_push_flags_fn_t
) ndr_push_svcctl_ChangeServiceConfigA
,
5823 (ndr_pull_flags_fn_t
) ndr_pull_svcctl_ChangeServiceConfigA
,
5824 (ndr_print_function_t
) ndr_print_svcctl_ChangeServiceConfigA
,
5828 "svcctl_CreateServiceA",
5829 sizeof(struct svcctl_CreateServiceA
),
5830 (ndr_push_flags_fn_t
) ndr_push_svcctl_CreateServiceA
,
5831 (ndr_pull_flags_fn_t
) ndr_pull_svcctl_CreateServiceA
,
5832 (ndr_print_function_t
) ndr_print_svcctl_CreateServiceA
,
5836 "svcctl_EnumDependentServicesA",
5837 sizeof(struct svcctl_EnumDependentServicesA
),
5838 (ndr_push_flags_fn_t
) ndr_push_svcctl_EnumDependentServicesA
,
5839 (ndr_pull_flags_fn_t
) ndr_pull_svcctl_EnumDependentServicesA
,
5840 (ndr_print_function_t
) ndr_print_svcctl_EnumDependentServicesA
,
5844 "svcctl_EnumServicesStatusA",
5845 sizeof(struct svcctl_EnumServicesStatusA
),
5846 (ndr_push_flags_fn_t
) ndr_push_svcctl_EnumServicesStatusA
,
5847 (ndr_pull_flags_fn_t
) ndr_pull_svcctl_EnumServicesStatusA
,
5848 (ndr_print_function_t
) ndr_print_svcctl_EnumServicesStatusA
,
5852 "svcctl_OpenSCManagerA",
5853 sizeof(struct svcctl_OpenSCManagerA
),
5854 (ndr_push_flags_fn_t
) ndr_push_svcctl_OpenSCManagerA
,
5855 (ndr_pull_flags_fn_t
) ndr_pull_svcctl_OpenSCManagerA
,
5856 (ndr_print_function_t
) ndr_print_svcctl_OpenSCManagerA
,
5860 "svcctl_OpenServiceA",
5861 sizeof(struct svcctl_OpenServiceA
),
5862 (ndr_push_flags_fn_t
) ndr_push_svcctl_OpenServiceA
,
5863 (ndr_pull_flags_fn_t
) ndr_pull_svcctl_OpenServiceA
,
5864 (ndr_print_function_t
) ndr_print_svcctl_OpenServiceA
,
5868 "svcctl_QueryServiceConfigA",
5869 sizeof(struct svcctl_QueryServiceConfigA
),
5870 (ndr_push_flags_fn_t
) ndr_push_svcctl_QueryServiceConfigA
,
5871 (ndr_pull_flags_fn_t
) ndr_pull_svcctl_QueryServiceConfigA
,
5872 (ndr_print_function_t
) ndr_print_svcctl_QueryServiceConfigA
,
5876 "svcctl_QueryServiceLockStatusA",
5877 sizeof(struct svcctl_QueryServiceLockStatusA
),
5878 (ndr_push_flags_fn_t
) ndr_push_svcctl_QueryServiceLockStatusA
,
5879 (ndr_pull_flags_fn_t
) ndr_pull_svcctl_QueryServiceLockStatusA
,
5880 (ndr_print_function_t
) ndr_print_svcctl_QueryServiceLockStatusA
,
5884 "svcctl_StartServiceA",
5885 sizeof(struct svcctl_StartServiceA
),
5886 (ndr_push_flags_fn_t
) ndr_push_svcctl_StartServiceA
,
5887 (ndr_pull_flags_fn_t
) ndr_pull_svcctl_StartServiceA
,
5888 (ndr_print_function_t
) ndr_print_svcctl_StartServiceA
,
5892 "svcctl_GetServiceDisplayNameA",
5893 sizeof(struct svcctl_GetServiceDisplayNameA
),
5894 (ndr_push_flags_fn_t
) ndr_push_svcctl_GetServiceDisplayNameA
,
5895 (ndr_pull_flags_fn_t
) ndr_pull_svcctl_GetServiceDisplayNameA
,
5896 (ndr_print_function_t
) ndr_print_svcctl_GetServiceDisplayNameA
,
5900 "svcctl_GetServiceKeyNameA",
5901 sizeof(struct svcctl_GetServiceKeyNameA
),
5902 (ndr_push_flags_fn_t
) ndr_push_svcctl_GetServiceKeyNameA
,
5903 (ndr_pull_flags_fn_t
) ndr_pull_svcctl_GetServiceKeyNameA
,
5904 (ndr_print_function_t
) ndr_print_svcctl_GetServiceKeyNameA
,
5908 "svcctl_GetCurrentGroupeStateW",
5909 sizeof(struct svcctl_GetCurrentGroupeStateW
),
5910 (ndr_push_flags_fn_t
) ndr_push_svcctl_GetCurrentGroupeStateW
,
5911 (ndr_pull_flags_fn_t
) ndr_pull_svcctl_GetCurrentGroupeStateW
,
5912 (ndr_print_function_t
) ndr_print_svcctl_GetCurrentGroupeStateW
,
5916 "svcctl_EnumServiceGroupW",
5917 sizeof(struct svcctl_EnumServiceGroupW
),
5918 (ndr_push_flags_fn_t
) ndr_push_svcctl_EnumServiceGroupW
,
5919 (ndr_pull_flags_fn_t
) ndr_pull_svcctl_EnumServiceGroupW
,
5920 (ndr_print_function_t
) ndr_print_svcctl_EnumServiceGroupW
,
5924 "svcctl_ChangeServiceConfig2A",
5925 sizeof(struct svcctl_ChangeServiceConfig2A
),
5926 (ndr_push_flags_fn_t
) ndr_push_svcctl_ChangeServiceConfig2A
,
5927 (ndr_pull_flags_fn_t
) ndr_pull_svcctl_ChangeServiceConfig2A
,
5928 (ndr_print_function_t
) ndr_print_svcctl_ChangeServiceConfig2A
,
5932 "svcctl_ChangeServiceConfig2W",
5933 sizeof(struct svcctl_ChangeServiceConfig2W
),
5934 (ndr_push_flags_fn_t
) ndr_push_svcctl_ChangeServiceConfig2W
,
5935 (ndr_pull_flags_fn_t
) ndr_pull_svcctl_ChangeServiceConfig2W
,
5936 (ndr_print_function_t
) ndr_print_svcctl_ChangeServiceConfig2W
,
5940 "svcctl_QueryServiceConfig2A",
5941 sizeof(struct svcctl_QueryServiceConfig2A
),
5942 (ndr_push_flags_fn_t
) ndr_push_svcctl_QueryServiceConfig2A
,
5943 (ndr_pull_flags_fn_t
) ndr_pull_svcctl_QueryServiceConfig2A
,
5944 (ndr_print_function_t
) ndr_print_svcctl_QueryServiceConfig2A
,
5948 "svcctl_QueryServiceConfig2W",
5949 sizeof(struct svcctl_QueryServiceConfig2W
),
5950 (ndr_push_flags_fn_t
) ndr_push_svcctl_QueryServiceConfig2W
,
5951 (ndr_pull_flags_fn_t
) ndr_pull_svcctl_QueryServiceConfig2W
,
5952 (ndr_print_function_t
) ndr_print_svcctl_QueryServiceConfig2W
,
5956 "svcctl_QueryServiceStatusEx",
5957 sizeof(struct svcctl_QueryServiceStatusEx
),
5958 (ndr_push_flags_fn_t
) ndr_push_svcctl_QueryServiceStatusEx
,
5959 (ndr_pull_flags_fn_t
) ndr_pull_svcctl_QueryServiceStatusEx
,
5960 (ndr_print_function_t
) ndr_print_svcctl_QueryServiceStatusEx
,
5964 "EnumServicesStatusExA",
5965 sizeof(struct EnumServicesStatusExA
),
5966 (ndr_push_flags_fn_t
) ndr_push_EnumServicesStatusExA
,
5967 (ndr_pull_flags_fn_t
) ndr_pull_EnumServicesStatusExA
,
5968 (ndr_print_function_t
) ndr_print_EnumServicesStatusExA
,
5972 "EnumServicesStatusExW",
5973 sizeof(struct EnumServicesStatusExW
),
5974 (ndr_push_flags_fn_t
) ndr_push_EnumServicesStatusExW
,
5975 (ndr_pull_flags_fn_t
) ndr_pull_EnumServicesStatusExW
,
5976 (ndr_print_function_t
) ndr_print_EnumServicesStatusExW
,
5980 "svcctl_SCSendTSMessage",
5981 sizeof(struct svcctl_SCSendTSMessage
),
5982 (ndr_push_flags_fn_t
) ndr_push_svcctl_SCSendTSMessage
,
5983 (ndr_pull_flags_fn_t
) ndr_pull_svcctl_SCSendTSMessage
,
5984 (ndr_print_function_t
) ndr_print_svcctl_SCSendTSMessage
,
5987 { NULL
, 0, NULL
, NULL
, NULL
, false }
5990 static const char * const svcctl_endpoint_strings
[] = {
5991 "ncacn_np:[\\pipe\\svcctl]",
5995 static const struct ndr_interface_string_array svcctl_endpoints
= {
5997 .names
= svcctl_endpoint_strings
6000 static const char * const svcctl_authservice_strings
[] = {
6004 static const struct ndr_interface_string_array svcctl_authservices
= {
6006 .names
= svcctl_authservice_strings
6010 const struct ndr_interface_table ndr_table_svcctl
= {
6013 {0x367abb81,0x9844,0x35f1,{0xad,0x32},{0x98,0xf0,0x38,0x00,0x10,0x03}},
6016 .helpstring
= NDR_SVCCTL_HELPSTRING
,
6018 .calls
= svcctl_calls
,
6019 .endpoints
= &svcctl_endpoints
,
6020 .authservices
= &svcctl_authservices