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_MgrAccessMask(struct ndr_push
*ndr
, int ndr_flags
, uint32_t r
)
300 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
));
301 return NDR_ERR_SUCCESS
;
304 static enum ndr_err_code
ndr_pull_svcctl_MgrAccessMask(struct ndr_pull
*ndr
, int ndr_flags
, uint32_t *r
)
307 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &v
));
309 return NDR_ERR_SUCCESS
;
312 _PUBLIC_
void ndr_print_svcctl_MgrAccessMask(struct ndr_print
*ndr
, const char *name
, uint32_t r
)
314 ndr_print_uint32(ndr
, name
, r
);
316 ndr_print_bitmap_flag(ndr
, sizeof(uint32_t), "SC_RIGHT_MGR_CONNECT", SC_RIGHT_MGR_CONNECT
, r
);
317 ndr_print_bitmap_flag(ndr
, sizeof(uint32_t), "SC_RIGHT_MGR_CREATE_SERVICE", SC_RIGHT_MGR_CREATE_SERVICE
, r
);
318 ndr_print_bitmap_flag(ndr
, sizeof(uint32_t), "SC_RIGHT_MGR_ENUMERATE_SERVICE", SC_RIGHT_MGR_ENUMERATE_SERVICE
, r
);
319 ndr_print_bitmap_flag(ndr
, sizeof(uint32_t), "SC_RIGHT_MGR_LOCK", SC_RIGHT_MGR_LOCK
, r
);
320 ndr_print_bitmap_flag(ndr
, sizeof(uint32_t), "SC_RIGHT_MGR_QUERY_LOCK_STATUS", SC_RIGHT_MGR_QUERY_LOCK_STATUS
, r
);
321 ndr_print_bitmap_flag(ndr
, sizeof(uint32_t), "SC_RIGHT_MGR_MODIFY_BOOT_CONFIG", SC_RIGHT_MGR_MODIFY_BOOT_CONFIG
, r
);
325 static enum ndr_err_code
ndr_push_svcctl_ServiceAccessMask(struct ndr_push
*ndr
, int ndr_flags
, uint32_t r
)
327 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
));
328 return NDR_ERR_SUCCESS
;
331 static enum ndr_err_code
ndr_pull_svcctl_ServiceAccessMask(struct ndr_pull
*ndr
, int ndr_flags
, uint32_t *r
)
334 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &v
));
336 return NDR_ERR_SUCCESS
;
339 _PUBLIC_
void ndr_print_svcctl_ServiceAccessMask(struct ndr_print
*ndr
, const char *name
, uint32_t r
)
341 ndr_print_uint32(ndr
, name
, r
);
343 ndr_print_bitmap_flag(ndr
, sizeof(uint32_t), "SC_RIGHT_SVC_QUERY_CONFIG", SC_RIGHT_SVC_QUERY_CONFIG
, r
);
344 ndr_print_bitmap_flag(ndr
, sizeof(uint32_t), "SC_RIGHT_SVC_CHANGE_CONFIG", SC_RIGHT_SVC_CHANGE_CONFIG
, r
);
345 ndr_print_bitmap_flag(ndr
, sizeof(uint32_t), "SC_RIGHT_SVC_QUERY_STATUS", SC_RIGHT_SVC_QUERY_STATUS
, r
);
346 ndr_print_bitmap_flag(ndr
, sizeof(uint32_t), "SC_RIGHT_SVC_ENUMERATE_DEPENDENTS", SC_RIGHT_SVC_ENUMERATE_DEPENDENTS
, r
);
347 ndr_print_bitmap_flag(ndr
, sizeof(uint32_t), "SC_RIGHT_SVC_START", SC_RIGHT_SVC_START
, r
);
348 ndr_print_bitmap_flag(ndr
, sizeof(uint32_t), "SC_RIGHT_SVC_STOP", SC_RIGHT_SVC_STOP
, r
);
349 ndr_print_bitmap_flag(ndr
, sizeof(uint32_t), "SC_RIGHT_SVC_PAUSE_CONTINUE", SC_RIGHT_SVC_PAUSE_CONTINUE
, r
);
350 ndr_print_bitmap_flag(ndr
, sizeof(uint32_t), "SC_RIGHT_SVC_INTERROGATE", SC_RIGHT_SVC_INTERROGATE
, r
);
351 ndr_print_bitmap_flag(ndr
, sizeof(uint32_t), "SC_RIGHT_SVC_USER_DEFINED_CONTROL", SC_RIGHT_SVC_USER_DEFINED_CONTROL
, r
);
355 _PUBLIC_
enum ndr_err_code
ndr_push_QUERY_SERVICE_CONFIG(struct ndr_push
*ndr
, int ndr_flags
, const struct QUERY_SERVICE_CONFIG
*r
)
357 if (ndr_flags
& NDR_SCALARS
) {
358 NDR_CHECK(ndr_push_align(ndr
, 4));
359 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->service_type
));
360 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->start_type
));
361 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->error_control
));
362 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->executablepath
));
363 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->loadordergroup
));
364 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->tag_id
));
365 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->dependencies
));
366 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->startname
));
367 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->displayname
));
369 if (ndr_flags
& NDR_BUFFERS
) {
370 if (r
->executablepath
) {
371 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->executablepath
, CH_UTF16
)));
372 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, 0));
373 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->executablepath
, CH_UTF16
)));
374 NDR_CHECK(ndr_push_charset(ndr
, NDR_SCALARS
, r
->executablepath
, ndr_charset_length(r
->executablepath
, CH_UTF16
), sizeof(uint16_t), CH_UTF16
));
376 if (r
->loadordergroup
) {
377 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->loadordergroup
, CH_UTF16
)));
378 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, 0));
379 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->loadordergroup
, CH_UTF16
)));
380 NDR_CHECK(ndr_push_charset(ndr
, NDR_SCALARS
, r
->loadordergroup
, ndr_charset_length(r
->loadordergroup
, CH_UTF16
), sizeof(uint16_t), CH_UTF16
));
382 if (r
->dependencies
) {
383 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->dependencies
, CH_UTF16
)));
384 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, 0));
385 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->dependencies
, CH_UTF16
)));
386 NDR_CHECK(ndr_push_charset(ndr
, NDR_SCALARS
, r
->dependencies
, ndr_charset_length(r
->dependencies
, CH_UTF16
), sizeof(uint16_t), CH_UTF16
));
389 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->startname
, CH_UTF16
)));
390 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, 0));
391 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->startname
, CH_UTF16
)));
392 NDR_CHECK(ndr_push_charset(ndr
, NDR_SCALARS
, r
->startname
, ndr_charset_length(r
->startname
, CH_UTF16
), sizeof(uint16_t), CH_UTF16
));
394 if (r
->displayname
) {
395 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->displayname
, CH_UTF16
)));
396 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, 0));
397 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->displayname
, CH_UTF16
)));
398 NDR_CHECK(ndr_push_charset(ndr
, NDR_SCALARS
, r
->displayname
, ndr_charset_length(r
->displayname
, CH_UTF16
), sizeof(uint16_t), CH_UTF16
));
401 return NDR_ERR_SUCCESS
;
404 _PUBLIC_
enum ndr_err_code
ndr_pull_QUERY_SERVICE_CONFIG(struct ndr_pull
*ndr
, int ndr_flags
, struct QUERY_SERVICE_CONFIG
*r
)
406 uint32_t _ptr_executablepath
;
407 TALLOC_CTX
*_mem_save_executablepath_0
;
408 uint32_t _ptr_loadordergroup
;
409 TALLOC_CTX
*_mem_save_loadordergroup_0
;
410 uint32_t _ptr_dependencies
;
411 TALLOC_CTX
*_mem_save_dependencies_0
;
412 uint32_t _ptr_startname
;
413 TALLOC_CTX
*_mem_save_startname_0
;
414 uint32_t _ptr_displayname
;
415 TALLOC_CTX
*_mem_save_displayname_0
;
416 if (ndr_flags
& NDR_SCALARS
) {
417 NDR_CHECK(ndr_pull_align(ndr
, 4));
418 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->service_type
));
419 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->start_type
));
420 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->error_control
));
421 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_executablepath
));
422 if (_ptr_executablepath
) {
423 NDR_PULL_ALLOC(ndr
, r
->executablepath
);
425 r
->executablepath
= NULL
;
427 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_loadordergroup
));
428 if (_ptr_loadordergroup
) {
429 NDR_PULL_ALLOC(ndr
, r
->loadordergroup
);
431 r
->loadordergroup
= NULL
;
433 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->tag_id
));
434 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_dependencies
));
435 if (_ptr_dependencies
) {
436 NDR_PULL_ALLOC(ndr
, r
->dependencies
);
438 r
->dependencies
= NULL
;
440 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_startname
));
441 if (_ptr_startname
) {
442 NDR_PULL_ALLOC(ndr
, r
->startname
);
446 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_displayname
));
447 if (_ptr_displayname
) {
448 NDR_PULL_ALLOC(ndr
, r
->displayname
);
450 r
->displayname
= NULL
;
453 if (ndr_flags
& NDR_BUFFERS
) {
454 if (r
->executablepath
) {
455 _mem_save_executablepath_0
= NDR_PULL_GET_MEM_CTX(ndr
);
456 NDR_PULL_SET_MEM_CTX(ndr
, r
->executablepath
, 0);
457 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->executablepath
));
458 NDR_CHECK(ndr_pull_array_length(ndr
, &r
->executablepath
));
459 if (ndr_get_array_length(ndr
, &r
->executablepath
) > ndr_get_array_size(ndr
, &r
->executablepath
)) {
460 return ndr_pull_error(ndr
, NDR_ERR_ARRAY_SIZE
, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr
, &r
->executablepath
), ndr_get_array_length(ndr
, &r
->executablepath
));
462 NDR_CHECK(ndr_check_string_terminator(ndr
, ndr_get_array_length(ndr
, &r
->executablepath
), sizeof(uint16_t)));
463 NDR_CHECK(ndr_pull_charset(ndr
, NDR_SCALARS
, &r
->executablepath
, ndr_get_array_length(ndr
, &r
->executablepath
), sizeof(uint16_t), CH_UTF16
));
464 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_executablepath_0
, 0);
466 if (r
->loadordergroup
) {
467 _mem_save_loadordergroup_0
= NDR_PULL_GET_MEM_CTX(ndr
);
468 NDR_PULL_SET_MEM_CTX(ndr
, r
->loadordergroup
, 0);
469 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->loadordergroup
));
470 NDR_CHECK(ndr_pull_array_length(ndr
, &r
->loadordergroup
));
471 if (ndr_get_array_length(ndr
, &r
->loadordergroup
) > ndr_get_array_size(ndr
, &r
->loadordergroup
)) {
472 return ndr_pull_error(ndr
, NDR_ERR_ARRAY_SIZE
, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr
, &r
->loadordergroup
), ndr_get_array_length(ndr
, &r
->loadordergroup
));
474 NDR_CHECK(ndr_check_string_terminator(ndr
, ndr_get_array_length(ndr
, &r
->loadordergroup
), sizeof(uint16_t)));
475 NDR_CHECK(ndr_pull_charset(ndr
, NDR_SCALARS
, &r
->loadordergroup
, ndr_get_array_length(ndr
, &r
->loadordergroup
), sizeof(uint16_t), CH_UTF16
));
476 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_loadordergroup_0
, 0);
478 if (r
->dependencies
) {
479 _mem_save_dependencies_0
= NDR_PULL_GET_MEM_CTX(ndr
);
480 NDR_PULL_SET_MEM_CTX(ndr
, r
->dependencies
, 0);
481 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->dependencies
));
482 NDR_CHECK(ndr_pull_array_length(ndr
, &r
->dependencies
));
483 if (ndr_get_array_length(ndr
, &r
->dependencies
) > ndr_get_array_size(ndr
, &r
->dependencies
)) {
484 return ndr_pull_error(ndr
, NDR_ERR_ARRAY_SIZE
, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr
, &r
->dependencies
), ndr_get_array_length(ndr
, &r
->dependencies
));
486 NDR_CHECK(ndr_check_string_terminator(ndr
, ndr_get_array_length(ndr
, &r
->dependencies
), sizeof(uint16_t)));
487 NDR_CHECK(ndr_pull_charset(ndr
, NDR_SCALARS
, &r
->dependencies
, ndr_get_array_length(ndr
, &r
->dependencies
), sizeof(uint16_t), CH_UTF16
));
488 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_dependencies_0
, 0);
491 _mem_save_startname_0
= NDR_PULL_GET_MEM_CTX(ndr
);
492 NDR_PULL_SET_MEM_CTX(ndr
, r
->startname
, 0);
493 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->startname
));
494 NDR_CHECK(ndr_pull_array_length(ndr
, &r
->startname
));
495 if (ndr_get_array_length(ndr
, &r
->startname
) > ndr_get_array_size(ndr
, &r
->startname
)) {
496 return ndr_pull_error(ndr
, NDR_ERR_ARRAY_SIZE
, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr
, &r
->startname
), ndr_get_array_length(ndr
, &r
->startname
));
498 NDR_CHECK(ndr_check_string_terminator(ndr
, ndr_get_array_length(ndr
, &r
->startname
), sizeof(uint16_t)));
499 NDR_CHECK(ndr_pull_charset(ndr
, NDR_SCALARS
, &r
->startname
, ndr_get_array_length(ndr
, &r
->startname
), sizeof(uint16_t), CH_UTF16
));
500 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_startname_0
, 0);
502 if (r
->displayname
) {
503 _mem_save_displayname_0
= NDR_PULL_GET_MEM_CTX(ndr
);
504 NDR_PULL_SET_MEM_CTX(ndr
, r
->displayname
, 0);
505 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->displayname
));
506 NDR_CHECK(ndr_pull_array_length(ndr
, &r
->displayname
));
507 if (ndr_get_array_length(ndr
, &r
->displayname
) > ndr_get_array_size(ndr
, &r
->displayname
)) {
508 return ndr_pull_error(ndr
, NDR_ERR_ARRAY_SIZE
, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr
, &r
->displayname
), ndr_get_array_length(ndr
, &r
->displayname
));
510 NDR_CHECK(ndr_check_string_terminator(ndr
, ndr_get_array_length(ndr
, &r
->displayname
), sizeof(uint16_t)));
511 NDR_CHECK(ndr_pull_charset(ndr
, NDR_SCALARS
, &r
->displayname
, ndr_get_array_length(ndr
, &r
->displayname
), sizeof(uint16_t), CH_UTF16
));
512 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_displayname_0
, 0);
515 return NDR_ERR_SUCCESS
;
518 _PUBLIC_
void ndr_print_QUERY_SERVICE_CONFIG(struct ndr_print
*ndr
, const char *name
, const struct QUERY_SERVICE_CONFIG
*r
)
520 ndr_print_struct(ndr
, name
, "QUERY_SERVICE_CONFIG");
522 ndr_print_uint32(ndr
, "service_type", r
->service_type
);
523 ndr_print_uint32(ndr
, "start_type", r
->start_type
);
524 ndr_print_uint32(ndr
, "error_control", r
->error_control
);
525 ndr_print_ptr(ndr
, "executablepath", r
->executablepath
);
527 if (r
->executablepath
) {
528 ndr_print_string(ndr
, "executablepath", r
->executablepath
);
531 ndr_print_ptr(ndr
, "loadordergroup", r
->loadordergroup
);
533 if (r
->loadordergroup
) {
534 ndr_print_string(ndr
, "loadordergroup", r
->loadordergroup
);
537 ndr_print_uint32(ndr
, "tag_id", r
->tag_id
);
538 ndr_print_ptr(ndr
, "dependencies", r
->dependencies
);
540 if (r
->dependencies
) {
541 ndr_print_string(ndr
, "dependencies", r
->dependencies
);
544 ndr_print_ptr(ndr
, "startname", r
->startname
);
547 ndr_print_string(ndr
, "startname", r
->startname
);
550 ndr_print_ptr(ndr
, "displayname", r
->displayname
);
552 if (r
->displayname
) {
553 ndr_print_string(ndr
, "displayname", r
->displayname
);
559 _PUBLIC_
size_t ndr_size_QUERY_SERVICE_CONFIG(const struct QUERY_SERVICE_CONFIG
*r
, int flags
)
561 return ndr_size_struct(r
, flags
, (ndr_push_flags_fn_t
)ndr_push_QUERY_SERVICE_CONFIG
);
564 static enum ndr_err_code
ndr_push_svcctl_CloseServiceHandle(struct ndr_push
*ndr
, int flags
, const struct svcctl_CloseServiceHandle
*r
)
566 if (flags
& NDR_IN
) {
567 if (r
->in
.handle
== NULL
) {
568 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
570 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->in
.handle
));
572 if (flags
& NDR_OUT
) {
573 if (r
->out
.handle
== NULL
) {
574 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
576 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->out
.handle
));
577 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
579 return NDR_ERR_SUCCESS
;
582 static enum ndr_err_code
ndr_pull_svcctl_CloseServiceHandle(struct ndr_pull
*ndr
, int flags
, struct svcctl_CloseServiceHandle
*r
)
584 TALLOC_CTX
*_mem_save_handle_0
;
585 if (flags
& NDR_IN
) {
588 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
589 NDR_PULL_ALLOC(ndr
, r
->in
.handle
);
591 _mem_save_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
592 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.handle
, LIBNDR_FLAG_REF_ALLOC
);
593 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->in
.handle
));
594 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_handle_0
, LIBNDR_FLAG_REF_ALLOC
);
595 NDR_PULL_ALLOC(ndr
, r
->out
.handle
);
596 *r
->out
.handle
= *r
->in
.handle
;
598 if (flags
& NDR_OUT
) {
599 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
600 NDR_PULL_ALLOC(ndr
, r
->out
.handle
);
602 _mem_save_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
603 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.handle
, LIBNDR_FLAG_REF_ALLOC
);
604 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->out
.handle
));
605 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_handle_0
, LIBNDR_FLAG_REF_ALLOC
);
606 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
608 return NDR_ERR_SUCCESS
;
611 _PUBLIC_
void ndr_print_svcctl_CloseServiceHandle(struct ndr_print
*ndr
, const char *name
, int flags
, const struct svcctl_CloseServiceHandle
*r
)
613 ndr_print_struct(ndr
, name
, "svcctl_CloseServiceHandle");
615 if (flags
& NDR_SET_VALUES
) {
616 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
618 if (flags
& NDR_IN
) {
619 ndr_print_struct(ndr
, "in", "svcctl_CloseServiceHandle");
621 ndr_print_ptr(ndr
, "handle", r
->in
.handle
);
623 ndr_print_policy_handle(ndr
, "handle", r
->in
.handle
);
627 if (flags
& NDR_OUT
) {
628 ndr_print_struct(ndr
, "out", "svcctl_CloseServiceHandle");
630 ndr_print_ptr(ndr
, "handle", r
->out
.handle
);
632 ndr_print_policy_handle(ndr
, "handle", r
->out
.handle
);
634 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
640 static enum ndr_err_code
ndr_push_svcctl_ControlService(struct ndr_push
*ndr
, int flags
, const struct svcctl_ControlService
*r
)
642 if (flags
& NDR_IN
) {
643 if (r
->in
.handle
== NULL
) {
644 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
646 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->in
.handle
));
647 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.control
));
649 if (flags
& NDR_OUT
) {
650 if (r
->out
.service_status
== NULL
) {
651 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
653 NDR_CHECK(ndr_push_SERVICE_STATUS(ndr
, NDR_SCALARS
, r
->out
.service_status
));
654 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
656 return NDR_ERR_SUCCESS
;
659 static enum ndr_err_code
ndr_pull_svcctl_ControlService(struct ndr_pull
*ndr
, int flags
, struct svcctl_ControlService
*r
)
661 TALLOC_CTX
*_mem_save_handle_0
;
662 TALLOC_CTX
*_mem_save_service_status_0
;
663 if (flags
& NDR_IN
) {
666 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
667 NDR_PULL_ALLOC(ndr
, r
->in
.handle
);
669 _mem_save_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
670 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.handle
, LIBNDR_FLAG_REF_ALLOC
);
671 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->in
.handle
));
672 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_handle_0
, LIBNDR_FLAG_REF_ALLOC
);
673 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.control
));
674 NDR_PULL_ALLOC(ndr
, r
->out
.service_status
);
675 ZERO_STRUCTP(r
->out
.service_status
);
677 if (flags
& NDR_OUT
) {
678 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
679 NDR_PULL_ALLOC(ndr
, r
->out
.service_status
);
681 _mem_save_service_status_0
= NDR_PULL_GET_MEM_CTX(ndr
);
682 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.service_status
, LIBNDR_FLAG_REF_ALLOC
);
683 NDR_CHECK(ndr_pull_SERVICE_STATUS(ndr
, NDR_SCALARS
, r
->out
.service_status
));
684 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_service_status_0
, LIBNDR_FLAG_REF_ALLOC
);
685 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
687 return NDR_ERR_SUCCESS
;
690 _PUBLIC_
void ndr_print_svcctl_ControlService(struct ndr_print
*ndr
, const char *name
, int flags
, const struct svcctl_ControlService
*r
)
692 ndr_print_struct(ndr
, name
, "svcctl_ControlService");
694 if (flags
& NDR_SET_VALUES
) {
695 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
697 if (flags
& NDR_IN
) {
698 ndr_print_struct(ndr
, "in", "svcctl_ControlService");
700 ndr_print_ptr(ndr
, "handle", r
->in
.handle
);
702 ndr_print_policy_handle(ndr
, "handle", r
->in
.handle
);
704 ndr_print_uint32(ndr
, "control", r
->in
.control
);
707 if (flags
& NDR_OUT
) {
708 ndr_print_struct(ndr
, "out", "svcctl_ControlService");
710 ndr_print_ptr(ndr
, "service_status", r
->out
.service_status
);
712 ndr_print_SERVICE_STATUS(ndr
, "service_status", r
->out
.service_status
);
714 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
720 static enum ndr_err_code
ndr_push_svcctl_DeleteService(struct ndr_push
*ndr
, int flags
, const struct svcctl_DeleteService
*r
)
722 if (flags
& NDR_IN
) {
723 if (r
->in
.handle
== NULL
) {
724 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
726 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->in
.handle
));
728 if (flags
& NDR_OUT
) {
729 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
731 return NDR_ERR_SUCCESS
;
734 static enum ndr_err_code
ndr_pull_svcctl_DeleteService(struct ndr_pull
*ndr
, int flags
, struct svcctl_DeleteService
*r
)
736 TALLOC_CTX
*_mem_save_handle_0
;
737 if (flags
& NDR_IN
) {
738 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
739 NDR_PULL_ALLOC(ndr
, r
->in
.handle
);
741 _mem_save_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
742 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.handle
, LIBNDR_FLAG_REF_ALLOC
);
743 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->in
.handle
));
744 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_handle_0
, LIBNDR_FLAG_REF_ALLOC
);
746 if (flags
& NDR_OUT
) {
747 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
749 return NDR_ERR_SUCCESS
;
752 _PUBLIC_
void ndr_print_svcctl_DeleteService(struct ndr_print
*ndr
, const char *name
, int flags
, const struct svcctl_DeleteService
*r
)
754 ndr_print_struct(ndr
, name
, "svcctl_DeleteService");
756 if (flags
& NDR_SET_VALUES
) {
757 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
759 if (flags
& NDR_IN
) {
760 ndr_print_struct(ndr
, "in", "svcctl_DeleteService");
762 ndr_print_ptr(ndr
, "handle", r
->in
.handle
);
764 ndr_print_policy_handle(ndr
, "handle", r
->in
.handle
);
768 if (flags
& NDR_OUT
) {
769 ndr_print_struct(ndr
, "out", "svcctl_DeleteService");
771 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
777 static enum ndr_err_code
ndr_push_svcctl_LockServiceDatabase(struct ndr_push
*ndr
, int flags
, const struct svcctl_LockServiceDatabase
*r
)
779 if (flags
& NDR_IN
) {
780 if (r
->in
.handle
== NULL
) {
781 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
783 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->in
.handle
));
785 if (flags
& NDR_OUT
) {
786 if (r
->out
.lock
== NULL
) {
787 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
789 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->out
.lock
));
790 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
792 return NDR_ERR_SUCCESS
;
795 static enum ndr_err_code
ndr_pull_svcctl_LockServiceDatabase(struct ndr_pull
*ndr
, int flags
, struct svcctl_LockServiceDatabase
*r
)
797 TALLOC_CTX
*_mem_save_handle_0
;
798 TALLOC_CTX
*_mem_save_lock_0
;
799 if (flags
& NDR_IN
) {
802 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
803 NDR_PULL_ALLOC(ndr
, r
->in
.handle
);
805 _mem_save_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
806 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.handle
, LIBNDR_FLAG_REF_ALLOC
);
807 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->in
.handle
));
808 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_handle_0
, LIBNDR_FLAG_REF_ALLOC
);
809 NDR_PULL_ALLOC(ndr
, r
->out
.lock
);
810 ZERO_STRUCTP(r
->out
.lock
);
812 if (flags
& NDR_OUT
) {
813 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
814 NDR_PULL_ALLOC(ndr
, r
->out
.lock
);
816 _mem_save_lock_0
= NDR_PULL_GET_MEM_CTX(ndr
);
817 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.lock
, LIBNDR_FLAG_REF_ALLOC
);
818 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->out
.lock
));
819 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_lock_0
, LIBNDR_FLAG_REF_ALLOC
);
820 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
822 return NDR_ERR_SUCCESS
;
825 _PUBLIC_
void ndr_print_svcctl_LockServiceDatabase(struct ndr_print
*ndr
, const char *name
, int flags
, const struct svcctl_LockServiceDatabase
*r
)
827 ndr_print_struct(ndr
, name
, "svcctl_LockServiceDatabase");
829 if (flags
& NDR_SET_VALUES
) {
830 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
832 if (flags
& NDR_IN
) {
833 ndr_print_struct(ndr
, "in", "svcctl_LockServiceDatabase");
835 ndr_print_ptr(ndr
, "handle", r
->in
.handle
);
837 ndr_print_policy_handle(ndr
, "handle", r
->in
.handle
);
841 if (flags
& NDR_OUT
) {
842 ndr_print_struct(ndr
, "out", "svcctl_LockServiceDatabase");
844 ndr_print_ptr(ndr
, "lock", r
->out
.lock
);
846 ndr_print_policy_handle(ndr
, "lock", r
->out
.lock
);
848 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
854 static enum ndr_err_code
ndr_push_svcctl_QueryServiceObjectSecurity(struct ndr_push
*ndr
, int flags
, const struct svcctl_QueryServiceObjectSecurity
*r
)
856 if (flags
& NDR_IN
) {
857 if (r
->in
.handle
== NULL
) {
858 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
860 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->in
.handle
));
861 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.security_flags
));
862 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.buffer_size
));
864 if (flags
& NDR_OUT
) {
865 if (r
->out
.buffer
== NULL
) {
866 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
868 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.buffer_size
));
869 NDR_CHECK(ndr_push_array_uint8(ndr
, NDR_SCALARS
, r
->out
.buffer
, r
->in
.buffer_size
));
870 if (r
->out
.needed
== NULL
) {
871 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
873 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, *r
->out
.needed
));
874 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
876 return NDR_ERR_SUCCESS
;
879 static enum ndr_err_code
ndr_pull_svcctl_QueryServiceObjectSecurity(struct ndr_pull
*ndr
, int flags
, struct svcctl_QueryServiceObjectSecurity
*r
)
881 TALLOC_CTX
*_mem_save_handle_0
;
882 TALLOC_CTX
*_mem_save_needed_0
;
883 if (flags
& NDR_IN
) {
886 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
887 NDR_PULL_ALLOC(ndr
, r
->in
.handle
);
889 _mem_save_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
890 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.handle
, LIBNDR_FLAG_REF_ALLOC
);
891 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->in
.handle
));
892 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_handle_0
, LIBNDR_FLAG_REF_ALLOC
);
893 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.security_flags
));
894 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.buffer_size
));
895 if (r
->in
.buffer_size
< 0 || r
->in
.buffer_size
> 0x40000) {
896 return ndr_pull_error(ndr
, NDR_ERR_RANGE
, "value out of range");
898 NDR_PULL_ALLOC_N(ndr
, r
->out
.buffer
, r
->in
.buffer_size
);
899 memset(r
->out
.buffer
, 0, (r
->in
.buffer_size
) * sizeof(*r
->out
.buffer
));
900 NDR_PULL_ALLOC(ndr
, r
->out
.needed
);
901 ZERO_STRUCTP(r
->out
.needed
);
903 if (flags
& NDR_OUT
) {
904 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->out
.buffer
));
905 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
906 NDR_PULL_ALLOC_N(ndr
, r
->out
.buffer
, ndr_get_array_size(ndr
, &r
->out
.buffer
));
908 NDR_CHECK(ndr_pull_array_uint8(ndr
, NDR_SCALARS
, r
->out
.buffer
, ndr_get_array_size(ndr
, &r
->out
.buffer
)));
909 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
910 NDR_PULL_ALLOC(ndr
, r
->out
.needed
);
912 _mem_save_needed_0
= NDR_PULL_GET_MEM_CTX(ndr
);
913 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.needed
, LIBNDR_FLAG_REF_ALLOC
);
914 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, r
->out
.needed
));
915 if (*r
->out
.needed
< 0 || *r
->out
.needed
> 0x40000) {
916 return ndr_pull_error(ndr
, NDR_ERR_RANGE
, "value out of range");
918 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_needed_0
, LIBNDR_FLAG_REF_ALLOC
);
919 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
921 NDR_CHECK(ndr_check_array_size(ndr
, (void*)&r
->out
.buffer
, r
->in
.buffer_size
));
924 return NDR_ERR_SUCCESS
;
927 _PUBLIC_
void ndr_print_svcctl_QueryServiceObjectSecurity(struct ndr_print
*ndr
, const char *name
, int flags
, const struct svcctl_QueryServiceObjectSecurity
*r
)
929 ndr_print_struct(ndr
, name
, "svcctl_QueryServiceObjectSecurity");
931 if (flags
& NDR_SET_VALUES
) {
932 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
934 if (flags
& NDR_IN
) {
935 ndr_print_struct(ndr
, "in", "svcctl_QueryServiceObjectSecurity");
937 ndr_print_ptr(ndr
, "handle", r
->in
.handle
);
939 ndr_print_policy_handle(ndr
, "handle", r
->in
.handle
);
941 ndr_print_uint32(ndr
, "security_flags", r
->in
.security_flags
);
942 ndr_print_uint32(ndr
, "buffer_size", r
->in
.buffer_size
);
945 if (flags
& NDR_OUT
) {
946 ndr_print_struct(ndr
, "out", "svcctl_QueryServiceObjectSecurity");
948 ndr_print_ptr(ndr
, "buffer", r
->out
.buffer
);
950 ndr_print_array_uint8(ndr
, "buffer", r
->out
.buffer
, r
->in
.buffer_size
);
952 ndr_print_ptr(ndr
, "needed", r
->out
.needed
);
954 ndr_print_uint32(ndr
, "needed", *r
->out
.needed
);
956 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
962 static enum ndr_err_code
ndr_push_svcctl_SetServiceObjectSecurity(struct ndr_push
*ndr
, int flags
, const struct svcctl_SetServiceObjectSecurity
*r
)
964 if (flags
& NDR_IN
) {
965 if (r
->in
.handle
== NULL
) {
966 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
968 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->in
.handle
));
969 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.security_flags
));
970 if (r
->in
.buffer
== NULL
) {
971 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
973 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.buffer_size
));
974 NDR_CHECK(ndr_push_array_uint8(ndr
, NDR_SCALARS
, r
->in
.buffer
, r
->in
.buffer_size
));
975 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.buffer_size
));
977 if (flags
& NDR_OUT
) {
978 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
980 return NDR_ERR_SUCCESS
;
983 static enum ndr_err_code
ndr_pull_svcctl_SetServiceObjectSecurity(struct ndr_pull
*ndr
, int flags
, struct svcctl_SetServiceObjectSecurity
*r
)
985 TALLOC_CTX
*_mem_save_handle_0
;
986 if (flags
& NDR_IN
) {
987 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
988 NDR_PULL_ALLOC(ndr
, r
->in
.handle
);
990 _mem_save_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
991 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.handle
, LIBNDR_FLAG_REF_ALLOC
);
992 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->in
.handle
));
993 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_handle_0
, LIBNDR_FLAG_REF_ALLOC
);
994 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.security_flags
));
995 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->in
.buffer
));
996 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
997 NDR_PULL_ALLOC_N(ndr
, r
->in
.buffer
, ndr_get_array_size(ndr
, &r
->in
.buffer
));
999 NDR_CHECK(ndr_pull_array_uint8(ndr
, NDR_SCALARS
, r
->in
.buffer
, ndr_get_array_size(ndr
, &r
->in
.buffer
)));
1000 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.buffer_size
));
1002 NDR_CHECK(ndr_check_array_size(ndr
, (void*)&r
->in
.buffer
, r
->in
.buffer_size
));
1005 if (flags
& NDR_OUT
) {
1006 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
1008 return NDR_ERR_SUCCESS
;
1011 _PUBLIC_
void ndr_print_svcctl_SetServiceObjectSecurity(struct ndr_print
*ndr
, const char *name
, int flags
, const struct svcctl_SetServiceObjectSecurity
*r
)
1013 ndr_print_struct(ndr
, name
, "svcctl_SetServiceObjectSecurity");
1015 if (flags
& NDR_SET_VALUES
) {
1016 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
1018 if (flags
& NDR_IN
) {
1019 ndr_print_struct(ndr
, "in", "svcctl_SetServiceObjectSecurity");
1021 ndr_print_ptr(ndr
, "handle", r
->in
.handle
);
1023 ndr_print_policy_handle(ndr
, "handle", r
->in
.handle
);
1025 ndr_print_uint32(ndr
, "security_flags", r
->in
.security_flags
);
1026 ndr_print_ptr(ndr
, "buffer", r
->in
.buffer
);
1028 ndr_print_array_uint8(ndr
, "buffer", r
->in
.buffer
, r
->in
.buffer_size
);
1030 ndr_print_uint32(ndr
, "buffer_size", r
->in
.buffer_size
);
1033 if (flags
& NDR_OUT
) {
1034 ndr_print_struct(ndr
, "out", "svcctl_SetServiceObjectSecurity");
1036 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
1042 static enum ndr_err_code
ndr_push_svcctl_QueryServiceStatus(struct ndr_push
*ndr
, int flags
, const struct svcctl_QueryServiceStatus
*r
)
1044 if (flags
& NDR_IN
) {
1045 if (r
->in
.handle
== NULL
) {
1046 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
1048 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->in
.handle
));
1050 if (flags
& NDR_OUT
) {
1051 if (r
->out
.service_status
== NULL
) {
1052 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
1054 NDR_CHECK(ndr_push_SERVICE_STATUS(ndr
, NDR_SCALARS
, r
->out
.service_status
));
1055 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
1057 return NDR_ERR_SUCCESS
;
1060 static enum ndr_err_code
ndr_pull_svcctl_QueryServiceStatus(struct ndr_pull
*ndr
, int flags
, struct svcctl_QueryServiceStatus
*r
)
1062 TALLOC_CTX
*_mem_save_handle_0
;
1063 TALLOC_CTX
*_mem_save_service_status_0
;
1064 if (flags
& NDR_IN
) {
1065 ZERO_STRUCT(r
->out
);
1067 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
1068 NDR_PULL_ALLOC(ndr
, r
->in
.handle
);
1070 _mem_save_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
1071 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.handle
, LIBNDR_FLAG_REF_ALLOC
);
1072 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->in
.handle
));
1073 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_handle_0
, LIBNDR_FLAG_REF_ALLOC
);
1074 NDR_PULL_ALLOC(ndr
, r
->out
.service_status
);
1075 ZERO_STRUCTP(r
->out
.service_status
);
1077 if (flags
& NDR_OUT
) {
1078 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
1079 NDR_PULL_ALLOC(ndr
, r
->out
.service_status
);
1081 _mem_save_service_status_0
= NDR_PULL_GET_MEM_CTX(ndr
);
1082 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.service_status
, LIBNDR_FLAG_REF_ALLOC
);
1083 NDR_CHECK(ndr_pull_SERVICE_STATUS(ndr
, NDR_SCALARS
, r
->out
.service_status
));
1084 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_service_status_0
, LIBNDR_FLAG_REF_ALLOC
);
1085 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
1087 return NDR_ERR_SUCCESS
;
1090 _PUBLIC_
void ndr_print_svcctl_QueryServiceStatus(struct ndr_print
*ndr
, const char *name
, int flags
, const struct svcctl_QueryServiceStatus
*r
)
1092 ndr_print_struct(ndr
, name
, "svcctl_QueryServiceStatus");
1094 if (flags
& NDR_SET_VALUES
) {
1095 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
1097 if (flags
& NDR_IN
) {
1098 ndr_print_struct(ndr
, "in", "svcctl_QueryServiceStatus");
1100 ndr_print_ptr(ndr
, "handle", r
->in
.handle
);
1102 ndr_print_policy_handle(ndr
, "handle", r
->in
.handle
);
1106 if (flags
& NDR_OUT
) {
1107 ndr_print_struct(ndr
, "out", "svcctl_QueryServiceStatus");
1109 ndr_print_ptr(ndr
, "service_status", r
->out
.service_status
);
1111 ndr_print_SERVICE_STATUS(ndr
, "service_status", r
->out
.service_status
);
1113 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
1119 static enum ndr_err_code
ndr_push_svcctl_SetServiceStatus(struct ndr_push
*ndr
, int flags
, const struct svcctl_SetServiceStatus
*r
)
1121 if (flags
& NDR_IN
) {
1123 if (flags
& NDR_OUT
) {
1124 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
1126 return NDR_ERR_SUCCESS
;
1129 static enum ndr_err_code
ndr_pull_svcctl_SetServiceStatus(struct ndr_pull
*ndr
, int flags
, struct svcctl_SetServiceStatus
*r
)
1131 if (flags
& NDR_IN
) {
1133 if (flags
& NDR_OUT
) {
1134 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
1136 return NDR_ERR_SUCCESS
;
1139 _PUBLIC_
void ndr_print_svcctl_SetServiceStatus(struct ndr_print
*ndr
, const char *name
, int flags
, const struct svcctl_SetServiceStatus
*r
)
1141 ndr_print_struct(ndr
, name
, "svcctl_SetServiceStatus");
1143 if (flags
& NDR_SET_VALUES
) {
1144 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
1146 if (flags
& NDR_IN
) {
1147 ndr_print_struct(ndr
, "in", "svcctl_SetServiceStatus");
1151 if (flags
& NDR_OUT
) {
1152 ndr_print_struct(ndr
, "out", "svcctl_SetServiceStatus");
1154 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
1160 static enum ndr_err_code
ndr_push_svcctl_UnlockServiceDatabase(struct ndr_push
*ndr
, int flags
, const struct svcctl_UnlockServiceDatabase
*r
)
1162 if (flags
& NDR_IN
) {
1163 if (r
->in
.lock
== NULL
) {
1164 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
1166 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->in
.lock
));
1168 if (flags
& NDR_OUT
) {
1169 if (r
->out
.lock
== NULL
) {
1170 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
1172 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->out
.lock
));
1173 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
1175 return NDR_ERR_SUCCESS
;
1178 static enum ndr_err_code
ndr_pull_svcctl_UnlockServiceDatabase(struct ndr_pull
*ndr
, int flags
, struct svcctl_UnlockServiceDatabase
*r
)
1180 TALLOC_CTX
*_mem_save_lock_0
;
1181 if (flags
& NDR_IN
) {
1182 ZERO_STRUCT(r
->out
);
1184 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
1185 NDR_PULL_ALLOC(ndr
, r
->in
.lock
);
1187 _mem_save_lock_0
= NDR_PULL_GET_MEM_CTX(ndr
);
1188 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.lock
, LIBNDR_FLAG_REF_ALLOC
);
1189 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->in
.lock
));
1190 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_lock_0
, LIBNDR_FLAG_REF_ALLOC
);
1191 NDR_PULL_ALLOC(ndr
, r
->out
.lock
);
1192 *r
->out
.lock
= *r
->in
.lock
;
1194 if (flags
& NDR_OUT
) {
1195 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
1196 NDR_PULL_ALLOC(ndr
, r
->out
.lock
);
1198 _mem_save_lock_0
= NDR_PULL_GET_MEM_CTX(ndr
);
1199 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.lock
, LIBNDR_FLAG_REF_ALLOC
);
1200 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->out
.lock
));
1201 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_lock_0
, LIBNDR_FLAG_REF_ALLOC
);
1202 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
1204 return NDR_ERR_SUCCESS
;
1207 _PUBLIC_
void ndr_print_svcctl_UnlockServiceDatabase(struct ndr_print
*ndr
, const char *name
, int flags
, const struct svcctl_UnlockServiceDatabase
*r
)
1209 ndr_print_struct(ndr
, name
, "svcctl_UnlockServiceDatabase");
1211 if (flags
& NDR_SET_VALUES
) {
1212 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
1214 if (flags
& NDR_IN
) {
1215 ndr_print_struct(ndr
, "in", "svcctl_UnlockServiceDatabase");
1217 ndr_print_ptr(ndr
, "lock", r
->in
.lock
);
1219 ndr_print_policy_handle(ndr
, "lock", r
->in
.lock
);
1223 if (flags
& NDR_OUT
) {
1224 ndr_print_struct(ndr
, "out", "svcctl_UnlockServiceDatabase");
1226 ndr_print_ptr(ndr
, "lock", r
->out
.lock
);
1228 ndr_print_policy_handle(ndr
, "lock", r
->out
.lock
);
1230 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
1236 static enum ndr_err_code
ndr_push_svcctl_NotifyBootConfigStatus(struct ndr_push
*ndr
, int flags
, const struct svcctl_NotifyBootConfigStatus
*r
)
1238 if (flags
& NDR_IN
) {
1240 if (flags
& NDR_OUT
) {
1241 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
1243 return NDR_ERR_SUCCESS
;
1246 static enum ndr_err_code
ndr_pull_svcctl_NotifyBootConfigStatus(struct ndr_pull
*ndr
, int flags
, struct svcctl_NotifyBootConfigStatus
*r
)
1248 if (flags
& NDR_IN
) {
1250 if (flags
& NDR_OUT
) {
1251 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
1253 return NDR_ERR_SUCCESS
;
1256 _PUBLIC_
void ndr_print_svcctl_NotifyBootConfigStatus(struct ndr_print
*ndr
, const char *name
, int flags
, const struct svcctl_NotifyBootConfigStatus
*r
)
1258 ndr_print_struct(ndr
, name
, "svcctl_NotifyBootConfigStatus");
1260 if (flags
& NDR_SET_VALUES
) {
1261 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
1263 if (flags
& NDR_IN
) {
1264 ndr_print_struct(ndr
, "in", "svcctl_NotifyBootConfigStatus");
1268 if (flags
& NDR_OUT
) {
1269 ndr_print_struct(ndr
, "out", "svcctl_NotifyBootConfigStatus");
1271 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
1277 static enum ndr_err_code
ndr_push_svcctl_SCSetServiceBitsW(struct ndr_push
*ndr
, int flags
, const struct svcctl_SCSetServiceBitsW
*r
)
1279 if (flags
& NDR_IN
) {
1280 if (r
->in
.handle
== NULL
) {
1281 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
1283 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->in
.handle
));
1284 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.bits
));
1285 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.bitson
));
1286 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.immediate
));
1288 if (flags
& NDR_OUT
) {
1289 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
1291 return NDR_ERR_SUCCESS
;
1294 static enum ndr_err_code
ndr_pull_svcctl_SCSetServiceBitsW(struct ndr_pull
*ndr
, int flags
, struct svcctl_SCSetServiceBitsW
*r
)
1296 TALLOC_CTX
*_mem_save_handle_0
;
1297 if (flags
& NDR_IN
) {
1298 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
1299 NDR_PULL_ALLOC(ndr
, r
->in
.handle
);
1301 _mem_save_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
1302 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.handle
, LIBNDR_FLAG_REF_ALLOC
);
1303 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->in
.handle
));
1304 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_handle_0
, LIBNDR_FLAG_REF_ALLOC
);
1305 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.bits
));
1306 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.bitson
));
1307 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.immediate
));
1309 if (flags
& NDR_OUT
) {
1310 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
1312 return NDR_ERR_SUCCESS
;
1315 _PUBLIC_
void ndr_print_svcctl_SCSetServiceBitsW(struct ndr_print
*ndr
, const char *name
, int flags
, const struct svcctl_SCSetServiceBitsW
*r
)
1317 ndr_print_struct(ndr
, name
, "svcctl_SCSetServiceBitsW");
1319 if (flags
& NDR_SET_VALUES
) {
1320 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
1322 if (flags
& NDR_IN
) {
1323 ndr_print_struct(ndr
, "in", "svcctl_SCSetServiceBitsW");
1325 ndr_print_ptr(ndr
, "handle", r
->in
.handle
);
1327 ndr_print_policy_handle(ndr
, "handle", r
->in
.handle
);
1329 ndr_print_uint32(ndr
, "bits", r
->in
.bits
);
1330 ndr_print_uint32(ndr
, "bitson", r
->in
.bitson
);
1331 ndr_print_uint32(ndr
, "immediate", r
->in
.immediate
);
1334 if (flags
& NDR_OUT
) {
1335 ndr_print_struct(ndr
, "out", "svcctl_SCSetServiceBitsW");
1337 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
1343 static enum ndr_err_code
ndr_push_svcctl_ChangeServiceConfigW(struct ndr_push
*ndr
, int flags
, const struct svcctl_ChangeServiceConfigW
*r
)
1345 if (flags
& NDR_IN
) {
1346 if (r
->in
.handle
== NULL
) {
1347 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
1349 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->in
.handle
));
1350 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.type
));
1351 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.start
));
1352 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.error
));
1353 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.binary_path
));
1354 if (r
->in
.binary_path
) {
1355 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.binary_path
, CH_UTF16
)));
1356 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, 0));
1357 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.binary_path
, CH_UTF16
)));
1358 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
));
1360 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.load_order_group
));
1361 if (r
->in
.load_order_group
) {
1362 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.load_order_group
, CH_UTF16
)));
1363 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, 0));
1364 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.load_order_group
, CH_UTF16
)));
1365 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
));
1367 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.dependencies
));
1368 if (r
->in
.dependencies
) {
1369 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.dependencies
, CH_UTF16
)));
1370 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, 0));
1371 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.dependencies
, CH_UTF16
)));
1372 NDR_CHECK(ndr_push_charset(ndr
, NDR_SCALARS
, r
->in
.dependencies
, ndr_charset_length(r
->in
.dependencies
, CH_UTF16
), sizeof(uint16_t), CH_UTF16
));
1374 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.service_start_name
));
1375 if (r
->in
.service_start_name
) {
1376 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.service_start_name
, CH_UTF16
)));
1377 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, 0));
1378 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.service_start_name
, CH_UTF16
)));
1379 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
));
1381 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.password
));
1382 if (r
->in
.password
) {
1383 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.password
, 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
.password
, CH_UTF16
)));
1386 NDR_CHECK(ndr_push_charset(ndr
, NDR_SCALARS
, r
->in
.password
, ndr_charset_length(r
->in
.password
, CH_UTF16
), sizeof(uint16_t), CH_UTF16
));
1388 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.display_name
));
1389 if (r
->in
.display_name
) {
1390 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.display_name
, CH_UTF16
)));
1391 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, 0));
1392 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.display_name
, CH_UTF16
)));
1393 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
));
1396 if (flags
& NDR_OUT
) {
1397 if (r
->out
.tag_id
== NULL
) {
1398 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
1400 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, *r
->out
.tag_id
));
1401 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
1403 return NDR_ERR_SUCCESS
;
1406 static enum ndr_err_code
ndr_pull_svcctl_ChangeServiceConfigW(struct ndr_pull
*ndr
, int flags
, struct svcctl_ChangeServiceConfigW
*r
)
1408 uint32_t _ptr_binary_path
;
1409 uint32_t _ptr_load_order_group
;
1410 uint32_t _ptr_dependencies
;
1411 uint32_t _ptr_service_start_name
;
1412 uint32_t _ptr_password
;
1413 uint32_t _ptr_display_name
;
1414 TALLOC_CTX
*_mem_save_handle_0
;
1415 TALLOC_CTX
*_mem_save_binary_path_0
;
1416 TALLOC_CTX
*_mem_save_load_order_group_0
;
1417 TALLOC_CTX
*_mem_save_tag_id_0
;
1418 TALLOC_CTX
*_mem_save_dependencies_0
;
1419 TALLOC_CTX
*_mem_save_service_start_name_0
;
1420 TALLOC_CTX
*_mem_save_password_0
;
1421 TALLOC_CTX
*_mem_save_display_name_0
;
1422 if (flags
& NDR_IN
) {
1423 ZERO_STRUCT(r
->out
);
1425 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
1426 NDR_PULL_ALLOC(ndr
, r
->in
.handle
);
1428 _mem_save_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
1429 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.handle
, LIBNDR_FLAG_REF_ALLOC
);
1430 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->in
.handle
));
1431 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_handle_0
, LIBNDR_FLAG_REF_ALLOC
);
1432 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.type
));
1433 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.start
));
1434 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.error
));
1435 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_binary_path
));
1436 if (_ptr_binary_path
) {
1437 NDR_PULL_ALLOC(ndr
, r
->in
.binary_path
);
1439 r
->in
.binary_path
= NULL
;
1441 if (r
->in
.binary_path
) {
1442 _mem_save_binary_path_0
= NDR_PULL_GET_MEM_CTX(ndr
);
1443 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.binary_path
, 0);
1444 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->in
.binary_path
));
1445 NDR_CHECK(ndr_pull_array_length(ndr
, &r
->in
.binary_path
));
1446 if (ndr_get_array_length(ndr
, &r
->in
.binary_path
) > ndr_get_array_size(ndr
, &r
->in
.binary_path
)) {
1447 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
));
1449 NDR_CHECK(ndr_check_string_terminator(ndr
, ndr_get_array_length(ndr
, &r
->in
.binary_path
), sizeof(uint16_t)));
1450 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
));
1451 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_binary_path_0
, 0);
1453 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_load_order_group
));
1454 if (_ptr_load_order_group
) {
1455 NDR_PULL_ALLOC(ndr
, r
->in
.load_order_group
);
1457 r
->in
.load_order_group
= NULL
;
1459 if (r
->in
.load_order_group
) {
1460 _mem_save_load_order_group_0
= NDR_PULL_GET_MEM_CTX(ndr
);
1461 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.load_order_group
, 0);
1462 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->in
.load_order_group
));
1463 NDR_CHECK(ndr_pull_array_length(ndr
, &r
->in
.load_order_group
));
1464 if (ndr_get_array_length(ndr
, &r
->in
.load_order_group
) > ndr_get_array_size(ndr
, &r
->in
.load_order_group
)) {
1465 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
));
1467 NDR_CHECK(ndr_check_string_terminator(ndr
, ndr_get_array_length(ndr
, &r
->in
.load_order_group
), sizeof(uint16_t)));
1468 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
));
1469 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_load_order_group_0
, 0);
1471 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_dependencies
));
1472 if (_ptr_dependencies
) {
1473 NDR_PULL_ALLOC(ndr
, r
->in
.dependencies
);
1475 r
->in
.dependencies
= NULL
;
1477 if (r
->in
.dependencies
) {
1478 _mem_save_dependencies_0
= NDR_PULL_GET_MEM_CTX(ndr
);
1479 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.dependencies
, 0);
1480 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->in
.dependencies
));
1481 NDR_CHECK(ndr_pull_array_length(ndr
, &r
->in
.dependencies
));
1482 if (ndr_get_array_length(ndr
, &r
->in
.dependencies
) > ndr_get_array_size(ndr
, &r
->in
.dependencies
)) {
1483 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
));
1485 NDR_CHECK(ndr_check_string_terminator(ndr
, ndr_get_array_length(ndr
, &r
->in
.dependencies
), sizeof(uint16_t)));
1486 NDR_CHECK(ndr_pull_charset(ndr
, NDR_SCALARS
, &r
->in
.dependencies
, ndr_get_array_length(ndr
, &r
->in
.dependencies
), sizeof(uint16_t), CH_UTF16
));
1487 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_dependencies_0
, 0);
1489 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_service_start_name
));
1490 if (_ptr_service_start_name
) {
1491 NDR_PULL_ALLOC(ndr
, r
->in
.service_start_name
);
1493 r
->in
.service_start_name
= NULL
;
1495 if (r
->in
.service_start_name
) {
1496 _mem_save_service_start_name_0
= NDR_PULL_GET_MEM_CTX(ndr
);
1497 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.service_start_name
, 0);
1498 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->in
.service_start_name
));
1499 NDR_CHECK(ndr_pull_array_length(ndr
, &r
->in
.service_start_name
));
1500 if (ndr_get_array_length(ndr
, &r
->in
.service_start_name
) > ndr_get_array_size(ndr
, &r
->in
.service_start_name
)) {
1501 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
));
1503 NDR_CHECK(ndr_check_string_terminator(ndr
, ndr_get_array_length(ndr
, &r
->in
.service_start_name
), sizeof(uint16_t)));
1504 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
));
1505 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_service_start_name_0
, 0);
1507 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_password
));
1508 if (_ptr_password
) {
1509 NDR_PULL_ALLOC(ndr
, r
->in
.password
);
1511 r
->in
.password
= NULL
;
1513 if (r
->in
.password
) {
1514 _mem_save_password_0
= NDR_PULL_GET_MEM_CTX(ndr
);
1515 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.password
, 0);
1516 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->in
.password
));
1517 NDR_CHECK(ndr_pull_array_length(ndr
, &r
->in
.password
));
1518 if (ndr_get_array_length(ndr
, &r
->in
.password
) > ndr_get_array_size(ndr
, &r
->in
.password
)) {
1519 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
));
1521 NDR_CHECK(ndr_check_string_terminator(ndr
, ndr_get_array_length(ndr
, &r
->in
.password
), sizeof(uint16_t)));
1522 NDR_CHECK(ndr_pull_charset(ndr
, NDR_SCALARS
, &r
->in
.password
, ndr_get_array_length(ndr
, &r
->in
.password
), sizeof(uint16_t), CH_UTF16
));
1523 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_password_0
, 0);
1525 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_display_name
));
1526 if (_ptr_display_name
) {
1527 NDR_PULL_ALLOC(ndr
, r
->in
.display_name
);
1529 r
->in
.display_name
= NULL
;
1531 if (r
->in
.display_name
) {
1532 _mem_save_display_name_0
= NDR_PULL_GET_MEM_CTX(ndr
);
1533 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.display_name
, 0);
1534 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->in
.display_name
));
1535 NDR_CHECK(ndr_pull_array_length(ndr
, &r
->in
.display_name
));
1536 if (ndr_get_array_length(ndr
, &r
->in
.display_name
) > ndr_get_array_size(ndr
, &r
->in
.display_name
)) {
1537 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
));
1539 NDR_CHECK(ndr_check_string_terminator(ndr
, ndr_get_array_length(ndr
, &r
->in
.display_name
), sizeof(uint16_t)));
1540 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
));
1541 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_display_name_0
, 0);
1543 NDR_PULL_ALLOC(ndr
, r
->out
.tag_id
);
1544 ZERO_STRUCTP(r
->out
.tag_id
);
1546 if (flags
& NDR_OUT
) {
1547 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
1548 NDR_PULL_ALLOC(ndr
, r
->out
.tag_id
);
1550 _mem_save_tag_id_0
= NDR_PULL_GET_MEM_CTX(ndr
);
1551 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.tag_id
, LIBNDR_FLAG_REF_ALLOC
);
1552 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, r
->out
.tag_id
));
1553 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_tag_id_0
, LIBNDR_FLAG_REF_ALLOC
);
1554 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
1556 return NDR_ERR_SUCCESS
;
1559 _PUBLIC_
void ndr_print_svcctl_ChangeServiceConfigW(struct ndr_print
*ndr
, const char *name
, int flags
, const struct svcctl_ChangeServiceConfigW
*r
)
1561 ndr_print_struct(ndr
, name
, "svcctl_ChangeServiceConfigW");
1563 if (flags
& NDR_SET_VALUES
) {
1564 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
1566 if (flags
& NDR_IN
) {
1567 ndr_print_struct(ndr
, "in", "svcctl_ChangeServiceConfigW");
1569 ndr_print_ptr(ndr
, "handle", r
->in
.handle
);
1571 ndr_print_policy_handle(ndr
, "handle", r
->in
.handle
);
1573 ndr_print_uint32(ndr
, "type", r
->in
.type
);
1574 ndr_print_uint32(ndr
, "start", r
->in
.start
);
1575 ndr_print_uint32(ndr
, "error", r
->in
.error
);
1576 ndr_print_ptr(ndr
, "binary_path", r
->in
.binary_path
);
1578 if (r
->in
.binary_path
) {
1579 ndr_print_string(ndr
, "binary_path", r
->in
.binary_path
);
1582 ndr_print_ptr(ndr
, "load_order_group", r
->in
.load_order_group
);
1584 if (r
->in
.load_order_group
) {
1585 ndr_print_string(ndr
, "load_order_group", r
->in
.load_order_group
);
1588 ndr_print_ptr(ndr
, "dependencies", r
->in
.dependencies
);
1590 if (r
->in
.dependencies
) {
1591 ndr_print_string(ndr
, "dependencies", r
->in
.dependencies
);
1594 ndr_print_ptr(ndr
, "service_start_name", r
->in
.service_start_name
);
1596 if (r
->in
.service_start_name
) {
1597 ndr_print_string(ndr
, "service_start_name", r
->in
.service_start_name
);
1600 ndr_print_ptr(ndr
, "password", r
->in
.password
);
1602 if (r
->in
.password
) {
1603 ndr_print_string(ndr
, "password", r
->in
.password
);
1606 ndr_print_ptr(ndr
, "display_name", r
->in
.display_name
);
1608 if (r
->in
.display_name
) {
1609 ndr_print_string(ndr
, "display_name", r
->in
.display_name
);
1614 if (flags
& NDR_OUT
) {
1615 ndr_print_struct(ndr
, "out", "svcctl_ChangeServiceConfigW");
1617 ndr_print_ptr(ndr
, "tag_id", r
->out
.tag_id
);
1619 ndr_print_uint32(ndr
, "tag_id", *r
->out
.tag_id
);
1621 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
1627 static enum ndr_err_code
ndr_push_svcctl_CreateServiceW(struct ndr_push
*ndr
, int flags
, const struct svcctl_CreateServiceW
*r
)
1629 if (flags
& NDR_IN
) {
1630 if (r
->in
.scmanager_handle
== NULL
) {
1631 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
1633 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->in
.scmanager_handle
));
1634 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.ServiceName
, CH_UTF16
)));
1635 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, 0));
1636 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.ServiceName
, CH_UTF16
)));
1637 NDR_CHECK(ndr_push_charset(ndr
, NDR_SCALARS
, r
->in
.ServiceName
, ndr_charset_length(r
->in
.ServiceName
, CH_UTF16
), sizeof(uint16_t), CH_UTF16
));
1638 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.DisplayName
));
1639 if (r
->in
.DisplayName
) {
1640 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.DisplayName
, CH_UTF16
)));
1641 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, 0));
1642 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.DisplayName
, CH_UTF16
)));
1643 NDR_CHECK(ndr_push_charset(ndr
, NDR_SCALARS
, r
->in
.DisplayName
, ndr_charset_length(r
->in
.DisplayName
, CH_UTF16
), sizeof(uint16_t), CH_UTF16
));
1645 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.desired_access
));
1646 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.type
));
1647 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.start_type
));
1648 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.error_control
));
1649 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.binary_path
, CH_UTF16
)));
1650 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, 0));
1651 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.binary_path
, CH_UTF16
)));
1652 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
));
1653 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.LoadOrderGroupKey
));
1654 if (r
->in
.LoadOrderGroupKey
) {
1655 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.LoadOrderGroupKey
, CH_UTF16
)));
1656 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, 0));
1657 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.LoadOrderGroupKey
, CH_UTF16
)));
1658 NDR_CHECK(ndr_push_charset(ndr
, NDR_SCALARS
, r
->in
.LoadOrderGroupKey
, ndr_charset_length(r
->in
.LoadOrderGroupKey
, CH_UTF16
), sizeof(uint16_t), CH_UTF16
));
1660 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.TagId
));
1662 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, *r
->in
.TagId
));
1664 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.dependencies
));
1665 if (r
->in
.dependencies
) {
1666 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.dependencies_size
));
1667 NDR_CHECK(ndr_push_array_uint8(ndr
, NDR_SCALARS
, r
->in
.dependencies
, r
->in
.dependencies_size
));
1669 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.dependencies_size
));
1670 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.service_start_name
));
1671 if (r
->in
.service_start_name
) {
1672 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.service_start_name
, CH_UTF16
)));
1673 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, 0));
1674 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.service_start_name
, CH_UTF16
)));
1675 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
));
1677 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.password
));
1678 if (r
->in
.password
) {
1679 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.password_size
));
1680 NDR_CHECK(ndr_push_array_uint8(ndr
, NDR_SCALARS
, r
->in
.password
, r
->in
.password_size
));
1682 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.password_size
));
1684 if (flags
& NDR_OUT
) {
1685 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->out
.TagId
));
1687 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, *r
->out
.TagId
));
1689 if (r
->out
.handle
== NULL
) {
1690 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
1692 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->out
.handle
));
1693 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
1695 return NDR_ERR_SUCCESS
;
1698 static enum ndr_err_code
ndr_pull_svcctl_CreateServiceW(struct ndr_pull
*ndr
, int flags
, struct svcctl_CreateServiceW
*r
)
1700 uint32_t _ptr_DisplayName
;
1701 uint32_t _ptr_LoadOrderGroupKey
;
1702 uint32_t _ptr_TagId
;
1703 uint32_t _ptr_dependencies
;
1704 uint32_t _ptr_service_start_name
;
1705 uint32_t _ptr_password
;
1706 TALLOC_CTX
*_mem_save_scmanager_handle_0
;
1707 TALLOC_CTX
*_mem_save_DisplayName_0
;
1708 TALLOC_CTX
*_mem_save_LoadOrderGroupKey_0
;
1709 TALLOC_CTX
*_mem_save_TagId_0
;
1710 TALLOC_CTX
*_mem_save_dependencies_0
;
1711 TALLOC_CTX
*_mem_save_service_start_name_0
;
1712 TALLOC_CTX
*_mem_save_password_0
;
1713 TALLOC_CTX
*_mem_save_handle_0
;
1714 if (flags
& NDR_IN
) {
1715 ZERO_STRUCT(r
->out
);
1717 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
1718 NDR_PULL_ALLOC(ndr
, r
->in
.scmanager_handle
);
1720 _mem_save_scmanager_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
1721 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.scmanager_handle
, LIBNDR_FLAG_REF_ALLOC
);
1722 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->in
.scmanager_handle
));
1723 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_scmanager_handle_0
, LIBNDR_FLAG_REF_ALLOC
);
1724 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->in
.ServiceName
));
1725 NDR_CHECK(ndr_pull_array_length(ndr
, &r
->in
.ServiceName
));
1726 if (ndr_get_array_length(ndr
, &r
->in
.ServiceName
) > ndr_get_array_size(ndr
, &r
->in
.ServiceName
)) {
1727 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
));
1729 NDR_CHECK(ndr_check_string_terminator(ndr
, ndr_get_array_length(ndr
, &r
->in
.ServiceName
), sizeof(uint16_t)));
1730 NDR_CHECK(ndr_pull_charset(ndr
, NDR_SCALARS
, &r
->in
.ServiceName
, ndr_get_array_length(ndr
, &r
->in
.ServiceName
), sizeof(uint16_t), CH_UTF16
));
1731 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_DisplayName
));
1732 if (_ptr_DisplayName
) {
1733 NDR_PULL_ALLOC(ndr
, r
->in
.DisplayName
);
1735 r
->in
.DisplayName
= NULL
;
1737 if (r
->in
.DisplayName
) {
1738 _mem_save_DisplayName_0
= NDR_PULL_GET_MEM_CTX(ndr
);
1739 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.DisplayName
, 0);
1740 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->in
.DisplayName
));
1741 NDR_CHECK(ndr_pull_array_length(ndr
, &r
->in
.DisplayName
));
1742 if (ndr_get_array_length(ndr
, &r
->in
.DisplayName
) > ndr_get_array_size(ndr
, &r
->in
.DisplayName
)) {
1743 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
));
1745 NDR_CHECK(ndr_check_string_terminator(ndr
, ndr_get_array_length(ndr
, &r
->in
.DisplayName
), sizeof(uint16_t)));
1746 NDR_CHECK(ndr_pull_charset(ndr
, NDR_SCALARS
, &r
->in
.DisplayName
, ndr_get_array_length(ndr
, &r
->in
.DisplayName
), sizeof(uint16_t), CH_UTF16
));
1747 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_DisplayName_0
, 0);
1749 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.desired_access
));
1750 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.type
));
1751 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.start_type
));
1752 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.error_control
));
1753 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->in
.binary_path
));
1754 NDR_CHECK(ndr_pull_array_length(ndr
, &r
->in
.binary_path
));
1755 if (ndr_get_array_length(ndr
, &r
->in
.binary_path
) > ndr_get_array_size(ndr
, &r
->in
.binary_path
)) {
1756 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
));
1758 NDR_CHECK(ndr_check_string_terminator(ndr
, ndr_get_array_length(ndr
, &r
->in
.binary_path
), sizeof(uint16_t)));
1759 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
));
1760 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_LoadOrderGroupKey
));
1761 if (_ptr_LoadOrderGroupKey
) {
1762 NDR_PULL_ALLOC(ndr
, r
->in
.LoadOrderGroupKey
);
1764 r
->in
.LoadOrderGroupKey
= NULL
;
1766 if (r
->in
.LoadOrderGroupKey
) {
1767 _mem_save_LoadOrderGroupKey_0
= NDR_PULL_GET_MEM_CTX(ndr
);
1768 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.LoadOrderGroupKey
, 0);
1769 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->in
.LoadOrderGroupKey
));
1770 NDR_CHECK(ndr_pull_array_length(ndr
, &r
->in
.LoadOrderGroupKey
));
1771 if (ndr_get_array_length(ndr
, &r
->in
.LoadOrderGroupKey
) > ndr_get_array_size(ndr
, &r
->in
.LoadOrderGroupKey
)) {
1772 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
));
1774 NDR_CHECK(ndr_check_string_terminator(ndr
, ndr_get_array_length(ndr
, &r
->in
.LoadOrderGroupKey
), sizeof(uint16_t)));
1775 NDR_CHECK(ndr_pull_charset(ndr
, NDR_SCALARS
, &r
->in
.LoadOrderGroupKey
, ndr_get_array_length(ndr
, &r
->in
.LoadOrderGroupKey
), sizeof(uint16_t), CH_UTF16
));
1776 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_LoadOrderGroupKey_0
, 0);
1778 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_TagId
));
1780 NDR_PULL_ALLOC(ndr
, r
->in
.TagId
);
1785 _mem_save_TagId_0
= NDR_PULL_GET_MEM_CTX(ndr
);
1786 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.TagId
, 0);
1787 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, r
->in
.TagId
));
1788 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_TagId_0
, 0);
1790 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_dependencies
));
1791 if (_ptr_dependencies
) {
1792 NDR_PULL_ALLOC(ndr
, r
->in
.dependencies
);
1794 r
->in
.dependencies
= NULL
;
1796 if (r
->in
.dependencies
) {
1797 _mem_save_dependencies_0
= NDR_PULL_GET_MEM_CTX(ndr
);
1798 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.dependencies
, 0);
1799 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->in
.dependencies
));
1800 NDR_PULL_ALLOC_N(ndr
, r
->in
.dependencies
, ndr_get_array_size(ndr
, &r
->in
.dependencies
));
1801 NDR_CHECK(ndr_pull_array_uint8(ndr
, NDR_SCALARS
, r
->in
.dependencies
, ndr_get_array_size(ndr
, &r
->in
.dependencies
)));
1802 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_dependencies_0
, 0);
1804 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.dependencies_size
));
1805 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_service_start_name
));
1806 if (_ptr_service_start_name
) {
1807 NDR_PULL_ALLOC(ndr
, r
->in
.service_start_name
);
1809 r
->in
.service_start_name
= NULL
;
1811 if (r
->in
.service_start_name
) {
1812 _mem_save_service_start_name_0
= NDR_PULL_GET_MEM_CTX(ndr
);
1813 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.service_start_name
, 0);
1814 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->in
.service_start_name
));
1815 NDR_CHECK(ndr_pull_array_length(ndr
, &r
->in
.service_start_name
));
1816 if (ndr_get_array_length(ndr
, &r
->in
.service_start_name
) > ndr_get_array_size(ndr
, &r
->in
.service_start_name
)) {
1817 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
));
1819 NDR_CHECK(ndr_check_string_terminator(ndr
, ndr_get_array_length(ndr
, &r
->in
.service_start_name
), sizeof(uint16_t)));
1820 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
));
1821 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_service_start_name_0
, 0);
1823 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_password
));
1824 if (_ptr_password
) {
1825 NDR_PULL_ALLOC(ndr
, r
->in
.password
);
1827 r
->in
.password
= NULL
;
1829 if (r
->in
.password
) {
1830 _mem_save_password_0
= NDR_PULL_GET_MEM_CTX(ndr
);
1831 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.password
, 0);
1832 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->in
.password
));
1833 NDR_PULL_ALLOC_N(ndr
, r
->in
.password
, ndr_get_array_size(ndr
, &r
->in
.password
));
1834 NDR_CHECK(ndr_pull_array_uint8(ndr
, NDR_SCALARS
, r
->in
.password
, ndr_get_array_size(ndr
, &r
->in
.password
)));
1835 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_password_0
, 0);
1837 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.password_size
));
1838 NDR_PULL_ALLOC(ndr
, r
->out
.handle
);
1839 ZERO_STRUCTP(r
->out
.handle
);
1840 if (r
->in
.dependencies
) {
1841 NDR_CHECK(ndr_check_array_size(ndr
, (void*)&r
->in
.dependencies
, r
->in
.dependencies_size
));
1843 if (r
->in
.password
) {
1844 NDR_CHECK(ndr_check_array_size(ndr
, (void*)&r
->in
.password
, r
->in
.password_size
));
1847 if (flags
& NDR_OUT
) {
1848 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_TagId
));
1850 NDR_PULL_ALLOC(ndr
, r
->out
.TagId
);
1852 r
->out
.TagId
= NULL
;
1855 _mem_save_TagId_0
= NDR_PULL_GET_MEM_CTX(ndr
);
1856 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.TagId
, 0);
1857 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, r
->out
.TagId
));
1858 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_TagId_0
, 0);
1860 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
1861 NDR_PULL_ALLOC(ndr
, r
->out
.handle
);
1863 _mem_save_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
1864 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.handle
, LIBNDR_FLAG_REF_ALLOC
);
1865 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->out
.handle
));
1866 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_handle_0
, LIBNDR_FLAG_REF_ALLOC
);
1867 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
1869 return NDR_ERR_SUCCESS
;
1872 _PUBLIC_
void ndr_print_svcctl_CreateServiceW(struct ndr_print
*ndr
, const char *name
, int flags
, const struct svcctl_CreateServiceW
*r
)
1874 ndr_print_struct(ndr
, name
, "svcctl_CreateServiceW");
1876 if (flags
& NDR_SET_VALUES
) {
1877 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
1879 if (flags
& NDR_IN
) {
1880 ndr_print_struct(ndr
, "in", "svcctl_CreateServiceW");
1882 ndr_print_ptr(ndr
, "scmanager_handle", r
->in
.scmanager_handle
);
1884 ndr_print_policy_handle(ndr
, "scmanager_handle", r
->in
.scmanager_handle
);
1886 ndr_print_string(ndr
, "ServiceName", r
->in
.ServiceName
);
1887 ndr_print_ptr(ndr
, "DisplayName", r
->in
.DisplayName
);
1889 if (r
->in
.DisplayName
) {
1890 ndr_print_string(ndr
, "DisplayName", r
->in
.DisplayName
);
1893 ndr_print_uint32(ndr
, "desired_access", r
->in
.desired_access
);
1894 ndr_print_uint32(ndr
, "type", r
->in
.type
);
1895 ndr_print_uint32(ndr
, "start_type", r
->in
.start_type
);
1896 ndr_print_uint32(ndr
, "error_control", r
->in
.error_control
);
1897 ndr_print_string(ndr
, "binary_path", r
->in
.binary_path
);
1898 ndr_print_ptr(ndr
, "LoadOrderGroupKey", r
->in
.LoadOrderGroupKey
);
1900 if (r
->in
.LoadOrderGroupKey
) {
1901 ndr_print_string(ndr
, "LoadOrderGroupKey", r
->in
.LoadOrderGroupKey
);
1904 ndr_print_ptr(ndr
, "TagId", r
->in
.TagId
);
1907 ndr_print_uint32(ndr
, "TagId", *r
->in
.TagId
);
1910 ndr_print_ptr(ndr
, "dependencies", r
->in
.dependencies
);
1912 if (r
->in
.dependencies
) {
1913 ndr_print_array_uint8(ndr
, "dependencies", r
->in
.dependencies
, r
->in
.dependencies_size
);
1916 ndr_print_uint32(ndr
, "dependencies_size", r
->in
.dependencies_size
);
1917 ndr_print_ptr(ndr
, "service_start_name", r
->in
.service_start_name
);
1919 if (r
->in
.service_start_name
) {
1920 ndr_print_string(ndr
, "service_start_name", r
->in
.service_start_name
);
1923 ndr_print_ptr(ndr
, "password", r
->in
.password
);
1925 if (r
->in
.password
) {
1926 ndr_print_array_uint8(ndr
, "password", r
->in
.password
, r
->in
.password_size
);
1929 ndr_print_uint32(ndr
, "password_size", r
->in
.password_size
);
1932 if (flags
& NDR_OUT
) {
1933 ndr_print_struct(ndr
, "out", "svcctl_CreateServiceW");
1935 ndr_print_ptr(ndr
, "TagId", r
->out
.TagId
);
1938 ndr_print_uint32(ndr
, "TagId", *r
->out
.TagId
);
1941 ndr_print_ptr(ndr
, "handle", r
->out
.handle
);
1943 ndr_print_policy_handle(ndr
, "handle", r
->out
.handle
);
1945 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
1951 static enum ndr_err_code
ndr_push_svcctl_EnumDependentServicesW(struct ndr_push
*ndr
, int flags
, const struct svcctl_EnumDependentServicesW
*r
)
1953 if (flags
& NDR_IN
) {
1954 if (r
->in
.service
== NULL
) {
1955 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
1957 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->in
.service
));
1958 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.state
));
1959 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.buf_size
));
1961 if (flags
& NDR_OUT
) {
1962 if (r
->out
.service_status
== NULL
) {
1963 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
1965 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.buf_size
));
1966 NDR_CHECK(ndr_push_array_uint8(ndr
, NDR_SCALARS
, r
->out
.service_status
, r
->in
.buf_size
));
1967 if (r
->out
.bytes_needed
== NULL
) {
1968 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
1970 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, *r
->out
.bytes_needed
));
1971 if (r
->out
.services_returned
== NULL
) {
1972 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
1974 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, *r
->out
.services_returned
));
1975 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
1977 return NDR_ERR_SUCCESS
;
1980 static enum ndr_err_code
ndr_pull_svcctl_EnumDependentServicesW(struct ndr_pull
*ndr
, int flags
, struct svcctl_EnumDependentServicesW
*r
)
1982 TALLOC_CTX
*_mem_save_service_0
;
1983 TALLOC_CTX
*_mem_save_bytes_needed_0
;
1984 TALLOC_CTX
*_mem_save_services_returned_0
;
1985 if (flags
& NDR_IN
) {
1986 ZERO_STRUCT(r
->out
);
1988 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
1989 NDR_PULL_ALLOC(ndr
, r
->in
.service
);
1991 _mem_save_service_0
= NDR_PULL_GET_MEM_CTX(ndr
);
1992 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.service
, LIBNDR_FLAG_REF_ALLOC
);
1993 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->in
.service
));
1994 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_service_0
, LIBNDR_FLAG_REF_ALLOC
);
1995 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.state
));
1996 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.buf_size
));
1997 if (r
->in
.buf_size
< 0 || r
->in
.buf_size
> 0x40000) {
1998 return ndr_pull_error(ndr
, NDR_ERR_RANGE
, "value out of range");
2000 NDR_PULL_ALLOC_N(ndr
, r
->out
.service_status
, r
->in
.buf_size
);
2001 memset(r
->out
.service_status
, 0, (r
->in
.buf_size
) * sizeof(*r
->out
.service_status
));
2002 NDR_PULL_ALLOC(ndr
, r
->out
.bytes_needed
);
2003 ZERO_STRUCTP(r
->out
.bytes_needed
);
2004 NDR_PULL_ALLOC(ndr
, r
->out
.services_returned
);
2005 ZERO_STRUCTP(r
->out
.services_returned
);
2007 if (flags
& NDR_OUT
) {
2008 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->out
.service_status
));
2009 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
2010 NDR_PULL_ALLOC_N(ndr
, r
->out
.service_status
, ndr_get_array_size(ndr
, &r
->out
.service_status
));
2012 NDR_CHECK(ndr_pull_array_uint8(ndr
, NDR_SCALARS
, r
->out
.service_status
, ndr_get_array_size(ndr
, &r
->out
.service_status
)));
2013 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
2014 NDR_PULL_ALLOC(ndr
, r
->out
.bytes_needed
);
2016 _mem_save_bytes_needed_0
= NDR_PULL_GET_MEM_CTX(ndr
);
2017 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.bytes_needed
, LIBNDR_FLAG_REF_ALLOC
);
2018 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, r
->out
.bytes_needed
));
2019 if (*r
->out
.bytes_needed
< 0 || *r
->out
.bytes_needed
> 0x40000) {
2020 return ndr_pull_error(ndr
, NDR_ERR_RANGE
, "value out of range");
2022 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_bytes_needed_0
, LIBNDR_FLAG_REF_ALLOC
);
2023 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
2024 NDR_PULL_ALLOC(ndr
, r
->out
.services_returned
);
2026 _mem_save_services_returned_0
= NDR_PULL_GET_MEM_CTX(ndr
);
2027 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.services_returned
, LIBNDR_FLAG_REF_ALLOC
);
2028 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, r
->out
.services_returned
));
2029 if (*r
->out
.services_returned
< 0 || *r
->out
.services_returned
> 0x40000) {
2030 return ndr_pull_error(ndr
, NDR_ERR_RANGE
, "value out of range");
2032 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_services_returned_0
, LIBNDR_FLAG_REF_ALLOC
);
2033 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
2034 if (r
->out
.service_status
) {
2035 NDR_CHECK(ndr_check_array_size(ndr
, (void*)&r
->out
.service_status
, r
->in
.buf_size
));
2038 return NDR_ERR_SUCCESS
;
2041 _PUBLIC_
void ndr_print_svcctl_EnumDependentServicesW(struct ndr_print
*ndr
, const char *name
, int flags
, const struct svcctl_EnumDependentServicesW
*r
)
2043 ndr_print_struct(ndr
, name
, "svcctl_EnumDependentServicesW");
2045 if (flags
& NDR_SET_VALUES
) {
2046 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
2048 if (flags
& NDR_IN
) {
2049 ndr_print_struct(ndr
, "in", "svcctl_EnumDependentServicesW");
2051 ndr_print_ptr(ndr
, "service", r
->in
.service
);
2053 ndr_print_policy_handle(ndr
, "service", r
->in
.service
);
2055 ndr_print_uint32(ndr
, "state", r
->in
.state
);
2056 ndr_print_uint32(ndr
, "buf_size", r
->in
.buf_size
);
2059 if (flags
& NDR_OUT
) {
2060 ndr_print_struct(ndr
, "out", "svcctl_EnumDependentServicesW");
2062 ndr_print_ptr(ndr
, "service_status", r
->out
.service_status
);
2064 ndr_print_array_uint8(ndr
, "service_status", r
->out
.service_status
, r
->in
.buf_size
);
2066 ndr_print_ptr(ndr
, "bytes_needed", r
->out
.bytes_needed
);
2068 ndr_print_uint32(ndr
, "bytes_needed", *r
->out
.bytes_needed
);
2070 ndr_print_ptr(ndr
, "services_returned", r
->out
.services_returned
);
2072 ndr_print_uint32(ndr
, "services_returned", *r
->out
.services_returned
);
2074 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
2080 static enum ndr_err_code
ndr_push_svcctl_EnumServicesStatusW(struct ndr_push
*ndr
, int flags
, const struct svcctl_EnumServicesStatusW
*r
)
2082 if (flags
& NDR_IN
) {
2083 if (r
->in
.handle
== NULL
) {
2084 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
2086 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->in
.handle
));
2087 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.type
));
2088 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.state
));
2089 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.buf_size
));
2090 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.resume_handle
));
2091 if (r
->in
.resume_handle
) {
2092 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, *r
->in
.resume_handle
));
2095 if (flags
& NDR_OUT
) {
2096 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.buf_size
));
2097 NDR_CHECK(ndr_push_array_uint8(ndr
, NDR_SCALARS
, r
->out
.service
, r
->in
.buf_size
));
2098 if (r
->out
.bytes_needed
== NULL
) {
2099 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
2101 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, *r
->out
.bytes_needed
));
2102 if (r
->out
.services_returned
== NULL
) {
2103 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
2105 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, *r
->out
.services_returned
));
2106 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->out
.resume_handle
));
2107 if (r
->out
.resume_handle
) {
2108 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, *r
->out
.resume_handle
));
2110 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
2112 return NDR_ERR_SUCCESS
;
2115 static enum ndr_err_code
ndr_pull_svcctl_EnumServicesStatusW(struct ndr_pull
*ndr
, int flags
, struct svcctl_EnumServicesStatusW
*r
)
2117 uint32_t _ptr_resume_handle
;
2118 TALLOC_CTX
*_mem_save_handle_0
;
2119 TALLOC_CTX
*_mem_save_bytes_needed_0
;
2120 TALLOC_CTX
*_mem_save_services_returned_0
;
2121 TALLOC_CTX
*_mem_save_resume_handle_0
;
2122 if (flags
& NDR_IN
) {
2123 ZERO_STRUCT(r
->out
);
2125 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
2126 NDR_PULL_ALLOC(ndr
, r
->in
.handle
);
2128 _mem_save_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
2129 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.handle
, LIBNDR_FLAG_REF_ALLOC
);
2130 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->in
.handle
));
2131 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_handle_0
, LIBNDR_FLAG_REF_ALLOC
);
2132 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.type
));
2133 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.state
));
2134 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.buf_size
));
2135 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_resume_handle
));
2136 if (_ptr_resume_handle
) {
2137 NDR_PULL_ALLOC(ndr
, r
->in
.resume_handle
);
2139 r
->in
.resume_handle
= NULL
;
2141 if (r
->in
.resume_handle
) {
2142 _mem_save_resume_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
2143 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.resume_handle
, 0);
2144 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, r
->in
.resume_handle
));
2145 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_resume_handle_0
, 0);
2147 NDR_PULL_ALLOC(ndr
, r
->out
.bytes_needed
);
2148 ZERO_STRUCTP(r
->out
.bytes_needed
);
2149 NDR_PULL_ALLOC(ndr
, r
->out
.services_returned
);
2150 ZERO_STRUCTP(r
->out
.services_returned
);
2152 if (flags
& NDR_OUT
) {
2153 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->out
.service
));
2154 NDR_PULL_ALLOC_N(ndr
, r
->out
.service
, ndr_get_array_size(ndr
, &r
->out
.service
));
2155 NDR_CHECK(ndr_pull_array_uint8(ndr
, NDR_SCALARS
, r
->out
.service
, ndr_get_array_size(ndr
, &r
->out
.service
)));
2156 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
2157 NDR_PULL_ALLOC(ndr
, r
->out
.bytes_needed
);
2159 _mem_save_bytes_needed_0
= NDR_PULL_GET_MEM_CTX(ndr
);
2160 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.bytes_needed
, LIBNDR_FLAG_REF_ALLOC
);
2161 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, r
->out
.bytes_needed
));
2162 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_bytes_needed_0
, LIBNDR_FLAG_REF_ALLOC
);
2163 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
2164 NDR_PULL_ALLOC(ndr
, r
->out
.services_returned
);
2166 _mem_save_services_returned_0
= NDR_PULL_GET_MEM_CTX(ndr
);
2167 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.services_returned
, LIBNDR_FLAG_REF_ALLOC
);
2168 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, r
->out
.services_returned
));
2169 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_services_returned_0
, LIBNDR_FLAG_REF_ALLOC
);
2170 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_resume_handle
));
2171 if (_ptr_resume_handle
) {
2172 NDR_PULL_ALLOC(ndr
, r
->out
.resume_handle
);
2174 r
->out
.resume_handle
= NULL
;
2176 if (r
->out
.resume_handle
) {
2177 _mem_save_resume_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
2178 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.resume_handle
, 0);
2179 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, r
->out
.resume_handle
));
2180 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_resume_handle_0
, 0);
2182 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
2183 if (r
->out
.service
) {
2184 NDR_CHECK(ndr_check_array_size(ndr
, (void*)&r
->out
.service
, r
->in
.buf_size
));
2187 return NDR_ERR_SUCCESS
;
2190 _PUBLIC_
void ndr_print_svcctl_EnumServicesStatusW(struct ndr_print
*ndr
, const char *name
, int flags
, const struct svcctl_EnumServicesStatusW
*r
)
2192 ndr_print_struct(ndr
, name
, "svcctl_EnumServicesStatusW");
2194 if (flags
& NDR_SET_VALUES
) {
2195 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
2197 if (flags
& NDR_IN
) {
2198 ndr_print_struct(ndr
, "in", "svcctl_EnumServicesStatusW");
2200 ndr_print_ptr(ndr
, "handle", r
->in
.handle
);
2202 ndr_print_policy_handle(ndr
, "handle", r
->in
.handle
);
2204 ndr_print_uint32(ndr
, "type", r
->in
.type
);
2205 ndr_print_uint32(ndr
, "state", r
->in
.state
);
2206 ndr_print_uint32(ndr
, "buf_size", r
->in
.buf_size
);
2207 ndr_print_ptr(ndr
, "resume_handle", r
->in
.resume_handle
);
2209 if (r
->in
.resume_handle
) {
2210 ndr_print_uint32(ndr
, "resume_handle", *r
->in
.resume_handle
);
2215 if (flags
& NDR_OUT
) {
2216 ndr_print_struct(ndr
, "out", "svcctl_EnumServicesStatusW");
2218 ndr_print_array_uint8(ndr
, "service", r
->out
.service
, r
->in
.buf_size
);
2219 ndr_print_ptr(ndr
, "bytes_needed", r
->out
.bytes_needed
);
2221 ndr_print_uint32(ndr
, "bytes_needed", *r
->out
.bytes_needed
);
2223 ndr_print_ptr(ndr
, "services_returned", r
->out
.services_returned
);
2225 ndr_print_uint32(ndr
, "services_returned", *r
->out
.services_returned
);
2227 ndr_print_ptr(ndr
, "resume_handle", r
->out
.resume_handle
);
2229 if (r
->out
.resume_handle
) {
2230 ndr_print_uint32(ndr
, "resume_handle", *r
->out
.resume_handle
);
2233 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
2239 static enum ndr_err_code
ndr_push_svcctl_OpenSCManagerW(struct ndr_push
*ndr
, int flags
, const struct svcctl_OpenSCManagerW
*r
)
2241 if (flags
& NDR_IN
) {
2242 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.MachineName
));
2243 if (r
->in
.MachineName
) {
2244 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.MachineName
, CH_UTF16
)));
2245 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, 0));
2246 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.MachineName
, CH_UTF16
)));
2247 NDR_CHECK(ndr_push_charset(ndr
, NDR_SCALARS
, r
->in
.MachineName
, ndr_charset_length(r
->in
.MachineName
, CH_UTF16
), sizeof(uint16_t), CH_UTF16
));
2249 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.DatabaseName
));
2250 if (r
->in
.DatabaseName
) {
2251 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.DatabaseName
, CH_UTF16
)));
2252 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, 0));
2253 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.DatabaseName
, CH_UTF16
)));
2254 NDR_CHECK(ndr_push_charset(ndr
, NDR_SCALARS
, r
->in
.DatabaseName
, ndr_charset_length(r
->in
.DatabaseName
, CH_UTF16
), sizeof(uint16_t), CH_UTF16
));
2256 NDR_CHECK(ndr_push_svcctl_MgrAccessMask(ndr
, NDR_SCALARS
, r
->in
.access_mask
));
2258 if (flags
& NDR_OUT
) {
2259 if (r
->out
.handle
== NULL
) {
2260 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
2262 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->out
.handle
));
2263 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
2265 return NDR_ERR_SUCCESS
;
2268 static enum ndr_err_code
ndr_pull_svcctl_OpenSCManagerW(struct ndr_pull
*ndr
, int flags
, struct svcctl_OpenSCManagerW
*r
)
2270 uint32_t _ptr_MachineName
;
2271 uint32_t _ptr_DatabaseName
;
2272 TALLOC_CTX
*_mem_save_MachineName_0
;
2273 TALLOC_CTX
*_mem_save_DatabaseName_0
;
2274 TALLOC_CTX
*_mem_save_handle_0
;
2275 if (flags
& NDR_IN
) {
2276 ZERO_STRUCT(r
->out
);
2278 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_MachineName
));
2279 if (_ptr_MachineName
) {
2280 NDR_PULL_ALLOC(ndr
, r
->in
.MachineName
);
2282 r
->in
.MachineName
= NULL
;
2284 if (r
->in
.MachineName
) {
2285 _mem_save_MachineName_0
= NDR_PULL_GET_MEM_CTX(ndr
);
2286 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.MachineName
, 0);
2287 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->in
.MachineName
));
2288 NDR_CHECK(ndr_pull_array_length(ndr
, &r
->in
.MachineName
));
2289 if (ndr_get_array_length(ndr
, &r
->in
.MachineName
) > ndr_get_array_size(ndr
, &r
->in
.MachineName
)) {
2290 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
));
2292 NDR_CHECK(ndr_check_string_terminator(ndr
, ndr_get_array_length(ndr
, &r
->in
.MachineName
), sizeof(uint16_t)));
2293 NDR_CHECK(ndr_pull_charset(ndr
, NDR_SCALARS
, &r
->in
.MachineName
, ndr_get_array_length(ndr
, &r
->in
.MachineName
), sizeof(uint16_t), CH_UTF16
));
2294 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_MachineName_0
, 0);
2296 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_DatabaseName
));
2297 if (_ptr_DatabaseName
) {
2298 NDR_PULL_ALLOC(ndr
, r
->in
.DatabaseName
);
2300 r
->in
.DatabaseName
= NULL
;
2302 if (r
->in
.DatabaseName
) {
2303 _mem_save_DatabaseName_0
= NDR_PULL_GET_MEM_CTX(ndr
);
2304 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.DatabaseName
, 0);
2305 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->in
.DatabaseName
));
2306 NDR_CHECK(ndr_pull_array_length(ndr
, &r
->in
.DatabaseName
));
2307 if (ndr_get_array_length(ndr
, &r
->in
.DatabaseName
) > ndr_get_array_size(ndr
, &r
->in
.DatabaseName
)) {
2308 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
));
2310 NDR_CHECK(ndr_check_string_terminator(ndr
, ndr_get_array_length(ndr
, &r
->in
.DatabaseName
), sizeof(uint16_t)));
2311 NDR_CHECK(ndr_pull_charset(ndr
, NDR_SCALARS
, &r
->in
.DatabaseName
, ndr_get_array_length(ndr
, &r
->in
.DatabaseName
), sizeof(uint16_t), CH_UTF16
));
2312 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_DatabaseName_0
, 0);
2314 NDR_CHECK(ndr_pull_svcctl_MgrAccessMask(ndr
, NDR_SCALARS
, &r
->in
.access_mask
));
2315 NDR_PULL_ALLOC(ndr
, r
->out
.handle
);
2316 ZERO_STRUCTP(r
->out
.handle
);
2318 if (flags
& NDR_OUT
) {
2319 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
2320 NDR_PULL_ALLOC(ndr
, r
->out
.handle
);
2322 _mem_save_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
2323 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.handle
, LIBNDR_FLAG_REF_ALLOC
);
2324 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->out
.handle
));
2325 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_handle_0
, LIBNDR_FLAG_REF_ALLOC
);
2326 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
2328 return NDR_ERR_SUCCESS
;
2331 _PUBLIC_
void ndr_print_svcctl_OpenSCManagerW(struct ndr_print
*ndr
, const char *name
, int flags
, const struct svcctl_OpenSCManagerW
*r
)
2333 ndr_print_struct(ndr
, name
, "svcctl_OpenSCManagerW");
2335 if (flags
& NDR_SET_VALUES
) {
2336 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
2338 if (flags
& NDR_IN
) {
2339 ndr_print_struct(ndr
, "in", "svcctl_OpenSCManagerW");
2341 ndr_print_ptr(ndr
, "MachineName", r
->in
.MachineName
);
2343 if (r
->in
.MachineName
) {
2344 ndr_print_string(ndr
, "MachineName", r
->in
.MachineName
);
2347 ndr_print_ptr(ndr
, "DatabaseName", r
->in
.DatabaseName
);
2349 if (r
->in
.DatabaseName
) {
2350 ndr_print_string(ndr
, "DatabaseName", r
->in
.DatabaseName
);
2353 ndr_print_svcctl_MgrAccessMask(ndr
, "access_mask", r
->in
.access_mask
);
2356 if (flags
& NDR_OUT
) {
2357 ndr_print_struct(ndr
, "out", "svcctl_OpenSCManagerW");
2359 ndr_print_ptr(ndr
, "handle", r
->out
.handle
);
2361 ndr_print_policy_handle(ndr
, "handle", r
->out
.handle
);
2363 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
2369 static enum ndr_err_code
ndr_push_svcctl_OpenServiceW(struct ndr_push
*ndr
, int flags
, const struct svcctl_OpenServiceW
*r
)
2371 if (flags
& NDR_IN
) {
2372 if (r
->in
.scmanager_handle
== NULL
) {
2373 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
2375 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->in
.scmanager_handle
));
2376 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.ServiceName
, CH_UTF16
)));
2377 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, 0));
2378 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.ServiceName
, CH_UTF16
)));
2379 NDR_CHECK(ndr_push_charset(ndr
, NDR_SCALARS
, r
->in
.ServiceName
, ndr_charset_length(r
->in
.ServiceName
, CH_UTF16
), sizeof(uint16_t), CH_UTF16
));
2380 NDR_CHECK(ndr_push_svcctl_ServiceAccessMask(ndr
, NDR_SCALARS
, r
->in
.access_mask
));
2382 if (flags
& NDR_OUT
) {
2383 if (r
->out
.handle
== NULL
) {
2384 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
2386 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->out
.handle
));
2387 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
2389 return NDR_ERR_SUCCESS
;
2392 static enum ndr_err_code
ndr_pull_svcctl_OpenServiceW(struct ndr_pull
*ndr
, int flags
, struct svcctl_OpenServiceW
*r
)
2394 TALLOC_CTX
*_mem_save_scmanager_handle_0
;
2395 TALLOC_CTX
*_mem_save_handle_0
;
2396 if (flags
& NDR_IN
) {
2397 ZERO_STRUCT(r
->out
);
2399 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
2400 NDR_PULL_ALLOC(ndr
, r
->in
.scmanager_handle
);
2402 _mem_save_scmanager_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
2403 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.scmanager_handle
, LIBNDR_FLAG_REF_ALLOC
);
2404 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->in
.scmanager_handle
));
2405 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_scmanager_handle_0
, LIBNDR_FLAG_REF_ALLOC
);
2406 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->in
.ServiceName
));
2407 NDR_CHECK(ndr_pull_array_length(ndr
, &r
->in
.ServiceName
));
2408 if (ndr_get_array_length(ndr
, &r
->in
.ServiceName
) > ndr_get_array_size(ndr
, &r
->in
.ServiceName
)) {
2409 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
));
2411 NDR_CHECK(ndr_check_string_terminator(ndr
, ndr_get_array_length(ndr
, &r
->in
.ServiceName
), sizeof(uint16_t)));
2412 NDR_CHECK(ndr_pull_charset(ndr
, NDR_SCALARS
, &r
->in
.ServiceName
, ndr_get_array_length(ndr
, &r
->in
.ServiceName
), sizeof(uint16_t), CH_UTF16
));
2413 NDR_CHECK(ndr_pull_svcctl_ServiceAccessMask(ndr
, NDR_SCALARS
, &r
->in
.access_mask
));
2414 NDR_PULL_ALLOC(ndr
, r
->out
.handle
);
2415 ZERO_STRUCTP(r
->out
.handle
);
2417 if (flags
& NDR_OUT
) {
2418 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
2419 NDR_PULL_ALLOC(ndr
, r
->out
.handle
);
2421 _mem_save_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
2422 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.handle
, LIBNDR_FLAG_REF_ALLOC
);
2423 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->out
.handle
));
2424 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_handle_0
, LIBNDR_FLAG_REF_ALLOC
);
2425 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
2427 return NDR_ERR_SUCCESS
;
2430 _PUBLIC_
void ndr_print_svcctl_OpenServiceW(struct ndr_print
*ndr
, const char *name
, int flags
, const struct svcctl_OpenServiceW
*r
)
2432 ndr_print_struct(ndr
, name
, "svcctl_OpenServiceW");
2434 if (flags
& NDR_SET_VALUES
) {
2435 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
2437 if (flags
& NDR_IN
) {
2438 ndr_print_struct(ndr
, "in", "svcctl_OpenServiceW");
2440 ndr_print_ptr(ndr
, "scmanager_handle", r
->in
.scmanager_handle
);
2442 ndr_print_policy_handle(ndr
, "scmanager_handle", r
->in
.scmanager_handle
);
2444 ndr_print_string(ndr
, "ServiceName", r
->in
.ServiceName
);
2445 ndr_print_svcctl_ServiceAccessMask(ndr
, "access_mask", r
->in
.access_mask
);
2448 if (flags
& NDR_OUT
) {
2449 ndr_print_struct(ndr
, "out", "svcctl_OpenServiceW");
2451 ndr_print_ptr(ndr
, "handle", r
->out
.handle
);
2453 ndr_print_policy_handle(ndr
, "handle", r
->out
.handle
);
2455 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
2461 static enum ndr_err_code
ndr_push_svcctl_QueryServiceConfigW(struct ndr_push
*ndr
, int flags
, const struct svcctl_QueryServiceConfigW
*r
)
2463 if (flags
& NDR_IN
) {
2464 if (r
->in
.handle
== NULL
) {
2465 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
2467 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->in
.handle
));
2468 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.buf_size
));
2470 if (flags
& NDR_OUT
) {
2471 if (r
->out
.query
== NULL
) {
2472 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
2474 NDR_CHECK(ndr_push_QUERY_SERVICE_CONFIG(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->out
.query
));
2475 if (r
->out
.bytes_needed
== NULL
) {
2476 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
2478 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, *r
->out
.bytes_needed
));
2479 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
2481 return NDR_ERR_SUCCESS
;
2484 static enum ndr_err_code
ndr_pull_svcctl_QueryServiceConfigW(struct ndr_pull
*ndr
, int flags
, struct svcctl_QueryServiceConfigW
*r
)
2486 TALLOC_CTX
*_mem_save_handle_0
;
2487 TALLOC_CTX
*_mem_save_query_0
;
2488 TALLOC_CTX
*_mem_save_bytes_needed_0
;
2489 if (flags
& NDR_IN
) {
2490 ZERO_STRUCT(r
->out
);
2492 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
2493 NDR_PULL_ALLOC(ndr
, r
->in
.handle
);
2495 _mem_save_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
2496 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.handle
, LIBNDR_FLAG_REF_ALLOC
);
2497 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->in
.handle
));
2498 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_handle_0
, LIBNDR_FLAG_REF_ALLOC
);
2499 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.buf_size
));
2500 if (r
->in
.buf_size
< 0 || r
->in
.buf_size
> 8192) {
2501 return ndr_pull_error(ndr
, NDR_ERR_RANGE
, "value out of range");
2503 NDR_PULL_ALLOC(ndr
, r
->out
.query
);
2504 ZERO_STRUCTP(r
->out
.query
);
2505 NDR_PULL_ALLOC(ndr
, r
->out
.bytes_needed
);
2506 ZERO_STRUCTP(r
->out
.bytes_needed
);
2508 if (flags
& NDR_OUT
) {
2509 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
2510 NDR_PULL_ALLOC(ndr
, r
->out
.query
);
2512 _mem_save_query_0
= NDR_PULL_GET_MEM_CTX(ndr
);
2513 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.query
, LIBNDR_FLAG_REF_ALLOC
);
2514 NDR_CHECK(ndr_pull_QUERY_SERVICE_CONFIG(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->out
.query
));
2515 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_query_0
, LIBNDR_FLAG_REF_ALLOC
);
2516 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
2517 NDR_PULL_ALLOC(ndr
, r
->out
.bytes_needed
);
2519 _mem_save_bytes_needed_0
= NDR_PULL_GET_MEM_CTX(ndr
);
2520 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.bytes_needed
, LIBNDR_FLAG_REF_ALLOC
);
2521 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, r
->out
.bytes_needed
));
2522 if (*r
->out
.bytes_needed
< 0 || *r
->out
.bytes_needed
> 8192) {
2523 return ndr_pull_error(ndr
, NDR_ERR_RANGE
, "value out of range");
2525 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_bytes_needed_0
, LIBNDR_FLAG_REF_ALLOC
);
2526 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
2528 return NDR_ERR_SUCCESS
;
2531 _PUBLIC_
void ndr_print_svcctl_QueryServiceConfigW(struct ndr_print
*ndr
, const char *name
, int flags
, const struct svcctl_QueryServiceConfigW
*r
)
2533 ndr_print_struct(ndr
, name
, "svcctl_QueryServiceConfigW");
2535 if (flags
& NDR_SET_VALUES
) {
2536 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
2538 if (flags
& NDR_IN
) {
2539 ndr_print_struct(ndr
, "in", "svcctl_QueryServiceConfigW");
2541 ndr_print_ptr(ndr
, "handle", r
->in
.handle
);
2543 ndr_print_policy_handle(ndr
, "handle", r
->in
.handle
);
2545 ndr_print_uint32(ndr
, "buf_size", r
->in
.buf_size
);
2548 if (flags
& NDR_OUT
) {
2549 ndr_print_struct(ndr
, "out", "svcctl_QueryServiceConfigW");
2551 ndr_print_ptr(ndr
, "query", r
->out
.query
);
2553 ndr_print_QUERY_SERVICE_CONFIG(ndr
, "query", r
->out
.query
);
2555 ndr_print_ptr(ndr
, "bytes_needed", r
->out
.bytes_needed
);
2557 ndr_print_uint32(ndr
, "bytes_needed", *r
->out
.bytes_needed
);
2559 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
2565 static enum ndr_err_code
ndr_push_svcctl_QueryServiceLockStatusW(struct ndr_push
*ndr
, int flags
, const struct svcctl_QueryServiceLockStatusW
*r
)
2567 if (flags
& NDR_IN
) {
2568 if (r
->in
.handle
== NULL
) {
2569 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
2571 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->in
.handle
));
2572 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.buf_size
));
2574 if (flags
& NDR_OUT
) {
2575 if (r
->out
.lock_status
== NULL
) {
2576 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
2578 NDR_CHECK(ndr_push_SERVICE_LOCK_STATUS(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->out
.lock_status
));
2579 if (r
->out
.required_buf_size
== NULL
) {
2580 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
2582 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, *r
->out
.required_buf_size
));
2583 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
2585 return NDR_ERR_SUCCESS
;
2588 static enum ndr_err_code
ndr_pull_svcctl_QueryServiceLockStatusW(struct ndr_pull
*ndr
, int flags
, struct svcctl_QueryServiceLockStatusW
*r
)
2590 TALLOC_CTX
*_mem_save_handle_0
;
2591 TALLOC_CTX
*_mem_save_lock_status_0
;
2592 TALLOC_CTX
*_mem_save_required_buf_size_0
;
2593 if (flags
& NDR_IN
) {
2594 ZERO_STRUCT(r
->out
);
2596 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
2597 NDR_PULL_ALLOC(ndr
, r
->in
.handle
);
2599 _mem_save_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
2600 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.handle
, LIBNDR_FLAG_REF_ALLOC
);
2601 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->in
.handle
));
2602 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_handle_0
, LIBNDR_FLAG_REF_ALLOC
);
2603 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.buf_size
));
2604 NDR_PULL_ALLOC(ndr
, r
->out
.lock_status
);
2605 ZERO_STRUCTP(r
->out
.lock_status
);
2606 NDR_PULL_ALLOC(ndr
, r
->out
.required_buf_size
);
2607 ZERO_STRUCTP(r
->out
.required_buf_size
);
2609 if (flags
& NDR_OUT
) {
2610 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
2611 NDR_PULL_ALLOC(ndr
, r
->out
.lock_status
);
2613 _mem_save_lock_status_0
= NDR_PULL_GET_MEM_CTX(ndr
);
2614 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.lock_status
, LIBNDR_FLAG_REF_ALLOC
);
2615 NDR_CHECK(ndr_pull_SERVICE_LOCK_STATUS(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->out
.lock_status
));
2616 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_lock_status_0
, LIBNDR_FLAG_REF_ALLOC
);
2617 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
2618 NDR_PULL_ALLOC(ndr
, r
->out
.required_buf_size
);
2620 _mem_save_required_buf_size_0
= NDR_PULL_GET_MEM_CTX(ndr
);
2621 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.required_buf_size
, LIBNDR_FLAG_REF_ALLOC
);
2622 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, r
->out
.required_buf_size
));
2623 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_required_buf_size_0
, LIBNDR_FLAG_REF_ALLOC
);
2624 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
2626 return NDR_ERR_SUCCESS
;
2629 _PUBLIC_
void ndr_print_svcctl_QueryServiceLockStatusW(struct ndr_print
*ndr
, const char *name
, int flags
, const struct svcctl_QueryServiceLockStatusW
*r
)
2631 ndr_print_struct(ndr
, name
, "svcctl_QueryServiceLockStatusW");
2633 if (flags
& NDR_SET_VALUES
) {
2634 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
2636 if (flags
& NDR_IN
) {
2637 ndr_print_struct(ndr
, "in", "svcctl_QueryServiceLockStatusW");
2639 ndr_print_ptr(ndr
, "handle", r
->in
.handle
);
2641 ndr_print_policy_handle(ndr
, "handle", r
->in
.handle
);
2643 ndr_print_uint32(ndr
, "buf_size", r
->in
.buf_size
);
2646 if (flags
& NDR_OUT
) {
2647 ndr_print_struct(ndr
, "out", "svcctl_QueryServiceLockStatusW");
2649 ndr_print_ptr(ndr
, "lock_status", r
->out
.lock_status
);
2651 ndr_print_SERVICE_LOCK_STATUS(ndr
, "lock_status", r
->out
.lock_status
);
2653 ndr_print_ptr(ndr
, "required_buf_size", r
->out
.required_buf_size
);
2655 ndr_print_uint32(ndr
, "required_buf_size", *r
->out
.required_buf_size
);
2657 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
2663 static enum ndr_err_code
ndr_push_svcctl_StartServiceW(struct ndr_push
*ndr
, int flags
, const struct svcctl_StartServiceW
*r
)
2665 if (flags
& NDR_IN
) {
2666 if (r
->in
.handle
== NULL
) {
2667 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
2669 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->in
.handle
));
2670 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.NumArgs
));
2671 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.Arguments
));
2672 if (r
->in
.Arguments
) {
2673 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.Arguments
, CH_UTF16
)));
2674 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, 0));
2675 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.Arguments
, CH_UTF16
)));
2676 NDR_CHECK(ndr_push_charset(ndr
, NDR_SCALARS
, r
->in
.Arguments
, ndr_charset_length(r
->in
.Arguments
, CH_UTF16
), sizeof(uint16_t), CH_UTF16
));
2679 if (flags
& NDR_OUT
) {
2680 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
2682 return NDR_ERR_SUCCESS
;
2685 static enum ndr_err_code
ndr_pull_svcctl_StartServiceW(struct ndr_pull
*ndr
, int flags
, struct svcctl_StartServiceW
*r
)
2687 uint32_t _ptr_Arguments
;
2688 TALLOC_CTX
*_mem_save_handle_0
;
2689 TALLOC_CTX
*_mem_save_Arguments_0
;
2690 if (flags
& NDR_IN
) {
2691 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
2692 NDR_PULL_ALLOC(ndr
, r
->in
.handle
);
2694 _mem_save_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
2695 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.handle
, LIBNDR_FLAG_REF_ALLOC
);
2696 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->in
.handle
));
2697 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_handle_0
, LIBNDR_FLAG_REF_ALLOC
);
2698 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.NumArgs
));
2699 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_Arguments
));
2700 if (_ptr_Arguments
) {
2701 NDR_PULL_ALLOC(ndr
, r
->in
.Arguments
);
2703 r
->in
.Arguments
= NULL
;
2705 if (r
->in
.Arguments
) {
2706 _mem_save_Arguments_0
= NDR_PULL_GET_MEM_CTX(ndr
);
2707 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.Arguments
, 0);
2708 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->in
.Arguments
));
2709 NDR_CHECK(ndr_pull_array_length(ndr
, &r
->in
.Arguments
));
2710 if (ndr_get_array_length(ndr
, &r
->in
.Arguments
) > ndr_get_array_size(ndr
, &r
->in
.Arguments
)) {
2711 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
));
2713 NDR_CHECK(ndr_check_string_terminator(ndr
, ndr_get_array_length(ndr
, &r
->in
.Arguments
), sizeof(uint16_t)));
2714 NDR_CHECK(ndr_pull_charset(ndr
, NDR_SCALARS
, &r
->in
.Arguments
, ndr_get_array_length(ndr
, &r
->in
.Arguments
), sizeof(uint16_t), CH_UTF16
));
2715 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_Arguments_0
, 0);
2718 if (flags
& NDR_OUT
) {
2719 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
2721 return NDR_ERR_SUCCESS
;
2724 _PUBLIC_
void ndr_print_svcctl_StartServiceW(struct ndr_print
*ndr
, const char *name
, int flags
, const struct svcctl_StartServiceW
*r
)
2726 ndr_print_struct(ndr
, name
, "svcctl_StartServiceW");
2728 if (flags
& NDR_SET_VALUES
) {
2729 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
2731 if (flags
& NDR_IN
) {
2732 ndr_print_struct(ndr
, "in", "svcctl_StartServiceW");
2734 ndr_print_ptr(ndr
, "handle", r
->in
.handle
);
2736 ndr_print_policy_handle(ndr
, "handle", r
->in
.handle
);
2738 ndr_print_uint32(ndr
, "NumArgs", r
->in
.NumArgs
);
2739 ndr_print_ptr(ndr
, "Arguments", r
->in
.Arguments
);
2741 if (r
->in
.Arguments
) {
2742 ndr_print_string(ndr
, "Arguments", r
->in
.Arguments
);
2747 if (flags
& NDR_OUT
) {
2748 ndr_print_struct(ndr
, "out", "svcctl_StartServiceW");
2750 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
2756 static enum ndr_err_code
ndr_push_svcctl_GetServiceDisplayNameW(struct ndr_push
*ndr
, int flags
, const struct svcctl_GetServiceDisplayNameW
*r
)
2758 if (flags
& NDR_IN
) {
2759 if (r
->in
.handle
== NULL
) {
2760 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
2762 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->in
.handle
));
2763 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.service_name
));
2764 if (r
->in
.service_name
) {
2765 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.service_name
, CH_UTF16
)));
2766 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, 0));
2767 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.service_name
, CH_UTF16
)));
2768 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
));
2770 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.display_name_length
));
2771 if (r
->in
.display_name_length
) {
2772 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, *r
->in
.display_name_length
));
2775 if (flags
& NDR_OUT
) {
2776 if (r
->out
.display_name
== NULL
) {
2777 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
2779 NDR_CHECK(ndr_push_unique_ptr(ndr
, *r
->out
.display_name
));
2780 if (*r
->out
.display_name
) {
2781 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(*r
->out
.display_name
, CH_UTF16
)));
2782 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, 0));
2783 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(*r
->out
.display_name
, CH_UTF16
)));
2784 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
));
2786 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->out
.display_name_length
));
2787 if (r
->out
.display_name_length
) {
2788 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, *r
->out
.display_name_length
));
2790 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
2792 return NDR_ERR_SUCCESS
;
2795 static enum ndr_err_code
ndr_pull_svcctl_GetServiceDisplayNameW(struct ndr_pull
*ndr
, int flags
, struct svcctl_GetServiceDisplayNameW
*r
)
2797 uint32_t _ptr_service_name
;
2798 uint32_t _ptr_display_name
;
2799 uint32_t _ptr_display_name_length
;
2800 TALLOC_CTX
*_mem_save_handle_0
;
2801 TALLOC_CTX
*_mem_save_service_name_0
;
2802 TALLOC_CTX
*_mem_save_display_name_0
;
2803 TALLOC_CTX
*_mem_save_display_name_1
;
2804 TALLOC_CTX
*_mem_save_display_name_length_0
;
2805 if (flags
& NDR_IN
) {
2806 ZERO_STRUCT(r
->out
);
2808 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
2809 NDR_PULL_ALLOC(ndr
, r
->in
.handle
);
2811 _mem_save_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
2812 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.handle
, LIBNDR_FLAG_REF_ALLOC
);
2813 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->in
.handle
));
2814 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_handle_0
, LIBNDR_FLAG_REF_ALLOC
);
2815 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_service_name
));
2816 if (_ptr_service_name
) {
2817 NDR_PULL_ALLOC(ndr
, r
->in
.service_name
);
2819 r
->in
.service_name
= NULL
;
2821 if (r
->in
.service_name
) {
2822 _mem_save_service_name_0
= NDR_PULL_GET_MEM_CTX(ndr
);
2823 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.service_name
, 0);
2824 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->in
.service_name
));
2825 NDR_CHECK(ndr_pull_array_length(ndr
, &r
->in
.service_name
));
2826 if (ndr_get_array_length(ndr
, &r
->in
.service_name
) > ndr_get_array_size(ndr
, &r
->in
.service_name
)) {
2827 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
));
2829 NDR_CHECK(ndr_check_string_terminator(ndr
, ndr_get_array_length(ndr
, &r
->in
.service_name
), sizeof(uint16_t)));
2830 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
));
2831 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_service_name_0
, 0);
2833 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_display_name_length
));
2834 if (_ptr_display_name_length
) {
2835 NDR_PULL_ALLOC(ndr
, r
->in
.display_name_length
);
2837 r
->in
.display_name_length
= NULL
;
2839 if (r
->in
.display_name_length
) {
2840 _mem_save_display_name_length_0
= NDR_PULL_GET_MEM_CTX(ndr
);
2841 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.display_name_length
, 0);
2842 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, r
->in
.display_name_length
));
2843 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_display_name_length_0
, 0);
2845 NDR_PULL_ALLOC(ndr
, r
->out
.display_name
);
2846 ZERO_STRUCTP(r
->out
.display_name
);
2848 if (flags
& NDR_OUT
) {
2849 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
2850 NDR_PULL_ALLOC(ndr
, r
->out
.display_name
);
2852 _mem_save_display_name_0
= NDR_PULL_GET_MEM_CTX(ndr
);
2853 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.display_name
, LIBNDR_FLAG_REF_ALLOC
);
2854 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_display_name
));
2855 if (_ptr_display_name
) {
2856 NDR_PULL_ALLOC(ndr
, *r
->out
.display_name
);
2858 *r
->out
.display_name
= NULL
;
2860 if (*r
->out
.display_name
) {
2861 _mem_save_display_name_1
= NDR_PULL_GET_MEM_CTX(ndr
);
2862 NDR_PULL_SET_MEM_CTX(ndr
, *r
->out
.display_name
, 0);
2863 NDR_CHECK(ndr_pull_array_size(ndr
, r
->out
.display_name
));
2864 NDR_CHECK(ndr_pull_array_length(ndr
, r
->out
.display_name
));
2865 if (ndr_get_array_length(ndr
, r
->out
.display_name
) > ndr_get_array_size(ndr
, r
->out
.display_name
)) {
2866 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
));
2868 NDR_CHECK(ndr_check_string_terminator(ndr
, ndr_get_array_length(ndr
, r
->out
.display_name
), sizeof(uint16_t)));
2869 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
));
2870 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_display_name_1
, 0);
2872 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_display_name_0
, LIBNDR_FLAG_REF_ALLOC
);
2873 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_display_name_length
));
2874 if (_ptr_display_name_length
) {
2875 NDR_PULL_ALLOC(ndr
, r
->out
.display_name_length
);
2877 r
->out
.display_name_length
= NULL
;
2879 if (r
->out
.display_name_length
) {
2880 _mem_save_display_name_length_0
= NDR_PULL_GET_MEM_CTX(ndr
);
2881 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.display_name_length
, 0);
2882 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, r
->out
.display_name_length
));
2883 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_display_name_length_0
, 0);
2885 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
2887 return NDR_ERR_SUCCESS
;
2890 _PUBLIC_
void ndr_print_svcctl_GetServiceDisplayNameW(struct ndr_print
*ndr
, const char *name
, int flags
, const struct svcctl_GetServiceDisplayNameW
*r
)
2892 ndr_print_struct(ndr
, name
, "svcctl_GetServiceDisplayNameW");
2894 if (flags
& NDR_SET_VALUES
) {
2895 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
2897 if (flags
& NDR_IN
) {
2898 ndr_print_struct(ndr
, "in", "svcctl_GetServiceDisplayNameW");
2900 ndr_print_ptr(ndr
, "handle", r
->in
.handle
);
2902 ndr_print_policy_handle(ndr
, "handle", r
->in
.handle
);
2904 ndr_print_ptr(ndr
, "service_name", r
->in
.service_name
);
2906 if (r
->in
.service_name
) {
2907 ndr_print_string(ndr
, "service_name", r
->in
.service_name
);
2910 ndr_print_ptr(ndr
, "display_name_length", r
->in
.display_name_length
);
2912 if (r
->in
.display_name_length
) {
2913 ndr_print_uint32(ndr
, "display_name_length", *r
->in
.display_name_length
);
2918 if (flags
& NDR_OUT
) {
2919 ndr_print_struct(ndr
, "out", "svcctl_GetServiceDisplayNameW");
2921 ndr_print_ptr(ndr
, "display_name", r
->out
.display_name
);
2923 ndr_print_ptr(ndr
, "display_name", *r
->out
.display_name
);
2925 if (*r
->out
.display_name
) {
2926 ndr_print_string(ndr
, "display_name", *r
->out
.display_name
);
2930 ndr_print_ptr(ndr
, "display_name_length", r
->out
.display_name_length
);
2932 if (r
->out
.display_name_length
) {
2933 ndr_print_uint32(ndr
, "display_name_length", *r
->out
.display_name_length
);
2936 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
2942 static enum ndr_err_code
ndr_push_svcctl_GetServiceKeyNameW(struct ndr_push
*ndr
, int flags
, const struct svcctl_GetServiceKeyNameW
*r
)
2944 if (flags
& NDR_IN
) {
2945 if (r
->in
.handle
== NULL
) {
2946 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
2948 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->in
.handle
));
2949 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.service_name
));
2950 if (r
->in
.service_name
) {
2951 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.service_name
, CH_UTF16
)));
2952 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, 0));
2953 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.service_name
, CH_UTF16
)));
2954 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
));
2956 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.display_name_length
));
2957 if (r
->in
.display_name_length
) {
2958 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, *r
->in
.display_name_length
));
2961 if (flags
& NDR_OUT
) {
2962 if (r
->out
.key_name
== NULL
) {
2963 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
2965 NDR_CHECK(ndr_push_unique_ptr(ndr
, *r
->out
.key_name
));
2966 if (*r
->out
.key_name
) {
2967 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(*r
->out
.key_name
, CH_UTF16
)));
2968 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, 0));
2969 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(*r
->out
.key_name
, CH_UTF16
)));
2970 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
));
2972 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->out
.display_name_length
));
2973 if (r
->out
.display_name_length
) {
2974 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, *r
->out
.display_name_length
));
2976 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
2978 return NDR_ERR_SUCCESS
;
2981 static enum ndr_err_code
ndr_pull_svcctl_GetServiceKeyNameW(struct ndr_pull
*ndr
, int flags
, struct svcctl_GetServiceKeyNameW
*r
)
2983 uint32_t _ptr_service_name
;
2984 uint32_t _ptr_key_name
;
2985 uint32_t _ptr_display_name_length
;
2986 TALLOC_CTX
*_mem_save_handle_0
;
2987 TALLOC_CTX
*_mem_save_service_name_0
;
2988 TALLOC_CTX
*_mem_save_key_name_0
;
2989 TALLOC_CTX
*_mem_save_key_name_1
;
2990 TALLOC_CTX
*_mem_save_display_name_length_0
;
2991 if (flags
& NDR_IN
) {
2992 ZERO_STRUCT(r
->out
);
2994 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
2995 NDR_PULL_ALLOC(ndr
, r
->in
.handle
);
2997 _mem_save_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
2998 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.handle
, LIBNDR_FLAG_REF_ALLOC
);
2999 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->in
.handle
));
3000 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_handle_0
, LIBNDR_FLAG_REF_ALLOC
);
3001 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_service_name
));
3002 if (_ptr_service_name
) {
3003 NDR_PULL_ALLOC(ndr
, r
->in
.service_name
);
3005 r
->in
.service_name
= NULL
;
3007 if (r
->in
.service_name
) {
3008 _mem_save_service_name_0
= NDR_PULL_GET_MEM_CTX(ndr
);
3009 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.service_name
, 0);
3010 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->in
.service_name
));
3011 NDR_CHECK(ndr_pull_array_length(ndr
, &r
->in
.service_name
));
3012 if (ndr_get_array_length(ndr
, &r
->in
.service_name
) > ndr_get_array_size(ndr
, &r
->in
.service_name
)) {
3013 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
));
3015 NDR_CHECK(ndr_check_string_terminator(ndr
, ndr_get_array_length(ndr
, &r
->in
.service_name
), sizeof(uint16_t)));
3016 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
));
3017 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_service_name_0
, 0);
3019 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_display_name_length
));
3020 if (_ptr_display_name_length
) {
3021 NDR_PULL_ALLOC(ndr
, r
->in
.display_name_length
);
3023 r
->in
.display_name_length
= NULL
;
3025 if (r
->in
.display_name_length
) {
3026 _mem_save_display_name_length_0
= NDR_PULL_GET_MEM_CTX(ndr
);
3027 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.display_name_length
, 0);
3028 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, r
->in
.display_name_length
));
3029 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_display_name_length_0
, 0);
3031 NDR_PULL_ALLOC(ndr
, r
->out
.key_name
);
3032 ZERO_STRUCTP(r
->out
.key_name
);
3034 if (flags
& NDR_OUT
) {
3035 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
3036 NDR_PULL_ALLOC(ndr
, r
->out
.key_name
);
3038 _mem_save_key_name_0
= NDR_PULL_GET_MEM_CTX(ndr
);
3039 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.key_name
, LIBNDR_FLAG_REF_ALLOC
);
3040 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_key_name
));
3041 if (_ptr_key_name
) {
3042 NDR_PULL_ALLOC(ndr
, *r
->out
.key_name
);
3044 *r
->out
.key_name
= NULL
;
3046 if (*r
->out
.key_name
) {
3047 _mem_save_key_name_1
= NDR_PULL_GET_MEM_CTX(ndr
);
3048 NDR_PULL_SET_MEM_CTX(ndr
, *r
->out
.key_name
, 0);
3049 NDR_CHECK(ndr_pull_array_size(ndr
, r
->out
.key_name
));
3050 NDR_CHECK(ndr_pull_array_length(ndr
, r
->out
.key_name
));
3051 if (ndr_get_array_length(ndr
, r
->out
.key_name
) > ndr_get_array_size(ndr
, r
->out
.key_name
)) {
3052 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
));
3054 NDR_CHECK(ndr_check_string_terminator(ndr
, ndr_get_array_length(ndr
, r
->out
.key_name
), sizeof(uint16_t)));
3055 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
));
3056 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_key_name_1
, 0);
3058 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_key_name_0
, LIBNDR_FLAG_REF_ALLOC
);
3059 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_display_name_length
));
3060 if (_ptr_display_name_length
) {
3061 NDR_PULL_ALLOC(ndr
, r
->out
.display_name_length
);
3063 r
->out
.display_name_length
= NULL
;
3065 if (r
->out
.display_name_length
) {
3066 _mem_save_display_name_length_0
= NDR_PULL_GET_MEM_CTX(ndr
);
3067 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.display_name_length
, 0);
3068 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, r
->out
.display_name_length
));
3069 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_display_name_length_0
, 0);
3071 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
3073 return NDR_ERR_SUCCESS
;
3076 _PUBLIC_
void ndr_print_svcctl_GetServiceKeyNameW(struct ndr_print
*ndr
, const char *name
, int flags
, const struct svcctl_GetServiceKeyNameW
*r
)
3078 ndr_print_struct(ndr
, name
, "svcctl_GetServiceKeyNameW");
3080 if (flags
& NDR_SET_VALUES
) {
3081 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
3083 if (flags
& NDR_IN
) {
3084 ndr_print_struct(ndr
, "in", "svcctl_GetServiceKeyNameW");
3086 ndr_print_ptr(ndr
, "handle", r
->in
.handle
);
3088 ndr_print_policy_handle(ndr
, "handle", r
->in
.handle
);
3090 ndr_print_ptr(ndr
, "service_name", r
->in
.service_name
);
3092 if (r
->in
.service_name
) {
3093 ndr_print_string(ndr
, "service_name", r
->in
.service_name
);
3096 ndr_print_ptr(ndr
, "display_name_length", r
->in
.display_name_length
);
3098 if (r
->in
.display_name_length
) {
3099 ndr_print_uint32(ndr
, "display_name_length", *r
->in
.display_name_length
);
3104 if (flags
& NDR_OUT
) {
3105 ndr_print_struct(ndr
, "out", "svcctl_GetServiceKeyNameW");
3107 ndr_print_ptr(ndr
, "key_name", r
->out
.key_name
);
3109 ndr_print_ptr(ndr
, "key_name", *r
->out
.key_name
);
3111 if (*r
->out
.key_name
) {
3112 ndr_print_string(ndr
, "key_name", *r
->out
.key_name
);
3116 ndr_print_ptr(ndr
, "display_name_length", r
->out
.display_name_length
);
3118 if (r
->out
.display_name_length
) {
3119 ndr_print_uint32(ndr
, "display_name_length", *r
->out
.display_name_length
);
3122 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
3128 static enum ndr_err_code
ndr_push_svcctl_SCSetServiceBitsA(struct ndr_push
*ndr
, int flags
, const struct svcctl_SCSetServiceBitsA
*r
)
3130 if (flags
& NDR_IN
) {
3131 if (r
->in
.handle
== NULL
) {
3132 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
3134 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->in
.handle
));
3135 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.bits
));
3136 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.bitson
));
3137 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.immediate
));
3139 if (flags
& NDR_OUT
) {
3140 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
3142 return NDR_ERR_SUCCESS
;
3145 static enum ndr_err_code
ndr_pull_svcctl_SCSetServiceBitsA(struct ndr_pull
*ndr
, int flags
, struct svcctl_SCSetServiceBitsA
*r
)
3147 TALLOC_CTX
*_mem_save_handle_0
;
3148 if (flags
& NDR_IN
) {
3149 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
3150 NDR_PULL_ALLOC(ndr
, r
->in
.handle
);
3152 _mem_save_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
3153 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.handle
, LIBNDR_FLAG_REF_ALLOC
);
3154 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->in
.handle
));
3155 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_handle_0
, LIBNDR_FLAG_REF_ALLOC
);
3156 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.bits
));
3157 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.bitson
));
3158 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.immediate
));
3160 if (flags
& NDR_OUT
) {
3161 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
3163 return NDR_ERR_SUCCESS
;
3166 _PUBLIC_
void ndr_print_svcctl_SCSetServiceBitsA(struct ndr_print
*ndr
, const char *name
, int flags
, const struct svcctl_SCSetServiceBitsA
*r
)
3168 ndr_print_struct(ndr
, name
, "svcctl_SCSetServiceBitsA");
3170 if (flags
& NDR_SET_VALUES
) {
3171 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
3173 if (flags
& NDR_IN
) {
3174 ndr_print_struct(ndr
, "in", "svcctl_SCSetServiceBitsA");
3176 ndr_print_ptr(ndr
, "handle", r
->in
.handle
);
3178 ndr_print_policy_handle(ndr
, "handle", r
->in
.handle
);
3180 ndr_print_uint32(ndr
, "bits", r
->in
.bits
);
3181 ndr_print_uint32(ndr
, "bitson", r
->in
.bitson
);
3182 ndr_print_uint32(ndr
, "immediate", r
->in
.immediate
);
3185 if (flags
& NDR_OUT
) {
3186 ndr_print_struct(ndr
, "out", "svcctl_SCSetServiceBitsA");
3188 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
3194 static enum ndr_err_code
ndr_push_svcctl_ChangeServiceConfigA(struct ndr_push
*ndr
, int flags
, const struct svcctl_ChangeServiceConfigA
*r
)
3196 if (flags
& NDR_IN
) {
3197 if (r
->in
.handle
== NULL
) {
3198 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
3200 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->in
.handle
));
3201 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.type
));
3202 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.start
));
3203 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.error
));
3204 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.binary_path
));
3205 if (r
->in
.binary_path
) {
3206 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.binary_path
, CH_UTF16
)));
3207 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, 0));
3208 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.binary_path
, CH_UTF16
)));
3209 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
));
3211 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.load_order_group
));
3212 if (r
->in
.load_order_group
) {
3213 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.load_order_group
, CH_UTF16
)));
3214 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, 0));
3215 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.load_order_group
, CH_UTF16
)));
3216 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
));
3218 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.dependencies
));
3219 if (r
->in
.dependencies
) {
3220 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.dependencies
, CH_UTF16
)));
3221 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, 0));
3222 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.dependencies
, CH_UTF16
)));
3223 NDR_CHECK(ndr_push_charset(ndr
, NDR_SCALARS
, r
->in
.dependencies
, ndr_charset_length(r
->in
.dependencies
, CH_UTF16
), sizeof(uint16_t), CH_UTF16
));
3225 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.service_start_name
));
3226 if (r
->in
.service_start_name
) {
3227 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.service_start_name
, CH_UTF16
)));
3228 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, 0));
3229 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.service_start_name
, CH_UTF16
)));
3230 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
));
3232 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.password
));
3233 if (r
->in
.password
) {
3234 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.password
, CH_UTF16
)));
3235 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, 0));
3236 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.password
, CH_UTF16
)));
3237 NDR_CHECK(ndr_push_charset(ndr
, NDR_SCALARS
, r
->in
.password
, ndr_charset_length(r
->in
.password
, CH_UTF16
), sizeof(uint16_t), CH_UTF16
));
3239 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.display_name
));
3240 if (r
->in
.display_name
) {
3241 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.display_name
, CH_UTF16
)));
3242 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, 0));
3243 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.display_name
, CH_UTF16
)));
3244 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
));
3247 if (flags
& NDR_OUT
) {
3248 if (r
->out
.tag_id
== NULL
) {
3249 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
3251 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, *r
->out
.tag_id
));
3252 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
3254 return NDR_ERR_SUCCESS
;
3257 static enum ndr_err_code
ndr_pull_svcctl_ChangeServiceConfigA(struct ndr_pull
*ndr
, int flags
, struct svcctl_ChangeServiceConfigA
*r
)
3259 uint32_t _ptr_binary_path
;
3260 uint32_t _ptr_load_order_group
;
3261 uint32_t _ptr_dependencies
;
3262 uint32_t _ptr_service_start_name
;
3263 uint32_t _ptr_password
;
3264 uint32_t _ptr_display_name
;
3265 TALLOC_CTX
*_mem_save_handle_0
;
3266 TALLOC_CTX
*_mem_save_binary_path_0
;
3267 TALLOC_CTX
*_mem_save_load_order_group_0
;
3268 TALLOC_CTX
*_mem_save_tag_id_0
;
3269 TALLOC_CTX
*_mem_save_dependencies_0
;
3270 TALLOC_CTX
*_mem_save_service_start_name_0
;
3271 TALLOC_CTX
*_mem_save_password_0
;
3272 TALLOC_CTX
*_mem_save_display_name_0
;
3273 if (flags
& NDR_IN
) {
3274 ZERO_STRUCT(r
->out
);
3276 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
3277 NDR_PULL_ALLOC(ndr
, r
->in
.handle
);
3279 _mem_save_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
3280 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.handle
, LIBNDR_FLAG_REF_ALLOC
);
3281 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->in
.handle
));
3282 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_handle_0
, LIBNDR_FLAG_REF_ALLOC
);
3283 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.type
));
3284 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.start
));
3285 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.error
));
3286 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_binary_path
));
3287 if (_ptr_binary_path
) {
3288 NDR_PULL_ALLOC(ndr
, r
->in
.binary_path
);
3290 r
->in
.binary_path
= NULL
;
3292 if (r
->in
.binary_path
) {
3293 _mem_save_binary_path_0
= NDR_PULL_GET_MEM_CTX(ndr
);
3294 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.binary_path
, 0);
3295 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->in
.binary_path
));
3296 NDR_CHECK(ndr_pull_array_length(ndr
, &r
->in
.binary_path
));
3297 if (ndr_get_array_length(ndr
, &r
->in
.binary_path
) > ndr_get_array_size(ndr
, &r
->in
.binary_path
)) {
3298 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
));
3300 NDR_CHECK(ndr_check_string_terminator(ndr
, ndr_get_array_length(ndr
, &r
->in
.binary_path
), sizeof(uint16_t)));
3301 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
));
3302 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_binary_path_0
, 0);
3304 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_load_order_group
));
3305 if (_ptr_load_order_group
) {
3306 NDR_PULL_ALLOC(ndr
, r
->in
.load_order_group
);
3308 r
->in
.load_order_group
= NULL
;
3310 if (r
->in
.load_order_group
) {
3311 _mem_save_load_order_group_0
= NDR_PULL_GET_MEM_CTX(ndr
);
3312 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.load_order_group
, 0);
3313 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->in
.load_order_group
));
3314 NDR_CHECK(ndr_pull_array_length(ndr
, &r
->in
.load_order_group
));
3315 if (ndr_get_array_length(ndr
, &r
->in
.load_order_group
) > ndr_get_array_size(ndr
, &r
->in
.load_order_group
)) {
3316 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
));
3318 NDR_CHECK(ndr_check_string_terminator(ndr
, ndr_get_array_length(ndr
, &r
->in
.load_order_group
), sizeof(uint16_t)));
3319 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
));
3320 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_load_order_group_0
, 0);
3322 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_dependencies
));
3323 if (_ptr_dependencies
) {
3324 NDR_PULL_ALLOC(ndr
, r
->in
.dependencies
);
3326 r
->in
.dependencies
= NULL
;
3328 if (r
->in
.dependencies
) {
3329 _mem_save_dependencies_0
= NDR_PULL_GET_MEM_CTX(ndr
);
3330 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.dependencies
, 0);
3331 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->in
.dependencies
));
3332 NDR_CHECK(ndr_pull_array_length(ndr
, &r
->in
.dependencies
));
3333 if (ndr_get_array_length(ndr
, &r
->in
.dependencies
) > ndr_get_array_size(ndr
, &r
->in
.dependencies
)) {
3334 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
));
3336 NDR_CHECK(ndr_check_string_terminator(ndr
, ndr_get_array_length(ndr
, &r
->in
.dependencies
), sizeof(uint16_t)));
3337 NDR_CHECK(ndr_pull_charset(ndr
, NDR_SCALARS
, &r
->in
.dependencies
, ndr_get_array_length(ndr
, &r
->in
.dependencies
), sizeof(uint16_t), CH_UTF16
));
3338 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_dependencies_0
, 0);
3340 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_service_start_name
));
3341 if (_ptr_service_start_name
) {
3342 NDR_PULL_ALLOC(ndr
, r
->in
.service_start_name
);
3344 r
->in
.service_start_name
= NULL
;
3346 if (r
->in
.service_start_name
) {
3347 _mem_save_service_start_name_0
= NDR_PULL_GET_MEM_CTX(ndr
);
3348 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.service_start_name
, 0);
3349 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->in
.service_start_name
));
3350 NDR_CHECK(ndr_pull_array_length(ndr
, &r
->in
.service_start_name
));
3351 if (ndr_get_array_length(ndr
, &r
->in
.service_start_name
) > ndr_get_array_size(ndr
, &r
->in
.service_start_name
)) {
3352 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
));
3354 NDR_CHECK(ndr_check_string_terminator(ndr
, ndr_get_array_length(ndr
, &r
->in
.service_start_name
), sizeof(uint16_t)));
3355 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
));
3356 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_service_start_name_0
, 0);
3358 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_password
));
3359 if (_ptr_password
) {
3360 NDR_PULL_ALLOC(ndr
, r
->in
.password
);
3362 r
->in
.password
= NULL
;
3364 if (r
->in
.password
) {
3365 _mem_save_password_0
= NDR_PULL_GET_MEM_CTX(ndr
);
3366 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.password
, 0);
3367 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->in
.password
));
3368 NDR_CHECK(ndr_pull_array_length(ndr
, &r
->in
.password
));
3369 if (ndr_get_array_length(ndr
, &r
->in
.password
) > ndr_get_array_size(ndr
, &r
->in
.password
)) {
3370 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
));
3372 NDR_CHECK(ndr_check_string_terminator(ndr
, ndr_get_array_length(ndr
, &r
->in
.password
), sizeof(uint16_t)));
3373 NDR_CHECK(ndr_pull_charset(ndr
, NDR_SCALARS
, &r
->in
.password
, ndr_get_array_length(ndr
, &r
->in
.password
), sizeof(uint16_t), CH_UTF16
));
3374 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_password_0
, 0);
3376 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_display_name
));
3377 if (_ptr_display_name
) {
3378 NDR_PULL_ALLOC(ndr
, r
->in
.display_name
);
3380 r
->in
.display_name
= NULL
;
3382 if (r
->in
.display_name
) {
3383 _mem_save_display_name_0
= NDR_PULL_GET_MEM_CTX(ndr
);
3384 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.display_name
, 0);
3385 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->in
.display_name
));
3386 NDR_CHECK(ndr_pull_array_length(ndr
, &r
->in
.display_name
));
3387 if (ndr_get_array_length(ndr
, &r
->in
.display_name
) > ndr_get_array_size(ndr
, &r
->in
.display_name
)) {
3388 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
));
3390 NDR_CHECK(ndr_check_string_terminator(ndr
, ndr_get_array_length(ndr
, &r
->in
.display_name
), sizeof(uint16_t)));
3391 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
));
3392 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_display_name_0
, 0);
3394 NDR_PULL_ALLOC(ndr
, r
->out
.tag_id
);
3395 ZERO_STRUCTP(r
->out
.tag_id
);
3397 if (flags
& NDR_OUT
) {
3398 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
3399 NDR_PULL_ALLOC(ndr
, r
->out
.tag_id
);
3401 _mem_save_tag_id_0
= NDR_PULL_GET_MEM_CTX(ndr
);
3402 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.tag_id
, LIBNDR_FLAG_REF_ALLOC
);
3403 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, r
->out
.tag_id
));
3404 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_tag_id_0
, LIBNDR_FLAG_REF_ALLOC
);
3405 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
3407 return NDR_ERR_SUCCESS
;
3410 _PUBLIC_
void ndr_print_svcctl_ChangeServiceConfigA(struct ndr_print
*ndr
, const char *name
, int flags
, const struct svcctl_ChangeServiceConfigA
*r
)
3412 ndr_print_struct(ndr
, name
, "svcctl_ChangeServiceConfigA");
3414 if (flags
& NDR_SET_VALUES
) {
3415 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
3417 if (flags
& NDR_IN
) {
3418 ndr_print_struct(ndr
, "in", "svcctl_ChangeServiceConfigA");
3420 ndr_print_ptr(ndr
, "handle", r
->in
.handle
);
3422 ndr_print_policy_handle(ndr
, "handle", r
->in
.handle
);
3424 ndr_print_uint32(ndr
, "type", r
->in
.type
);
3425 ndr_print_uint32(ndr
, "start", r
->in
.start
);
3426 ndr_print_uint32(ndr
, "error", r
->in
.error
);
3427 ndr_print_ptr(ndr
, "binary_path", r
->in
.binary_path
);
3429 if (r
->in
.binary_path
) {
3430 ndr_print_string(ndr
, "binary_path", r
->in
.binary_path
);
3433 ndr_print_ptr(ndr
, "load_order_group", r
->in
.load_order_group
);
3435 if (r
->in
.load_order_group
) {
3436 ndr_print_string(ndr
, "load_order_group", r
->in
.load_order_group
);
3439 ndr_print_ptr(ndr
, "dependencies", r
->in
.dependencies
);
3441 if (r
->in
.dependencies
) {
3442 ndr_print_string(ndr
, "dependencies", r
->in
.dependencies
);
3445 ndr_print_ptr(ndr
, "service_start_name", r
->in
.service_start_name
);
3447 if (r
->in
.service_start_name
) {
3448 ndr_print_string(ndr
, "service_start_name", r
->in
.service_start_name
);
3451 ndr_print_ptr(ndr
, "password", r
->in
.password
);
3453 if (r
->in
.password
) {
3454 ndr_print_string(ndr
, "password", r
->in
.password
);
3457 ndr_print_ptr(ndr
, "display_name", r
->in
.display_name
);
3459 if (r
->in
.display_name
) {
3460 ndr_print_string(ndr
, "display_name", r
->in
.display_name
);
3465 if (flags
& NDR_OUT
) {
3466 ndr_print_struct(ndr
, "out", "svcctl_ChangeServiceConfigA");
3468 ndr_print_ptr(ndr
, "tag_id", r
->out
.tag_id
);
3470 ndr_print_uint32(ndr
, "tag_id", *r
->out
.tag_id
);
3472 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
3478 static enum ndr_err_code
ndr_push_svcctl_CreateServiceA(struct ndr_push
*ndr
, int flags
, const struct svcctl_CreateServiceA
*r
)
3480 if (flags
& NDR_IN
) {
3481 if (r
->in
.handle
== NULL
) {
3482 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
3484 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->in
.handle
));
3485 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.ServiceName
));
3486 if (r
->in
.ServiceName
) {
3487 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.ServiceName
, CH_UTF16
)));
3488 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, 0));
3489 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.ServiceName
, CH_UTF16
)));
3490 NDR_CHECK(ndr_push_charset(ndr
, NDR_SCALARS
, r
->in
.ServiceName
, ndr_charset_length(r
->in
.ServiceName
, CH_UTF16
), sizeof(uint16_t), CH_UTF16
));
3492 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.DisplayName
));
3493 if (r
->in
.DisplayName
) {
3494 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.DisplayName
, CH_UTF16
)));
3495 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, 0));
3496 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.DisplayName
, CH_UTF16
)));
3497 NDR_CHECK(ndr_push_charset(ndr
, NDR_SCALARS
, r
->in
.DisplayName
, ndr_charset_length(r
->in
.DisplayName
, CH_UTF16
), sizeof(uint16_t), CH_UTF16
));
3499 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.desired_access
));
3500 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.type
));
3501 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.start_type
));
3502 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.error_control
));
3503 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.binary_path
));
3504 if (r
->in
.binary_path
) {
3505 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.binary_path
, CH_UTF16
)));
3506 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, 0));
3507 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.binary_path
, CH_UTF16
)));
3508 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
));
3510 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.LoadOrderGroupKey
));
3511 if (r
->in
.LoadOrderGroupKey
) {
3512 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.LoadOrderGroupKey
, CH_UTF16
)));
3513 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, 0));
3514 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.LoadOrderGroupKey
, CH_UTF16
)));
3515 NDR_CHECK(ndr_push_charset(ndr
, NDR_SCALARS
, r
->in
.LoadOrderGroupKey
, ndr_charset_length(r
->in
.LoadOrderGroupKey
, CH_UTF16
), sizeof(uint16_t), CH_UTF16
));
3517 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.dependencies
));
3518 if (r
->in
.dependencies
) {
3519 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.dependencies
, CH_UTF16
)));
3520 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, 0));
3521 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.dependencies
, CH_UTF16
)));
3522 NDR_CHECK(ndr_push_charset(ndr
, NDR_SCALARS
, r
->in
.dependencies
, ndr_charset_length(r
->in
.dependencies
, CH_UTF16
), sizeof(uint16_t), CH_UTF16
));
3524 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.service_start_name
));
3525 if (r
->in
.service_start_name
) {
3526 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.service_start_name
, CH_UTF16
)));
3527 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, 0));
3528 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.service_start_name
, CH_UTF16
)));
3529 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
));
3531 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.password
));
3532 if (r
->in
.password
) {
3533 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.password
, CH_UTF16
)));
3534 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, 0));
3535 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.password
, CH_UTF16
)));
3536 NDR_CHECK(ndr_push_charset(ndr
, NDR_SCALARS
, r
->in
.password
, ndr_charset_length(r
->in
.password
, CH_UTF16
), sizeof(uint16_t), CH_UTF16
));
3539 if (flags
& NDR_OUT
) {
3540 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->out
.TagId
));
3542 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, *r
->out
.TagId
));
3544 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
3546 return NDR_ERR_SUCCESS
;
3549 static enum ndr_err_code
ndr_pull_svcctl_CreateServiceA(struct ndr_pull
*ndr
, int flags
, struct svcctl_CreateServiceA
*r
)
3551 uint32_t _ptr_ServiceName
;
3552 uint32_t _ptr_DisplayName
;
3553 uint32_t _ptr_binary_path
;
3554 uint32_t _ptr_LoadOrderGroupKey
;
3555 uint32_t _ptr_TagId
;
3556 uint32_t _ptr_dependencies
;
3557 uint32_t _ptr_service_start_name
;
3558 uint32_t _ptr_password
;
3559 TALLOC_CTX
*_mem_save_handle_0
;
3560 TALLOC_CTX
*_mem_save_ServiceName_0
;
3561 TALLOC_CTX
*_mem_save_DisplayName_0
;
3562 TALLOC_CTX
*_mem_save_binary_path_0
;
3563 TALLOC_CTX
*_mem_save_LoadOrderGroupKey_0
;
3564 TALLOC_CTX
*_mem_save_TagId_0
;
3565 TALLOC_CTX
*_mem_save_dependencies_0
;
3566 TALLOC_CTX
*_mem_save_service_start_name_0
;
3567 TALLOC_CTX
*_mem_save_password_0
;
3568 if (flags
& NDR_IN
) {
3569 ZERO_STRUCT(r
->out
);
3571 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
3572 NDR_PULL_ALLOC(ndr
, r
->in
.handle
);
3574 _mem_save_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
3575 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.handle
, LIBNDR_FLAG_REF_ALLOC
);
3576 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->in
.handle
));
3577 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_handle_0
, LIBNDR_FLAG_REF_ALLOC
);
3578 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_ServiceName
));
3579 if (_ptr_ServiceName
) {
3580 NDR_PULL_ALLOC(ndr
, r
->in
.ServiceName
);
3582 r
->in
.ServiceName
= NULL
;
3584 if (r
->in
.ServiceName
) {
3585 _mem_save_ServiceName_0
= NDR_PULL_GET_MEM_CTX(ndr
);
3586 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.ServiceName
, 0);
3587 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->in
.ServiceName
));
3588 NDR_CHECK(ndr_pull_array_length(ndr
, &r
->in
.ServiceName
));
3589 if (ndr_get_array_length(ndr
, &r
->in
.ServiceName
) > ndr_get_array_size(ndr
, &r
->in
.ServiceName
)) {
3590 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
));
3592 NDR_CHECK(ndr_check_string_terminator(ndr
, ndr_get_array_length(ndr
, &r
->in
.ServiceName
), sizeof(uint16_t)));
3593 NDR_CHECK(ndr_pull_charset(ndr
, NDR_SCALARS
, &r
->in
.ServiceName
, ndr_get_array_length(ndr
, &r
->in
.ServiceName
), sizeof(uint16_t), CH_UTF16
));
3594 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_ServiceName_0
, 0);
3596 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_DisplayName
));
3597 if (_ptr_DisplayName
) {
3598 NDR_PULL_ALLOC(ndr
, r
->in
.DisplayName
);
3600 r
->in
.DisplayName
= NULL
;
3602 if (r
->in
.DisplayName
) {
3603 _mem_save_DisplayName_0
= NDR_PULL_GET_MEM_CTX(ndr
);
3604 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.DisplayName
, 0);
3605 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->in
.DisplayName
));
3606 NDR_CHECK(ndr_pull_array_length(ndr
, &r
->in
.DisplayName
));
3607 if (ndr_get_array_length(ndr
, &r
->in
.DisplayName
) > ndr_get_array_size(ndr
, &r
->in
.DisplayName
)) {
3608 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
));
3610 NDR_CHECK(ndr_check_string_terminator(ndr
, ndr_get_array_length(ndr
, &r
->in
.DisplayName
), sizeof(uint16_t)));
3611 NDR_CHECK(ndr_pull_charset(ndr
, NDR_SCALARS
, &r
->in
.DisplayName
, ndr_get_array_length(ndr
, &r
->in
.DisplayName
), sizeof(uint16_t), CH_UTF16
));
3612 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_DisplayName_0
, 0);
3614 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.desired_access
));
3615 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.type
));
3616 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.start_type
));
3617 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.error_control
));
3618 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_binary_path
));
3619 if (_ptr_binary_path
) {
3620 NDR_PULL_ALLOC(ndr
, r
->in
.binary_path
);
3622 r
->in
.binary_path
= NULL
;
3624 if (r
->in
.binary_path
) {
3625 _mem_save_binary_path_0
= NDR_PULL_GET_MEM_CTX(ndr
);
3626 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.binary_path
, 0);
3627 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->in
.binary_path
));
3628 NDR_CHECK(ndr_pull_array_length(ndr
, &r
->in
.binary_path
));
3629 if (ndr_get_array_length(ndr
, &r
->in
.binary_path
) > ndr_get_array_size(ndr
, &r
->in
.binary_path
)) {
3630 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
));
3632 NDR_CHECK(ndr_check_string_terminator(ndr
, ndr_get_array_length(ndr
, &r
->in
.binary_path
), sizeof(uint16_t)));
3633 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
));
3634 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_binary_path_0
, 0);
3636 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_LoadOrderGroupKey
));
3637 if (_ptr_LoadOrderGroupKey
) {
3638 NDR_PULL_ALLOC(ndr
, r
->in
.LoadOrderGroupKey
);
3640 r
->in
.LoadOrderGroupKey
= NULL
;
3642 if (r
->in
.LoadOrderGroupKey
) {
3643 _mem_save_LoadOrderGroupKey_0
= NDR_PULL_GET_MEM_CTX(ndr
);
3644 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.LoadOrderGroupKey
, 0);
3645 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->in
.LoadOrderGroupKey
));
3646 NDR_CHECK(ndr_pull_array_length(ndr
, &r
->in
.LoadOrderGroupKey
));
3647 if (ndr_get_array_length(ndr
, &r
->in
.LoadOrderGroupKey
) > ndr_get_array_size(ndr
, &r
->in
.LoadOrderGroupKey
)) {
3648 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
));
3650 NDR_CHECK(ndr_check_string_terminator(ndr
, ndr_get_array_length(ndr
, &r
->in
.LoadOrderGroupKey
), sizeof(uint16_t)));
3651 NDR_CHECK(ndr_pull_charset(ndr
, NDR_SCALARS
, &r
->in
.LoadOrderGroupKey
, ndr_get_array_length(ndr
, &r
->in
.LoadOrderGroupKey
), sizeof(uint16_t), CH_UTF16
));
3652 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_LoadOrderGroupKey_0
, 0);
3654 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_dependencies
));
3655 if (_ptr_dependencies
) {
3656 NDR_PULL_ALLOC(ndr
, r
->in
.dependencies
);
3658 r
->in
.dependencies
= NULL
;
3660 if (r
->in
.dependencies
) {
3661 _mem_save_dependencies_0
= NDR_PULL_GET_MEM_CTX(ndr
);
3662 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.dependencies
, 0);
3663 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->in
.dependencies
));
3664 NDR_CHECK(ndr_pull_array_length(ndr
, &r
->in
.dependencies
));
3665 if (ndr_get_array_length(ndr
, &r
->in
.dependencies
) > ndr_get_array_size(ndr
, &r
->in
.dependencies
)) {
3666 return ndr_pull_error(ndr
, NDR_ERR_ARRAY_SIZE
, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr
, &r
->in
.dependencies
), ndr_get_array_length(ndr
, &r
->in
.dependencies
));
3668 NDR_CHECK(ndr_check_string_terminator(ndr
, ndr_get_array_length(ndr
, &r
->in
.dependencies
), sizeof(uint16_t)));
3669 NDR_CHECK(ndr_pull_charset(ndr
, NDR_SCALARS
, &r
->in
.dependencies
, ndr_get_array_length(ndr
, &r
->in
.dependencies
), sizeof(uint16_t), CH_UTF16
));
3670 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_dependencies_0
, 0);
3672 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_service_start_name
));
3673 if (_ptr_service_start_name
) {
3674 NDR_PULL_ALLOC(ndr
, r
->in
.service_start_name
);
3676 r
->in
.service_start_name
= NULL
;
3678 if (r
->in
.service_start_name
) {
3679 _mem_save_service_start_name_0
= NDR_PULL_GET_MEM_CTX(ndr
);
3680 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.service_start_name
, 0);
3681 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->in
.service_start_name
));
3682 NDR_CHECK(ndr_pull_array_length(ndr
, &r
->in
.service_start_name
));
3683 if (ndr_get_array_length(ndr
, &r
->in
.service_start_name
) > ndr_get_array_size(ndr
, &r
->in
.service_start_name
)) {
3684 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
));
3686 NDR_CHECK(ndr_check_string_terminator(ndr
, ndr_get_array_length(ndr
, &r
->in
.service_start_name
), sizeof(uint16_t)));
3687 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
));
3688 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_service_start_name_0
, 0);
3690 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_password
));
3691 if (_ptr_password
) {
3692 NDR_PULL_ALLOC(ndr
, r
->in
.password
);
3694 r
->in
.password
= NULL
;
3696 if (r
->in
.password
) {
3697 _mem_save_password_0
= NDR_PULL_GET_MEM_CTX(ndr
);
3698 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.password
, 0);
3699 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->in
.password
));
3700 NDR_CHECK(ndr_pull_array_length(ndr
, &r
->in
.password
));
3701 if (ndr_get_array_length(ndr
, &r
->in
.password
) > ndr_get_array_size(ndr
, &r
->in
.password
)) {
3702 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
));
3704 NDR_CHECK(ndr_check_string_terminator(ndr
, ndr_get_array_length(ndr
, &r
->in
.password
), sizeof(uint16_t)));
3705 NDR_CHECK(ndr_pull_charset(ndr
, NDR_SCALARS
, &r
->in
.password
, ndr_get_array_length(ndr
, &r
->in
.password
), sizeof(uint16_t), CH_UTF16
));
3706 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_password_0
, 0);
3709 if (flags
& NDR_OUT
) {
3710 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_TagId
));
3712 NDR_PULL_ALLOC(ndr
, r
->out
.TagId
);
3714 r
->out
.TagId
= NULL
;
3717 _mem_save_TagId_0
= NDR_PULL_GET_MEM_CTX(ndr
);
3718 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.TagId
, 0);
3719 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, r
->out
.TagId
));
3720 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_TagId_0
, 0);
3722 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
3724 return NDR_ERR_SUCCESS
;
3727 _PUBLIC_
void ndr_print_svcctl_CreateServiceA(struct ndr_print
*ndr
, const char *name
, int flags
, const struct svcctl_CreateServiceA
*r
)
3729 ndr_print_struct(ndr
, name
, "svcctl_CreateServiceA");
3731 if (flags
& NDR_SET_VALUES
) {
3732 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
3734 if (flags
& NDR_IN
) {
3735 ndr_print_struct(ndr
, "in", "svcctl_CreateServiceA");
3737 ndr_print_ptr(ndr
, "handle", r
->in
.handle
);
3739 ndr_print_policy_handle(ndr
, "handle", r
->in
.handle
);
3741 ndr_print_ptr(ndr
, "ServiceName", r
->in
.ServiceName
);
3743 if (r
->in
.ServiceName
) {
3744 ndr_print_string(ndr
, "ServiceName", r
->in
.ServiceName
);
3747 ndr_print_ptr(ndr
, "DisplayName", r
->in
.DisplayName
);
3749 if (r
->in
.DisplayName
) {
3750 ndr_print_string(ndr
, "DisplayName", r
->in
.DisplayName
);
3753 ndr_print_uint32(ndr
, "desired_access", r
->in
.desired_access
);
3754 ndr_print_uint32(ndr
, "type", r
->in
.type
);
3755 ndr_print_uint32(ndr
, "start_type", r
->in
.start_type
);
3756 ndr_print_uint32(ndr
, "error_control", r
->in
.error_control
);
3757 ndr_print_ptr(ndr
, "binary_path", r
->in
.binary_path
);
3759 if (r
->in
.binary_path
) {
3760 ndr_print_string(ndr
, "binary_path", r
->in
.binary_path
);
3763 ndr_print_ptr(ndr
, "LoadOrderGroupKey", r
->in
.LoadOrderGroupKey
);
3765 if (r
->in
.LoadOrderGroupKey
) {
3766 ndr_print_string(ndr
, "LoadOrderGroupKey", r
->in
.LoadOrderGroupKey
);
3769 ndr_print_ptr(ndr
, "dependencies", r
->in
.dependencies
);
3771 if (r
->in
.dependencies
) {
3772 ndr_print_string(ndr
, "dependencies", r
->in
.dependencies
);
3775 ndr_print_ptr(ndr
, "service_start_name", r
->in
.service_start_name
);
3777 if (r
->in
.service_start_name
) {
3778 ndr_print_string(ndr
, "service_start_name", r
->in
.service_start_name
);
3781 ndr_print_ptr(ndr
, "password", r
->in
.password
);
3783 if (r
->in
.password
) {
3784 ndr_print_string(ndr
, "password", r
->in
.password
);
3789 if (flags
& NDR_OUT
) {
3790 ndr_print_struct(ndr
, "out", "svcctl_CreateServiceA");
3792 ndr_print_ptr(ndr
, "TagId", r
->out
.TagId
);
3795 ndr_print_uint32(ndr
, "TagId", *r
->out
.TagId
);
3798 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
3804 static enum ndr_err_code
ndr_push_svcctl_EnumDependentServicesA(struct ndr_push
*ndr
, int flags
, const struct svcctl_EnumDependentServicesA
*r
)
3806 if (flags
& NDR_IN
) {
3807 if (r
->in
.service
== NULL
) {
3808 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
3810 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->in
.service
));
3811 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.state
));
3812 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.buf_size
));
3814 if (flags
& NDR_OUT
) {
3815 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->out
.service_status
));
3816 if (r
->out
.service_status
) {
3817 NDR_CHECK(ndr_push_ENUM_SERVICE_STATUS(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->out
.service_status
));
3819 if (r
->out
.bytes_needed
== NULL
) {
3820 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
3822 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, *r
->out
.bytes_needed
));
3823 if (r
->out
.services_returned
== NULL
) {
3824 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
3826 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, *r
->out
.services_returned
));
3827 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
3829 return NDR_ERR_SUCCESS
;
3832 static enum ndr_err_code
ndr_pull_svcctl_EnumDependentServicesA(struct ndr_pull
*ndr
, int flags
, struct svcctl_EnumDependentServicesA
*r
)
3834 uint32_t _ptr_service_status
;
3835 TALLOC_CTX
*_mem_save_service_0
;
3836 TALLOC_CTX
*_mem_save_service_status_0
;
3837 TALLOC_CTX
*_mem_save_bytes_needed_0
;
3838 TALLOC_CTX
*_mem_save_services_returned_0
;
3839 if (flags
& NDR_IN
) {
3840 ZERO_STRUCT(r
->out
);
3842 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
3843 NDR_PULL_ALLOC(ndr
, r
->in
.service
);
3845 _mem_save_service_0
= NDR_PULL_GET_MEM_CTX(ndr
);
3846 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.service
, LIBNDR_FLAG_REF_ALLOC
);
3847 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->in
.service
));
3848 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_service_0
, LIBNDR_FLAG_REF_ALLOC
);
3849 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.state
));
3850 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.buf_size
));
3851 NDR_PULL_ALLOC(ndr
, r
->out
.bytes_needed
);
3852 ZERO_STRUCTP(r
->out
.bytes_needed
);
3853 NDR_PULL_ALLOC(ndr
, r
->out
.services_returned
);
3854 ZERO_STRUCTP(r
->out
.services_returned
);
3856 if (flags
& NDR_OUT
) {
3857 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_service_status
));
3858 if (_ptr_service_status
) {
3859 NDR_PULL_ALLOC(ndr
, r
->out
.service_status
);
3861 r
->out
.service_status
= NULL
;
3863 if (r
->out
.service_status
) {
3864 _mem_save_service_status_0
= NDR_PULL_GET_MEM_CTX(ndr
);
3865 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.service_status
, 0);
3866 NDR_CHECK(ndr_pull_ENUM_SERVICE_STATUS(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->out
.service_status
));
3867 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_service_status_0
, 0);
3869 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
3870 NDR_PULL_ALLOC(ndr
, r
->out
.bytes_needed
);
3872 _mem_save_bytes_needed_0
= NDR_PULL_GET_MEM_CTX(ndr
);
3873 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.bytes_needed
, LIBNDR_FLAG_REF_ALLOC
);
3874 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, r
->out
.bytes_needed
));
3875 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_bytes_needed_0
, LIBNDR_FLAG_REF_ALLOC
);
3876 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
3877 NDR_PULL_ALLOC(ndr
, r
->out
.services_returned
);
3879 _mem_save_services_returned_0
= NDR_PULL_GET_MEM_CTX(ndr
);
3880 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.services_returned
, LIBNDR_FLAG_REF_ALLOC
);
3881 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, r
->out
.services_returned
));
3882 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_services_returned_0
, LIBNDR_FLAG_REF_ALLOC
);
3883 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
3885 return NDR_ERR_SUCCESS
;
3888 _PUBLIC_
void ndr_print_svcctl_EnumDependentServicesA(struct ndr_print
*ndr
, const char *name
, int flags
, const struct svcctl_EnumDependentServicesA
*r
)
3890 ndr_print_struct(ndr
, name
, "svcctl_EnumDependentServicesA");
3892 if (flags
& NDR_SET_VALUES
) {
3893 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
3895 if (flags
& NDR_IN
) {
3896 ndr_print_struct(ndr
, "in", "svcctl_EnumDependentServicesA");
3898 ndr_print_ptr(ndr
, "service", r
->in
.service
);
3900 ndr_print_policy_handle(ndr
, "service", r
->in
.service
);
3902 ndr_print_uint32(ndr
, "state", r
->in
.state
);
3903 ndr_print_uint32(ndr
, "buf_size", r
->in
.buf_size
);
3906 if (flags
& NDR_OUT
) {
3907 ndr_print_struct(ndr
, "out", "svcctl_EnumDependentServicesA");
3909 ndr_print_ptr(ndr
, "service_status", r
->out
.service_status
);
3911 if (r
->out
.service_status
) {
3912 ndr_print_ENUM_SERVICE_STATUS(ndr
, "service_status", r
->out
.service_status
);
3915 ndr_print_ptr(ndr
, "bytes_needed", r
->out
.bytes_needed
);
3917 ndr_print_uint32(ndr
, "bytes_needed", *r
->out
.bytes_needed
);
3919 ndr_print_ptr(ndr
, "services_returned", r
->out
.services_returned
);
3921 ndr_print_uint32(ndr
, "services_returned", *r
->out
.services_returned
);
3923 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
3929 static enum ndr_err_code
ndr_push_svcctl_EnumServicesStatusA(struct ndr_push
*ndr
, int flags
, const struct svcctl_EnumServicesStatusA
*r
)
3931 if (flags
& NDR_IN
) {
3932 if (r
->in
.handle
== NULL
) {
3933 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
3935 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->in
.handle
));
3936 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.type
));
3937 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.state
));
3938 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.buf_size
));
3939 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.resume_handle
));
3940 if (r
->in
.resume_handle
) {
3941 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, *r
->in
.resume_handle
));
3944 if (flags
& NDR_OUT
) {
3945 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.buf_size
));
3946 NDR_CHECK(ndr_push_array_uint8(ndr
, NDR_SCALARS
, r
->out
.service
, r
->in
.buf_size
));
3947 if (r
->out
.bytes_needed
== NULL
) {
3948 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
3950 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, *r
->out
.bytes_needed
));
3951 if (r
->out
.services_returned
== NULL
) {
3952 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
3954 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, *r
->out
.services_returned
));
3955 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->out
.resume_handle
));
3956 if (r
->out
.resume_handle
) {
3957 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, *r
->out
.resume_handle
));
3959 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
3961 return NDR_ERR_SUCCESS
;
3964 static enum ndr_err_code
ndr_pull_svcctl_EnumServicesStatusA(struct ndr_pull
*ndr
, int flags
, struct svcctl_EnumServicesStatusA
*r
)
3966 uint32_t _ptr_resume_handle
;
3967 TALLOC_CTX
*_mem_save_handle_0
;
3968 TALLOC_CTX
*_mem_save_bytes_needed_0
;
3969 TALLOC_CTX
*_mem_save_services_returned_0
;
3970 TALLOC_CTX
*_mem_save_resume_handle_0
;
3971 if (flags
& NDR_IN
) {
3972 ZERO_STRUCT(r
->out
);
3974 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
3975 NDR_PULL_ALLOC(ndr
, r
->in
.handle
);
3977 _mem_save_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
3978 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.handle
, LIBNDR_FLAG_REF_ALLOC
);
3979 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->in
.handle
));
3980 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_handle_0
, LIBNDR_FLAG_REF_ALLOC
);
3981 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.type
));
3982 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.state
));
3983 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.buf_size
));
3984 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_resume_handle
));
3985 if (_ptr_resume_handle
) {
3986 NDR_PULL_ALLOC(ndr
, r
->in
.resume_handle
);
3988 r
->in
.resume_handle
= NULL
;
3990 if (r
->in
.resume_handle
) {
3991 _mem_save_resume_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
3992 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.resume_handle
, 0);
3993 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, r
->in
.resume_handle
));
3994 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_resume_handle_0
, 0);
3996 NDR_PULL_ALLOC(ndr
, r
->out
.bytes_needed
);
3997 ZERO_STRUCTP(r
->out
.bytes_needed
);
3998 NDR_PULL_ALLOC(ndr
, r
->out
.services_returned
);
3999 ZERO_STRUCTP(r
->out
.services_returned
);
4001 if (flags
& NDR_OUT
) {
4002 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->out
.service
));
4003 NDR_PULL_ALLOC_N(ndr
, r
->out
.service
, ndr_get_array_size(ndr
, &r
->out
.service
));
4004 NDR_CHECK(ndr_pull_array_uint8(ndr
, NDR_SCALARS
, r
->out
.service
, ndr_get_array_size(ndr
, &r
->out
.service
)));
4005 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
4006 NDR_PULL_ALLOC(ndr
, r
->out
.bytes_needed
);
4008 _mem_save_bytes_needed_0
= NDR_PULL_GET_MEM_CTX(ndr
);
4009 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.bytes_needed
, LIBNDR_FLAG_REF_ALLOC
);
4010 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, r
->out
.bytes_needed
));
4011 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_bytes_needed_0
, LIBNDR_FLAG_REF_ALLOC
);
4012 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
4013 NDR_PULL_ALLOC(ndr
, r
->out
.services_returned
);
4015 _mem_save_services_returned_0
= NDR_PULL_GET_MEM_CTX(ndr
);
4016 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.services_returned
, LIBNDR_FLAG_REF_ALLOC
);
4017 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, r
->out
.services_returned
));
4018 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_services_returned_0
, LIBNDR_FLAG_REF_ALLOC
);
4019 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_resume_handle
));
4020 if (_ptr_resume_handle
) {
4021 NDR_PULL_ALLOC(ndr
, r
->out
.resume_handle
);
4023 r
->out
.resume_handle
= NULL
;
4025 if (r
->out
.resume_handle
) {
4026 _mem_save_resume_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
4027 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.resume_handle
, 0);
4028 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, r
->out
.resume_handle
));
4029 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_resume_handle_0
, 0);
4031 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
4032 if (r
->out
.service
) {
4033 NDR_CHECK(ndr_check_array_size(ndr
, (void*)&r
->out
.service
, r
->in
.buf_size
));
4036 return NDR_ERR_SUCCESS
;
4039 _PUBLIC_
void ndr_print_svcctl_EnumServicesStatusA(struct ndr_print
*ndr
, const char *name
, int flags
, const struct svcctl_EnumServicesStatusA
*r
)
4041 ndr_print_struct(ndr
, name
, "svcctl_EnumServicesStatusA");
4043 if (flags
& NDR_SET_VALUES
) {
4044 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
4046 if (flags
& NDR_IN
) {
4047 ndr_print_struct(ndr
, "in", "svcctl_EnumServicesStatusA");
4049 ndr_print_ptr(ndr
, "handle", r
->in
.handle
);
4051 ndr_print_policy_handle(ndr
, "handle", r
->in
.handle
);
4053 ndr_print_uint32(ndr
, "type", r
->in
.type
);
4054 ndr_print_uint32(ndr
, "state", r
->in
.state
);
4055 ndr_print_uint32(ndr
, "buf_size", r
->in
.buf_size
);
4056 ndr_print_ptr(ndr
, "resume_handle", r
->in
.resume_handle
);
4058 if (r
->in
.resume_handle
) {
4059 ndr_print_uint32(ndr
, "resume_handle", *r
->in
.resume_handle
);
4064 if (flags
& NDR_OUT
) {
4065 ndr_print_struct(ndr
, "out", "svcctl_EnumServicesStatusA");
4067 ndr_print_array_uint8(ndr
, "service", r
->out
.service
, r
->in
.buf_size
);
4068 ndr_print_ptr(ndr
, "bytes_needed", r
->out
.bytes_needed
);
4070 ndr_print_uint32(ndr
, "bytes_needed", *r
->out
.bytes_needed
);
4072 ndr_print_ptr(ndr
, "services_returned", r
->out
.services_returned
);
4074 ndr_print_uint32(ndr
, "services_returned", *r
->out
.services_returned
);
4076 ndr_print_ptr(ndr
, "resume_handle", r
->out
.resume_handle
);
4078 if (r
->out
.resume_handle
) {
4079 ndr_print_uint32(ndr
, "resume_handle", *r
->out
.resume_handle
);
4082 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
4088 static enum ndr_err_code
ndr_push_svcctl_OpenSCManagerA(struct ndr_push
*ndr
, int flags
, const struct svcctl_OpenSCManagerA
*r
)
4090 if (flags
& NDR_IN
) {
4091 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.MachineName
));
4092 if (r
->in
.MachineName
) {
4093 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.MachineName
, CH_UTF16
)));
4094 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, 0));
4095 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.MachineName
, CH_UTF16
)));
4096 NDR_CHECK(ndr_push_charset(ndr
, NDR_SCALARS
, r
->in
.MachineName
, ndr_charset_length(r
->in
.MachineName
, CH_UTF16
), sizeof(uint16_t), CH_UTF16
));
4098 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.DatabaseName
));
4099 if (r
->in
.DatabaseName
) {
4100 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.DatabaseName
, CH_UTF16
)));
4101 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, 0));
4102 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.DatabaseName
, CH_UTF16
)));
4103 NDR_CHECK(ndr_push_charset(ndr
, NDR_SCALARS
, r
->in
.DatabaseName
, ndr_charset_length(r
->in
.DatabaseName
, CH_UTF16
), sizeof(uint16_t), CH_UTF16
));
4105 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.access_mask
));
4107 if (flags
& NDR_OUT
) {
4108 if (r
->out
.handle
== NULL
) {
4109 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
4111 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->out
.handle
));
4112 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
4114 return NDR_ERR_SUCCESS
;
4117 static enum ndr_err_code
ndr_pull_svcctl_OpenSCManagerA(struct ndr_pull
*ndr
, int flags
, struct svcctl_OpenSCManagerA
*r
)
4119 uint32_t _ptr_MachineName
;
4120 uint32_t _ptr_DatabaseName
;
4121 TALLOC_CTX
*_mem_save_MachineName_0
;
4122 TALLOC_CTX
*_mem_save_DatabaseName_0
;
4123 TALLOC_CTX
*_mem_save_handle_0
;
4124 if (flags
& NDR_IN
) {
4125 ZERO_STRUCT(r
->out
);
4127 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_MachineName
));
4128 if (_ptr_MachineName
) {
4129 NDR_PULL_ALLOC(ndr
, r
->in
.MachineName
);
4131 r
->in
.MachineName
= NULL
;
4133 if (r
->in
.MachineName
) {
4134 _mem_save_MachineName_0
= NDR_PULL_GET_MEM_CTX(ndr
);
4135 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.MachineName
, 0);
4136 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->in
.MachineName
));
4137 NDR_CHECK(ndr_pull_array_length(ndr
, &r
->in
.MachineName
));
4138 if (ndr_get_array_length(ndr
, &r
->in
.MachineName
) > ndr_get_array_size(ndr
, &r
->in
.MachineName
)) {
4139 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
));
4141 NDR_CHECK(ndr_check_string_terminator(ndr
, ndr_get_array_length(ndr
, &r
->in
.MachineName
), sizeof(uint16_t)));
4142 NDR_CHECK(ndr_pull_charset(ndr
, NDR_SCALARS
, &r
->in
.MachineName
, ndr_get_array_length(ndr
, &r
->in
.MachineName
), sizeof(uint16_t), CH_UTF16
));
4143 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_MachineName_0
, 0);
4145 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_DatabaseName
));
4146 if (_ptr_DatabaseName
) {
4147 NDR_PULL_ALLOC(ndr
, r
->in
.DatabaseName
);
4149 r
->in
.DatabaseName
= NULL
;
4151 if (r
->in
.DatabaseName
) {
4152 _mem_save_DatabaseName_0
= NDR_PULL_GET_MEM_CTX(ndr
);
4153 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.DatabaseName
, 0);
4154 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->in
.DatabaseName
));
4155 NDR_CHECK(ndr_pull_array_length(ndr
, &r
->in
.DatabaseName
));
4156 if (ndr_get_array_length(ndr
, &r
->in
.DatabaseName
) > ndr_get_array_size(ndr
, &r
->in
.DatabaseName
)) {
4157 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
));
4159 NDR_CHECK(ndr_check_string_terminator(ndr
, ndr_get_array_length(ndr
, &r
->in
.DatabaseName
), sizeof(uint16_t)));
4160 NDR_CHECK(ndr_pull_charset(ndr
, NDR_SCALARS
, &r
->in
.DatabaseName
, ndr_get_array_length(ndr
, &r
->in
.DatabaseName
), sizeof(uint16_t), CH_UTF16
));
4161 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_DatabaseName_0
, 0);
4163 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.access_mask
));
4164 NDR_PULL_ALLOC(ndr
, r
->out
.handle
);
4165 ZERO_STRUCTP(r
->out
.handle
);
4167 if (flags
& NDR_OUT
) {
4168 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
4169 NDR_PULL_ALLOC(ndr
, r
->out
.handle
);
4171 _mem_save_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
4172 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.handle
, LIBNDR_FLAG_REF_ALLOC
);
4173 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->out
.handle
));
4174 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_handle_0
, LIBNDR_FLAG_REF_ALLOC
);
4175 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
4177 return NDR_ERR_SUCCESS
;
4180 _PUBLIC_
void ndr_print_svcctl_OpenSCManagerA(struct ndr_print
*ndr
, const char *name
, int flags
, const struct svcctl_OpenSCManagerA
*r
)
4182 ndr_print_struct(ndr
, name
, "svcctl_OpenSCManagerA");
4184 if (flags
& NDR_SET_VALUES
) {
4185 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
4187 if (flags
& NDR_IN
) {
4188 ndr_print_struct(ndr
, "in", "svcctl_OpenSCManagerA");
4190 ndr_print_ptr(ndr
, "MachineName", r
->in
.MachineName
);
4192 if (r
->in
.MachineName
) {
4193 ndr_print_string(ndr
, "MachineName", r
->in
.MachineName
);
4196 ndr_print_ptr(ndr
, "DatabaseName", r
->in
.DatabaseName
);
4198 if (r
->in
.DatabaseName
) {
4199 ndr_print_string(ndr
, "DatabaseName", r
->in
.DatabaseName
);
4202 ndr_print_uint32(ndr
, "access_mask", r
->in
.access_mask
);
4205 if (flags
& NDR_OUT
) {
4206 ndr_print_struct(ndr
, "out", "svcctl_OpenSCManagerA");
4208 ndr_print_ptr(ndr
, "handle", r
->out
.handle
);
4210 ndr_print_policy_handle(ndr
, "handle", r
->out
.handle
);
4212 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
4218 static enum ndr_err_code
ndr_push_svcctl_OpenServiceA(struct ndr_push
*ndr
, int flags
, const struct svcctl_OpenServiceA
*r
)
4220 if (flags
& NDR_IN
) {
4221 if (r
->in
.scmanager_handle
== NULL
) {
4222 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
4224 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->in
.scmanager_handle
));
4225 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.ServiceName
));
4226 if (r
->in
.ServiceName
) {
4227 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.ServiceName
, CH_UTF16
)));
4228 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, 0));
4229 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.ServiceName
, CH_UTF16
)));
4230 NDR_CHECK(ndr_push_charset(ndr
, NDR_SCALARS
, r
->in
.ServiceName
, ndr_charset_length(r
->in
.ServiceName
, CH_UTF16
), sizeof(uint16_t), CH_UTF16
));
4232 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.access_mask
));
4234 if (flags
& NDR_OUT
) {
4235 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
4237 return NDR_ERR_SUCCESS
;
4240 static enum ndr_err_code
ndr_pull_svcctl_OpenServiceA(struct ndr_pull
*ndr
, int flags
, struct svcctl_OpenServiceA
*r
)
4242 uint32_t _ptr_ServiceName
;
4243 TALLOC_CTX
*_mem_save_scmanager_handle_0
;
4244 TALLOC_CTX
*_mem_save_ServiceName_0
;
4245 if (flags
& NDR_IN
) {
4246 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
4247 NDR_PULL_ALLOC(ndr
, r
->in
.scmanager_handle
);
4249 _mem_save_scmanager_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
4250 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.scmanager_handle
, LIBNDR_FLAG_REF_ALLOC
);
4251 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->in
.scmanager_handle
));
4252 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_scmanager_handle_0
, LIBNDR_FLAG_REF_ALLOC
);
4253 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_ServiceName
));
4254 if (_ptr_ServiceName
) {
4255 NDR_PULL_ALLOC(ndr
, r
->in
.ServiceName
);
4257 r
->in
.ServiceName
= NULL
;
4259 if (r
->in
.ServiceName
) {
4260 _mem_save_ServiceName_0
= NDR_PULL_GET_MEM_CTX(ndr
);
4261 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.ServiceName
, 0);
4262 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->in
.ServiceName
));
4263 NDR_CHECK(ndr_pull_array_length(ndr
, &r
->in
.ServiceName
));
4264 if (ndr_get_array_length(ndr
, &r
->in
.ServiceName
) > ndr_get_array_size(ndr
, &r
->in
.ServiceName
)) {
4265 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
));
4267 NDR_CHECK(ndr_check_string_terminator(ndr
, ndr_get_array_length(ndr
, &r
->in
.ServiceName
), sizeof(uint16_t)));
4268 NDR_CHECK(ndr_pull_charset(ndr
, NDR_SCALARS
, &r
->in
.ServiceName
, ndr_get_array_length(ndr
, &r
->in
.ServiceName
), sizeof(uint16_t), CH_UTF16
));
4269 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_ServiceName_0
, 0);
4271 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.access_mask
));
4273 if (flags
& NDR_OUT
) {
4274 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
4276 return NDR_ERR_SUCCESS
;
4279 _PUBLIC_
void ndr_print_svcctl_OpenServiceA(struct ndr_print
*ndr
, const char *name
, int flags
, const struct svcctl_OpenServiceA
*r
)
4281 ndr_print_struct(ndr
, name
, "svcctl_OpenServiceA");
4283 if (flags
& NDR_SET_VALUES
) {
4284 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
4286 if (flags
& NDR_IN
) {
4287 ndr_print_struct(ndr
, "in", "svcctl_OpenServiceA");
4289 ndr_print_ptr(ndr
, "scmanager_handle", r
->in
.scmanager_handle
);
4291 ndr_print_policy_handle(ndr
, "scmanager_handle", r
->in
.scmanager_handle
);
4293 ndr_print_ptr(ndr
, "ServiceName", r
->in
.ServiceName
);
4295 if (r
->in
.ServiceName
) {
4296 ndr_print_string(ndr
, "ServiceName", r
->in
.ServiceName
);
4299 ndr_print_uint32(ndr
, "access_mask", r
->in
.access_mask
);
4302 if (flags
& NDR_OUT
) {
4303 ndr_print_struct(ndr
, "out", "svcctl_OpenServiceA");
4305 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
4311 static enum ndr_err_code
ndr_push_svcctl_QueryServiceConfigA(struct ndr_push
*ndr
, int flags
, const struct svcctl_QueryServiceConfigA
*r
)
4313 if (flags
& NDR_IN
) {
4314 if (r
->in
.handle
== NULL
) {
4315 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
4317 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->in
.handle
));
4318 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.buf_size
));
4320 if (flags
& NDR_OUT
) {
4321 NDR_CHECK(ndr_push_array_uint8(ndr
, NDR_SCALARS
, r
->out
.query
, r
->in
.buf_size
));
4322 if (r
->out
.bytes_needed
== NULL
) {
4323 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
4325 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, *r
->out
.bytes_needed
));
4326 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
4328 return NDR_ERR_SUCCESS
;
4331 static enum ndr_err_code
ndr_pull_svcctl_QueryServiceConfigA(struct ndr_pull
*ndr
, int flags
, struct svcctl_QueryServiceConfigA
*r
)
4333 TALLOC_CTX
*_mem_save_handle_0
;
4334 TALLOC_CTX
*_mem_save_bytes_needed_0
;
4335 if (flags
& NDR_IN
) {
4336 ZERO_STRUCT(r
->out
);
4338 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
4339 NDR_PULL_ALLOC(ndr
, r
->in
.handle
);
4341 _mem_save_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
4342 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.handle
, LIBNDR_FLAG_REF_ALLOC
);
4343 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->in
.handle
));
4344 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_handle_0
, LIBNDR_FLAG_REF_ALLOC
);
4345 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.buf_size
));
4346 NDR_PULL_ALLOC(ndr
, r
->out
.bytes_needed
);
4347 ZERO_STRUCTP(r
->out
.bytes_needed
);
4349 if (flags
& NDR_OUT
) {
4350 NDR_PULL_ALLOC_N(ndr
, r
->out
.query
, r
->in
.buf_size
);
4351 NDR_CHECK(ndr_pull_array_uint8(ndr
, NDR_SCALARS
, r
->out
.query
, r
->in
.buf_size
));
4352 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
4353 NDR_PULL_ALLOC(ndr
, r
->out
.bytes_needed
);
4355 _mem_save_bytes_needed_0
= NDR_PULL_GET_MEM_CTX(ndr
);
4356 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.bytes_needed
, LIBNDR_FLAG_REF_ALLOC
);
4357 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, r
->out
.bytes_needed
));
4358 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_bytes_needed_0
, LIBNDR_FLAG_REF_ALLOC
);
4359 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
4361 return NDR_ERR_SUCCESS
;
4364 _PUBLIC_
void ndr_print_svcctl_QueryServiceConfigA(struct ndr_print
*ndr
, const char *name
, int flags
, const struct svcctl_QueryServiceConfigA
*r
)
4366 ndr_print_struct(ndr
, name
, "svcctl_QueryServiceConfigA");
4368 if (flags
& NDR_SET_VALUES
) {
4369 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
4371 if (flags
& NDR_IN
) {
4372 ndr_print_struct(ndr
, "in", "svcctl_QueryServiceConfigA");
4374 ndr_print_ptr(ndr
, "handle", r
->in
.handle
);
4376 ndr_print_policy_handle(ndr
, "handle", r
->in
.handle
);
4378 ndr_print_uint32(ndr
, "buf_size", r
->in
.buf_size
);
4381 if (flags
& NDR_OUT
) {
4382 ndr_print_struct(ndr
, "out", "svcctl_QueryServiceConfigA");
4384 ndr_print_array_uint8(ndr
, "query", r
->out
.query
, r
->in
.buf_size
);
4385 ndr_print_ptr(ndr
, "bytes_needed", r
->out
.bytes_needed
);
4387 ndr_print_uint32(ndr
, "bytes_needed", *r
->out
.bytes_needed
);
4389 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
4395 static enum ndr_err_code
ndr_push_svcctl_QueryServiceLockStatusA(struct ndr_push
*ndr
, int flags
, const struct svcctl_QueryServiceLockStatusA
*r
)
4397 if (flags
& NDR_IN
) {
4398 if (r
->in
.handle
== NULL
) {
4399 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
4401 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->in
.handle
));
4402 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.buf_size
));
4404 if (flags
& NDR_OUT
) {
4405 if (r
->out
.lock_status
== NULL
) {
4406 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
4408 NDR_CHECK(ndr_push_SERVICE_LOCK_STATUS(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->out
.lock_status
));
4409 if (r
->out
.required_buf_size
== NULL
) {
4410 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
4412 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, *r
->out
.required_buf_size
));
4413 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
4415 return NDR_ERR_SUCCESS
;
4418 static enum ndr_err_code
ndr_pull_svcctl_QueryServiceLockStatusA(struct ndr_pull
*ndr
, int flags
, struct svcctl_QueryServiceLockStatusA
*r
)
4420 TALLOC_CTX
*_mem_save_handle_0
;
4421 TALLOC_CTX
*_mem_save_lock_status_0
;
4422 TALLOC_CTX
*_mem_save_required_buf_size_0
;
4423 if (flags
& NDR_IN
) {
4424 ZERO_STRUCT(r
->out
);
4426 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
4427 NDR_PULL_ALLOC(ndr
, r
->in
.handle
);
4429 _mem_save_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
4430 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.handle
, LIBNDR_FLAG_REF_ALLOC
);
4431 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->in
.handle
));
4432 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_handle_0
, LIBNDR_FLAG_REF_ALLOC
);
4433 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.buf_size
));
4434 NDR_PULL_ALLOC(ndr
, r
->out
.lock_status
);
4435 ZERO_STRUCTP(r
->out
.lock_status
);
4436 NDR_PULL_ALLOC(ndr
, r
->out
.required_buf_size
);
4437 ZERO_STRUCTP(r
->out
.required_buf_size
);
4439 if (flags
& NDR_OUT
) {
4440 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
4441 NDR_PULL_ALLOC(ndr
, r
->out
.lock_status
);
4443 _mem_save_lock_status_0
= NDR_PULL_GET_MEM_CTX(ndr
);
4444 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.lock_status
, LIBNDR_FLAG_REF_ALLOC
);
4445 NDR_CHECK(ndr_pull_SERVICE_LOCK_STATUS(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->out
.lock_status
));
4446 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_lock_status_0
, LIBNDR_FLAG_REF_ALLOC
);
4447 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
4448 NDR_PULL_ALLOC(ndr
, r
->out
.required_buf_size
);
4450 _mem_save_required_buf_size_0
= NDR_PULL_GET_MEM_CTX(ndr
);
4451 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.required_buf_size
, LIBNDR_FLAG_REF_ALLOC
);
4452 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, r
->out
.required_buf_size
));
4453 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_required_buf_size_0
, LIBNDR_FLAG_REF_ALLOC
);
4454 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
4456 return NDR_ERR_SUCCESS
;
4459 _PUBLIC_
void ndr_print_svcctl_QueryServiceLockStatusA(struct ndr_print
*ndr
, const char *name
, int flags
, const struct svcctl_QueryServiceLockStatusA
*r
)
4461 ndr_print_struct(ndr
, name
, "svcctl_QueryServiceLockStatusA");
4463 if (flags
& NDR_SET_VALUES
) {
4464 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
4466 if (flags
& NDR_IN
) {
4467 ndr_print_struct(ndr
, "in", "svcctl_QueryServiceLockStatusA");
4469 ndr_print_ptr(ndr
, "handle", r
->in
.handle
);
4471 ndr_print_policy_handle(ndr
, "handle", r
->in
.handle
);
4473 ndr_print_uint32(ndr
, "buf_size", r
->in
.buf_size
);
4476 if (flags
& NDR_OUT
) {
4477 ndr_print_struct(ndr
, "out", "svcctl_QueryServiceLockStatusA");
4479 ndr_print_ptr(ndr
, "lock_status", r
->out
.lock_status
);
4481 ndr_print_SERVICE_LOCK_STATUS(ndr
, "lock_status", r
->out
.lock_status
);
4483 ndr_print_ptr(ndr
, "required_buf_size", r
->out
.required_buf_size
);
4485 ndr_print_uint32(ndr
, "required_buf_size", *r
->out
.required_buf_size
);
4487 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
4493 static enum ndr_err_code
ndr_push_svcctl_StartServiceA(struct ndr_push
*ndr
, int flags
, const struct svcctl_StartServiceA
*r
)
4495 if (flags
& NDR_IN
) {
4496 if (r
->in
.handle
== NULL
) {
4497 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
4499 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->in
.handle
));
4500 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.NumArgs
));
4501 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.Arguments
));
4502 if (r
->in
.Arguments
) {
4503 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.Arguments
, CH_UTF16
)));
4504 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, 0));
4505 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.Arguments
, CH_UTF16
)));
4506 NDR_CHECK(ndr_push_charset(ndr
, NDR_SCALARS
, r
->in
.Arguments
, ndr_charset_length(r
->in
.Arguments
, CH_UTF16
), sizeof(uint16_t), CH_UTF16
));
4509 if (flags
& NDR_OUT
) {
4510 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
4512 return NDR_ERR_SUCCESS
;
4515 static enum ndr_err_code
ndr_pull_svcctl_StartServiceA(struct ndr_pull
*ndr
, int flags
, struct svcctl_StartServiceA
*r
)
4517 uint32_t _ptr_Arguments
;
4518 TALLOC_CTX
*_mem_save_handle_0
;
4519 TALLOC_CTX
*_mem_save_Arguments_0
;
4520 if (flags
& NDR_IN
) {
4521 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
4522 NDR_PULL_ALLOC(ndr
, r
->in
.handle
);
4524 _mem_save_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
4525 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.handle
, LIBNDR_FLAG_REF_ALLOC
);
4526 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->in
.handle
));
4527 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_handle_0
, LIBNDR_FLAG_REF_ALLOC
);
4528 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.NumArgs
));
4529 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_Arguments
));
4530 if (_ptr_Arguments
) {
4531 NDR_PULL_ALLOC(ndr
, r
->in
.Arguments
);
4533 r
->in
.Arguments
= NULL
;
4535 if (r
->in
.Arguments
) {
4536 _mem_save_Arguments_0
= NDR_PULL_GET_MEM_CTX(ndr
);
4537 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.Arguments
, 0);
4538 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->in
.Arguments
));
4539 NDR_CHECK(ndr_pull_array_length(ndr
, &r
->in
.Arguments
));
4540 if (ndr_get_array_length(ndr
, &r
->in
.Arguments
) > ndr_get_array_size(ndr
, &r
->in
.Arguments
)) {
4541 return ndr_pull_error(ndr
, NDR_ERR_ARRAY_SIZE
, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr
, &r
->in
.Arguments
), ndr_get_array_length(ndr
, &r
->in
.Arguments
));
4543 NDR_CHECK(ndr_check_string_terminator(ndr
, ndr_get_array_length(ndr
, &r
->in
.Arguments
), sizeof(uint16_t)));
4544 NDR_CHECK(ndr_pull_charset(ndr
, NDR_SCALARS
, &r
->in
.Arguments
, ndr_get_array_length(ndr
, &r
->in
.Arguments
), sizeof(uint16_t), CH_UTF16
));
4545 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_Arguments_0
, 0);
4548 if (flags
& NDR_OUT
) {
4549 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
4551 return NDR_ERR_SUCCESS
;
4554 _PUBLIC_
void ndr_print_svcctl_StartServiceA(struct ndr_print
*ndr
, const char *name
, int flags
, const struct svcctl_StartServiceA
*r
)
4556 ndr_print_struct(ndr
, name
, "svcctl_StartServiceA");
4558 if (flags
& NDR_SET_VALUES
) {
4559 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
4561 if (flags
& NDR_IN
) {
4562 ndr_print_struct(ndr
, "in", "svcctl_StartServiceA");
4564 ndr_print_ptr(ndr
, "handle", r
->in
.handle
);
4566 ndr_print_policy_handle(ndr
, "handle", r
->in
.handle
);
4568 ndr_print_uint32(ndr
, "NumArgs", r
->in
.NumArgs
);
4569 ndr_print_ptr(ndr
, "Arguments", r
->in
.Arguments
);
4571 if (r
->in
.Arguments
) {
4572 ndr_print_string(ndr
, "Arguments", r
->in
.Arguments
);
4577 if (flags
& NDR_OUT
) {
4578 ndr_print_struct(ndr
, "out", "svcctl_StartServiceA");
4580 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
4586 static enum ndr_err_code
ndr_push_svcctl_GetServiceDisplayNameA(struct ndr_push
*ndr
, int flags
, const struct svcctl_GetServiceDisplayNameA
*r
)
4588 if (flags
& NDR_IN
) {
4589 if (r
->in
.handle
== NULL
) {
4590 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
4592 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->in
.handle
));
4593 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.service_name
));
4594 if (r
->in
.service_name
) {
4595 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.service_name
, CH_UTF16
)));
4596 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, 0));
4597 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.service_name
, CH_UTF16
)));
4598 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
));
4600 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.display_name_length
));
4601 if (r
->in
.display_name_length
) {
4602 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, *r
->in
.display_name_length
));
4605 if (flags
& NDR_OUT
) {
4606 if (r
->out
.display_name
== NULL
) {
4607 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
4609 NDR_CHECK(ndr_push_unique_ptr(ndr
, *r
->out
.display_name
));
4610 if (*r
->out
.display_name
) {
4611 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(*r
->out
.display_name
, CH_UTF16
)));
4612 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, 0));
4613 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(*r
->out
.display_name
, CH_UTF16
)));
4614 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
));
4616 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->out
.display_name_length
));
4617 if (r
->out
.display_name_length
) {
4618 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, *r
->out
.display_name_length
));
4620 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
4622 return NDR_ERR_SUCCESS
;
4625 static enum ndr_err_code
ndr_pull_svcctl_GetServiceDisplayNameA(struct ndr_pull
*ndr
, int flags
, struct svcctl_GetServiceDisplayNameA
*r
)
4627 uint32_t _ptr_service_name
;
4628 uint32_t _ptr_display_name
;
4629 uint32_t _ptr_display_name_length
;
4630 TALLOC_CTX
*_mem_save_handle_0
;
4631 TALLOC_CTX
*_mem_save_service_name_0
;
4632 TALLOC_CTX
*_mem_save_display_name_0
;
4633 TALLOC_CTX
*_mem_save_display_name_1
;
4634 TALLOC_CTX
*_mem_save_display_name_length_0
;
4635 if (flags
& NDR_IN
) {
4636 ZERO_STRUCT(r
->out
);
4638 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
4639 NDR_PULL_ALLOC(ndr
, r
->in
.handle
);
4641 _mem_save_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
4642 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.handle
, LIBNDR_FLAG_REF_ALLOC
);
4643 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->in
.handle
));
4644 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_handle_0
, LIBNDR_FLAG_REF_ALLOC
);
4645 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_service_name
));
4646 if (_ptr_service_name
) {
4647 NDR_PULL_ALLOC(ndr
, r
->in
.service_name
);
4649 r
->in
.service_name
= NULL
;
4651 if (r
->in
.service_name
) {
4652 _mem_save_service_name_0
= NDR_PULL_GET_MEM_CTX(ndr
);
4653 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.service_name
, 0);
4654 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->in
.service_name
));
4655 NDR_CHECK(ndr_pull_array_length(ndr
, &r
->in
.service_name
));
4656 if (ndr_get_array_length(ndr
, &r
->in
.service_name
) > ndr_get_array_size(ndr
, &r
->in
.service_name
)) {
4657 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
));
4659 NDR_CHECK(ndr_check_string_terminator(ndr
, ndr_get_array_length(ndr
, &r
->in
.service_name
), sizeof(uint16_t)));
4660 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
));
4661 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_service_name_0
, 0);
4663 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_display_name_length
));
4664 if (_ptr_display_name_length
) {
4665 NDR_PULL_ALLOC(ndr
, r
->in
.display_name_length
);
4667 r
->in
.display_name_length
= NULL
;
4669 if (r
->in
.display_name_length
) {
4670 _mem_save_display_name_length_0
= NDR_PULL_GET_MEM_CTX(ndr
);
4671 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.display_name_length
, 0);
4672 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, r
->in
.display_name_length
));
4673 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_display_name_length_0
, 0);
4675 NDR_PULL_ALLOC(ndr
, r
->out
.display_name
);
4676 ZERO_STRUCTP(r
->out
.display_name
);
4678 if (flags
& NDR_OUT
) {
4679 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
4680 NDR_PULL_ALLOC(ndr
, r
->out
.display_name
);
4682 _mem_save_display_name_0
= NDR_PULL_GET_MEM_CTX(ndr
);
4683 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.display_name
, LIBNDR_FLAG_REF_ALLOC
);
4684 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_display_name
));
4685 if (_ptr_display_name
) {
4686 NDR_PULL_ALLOC(ndr
, *r
->out
.display_name
);
4688 *r
->out
.display_name
= NULL
;
4690 if (*r
->out
.display_name
) {
4691 _mem_save_display_name_1
= NDR_PULL_GET_MEM_CTX(ndr
);
4692 NDR_PULL_SET_MEM_CTX(ndr
, *r
->out
.display_name
, 0);
4693 NDR_CHECK(ndr_pull_array_size(ndr
, r
->out
.display_name
));
4694 NDR_CHECK(ndr_pull_array_length(ndr
, r
->out
.display_name
));
4695 if (ndr_get_array_length(ndr
, r
->out
.display_name
) > ndr_get_array_size(ndr
, r
->out
.display_name
)) {
4696 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
));
4698 NDR_CHECK(ndr_check_string_terminator(ndr
, ndr_get_array_length(ndr
, r
->out
.display_name
), sizeof(uint16_t)));
4699 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
));
4700 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_display_name_1
, 0);
4702 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_display_name_0
, LIBNDR_FLAG_REF_ALLOC
);
4703 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_display_name_length
));
4704 if (_ptr_display_name_length
) {
4705 NDR_PULL_ALLOC(ndr
, r
->out
.display_name_length
);
4707 r
->out
.display_name_length
= NULL
;
4709 if (r
->out
.display_name_length
) {
4710 _mem_save_display_name_length_0
= NDR_PULL_GET_MEM_CTX(ndr
);
4711 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.display_name_length
, 0);
4712 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, r
->out
.display_name_length
));
4713 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_display_name_length_0
, 0);
4715 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
4717 return NDR_ERR_SUCCESS
;
4720 _PUBLIC_
void ndr_print_svcctl_GetServiceDisplayNameA(struct ndr_print
*ndr
, const char *name
, int flags
, const struct svcctl_GetServiceDisplayNameA
*r
)
4722 ndr_print_struct(ndr
, name
, "svcctl_GetServiceDisplayNameA");
4724 if (flags
& NDR_SET_VALUES
) {
4725 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
4727 if (flags
& NDR_IN
) {
4728 ndr_print_struct(ndr
, "in", "svcctl_GetServiceDisplayNameA");
4730 ndr_print_ptr(ndr
, "handle", r
->in
.handle
);
4732 ndr_print_policy_handle(ndr
, "handle", r
->in
.handle
);
4734 ndr_print_ptr(ndr
, "service_name", r
->in
.service_name
);
4736 if (r
->in
.service_name
) {
4737 ndr_print_string(ndr
, "service_name", r
->in
.service_name
);
4740 ndr_print_ptr(ndr
, "display_name_length", r
->in
.display_name_length
);
4742 if (r
->in
.display_name_length
) {
4743 ndr_print_uint32(ndr
, "display_name_length", *r
->in
.display_name_length
);
4748 if (flags
& NDR_OUT
) {
4749 ndr_print_struct(ndr
, "out", "svcctl_GetServiceDisplayNameA");
4751 ndr_print_ptr(ndr
, "display_name", r
->out
.display_name
);
4753 ndr_print_ptr(ndr
, "display_name", *r
->out
.display_name
);
4755 if (*r
->out
.display_name
) {
4756 ndr_print_string(ndr
, "display_name", *r
->out
.display_name
);
4760 ndr_print_ptr(ndr
, "display_name_length", r
->out
.display_name_length
);
4762 if (r
->out
.display_name_length
) {
4763 ndr_print_uint32(ndr
, "display_name_length", *r
->out
.display_name_length
);
4766 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
4772 static enum ndr_err_code
ndr_push_svcctl_GetServiceKeyNameA(struct ndr_push
*ndr
, int flags
, const struct svcctl_GetServiceKeyNameA
*r
)
4774 if (flags
& NDR_IN
) {
4775 if (r
->in
.handle
== NULL
) {
4776 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
4778 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->in
.handle
));
4779 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.service_name
));
4780 if (r
->in
.service_name
) {
4781 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.service_name
, CH_UTF16
)));
4782 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, 0));
4783 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.service_name
, CH_UTF16
)));
4784 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
));
4786 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.display_name_length
));
4787 if (r
->in
.display_name_length
) {
4788 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, *r
->in
.display_name_length
));
4791 if (flags
& NDR_OUT
) {
4792 if (r
->out
.key_name
== NULL
) {
4793 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
4795 NDR_CHECK(ndr_push_unique_ptr(ndr
, *r
->out
.key_name
));
4796 if (*r
->out
.key_name
) {
4797 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(*r
->out
.key_name
, CH_UTF16
)));
4798 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, 0));
4799 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(*r
->out
.key_name
, CH_UTF16
)));
4800 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
));
4802 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->out
.display_name_length
));
4803 if (r
->out
.display_name_length
) {
4804 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, *r
->out
.display_name_length
));
4806 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
4808 return NDR_ERR_SUCCESS
;
4811 static enum ndr_err_code
ndr_pull_svcctl_GetServiceKeyNameA(struct ndr_pull
*ndr
, int flags
, struct svcctl_GetServiceKeyNameA
*r
)
4813 uint32_t _ptr_service_name
;
4814 uint32_t _ptr_key_name
;
4815 uint32_t _ptr_display_name_length
;
4816 TALLOC_CTX
*_mem_save_handle_0
;
4817 TALLOC_CTX
*_mem_save_service_name_0
;
4818 TALLOC_CTX
*_mem_save_key_name_0
;
4819 TALLOC_CTX
*_mem_save_key_name_1
;
4820 TALLOC_CTX
*_mem_save_display_name_length_0
;
4821 if (flags
& NDR_IN
) {
4822 ZERO_STRUCT(r
->out
);
4824 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
4825 NDR_PULL_ALLOC(ndr
, r
->in
.handle
);
4827 _mem_save_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
4828 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.handle
, LIBNDR_FLAG_REF_ALLOC
);
4829 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->in
.handle
));
4830 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_handle_0
, LIBNDR_FLAG_REF_ALLOC
);
4831 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_service_name
));
4832 if (_ptr_service_name
) {
4833 NDR_PULL_ALLOC(ndr
, r
->in
.service_name
);
4835 r
->in
.service_name
= NULL
;
4837 if (r
->in
.service_name
) {
4838 _mem_save_service_name_0
= NDR_PULL_GET_MEM_CTX(ndr
);
4839 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.service_name
, 0);
4840 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->in
.service_name
));
4841 NDR_CHECK(ndr_pull_array_length(ndr
, &r
->in
.service_name
));
4842 if (ndr_get_array_length(ndr
, &r
->in
.service_name
) > ndr_get_array_size(ndr
, &r
->in
.service_name
)) {
4843 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
));
4845 NDR_CHECK(ndr_check_string_terminator(ndr
, ndr_get_array_length(ndr
, &r
->in
.service_name
), sizeof(uint16_t)));
4846 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
));
4847 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_service_name_0
, 0);
4849 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_display_name_length
));
4850 if (_ptr_display_name_length
) {
4851 NDR_PULL_ALLOC(ndr
, r
->in
.display_name_length
);
4853 r
->in
.display_name_length
= NULL
;
4855 if (r
->in
.display_name_length
) {
4856 _mem_save_display_name_length_0
= NDR_PULL_GET_MEM_CTX(ndr
);
4857 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.display_name_length
, 0);
4858 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, r
->in
.display_name_length
));
4859 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_display_name_length_0
, 0);
4861 NDR_PULL_ALLOC(ndr
, r
->out
.key_name
);
4862 ZERO_STRUCTP(r
->out
.key_name
);
4864 if (flags
& NDR_OUT
) {
4865 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
4866 NDR_PULL_ALLOC(ndr
, r
->out
.key_name
);
4868 _mem_save_key_name_0
= NDR_PULL_GET_MEM_CTX(ndr
);
4869 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.key_name
, LIBNDR_FLAG_REF_ALLOC
);
4870 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_key_name
));
4871 if (_ptr_key_name
) {
4872 NDR_PULL_ALLOC(ndr
, *r
->out
.key_name
);
4874 *r
->out
.key_name
= NULL
;
4876 if (*r
->out
.key_name
) {
4877 _mem_save_key_name_1
= NDR_PULL_GET_MEM_CTX(ndr
);
4878 NDR_PULL_SET_MEM_CTX(ndr
, *r
->out
.key_name
, 0);
4879 NDR_CHECK(ndr_pull_array_size(ndr
, r
->out
.key_name
));
4880 NDR_CHECK(ndr_pull_array_length(ndr
, r
->out
.key_name
));
4881 if (ndr_get_array_length(ndr
, r
->out
.key_name
) > ndr_get_array_size(ndr
, r
->out
.key_name
)) {
4882 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
));
4884 NDR_CHECK(ndr_check_string_terminator(ndr
, ndr_get_array_length(ndr
, r
->out
.key_name
), sizeof(uint16_t)));
4885 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
));
4886 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_key_name_1
, 0);
4888 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_key_name_0
, LIBNDR_FLAG_REF_ALLOC
);
4889 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_display_name_length
));
4890 if (_ptr_display_name_length
) {
4891 NDR_PULL_ALLOC(ndr
, r
->out
.display_name_length
);
4893 r
->out
.display_name_length
= NULL
;
4895 if (r
->out
.display_name_length
) {
4896 _mem_save_display_name_length_0
= NDR_PULL_GET_MEM_CTX(ndr
);
4897 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.display_name_length
, 0);
4898 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, r
->out
.display_name_length
));
4899 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_display_name_length_0
, 0);
4901 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
4903 return NDR_ERR_SUCCESS
;
4906 _PUBLIC_
void ndr_print_svcctl_GetServiceKeyNameA(struct ndr_print
*ndr
, const char *name
, int flags
, const struct svcctl_GetServiceKeyNameA
*r
)
4908 ndr_print_struct(ndr
, name
, "svcctl_GetServiceKeyNameA");
4910 if (flags
& NDR_SET_VALUES
) {
4911 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
4913 if (flags
& NDR_IN
) {
4914 ndr_print_struct(ndr
, "in", "svcctl_GetServiceKeyNameA");
4916 ndr_print_ptr(ndr
, "handle", r
->in
.handle
);
4918 ndr_print_policy_handle(ndr
, "handle", r
->in
.handle
);
4920 ndr_print_ptr(ndr
, "service_name", r
->in
.service_name
);
4922 if (r
->in
.service_name
) {
4923 ndr_print_string(ndr
, "service_name", r
->in
.service_name
);
4926 ndr_print_ptr(ndr
, "display_name_length", r
->in
.display_name_length
);
4928 if (r
->in
.display_name_length
) {
4929 ndr_print_uint32(ndr
, "display_name_length", *r
->in
.display_name_length
);
4934 if (flags
& NDR_OUT
) {
4935 ndr_print_struct(ndr
, "out", "svcctl_GetServiceKeyNameA");
4937 ndr_print_ptr(ndr
, "key_name", r
->out
.key_name
);
4939 ndr_print_ptr(ndr
, "key_name", *r
->out
.key_name
);
4941 if (*r
->out
.key_name
) {
4942 ndr_print_string(ndr
, "key_name", *r
->out
.key_name
);
4946 ndr_print_ptr(ndr
, "display_name_length", r
->out
.display_name_length
);
4948 if (r
->out
.display_name_length
) {
4949 ndr_print_uint32(ndr
, "display_name_length", *r
->out
.display_name_length
);
4952 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
4958 static enum ndr_err_code
ndr_push_svcctl_GetCurrentGroupeStateW(struct ndr_push
*ndr
, int flags
, const struct svcctl_GetCurrentGroupeStateW
*r
)
4960 if (flags
& NDR_IN
) {
4962 if (flags
& NDR_OUT
) {
4963 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
4965 return NDR_ERR_SUCCESS
;
4968 static enum ndr_err_code
ndr_pull_svcctl_GetCurrentGroupeStateW(struct ndr_pull
*ndr
, int flags
, struct svcctl_GetCurrentGroupeStateW
*r
)
4970 if (flags
& NDR_IN
) {
4972 if (flags
& NDR_OUT
) {
4973 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
4975 return NDR_ERR_SUCCESS
;
4978 _PUBLIC_
void ndr_print_svcctl_GetCurrentGroupeStateW(struct ndr_print
*ndr
, const char *name
, int flags
, const struct svcctl_GetCurrentGroupeStateW
*r
)
4980 ndr_print_struct(ndr
, name
, "svcctl_GetCurrentGroupeStateW");
4982 if (flags
& NDR_SET_VALUES
) {
4983 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
4985 if (flags
& NDR_IN
) {
4986 ndr_print_struct(ndr
, "in", "svcctl_GetCurrentGroupeStateW");
4990 if (flags
& NDR_OUT
) {
4991 ndr_print_struct(ndr
, "out", "svcctl_GetCurrentGroupeStateW");
4993 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
4999 static enum ndr_err_code
ndr_push_svcctl_EnumServiceGroupW(struct ndr_push
*ndr
, int flags
, const struct svcctl_EnumServiceGroupW
*r
)
5001 if (flags
& NDR_IN
) {
5003 if (flags
& NDR_OUT
) {
5004 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
5006 return NDR_ERR_SUCCESS
;
5009 static enum ndr_err_code
ndr_pull_svcctl_EnumServiceGroupW(struct ndr_pull
*ndr
, int flags
, struct svcctl_EnumServiceGroupW
*r
)
5011 if (flags
& NDR_IN
) {
5013 if (flags
& NDR_OUT
) {
5014 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
5016 return NDR_ERR_SUCCESS
;
5019 _PUBLIC_
void ndr_print_svcctl_EnumServiceGroupW(struct ndr_print
*ndr
, const char *name
, int flags
, const struct svcctl_EnumServiceGroupW
*r
)
5021 ndr_print_struct(ndr
, name
, "svcctl_EnumServiceGroupW");
5023 if (flags
& NDR_SET_VALUES
) {
5024 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
5026 if (flags
& NDR_IN
) {
5027 ndr_print_struct(ndr
, "in", "svcctl_EnumServiceGroupW");
5031 if (flags
& NDR_OUT
) {
5032 ndr_print_struct(ndr
, "out", "svcctl_EnumServiceGroupW");
5034 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
5040 static enum ndr_err_code
ndr_push_svcctl_ChangeServiceConfig2A(struct ndr_push
*ndr
, int flags
, const struct svcctl_ChangeServiceConfig2A
*r
)
5042 if (flags
& NDR_IN
) {
5043 if (r
->in
.handle
== NULL
) {
5044 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
5046 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->in
.handle
));
5047 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.info_level
));
5048 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.info
));
5050 NDR_CHECK(ndr_push_uint8(ndr
, NDR_SCALARS
, *r
->in
.info
));
5053 if (flags
& NDR_OUT
) {
5054 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
5056 return NDR_ERR_SUCCESS
;
5059 static enum ndr_err_code
ndr_pull_svcctl_ChangeServiceConfig2A(struct ndr_pull
*ndr
, int flags
, struct svcctl_ChangeServiceConfig2A
*r
)
5062 TALLOC_CTX
*_mem_save_handle_0
;
5063 TALLOC_CTX
*_mem_save_info_0
;
5064 if (flags
& NDR_IN
) {
5065 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
5066 NDR_PULL_ALLOC(ndr
, r
->in
.handle
);
5068 _mem_save_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
5069 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.handle
, LIBNDR_FLAG_REF_ALLOC
);
5070 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->in
.handle
));
5071 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_handle_0
, LIBNDR_FLAG_REF_ALLOC
);
5072 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.info_level
));
5073 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_info
));
5075 NDR_PULL_ALLOC(ndr
, r
->in
.info
);
5080 _mem_save_info_0
= NDR_PULL_GET_MEM_CTX(ndr
);
5081 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.info
, 0);
5082 NDR_CHECK(ndr_pull_uint8(ndr
, NDR_SCALARS
, r
->in
.info
));
5083 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_info_0
, 0);
5086 if (flags
& NDR_OUT
) {
5087 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
5089 return NDR_ERR_SUCCESS
;
5092 _PUBLIC_
void ndr_print_svcctl_ChangeServiceConfig2A(struct ndr_print
*ndr
, const char *name
, int flags
, const struct svcctl_ChangeServiceConfig2A
*r
)
5094 ndr_print_struct(ndr
, name
, "svcctl_ChangeServiceConfig2A");
5096 if (flags
& NDR_SET_VALUES
) {
5097 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
5099 if (flags
& NDR_IN
) {
5100 ndr_print_struct(ndr
, "in", "svcctl_ChangeServiceConfig2A");
5102 ndr_print_ptr(ndr
, "handle", r
->in
.handle
);
5104 ndr_print_policy_handle(ndr
, "handle", r
->in
.handle
);
5106 ndr_print_uint32(ndr
, "info_level", r
->in
.info_level
);
5107 ndr_print_ptr(ndr
, "info", r
->in
.info
);
5110 ndr_print_uint8(ndr
, "info", *r
->in
.info
);
5115 if (flags
& NDR_OUT
) {
5116 ndr_print_struct(ndr
, "out", "svcctl_ChangeServiceConfig2A");
5118 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
5124 static enum ndr_err_code
ndr_push_svcctl_ChangeServiceConfig2W(struct ndr_push
*ndr
, int flags
, const struct svcctl_ChangeServiceConfig2W
*r
)
5126 if (flags
& NDR_IN
) {
5127 if (r
->in
.handle
== NULL
) {
5128 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
5130 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->in
.handle
));
5131 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.info_level
));
5132 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.info
));
5134 NDR_CHECK(ndr_push_uint8(ndr
, NDR_SCALARS
, *r
->in
.info
));
5137 if (flags
& NDR_OUT
) {
5138 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
5140 return NDR_ERR_SUCCESS
;
5143 static enum ndr_err_code
ndr_pull_svcctl_ChangeServiceConfig2W(struct ndr_pull
*ndr
, int flags
, struct svcctl_ChangeServiceConfig2W
*r
)
5146 TALLOC_CTX
*_mem_save_handle_0
;
5147 TALLOC_CTX
*_mem_save_info_0
;
5148 if (flags
& NDR_IN
) {
5149 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
5150 NDR_PULL_ALLOC(ndr
, r
->in
.handle
);
5152 _mem_save_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
5153 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.handle
, LIBNDR_FLAG_REF_ALLOC
);
5154 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->in
.handle
));
5155 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_handle_0
, LIBNDR_FLAG_REF_ALLOC
);
5156 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.info_level
));
5157 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_info
));
5159 NDR_PULL_ALLOC(ndr
, r
->in
.info
);
5164 _mem_save_info_0
= NDR_PULL_GET_MEM_CTX(ndr
);
5165 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.info
, 0);
5166 NDR_CHECK(ndr_pull_uint8(ndr
, NDR_SCALARS
, r
->in
.info
));
5167 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_info_0
, 0);
5170 if (flags
& NDR_OUT
) {
5171 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
5173 return NDR_ERR_SUCCESS
;
5176 _PUBLIC_
void ndr_print_svcctl_ChangeServiceConfig2W(struct ndr_print
*ndr
, const char *name
, int flags
, const struct svcctl_ChangeServiceConfig2W
*r
)
5178 ndr_print_struct(ndr
, name
, "svcctl_ChangeServiceConfig2W");
5180 if (flags
& NDR_SET_VALUES
) {
5181 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
5183 if (flags
& NDR_IN
) {
5184 ndr_print_struct(ndr
, "in", "svcctl_ChangeServiceConfig2W");
5186 ndr_print_ptr(ndr
, "handle", r
->in
.handle
);
5188 ndr_print_policy_handle(ndr
, "handle", r
->in
.handle
);
5190 ndr_print_uint32(ndr
, "info_level", r
->in
.info_level
);
5191 ndr_print_ptr(ndr
, "info", r
->in
.info
);
5194 ndr_print_uint8(ndr
, "info", *r
->in
.info
);
5199 if (flags
& NDR_OUT
) {
5200 ndr_print_struct(ndr
, "out", "svcctl_ChangeServiceConfig2W");
5202 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
5208 static enum ndr_err_code
ndr_push_svcctl_QueryServiceConfig2A(struct ndr_push
*ndr
, int flags
, const struct svcctl_QueryServiceConfig2A
*r
)
5210 if (flags
& NDR_IN
) {
5211 if (r
->in
.handle
== NULL
) {
5212 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
5214 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->in
.handle
));
5215 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.info_level
));
5216 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.buf_size
));
5218 if (flags
& NDR_OUT
) {
5219 NDR_CHECK(ndr_push_array_uint8(ndr
, NDR_SCALARS
, r
->out
.buffer
, r
->in
.buf_size
));
5220 if (r
->out
.bytes_needed
== NULL
) {
5221 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
5223 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, *r
->out
.bytes_needed
));
5224 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
5226 return NDR_ERR_SUCCESS
;
5229 static enum ndr_err_code
ndr_pull_svcctl_QueryServiceConfig2A(struct ndr_pull
*ndr
, int flags
, struct svcctl_QueryServiceConfig2A
*r
)
5231 TALLOC_CTX
*_mem_save_handle_0
;
5232 TALLOC_CTX
*_mem_save_bytes_needed_0
;
5233 if (flags
& NDR_IN
) {
5234 ZERO_STRUCT(r
->out
);
5236 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
5237 NDR_PULL_ALLOC(ndr
, r
->in
.handle
);
5239 _mem_save_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
5240 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.handle
, LIBNDR_FLAG_REF_ALLOC
);
5241 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->in
.handle
));
5242 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_handle_0
, LIBNDR_FLAG_REF_ALLOC
);
5243 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.info_level
));
5244 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.buf_size
));
5245 NDR_PULL_ALLOC(ndr
, r
->out
.bytes_needed
);
5246 ZERO_STRUCTP(r
->out
.bytes_needed
);
5248 if (flags
& NDR_OUT
) {
5249 NDR_PULL_ALLOC_N(ndr
, r
->out
.buffer
, r
->in
.buf_size
);
5250 NDR_CHECK(ndr_pull_array_uint8(ndr
, NDR_SCALARS
, r
->out
.buffer
, r
->in
.buf_size
));
5251 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
5252 NDR_PULL_ALLOC(ndr
, r
->out
.bytes_needed
);
5254 _mem_save_bytes_needed_0
= NDR_PULL_GET_MEM_CTX(ndr
);
5255 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.bytes_needed
, LIBNDR_FLAG_REF_ALLOC
);
5256 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, r
->out
.bytes_needed
));
5257 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_bytes_needed_0
, LIBNDR_FLAG_REF_ALLOC
);
5258 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
5260 return NDR_ERR_SUCCESS
;
5263 _PUBLIC_
void ndr_print_svcctl_QueryServiceConfig2A(struct ndr_print
*ndr
, const char *name
, int flags
, const struct svcctl_QueryServiceConfig2A
*r
)
5265 ndr_print_struct(ndr
, name
, "svcctl_QueryServiceConfig2A");
5267 if (flags
& NDR_SET_VALUES
) {
5268 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
5270 if (flags
& NDR_IN
) {
5271 ndr_print_struct(ndr
, "in", "svcctl_QueryServiceConfig2A");
5273 ndr_print_ptr(ndr
, "handle", r
->in
.handle
);
5275 ndr_print_policy_handle(ndr
, "handle", r
->in
.handle
);
5277 ndr_print_uint32(ndr
, "info_level", r
->in
.info_level
);
5278 ndr_print_uint32(ndr
, "buf_size", r
->in
.buf_size
);
5281 if (flags
& NDR_OUT
) {
5282 ndr_print_struct(ndr
, "out", "svcctl_QueryServiceConfig2A");
5284 ndr_print_array_uint8(ndr
, "buffer", r
->out
.buffer
, r
->in
.buf_size
);
5285 ndr_print_ptr(ndr
, "bytes_needed", r
->out
.bytes_needed
);
5287 ndr_print_uint32(ndr
, "bytes_needed", *r
->out
.bytes_needed
);
5289 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
5295 static enum ndr_err_code
ndr_push_svcctl_QueryServiceConfig2W(struct ndr_push
*ndr
, int flags
, const struct svcctl_QueryServiceConfig2W
*r
)
5297 if (flags
& NDR_IN
) {
5298 if (r
->in
.handle
== NULL
) {
5299 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
5301 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->in
.handle
));
5302 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.info_level
));
5303 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.buf_size
));
5305 if (flags
& NDR_OUT
) {
5306 NDR_CHECK(ndr_push_array_uint8(ndr
, NDR_SCALARS
, r
->out
.buffer
, r
->in
.buf_size
));
5307 if (r
->out
.bytes_needed
== NULL
) {
5308 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
5310 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, *r
->out
.bytes_needed
));
5311 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
5313 return NDR_ERR_SUCCESS
;
5316 static enum ndr_err_code
ndr_pull_svcctl_QueryServiceConfig2W(struct ndr_pull
*ndr
, int flags
, struct svcctl_QueryServiceConfig2W
*r
)
5318 TALLOC_CTX
*_mem_save_handle_0
;
5319 TALLOC_CTX
*_mem_save_bytes_needed_0
;
5320 if (flags
& NDR_IN
) {
5321 ZERO_STRUCT(r
->out
);
5323 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
5324 NDR_PULL_ALLOC(ndr
, r
->in
.handle
);
5326 _mem_save_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
5327 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.handle
, LIBNDR_FLAG_REF_ALLOC
);
5328 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->in
.handle
));
5329 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_handle_0
, LIBNDR_FLAG_REF_ALLOC
);
5330 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.info_level
));
5331 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.buf_size
));
5332 NDR_PULL_ALLOC(ndr
, r
->out
.bytes_needed
);
5333 ZERO_STRUCTP(r
->out
.bytes_needed
);
5335 if (flags
& NDR_OUT
) {
5336 NDR_PULL_ALLOC_N(ndr
, r
->out
.buffer
, r
->in
.buf_size
);
5337 NDR_CHECK(ndr_pull_array_uint8(ndr
, NDR_SCALARS
, r
->out
.buffer
, r
->in
.buf_size
));
5338 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
5339 NDR_PULL_ALLOC(ndr
, r
->out
.bytes_needed
);
5341 _mem_save_bytes_needed_0
= NDR_PULL_GET_MEM_CTX(ndr
);
5342 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.bytes_needed
, LIBNDR_FLAG_REF_ALLOC
);
5343 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, r
->out
.bytes_needed
));
5344 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_bytes_needed_0
, LIBNDR_FLAG_REF_ALLOC
);
5345 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
5347 return NDR_ERR_SUCCESS
;
5350 _PUBLIC_
void ndr_print_svcctl_QueryServiceConfig2W(struct ndr_print
*ndr
, const char *name
, int flags
, const struct svcctl_QueryServiceConfig2W
*r
)
5352 ndr_print_struct(ndr
, name
, "svcctl_QueryServiceConfig2W");
5354 if (flags
& NDR_SET_VALUES
) {
5355 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
5357 if (flags
& NDR_IN
) {
5358 ndr_print_struct(ndr
, "in", "svcctl_QueryServiceConfig2W");
5360 ndr_print_ptr(ndr
, "handle", r
->in
.handle
);
5362 ndr_print_policy_handle(ndr
, "handle", r
->in
.handle
);
5364 ndr_print_uint32(ndr
, "info_level", r
->in
.info_level
);
5365 ndr_print_uint32(ndr
, "buf_size", r
->in
.buf_size
);
5368 if (flags
& NDR_OUT
) {
5369 ndr_print_struct(ndr
, "out", "svcctl_QueryServiceConfig2W");
5371 ndr_print_array_uint8(ndr
, "buffer", r
->out
.buffer
, r
->in
.buf_size
);
5372 ndr_print_ptr(ndr
, "bytes_needed", r
->out
.bytes_needed
);
5374 ndr_print_uint32(ndr
, "bytes_needed", *r
->out
.bytes_needed
);
5376 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
5382 static enum ndr_err_code
ndr_push_svcctl_QueryServiceStatusEx(struct ndr_push
*ndr
, int flags
, const struct svcctl_QueryServiceStatusEx
*r
)
5384 if (flags
& NDR_IN
) {
5385 if (r
->in
.handle
== NULL
) {
5386 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
5388 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->in
.handle
));
5389 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.info_level
));
5390 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.buf_size
));
5392 if (flags
& NDR_OUT
) {
5393 NDR_CHECK(ndr_push_array_uint8(ndr
, NDR_SCALARS
, r
->out
.buffer
, r
->in
.buf_size
));
5394 if (r
->out
.bytes_needed
== NULL
) {
5395 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
5397 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, *r
->out
.bytes_needed
));
5398 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
5400 return NDR_ERR_SUCCESS
;
5403 static enum ndr_err_code
ndr_pull_svcctl_QueryServiceStatusEx(struct ndr_pull
*ndr
, int flags
, struct svcctl_QueryServiceStatusEx
*r
)
5405 TALLOC_CTX
*_mem_save_handle_0
;
5406 TALLOC_CTX
*_mem_save_bytes_needed_0
;
5407 if (flags
& NDR_IN
) {
5408 ZERO_STRUCT(r
->out
);
5410 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
5411 NDR_PULL_ALLOC(ndr
, r
->in
.handle
);
5413 _mem_save_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
5414 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.handle
, LIBNDR_FLAG_REF_ALLOC
);
5415 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->in
.handle
));
5416 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_handle_0
, LIBNDR_FLAG_REF_ALLOC
);
5417 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.info_level
));
5418 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.buf_size
));
5419 NDR_PULL_ALLOC(ndr
, r
->out
.bytes_needed
);
5420 ZERO_STRUCTP(r
->out
.bytes_needed
);
5422 if (flags
& NDR_OUT
) {
5423 NDR_PULL_ALLOC_N(ndr
, r
->out
.buffer
, r
->in
.buf_size
);
5424 NDR_CHECK(ndr_pull_array_uint8(ndr
, NDR_SCALARS
, r
->out
.buffer
, r
->in
.buf_size
));
5425 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
5426 NDR_PULL_ALLOC(ndr
, r
->out
.bytes_needed
);
5428 _mem_save_bytes_needed_0
= NDR_PULL_GET_MEM_CTX(ndr
);
5429 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.bytes_needed
, LIBNDR_FLAG_REF_ALLOC
);
5430 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, r
->out
.bytes_needed
));
5431 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_bytes_needed_0
, LIBNDR_FLAG_REF_ALLOC
);
5432 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
5434 return NDR_ERR_SUCCESS
;
5437 _PUBLIC_
void ndr_print_svcctl_QueryServiceStatusEx(struct ndr_print
*ndr
, const char *name
, int flags
, const struct svcctl_QueryServiceStatusEx
*r
)
5439 ndr_print_struct(ndr
, name
, "svcctl_QueryServiceStatusEx");
5441 if (flags
& NDR_SET_VALUES
) {
5442 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
5444 if (flags
& NDR_IN
) {
5445 ndr_print_struct(ndr
, "in", "svcctl_QueryServiceStatusEx");
5447 ndr_print_ptr(ndr
, "handle", r
->in
.handle
);
5449 ndr_print_policy_handle(ndr
, "handle", r
->in
.handle
);
5451 ndr_print_uint32(ndr
, "info_level", r
->in
.info_level
);
5452 ndr_print_uint32(ndr
, "buf_size", r
->in
.buf_size
);
5455 if (flags
& NDR_OUT
) {
5456 ndr_print_struct(ndr
, "out", "svcctl_QueryServiceStatusEx");
5458 ndr_print_array_uint8(ndr
, "buffer", r
->out
.buffer
, r
->in
.buf_size
);
5459 ndr_print_ptr(ndr
, "bytes_needed", r
->out
.bytes_needed
);
5461 ndr_print_uint32(ndr
, "bytes_needed", *r
->out
.bytes_needed
);
5463 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
5469 static enum ndr_err_code
ndr_push_EnumServicesStatusExA(struct ndr_push
*ndr
, int flags
, const struct EnumServicesStatusExA
*r
)
5471 if (flags
& NDR_IN
) {
5472 if (r
->in
.scmanager
== NULL
) {
5473 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
5475 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->in
.scmanager
));
5476 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.info_level
));
5477 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.type
));
5478 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.state
));
5479 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.buf_size
));
5480 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.resume_handle
));
5481 if (r
->in
.resume_handle
) {
5482 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, *r
->in
.resume_handle
));
5485 if (flags
& NDR_OUT
) {
5486 NDR_CHECK(ndr_push_array_uint8(ndr
, NDR_SCALARS
, r
->out
.services
, r
->in
.buf_size
));
5487 if (r
->out
.bytes_needed
== NULL
) {
5488 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
5490 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, *r
->out
.bytes_needed
));
5491 if (r
->out
.service_returned
== NULL
) {
5492 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
5494 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, *r
->out
.service_returned
));
5495 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->out
.resume_handle
));
5496 if (r
->out
.resume_handle
) {
5497 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, *r
->out
.resume_handle
));
5499 if (r
->out
.group_name
== NULL
) {
5500 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
5502 NDR_CHECK(ndr_push_unique_ptr(ndr
, *r
->out
.group_name
));
5503 if (*r
->out
.group_name
) {
5504 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(*r
->out
.group_name
, CH_UTF16
)));
5505 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, 0));
5506 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(*r
->out
.group_name
, CH_UTF16
)));
5507 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
));
5509 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
5511 return NDR_ERR_SUCCESS
;
5514 static enum ndr_err_code
ndr_pull_EnumServicesStatusExA(struct ndr_pull
*ndr
, int flags
, struct EnumServicesStatusExA
*r
)
5516 uint32_t _ptr_resume_handle
;
5517 uint32_t _ptr_group_name
;
5518 TALLOC_CTX
*_mem_save_scmanager_0
;
5519 TALLOC_CTX
*_mem_save_bytes_needed_0
;
5520 TALLOC_CTX
*_mem_save_service_returned_0
;
5521 TALLOC_CTX
*_mem_save_resume_handle_0
;
5522 TALLOC_CTX
*_mem_save_group_name_0
;
5523 TALLOC_CTX
*_mem_save_group_name_1
;
5524 if (flags
& NDR_IN
) {
5525 ZERO_STRUCT(r
->out
);
5527 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
5528 NDR_PULL_ALLOC(ndr
, r
->in
.scmanager
);
5530 _mem_save_scmanager_0
= NDR_PULL_GET_MEM_CTX(ndr
);
5531 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.scmanager
, LIBNDR_FLAG_REF_ALLOC
);
5532 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->in
.scmanager
));
5533 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_scmanager_0
, LIBNDR_FLAG_REF_ALLOC
);
5534 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.info_level
));
5535 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.type
));
5536 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.state
));
5537 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.buf_size
));
5538 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_resume_handle
));
5539 if (_ptr_resume_handle
) {
5540 NDR_PULL_ALLOC(ndr
, r
->in
.resume_handle
);
5542 r
->in
.resume_handle
= NULL
;
5544 if (r
->in
.resume_handle
) {
5545 _mem_save_resume_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
5546 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.resume_handle
, 0);
5547 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, r
->in
.resume_handle
));
5548 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_resume_handle_0
, 0);
5550 NDR_PULL_ALLOC(ndr
, r
->out
.bytes_needed
);
5551 ZERO_STRUCTP(r
->out
.bytes_needed
);
5552 NDR_PULL_ALLOC(ndr
, r
->out
.service_returned
);
5553 ZERO_STRUCTP(r
->out
.service_returned
);
5554 NDR_PULL_ALLOC(ndr
, r
->out
.group_name
);
5555 ZERO_STRUCTP(r
->out
.group_name
);
5557 if (flags
& NDR_OUT
) {
5558 NDR_PULL_ALLOC_N(ndr
, r
->out
.services
, r
->in
.buf_size
);
5559 NDR_CHECK(ndr_pull_array_uint8(ndr
, NDR_SCALARS
, r
->out
.services
, r
->in
.buf_size
));
5560 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
5561 NDR_PULL_ALLOC(ndr
, r
->out
.bytes_needed
);
5563 _mem_save_bytes_needed_0
= NDR_PULL_GET_MEM_CTX(ndr
);
5564 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.bytes_needed
, LIBNDR_FLAG_REF_ALLOC
);
5565 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, r
->out
.bytes_needed
));
5566 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_bytes_needed_0
, LIBNDR_FLAG_REF_ALLOC
);
5567 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
5568 NDR_PULL_ALLOC(ndr
, r
->out
.service_returned
);
5570 _mem_save_service_returned_0
= NDR_PULL_GET_MEM_CTX(ndr
);
5571 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.service_returned
, LIBNDR_FLAG_REF_ALLOC
);
5572 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, r
->out
.service_returned
));
5573 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_service_returned_0
, LIBNDR_FLAG_REF_ALLOC
);
5574 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_resume_handle
));
5575 if (_ptr_resume_handle
) {
5576 NDR_PULL_ALLOC(ndr
, r
->out
.resume_handle
);
5578 r
->out
.resume_handle
= NULL
;
5580 if (r
->out
.resume_handle
) {
5581 _mem_save_resume_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
5582 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.resume_handle
, 0);
5583 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, r
->out
.resume_handle
));
5584 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_resume_handle_0
, 0);
5586 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
5587 NDR_PULL_ALLOC(ndr
, r
->out
.group_name
);
5589 _mem_save_group_name_0
= NDR_PULL_GET_MEM_CTX(ndr
);
5590 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.group_name
, LIBNDR_FLAG_REF_ALLOC
);
5591 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_group_name
));
5592 if (_ptr_group_name
) {
5593 NDR_PULL_ALLOC(ndr
, *r
->out
.group_name
);
5595 *r
->out
.group_name
= NULL
;
5597 if (*r
->out
.group_name
) {
5598 _mem_save_group_name_1
= NDR_PULL_GET_MEM_CTX(ndr
);
5599 NDR_PULL_SET_MEM_CTX(ndr
, *r
->out
.group_name
, 0);
5600 NDR_CHECK(ndr_pull_array_size(ndr
, r
->out
.group_name
));
5601 NDR_CHECK(ndr_pull_array_length(ndr
, r
->out
.group_name
));
5602 if (ndr_get_array_length(ndr
, r
->out
.group_name
) > ndr_get_array_size(ndr
, r
->out
.group_name
)) {
5603 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
));
5605 NDR_CHECK(ndr_check_string_terminator(ndr
, ndr_get_array_length(ndr
, r
->out
.group_name
), sizeof(uint16_t)));
5606 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
));
5607 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_group_name_1
, 0);
5609 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_group_name_0
, LIBNDR_FLAG_REF_ALLOC
);
5610 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
5612 return NDR_ERR_SUCCESS
;
5615 _PUBLIC_
void ndr_print_EnumServicesStatusExA(struct ndr_print
*ndr
, const char *name
, int flags
, const struct EnumServicesStatusExA
*r
)
5617 ndr_print_struct(ndr
, name
, "EnumServicesStatusExA");
5619 if (flags
& NDR_SET_VALUES
) {
5620 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
5622 if (flags
& NDR_IN
) {
5623 ndr_print_struct(ndr
, "in", "EnumServicesStatusExA");
5625 ndr_print_ptr(ndr
, "scmanager", r
->in
.scmanager
);
5627 ndr_print_policy_handle(ndr
, "scmanager", r
->in
.scmanager
);
5629 ndr_print_uint32(ndr
, "info_level", r
->in
.info_level
);
5630 ndr_print_uint32(ndr
, "type", r
->in
.type
);
5631 ndr_print_uint32(ndr
, "state", r
->in
.state
);
5632 ndr_print_uint32(ndr
, "buf_size", r
->in
.buf_size
);
5633 ndr_print_ptr(ndr
, "resume_handle", r
->in
.resume_handle
);
5635 if (r
->in
.resume_handle
) {
5636 ndr_print_uint32(ndr
, "resume_handle", *r
->in
.resume_handle
);
5641 if (flags
& NDR_OUT
) {
5642 ndr_print_struct(ndr
, "out", "EnumServicesStatusExA");
5644 ndr_print_array_uint8(ndr
, "services", r
->out
.services
, r
->in
.buf_size
);
5645 ndr_print_ptr(ndr
, "bytes_needed", r
->out
.bytes_needed
);
5647 ndr_print_uint32(ndr
, "bytes_needed", *r
->out
.bytes_needed
);
5649 ndr_print_ptr(ndr
, "service_returned", r
->out
.service_returned
);
5651 ndr_print_uint32(ndr
, "service_returned", *r
->out
.service_returned
);
5653 ndr_print_ptr(ndr
, "resume_handle", r
->out
.resume_handle
);
5655 if (r
->out
.resume_handle
) {
5656 ndr_print_uint32(ndr
, "resume_handle", *r
->out
.resume_handle
);
5659 ndr_print_ptr(ndr
, "group_name", r
->out
.group_name
);
5661 ndr_print_ptr(ndr
, "group_name", *r
->out
.group_name
);
5663 if (*r
->out
.group_name
) {
5664 ndr_print_string(ndr
, "group_name", *r
->out
.group_name
);
5668 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
5674 static enum ndr_err_code
ndr_push_EnumServicesStatusExW(struct ndr_push
*ndr
, int flags
, const struct EnumServicesStatusExW
*r
)
5676 if (flags
& NDR_IN
) {
5677 if (r
->in
.scmanager
== NULL
) {
5678 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
5680 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->in
.scmanager
));
5681 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.info_level
));
5682 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.type
));
5683 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.state
));
5684 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.buf_size
));
5685 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.resume_handle
));
5686 if (r
->in
.resume_handle
) {
5687 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, *r
->in
.resume_handle
));
5690 if (flags
& NDR_OUT
) {
5691 NDR_CHECK(ndr_push_array_uint8(ndr
, NDR_SCALARS
, r
->out
.services
, r
->in
.buf_size
));
5692 if (r
->out
.bytes_needed
== NULL
) {
5693 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
5695 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, *r
->out
.bytes_needed
));
5696 if (r
->out
.service_returned
== NULL
) {
5697 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
5699 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, *r
->out
.service_returned
));
5700 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->out
.resume_handle
));
5701 if (r
->out
.resume_handle
) {
5702 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, *r
->out
.resume_handle
));
5704 if (r
->out
.group_name
== NULL
) {
5705 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
5707 NDR_CHECK(ndr_push_unique_ptr(ndr
, *r
->out
.group_name
));
5708 if (*r
->out
.group_name
) {
5709 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(*r
->out
.group_name
, CH_UTF16
)));
5710 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, 0));
5711 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(*r
->out
.group_name
, CH_UTF16
)));
5712 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
));
5714 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
5716 return NDR_ERR_SUCCESS
;
5719 static enum ndr_err_code
ndr_pull_EnumServicesStatusExW(struct ndr_pull
*ndr
, int flags
, struct EnumServicesStatusExW
*r
)
5721 uint32_t _ptr_resume_handle
;
5722 uint32_t _ptr_group_name
;
5723 TALLOC_CTX
*_mem_save_scmanager_0
;
5724 TALLOC_CTX
*_mem_save_bytes_needed_0
;
5725 TALLOC_CTX
*_mem_save_service_returned_0
;
5726 TALLOC_CTX
*_mem_save_resume_handle_0
;
5727 TALLOC_CTX
*_mem_save_group_name_0
;
5728 TALLOC_CTX
*_mem_save_group_name_1
;
5729 if (flags
& NDR_IN
) {
5730 ZERO_STRUCT(r
->out
);
5732 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
5733 NDR_PULL_ALLOC(ndr
, r
->in
.scmanager
);
5735 _mem_save_scmanager_0
= NDR_PULL_GET_MEM_CTX(ndr
);
5736 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.scmanager
, LIBNDR_FLAG_REF_ALLOC
);
5737 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->in
.scmanager
));
5738 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_scmanager_0
, LIBNDR_FLAG_REF_ALLOC
);
5739 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.info_level
));
5740 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.type
));
5741 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.state
));
5742 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.buf_size
));
5743 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_resume_handle
));
5744 if (_ptr_resume_handle
) {
5745 NDR_PULL_ALLOC(ndr
, r
->in
.resume_handle
);
5747 r
->in
.resume_handle
= NULL
;
5749 if (r
->in
.resume_handle
) {
5750 _mem_save_resume_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
5751 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.resume_handle
, 0);
5752 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, r
->in
.resume_handle
));
5753 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_resume_handle_0
, 0);
5755 NDR_PULL_ALLOC(ndr
, r
->out
.bytes_needed
);
5756 ZERO_STRUCTP(r
->out
.bytes_needed
);
5757 NDR_PULL_ALLOC(ndr
, r
->out
.service_returned
);
5758 ZERO_STRUCTP(r
->out
.service_returned
);
5759 NDR_PULL_ALLOC(ndr
, r
->out
.group_name
);
5760 ZERO_STRUCTP(r
->out
.group_name
);
5762 if (flags
& NDR_OUT
) {
5763 NDR_PULL_ALLOC_N(ndr
, r
->out
.services
, r
->in
.buf_size
);
5764 NDR_CHECK(ndr_pull_array_uint8(ndr
, NDR_SCALARS
, r
->out
.services
, r
->in
.buf_size
));
5765 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
5766 NDR_PULL_ALLOC(ndr
, r
->out
.bytes_needed
);
5768 _mem_save_bytes_needed_0
= NDR_PULL_GET_MEM_CTX(ndr
);
5769 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.bytes_needed
, LIBNDR_FLAG_REF_ALLOC
);
5770 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, r
->out
.bytes_needed
));
5771 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_bytes_needed_0
, LIBNDR_FLAG_REF_ALLOC
);
5772 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
5773 NDR_PULL_ALLOC(ndr
, r
->out
.service_returned
);
5775 _mem_save_service_returned_0
= NDR_PULL_GET_MEM_CTX(ndr
);
5776 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.service_returned
, LIBNDR_FLAG_REF_ALLOC
);
5777 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, r
->out
.service_returned
));
5778 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_service_returned_0
, LIBNDR_FLAG_REF_ALLOC
);
5779 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_resume_handle
));
5780 if (_ptr_resume_handle
) {
5781 NDR_PULL_ALLOC(ndr
, r
->out
.resume_handle
);
5783 r
->out
.resume_handle
= NULL
;
5785 if (r
->out
.resume_handle
) {
5786 _mem_save_resume_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
5787 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.resume_handle
, 0);
5788 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, r
->out
.resume_handle
));
5789 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_resume_handle_0
, 0);
5791 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
5792 NDR_PULL_ALLOC(ndr
, r
->out
.group_name
);
5794 _mem_save_group_name_0
= NDR_PULL_GET_MEM_CTX(ndr
);
5795 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.group_name
, LIBNDR_FLAG_REF_ALLOC
);
5796 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_group_name
));
5797 if (_ptr_group_name
) {
5798 NDR_PULL_ALLOC(ndr
, *r
->out
.group_name
);
5800 *r
->out
.group_name
= NULL
;
5802 if (*r
->out
.group_name
) {
5803 _mem_save_group_name_1
= NDR_PULL_GET_MEM_CTX(ndr
);
5804 NDR_PULL_SET_MEM_CTX(ndr
, *r
->out
.group_name
, 0);
5805 NDR_CHECK(ndr_pull_array_size(ndr
, r
->out
.group_name
));
5806 NDR_CHECK(ndr_pull_array_length(ndr
, r
->out
.group_name
));
5807 if (ndr_get_array_length(ndr
, r
->out
.group_name
) > ndr_get_array_size(ndr
, r
->out
.group_name
)) {
5808 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
));
5810 NDR_CHECK(ndr_check_string_terminator(ndr
, ndr_get_array_length(ndr
, r
->out
.group_name
), sizeof(uint16_t)));
5811 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
));
5812 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_group_name_1
, 0);
5814 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_group_name_0
, LIBNDR_FLAG_REF_ALLOC
);
5815 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
5817 return NDR_ERR_SUCCESS
;
5820 _PUBLIC_
void ndr_print_EnumServicesStatusExW(struct ndr_print
*ndr
, const char *name
, int flags
, const struct EnumServicesStatusExW
*r
)
5822 ndr_print_struct(ndr
, name
, "EnumServicesStatusExW");
5824 if (flags
& NDR_SET_VALUES
) {
5825 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
5827 if (flags
& NDR_IN
) {
5828 ndr_print_struct(ndr
, "in", "EnumServicesStatusExW");
5830 ndr_print_ptr(ndr
, "scmanager", r
->in
.scmanager
);
5832 ndr_print_policy_handle(ndr
, "scmanager", r
->in
.scmanager
);
5834 ndr_print_uint32(ndr
, "info_level", r
->in
.info_level
);
5835 ndr_print_uint32(ndr
, "type", r
->in
.type
);
5836 ndr_print_uint32(ndr
, "state", r
->in
.state
);
5837 ndr_print_uint32(ndr
, "buf_size", r
->in
.buf_size
);
5838 ndr_print_ptr(ndr
, "resume_handle", r
->in
.resume_handle
);
5840 if (r
->in
.resume_handle
) {
5841 ndr_print_uint32(ndr
, "resume_handle", *r
->in
.resume_handle
);
5846 if (flags
& NDR_OUT
) {
5847 ndr_print_struct(ndr
, "out", "EnumServicesStatusExW");
5849 ndr_print_array_uint8(ndr
, "services", r
->out
.services
, r
->in
.buf_size
);
5850 ndr_print_ptr(ndr
, "bytes_needed", r
->out
.bytes_needed
);
5852 ndr_print_uint32(ndr
, "bytes_needed", *r
->out
.bytes_needed
);
5854 ndr_print_ptr(ndr
, "service_returned", r
->out
.service_returned
);
5856 ndr_print_uint32(ndr
, "service_returned", *r
->out
.service_returned
);
5858 ndr_print_ptr(ndr
, "resume_handle", r
->out
.resume_handle
);
5860 if (r
->out
.resume_handle
) {
5861 ndr_print_uint32(ndr
, "resume_handle", *r
->out
.resume_handle
);
5864 ndr_print_ptr(ndr
, "group_name", r
->out
.group_name
);
5866 ndr_print_ptr(ndr
, "group_name", *r
->out
.group_name
);
5868 if (*r
->out
.group_name
) {
5869 ndr_print_string(ndr
, "group_name", *r
->out
.group_name
);
5873 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
5879 static enum ndr_err_code
ndr_push_svcctl_SCSendTSMessage(struct ndr_push
*ndr
, int flags
, const struct svcctl_SCSendTSMessage
*r
)
5881 if (flags
& NDR_IN
) {
5883 if (flags
& NDR_OUT
) {
5884 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
5886 return NDR_ERR_SUCCESS
;
5889 static enum ndr_err_code
ndr_pull_svcctl_SCSendTSMessage(struct ndr_pull
*ndr
, int flags
, struct svcctl_SCSendTSMessage
*r
)
5891 if (flags
& NDR_IN
) {
5893 if (flags
& NDR_OUT
) {
5894 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
5896 return NDR_ERR_SUCCESS
;
5899 _PUBLIC_
void ndr_print_svcctl_SCSendTSMessage(struct ndr_print
*ndr
, const char *name
, int flags
, const struct svcctl_SCSendTSMessage
*r
)
5901 ndr_print_struct(ndr
, name
, "svcctl_SCSendTSMessage");
5903 if (flags
& NDR_SET_VALUES
) {
5904 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
5906 if (flags
& NDR_IN
) {
5907 ndr_print_struct(ndr
, "in", "svcctl_SCSendTSMessage");
5911 if (flags
& NDR_OUT
) {
5912 ndr_print_struct(ndr
, "out", "svcctl_SCSendTSMessage");
5914 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
5920 static const struct ndr_interface_call svcctl_calls
[] = {
5922 "svcctl_CloseServiceHandle",
5923 sizeof(struct svcctl_CloseServiceHandle
),
5924 (ndr_push_flags_fn_t
) ndr_push_svcctl_CloseServiceHandle
,
5925 (ndr_pull_flags_fn_t
) ndr_pull_svcctl_CloseServiceHandle
,
5926 (ndr_print_function_t
) ndr_print_svcctl_CloseServiceHandle
,
5930 "svcctl_ControlService",
5931 sizeof(struct svcctl_ControlService
),
5932 (ndr_push_flags_fn_t
) ndr_push_svcctl_ControlService
,
5933 (ndr_pull_flags_fn_t
) ndr_pull_svcctl_ControlService
,
5934 (ndr_print_function_t
) ndr_print_svcctl_ControlService
,
5938 "svcctl_DeleteService",
5939 sizeof(struct svcctl_DeleteService
),
5940 (ndr_push_flags_fn_t
) ndr_push_svcctl_DeleteService
,
5941 (ndr_pull_flags_fn_t
) ndr_pull_svcctl_DeleteService
,
5942 (ndr_print_function_t
) ndr_print_svcctl_DeleteService
,
5946 "svcctl_LockServiceDatabase",
5947 sizeof(struct svcctl_LockServiceDatabase
),
5948 (ndr_push_flags_fn_t
) ndr_push_svcctl_LockServiceDatabase
,
5949 (ndr_pull_flags_fn_t
) ndr_pull_svcctl_LockServiceDatabase
,
5950 (ndr_print_function_t
) ndr_print_svcctl_LockServiceDatabase
,
5954 "svcctl_QueryServiceObjectSecurity",
5955 sizeof(struct svcctl_QueryServiceObjectSecurity
),
5956 (ndr_push_flags_fn_t
) ndr_push_svcctl_QueryServiceObjectSecurity
,
5957 (ndr_pull_flags_fn_t
) ndr_pull_svcctl_QueryServiceObjectSecurity
,
5958 (ndr_print_function_t
) ndr_print_svcctl_QueryServiceObjectSecurity
,
5962 "svcctl_SetServiceObjectSecurity",
5963 sizeof(struct svcctl_SetServiceObjectSecurity
),
5964 (ndr_push_flags_fn_t
) ndr_push_svcctl_SetServiceObjectSecurity
,
5965 (ndr_pull_flags_fn_t
) ndr_pull_svcctl_SetServiceObjectSecurity
,
5966 (ndr_print_function_t
) ndr_print_svcctl_SetServiceObjectSecurity
,
5970 "svcctl_QueryServiceStatus",
5971 sizeof(struct svcctl_QueryServiceStatus
),
5972 (ndr_push_flags_fn_t
) ndr_push_svcctl_QueryServiceStatus
,
5973 (ndr_pull_flags_fn_t
) ndr_pull_svcctl_QueryServiceStatus
,
5974 (ndr_print_function_t
) ndr_print_svcctl_QueryServiceStatus
,
5978 "svcctl_SetServiceStatus",
5979 sizeof(struct svcctl_SetServiceStatus
),
5980 (ndr_push_flags_fn_t
) ndr_push_svcctl_SetServiceStatus
,
5981 (ndr_pull_flags_fn_t
) ndr_pull_svcctl_SetServiceStatus
,
5982 (ndr_print_function_t
) ndr_print_svcctl_SetServiceStatus
,
5986 "svcctl_UnlockServiceDatabase",
5987 sizeof(struct svcctl_UnlockServiceDatabase
),
5988 (ndr_push_flags_fn_t
) ndr_push_svcctl_UnlockServiceDatabase
,
5989 (ndr_pull_flags_fn_t
) ndr_pull_svcctl_UnlockServiceDatabase
,
5990 (ndr_print_function_t
) ndr_print_svcctl_UnlockServiceDatabase
,
5994 "svcctl_NotifyBootConfigStatus",
5995 sizeof(struct svcctl_NotifyBootConfigStatus
),
5996 (ndr_push_flags_fn_t
) ndr_push_svcctl_NotifyBootConfigStatus
,
5997 (ndr_pull_flags_fn_t
) ndr_pull_svcctl_NotifyBootConfigStatus
,
5998 (ndr_print_function_t
) ndr_print_svcctl_NotifyBootConfigStatus
,
6002 "svcctl_SCSetServiceBitsW",
6003 sizeof(struct svcctl_SCSetServiceBitsW
),
6004 (ndr_push_flags_fn_t
) ndr_push_svcctl_SCSetServiceBitsW
,
6005 (ndr_pull_flags_fn_t
) ndr_pull_svcctl_SCSetServiceBitsW
,
6006 (ndr_print_function_t
) ndr_print_svcctl_SCSetServiceBitsW
,
6010 "svcctl_ChangeServiceConfigW",
6011 sizeof(struct svcctl_ChangeServiceConfigW
),
6012 (ndr_push_flags_fn_t
) ndr_push_svcctl_ChangeServiceConfigW
,
6013 (ndr_pull_flags_fn_t
) ndr_pull_svcctl_ChangeServiceConfigW
,
6014 (ndr_print_function_t
) ndr_print_svcctl_ChangeServiceConfigW
,
6018 "svcctl_CreateServiceW",
6019 sizeof(struct svcctl_CreateServiceW
),
6020 (ndr_push_flags_fn_t
) ndr_push_svcctl_CreateServiceW
,
6021 (ndr_pull_flags_fn_t
) ndr_pull_svcctl_CreateServiceW
,
6022 (ndr_print_function_t
) ndr_print_svcctl_CreateServiceW
,
6026 "svcctl_EnumDependentServicesW",
6027 sizeof(struct svcctl_EnumDependentServicesW
),
6028 (ndr_push_flags_fn_t
) ndr_push_svcctl_EnumDependentServicesW
,
6029 (ndr_pull_flags_fn_t
) ndr_pull_svcctl_EnumDependentServicesW
,
6030 (ndr_print_function_t
) ndr_print_svcctl_EnumDependentServicesW
,
6034 "svcctl_EnumServicesStatusW",
6035 sizeof(struct svcctl_EnumServicesStatusW
),
6036 (ndr_push_flags_fn_t
) ndr_push_svcctl_EnumServicesStatusW
,
6037 (ndr_pull_flags_fn_t
) ndr_pull_svcctl_EnumServicesStatusW
,
6038 (ndr_print_function_t
) ndr_print_svcctl_EnumServicesStatusW
,
6042 "svcctl_OpenSCManagerW",
6043 sizeof(struct svcctl_OpenSCManagerW
),
6044 (ndr_push_flags_fn_t
) ndr_push_svcctl_OpenSCManagerW
,
6045 (ndr_pull_flags_fn_t
) ndr_pull_svcctl_OpenSCManagerW
,
6046 (ndr_print_function_t
) ndr_print_svcctl_OpenSCManagerW
,
6050 "svcctl_OpenServiceW",
6051 sizeof(struct svcctl_OpenServiceW
),
6052 (ndr_push_flags_fn_t
) ndr_push_svcctl_OpenServiceW
,
6053 (ndr_pull_flags_fn_t
) ndr_pull_svcctl_OpenServiceW
,
6054 (ndr_print_function_t
) ndr_print_svcctl_OpenServiceW
,
6058 "svcctl_QueryServiceConfigW",
6059 sizeof(struct svcctl_QueryServiceConfigW
),
6060 (ndr_push_flags_fn_t
) ndr_push_svcctl_QueryServiceConfigW
,
6061 (ndr_pull_flags_fn_t
) ndr_pull_svcctl_QueryServiceConfigW
,
6062 (ndr_print_function_t
) ndr_print_svcctl_QueryServiceConfigW
,
6066 "svcctl_QueryServiceLockStatusW",
6067 sizeof(struct svcctl_QueryServiceLockStatusW
),
6068 (ndr_push_flags_fn_t
) ndr_push_svcctl_QueryServiceLockStatusW
,
6069 (ndr_pull_flags_fn_t
) ndr_pull_svcctl_QueryServiceLockStatusW
,
6070 (ndr_print_function_t
) ndr_print_svcctl_QueryServiceLockStatusW
,
6074 "svcctl_StartServiceW",
6075 sizeof(struct svcctl_StartServiceW
),
6076 (ndr_push_flags_fn_t
) ndr_push_svcctl_StartServiceW
,
6077 (ndr_pull_flags_fn_t
) ndr_pull_svcctl_StartServiceW
,
6078 (ndr_print_function_t
) ndr_print_svcctl_StartServiceW
,
6082 "svcctl_GetServiceDisplayNameW",
6083 sizeof(struct svcctl_GetServiceDisplayNameW
),
6084 (ndr_push_flags_fn_t
) ndr_push_svcctl_GetServiceDisplayNameW
,
6085 (ndr_pull_flags_fn_t
) ndr_pull_svcctl_GetServiceDisplayNameW
,
6086 (ndr_print_function_t
) ndr_print_svcctl_GetServiceDisplayNameW
,
6090 "svcctl_GetServiceKeyNameW",
6091 sizeof(struct svcctl_GetServiceKeyNameW
),
6092 (ndr_push_flags_fn_t
) ndr_push_svcctl_GetServiceKeyNameW
,
6093 (ndr_pull_flags_fn_t
) ndr_pull_svcctl_GetServiceKeyNameW
,
6094 (ndr_print_function_t
) ndr_print_svcctl_GetServiceKeyNameW
,
6098 "svcctl_SCSetServiceBitsA",
6099 sizeof(struct svcctl_SCSetServiceBitsA
),
6100 (ndr_push_flags_fn_t
) ndr_push_svcctl_SCSetServiceBitsA
,
6101 (ndr_pull_flags_fn_t
) ndr_pull_svcctl_SCSetServiceBitsA
,
6102 (ndr_print_function_t
) ndr_print_svcctl_SCSetServiceBitsA
,
6106 "svcctl_ChangeServiceConfigA",
6107 sizeof(struct svcctl_ChangeServiceConfigA
),
6108 (ndr_push_flags_fn_t
) ndr_push_svcctl_ChangeServiceConfigA
,
6109 (ndr_pull_flags_fn_t
) ndr_pull_svcctl_ChangeServiceConfigA
,
6110 (ndr_print_function_t
) ndr_print_svcctl_ChangeServiceConfigA
,
6114 "svcctl_CreateServiceA",
6115 sizeof(struct svcctl_CreateServiceA
),
6116 (ndr_push_flags_fn_t
) ndr_push_svcctl_CreateServiceA
,
6117 (ndr_pull_flags_fn_t
) ndr_pull_svcctl_CreateServiceA
,
6118 (ndr_print_function_t
) ndr_print_svcctl_CreateServiceA
,
6122 "svcctl_EnumDependentServicesA",
6123 sizeof(struct svcctl_EnumDependentServicesA
),
6124 (ndr_push_flags_fn_t
) ndr_push_svcctl_EnumDependentServicesA
,
6125 (ndr_pull_flags_fn_t
) ndr_pull_svcctl_EnumDependentServicesA
,
6126 (ndr_print_function_t
) ndr_print_svcctl_EnumDependentServicesA
,
6130 "svcctl_EnumServicesStatusA",
6131 sizeof(struct svcctl_EnumServicesStatusA
),
6132 (ndr_push_flags_fn_t
) ndr_push_svcctl_EnumServicesStatusA
,
6133 (ndr_pull_flags_fn_t
) ndr_pull_svcctl_EnumServicesStatusA
,
6134 (ndr_print_function_t
) ndr_print_svcctl_EnumServicesStatusA
,
6138 "svcctl_OpenSCManagerA",
6139 sizeof(struct svcctl_OpenSCManagerA
),
6140 (ndr_push_flags_fn_t
) ndr_push_svcctl_OpenSCManagerA
,
6141 (ndr_pull_flags_fn_t
) ndr_pull_svcctl_OpenSCManagerA
,
6142 (ndr_print_function_t
) ndr_print_svcctl_OpenSCManagerA
,
6146 "svcctl_OpenServiceA",
6147 sizeof(struct svcctl_OpenServiceA
),
6148 (ndr_push_flags_fn_t
) ndr_push_svcctl_OpenServiceA
,
6149 (ndr_pull_flags_fn_t
) ndr_pull_svcctl_OpenServiceA
,
6150 (ndr_print_function_t
) ndr_print_svcctl_OpenServiceA
,
6154 "svcctl_QueryServiceConfigA",
6155 sizeof(struct svcctl_QueryServiceConfigA
),
6156 (ndr_push_flags_fn_t
) ndr_push_svcctl_QueryServiceConfigA
,
6157 (ndr_pull_flags_fn_t
) ndr_pull_svcctl_QueryServiceConfigA
,
6158 (ndr_print_function_t
) ndr_print_svcctl_QueryServiceConfigA
,
6162 "svcctl_QueryServiceLockStatusA",
6163 sizeof(struct svcctl_QueryServiceLockStatusA
),
6164 (ndr_push_flags_fn_t
) ndr_push_svcctl_QueryServiceLockStatusA
,
6165 (ndr_pull_flags_fn_t
) ndr_pull_svcctl_QueryServiceLockStatusA
,
6166 (ndr_print_function_t
) ndr_print_svcctl_QueryServiceLockStatusA
,
6170 "svcctl_StartServiceA",
6171 sizeof(struct svcctl_StartServiceA
),
6172 (ndr_push_flags_fn_t
) ndr_push_svcctl_StartServiceA
,
6173 (ndr_pull_flags_fn_t
) ndr_pull_svcctl_StartServiceA
,
6174 (ndr_print_function_t
) ndr_print_svcctl_StartServiceA
,
6178 "svcctl_GetServiceDisplayNameA",
6179 sizeof(struct svcctl_GetServiceDisplayNameA
),
6180 (ndr_push_flags_fn_t
) ndr_push_svcctl_GetServiceDisplayNameA
,
6181 (ndr_pull_flags_fn_t
) ndr_pull_svcctl_GetServiceDisplayNameA
,
6182 (ndr_print_function_t
) ndr_print_svcctl_GetServiceDisplayNameA
,
6186 "svcctl_GetServiceKeyNameA",
6187 sizeof(struct svcctl_GetServiceKeyNameA
),
6188 (ndr_push_flags_fn_t
) ndr_push_svcctl_GetServiceKeyNameA
,
6189 (ndr_pull_flags_fn_t
) ndr_pull_svcctl_GetServiceKeyNameA
,
6190 (ndr_print_function_t
) ndr_print_svcctl_GetServiceKeyNameA
,
6194 "svcctl_GetCurrentGroupeStateW",
6195 sizeof(struct svcctl_GetCurrentGroupeStateW
),
6196 (ndr_push_flags_fn_t
) ndr_push_svcctl_GetCurrentGroupeStateW
,
6197 (ndr_pull_flags_fn_t
) ndr_pull_svcctl_GetCurrentGroupeStateW
,
6198 (ndr_print_function_t
) ndr_print_svcctl_GetCurrentGroupeStateW
,
6202 "svcctl_EnumServiceGroupW",
6203 sizeof(struct svcctl_EnumServiceGroupW
),
6204 (ndr_push_flags_fn_t
) ndr_push_svcctl_EnumServiceGroupW
,
6205 (ndr_pull_flags_fn_t
) ndr_pull_svcctl_EnumServiceGroupW
,
6206 (ndr_print_function_t
) ndr_print_svcctl_EnumServiceGroupW
,
6210 "svcctl_ChangeServiceConfig2A",
6211 sizeof(struct svcctl_ChangeServiceConfig2A
),
6212 (ndr_push_flags_fn_t
) ndr_push_svcctl_ChangeServiceConfig2A
,
6213 (ndr_pull_flags_fn_t
) ndr_pull_svcctl_ChangeServiceConfig2A
,
6214 (ndr_print_function_t
) ndr_print_svcctl_ChangeServiceConfig2A
,
6218 "svcctl_ChangeServiceConfig2W",
6219 sizeof(struct svcctl_ChangeServiceConfig2W
),
6220 (ndr_push_flags_fn_t
) ndr_push_svcctl_ChangeServiceConfig2W
,
6221 (ndr_pull_flags_fn_t
) ndr_pull_svcctl_ChangeServiceConfig2W
,
6222 (ndr_print_function_t
) ndr_print_svcctl_ChangeServiceConfig2W
,
6226 "svcctl_QueryServiceConfig2A",
6227 sizeof(struct svcctl_QueryServiceConfig2A
),
6228 (ndr_push_flags_fn_t
) ndr_push_svcctl_QueryServiceConfig2A
,
6229 (ndr_pull_flags_fn_t
) ndr_pull_svcctl_QueryServiceConfig2A
,
6230 (ndr_print_function_t
) ndr_print_svcctl_QueryServiceConfig2A
,
6234 "svcctl_QueryServiceConfig2W",
6235 sizeof(struct svcctl_QueryServiceConfig2W
),
6236 (ndr_push_flags_fn_t
) ndr_push_svcctl_QueryServiceConfig2W
,
6237 (ndr_pull_flags_fn_t
) ndr_pull_svcctl_QueryServiceConfig2W
,
6238 (ndr_print_function_t
) ndr_print_svcctl_QueryServiceConfig2W
,
6242 "svcctl_QueryServiceStatusEx",
6243 sizeof(struct svcctl_QueryServiceStatusEx
),
6244 (ndr_push_flags_fn_t
) ndr_push_svcctl_QueryServiceStatusEx
,
6245 (ndr_pull_flags_fn_t
) ndr_pull_svcctl_QueryServiceStatusEx
,
6246 (ndr_print_function_t
) ndr_print_svcctl_QueryServiceStatusEx
,
6250 "EnumServicesStatusExA",
6251 sizeof(struct EnumServicesStatusExA
),
6252 (ndr_push_flags_fn_t
) ndr_push_EnumServicesStatusExA
,
6253 (ndr_pull_flags_fn_t
) ndr_pull_EnumServicesStatusExA
,
6254 (ndr_print_function_t
) ndr_print_EnumServicesStatusExA
,
6258 "EnumServicesStatusExW",
6259 sizeof(struct EnumServicesStatusExW
),
6260 (ndr_push_flags_fn_t
) ndr_push_EnumServicesStatusExW
,
6261 (ndr_pull_flags_fn_t
) ndr_pull_EnumServicesStatusExW
,
6262 (ndr_print_function_t
) ndr_print_EnumServicesStatusExW
,
6266 "svcctl_SCSendTSMessage",
6267 sizeof(struct svcctl_SCSendTSMessage
),
6268 (ndr_push_flags_fn_t
) ndr_push_svcctl_SCSendTSMessage
,
6269 (ndr_pull_flags_fn_t
) ndr_pull_svcctl_SCSendTSMessage
,
6270 (ndr_print_function_t
) ndr_print_svcctl_SCSendTSMessage
,
6273 { NULL
, 0, NULL
, NULL
, NULL
, false }
6276 static const char * const svcctl_endpoint_strings
[] = {
6277 "ncacn_np:[\\pipe\\svcctl]",
6281 static const struct ndr_interface_string_array svcctl_endpoints
= {
6283 .names
= svcctl_endpoint_strings
6286 static const char * const svcctl_authservice_strings
[] = {
6290 static const struct ndr_interface_string_array svcctl_authservices
= {
6292 .names
= svcctl_authservice_strings
6296 const struct ndr_interface_table ndr_table_svcctl
= {
6299 {0x367abb81,0x9844,0x35f1,{0xad,0x32},{0x98,0xf0,0x38,0x00,0x10,0x03}},
6302 .helpstring
= NDR_SVCCTL_HELPSTRING
,
6304 .calls
= svcctl_calls
,
6305 .endpoints
= &svcctl_endpoints
,
6306 .authservices
= &svcctl_authservices