1 /* parser auto-generated by pidl */
4 #include "../librpc/gen_ndr/ndr_svcctl.h"
6 #include "librpc/gen_ndr/ndr_misc.h"
7 #include "librpc/gen_ndr/ndr_security.h"
8 static enum ndr_err_code
ndr_push_SERVICE_LOCK_STATUS(struct ndr_push
*ndr
, int ndr_flags
, const struct SERVICE_LOCK_STATUS
*r
)
10 if (ndr_flags
& NDR_SCALARS
) {
11 NDR_CHECK(ndr_push_align(ndr
, 4));
12 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->is_locked
));
13 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->lock_owner
));
14 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->lock_duration
));
16 if (ndr_flags
& NDR_BUFFERS
) {
18 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->lock_owner
, CH_UTF16
)));
19 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, 0));
20 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->lock_owner
, CH_UTF16
)));
21 NDR_CHECK(ndr_push_charset(ndr
, NDR_SCALARS
, r
->lock_owner
, ndr_charset_length(r
->lock_owner
, CH_UTF16
), sizeof(uint16_t), CH_UTF16
));
24 return NDR_ERR_SUCCESS
;
27 static enum ndr_err_code
ndr_pull_SERVICE_LOCK_STATUS(struct ndr_pull
*ndr
, int ndr_flags
, struct SERVICE_LOCK_STATUS
*r
)
29 uint32_t _ptr_lock_owner
;
30 TALLOC_CTX
*_mem_save_lock_owner_0
;
31 if (ndr_flags
& NDR_SCALARS
) {
32 NDR_CHECK(ndr_pull_align(ndr
, 4));
33 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->is_locked
));
34 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_lock_owner
));
35 if (_ptr_lock_owner
) {
36 NDR_PULL_ALLOC(ndr
, r
->lock_owner
);
40 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->lock_duration
));
42 if (ndr_flags
& NDR_BUFFERS
) {
44 _mem_save_lock_owner_0
= NDR_PULL_GET_MEM_CTX(ndr
);
45 NDR_PULL_SET_MEM_CTX(ndr
, r
->lock_owner
, 0);
46 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->lock_owner
));
47 NDR_CHECK(ndr_pull_array_length(ndr
, &r
->lock_owner
));
48 if (ndr_get_array_length(ndr
, &r
->lock_owner
) > ndr_get_array_size(ndr
, &r
->lock_owner
)) {
49 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
));
51 NDR_CHECK(ndr_check_string_terminator(ndr
, ndr_get_array_length(ndr
, &r
->lock_owner
), sizeof(uint16_t)));
52 NDR_CHECK(ndr_pull_charset(ndr
, NDR_SCALARS
, &r
->lock_owner
, ndr_get_array_length(ndr
, &r
->lock_owner
), sizeof(uint16_t), CH_UTF16
));
53 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_lock_owner_0
, 0);
56 return NDR_ERR_SUCCESS
;
59 _PUBLIC_
void ndr_print_SERVICE_LOCK_STATUS(struct ndr_print
*ndr
, const char *name
, const struct SERVICE_LOCK_STATUS
*r
)
61 ndr_print_struct(ndr
, name
, "SERVICE_LOCK_STATUS");
63 ndr_print_uint32(ndr
, "is_locked", r
->is_locked
);
64 ndr_print_ptr(ndr
, "lock_owner", r
->lock_owner
);
67 ndr_print_string(ndr
, "lock_owner", r
->lock_owner
);
70 ndr_print_uint32(ndr
, "lock_duration", r
->lock_duration
);
74 static enum ndr_err_code
ndr_push_SERVICE_STATUS(struct ndr_push
*ndr
, int ndr_flags
, const struct SERVICE_STATUS
*r
)
76 if (ndr_flags
& NDR_SCALARS
) {
77 NDR_CHECK(ndr_push_align(ndr
, 4));
78 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->type
));
79 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->state
));
80 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->controls_accepted
));
81 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->win32_exit_code
));
82 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->service_exit_code
));
83 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->check_point
));
84 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->wait_hint
));
86 if (ndr_flags
& NDR_BUFFERS
) {
88 return NDR_ERR_SUCCESS
;
91 static enum ndr_err_code
ndr_pull_SERVICE_STATUS(struct ndr_pull
*ndr
, int ndr_flags
, struct SERVICE_STATUS
*r
)
93 if (ndr_flags
& NDR_SCALARS
) {
94 NDR_CHECK(ndr_pull_align(ndr
, 4));
95 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->type
));
96 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->state
));
97 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->controls_accepted
));
98 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->win32_exit_code
));
99 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->service_exit_code
));
100 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->check_point
));
101 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->wait_hint
));
103 if (ndr_flags
& NDR_BUFFERS
) {
105 return NDR_ERR_SUCCESS
;
108 _PUBLIC_
void ndr_print_SERVICE_STATUS(struct ndr_print
*ndr
, const char *name
, const struct SERVICE_STATUS
*r
)
110 ndr_print_struct(ndr
, name
, "SERVICE_STATUS");
112 ndr_print_uint32(ndr
, "type", r
->type
);
113 ndr_print_uint32(ndr
, "state", r
->state
);
114 ndr_print_uint32(ndr
, "controls_accepted", r
->controls_accepted
);
115 ndr_print_WERROR(ndr
, "win32_exit_code", r
->win32_exit_code
);
116 ndr_print_uint32(ndr
, "service_exit_code", r
->service_exit_code
);
117 ndr_print_uint32(ndr
, "check_point", r
->check_point
);
118 ndr_print_uint32(ndr
, "wait_hint", r
->wait_hint
);
122 _PUBLIC_
enum ndr_err_code
ndr_push_SERVICE_STATUS_PROCESS(struct ndr_push
*ndr
, int ndr_flags
, const struct SERVICE_STATUS_PROCESS
*r
)
124 if (ndr_flags
& NDR_SCALARS
) {
125 NDR_CHECK(ndr_push_align(ndr
, 4));
126 NDR_CHECK(ndr_push_SERVICE_STATUS(ndr
, NDR_SCALARS
, &r
->status
));
127 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->process_id
));
128 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->service_flags
));
130 if (ndr_flags
& NDR_BUFFERS
) {
132 return NDR_ERR_SUCCESS
;
135 _PUBLIC_
enum ndr_err_code
ndr_pull_SERVICE_STATUS_PROCESS(struct ndr_pull
*ndr
, int ndr_flags
, struct SERVICE_STATUS_PROCESS
*r
)
137 if (ndr_flags
& NDR_SCALARS
) {
138 NDR_CHECK(ndr_pull_align(ndr
, 4));
139 NDR_CHECK(ndr_pull_SERVICE_STATUS(ndr
, NDR_SCALARS
, &r
->status
));
140 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->process_id
));
141 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->service_flags
));
143 if (ndr_flags
& NDR_BUFFERS
) {
145 return NDR_ERR_SUCCESS
;
148 _PUBLIC_
void ndr_print_SERVICE_STATUS_PROCESS(struct ndr_print
*ndr
, const char *name
, const struct SERVICE_STATUS_PROCESS
*r
)
150 ndr_print_struct(ndr
, name
, "SERVICE_STATUS_PROCESS");
152 ndr_print_SERVICE_STATUS(ndr
, "status", &r
->status
);
153 ndr_print_uint32(ndr
, "process_id", r
->process_id
);
154 ndr_print_uint32(ndr
, "service_flags", r
->service_flags
);
158 static enum ndr_err_code
ndr_push_ENUM_SERVICE_STATUS(struct ndr_push
*ndr
, int ndr_flags
, const struct ENUM_SERVICE_STATUS
*r
)
160 if (ndr_flags
& NDR_SCALARS
) {
161 NDR_CHECK(ndr_push_align(ndr
, 4));
163 uint32_t _flags_save_string
= ndr
->flags
;
164 ndr_set_flags(&ndr
->flags
, LIBNDR_FLAG_STR_ASCII
|LIBNDR_FLAG_STR_NULLTERM
);
165 NDR_CHECK(ndr_push_relative_ptr1(ndr
, r
->service_name
));
166 ndr
->flags
= _flags_save_string
;
169 uint32_t _flags_save_string
= ndr
->flags
;
170 ndr_set_flags(&ndr
->flags
, LIBNDR_FLAG_STR_ASCII
|LIBNDR_FLAG_STR_NULLTERM
);
171 NDR_CHECK(ndr_push_relative_ptr1(ndr
, r
->display_name
));
172 ndr
->flags
= _flags_save_string
;
174 NDR_CHECK(ndr_push_SERVICE_STATUS(ndr
, NDR_SCALARS
, &r
->status
));
176 if (ndr_flags
& NDR_BUFFERS
) {
178 uint32_t _flags_save_string
= ndr
->flags
;
179 ndr_set_flags(&ndr
->flags
, LIBNDR_FLAG_STR_ASCII
|LIBNDR_FLAG_STR_NULLTERM
);
180 if (r
->service_name
) {
181 NDR_CHECK(ndr_push_relative_ptr2(ndr
, r
->service_name
));
182 NDR_CHECK(ndr_push_string(ndr
, NDR_SCALARS
, r
->service_name
));
184 ndr
->flags
= _flags_save_string
;
187 uint32_t _flags_save_string
= ndr
->flags
;
188 ndr_set_flags(&ndr
->flags
, LIBNDR_FLAG_STR_ASCII
|LIBNDR_FLAG_STR_NULLTERM
);
189 if (r
->display_name
) {
190 NDR_CHECK(ndr_push_relative_ptr2(ndr
, r
->display_name
));
191 NDR_CHECK(ndr_push_string(ndr
, NDR_SCALARS
, r
->display_name
));
193 ndr
->flags
= _flags_save_string
;
196 return NDR_ERR_SUCCESS
;
199 static enum ndr_err_code
ndr_pull_ENUM_SERVICE_STATUS(struct ndr_pull
*ndr
, int ndr_flags
, struct ENUM_SERVICE_STATUS
*r
)
201 uint32_t _ptr_service_name
;
202 TALLOC_CTX
*_mem_save_service_name_0
;
203 uint32_t _ptr_display_name
;
204 TALLOC_CTX
*_mem_save_display_name_0
;
205 if (ndr_flags
& NDR_SCALARS
) {
206 NDR_CHECK(ndr_pull_align(ndr
, 4));
208 uint32_t _flags_save_string
= ndr
->flags
;
209 ndr_set_flags(&ndr
->flags
, LIBNDR_FLAG_STR_ASCII
|LIBNDR_FLAG_STR_NULLTERM
);
210 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_service_name
));
211 if (_ptr_service_name
) {
212 NDR_PULL_ALLOC(ndr
, r
->service_name
);
213 NDR_CHECK(ndr_pull_relative_ptr1(ndr
, r
->service_name
, _ptr_service_name
));
215 r
->service_name
= NULL
;
217 ndr
->flags
= _flags_save_string
;
220 uint32_t _flags_save_string
= ndr
->flags
;
221 ndr_set_flags(&ndr
->flags
, LIBNDR_FLAG_STR_ASCII
|LIBNDR_FLAG_STR_NULLTERM
);
222 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_display_name
));
223 if (_ptr_display_name
) {
224 NDR_PULL_ALLOC(ndr
, r
->display_name
);
225 NDR_CHECK(ndr_pull_relative_ptr1(ndr
, r
->display_name
, _ptr_display_name
));
227 r
->display_name
= NULL
;
229 ndr
->flags
= _flags_save_string
;
231 NDR_CHECK(ndr_pull_SERVICE_STATUS(ndr
, NDR_SCALARS
, &r
->status
));
233 if (ndr_flags
& NDR_BUFFERS
) {
235 uint32_t _flags_save_string
= ndr
->flags
;
236 ndr_set_flags(&ndr
->flags
, LIBNDR_FLAG_STR_ASCII
|LIBNDR_FLAG_STR_NULLTERM
);
237 if (r
->service_name
) {
238 uint32_t _relative_save_offset
;
239 _relative_save_offset
= ndr
->offset
;
240 NDR_CHECK(ndr_pull_relative_ptr2(ndr
, r
->service_name
));
241 _mem_save_service_name_0
= NDR_PULL_GET_MEM_CTX(ndr
);
242 NDR_PULL_SET_MEM_CTX(ndr
, r
->service_name
, 0);
243 NDR_CHECK(ndr_pull_string(ndr
, NDR_SCALARS
, &r
->service_name
));
244 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_service_name_0
, 0);
245 ndr
->offset
= _relative_save_offset
;
247 ndr
->flags
= _flags_save_string
;
250 uint32_t _flags_save_string
= ndr
->flags
;
251 ndr_set_flags(&ndr
->flags
, LIBNDR_FLAG_STR_ASCII
|LIBNDR_FLAG_STR_NULLTERM
);
252 if (r
->display_name
) {
253 uint32_t _relative_save_offset
;
254 _relative_save_offset
= ndr
->offset
;
255 NDR_CHECK(ndr_pull_relative_ptr2(ndr
, r
->display_name
));
256 _mem_save_display_name_0
= NDR_PULL_GET_MEM_CTX(ndr
);
257 NDR_PULL_SET_MEM_CTX(ndr
, r
->display_name
, 0);
258 NDR_CHECK(ndr_pull_string(ndr
, NDR_SCALARS
, &r
->display_name
));
259 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_display_name_0
, 0);
260 ndr
->offset
= _relative_save_offset
;
262 ndr
->flags
= _flags_save_string
;
265 return NDR_ERR_SUCCESS
;
268 _PUBLIC_
void ndr_print_ENUM_SERVICE_STATUS(struct ndr_print
*ndr
, const char *name
, const struct ENUM_SERVICE_STATUS
*r
)
270 ndr_print_struct(ndr
, name
, "ENUM_SERVICE_STATUS");
272 ndr_print_ptr(ndr
, "service_name", r
->service_name
);
274 if (r
->service_name
) {
275 ndr_print_string(ndr
, "service_name", r
->service_name
);
278 ndr_print_ptr(ndr
, "display_name", r
->display_name
);
280 if (r
->display_name
) {
281 ndr_print_string(ndr
, "display_name", r
->display_name
);
284 ndr_print_SERVICE_STATUS(ndr
, "status", &r
->status
);
288 _PUBLIC_
enum ndr_err_code
ndr_push_svcctl_ServerType(struct ndr_push
*ndr
, int ndr_flags
, uint32_t r
)
290 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
));
291 return NDR_ERR_SUCCESS
;
294 _PUBLIC_
enum ndr_err_code
ndr_pull_svcctl_ServerType(struct ndr_pull
*ndr
, int ndr_flags
, uint32_t *r
)
297 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &v
));
299 return NDR_ERR_SUCCESS
;
302 _PUBLIC_
void ndr_print_svcctl_ServerType(struct ndr_print
*ndr
, const char *name
, uint32_t r
)
304 ndr_print_uint32(ndr
, name
, r
);
306 ndr_print_bitmap_flag(ndr
, sizeof(uint32_t), "SV_TYPE_WORKSTATION", SV_TYPE_WORKSTATION
, r
);
307 ndr_print_bitmap_flag(ndr
, sizeof(uint32_t), "SV_TYPE_SERVER", SV_TYPE_SERVER
, r
);
308 ndr_print_bitmap_flag(ndr
, sizeof(uint32_t), "SV_TYPE_SQLSERVER", SV_TYPE_SQLSERVER
, r
);
309 ndr_print_bitmap_flag(ndr
, sizeof(uint32_t), "SV_TYPE_DOMAIN_CTRL", SV_TYPE_DOMAIN_CTRL
, r
);
310 ndr_print_bitmap_flag(ndr
, sizeof(uint32_t), "SV_TYPE_DOMAIN_BAKCTRL", SV_TYPE_DOMAIN_BAKCTRL
, r
);
311 ndr_print_bitmap_flag(ndr
, sizeof(uint32_t), "SV_TYPE_TIME_SOURCE", SV_TYPE_TIME_SOURCE
, r
);
312 ndr_print_bitmap_flag(ndr
, sizeof(uint32_t), "SV_TYPE_AFP", SV_TYPE_AFP
, r
);
313 ndr_print_bitmap_flag(ndr
, sizeof(uint32_t), "SV_TYPE_NOVELL", SV_TYPE_NOVELL
, r
);
314 ndr_print_bitmap_flag(ndr
, sizeof(uint32_t), "SV_TYPE_DOMAIN_MEMBER", SV_TYPE_DOMAIN_MEMBER
, r
);
315 ndr_print_bitmap_flag(ndr
, sizeof(uint32_t), "SV_TYPE_PRINTQ_SERVER", SV_TYPE_PRINTQ_SERVER
, r
);
316 ndr_print_bitmap_flag(ndr
, sizeof(uint32_t), "SV_TYPE_DIALIN_SERVER", SV_TYPE_DIALIN_SERVER
, r
);
317 ndr_print_bitmap_flag(ndr
, sizeof(uint32_t), "SV_TYPE_SERVER_UNIX", SV_TYPE_SERVER_UNIX
, r
);
318 ndr_print_bitmap_flag(ndr
, sizeof(uint32_t), "SV_TYPE_NT", SV_TYPE_NT
, r
);
319 ndr_print_bitmap_flag(ndr
, sizeof(uint32_t), "SV_TYPE_WFW", SV_TYPE_WFW
, r
);
320 ndr_print_bitmap_flag(ndr
, sizeof(uint32_t), "SV_TYPE_SERVER_MFPN", SV_TYPE_SERVER_MFPN
, r
);
321 ndr_print_bitmap_flag(ndr
, sizeof(uint32_t), "SV_TYPE_SERVER_NT", SV_TYPE_SERVER_NT
, r
);
322 ndr_print_bitmap_flag(ndr
, sizeof(uint32_t), "SV_TYPE_POTENTIAL_BROWSER", SV_TYPE_POTENTIAL_BROWSER
, r
);
323 ndr_print_bitmap_flag(ndr
, sizeof(uint32_t), "SV_TYPE_BACKUP_BROWSER", SV_TYPE_BACKUP_BROWSER
, r
);
324 ndr_print_bitmap_flag(ndr
, sizeof(uint32_t), "SV_TYPE_MASTER_BROWSER", SV_TYPE_MASTER_BROWSER
, r
);
325 ndr_print_bitmap_flag(ndr
, sizeof(uint32_t), "SV_TYPE_DOMAIN_MASTER", SV_TYPE_DOMAIN_MASTER
, r
);
326 ndr_print_bitmap_flag(ndr
, sizeof(uint32_t), "SV_TYPE_SERVER_OSF", SV_TYPE_SERVER_OSF
, r
);
327 ndr_print_bitmap_flag(ndr
, sizeof(uint32_t), "SV_TYPE_SERVER_VMS", SV_TYPE_SERVER_VMS
, r
);
328 ndr_print_bitmap_flag(ndr
, sizeof(uint32_t), "SV_TYPE_WIN95_PLUS", SV_TYPE_WIN95_PLUS
, r
);
329 ndr_print_bitmap_flag(ndr
, sizeof(uint32_t), "SV_TYPE_DFS_SERVER", SV_TYPE_DFS_SERVER
, r
);
330 ndr_print_bitmap_flag(ndr
, sizeof(uint32_t), "SV_TYPE_ALTERNATE_XPORT", SV_TYPE_ALTERNATE_XPORT
, r
);
331 ndr_print_bitmap_flag(ndr
, sizeof(uint32_t), "SV_TYPE_LOCAL_LIST_ONLY", SV_TYPE_LOCAL_LIST_ONLY
, r
);
332 ndr_print_bitmap_flag(ndr
, sizeof(uint32_t), "SV_TYPE_DOMAIN_ENUM", SV_TYPE_DOMAIN_ENUM
, r
);
336 static enum ndr_err_code
ndr_push_SERVICE_CONTROL(struct ndr_push
*ndr
, int ndr_flags
, enum SERVICE_CONTROL r
)
338 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
));
339 return NDR_ERR_SUCCESS
;
342 static enum ndr_err_code
ndr_pull_SERVICE_CONTROL(struct ndr_pull
*ndr
, int ndr_flags
, enum SERVICE_CONTROL
*r
)
345 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &v
));
347 return NDR_ERR_SUCCESS
;
350 _PUBLIC_
void ndr_print_SERVICE_CONTROL(struct ndr_print
*ndr
, const char *name
, enum SERVICE_CONTROL r
)
352 const char *val
= NULL
;
355 case SVCCTL_CONTROL_STOP
: val
= "SVCCTL_CONTROL_STOP"; break;
356 case SVCCTL_CONTROL_PAUSE
: val
= "SVCCTL_CONTROL_PAUSE"; break;
357 case SVCCTL_CONTROL_CONTINUE
: val
= "SVCCTL_CONTROL_CONTINUE"; break;
358 case SVCCTL_CONTROL_INTERROGATE
: val
= "SVCCTL_CONTROL_INTERROGATE"; break;
359 case SVCCTL_CONTROL_SHUTDOWN
: val
= "SVCCTL_CONTROL_SHUTDOWN"; break;
361 ndr_print_enum(ndr
, name
, "ENUM", val
, r
);
364 static enum ndr_err_code
ndr_push_svcctl_ErrorControl(struct ndr_push
*ndr
, int ndr_flags
, enum svcctl_ErrorControl r
)
366 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
));
367 return NDR_ERR_SUCCESS
;
370 static enum ndr_err_code
ndr_pull_svcctl_ErrorControl(struct ndr_pull
*ndr
, int ndr_flags
, enum svcctl_ErrorControl
*r
)
373 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &v
));
375 return NDR_ERR_SUCCESS
;
378 _PUBLIC_
void ndr_print_svcctl_ErrorControl(struct ndr_print
*ndr
, const char *name
, enum svcctl_ErrorControl r
)
380 const char *val
= NULL
;
383 case SVCCTL_SVC_ERROR_IGNORE
: val
= "SVCCTL_SVC_ERROR_IGNORE"; break;
384 case SVCCTL_SVC_ERROR_NORMAL
: val
= "SVCCTL_SVC_ERROR_NORMAL"; break;
385 case SVCCTL_SVC_ERROR_CRITICAL
: val
= "SVCCTL_SVC_ERROR_CRITICAL"; break;
386 case SVCCTL_SVC_ERROR_SEVERE
: val
= "SVCCTL_SVC_ERROR_SEVERE"; break;
388 ndr_print_enum(ndr
, name
, "ENUM", val
, r
);
391 static enum ndr_err_code
ndr_push_svcctl_StartType(struct ndr_push
*ndr
, int ndr_flags
, enum svcctl_StartType r
)
393 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
));
394 return NDR_ERR_SUCCESS
;
397 static enum ndr_err_code
ndr_pull_svcctl_StartType(struct ndr_pull
*ndr
, int ndr_flags
, enum svcctl_StartType
*r
)
400 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &v
));
402 return NDR_ERR_SUCCESS
;
405 _PUBLIC_
void ndr_print_svcctl_StartType(struct ndr_print
*ndr
, const char *name
, enum svcctl_StartType r
)
407 const char *val
= NULL
;
410 case SVCCTL_BOOT_START
: val
= "SVCCTL_BOOT_START"; break;
411 case SVCCTL_SYSTEM_START
: val
= "SVCCTL_SYSTEM_START"; break;
412 case SVCCTL_AUTO_START
: val
= "SVCCTL_AUTO_START"; break;
413 case SVCCTL_DEMAND_START
: val
= "SVCCTL_DEMAND_START"; break;
414 case SVCCTL_DISABLED
: val
= "SVCCTL_DISABLED"; break;
416 ndr_print_enum(ndr
, name
, "ENUM", val
, r
);
419 static enum ndr_err_code
ndr_push_svcctl_ServiceState(struct ndr_push
*ndr
, int ndr_flags
, enum svcctl_ServiceState r
)
421 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
));
422 return NDR_ERR_SUCCESS
;
425 static enum ndr_err_code
ndr_pull_svcctl_ServiceState(struct ndr_pull
*ndr
, int ndr_flags
, enum svcctl_ServiceState
*r
)
428 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &v
));
430 return NDR_ERR_SUCCESS
;
433 _PUBLIC_
void ndr_print_svcctl_ServiceState(struct ndr_print
*ndr
, const char *name
, enum svcctl_ServiceState r
)
435 const char *val
= NULL
;
438 case SVCCTL_STATE_ACTIVE
: val
= "SVCCTL_STATE_ACTIVE"; break;
439 case SVCCTL_STATE_INACTIVE
: val
= "SVCCTL_STATE_INACTIVE"; break;
440 case SVCCTL_STATE_ALL
: val
= "SVCCTL_STATE_ALL"; break;
442 ndr_print_enum(ndr
, name
, "ENUM", val
, r
);
445 static enum ndr_err_code
ndr_push_svcctl_MgrAccessMask(struct ndr_push
*ndr
, int ndr_flags
, uint32_t r
)
447 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
));
448 return NDR_ERR_SUCCESS
;
451 static enum ndr_err_code
ndr_pull_svcctl_MgrAccessMask(struct ndr_pull
*ndr
, int ndr_flags
, uint32_t *r
)
454 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &v
));
456 return NDR_ERR_SUCCESS
;
459 _PUBLIC_
void ndr_print_svcctl_MgrAccessMask(struct ndr_print
*ndr
, const char *name
, uint32_t r
)
461 ndr_print_uint32(ndr
, name
, r
);
463 ndr_print_bitmap_flag(ndr
, sizeof(uint32_t), "SC_RIGHT_MGR_CONNECT", SC_RIGHT_MGR_CONNECT
, r
);
464 ndr_print_bitmap_flag(ndr
, sizeof(uint32_t), "SC_RIGHT_MGR_CREATE_SERVICE", SC_RIGHT_MGR_CREATE_SERVICE
, r
);
465 ndr_print_bitmap_flag(ndr
, sizeof(uint32_t), "SC_RIGHT_MGR_ENUMERATE_SERVICE", SC_RIGHT_MGR_ENUMERATE_SERVICE
, r
);
466 ndr_print_bitmap_flag(ndr
, sizeof(uint32_t), "SC_RIGHT_MGR_LOCK", SC_RIGHT_MGR_LOCK
, r
);
467 ndr_print_bitmap_flag(ndr
, sizeof(uint32_t), "SC_RIGHT_MGR_QUERY_LOCK_STATUS", SC_RIGHT_MGR_QUERY_LOCK_STATUS
, r
);
468 ndr_print_bitmap_flag(ndr
, sizeof(uint32_t), "SC_RIGHT_MGR_MODIFY_BOOT_CONFIG", SC_RIGHT_MGR_MODIFY_BOOT_CONFIG
, r
);
472 static enum ndr_err_code
ndr_push_svcctl_ServiceAccessMask(struct ndr_push
*ndr
, int ndr_flags
, uint32_t r
)
474 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
));
475 return NDR_ERR_SUCCESS
;
478 static enum ndr_err_code
ndr_pull_svcctl_ServiceAccessMask(struct ndr_pull
*ndr
, int ndr_flags
, uint32_t *r
)
481 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &v
));
483 return NDR_ERR_SUCCESS
;
486 _PUBLIC_
void ndr_print_svcctl_ServiceAccessMask(struct ndr_print
*ndr
, const char *name
, uint32_t r
)
488 ndr_print_uint32(ndr
, name
, r
);
490 ndr_print_bitmap_flag(ndr
, sizeof(uint32_t), "SC_RIGHT_SVC_QUERY_CONFIG", SC_RIGHT_SVC_QUERY_CONFIG
, r
);
491 ndr_print_bitmap_flag(ndr
, sizeof(uint32_t), "SC_RIGHT_SVC_CHANGE_CONFIG", SC_RIGHT_SVC_CHANGE_CONFIG
, r
);
492 ndr_print_bitmap_flag(ndr
, sizeof(uint32_t), "SC_RIGHT_SVC_QUERY_STATUS", SC_RIGHT_SVC_QUERY_STATUS
, r
);
493 ndr_print_bitmap_flag(ndr
, sizeof(uint32_t), "SC_RIGHT_SVC_ENUMERATE_DEPENDENTS", SC_RIGHT_SVC_ENUMERATE_DEPENDENTS
, r
);
494 ndr_print_bitmap_flag(ndr
, sizeof(uint32_t), "SC_RIGHT_SVC_START", SC_RIGHT_SVC_START
, r
);
495 ndr_print_bitmap_flag(ndr
, sizeof(uint32_t), "SC_RIGHT_SVC_STOP", SC_RIGHT_SVC_STOP
, r
);
496 ndr_print_bitmap_flag(ndr
, sizeof(uint32_t), "SC_RIGHT_SVC_PAUSE_CONTINUE", SC_RIGHT_SVC_PAUSE_CONTINUE
, r
);
497 ndr_print_bitmap_flag(ndr
, sizeof(uint32_t), "SC_RIGHT_SVC_INTERROGATE", SC_RIGHT_SVC_INTERROGATE
, r
);
498 ndr_print_bitmap_flag(ndr
, sizeof(uint32_t), "SC_RIGHT_SVC_USER_DEFINED_CONTROL", SC_RIGHT_SVC_USER_DEFINED_CONTROL
, r
);
502 _PUBLIC_
enum ndr_err_code
ndr_push_QUERY_SERVICE_CONFIG(struct ndr_push
*ndr
, int ndr_flags
, const struct QUERY_SERVICE_CONFIG
*r
)
504 if (ndr_flags
& NDR_SCALARS
) {
505 NDR_CHECK(ndr_push_align(ndr
, 4));
506 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->service_type
));
507 NDR_CHECK(ndr_push_svcctl_StartType(ndr
, NDR_SCALARS
, r
->start_type
));
508 NDR_CHECK(ndr_push_svcctl_ErrorControl(ndr
, NDR_SCALARS
, r
->error_control
));
509 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->executablepath
));
510 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->loadordergroup
));
511 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->tag_id
));
512 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->dependencies
));
513 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->startname
));
514 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->displayname
));
516 if (ndr_flags
& NDR_BUFFERS
) {
517 if (r
->executablepath
) {
518 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->executablepath
, CH_UTF16
)));
519 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, 0));
520 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->executablepath
, CH_UTF16
)));
521 NDR_CHECK(ndr_push_charset(ndr
, NDR_SCALARS
, r
->executablepath
, ndr_charset_length(r
->executablepath
, CH_UTF16
), sizeof(uint16_t), CH_UTF16
));
523 if (r
->loadordergroup
) {
524 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->loadordergroup
, CH_UTF16
)));
525 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, 0));
526 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->loadordergroup
, CH_UTF16
)));
527 NDR_CHECK(ndr_push_charset(ndr
, NDR_SCALARS
, r
->loadordergroup
, ndr_charset_length(r
->loadordergroup
, CH_UTF16
), sizeof(uint16_t), CH_UTF16
));
529 if (r
->dependencies
) {
530 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->dependencies
, CH_UTF16
)));
531 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, 0));
532 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->dependencies
, CH_UTF16
)));
533 NDR_CHECK(ndr_push_charset(ndr
, NDR_SCALARS
, r
->dependencies
, ndr_charset_length(r
->dependencies
, CH_UTF16
), sizeof(uint16_t), CH_UTF16
));
536 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->startname
, CH_UTF16
)));
537 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, 0));
538 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->startname
, CH_UTF16
)));
539 NDR_CHECK(ndr_push_charset(ndr
, NDR_SCALARS
, r
->startname
, ndr_charset_length(r
->startname
, CH_UTF16
), sizeof(uint16_t), CH_UTF16
));
541 if (r
->displayname
) {
542 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->displayname
, CH_UTF16
)));
543 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, 0));
544 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->displayname
, CH_UTF16
)));
545 NDR_CHECK(ndr_push_charset(ndr
, NDR_SCALARS
, r
->displayname
, ndr_charset_length(r
->displayname
, CH_UTF16
), sizeof(uint16_t), CH_UTF16
));
548 return NDR_ERR_SUCCESS
;
551 _PUBLIC_
enum ndr_err_code
ndr_pull_QUERY_SERVICE_CONFIG(struct ndr_pull
*ndr
, int ndr_flags
, struct QUERY_SERVICE_CONFIG
*r
)
553 uint32_t _ptr_executablepath
;
554 TALLOC_CTX
*_mem_save_executablepath_0
;
555 uint32_t _ptr_loadordergroup
;
556 TALLOC_CTX
*_mem_save_loadordergroup_0
;
557 uint32_t _ptr_dependencies
;
558 TALLOC_CTX
*_mem_save_dependencies_0
;
559 uint32_t _ptr_startname
;
560 TALLOC_CTX
*_mem_save_startname_0
;
561 uint32_t _ptr_displayname
;
562 TALLOC_CTX
*_mem_save_displayname_0
;
563 if (ndr_flags
& NDR_SCALARS
) {
564 NDR_CHECK(ndr_pull_align(ndr
, 4));
565 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->service_type
));
566 NDR_CHECK(ndr_pull_svcctl_StartType(ndr
, NDR_SCALARS
, &r
->start_type
));
567 NDR_CHECK(ndr_pull_svcctl_ErrorControl(ndr
, NDR_SCALARS
, &r
->error_control
));
568 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_executablepath
));
569 if (_ptr_executablepath
) {
570 NDR_PULL_ALLOC(ndr
, r
->executablepath
);
572 r
->executablepath
= NULL
;
574 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_loadordergroup
));
575 if (_ptr_loadordergroup
) {
576 NDR_PULL_ALLOC(ndr
, r
->loadordergroup
);
578 r
->loadordergroup
= NULL
;
580 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->tag_id
));
581 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_dependencies
));
582 if (_ptr_dependencies
) {
583 NDR_PULL_ALLOC(ndr
, r
->dependencies
);
585 r
->dependencies
= NULL
;
587 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_startname
));
588 if (_ptr_startname
) {
589 NDR_PULL_ALLOC(ndr
, r
->startname
);
593 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_displayname
));
594 if (_ptr_displayname
) {
595 NDR_PULL_ALLOC(ndr
, r
->displayname
);
597 r
->displayname
= NULL
;
600 if (ndr_flags
& NDR_BUFFERS
) {
601 if (r
->executablepath
) {
602 _mem_save_executablepath_0
= NDR_PULL_GET_MEM_CTX(ndr
);
603 NDR_PULL_SET_MEM_CTX(ndr
, r
->executablepath
, 0);
604 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->executablepath
));
605 NDR_CHECK(ndr_pull_array_length(ndr
, &r
->executablepath
));
606 if (ndr_get_array_length(ndr
, &r
->executablepath
) > ndr_get_array_size(ndr
, &r
->executablepath
)) {
607 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
));
609 NDR_CHECK(ndr_check_string_terminator(ndr
, ndr_get_array_length(ndr
, &r
->executablepath
), sizeof(uint16_t)));
610 NDR_CHECK(ndr_pull_charset(ndr
, NDR_SCALARS
, &r
->executablepath
, ndr_get_array_length(ndr
, &r
->executablepath
), sizeof(uint16_t), CH_UTF16
));
611 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_executablepath_0
, 0);
613 if (r
->loadordergroup
) {
614 _mem_save_loadordergroup_0
= NDR_PULL_GET_MEM_CTX(ndr
);
615 NDR_PULL_SET_MEM_CTX(ndr
, r
->loadordergroup
, 0);
616 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->loadordergroup
));
617 NDR_CHECK(ndr_pull_array_length(ndr
, &r
->loadordergroup
));
618 if (ndr_get_array_length(ndr
, &r
->loadordergroup
) > ndr_get_array_size(ndr
, &r
->loadordergroup
)) {
619 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
));
621 NDR_CHECK(ndr_check_string_terminator(ndr
, ndr_get_array_length(ndr
, &r
->loadordergroup
), sizeof(uint16_t)));
622 NDR_CHECK(ndr_pull_charset(ndr
, NDR_SCALARS
, &r
->loadordergroup
, ndr_get_array_length(ndr
, &r
->loadordergroup
), sizeof(uint16_t), CH_UTF16
));
623 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_loadordergroup_0
, 0);
625 if (r
->dependencies
) {
626 _mem_save_dependencies_0
= NDR_PULL_GET_MEM_CTX(ndr
);
627 NDR_PULL_SET_MEM_CTX(ndr
, r
->dependencies
, 0);
628 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->dependencies
));
629 NDR_CHECK(ndr_pull_array_length(ndr
, &r
->dependencies
));
630 if (ndr_get_array_length(ndr
, &r
->dependencies
) > ndr_get_array_size(ndr
, &r
->dependencies
)) {
631 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
));
633 NDR_CHECK(ndr_check_string_terminator(ndr
, ndr_get_array_length(ndr
, &r
->dependencies
), sizeof(uint16_t)));
634 NDR_CHECK(ndr_pull_charset(ndr
, NDR_SCALARS
, &r
->dependencies
, ndr_get_array_length(ndr
, &r
->dependencies
), sizeof(uint16_t), CH_UTF16
));
635 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_dependencies_0
, 0);
638 _mem_save_startname_0
= NDR_PULL_GET_MEM_CTX(ndr
);
639 NDR_PULL_SET_MEM_CTX(ndr
, r
->startname
, 0);
640 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->startname
));
641 NDR_CHECK(ndr_pull_array_length(ndr
, &r
->startname
));
642 if (ndr_get_array_length(ndr
, &r
->startname
) > ndr_get_array_size(ndr
, &r
->startname
)) {
643 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
));
645 NDR_CHECK(ndr_check_string_terminator(ndr
, ndr_get_array_length(ndr
, &r
->startname
), sizeof(uint16_t)));
646 NDR_CHECK(ndr_pull_charset(ndr
, NDR_SCALARS
, &r
->startname
, ndr_get_array_length(ndr
, &r
->startname
), sizeof(uint16_t), CH_UTF16
));
647 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_startname_0
, 0);
649 if (r
->displayname
) {
650 _mem_save_displayname_0
= NDR_PULL_GET_MEM_CTX(ndr
);
651 NDR_PULL_SET_MEM_CTX(ndr
, r
->displayname
, 0);
652 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->displayname
));
653 NDR_CHECK(ndr_pull_array_length(ndr
, &r
->displayname
));
654 if (ndr_get_array_length(ndr
, &r
->displayname
) > ndr_get_array_size(ndr
, &r
->displayname
)) {
655 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
));
657 NDR_CHECK(ndr_check_string_terminator(ndr
, ndr_get_array_length(ndr
, &r
->displayname
), sizeof(uint16_t)));
658 NDR_CHECK(ndr_pull_charset(ndr
, NDR_SCALARS
, &r
->displayname
, ndr_get_array_length(ndr
, &r
->displayname
), sizeof(uint16_t), CH_UTF16
));
659 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_displayname_0
, 0);
662 return NDR_ERR_SUCCESS
;
665 _PUBLIC_
void ndr_print_QUERY_SERVICE_CONFIG(struct ndr_print
*ndr
, const char *name
, const struct QUERY_SERVICE_CONFIG
*r
)
667 ndr_print_struct(ndr
, name
, "QUERY_SERVICE_CONFIG");
669 ndr_print_uint32(ndr
, "service_type", r
->service_type
);
670 ndr_print_svcctl_StartType(ndr
, "start_type", r
->start_type
);
671 ndr_print_svcctl_ErrorControl(ndr
, "error_control", r
->error_control
);
672 ndr_print_ptr(ndr
, "executablepath", r
->executablepath
);
674 if (r
->executablepath
) {
675 ndr_print_string(ndr
, "executablepath", r
->executablepath
);
678 ndr_print_ptr(ndr
, "loadordergroup", r
->loadordergroup
);
680 if (r
->loadordergroup
) {
681 ndr_print_string(ndr
, "loadordergroup", r
->loadordergroup
);
684 ndr_print_uint32(ndr
, "tag_id", r
->tag_id
);
685 ndr_print_ptr(ndr
, "dependencies", r
->dependencies
);
687 if (r
->dependencies
) {
688 ndr_print_string(ndr
, "dependencies", r
->dependencies
);
691 ndr_print_ptr(ndr
, "startname", r
->startname
);
694 ndr_print_string(ndr
, "startname", r
->startname
);
697 ndr_print_ptr(ndr
, "displayname", r
->displayname
);
699 if (r
->displayname
) {
700 ndr_print_string(ndr
, "displayname", r
->displayname
);
706 _PUBLIC_
size_t ndr_size_QUERY_SERVICE_CONFIG(const struct QUERY_SERVICE_CONFIG
*r
, struct smb_iconv_convenience
*ic
, int flags
)
708 return ndr_size_struct(r
, flags
, (ndr_push_flags_fn_t
)ndr_push_QUERY_SERVICE_CONFIG
, ic
);
711 static enum ndr_err_code
ndr_push_svcctl_ConfigLevel(struct ndr_push
*ndr
, int ndr_flags
, enum svcctl_ConfigLevel r
)
713 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
));
714 return NDR_ERR_SUCCESS
;
717 static enum ndr_err_code
ndr_pull_svcctl_ConfigLevel(struct ndr_pull
*ndr
, int ndr_flags
, enum svcctl_ConfigLevel
*r
)
720 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &v
));
722 return NDR_ERR_SUCCESS
;
725 _PUBLIC_
void ndr_print_svcctl_ConfigLevel(struct ndr_print
*ndr
, const char *name
, enum svcctl_ConfigLevel r
)
727 const char *val
= NULL
;
730 case SERVICE_CONFIG_DESCRIPTION
: val
= "SERVICE_CONFIG_DESCRIPTION"; break;
731 case SERVICE_CONFIG_FAILURE_ACTIONS
: val
= "SERVICE_CONFIG_FAILURE_ACTIONS"; break;
733 ndr_print_enum(ndr
, name
, "ENUM", val
, r
);
736 _PUBLIC_
enum ndr_err_code
ndr_push_SERVICE_DESCRIPTION(struct ndr_push
*ndr
, int ndr_flags
, const struct SERVICE_DESCRIPTION
*r
)
738 if (ndr_flags
& NDR_SCALARS
) {
739 NDR_CHECK(ndr_push_align(ndr
, 4));
741 uint32_t _flags_save_string
= ndr
->flags
;
742 ndr_set_flags(&ndr
->flags
, LIBNDR_FLAG_STR_NULLTERM
);
743 NDR_CHECK(ndr_push_relative_ptr1(ndr
, r
->description
));
744 ndr
->flags
= _flags_save_string
;
747 if (ndr_flags
& NDR_BUFFERS
) {
749 uint32_t _flags_save_string
= ndr
->flags
;
750 ndr_set_flags(&ndr
->flags
, LIBNDR_FLAG_STR_NULLTERM
);
751 if (r
->description
) {
752 NDR_CHECK(ndr_push_relative_ptr2(ndr
, r
->description
));
753 NDR_CHECK(ndr_push_string(ndr
, NDR_SCALARS
, r
->description
));
755 ndr
->flags
= _flags_save_string
;
758 return NDR_ERR_SUCCESS
;
761 _PUBLIC_
enum ndr_err_code
ndr_pull_SERVICE_DESCRIPTION(struct ndr_pull
*ndr
, int ndr_flags
, struct SERVICE_DESCRIPTION
*r
)
763 uint32_t _ptr_description
;
764 TALLOC_CTX
*_mem_save_description_0
;
765 if (ndr_flags
& NDR_SCALARS
) {
766 NDR_CHECK(ndr_pull_align(ndr
, 4));
768 uint32_t _flags_save_string
= ndr
->flags
;
769 ndr_set_flags(&ndr
->flags
, LIBNDR_FLAG_STR_NULLTERM
);
770 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_description
));
771 if (_ptr_description
) {
772 NDR_PULL_ALLOC(ndr
, r
->description
);
773 NDR_CHECK(ndr_pull_relative_ptr1(ndr
, r
->description
, _ptr_description
));
775 r
->description
= NULL
;
777 ndr
->flags
= _flags_save_string
;
780 if (ndr_flags
& NDR_BUFFERS
) {
782 uint32_t _flags_save_string
= ndr
->flags
;
783 ndr_set_flags(&ndr
->flags
, LIBNDR_FLAG_STR_NULLTERM
);
784 if (r
->description
) {
785 uint32_t _relative_save_offset
;
786 _relative_save_offset
= ndr
->offset
;
787 NDR_CHECK(ndr_pull_relative_ptr2(ndr
, r
->description
));
788 _mem_save_description_0
= NDR_PULL_GET_MEM_CTX(ndr
);
789 NDR_PULL_SET_MEM_CTX(ndr
, r
->description
, 0);
790 NDR_CHECK(ndr_pull_string(ndr
, NDR_SCALARS
, &r
->description
));
791 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_description_0
, 0);
792 ndr
->offset
= _relative_save_offset
;
794 ndr
->flags
= _flags_save_string
;
797 return NDR_ERR_SUCCESS
;
800 _PUBLIC_
void ndr_print_SERVICE_DESCRIPTION(struct ndr_print
*ndr
, const char *name
, const struct SERVICE_DESCRIPTION
*r
)
802 ndr_print_struct(ndr
, name
, "SERVICE_DESCRIPTION");
804 ndr_print_ptr(ndr
, "description", r
->description
);
806 if (r
->description
) {
807 ndr_print_string(ndr
, "description", r
->description
);
813 _PUBLIC_
size_t ndr_size_SERVICE_DESCRIPTION(const struct SERVICE_DESCRIPTION
*r
, struct smb_iconv_convenience
*ic
, int flags
)
815 return ndr_size_struct(r
, flags
, (ndr_push_flags_fn_t
)ndr_push_SERVICE_DESCRIPTION
, ic
);
818 static enum ndr_err_code
ndr_push_SC_ACTION_TYPE(struct ndr_push
*ndr
, int ndr_flags
, enum SC_ACTION_TYPE r
)
820 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
));
821 return NDR_ERR_SUCCESS
;
824 static enum ndr_err_code
ndr_pull_SC_ACTION_TYPE(struct ndr_pull
*ndr
, int ndr_flags
, enum SC_ACTION_TYPE
*r
)
827 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &v
));
829 return NDR_ERR_SUCCESS
;
832 _PUBLIC_
void ndr_print_SC_ACTION_TYPE(struct ndr_print
*ndr
, const char *name
, enum SC_ACTION_TYPE r
)
834 const char *val
= NULL
;
837 case SC_ACTION_NONE
: val
= "SC_ACTION_NONE"; break;
838 case SC_ACTION_RESTART
: val
= "SC_ACTION_RESTART"; break;
839 case SC_ACTION_REBOOT
: val
= "SC_ACTION_REBOOT"; break;
840 case SC_ACTION_RUN_COMMAND
: val
= "SC_ACTION_RUN_COMMAND"; break;
842 ndr_print_enum(ndr
, name
, "ENUM", val
, r
);
845 static enum ndr_err_code
ndr_push_SC_ACTION(struct ndr_push
*ndr
, int ndr_flags
, const struct SC_ACTION
*r
)
847 if (ndr_flags
& NDR_SCALARS
) {
848 NDR_CHECK(ndr_push_align(ndr
, 4));
849 NDR_CHECK(ndr_push_SC_ACTION_TYPE(ndr
, NDR_SCALARS
, r
->type
));
850 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->delay
));
852 if (ndr_flags
& NDR_BUFFERS
) {
854 return NDR_ERR_SUCCESS
;
857 static enum ndr_err_code
ndr_pull_SC_ACTION(struct ndr_pull
*ndr
, int ndr_flags
, struct SC_ACTION
*r
)
859 if (ndr_flags
& NDR_SCALARS
) {
860 NDR_CHECK(ndr_pull_align(ndr
, 4));
861 NDR_CHECK(ndr_pull_SC_ACTION_TYPE(ndr
, NDR_SCALARS
, &r
->type
));
862 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->delay
));
864 if (ndr_flags
& NDR_BUFFERS
) {
866 return NDR_ERR_SUCCESS
;
869 _PUBLIC_
void ndr_print_SC_ACTION(struct ndr_print
*ndr
, const char *name
, const struct SC_ACTION
*r
)
871 ndr_print_struct(ndr
, name
, "SC_ACTION");
873 ndr_print_SC_ACTION_TYPE(ndr
, "type", r
->type
);
874 ndr_print_uint32(ndr
, "delay", r
->delay
);
878 _PUBLIC_
enum ndr_err_code
ndr_push_SERVICE_FAILURE_ACTIONS(struct ndr_push
*ndr
, int ndr_flags
, const struct SERVICE_FAILURE_ACTIONS
*r
)
880 uint32_t cntr_actions_1
;
881 if (ndr_flags
& NDR_SCALARS
) {
882 NDR_CHECK(ndr_push_align(ndr
, 4));
883 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->reset_period
));
885 uint32_t _flags_save_string
= ndr
->flags
;
886 ndr_set_flags(&ndr
->flags
, LIBNDR_FLAG_STR_NULLTERM
);
887 NDR_CHECK(ndr_push_relative_ptr1(ndr
, r
->rebootmsg
));
888 ndr
->flags
= _flags_save_string
;
891 uint32_t _flags_save_string
= ndr
->flags
;
892 ndr_set_flags(&ndr
->flags
, LIBNDR_FLAG_STR_NULLTERM
);
893 NDR_CHECK(ndr_push_relative_ptr1(ndr
, r
->command
));
894 ndr
->flags
= _flags_save_string
;
896 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->num_actions
));
897 NDR_CHECK(ndr_push_relative_ptr1(ndr
, r
->actions
));
899 if (ndr_flags
& NDR_BUFFERS
) {
901 uint32_t _flags_save_string
= ndr
->flags
;
902 ndr_set_flags(&ndr
->flags
, LIBNDR_FLAG_STR_NULLTERM
);
904 NDR_CHECK(ndr_push_relative_ptr2(ndr
, r
->rebootmsg
));
905 NDR_CHECK(ndr_push_string(ndr
, NDR_SCALARS
, r
->rebootmsg
));
907 ndr
->flags
= _flags_save_string
;
910 uint32_t _flags_save_string
= ndr
->flags
;
911 ndr_set_flags(&ndr
->flags
, LIBNDR_FLAG_STR_NULLTERM
);
913 NDR_CHECK(ndr_push_relative_ptr2(ndr
, r
->command
));
914 NDR_CHECK(ndr_push_string(ndr
, NDR_SCALARS
, r
->command
));
916 ndr
->flags
= _flags_save_string
;
919 NDR_CHECK(ndr_push_relative_ptr2(ndr
, r
->actions
));
920 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->num_actions
));
921 for (cntr_actions_1
= 0; cntr_actions_1
< r
->num_actions
; cntr_actions_1
++) {
922 NDR_CHECK(ndr_push_SC_ACTION(ndr
, NDR_SCALARS
, &r
->actions
[cntr_actions_1
]));
926 return NDR_ERR_SUCCESS
;
929 _PUBLIC_
enum ndr_err_code
ndr_pull_SERVICE_FAILURE_ACTIONS(struct ndr_pull
*ndr
, int ndr_flags
, struct SERVICE_FAILURE_ACTIONS
*r
)
931 uint32_t _ptr_rebootmsg
;
932 TALLOC_CTX
*_mem_save_rebootmsg_0
;
933 uint32_t _ptr_command
;
934 TALLOC_CTX
*_mem_save_command_0
;
935 uint32_t _ptr_actions
;
936 uint32_t cntr_actions_1
;
937 TALLOC_CTX
*_mem_save_actions_0
;
938 TALLOC_CTX
*_mem_save_actions_1
;
939 if (ndr_flags
& NDR_SCALARS
) {
940 NDR_CHECK(ndr_pull_align(ndr
, 4));
941 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->reset_period
));
943 uint32_t _flags_save_string
= ndr
->flags
;
944 ndr_set_flags(&ndr
->flags
, LIBNDR_FLAG_STR_NULLTERM
);
945 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_rebootmsg
));
946 if (_ptr_rebootmsg
) {
947 NDR_PULL_ALLOC(ndr
, r
->rebootmsg
);
948 NDR_CHECK(ndr_pull_relative_ptr1(ndr
, r
->rebootmsg
, _ptr_rebootmsg
));
952 ndr
->flags
= _flags_save_string
;
955 uint32_t _flags_save_string
= ndr
->flags
;
956 ndr_set_flags(&ndr
->flags
, LIBNDR_FLAG_STR_NULLTERM
);
957 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_command
));
959 NDR_PULL_ALLOC(ndr
, r
->command
);
960 NDR_CHECK(ndr_pull_relative_ptr1(ndr
, r
->command
, _ptr_command
));
964 ndr
->flags
= _flags_save_string
;
966 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->num_actions
));
967 if (r
->num_actions
< 0 || r
->num_actions
> 1024) {
968 return ndr_pull_error(ndr
, NDR_ERR_RANGE
, "value out of range");
970 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_actions
));
972 NDR_PULL_ALLOC(ndr
, r
->actions
);
973 NDR_CHECK(ndr_pull_relative_ptr1(ndr
, r
->actions
, _ptr_actions
));
978 if (ndr_flags
& NDR_BUFFERS
) {
980 uint32_t _flags_save_string
= ndr
->flags
;
981 ndr_set_flags(&ndr
->flags
, LIBNDR_FLAG_STR_NULLTERM
);
983 uint32_t _relative_save_offset
;
984 _relative_save_offset
= ndr
->offset
;
985 NDR_CHECK(ndr_pull_relative_ptr2(ndr
, r
->rebootmsg
));
986 _mem_save_rebootmsg_0
= NDR_PULL_GET_MEM_CTX(ndr
);
987 NDR_PULL_SET_MEM_CTX(ndr
, r
->rebootmsg
, 0);
988 NDR_CHECK(ndr_pull_string(ndr
, NDR_SCALARS
, &r
->rebootmsg
));
989 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_rebootmsg_0
, 0);
990 ndr
->offset
= _relative_save_offset
;
992 ndr
->flags
= _flags_save_string
;
995 uint32_t _flags_save_string
= ndr
->flags
;
996 ndr_set_flags(&ndr
->flags
, LIBNDR_FLAG_STR_NULLTERM
);
998 uint32_t _relative_save_offset
;
999 _relative_save_offset
= ndr
->offset
;
1000 NDR_CHECK(ndr_pull_relative_ptr2(ndr
, r
->command
));
1001 _mem_save_command_0
= NDR_PULL_GET_MEM_CTX(ndr
);
1002 NDR_PULL_SET_MEM_CTX(ndr
, r
->command
, 0);
1003 NDR_CHECK(ndr_pull_string(ndr
, NDR_SCALARS
, &r
->command
));
1004 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_command_0
, 0);
1005 ndr
->offset
= _relative_save_offset
;
1007 ndr
->flags
= _flags_save_string
;
1010 uint32_t _relative_save_offset
;
1011 _relative_save_offset
= ndr
->offset
;
1012 NDR_CHECK(ndr_pull_relative_ptr2(ndr
, r
->actions
));
1013 _mem_save_actions_0
= NDR_PULL_GET_MEM_CTX(ndr
);
1014 NDR_PULL_SET_MEM_CTX(ndr
, r
->actions
, 0);
1015 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->actions
));
1016 NDR_PULL_ALLOC_N(ndr
, r
->actions
, ndr_get_array_size(ndr
, &r
->actions
));
1017 _mem_save_actions_1
= NDR_PULL_GET_MEM_CTX(ndr
);
1018 NDR_PULL_SET_MEM_CTX(ndr
, r
->actions
, 0);
1019 for (cntr_actions_1
= 0; cntr_actions_1
< r
->num_actions
; cntr_actions_1
++) {
1020 NDR_CHECK(ndr_pull_SC_ACTION(ndr
, NDR_SCALARS
, &r
->actions
[cntr_actions_1
]));
1022 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_actions_1
, 0);
1023 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_actions_0
, 0);
1024 ndr
->offset
= _relative_save_offset
;
1027 NDR_CHECK(ndr_check_array_size(ndr
, (void*)&r
->actions
, r
->num_actions
));
1030 return NDR_ERR_SUCCESS
;
1033 _PUBLIC_
void ndr_print_SERVICE_FAILURE_ACTIONS(struct ndr_print
*ndr
, const char *name
, const struct SERVICE_FAILURE_ACTIONS
*r
)
1035 uint32_t cntr_actions_1
;
1036 ndr_print_struct(ndr
, name
, "SERVICE_FAILURE_ACTIONS");
1038 ndr_print_uint32(ndr
, "reset_period", r
->reset_period
);
1039 ndr_print_ptr(ndr
, "rebootmsg", r
->rebootmsg
);
1042 ndr_print_string(ndr
, "rebootmsg", r
->rebootmsg
);
1045 ndr_print_ptr(ndr
, "command", r
->command
);
1048 ndr_print_string(ndr
, "command", r
->command
);
1051 ndr_print_uint32(ndr
, "num_actions", r
->num_actions
);
1052 ndr_print_ptr(ndr
, "actions", r
->actions
);
1055 ndr
->print(ndr
, "%s: ARRAY(%d)", "actions", (int)r
->num_actions
);
1057 for (cntr_actions_1
=0;cntr_actions_1
<r
->num_actions
;cntr_actions_1
++) {
1059 if (asprintf(&idx_1
, "[%d]", cntr_actions_1
) != -1) {
1060 ndr_print_SC_ACTION(ndr
, "actions", &r
->actions
[cntr_actions_1
]);
1070 _PUBLIC_
size_t ndr_size_SERVICE_FAILURE_ACTIONS(const struct SERVICE_FAILURE_ACTIONS
*r
, struct smb_iconv_convenience
*ic
, int flags
)
1072 return ndr_size_struct(r
, flags
, (ndr_push_flags_fn_t
)ndr_push_SERVICE_FAILURE_ACTIONS
, ic
);
1075 static enum ndr_err_code
ndr_push_svcctl_StatusLevel(struct ndr_push
*ndr
, int ndr_flags
, enum svcctl_StatusLevel r
)
1077 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
));
1078 return NDR_ERR_SUCCESS
;
1081 static enum ndr_err_code
ndr_pull_svcctl_StatusLevel(struct ndr_pull
*ndr
, int ndr_flags
, enum svcctl_StatusLevel
*r
)
1084 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &v
));
1086 return NDR_ERR_SUCCESS
;
1089 _PUBLIC_
void ndr_print_svcctl_StatusLevel(struct ndr_print
*ndr
, const char *name
, enum svcctl_StatusLevel r
)
1091 const char *val
= NULL
;
1094 case SVC_STATUS_PROCESS_INFO
: val
= "SVC_STATUS_PROCESS_INFO"; break;
1096 ndr_print_enum(ndr
, name
, "ENUM", val
, r
);
1099 static enum ndr_err_code
ndr_push_svcctl_CloseServiceHandle(struct ndr_push
*ndr
, int flags
, const struct svcctl_CloseServiceHandle
*r
)
1101 if (flags
& NDR_IN
) {
1102 if (r
->in
.handle
== NULL
) {
1103 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
1105 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
, r
->in
.handle
));
1107 if (flags
& NDR_OUT
) {
1108 if (r
->out
.handle
== NULL
) {
1109 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
1111 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
, r
->out
.handle
));
1112 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
1114 return NDR_ERR_SUCCESS
;
1117 static enum ndr_err_code
ndr_pull_svcctl_CloseServiceHandle(struct ndr_pull
*ndr
, int flags
, struct svcctl_CloseServiceHandle
*r
)
1119 TALLOC_CTX
*_mem_save_handle_0
;
1120 if (flags
& NDR_IN
) {
1121 ZERO_STRUCT(r
->out
);
1123 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
1124 NDR_PULL_ALLOC(ndr
, r
->in
.handle
);
1126 _mem_save_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
1127 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.handle
, LIBNDR_FLAG_REF_ALLOC
);
1128 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
, r
->in
.handle
));
1129 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_handle_0
, LIBNDR_FLAG_REF_ALLOC
);
1130 NDR_PULL_ALLOC(ndr
, r
->out
.handle
);
1131 *r
->out
.handle
= *r
->in
.handle
;
1133 if (flags
& NDR_OUT
) {
1134 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
1135 NDR_PULL_ALLOC(ndr
, r
->out
.handle
);
1137 _mem_save_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
1138 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.handle
, LIBNDR_FLAG_REF_ALLOC
);
1139 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
, r
->out
.handle
));
1140 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_handle_0
, LIBNDR_FLAG_REF_ALLOC
);
1141 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
1143 return NDR_ERR_SUCCESS
;
1146 _PUBLIC_
void ndr_print_svcctl_CloseServiceHandle(struct ndr_print
*ndr
, const char *name
, int flags
, const struct svcctl_CloseServiceHandle
*r
)
1148 ndr_print_struct(ndr
, name
, "svcctl_CloseServiceHandle");
1150 if (flags
& NDR_SET_VALUES
) {
1151 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
1153 if (flags
& NDR_IN
) {
1154 ndr_print_struct(ndr
, "in", "svcctl_CloseServiceHandle");
1156 ndr_print_ptr(ndr
, "handle", r
->in
.handle
);
1158 ndr_print_policy_handle(ndr
, "handle", r
->in
.handle
);
1162 if (flags
& NDR_OUT
) {
1163 ndr_print_struct(ndr
, "out", "svcctl_CloseServiceHandle");
1165 ndr_print_ptr(ndr
, "handle", r
->out
.handle
);
1167 ndr_print_policy_handle(ndr
, "handle", r
->out
.handle
);
1169 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
1175 static enum ndr_err_code
ndr_push_svcctl_ControlService(struct ndr_push
*ndr
, int flags
, const struct svcctl_ControlService
*r
)
1177 if (flags
& NDR_IN
) {
1178 if (r
->in
.handle
== NULL
) {
1179 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
1181 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
, r
->in
.handle
));
1182 NDR_CHECK(ndr_push_SERVICE_CONTROL(ndr
, NDR_SCALARS
, r
->in
.control
));
1184 if (flags
& NDR_OUT
) {
1185 if (r
->out
.service_status
== NULL
) {
1186 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
1188 NDR_CHECK(ndr_push_SERVICE_STATUS(ndr
, NDR_SCALARS
, r
->out
.service_status
));
1189 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
1191 return NDR_ERR_SUCCESS
;
1194 static enum ndr_err_code
ndr_pull_svcctl_ControlService(struct ndr_pull
*ndr
, int flags
, struct svcctl_ControlService
*r
)
1196 TALLOC_CTX
*_mem_save_handle_0
;
1197 TALLOC_CTX
*_mem_save_service_status_0
;
1198 if (flags
& NDR_IN
) {
1199 ZERO_STRUCT(r
->out
);
1201 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
1202 NDR_PULL_ALLOC(ndr
, r
->in
.handle
);
1204 _mem_save_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
1205 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.handle
, LIBNDR_FLAG_REF_ALLOC
);
1206 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
, r
->in
.handle
));
1207 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_handle_0
, LIBNDR_FLAG_REF_ALLOC
);
1208 NDR_CHECK(ndr_pull_SERVICE_CONTROL(ndr
, NDR_SCALARS
, &r
->in
.control
));
1209 NDR_PULL_ALLOC(ndr
, r
->out
.service_status
);
1210 ZERO_STRUCTP(r
->out
.service_status
);
1212 if (flags
& NDR_OUT
) {
1213 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
1214 NDR_PULL_ALLOC(ndr
, r
->out
.service_status
);
1216 _mem_save_service_status_0
= NDR_PULL_GET_MEM_CTX(ndr
);
1217 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.service_status
, LIBNDR_FLAG_REF_ALLOC
);
1218 NDR_CHECK(ndr_pull_SERVICE_STATUS(ndr
, NDR_SCALARS
, r
->out
.service_status
));
1219 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_service_status_0
, LIBNDR_FLAG_REF_ALLOC
);
1220 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
1222 return NDR_ERR_SUCCESS
;
1225 _PUBLIC_
void ndr_print_svcctl_ControlService(struct ndr_print
*ndr
, const char *name
, int flags
, const struct svcctl_ControlService
*r
)
1227 ndr_print_struct(ndr
, name
, "svcctl_ControlService");
1229 if (flags
& NDR_SET_VALUES
) {
1230 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
1232 if (flags
& NDR_IN
) {
1233 ndr_print_struct(ndr
, "in", "svcctl_ControlService");
1235 ndr_print_ptr(ndr
, "handle", r
->in
.handle
);
1237 ndr_print_policy_handle(ndr
, "handle", r
->in
.handle
);
1239 ndr_print_SERVICE_CONTROL(ndr
, "control", r
->in
.control
);
1242 if (flags
& NDR_OUT
) {
1243 ndr_print_struct(ndr
, "out", "svcctl_ControlService");
1245 ndr_print_ptr(ndr
, "service_status", r
->out
.service_status
);
1247 ndr_print_SERVICE_STATUS(ndr
, "service_status", r
->out
.service_status
);
1249 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
1255 static enum ndr_err_code
ndr_push_svcctl_DeleteService(struct ndr_push
*ndr
, int flags
, const struct svcctl_DeleteService
*r
)
1257 if (flags
& NDR_IN
) {
1258 if (r
->in
.handle
== NULL
) {
1259 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
1261 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
, r
->in
.handle
));
1263 if (flags
& NDR_OUT
) {
1264 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
1266 return NDR_ERR_SUCCESS
;
1269 static enum ndr_err_code
ndr_pull_svcctl_DeleteService(struct ndr_pull
*ndr
, int flags
, struct svcctl_DeleteService
*r
)
1271 TALLOC_CTX
*_mem_save_handle_0
;
1272 if (flags
& NDR_IN
) {
1273 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
1274 NDR_PULL_ALLOC(ndr
, r
->in
.handle
);
1276 _mem_save_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
1277 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.handle
, LIBNDR_FLAG_REF_ALLOC
);
1278 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
, r
->in
.handle
));
1279 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_handle_0
, LIBNDR_FLAG_REF_ALLOC
);
1281 if (flags
& NDR_OUT
) {
1282 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
1284 return NDR_ERR_SUCCESS
;
1287 _PUBLIC_
void ndr_print_svcctl_DeleteService(struct ndr_print
*ndr
, const char *name
, int flags
, const struct svcctl_DeleteService
*r
)
1289 ndr_print_struct(ndr
, name
, "svcctl_DeleteService");
1291 if (flags
& NDR_SET_VALUES
) {
1292 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
1294 if (flags
& NDR_IN
) {
1295 ndr_print_struct(ndr
, "in", "svcctl_DeleteService");
1297 ndr_print_ptr(ndr
, "handle", r
->in
.handle
);
1299 ndr_print_policy_handle(ndr
, "handle", r
->in
.handle
);
1303 if (flags
& NDR_OUT
) {
1304 ndr_print_struct(ndr
, "out", "svcctl_DeleteService");
1306 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
1312 static enum ndr_err_code
ndr_push_svcctl_LockServiceDatabase(struct ndr_push
*ndr
, int flags
, const struct svcctl_LockServiceDatabase
*r
)
1314 if (flags
& NDR_IN
) {
1315 if (r
->in
.handle
== NULL
) {
1316 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
1318 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
, r
->in
.handle
));
1320 if (flags
& NDR_OUT
) {
1321 if (r
->out
.lock
== NULL
) {
1322 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
1324 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
, r
->out
.lock
));
1325 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
1327 return NDR_ERR_SUCCESS
;
1330 static enum ndr_err_code
ndr_pull_svcctl_LockServiceDatabase(struct ndr_pull
*ndr
, int flags
, struct svcctl_LockServiceDatabase
*r
)
1332 TALLOC_CTX
*_mem_save_handle_0
;
1333 TALLOC_CTX
*_mem_save_lock_0
;
1334 if (flags
& NDR_IN
) {
1335 ZERO_STRUCT(r
->out
);
1337 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
1338 NDR_PULL_ALLOC(ndr
, r
->in
.handle
);
1340 _mem_save_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
1341 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.handle
, LIBNDR_FLAG_REF_ALLOC
);
1342 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
, r
->in
.handle
));
1343 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_handle_0
, LIBNDR_FLAG_REF_ALLOC
);
1344 NDR_PULL_ALLOC(ndr
, r
->out
.lock
);
1345 ZERO_STRUCTP(r
->out
.lock
);
1347 if (flags
& NDR_OUT
) {
1348 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
1349 NDR_PULL_ALLOC(ndr
, r
->out
.lock
);
1351 _mem_save_lock_0
= NDR_PULL_GET_MEM_CTX(ndr
);
1352 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.lock
, LIBNDR_FLAG_REF_ALLOC
);
1353 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
, r
->out
.lock
));
1354 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_lock_0
, LIBNDR_FLAG_REF_ALLOC
);
1355 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
1357 return NDR_ERR_SUCCESS
;
1360 _PUBLIC_
void ndr_print_svcctl_LockServiceDatabase(struct ndr_print
*ndr
, const char *name
, int flags
, const struct svcctl_LockServiceDatabase
*r
)
1362 ndr_print_struct(ndr
, name
, "svcctl_LockServiceDatabase");
1364 if (flags
& NDR_SET_VALUES
) {
1365 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
1367 if (flags
& NDR_IN
) {
1368 ndr_print_struct(ndr
, "in", "svcctl_LockServiceDatabase");
1370 ndr_print_ptr(ndr
, "handle", r
->in
.handle
);
1372 ndr_print_policy_handle(ndr
, "handle", r
->in
.handle
);
1376 if (flags
& NDR_OUT
) {
1377 ndr_print_struct(ndr
, "out", "svcctl_LockServiceDatabase");
1379 ndr_print_ptr(ndr
, "lock", r
->out
.lock
);
1381 ndr_print_policy_handle(ndr
, "lock", r
->out
.lock
);
1383 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
1389 static enum ndr_err_code
ndr_push_svcctl_QueryServiceObjectSecurity(struct ndr_push
*ndr
, int flags
, const struct svcctl_QueryServiceObjectSecurity
*r
)
1391 if (flags
& NDR_IN
) {
1392 if (r
->in
.handle
== NULL
) {
1393 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
1395 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
, r
->in
.handle
));
1396 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.security_flags
));
1397 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.buffer_size
));
1399 if (flags
& NDR_OUT
) {
1400 if (r
->out
.buffer
== NULL
) {
1401 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
1403 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.buffer_size
));
1404 NDR_CHECK(ndr_push_array_uint8(ndr
, NDR_SCALARS
, r
->out
.buffer
, r
->in
.buffer_size
));
1405 if (r
->out
.needed
== NULL
) {
1406 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
1408 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, *r
->out
.needed
));
1409 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
1411 return NDR_ERR_SUCCESS
;
1414 static enum ndr_err_code
ndr_pull_svcctl_QueryServiceObjectSecurity(struct ndr_pull
*ndr
, int flags
, struct svcctl_QueryServiceObjectSecurity
*r
)
1416 TALLOC_CTX
*_mem_save_handle_0
;
1417 TALLOC_CTX
*_mem_save_needed_0
;
1418 if (flags
& NDR_IN
) {
1419 ZERO_STRUCT(r
->out
);
1421 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
1422 NDR_PULL_ALLOC(ndr
, r
->in
.handle
);
1424 _mem_save_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
1425 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.handle
, LIBNDR_FLAG_REF_ALLOC
);
1426 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
, r
->in
.handle
));
1427 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_handle_0
, LIBNDR_FLAG_REF_ALLOC
);
1428 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.security_flags
));
1429 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.buffer_size
));
1430 if (r
->in
.buffer_size
< 0 || r
->in
.buffer_size
> 0x40000) {
1431 return ndr_pull_error(ndr
, NDR_ERR_RANGE
, "value out of range");
1433 NDR_PULL_ALLOC_N(ndr
, r
->out
.buffer
, r
->in
.buffer_size
);
1434 memset(CONST_DISCARD(struct svcctl_QueryServiceObjectSecurity
*,r
->out
.buffer
), 0, (r
->in
.buffer_size
) * sizeof(*r
->out
.buffer
));
1435 NDR_PULL_ALLOC(ndr
, r
->out
.needed
);
1436 ZERO_STRUCTP(r
->out
.needed
);
1438 if (flags
& NDR_OUT
) {
1439 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->out
.buffer
));
1440 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
1441 NDR_PULL_ALLOC_N(ndr
, r
->out
.buffer
, ndr_get_array_size(ndr
, &r
->out
.buffer
));
1443 NDR_CHECK(ndr_pull_array_uint8(ndr
, NDR_SCALARS
, r
->out
.buffer
, ndr_get_array_size(ndr
, &r
->out
.buffer
)));
1444 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
1445 NDR_PULL_ALLOC(ndr
, r
->out
.needed
);
1447 _mem_save_needed_0
= NDR_PULL_GET_MEM_CTX(ndr
);
1448 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.needed
, LIBNDR_FLAG_REF_ALLOC
);
1449 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, r
->out
.needed
));
1450 if (*r
->out
.needed
< 0 || *r
->out
.needed
> 0x40000) {
1451 return ndr_pull_error(ndr
, NDR_ERR_RANGE
, "value out of range");
1453 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_needed_0
, LIBNDR_FLAG_REF_ALLOC
);
1454 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
1455 if (r
->out
.buffer
) {
1456 NDR_CHECK(ndr_check_array_size(ndr
, (void*)&r
->out
.buffer
, r
->in
.buffer_size
));
1459 return NDR_ERR_SUCCESS
;
1462 _PUBLIC_
void ndr_print_svcctl_QueryServiceObjectSecurity(struct ndr_print
*ndr
, const char *name
, int flags
, const struct svcctl_QueryServiceObjectSecurity
*r
)
1464 ndr_print_struct(ndr
, name
, "svcctl_QueryServiceObjectSecurity");
1466 if (flags
& NDR_SET_VALUES
) {
1467 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
1469 if (flags
& NDR_IN
) {
1470 ndr_print_struct(ndr
, "in", "svcctl_QueryServiceObjectSecurity");
1472 ndr_print_ptr(ndr
, "handle", r
->in
.handle
);
1474 ndr_print_policy_handle(ndr
, "handle", r
->in
.handle
);
1476 ndr_print_uint32(ndr
, "security_flags", r
->in
.security_flags
);
1477 ndr_print_uint32(ndr
, "buffer_size", r
->in
.buffer_size
);
1480 if (flags
& NDR_OUT
) {
1481 ndr_print_struct(ndr
, "out", "svcctl_QueryServiceObjectSecurity");
1483 ndr_print_ptr(ndr
, "buffer", r
->out
.buffer
);
1485 ndr_print_array_uint8(ndr
, "buffer", r
->out
.buffer
, r
->in
.buffer_size
);
1487 ndr_print_ptr(ndr
, "needed", r
->out
.needed
);
1489 ndr_print_uint32(ndr
, "needed", *r
->out
.needed
);
1491 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
1497 static enum ndr_err_code
ndr_push_svcctl_SetServiceObjectSecurity(struct ndr_push
*ndr
, int flags
, const struct svcctl_SetServiceObjectSecurity
*r
)
1499 if (flags
& NDR_IN
) {
1500 if (r
->in
.handle
== NULL
) {
1501 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
1503 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
, r
->in
.handle
));
1504 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.security_flags
));
1505 if (r
->in
.buffer
== NULL
) {
1506 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
1508 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.buffer_size
));
1509 NDR_CHECK(ndr_push_array_uint8(ndr
, NDR_SCALARS
, r
->in
.buffer
, r
->in
.buffer_size
));
1510 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.buffer_size
));
1512 if (flags
& NDR_OUT
) {
1513 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
1515 return NDR_ERR_SUCCESS
;
1518 static enum ndr_err_code
ndr_pull_svcctl_SetServiceObjectSecurity(struct ndr_pull
*ndr
, int flags
, struct svcctl_SetServiceObjectSecurity
*r
)
1520 TALLOC_CTX
*_mem_save_handle_0
;
1521 if (flags
& NDR_IN
) {
1522 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
1523 NDR_PULL_ALLOC(ndr
, r
->in
.handle
);
1525 _mem_save_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
1526 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.handle
, LIBNDR_FLAG_REF_ALLOC
);
1527 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
, r
->in
.handle
));
1528 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_handle_0
, LIBNDR_FLAG_REF_ALLOC
);
1529 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.security_flags
));
1530 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->in
.buffer
));
1531 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
1532 NDR_PULL_ALLOC_N(ndr
, r
->in
.buffer
, ndr_get_array_size(ndr
, &r
->in
.buffer
));
1534 NDR_CHECK(ndr_pull_array_uint8(ndr
, NDR_SCALARS
, r
->in
.buffer
, ndr_get_array_size(ndr
, &r
->in
.buffer
)));
1535 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.buffer_size
));
1537 NDR_CHECK(ndr_check_array_size(ndr
, (void*)&r
->in
.buffer
, r
->in
.buffer_size
));
1540 if (flags
& NDR_OUT
) {
1541 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
1543 return NDR_ERR_SUCCESS
;
1546 _PUBLIC_
void ndr_print_svcctl_SetServiceObjectSecurity(struct ndr_print
*ndr
, const char *name
, int flags
, const struct svcctl_SetServiceObjectSecurity
*r
)
1548 ndr_print_struct(ndr
, name
, "svcctl_SetServiceObjectSecurity");
1550 if (flags
& NDR_SET_VALUES
) {
1551 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
1553 if (flags
& NDR_IN
) {
1554 ndr_print_struct(ndr
, "in", "svcctl_SetServiceObjectSecurity");
1556 ndr_print_ptr(ndr
, "handle", r
->in
.handle
);
1558 ndr_print_policy_handle(ndr
, "handle", r
->in
.handle
);
1560 ndr_print_uint32(ndr
, "security_flags", r
->in
.security_flags
);
1561 ndr_print_ptr(ndr
, "buffer", r
->in
.buffer
);
1563 ndr_print_array_uint8(ndr
, "buffer", r
->in
.buffer
, r
->in
.buffer_size
);
1565 ndr_print_uint32(ndr
, "buffer_size", r
->in
.buffer_size
);
1568 if (flags
& NDR_OUT
) {
1569 ndr_print_struct(ndr
, "out", "svcctl_SetServiceObjectSecurity");
1571 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
1577 static enum ndr_err_code
ndr_push_svcctl_QueryServiceStatus(struct ndr_push
*ndr
, int flags
, const struct svcctl_QueryServiceStatus
*r
)
1579 if (flags
& NDR_IN
) {
1580 if (r
->in
.handle
== NULL
) {
1581 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
1583 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
, r
->in
.handle
));
1585 if (flags
& NDR_OUT
) {
1586 if (r
->out
.service_status
== NULL
) {
1587 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
1589 NDR_CHECK(ndr_push_SERVICE_STATUS(ndr
, NDR_SCALARS
, r
->out
.service_status
));
1590 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
1592 return NDR_ERR_SUCCESS
;
1595 static enum ndr_err_code
ndr_pull_svcctl_QueryServiceStatus(struct ndr_pull
*ndr
, int flags
, struct svcctl_QueryServiceStatus
*r
)
1597 TALLOC_CTX
*_mem_save_handle_0
;
1598 TALLOC_CTX
*_mem_save_service_status_0
;
1599 if (flags
& NDR_IN
) {
1600 ZERO_STRUCT(r
->out
);
1602 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
1603 NDR_PULL_ALLOC(ndr
, r
->in
.handle
);
1605 _mem_save_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
1606 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.handle
, LIBNDR_FLAG_REF_ALLOC
);
1607 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
, r
->in
.handle
));
1608 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_handle_0
, LIBNDR_FLAG_REF_ALLOC
);
1609 NDR_PULL_ALLOC(ndr
, r
->out
.service_status
);
1610 ZERO_STRUCTP(r
->out
.service_status
);
1612 if (flags
& NDR_OUT
) {
1613 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
1614 NDR_PULL_ALLOC(ndr
, r
->out
.service_status
);
1616 _mem_save_service_status_0
= NDR_PULL_GET_MEM_CTX(ndr
);
1617 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.service_status
, LIBNDR_FLAG_REF_ALLOC
);
1618 NDR_CHECK(ndr_pull_SERVICE_STATUS(ndr
, NDR_SCALARS
, r
->out
.service_status
));
1619 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_service_status_0
, LIBNDR_FLAG_REF_ALLOC
);
1620 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
1622 return NDR_ERR_SUCCESS
;
1625 _PUBLIC_
void ndr_print_svcctl_QueryServiceStatus(struct ndr_print
*ndr
, const char *name
, int flags
, const struct svcctl_QueryServiceStatus
*r
)
1627 ndr_print_struct(ndr
, name
, "svcctl_QueryServiceStatus");
1629 if (flags
& NDR_SET_VALUES
) {
1630 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
1632 if (flags
& NDR_IN
) {
1633 ndr_print_struct(ndr
, "in", "svcctl_QueryServiceStatus");
1635 ndr_print_ptr(ndr
, "handle", r
->in
.handle
);
1637 ndr_print_policy_handle(ndr
, "handle", r
->in
.handle
);
1641 if (flags
& NDR_OUT
) {
1642 ndr_print_struct(ndr
, "out", "svcctl_QueryServiceStatus");
1644 ndr_print_ptr(ndr
, "service_status", r
->out
.service_status
);
1646 ndr_print_SERVICE_STATUS(ndr
, "service_status", r
->out
.service_status
);
1648 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
1654 static enum ndr_err_code
ndr_push_svcctl_SetServiceStatus(struct ndr_push
*ndr
, int flags
, const struct svcctl_SetServiceStatus
*r
)
1656 if (flags
& NDR_IN
) {
1658 if (flags
& NDR_OUT
) {
1659 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
1661 return NDR_ERR_SUCCESS
;
1664 static enum ndr_err_code
ndr_pull_svcctl_SetServiceStatus(struct ndr_pull
*ndr
, int flags
, struct svcctl_SetServiceStatus
*r
)
1666 if (flags
& NDR_IN
) {
1668 if (flags
& NDR_OUT
) {
1669 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
1671 return NDR_ERR_SUCCESS
;
1674 _PUBLIC_
void ndr_print_svcctl_SetServiceStatus(struct ndr_print
*ndr
, const char *name
, int flags
, const struct svcctl_SetServiceStatus
*r
)
1676 ndr_print_struct(ndr
, name
, "svcctl_SetServiceStatus");
1678 if (flags
& NDR_SET_VALUES
) {
1679 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
1681 if (flags
& NDR_IN
) {
1682 ndr_print_struct(ndr
, "in", "svcctl_SetServiceStatus");
1686 if (flags
& NDR_OUT
) {
1687 ndr_print_struct(ndr
, "out", "svcctl_SetServiceStatus");
1689 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
1695 static enum ndr_err_code
ndr_push_svcctl_UnlockServiceDatabase(struct ndr_push
*ndr
, int flags
, const struct svcctl_UnlockServiceDatabase
*r
)
1697 if (flags
& NDR_IN
) {
1698 if (r
->in
.lock
== NULL
) {
1699 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
1701 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
, r
->in
.lock
));
1703 if (flags
& NDR_OUT
) {
1704 if (r
->out
.lock
== NULL
) {
1705 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
1707 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
, r
->out
.lock
));
1708 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
1710 return NDR_ERR_SUCCESS
;
1713 static enum ndr_err_code
ndr_pull_svcctl_UnlockServiceDatabase(struct ndr_pull
*ndr
, int flags
, struct svcctl_UnlockServiceDatabase
*r
)
1715 TALLOC_CTX
*_mem_save_lock_0
;
1716 if (flags
& NDR_IN
) {
1717 ZERO_STRUCT(r
->out
);
1719 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
1720 NDR_PULL_ALLOC(ndr
, r
->in
.lock
);
1722 _mem_save_lock_0
= NDR_PULL_GET_MEM_CTX(ndr
);
1723 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.lock
, LIBNDR_FLAG_REF_ALLOC
);
1724 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
, r
->in
.lock
));
1725 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_lock_0
, LIBNDR_FLAG_REF_ALLOC
);
1726 NDR_PULL_ALLOC(ndr
, r
->out
.lock
);
1727 *r
->out
.lock
= *r
->in
.lock
;
1729 if (flags
& NDR_OUT
) {
1730 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
1731 NDR_PULL_ALLOC(ndr
, r
->out
.lock
);
1733 _mem_save_lock_0
= NDR_PULL_GET_MEM_CTX(ndr
);
1734 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.lock
, LIBNDR_FLAG_REF_ALLOC
);
1735 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
, r
->out
.lock
));
1736 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_lock_0
, LIBNDR_FLAG_REF_ALLOC
);
1737 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
1739 return NDR_ERR_SUCCESS
;
1742 _PUBLIC_
void ndr_print_svcctl_UnlockServiceDatabase(struct ndr_print
*ndr
, const char *name
, int flags
, const struct svcctl_UnlockServiceDatabase
*r
)
1744 ndr_print_struct(ndr
, name
, "svcctl_UnlockServiceDatabase");
1746 if (flags
& NDR_SET_VALUES
) {
1747 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
1749 if (flags
& NDR_IN
) {
1750 ndr_print_struct(ndr
, "in", "svcctl_UnlockServiceDatabase");
1752 ndr_print_ptr(ndr
, "lock", r
->in
.lock
);
1754 ndr_print_policy_handle(ndr
, "lock", r
->in
.lock
);
1758 if (flags
& NDR_OUT
) {
1759 ndr_print_struct(ndr
, "out", "svcctl_UnlockServiceDatabase");
1761 ndr_print_ptr(ndr
, "lock", r
->out
.lock
);
1763 ndr_print_policy_handle(ndr
, "lock", r
->out
.lock
);
1765 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
1771 static enum ndr_err_code
ndr_push_svcctl_NotifyBootConfigStatus(struct ndr_push
*ndr
, int flags
, const struct svcctl_NotifyBootConfigStatus
*r
)
1773 if (flags
& NDR_IN
) {
1775 if (flags
& NDR_OUT
) {
1776 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
1778 return NDR_ERR_SUCCESS
;
1781 static enum ndr_err_code
ndr_pull_svcctl_NotifyBootConfigStatus(struct ndr_pull
*ndr
, int flags
, struct svcctl_NotifyBootConfigStatus
*r
)
1783 if (flags
& NDR_IN
) {
1785 if (flags
& NDR_OUT
) {
1786 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
1788 return NDR_ERR_SUCCESS
;
1791 _PUBLIC_
void ndr_print_svcctl_NotifyBootConfigStatus(struct ndr_print
*ndr
, const char *name
, int flags
, const struct svcctl_NotifyBootConfigStatus
*r
)
1793 ndr_print_struct(ndr
, name
, "svcctl_NotifyBootConfigStatus");
1795 if (flags
& NDR_SET_VALUES
) {
1796 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
1798 if (flags
& NDR_IN
) {
1799 ndr_print_struct(ndr
, "in", "svcctl_NotifyBootConfigStatus");
1803 if (flags
& NDR_OUT
) {
1804 ndr_print_struct(ndr
, "out", "svcctl_NotifyBootConfigStatus");
1806 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
1812 static enum ndr_err_code
ndr_push_svcctl_SCSetServiceBitsW(struct ndr_push
*ndr
, int flags
, const struct svcctl_SCSetServiceBitsW
*r
)
1814 if (flags
& NDR_IN
) {
1815 if (r
->in
.handle
== NULL
) {
1816 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
1818 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
, r
->in
.handle
));
1819 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.bits
));
1820 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.bitson
));
1821 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.immediate
));
1823 if (flags
& NDR_OUT
) {
1824 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
1826 return NDR_ERR_SUCCESS
;
1829 static enum ndr_err_code
ndr_pull_svcctl_SCSetServiceBitsW(struct ndr_pull
*ndr
, int flags
, struct svcctl_SCSetServiceBitsW
*r
)
1831 TALLOC_CTX
*_mem_save_handle_0
;
1832 if (flags
& NDR_IN
) {
1833 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
1834 NDR_PULL_ALLOC(ndr
, r
->in
.handle
);
1836 _mem_save_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
1837 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.handle
, LIBNDR_FLAG_REF_ALLOC
);
1838 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
, r
->in
.handle
));
1839 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_handle_0
, LIBNDR_FLAG_REF_ALLOC
);
1840 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.bits
));
1841 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.bitson
));
1842 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.immediate
));
1844 if (flags
& NDR_OUT
) {
1845 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
1847 return NDR_ERR_SUCCESS
;
1850 _PUBLIC_
void ndr_print_svcctl_SCSetServiceBitsW(struct ndr_print
*ndr
, const char *name
, int flags
, const struct svcctl_SCSetServiceBitsW
*r
)
1852 ndr_print_struct(ndr
, name
, "svcctl_SCSetServiceBitsW");
1854 if (flags
& NDR_SET_VALUES
) {
1855 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
1857 if (flags
& NDR_IN
) {
1858 ndr_print_struct(ndr
, "in", "svcctl_SCSetServiceBitsW");
1860 ndr_print_ptr(ndr
, "handle", r
->in
.handle
);
1862 ndr_print_policy_handle(ndr
, "handle", r
->in
.handle
);
1864 ndr_print_uint32(ndr
, "bits", r
->in
.bits
);
1865 ndr_print_uint32(ndr
, "bitson", r
->in
.bitson
);
1866 ndr_print_uint32(ndr
, "immediate", r
->in
.immediate
);
1869 if (flags
& NDR_OUT
) {
1870 ndr_print_struct(ndr
, "out", "svcctl_SCSetServiceBitsW");
1872 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
1878 static enum ndr_err_code
ndr_push_svcctl_ChangeServiceConfigW(struct ndr_push
*ndr
, int flags
, const struct svcctl_ChangeServiceConfigW
*r
)
1880 if (flags
& NDR_IN
) {
1881 if (r
->in
.handle
== NULL
) {
1882 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
1884 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
, r
->in
.handle
));
1885 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.type
));
1886 NDR_CHECK(ndr_push_svcctl_StartType(ndr
, NDR_SCALARS
, r
->in
.start_type
));
1887 NDR_CHECK(ndr_push_svcctl_ErrorControl(ndr
, NDR_SCALARS
, r
->in
.error_control
));
1888 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.binary_path
));
1889 if (r
->in
.binary_path
) {
1890 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.binary_path
, CH_UTF16
)));
1891 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, 0));
1892 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.binary_path
, CH_UTF16
)));
1893 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
));
1895 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.load_order_group
));
1896 if (r
->in
.load_order_group
) {
1897 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.load_order_group
, CH_UTF16
)));
1898 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, 0));
1899 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.load_order_group
, CH_UTF16
)));
1900 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
));
1902 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.dependencies
));
1903 if (r
->in
.dependencies
) {
1904 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.dependencies
, CH_UTF16
)));
1905 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, 0));
1906 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.dependencies
, CH_UTF16
)));
1907 NDR_CHECK(ndr_push_charset(ndr
, NDR_SCALARS
, r
->in
.dependencies
, ndr_charset_length(r
->in
.dependencies
, CH_UTF16
), sizeof(uint16_t), CH_UTF16
));
1909 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.service_start_name
));
1910 if (r
->in
.service_start_name
) {
1911 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.service_start_name
, CH_UTF16
)));
1912 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, 0));
1913 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.service_start_name
, CH_UTF16
)));
1914 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
));
1916 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.password
));
1917 if (r
->in
.password
) {
1918 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.password
, CH_UTF16
)));
1919 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, 0));
1920 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.password
, CH_UTF16
)));
1921 NDR_CHECK(ndr_push_charset(ndr
, NDR_SCALARS
, r
->in
.password
, ndr_charset_length(r
->in
.password
, CH_UTF16
), sizeof(uint16_t), CH_UTF16
));
1923 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.display_name
));
1924 if (r
->in
.display_name
) {
1925 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.display_name
, CH_UTF16
)));
1926 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, 0));
1927 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.display_name
, CH_UTF16
)));
1928 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
));
1931 if (flags
& NDR_OUT
) {
1932 if (r
->out
.tag_id
== NULL
) {
1933 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
1935 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, *r
->out
.tag_id
));
1936 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
1938 return NDR_ERR_SUCCESS
;
1941 static enum ndr_err_code
ndr_pull_svcctl_ChangeServiceConfigW(struct ndr_pull
*ndr
, int flags
, struct svcctl_ChangeServiceConfigW
*r
)
1943 uint32_t _ptr_binary_path
;
1944 uint32_t _ptr_load_order_group
;
1945 uint32_t _ptr_dependencies
;
1946 uint32_t _ptr_service_start_name
;
1947 uint32_t _ptr_password
;
1948 uint32_t _ptr_display_name
;
1949 TALLOC_CTX
*_mem_save_handle_0
;
1950 TALLOC_CTX
*_mem_save_binary_path_0
;
1951 TALLOC_CTX
*_mem_save_load_order_group_0
;
1952 TALLOC_CTX
*_mem_save_tag_id_0
;
1953 TALLOC_CTX
*_mem_save_dependencies_0
;
1954 TALLOC_CTX
*_mem_save_service_start_name_0
;
1955 TALLOC_CTX
*_mem_save_password_0
;
1956 TALLOC_CTX
*_mem_save_display_name_0
;
1957 if (flags
& NDR_IN
) {
1958 ZERO_STRUCT(r
->out
);
1960 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
1961 NDR_PULL_ALLOC(ndr
, r
->in
.handle
);
1963 _mem_save_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
1964 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.handle
, LIBNDR_FLAG_REF_ALLOC
);
1965 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
, r
->in
.handle
));
1966 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_handle_0
, LIBNDR_FLAG_REF_ALLOC
);
1967 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.type
));
1968 NDR_CHECK(ndr_pull_svcctl_StartType(ndr
, NDR_SCALARS
, &r
->in
.start_type
));
1969 NDR_CHECK(ndr_pull_svcctl_ErrorControl(ndr
, NDR_SCALARS
, &r
->in
.error_control
));
1970 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_binary_path
));
1971 if (_ptr_binary_path
) {
1972 NDR_PULL_ALLOC(ndr
, r
->in
.binary_path
);
1974 r
->in
.binary_path
= NULL
;
1976 if (r
->in
.binary_path
) {
1977 _mem_save_binary_path_0
= NDR_PULL_GET_MEM_CTX(ndr
);
1978 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.binary_path
, 0);
1979 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->in
.binary_path
));
1980 NDR_CHECK(ndr_pull_array_length(ndr
, &r
->in
.binary_path
));
1981 if (ndr_get_array_length(ndr
, &r
->in
.binary_path
) > ndr_get_array_size(ndr
, &r
->in
.binary_path
)) {
1982 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
));
1984 NDR_CHECK(ndr_check_string_terminator(ndr
, ndr_get_array_length(ndr
, &r
->in
.binary_path
), sizeof(uint16_t)));
1985 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
));
1986 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_binary_path_0
, 0);
1988 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_load_order_group
));
1989 if (_ptr_load_order_group
) {
1990 NDR_PULL_ALLOC(ndr
, r
->in
.load_order_group
);
1992 r
->in
.load_order_group
= NULL
;
1994 if (r
->in
.load_order_group
) {
1995 _mem_save_load_order_group_0
= NDR_PULL_GET_MEM_CTX(ndr
);
1996 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.load_order_group
, 0);
1997 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->in
.load_order_group
));
1998 NDR_CHECK(ndr_pull_array_length(ndr
, &r
->in
.load_order_group
));
1999 if (ndr_get_array_length(ndr
, &r
->in
.load_order_group
) > ndr_get_array_size(ndr
, &r
->in
.load_order_group
)) {
2000 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
));
2002 NDR_CHECK(ndr_check_string_terminator(ndr
, ndr_get_array_length(ndr
, &r
->in
.load_order_group
), sizeof(uint16_t)));
2003 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
));
2004 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_load_order_group_0
, 0);
2006 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_dependencies
));
2007 if (_ptr_dependencies
) {
2008 NDR_PULL_ALLOC(ndr
, r
->in
.dependencies
);
2010 r
->in
.dependencies
= NULL
;
2012 if (r
->in
.dependencies
) {
2013 _mem_save_dependencies_0
= NDR_PULL_GET_MEM_CTX(ndr
);
2014 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.dependencies
, 0);
2015 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->in
.dependencies
));
2016 NDR_CHECK(ndr_pull_array_length(ndr
, &r
->in
.dependencies
));
2017 if (ndr_get_array_length(ndr
, &r
->in
.dependencies
) > ndr_get_array_size(ndr
, &r
->in
.dependencies
)) {
2018 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
));
2020 NDR_CHECK(ndr_check_string_terminator(ndr
, ndr_get_array_length(ndr
, &r
->in
.dependencies
), sizeof(uint16_t)));
2021 NDR_CHECK(ndr_pull_charset(ndr
, NDR_SCALARS
, &r
->in
.dependencies
, ndr_get_array_length(ndr
, &r
->in
.dependencies
), sizeof(uint16_t), CH_UTF16
));
2022 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_dependencies_0
, 0);
2024 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_service_start_name
));
2025 if (_ptr_service_start_name
) {
2026 NDR_PULL_ALLOC(ndr
, r
->in
.service_start_name
);
2028 r
->in
.service_start_name
= NULL
;
2030 if (r
->in
.service_start_name
) {
2031 _mem_save_service_start_name_0
= NDR_PULL_GET_MEM_CTX(ndr
);
2032 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.service_start_name
, 0);
2033 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->in
.service_start_name
));
2034 NDR_CHECK(ndr_pull_array_length(ndr
, &r
->in
.service_start_name
));
2035 if (ndr_get_array_length(ndr
, &r
->in
.service_start_name
) > ndr_get_array_size(ndr
, &r
->in
.service_start_name
)) {
2036 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
));
2038 NDR_CHECK(ndr_check_string_terminator(ndr
, ndr_get_array_length(ndr
, &r
->in
.service_start_name
), sizeof(uint16_t)));
2039 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
));
2040 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_service_start_name_0
, 0);
2042 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_password
));
2043 if (_ptr_password
) {
2044 NDR_PULL_ALLOC(ndr
, r
->in
.password
);
2046 r
->in
.password
= NULL
;
2048 if (r
->in
.password
) {
2049 _mem_save_password_0
= NDR_PULL_GET_MEM_CTX(ndr
);
2050 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.password
, 0);
2051 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->in
.password
));
2052 NDR_CHECK(ndr_pull_array_length(ndr
, &r
->in
.password
));
2053 if (ndr_get_array_length(ndr
, &r
->in
.password
) > ndr_get_array_size(ndr
, &r
->in
.password
)) {
2054 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
));
2056 NDR_CHECK(ndr_check_string_terminator(ndr
, ndr_get_array_length(ndr
, &r
->in
.password
), sizeof(uint16_t)));
2057 NDR_CHECK(ndr_pull_charset(ndr
, NDR_SCALARS
, &r
->in
.password
, ndr_get_array_length(ndr
, &r
->in
.password
), sizeof(uint16_t), CH_UTF16
));
2058 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_password_0
, 0);
2060 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_display_name
));
2061 if (_ptr_display_name
) {
2062 NDR_PULL_ALLOC(ndr
, r
->in
.display_name
);
2064 r
->in
.display_name
= NULL
;
2066 if (r
->in
.display_name
) {
2067 _mem_save_display_name_0
= NDR_PULL_GET_MEM_CTX(ndr
);
2068 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.display_name
, 0);
2069 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->in
.display_name
));
2070 NDR_CHECK(ndr_pull_array_length(ndr
, &r
->in
.display_name
));
2071 if (ndr_get_array_length(ndr
, &r
->in
.display_name
) > ndr_get_array_size(ndr
, &r
->in
.display_name
)) {
2072 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
));
2074 NDR_CHECK(ndr_check_string_terminator(ndr
, ndr_get_array_length(ndr
, &r
->in
.display_name
), sizeof(uint16_t)));
2075 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
));
2076 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_display_name_0
, 0);
2078 NDR_PULL_ALLOC(ndr
, r
->out
.tag_id
);
2079 ZERO_STRUCTP(r
->out
.tag_id
);
2081 if (flags
& NDR_OUT
) {
2082 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
2083 NDR_PULL_ALLOC(ndr
, r
->out
.tag_id
);
2085 _mem_save_tag_id_0
= NDR_PULL_GET_MEM_CTX(ndr
);
2086 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.tag_id
, LIBNDR_FLAG_REF_ALLOC
);
2087 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, r
->out
.tag_id
));
2088 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_tag_id_0
, LIBNDR_FLAG_REF_ALLOC
);
2089 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
2091 return NDR_ERR_SUCCESS
;
2094 _PUBLIC_
void ndr_print_svcctl_ChangeServiceConfigW(struct ndr_print
*ndr
, const char *name
, int flags
, const struct svcctl_ChangeServiceConfigW
*r
)
2096 ndr_print_struct(ndr
, name
, "svcctl_ChangeServiceConfigW");
2098 if (flags
& NDR_SET_VALUES
) {
2099 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
2101 if (flags
& NDR_IN
) {
2102 ndr_print_struct(ndr
, "in", "svcctl_ChangeServiceConfigW");
2104 ndr_print_ptr(ndr
, "handle", r
->in
.handle
);
2106 ndr_print_policy_handle(ndr
, "handle", r
->in
.handle
);
2108 ndr_print_uint32(ndr
, "type", r
->in
.type
);
2109 ndr_print_svcctl_StartType(ndr
, "start_type", r
->in
.start_type
);
2110 ndr_print_svcctl_ErrorControl(ndr
, "error_control", r
->in
.error_control
);
2111 ndr_print_ptr(ndr
, "binary_path", r
->in
.binary_path
);
2113 if (r
->in
.binary_path
) {
2114 ndr_print_string(ndr
, "binary_path", r
->in
.binary_path
);
2117 ndr_print_ptr(ndr
, "load_order_group", r
->in
.load_order_group
);
2119 if (r
->in
.load_order_group
) {
2120 ndr_print_string(ndr
, "load_order_group", r
->in
.load_order_group
);
2123 ndr_print_ptr(ndr
, "dependencies", r
->in
.dependencies
);
2125 if (r
->in
.dependencies
) {
2126 ndr_print_string(ndr
, "dependencies", r
->in
.dependencies
);
2129 ndr_print_ptr(ndr
, "service_start_name", r
->in
.service_start_name
);
2131 if (r
->in
.service_start_name
) {
2132 ndr_print_string(ndr
, "service_start_name", r
->in
.service_start_name
);
2135 ndr_print_ptr(ndr
, "password", r
->in
.password
);
2137 if (r
->in
.password
) {
2138 ndr_print_string(ndr
, "password", r
->in
.password
);
2141 ndr_print_ptr(ndr
, "display_name", r
->in
.display_name
);
2143 if (r
->in
.display_name
) {
2144 ndr_print_string(ndr
, "display_name", r
->in
.display_name
);
2149 if (flags
& NDR_OUT
) {
2150 ndr_print_struct(ndr
, "out", "svcctl_ChangeServiceConfigW");
2152 ndr_print_ptr(ndr
, "tag_id", r
->out
.tag_id
);
2154 ndr_print_uint32(ndr
, "tag_id", *r
->out
.tag_id
);
2156 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
2162 static enum ndr_err_code
ndr_push_svcctl_CreateServiceW(struct ndr_push
*ndr
, int flags
, const struct svcctl_CreateServiceW
*r
)
2164 if (flags
& NDR_IN
) {
2165 if (r
->in
.scmanager_handle
== NULL
) {
2166 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
2168 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
, r
->in
.scmanager_handle
));
2169 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.ServiceName
, CH_UTF16
)));
2170 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, 0));
2171 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.ServiceName
, CH_UTF16
)));
2172 NDR_CHECK(ndr_push_charset(ndr
, NDR_SCALARS
, r
->in
.ServiceName
, ndr_charset_length(r
->in
.ServiceName
, CH_UTF16
), sizeof(uint16_t), CH_UTF16
));
2173 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.DisplayName
));
2174 if (r
->in
.DisplayName
) {
2175 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.DisplayName
, CH_UTF16
)));
2176 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, 0));
2177 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.DisplayName
, CH_UTF16
)));
2178 NDR_CHECK(ndr_push_charset(ndr
, NDR_SCALARS
, r
->in
.DisplayName
, ndr_charset_length(r
->in
.DisplayName
, CH_UTF16
), sizeof(uint16_t), CH_UTF16
));
2180 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.desired_access
));
2181 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.type
));
2182 NDR_CHECK(ndr_push_svcctl_StartType(ndr
, NDR_SCALARS
, r
->in
.start_type
));
2183 NDR_CHECK(ndr_push_svcctl_ErrorControl(ndr
, NDR_SCALARS
, r
->in
.error_control
));
2184 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.binary_path
, CH_UTF16
)));
2185 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, 0));
2186 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.binary_path
, CH_UTF16
)));
2187 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
));
2188 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.LoadOrderGroupKey
));
2189 if (r
->in
.LoadOrderGroupKey
) {
2190 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.LoadOrderGroupKey
, CH_UTF16
)));
2191 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, 0));
2192 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.LoadOrderGroupKey
, CH_UTF16
)));
2193 NDR_CHECK(ndr_push_charset(ndr
, NDR_SCALARS
, r
->in
.LoadOrderGroupKey
, ndr_charset_length(r
->in
.LoadOrderGroupKey
, CH_UTF16
), sizeof(uint16_t), CH_UTF16
));
2195 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.TagId
));
2197 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, *r
->in
.TagId
));
2199 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.dependencies
));
2200 if (r
->in
.dependencies
) {
2201 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.dependencies_size
));
2202 NDR_CHECK(ndr_push_array_uint8(ndr
, NDR_SCALARS
, r
->in
.dependencies
, r
->in
.dependencies_size
));
2204 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.dependencies_size
));
2205 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.service_start_name
));
2206 if (r
->in
.service_start_name
) {
2207 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.service_start_name
, CH_UTF16
)));
2208 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, 0));
2209 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.service_start_name
, CH_UTF16
)));
2210 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
));
2212 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.password
));
2213 if (r
->in
.password
) {
2214 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.password_size
));
2215 NDR_CHECK(ndr_push_array_uint8(ndr
, NDR_SCALARS
, r
->in
.password
, r
->in
.password_size
));
2217 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.password_size
));
2219 if (flags
& NDR_OUT
) {
2220 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->out
.TagId
));
2222 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, *r
->out
.TagId
));
2224 if (r
->out
.handle
== NULL
) {
2225 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
2227 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
, r
->out
.handle
));
2228 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
2230 return NDR_ERR_SUCCESS
;
2233 static enum ndr_err_code
ndr_pull_svcctl_CreateServiceW(struct ndr_pull
*ndr
, int flags
, struct svcctl_CreateServiceW
*r
)
2235 uint32_t _ptr_DisplayName
;
2236 uint32_t _ptr_LoadOrderGroupKey
;
2237 uint32_t _ptr_TagId
;
2238 uint32_t _ptr_dependencies
;
2239 uint32_t _ptr_service_start_name
;
2240 uint32_t _ptr_password
;
2241 TALLOC_CTX
*_mem_save_scmanager_handle_0
;
2242 TALLOC_CTX
*_mem_save_DisplayName_0
;
2243 TALLOC_CTX
*_mem_save_LoadOrderGroupKey_0
;
2244 TALLOC_CTX
*_mem_save_TagId_0
;
2245 TALLOC_CTX
*_mem_save_dependencies_0
;
2246 TALLOC_CTX
*_mem_save_service_start_name_0
;
2247 TALLOC_CTX
*_mem_save_password_0
;
2248 TALLOC_CTX
*_mem_save_handle_0
;
2249 if (flags
& NDR_IN
) {
2250 ZERO_STRUCT(r
->out
);
2252 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
2253 NDR_PULL_ALLOC(ndr
, r
->in
.scmanager_handle
);
2255 _mem_save_scmanager_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
2256 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.scmanager_handle
, LIBNDR_FLAG_REF_ALLOC
);
2257 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
, r
->in
.scmanager_handle
));
2258 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_scmanager_handle_0
, LIBNDR_FLAG_REF_ALLOC
);
2259 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->in
.ServiceName
));
2260 NDR_CHECK(ndr_pull_array_length(ndr
, &r
->in
.ServiceName
));
2261 if (ndr_get_array_length(ndr
, &r
->in
.ServiceName
) > ndr_get_array_size(ndr
, &r
->in
.ServiceName
)) {
2262 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
));
2264 NDR_CHECK(ndr_check_string_terminator(ndr
, ndr_get_array_length(ndr
, &r
->in
.ServiceName
), sizeof(uint16_t)));
2265 NDR_CHECK(ndr_pull_charset(ndr
, NDR_SCALARS
, &r
->in
.ServiceName
, ndr_get_array_length(ndr
, &r
->in
.ServiceName
), sizeof(uint16_t), CH_UTF16
));
2266 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_DisplayName
));
2267 if (_ptr_DisplayName
) {
2268 NDR_PULL_ALLOC(ndr
, r
->in
.DisplayName
);
2270 r
->in
.DisplayName
= NULL
;
2272 if (r
->in
.DisplayName
) {
2273 _mem_save_DisplayName_0
= NDR_PULL_GET_MEM_CTX(ndr
);
2274 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.DisplayName
, 0);
2275 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->in
.DisplayName
));
2276 NDR_CHECK(ndr_pull_array_length(ndr
, &r
->in
.DisplayName
));
2277 if (ndr_get_array_length(ndr
, &r
->in
.DisplayName
) > ndr_get_array_size(ndr
, &r
->in
.DisplayName
)) {
2278 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
));
2280 NDR_CHECK(ndr_check_string_terminator(ndr
, ndr_get_array_length(ndr
, &r
->in
.DisplayName
), sizeof(uint16_t)));
2281 NDR_CHECK(ndr_pull_charset(ndr
, NDR_SCALARS
, &r
->in
.DisplayName
, ndr_get_array_length(ndr
, &r
->in
.DisplayName
), sizeof(uint16_t), CH_UTF16
));
2282 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_DisplayName_0
, 0);
2284 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.desired_access
));
2285 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.type
));
2286 NDR_CHECK(ndr_pull_svcctl_StartType(ndr
, NDR_SCALARS
, &r
->in
.start_type
));
2287 NDR_CHECK(ndr_pull_svcctl_ErrorControl(ndr
, NDR_SCALARS
, &r
->in
.error_control
));
2288 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->in
.binary_path
));
2289 NDR_CHECK(ndr_pull_array_length(ndr
, &r
->in
.binary_path
));
2290 if (ndr_get_array_length(ndr
, &r
->in
.binary_path
) > ndr_get_array_size(ndr
, &r
->in
.binary_path
)) {
2291 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
));
2293 NDR_CHECK(ndr_check_string_terminator(ndr
, ndr_get_array_length(ndr
, &r
->in
.binary_path
), sizeof(uint16_t)));
2294 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
));
2295 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_LoadOrderGroupKey
));
2296 if (_ptr_LoadOrderGroupKey
) {
2297 NDR_PULL_ALLOC(ndr
, r
->in
.LoadOrderGroupKey
);
2299 r
->in
.LoadOrderGroupKey
= NULL
;
2301 if (r
->in
.LoadOrderGroupKey
) {
2302 _mem_save_LoadOrderGroupKey_0
= NDR_PULL_GET_MEM_CTX(ndr
);
2303 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.LoadOrderGroupKey
, 0);
2304 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->in
.LoadOrderGroupKey
));
2305 NDR_CHECK(ndr_pull_array_length(ndr
, &r
->in
.LoadOrderGroupKey
));
2306 if (ndr_get_array_length(ndr
, &r
->in
.LoadOrderGroupKey
) > ndr_get_array_size(ndr
, &r
->in
.LoadOrderGroupKey
)) {
2307 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
));
2309 NDR_CHECK(ndr_check_string_terminator(ndr
, ndr_get_array_length(ndr
, &r
->in
.LoadOrderGroupKey
), sizeof(uint16_t)));
2310 NDR_CHECK(ndr_pull_charset(ndr
, NDR_SCALARS
, &r
->in
.LoadOrderGroupKey
, ndr_get_array_length(ndr
, &r
->in
.LoadOrderGroupKey
), sizeof(uint16_t), CH_UTF16
));
2311 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_LoadOrderGroupKey_0
, 0);
2313 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_TagId
));
2315 NDR_PULL_ALLOC(ndr
, r
->in
.TagId
);
2320 _mem_save_TagId_0
= NDR_PULL_GET_MEM_CTX(ndr
);
2321 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.TagId
, 0);
2322 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, r
->in
.TagId
));
2323 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_TagId_0
, 0);
2325 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_dependencies
));
2326 if (_ptr_dependencies
) {
2327 NDR_PULL_ALLOC(ndr
, r
->in
.dependencies
);
2329 r
->in
.dependencies
= NULL
;
2331 if (r
->in
.dependencies
) {
2332 _mem_save_dependencies_0
= NDR_PULL_GET_MEM_CTX(ndr
);
2333 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.dependencies
, 0);
2334 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->in
.dependencies
));
2335 NDR_PULL_ALLOC_N(ndr
, r
->in
.dependencies
, ndr_get_array_size(ndr
, &r
->in
.dependencies
));
2336 NDR_CHECK(ndr_pull_array_uint8(ndr
, NDR_SCALARS
, r
->in
.dependencies
, ndr_get_array_size(ndr
, &r
->in
.dependencies
)));
2337 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_dependencies_0
, 0);
2339 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.dependencies_size
));
2340 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_service_start_name
));
2341 if (_ptr_service_start_name
) {
2342 NDR_PULL_ALLOC(ndr
, r
->in
.service_start_name
);
2344 r
->in
.service_start_name
= NULL
;
2346 if (r
->in
.service_start_name
) {
2347 _mem_save_service_start_name_0
= NDR_PULL_GET_MEM_CTX(ndr
);
2348 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.service_start_name
, 0);
2349 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->in
.service_start_name
));
2350 NDR_CHECK(ndr_pull_array_length(ndr
, &r
->in
.service_start_name
));
2351 if (ndr_get_array_length(ndr
, &r
->in
.service_start_name
) > ndr_get_array_size(ndr
, &r
->in
.service_start_name
)) {
2352 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
));
2354 NDR_CHECK(ndr_check_string_terminator(ndr
, ndr_get_array_length(ndr
, &r
->in
.service_start_name
), sizeof(uint16_t)));
2355 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
));
2356 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_service_start_name_0
, 0);
2358 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_password
));
2359 if (_ptr_password
) {
2360 NDR_PULL_ALLOC(ndr
, r
->in
.password
);
2362 r
->in
.password
= NULL
;
2364 if (r
->in
.password
) {
2365 _mem_save_password_0
= NDR_PULL_GET_MEM_CTX(ndr
);
2366 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.password
, 0);
2367 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->in
.password
));
2368 NDR_PULL_ALLOC_N(ndr
, r
->in
.password
, ndr_get_array_size(ndr
, &r
->in
.password
));
2369 NDR_CHECK(ndr_pull_array_uint8(ndr
, NDR_SCALARS
, r
->in
.password
, ndr_get_array_size(ndr
, &r
->in
.password
)));
2370 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_password_0
, 0);
2372 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.password_size
));
2373 NDR_PULL_ALLOC(ndr
, r
->out
.handle
);
2374 ZERO_STRUCTP(r
->out
.handle
);
2375 if (r
->in
.dependencies
) {
2376 NDR_CHECK(ndr_check_array_size(ndr
, (void*)&r
->in
.dependencies
, r
->in
.dependencies_size
));
2378 if (r
->in
.password
) {
2379 NDR_CHECK(ndr_check_array_size(ndr
, (void*)&r
->in
.password
, r
->in
.password_size
));
2382 if (flags
& NDR_OUT
) {
2383 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_TagId
));
2385 NDR_PULL_ALLOC(ndr
, r
->out
.TagId
);
2387 r
->out
.TagId
= NULL
;
2390 _mem_save_TagId_0
= NDR_PULL_GET_MEM_CTX(ndr
);
2391 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.TagId
, 0);
2392 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, r
->out
.TagId
));
2393 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_TagId_0
, 0);
2395 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
2396 NDR_PULL_ALLOC(ndr
, r
->out
.handle
);
2398 _mem_save_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
2399 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.handle
, LIBNDR_FLAG_REF_ALLOC
);
2400 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
, r
->out
.handle
));
2401 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_handle_0
, LIBNDR_FLAG_REF_ALLOC
);
2402 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
2404 return NDR_ERR_SUCCESS
;
2407 _PUBLIC_
void ndr_print_svcctl_CreateServiceW(struct ndr_print
*ndr
, const char *name
, int flags
, const struct svcctl_CreateServiceW
*r
)
2409 ndr_print_struct(ndr
, name
, "svcctl_CreateServiceW");
2411 if (flags
& NDR_SET_VALUES
) {
2412 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
2414 if (flags
& NDR_IN
) {
2415 ndr_print_struct(ndr
, "in", "svcctl_CreateServiceW");
2417 ndr_print_ptr(ndr
, "scmanager_handle", r
->in
.scmanager_handle
);
2419 ndr_print_policy_handle(ndr
, "scmanager_handle", r
->in
.scmanager_handle
);
2421 ndr_print_string(ndr
, "ServiceName", r
->in
.ServiceName
);
2422 ndr_print_ptr(ndr
, "DisplayName", r
->in
.DisplayName
);
2424 if (r
->in
.DisplayName
) {
2425 ndr_print_string(ndr
, "DisplayName", r
->in
.DisplayName
);
2428 ndr_print_uint32(ndr
, "desired_access", r
->in
.desired_access
);
2429 ndr_print_uint32(ndr
, "type", r
->in
.type
);
2430 ndr_print_svcctl_StartType(ndr
, "start_type", r
->in
.start_type
);
2431 ndr_print_svcctl_ErrorControl(ndr
, "error_control", r
->in
.error_control
);
2432 ndr_print_string(ndr
, "binary_path", r
->in
.binary_path
);
2433 ndr_print_ptr(ndr
, "LoadOrderGroupKey", r
->in
.LoadOrderGroupKey
);
2435 if (r
->in
.LoadOrderGroupKey
) {
2436 ndr_print_string(ndr
, "LoadOrderGroupKey", r
->in
.LoadOrderGroupKey
);
2439 ndr_print_ptr(ndr
, "TagId", r
->in
.TagId
);
2442 ndr_print_uint32(ndr
, "TagId", *r
->in
.TagId
);
2445 ndr_print_ptr(ndr
, "dependencies", r
->in
.dependencies
);
2447 if (r
->in
.dependencies
) {
2448 ndr_print_array_uint8(ndr
, "dependencies", r
->in
.dependencies
, r
->in
.dependencies_size
);
2451 ndr_print_uint32(ndr
, "dependencies_size", r
->in
.dependencies_size
);
2452 ndr_print_ptr(ndr
, "service_start_name", r
->in
.service_start_name
);
2454 if (r
->in
.service_start_name
) {
2455 ndr_print_string(ndr
, "service_start_name", r
->in
.service_start_name
);
2458 ndr_print_ptr(ndr
, "password", r
->in
.password
);
2460 if (r
->in
.password
) {
2461 ndr_print_array_uint8(ndr
, "password", r
->in
.password
, r
->in
.password_size
);
2464 ndr_print_uint32(ndr
, "password_size", r
->in
.password_size
);
2467 if (flags
& NDR_OUT
) {
2468 ndr_print_struct(ndr
, "out", "svcctl_CreateServiceW");
2470 ndr_print_ptr(ndr
, "TagId", r
->out
.TagId
);
2473 ndr_print_uint32(ndr
, "TagId", *r
->out
.TagId
);
2476 ndr_print_ptr(ndr
, "handle", r
->out
.handle
);
2478 ndr_print_policy_handle(ndr
, "handle", r
->out
.handle
);
2480 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
2486 static enum ndr_err_code
ndr_push_svcctl_EnumDependentServicesW(struct ndr_push
*ndr
, int flags
, const struct svcctl_EnumDependentServicesW
*r
)
2488 if (flags
& NDR_IN
) {
2489 if (r
->in
.service
== NULL
) {
2490 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
2492 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
, r
->in
.service
));
2493 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.state
));
2494 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.buf_size
));
2496 if (flags
& NDR_OUT
) {
2497 if (r
->out
.service_status
== NULL
) {
2498 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
2500 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.buf_size
));
2501 NDR_CHECK(ndr_push_array_uint8(ndr
, NDR_SCALARS
, r
->out
.service_status
, r
->in
.buf_size
));
2502 if (r
->out
.bytes_needed
== NULL
) {
2503 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
2505 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, *r
->out
.bytes_needed
));
2506 if (r
->out
.services_returned
== NULL
) {
2507 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
2509 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, *r
->out
.services_returned
));
2510 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
2512 return NDR_ERR_SUCCESS
;
2515 static enum ndr_err_code
ndr_pull_svcctl_EnumDependentServicesW(struct ndr_pull
*ndr
, int flags
, struct svcctl_EnumDependentServicesW
*r
)
2517 TALLOC_CTX
*_mem_save_service_0
;
2518 TALLOC_CTX
*_mem_save_bytes_needed_0
;
2519 TALLOC_CTX
*_mem_save_services_returned_0
;
2520 if (flags
& NDR_IN
) {
2521 ZERO_STRUCT(r
->out
);
2523 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
2524 NDR_PULL_ALLOC(ndr
, r
->in
.service
);
2526 _mem_save_service_0
= NDR_PULL_GET_MEM_CTX(ndr
);
2527 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.service
, LIBNDR_FLAG_REF_ALLOC
);
2528 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
, r
->in
.service
));
2529 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_service_0
, LIBNDR_FLAG_REF_ALLOC
);
2530 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.state
));
2531 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.buf_size
));
2532 if (r
->in
.buf_size
< 0 || r
->in
.buf_size
> 0x40000) {
2533 return ndr_pull_error(ndr
, NDR_ERR_RANGE
, "value out of range");
2535 NDR_PULL_ALLOC_N(ndr
, r
->out
.service_status
, r
->in
.buf_size
);
2536 memset(CONST_DISCARD(struct svcctl_EnumDependentServicesW
*,r
->out
.service_status
), 0, (r
->in
.buf_size
) * sizeof(*r
->out
.service_status
));
2537 NDR_PULL_ALLOC(ndr
, r
->out
.bytes_needed
);
2538 ZERO_STRUCTP(r
->out
.bytes_needed
);
2539 NDR_PULL_ALLOC(ndr
, r
->out
.services_returned
);
2540 ZERO_STRUCTP(r
->out
.services_returned
);
2542 if (flags
& NDR_OUT
) {
2543 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->out
.service_status
));
2544 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
2545 NDR_PULL_ALLOC_N(ndr
, r
->out
.service_status
, ndr_get_array_size(ndr
, &r
->out
.service_status
));
2547 NDR_CHECK(ndr_pull_array_uint8(ndr
, NDR_SCALARS
, r
->out
.service_status
, ndr_get_array_size(ndr
, &r
->out
.service_status
)));
2548 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
2549 NDR_PULL_ALLOC(ndr
, r
->out
.bytes_needed
);
2551 _mem_save_bytes_needed_0
= NDR_PULL_GET_MEM_CTX(ndr
);
2552 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.bytes_needed
, LIBNDR_FLAG_REF_ALLOC
);
2553 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, r
->out
.bytes_needed
));
2554 if (*r
->out
.bytes_needed
< 0 || *r
->out
.bytes_needed
> 0x40000) {
2555 return ndr_pull_error(ndr
, NDR_ERR_RANGE
, "value out of range");
2557 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_bytes_needed_0
, LIBNDR_FLAG_REF_ALLOC
);
2558 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
2559 NDR_PULL_ALLOC(ndr
, r
->out
.services_returned
);
2561 _mem_save_services_returned_0
= NDR_PULL_GET_MEM_CTX(ndr
);
2562 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.services_returned
, LIBNDR_FLAG_REF_ALLOC
);
2563 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, r
->out
.services_returned
));
2564 if (*r
->out
.services_returned
< 0 || *r
->out
.services_returned
> 0x40000) {
2565 return ndr_pull_error(ndr
, NDR_ERR_RANGE
, "value out of range");
2567 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_services_returned_0
, LIBNDR_FLAG_REF_ALLOC
);
2568 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
2569 if (r
->out
.service_status
) {
2570 NDR_CHECK(ndr_check_array_size(ndr
, (void*)&r
->out
.service_status
, r
->in
.buf_size
));
2573 return NDR_ERR_SUCCESS
;
2576 _PUBLIC_
void ndr_print_svcctl_EnumDependentServicesW(struct ndr_print
*ndr
, const char *name
, int flags
, const struct svcctl_EnumDependentServicesW
*r
)
2578 ndr_print_struct(ndr
, name
, "svcctl_EnumDependentServicesW");
2580 if (flags
& NDR_SET_VALUES
) {
2581 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
2583 if (flags
& NDR_IN
) {
2584 ndr_print_struct(ndr
, "in", "svcctl_EnumDependentServicesW");
2586 ndr_print_ptr(ndr
, "service", r
->in
.service
);
2588 ndr_print_policy_handle(ndr
, "service", r
->in
.service
);
2590 ndr_print_uint32(ndr
, "state", r
->in
.state
);
2591 ndr_print_uint32(ndr
, "buf_size", r
->in
.buf_size
);
2594 if (flags
& NDR_OUT
) {
2595 ndr_print_struct(ndr
, "out", "svcctl_EnumDependentServicesW");
2597 ndr_print_ptr(ndr
, "service_status", r
->out
.service_status
);
2599 ndr_print_array_uint8(ndr
, "service_status", r
->out
.service_status
, r
->in
.buf_size
);
2601 ndr_print_ptr(ndr
, "bytes_needed", r
->out
.bytes_needed
);
2603 ndr_print_uint32(ndr
, "bytes_needed", *r
->out
.bytes_needed
);
2605 ndr_print_ptr(ndr
, "services_returned", r
->out
.services_returned
);
2607 ndr_print_uint32(ndr
, "services_returned", *r
->out
.services_returned
);
2609 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
2615 static enum ndr_err_code
ndr_push_svcctl_EnumServicesStatusW(struct ndr_push
*ndr
, int flags
, const struct svcctl_EnumServicesStatusW
*r
)
2617 if (flags
& NDR_IN
) {
2618 if (r
->in
.handle
== NULL
) {
2619 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
2621 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
, r
->in
.handle
));
2622 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.type
));
2623 NDR_CHECK(ndr_push_svcctl_ServiceState(ndr
, NDR_SCALARS
, r
->in
.state
));
2624 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.buf_size
));
2625 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.resume_handle
));
2626 if (r
->in
.resume_handle
) {
2627 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, *r
->in
.resume_handle
));
2630 if (flags
& NDR_OUT
) {
2631 if (r
->out
.service
== NULL
) {
2632 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
2634 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.buf_size
));
2635 NDR_CHECK(ndr_push_array_uint8(ndr
, NDR_SCALARS
, r
->out
.service
, r
->in
.buf_size
));
2636 if (r
->out
.bytes_needed
== NULL
) {
2637 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
2639 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, *r
->out
.bytes_needed
));
2640 if (r
->out
.services_returned
== NULL
) {
2641 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
2643 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, *r
->out
.services_returned
));
2644 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->out
.resume_handle
));
2645 if (r
->out
.resume_handle
) {
2646 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, *r
->out
.resume_handle
));
2648 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
2650 return NDR_ERR_SUCCESS
;
2653 static enum ndr_err_code
ndr_pull_svcctl_EnumServicesStatusW(struct ndr_pull
*ndr
, int flags
, struct svcctl_EnumServicesStatusW
*r
)
2655 uint32_t _ptr_resume_handle
;
2656 TALLOC_CTX
*_mem_save_handle_0
;
2657 TALLOC_CTX
*_mem_save_bytes_needed_0
;
2658 TALLOC_CTX
*_mem_save_services_returned_0
;
2659 TALLOC_CTX
*_mem_save_resume_handle_0
;
2660 if (flags
& NDR_IN
) {
2661 ZERO_STRUCT(r
->out
);
2663 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
2664 NDR_PULL_ALLOC(ndr
, r
->in
.handle
);
2666 _mem_save_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
2667 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.handle
, LIBNDR_FLAG_REF_ALLOC
);
2668 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
, r
->in
.handle
));
2669 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_handle_0
, LIBNDR_FLAG_REF_ALLOC
);
2670 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.type
));
2671 NDR_CHECK(ndr_pull_svcctl_ServiceState(ndr
, NDR_SCALARS
, &r
->in
.state
));
2672 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.buf_size
));
2673 if (r
->in
.buf_size
< 0 || r
->in
.buf_size
> 262144) {
2674 return ndr_pull_error(ndr
, NDR_ERR_RANGE
, "value out of range");
2676 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_resume_handle
));
2677 if (_ptr_resume_handle
) {
2678 NDR_PULL_ALLOC(ndr
, r
->in
.resume_handle
);
2680 r
->in
.resume_handle
= NULL
;
2682 if (r
->in
.resume_handle
) {
2683 _mem_save_resume_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
2684 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.resume_handle
, 0);
2685 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, r
->in
.resume_handle
));
2686 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_resume_handle_0
, 0);
2688 NDR_PULL_ALLOC_N(ndr
, r
->out
.service
, r
->in
.buf_size
);
2689 memset(CONST_DISCARD(struct svcctl_EnumServicesStatusW
*,r
->out
.service
), 0, (r
->in
.buf_size
) * sizeof(*r
->out
.service
));
2690 NDR_PULL_ALLOC(ndr
, r
->out
.bytes_needed
);
2691 ZERO_STRUCTP(r
->out
.bytes_needed
);
2692 NDR_PULL_ALLOC(ndr
, r
->out
.services_returned
);
2693 ZERO_STRUCTP(r
->out
.services_returned
);
2695 if (flags
& NDR_OUT
) {
2696 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->out
.service
));
2697 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
2698 NDR_PULL_ALLOC_N(ndr
, r
->out
.service
, ndr_get_array_size(ndr
, &r
->out
.service
));
2700 NDR_CHECK(ndr_pull_array_uint8(ndr
, NDR_SCALARS
, r
->out
.service
, ndr_get_array_size(ndr
, &r
->out
.service
)));
2701 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
2702 NDR_PULL_ALLOC(ndr
, r
->out
.bytes_needed
);
2704 _mem_save_bytes_needed_0
= NDR_PULL_GET_MEM_CTX(ndr
);
2705 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.bytes_needed
, LIBNDR_FLAG_REF_ALLOC
);
2706 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, r
->out
.bytes_needed
));
2707 if (*r
->out
.bytes_needed
< 0 || *r
->out
.bytes_needed
> 262144) {
2708 return ndr_pull_error(ndr
, NDR_ERR_RANGE
, "value out of range");
2710 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_bytes_needed_0
, LIBNDR_FLAG_REF_ALLOC
);
2711 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
2712 NDR_PULL_ALLOC(ndr
, r
->out
.services_returned
);
2714 _mem_save_services_returned_0
= NDR_PULL_GET_MEM_CTX(ndr
);
2715 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.services_returned
, LIBNDR_FLAG_REF_ALLOC
);
2716 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, r
->out
.services_returned
));
2717 if (*r
->out
.services_returned
< 0 || *r
->out
.services_returned
> 262144) {
2718 return ndr_pull_error(ndr
, NDR_ERR_RANGE
, "value out of range");
2720 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_services_returned_0
, LIBNDR_FLAG_REF_ALLOC
);
2721 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_resume_handle
));
2722 if (_ptr_resume_handle
) {
2723 NDR_PULL_ALLOC(ndr
, r
->out
.resume_handle
);
2725 r
->out
.resume_handle
= NULL
;
2727 if (r
->out
.resume_handle
) {
2728 _mem_save_resume_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
2729 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.resume_handle
, 0);
2730 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, r
->out
.resume_handle
));
2731 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_resume_handle_0
, 0);
2733 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
2734 if (r
->out
.service
) {
2735 NDR_CHECK(ndr_check_array_size(ndr
, (void*)&r
->out
.service
, r
->in
.buf_size
));
2738 return NDR_ERR_SUCCESS
;
2741 _PUBLIC_
void ndr_print_svcctl_EnumServicesStatusW(struct ndr_print
*ndr
, const char *name
, int flags
, const struct svcctl_EnumServicesStatusW
*r
)
2743 ndr_print_struct(ndr
, name
, "svcctl_EnumServicesStatusW");
2745 if (flags
& NDR_SET_VALUES
) {
2746 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
2748 if (flags
& NDR_IN
) {
2749 ndr_print_struct(ndr
, "in", "svcctl_EnumServicesStatusW");
2751 ndr_print_ptr(ndr
, "handle", r
->in
.handle
);
2753 ndr_print_policy_handle(ndr
, "handle", r
->in
.handle
);
2755 ndr_print_uint32(ndr
, "type", r
->in
.type
);
2756 ndr_print_svcctl_ServiceState(ndr
, "state", r
->in
.state
);
2757 ndr_print_uint32(ndr
, "buf_size", r
->in
.buf_size
);
2758 ndr_print_ptr(ndr
, "resume_handle", r
->in
.resume_handle
);
2760 if (r
->in
.resume_handle
) {
2761 ndr_print_uint32(ndr
, "resume_handle", *r
->in
.resume_handle
);
2766 if (flags
& NDR_OUT
) {
2767 ndr_print_struct(ndr
, "out", "svcctl_EnumServicesStatusW");
2769 ndr_print_ptr(ndr
, "service", r
->out
.service
);
2771 ndr_print_array_uint8(ndr
, "service", r
->out
.service
, r
->in
.buf_size
);
2773 ndr_print_ptr(ndr
, "bytes_needed", r
->out
.bytes_needed
);
2775 ndr_print_uint32(ndr
, "bytes_needed", *r
->out
.bytes_needed
);
2777 ndr_print_ptr(ndr
, "services_returned", r
->out
.services_returned
);
2779 ndr_print_uint32(ndr
, "services_returned", *r
->out
.services_returned
);
2781 ndr_print_ptr(ndr
, "resume_handle", r
->out
.resume_handle
);
2783 if (r
->out
.resume_handle
) {
2784 ndr_print_uint32(ndr
, "resume_handle", *r
->out
.resume_handle
);
2787 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
2793 static enum ndr_err_code
ndr_push_svcctl_OpenSCManagerW(struct ndr_push
*ndr
, int flags
, const struct svcctl_OpenSCManagerW
*r
)
2795 if (flags
& NDR_IN
) {
2796 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.MachineName
));
2797 if (r
->in
.MachineName
) {
2798 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.MachineName
, CH_UTF16
)));
2799 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, 0));
2800 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.MachineName
, CH_UTF16
)));
2801 NDR_CHECK(ndr_push_charset(ndr
, NDR_SCALARS
, r
->in
.MachineName
, ndr_charset_length(r
->in
.MachineName
, CH_UTF16
), sizeof(uint16_t), CH_UTF16
));
2803 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.DatabaseName
));
2804 if (r
->in
.DatabaseName
) {
2805 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.DatabaseName
, CH_UTF16
)));
2806 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, 0));
2807 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.DatabaseName
, CH_UTF16
)));
2808 NDR_CHECK(ndr_push_charset(ndr
, NDR_SCALARS
, r
->in
.DatabaseName
, ndr_charset_length(r
->in
.DatabaseName
, CH_UTF16
), sizeof(uint16_t), CH_UTF16
));
2810 NDR_CHECK(ndr_push_svcctl_MgrAccessMask(ndr
, NDR_SCALARS
, r
->in
.access_mask
));
2812 if (flags
& NDR_OUT
) {
2813 if (r
->out
.handle
== NULL
) {
2814 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
2816 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
, r
->out
.handle
));
2817 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
2819 return NDR_ERR_SUCCESS
;
2822 static enum ndr_err_code
ndr_pull_svcctl_OpenSCManagerW(struct ndr_pull
*ndr
, int flags
, struct svcctl_OpenSCManagerW
*r
)
2824 uint32_t _ptr_MachineName
;
2825 uint32_t _ptr_DatabaseName
;
2826 TALLOC_CTX
*_mem_save_MachineName_0
;
2827 TALLOC_CTX
*_mem_save_DatabaseName_0
;
2828 TALLOC_CTX
*_mem_save_handle_0
;
2829 if (flags
& NDR_IN
) {
2830 ZERO_STRUCT(r
->out
);
2832 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_MachineName
));
2833 if (_ptr_MachineName
) {
2834 NDR_PULL_ALLOC(ndr
, r
->in
.MachineName
);
2836 r
->in
.MachineName
= NULL
;
2838 if (r
->in
.MachineName
) {
2839 _mem_save_MachineName_0
= NDR_PULL_GET_MEM_CTX(ndr
);
2840 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.MachineName
, 0);
2841 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->in
.MachineName
));
2842 NDR_CHECK(ndr_pull_array_length(ndr
, &r
->in
.MachineName
));
2843 if (ndr_get_array_length(ndr
, &r
->in
.MachineName
) > ndr_get_array_size(ndr
, &r
->in
.MachineName
)) {
2844 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
));
2846 NDR_CHECK(ndr_check_string_terminator(ndr
, ndr_get_array_length(ndr
, &r
->in
.MachineName
), sizeof(uint16_t)));
2847 NDR_CHECK(ndr_pull_charset(ndr
, NDR_SCALARS
, &r
->in
.MachineName
, ndr_get_array_length(ndr
, &r
->in
.MachineName
), sizeof(uint16_t), CH_UTF16
));
2848 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_MachineName_0
, 0);
2850 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_DatabaseName
));
2851 if (_ptr_DatabaseName
) {
2852 NDR_PULL_ALLOC(ndr
, r
->in
.DatabaseName
);
2854 r
->in
.DatabaseName
= NULL
;
2856 if (r
->in
.DatabaseName
) {
2857 _mem_save_DatabaseName_0
= NDR_PULL_GET_MEM_CTX(ndr
);
2858 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.DatabaseName
, 0);
2859 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->in
.DatabaseName
));
2860 NDR_CHECK(ndr_pull_array_length(ndr
, &r
->in
.DatabaseName
));
2861 if (ndr_get_array_length(ndr
, &r
->in
.DatabaseName
) > ndr_get_array_size(ndr
, &r
->in
.DatabaseName
)) {
2862 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
));
2864 NDR_CHECK(ndr_check_string_terminator(ndr
, ndr_get_array_length(ndr
, &r
->in
.DatabaseName
), sizeof(uint16_t)));
2865 NDR_CHECK(ndr_pull_charset(ndr
, NDR_SCALARS
, &r
->in
.DatabaseName
, ndr_get_array_length(ndr
, &r
->in
.DatabaseName
), sizeof(uint16_t), CH_UTF16
));
2866 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_DatabaseName_0
, 0);
2868 NDR_CHECK(ndr_pull_svcctl_MgrAccessMask(ndr
, NDR_SCALARS
, &r
->in
.access_mask
));
2869 NDR_PULL_ALLOC(ndr
, r
->out
.handle
);
2870 ZERO_STRUCTP(r
->out
.handle
);
2872 if (flags
& NDR_OUT
) {
2873 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
2874 NDR_PULL_ALLOC(ndr
, r
->out
.handle
);
2876 _mem_save_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
2877 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.handle
, LIBNDR_FLAG_REF_ALLOC
);
2878 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
, r
->out
.handle
));
2879 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_handle_0
, LIBNDR_FLAG_REF_ALLOC
);
2880 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
2882 return NDR_ERR_SUCCESS
;
2885 _PUBLIC_
void ndr_print_svcctl_OpenSCManagerW(struct ndr_print
*ndr
, const char *name
, int flags
, const struct svcctl_OpenSCManagerW
*r
)
2887 ndr_print_struct(ndr
, name
, "svcctl_OpenSCManagerW");
2889 if (flags
& NDR_SET_VALUES
) {
2890 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
2892 if (flags
& NDR_IN
) {
2893 ndr_print_struct(ndr
, "in", "svcctl_OpenSCManagerW");
2895 ndr_print_ptr(ndr
, "MachineName", r
->in
.MachineName
);
2897 if (r
->in
.MachineName
) {
2898 ndr_print_string(ndr
, "MachineName", r
->in
.MachineName
);
2901 ndr_print_ptr(ndr
, "DatabaseName", r
->in
.DatabaseName
);
2903 if (r
->in
.DatabaseName
) {
2904 ndr_print_string(ndr
, "DatabaseName", r
->in
.DatabaseName
);
2907 ndr_print_svcctl_MgrAccessMask(ndr
, "access_mask", r
->in
.access_mask
);
2910 if (flags
& NDR_OUT
) {
2911 ndr_print_struct(ndr
, "out", "svcctl_OpenSCManagerW");
2913 ndr_print_ptr(ndr
, "handle", r
->out
.handle
);
2915 ndr_print_policy_handle(ndr
, "handle", r
->out
.handle
);
2917 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
2923 static enum ndr_err_code
ndr_push_svcctl_OpenServiceW(struct ndr_push
*ndr
, int flags
, const struct svcctl_OpenServiceW
*r
)
2925 if (flags
& NDR_IN
) {
2926 if (r
->in
.scmanager_handle
== NULL
) {
2927 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
2929 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
, r
->in
.scmanager_handle
));
2930 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.ServiceName
, CH_UTF16
)));
2931 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, 0));
2932 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.ServiceName
, CH_UTF16
)));
2933 NDR_CHECK(ndr_push_charset(ndr
, NDR_SCALARS
, r
->in
.ServiceName
, ndr_charset_length(r
->in
.ServiceName
, CH_UTF16
), sizeof(uint16_t), CH_UTF16
));
2934 NDR_CHECK(ndr_push_svcctl_ServiceAccessMask(ndr
, NDR_SCALARS
, r
->in
.access_mask
));
2936 if (flags
& NDR_OUT
) {
2937 if (r
->out
.handle
== NULL
) {
2938 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
2940 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
, r
->out
.handle
));
2941 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
2943 return NDR_ERR_SUCCESS
;
2946 static enum ndr_err_code
ndr_pull_svcctl_OpenServiceW(struct ndr_pull
*ndr
, int flags
, struct svcctl_OpenServiceW
*r
)
2948 TALLOC_CTX
*_mem_save_scmanager_handle_0
;
2949 TALLOC_CTX
*_mem_save_handle_0
;
2950 if (flags
& NDR_IN
) {
2951 ZERO_STRUCT(r
->out
);
2953 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
2954 NDR_PULL_ALLOC(ndr
, r
->in
.scmanager_handle
);
2956 _mem_save_scmanager_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
2957 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.scmanager_handle
, LIBNDR_FLAG_REF_ALLOC
);
2958 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
, r
->in
.scmanager_handle
));
2959 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_scmanager_handle_0
, LIBNDR_FLAG_REF_ALLOC
);
2960 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->in
.ServiceName
));
2961 NDR_CHECK(ndr_pull_array_length(ndr
, &r
->in
.ServiceName
));
2962 if (ndr_get_array_length(ndr
, &r
->in
.ServiceName
) > ndr_get_array_size(ndr
, &r
->in
.ServiceName
)) {
2963 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
));
2965 NDR_CHECK(ndr_check_string_terminator(ndr
, ndr_get_array_length(ndr
, &r
->in
.ServiceName
), sizeof(uint16_t)));
2966 NDR_CHECK(ndr_pull_charset(ndr
, NDR_SCALARS
, &r
->in
.ServiceName
, ndr_get_array_length(ndr
, &r
->in
.ServiceName
), sizeof(uint16_t), CH_UTF16
));
2967 NDR_CHECK(ndr_pull_svcctl_ServiceAccessMask(ndr
, NDR_SCALARS
, &r
->in
.access_mask
));
2968 NDR_PULL_ALLOC(ndr
, r
->out
.handle
);
2969 ZERO_STRUCTP(r
->out
.handle
);
2971 if (flags
& NDR_OUT
) {
2972 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
2973 NDR_PULL_ALLOC(ndr
, r
->out
.handle
);
2975 _mem_save_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
2976 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.handle
, LIBNDR_FLAG_REF_ALLOC
);
2977 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
, r
->out
.handle
));
2978 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_handle_0
, LIBNDR_FLAG_REF_ALLOC
);
2979 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
2981 return NDR_ERR_SUCCESS
;
2984 _PUBLIC_
void ndr_print_svcctl_OpenServiceW(struct ndr_print
*ndr
, const char *name
, int flags
, const struct svcctl_OpenServiceW
*r
)
2986 ndr_print_struct(ndr
, name
, "svcctl_OpenServiceW");
2988 if (flags
& NDR_SET_VALUES
) {
2989 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
2991 if (flags
& NDR_IN
) {
2992 ndr_print_struct(ndr
, "in", "svcctl_OpenServiceW");
2994 ndr_print_ptr(ndr
, "scmanager_handle", r
->in
.scmanager_handle
);
2996 ndr_print_policy_handle(ndr
, "scmanager_handle", r
->in
.scmanager_handle
);
2998 ndr_print_string(ndr
, "ServiceName", r
->in
.ServiceName
);
2999 ndr_print_svcctl_ServiceAccessMask(ndr
, "access_mask", r
->in
.access_mask
);
3002 if (flags
& NDR_OUT
) {
3003 ndr_print_struct(ndr
, "out", "svcctl_OpenServiceW");
3005 ndr_print_ptr(ndr
, "handle", r
->out
.handle
);
3007 ndr_print_policy_handle(ndr
, "handle", r
->out
.handle
);
3009 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
3015 static enum ndr_err_code
ndr_push_svcctl_QueryServiceConfigW(struct ndr_push
*ndr
, int flags
, const struct svcctl_QueryServiceConfigW
*r
)
3017 if (flags
& NDR_IN
) {
3018 if (r
->in
.handle
== NULL
) {
3019 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
3021 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
, r
->in
.handle
));
3022 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.buf_size
));
3024 if (flags
& NDR_OUT
) {
3025 if (r
->out
.query
== NULL
) {
3026 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
3028 NDR_CHECK(ndr_push_QUERY_SERVICE_CONFIG(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->out
.query
));
3029 if (r
->out
.bytes_needed
== NULL
) {
3030 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
3032 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, *r
->out
.bytes_needed
));
3033 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
3035 return NDR_ERR_SUCCESS
;
3038 static enum ndr_err_code
ndr_pull_svcctl_QueryServiceConfigW(struct ndr_pull
*ndr
, int flags
, struct svcctl_QueryServiceConfigW
*r
)
3040 TALLOC_CTX
*_mem_save_handle_0
;
3041 TALLOC_CTX
*_mem_save_query_0
;
3042 TALLOC_CTX
*_mem_save_bytes_needed_0
;
3043 if (flags
& NDR_IN
) {
3044 ZERO_STRUCT(r
->out
);
3046 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
3047 NDR_PULL_ALLOC(ndr
, r
->in
.handle
);
3049 _mem_save_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
3050 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.handle
, LIBNDR_FLAG_REF_ALLOC
);
3051 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
, r
->in
.handle
));
3052 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_handle_0
, LIBNDR_FLAG_REF_ALLOC
);
3053 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.buf_size
));
3054 if (r
->in
.buf_size
< 0 || r
->in
.buf_size
> 8192) {
3055 return ndr_pull_error(ndr
, NDR_ERR_RANGE
, "value out of range");
3057 NDR_PULL_ALLOC(ndr
, r
->out
.query
);
3058 ZERO_STRUCTP(r
->out
.query
);
3059 NDR_PULL_ALLOC(ndr
, r
->out
.bytes_needed
);
3060 ZERO_STRUCTP(r
->out
.bytes_needed
);
3062 if (flags
& NDR_OUT
) {
3063 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
3064 NDR_PULL_ALLOC(ndr
, r
->out
.query
);
3066 _mem_save_query_0
= NDR_PULL_GET_MEM_CTX(ndr
);
3067 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.query
, LIBNDR_FLAG_REF_ALLOC
);
3068 NDR_CHECK(ndr_pull_QUERY_SERVICE_CONFIG(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->out
.query
));
3069 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_query_0
, LIBNDR_FLAG_REF_ALLOC
);
3070 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
3071 NDR_PULL_ALLOC(ndr
, r
->out
.bytes_needed
);
3073 _mem_save_bytes_needed_0
= NDR_PULL_GET_MEM_CTX(ndr
);
3074 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.bytes_needed
, LIBNDR_FLAG_REF_ALLOC
);
3075 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, r
->out
.bytes_needed
));
3076 if (*r
->out
.bytes_needed
< 0 || *r
->out
.bytes_needed
> 8192) {
3077 return ndr_pull_error(ndr
, NDR_ERR_RANGE
, "value out of range");
3079 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_bytes_needed_0
, LIBNDR_FLAG_REF_ALLOC
);
3080 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
3082 return NDR_ERR_SUCCESS
;
3085 _PUBLIC_
void ndr_print_svcctl_QueryServiceConfigW(struct ndr_print
*ndr
, const char *name
, int flags
, const struct svcctl_QueryServiceConfigW
*r
)
3087 ndr_print_struct(ndr
, name
, "svcctl_QueryServiceConfigW");
3089 if (flags
& NDR_SET_VALUES
) {
3090 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
3092 if (flags
& NDR_IN
) {
3093 ndr_print_struct(ndr
, "in", "svcctl_QueryServiceConfigW");
3095 ndr_print_ptr(ndr
, "handle", r
->in
.handle
);
3097 ndr_print_policy_handle(ndr
, "handle", r
->in
.handle
);
3099 ndr_print_uint32(ndr
, "buf_size", r
->in
.buf_size
);
3102 if (flags
& NDR_OUT
) {
3103 ndr_print_struct(ndr
, "out", "svcctl_QueryServiceConfigW");
3105 ndr_print_ptr(ndr
, "query", r
->out
.query
);
3107 ndr_print_QUERY_SERVICE_CONFIG(ndr
, "query", r
->out
.query
);
3109 ndr_print_ptr(ndr
, "bytes_needed", r
->out
.bytes_needed
);
3111 ndr_print_uint32(ndr
, "bytes_needed", *r
->out
.bytes_needed
);
3113 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
3119 static enum ndr_err_code
ndr_push_svcctl_QueryServiceLockStatusW(struct ndr_push
*ndr
, int flags
, const struct svcctl_QueryServiceLockStatusW
*r
)
3121 if (flags
& NDR_IN
) {
3122 if (r
->in
.handle
== NULL
) {
3123 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
3125 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
, r
->in
.handle
));
3126 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.buf_size
));
3128 if (flags
& NDR_OUT
) {
3129 if (r
->out
.lock_status
== NULL
) {
3130 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
3132 NDR_CHECK(ndr_push_SERVICE_LOCK_STATUS(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->out
.lock_status
));
3133 if (r
->out
.required_buf_size
== NULL
) {
3134 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
3136 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, *r
->out
.required_buf_size
));
3137 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
3139 return NDR_ERR_SUCCESS
;
3142 static enum ndr_err_code
ndr_pull_svcctl_QueryServiceLockStatusW(struct ndr_pull
*ndr
, int flags
, struct svcctl_QueryServiceLockStatusW
*r
)
3144 TALLOC_CTX
*_mem_save_handle_0
;
3145 TALLOC_CTX
*_mem_save_lock_status_0
;
3146 TALLOC_CTX
*_mem_save_required_buf_size_0
;
3147 if (flags
& NDR_IN
) {
3148 ZERO_STRUCT(r
->out
);
3150 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
3151 NDR_PULL_ALLOC(ndr
, r
->in
.handle
);
3153 _mem_save_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
3154 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.handle
, LIBNDR_FLAG_REF_ALLOC
);
3155 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
, r
->in
.handle
));
3156 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_handle_0
, LIBNDR_FLAG_REF_ALLOC
);
3157 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.buf_size
));
3158 NDR_PULL_ALLOC(ndr
, r
->out
.lock_status
);
3159 ZERO_STRUCTP(r
->out
.lock_status
);
3160 NDR_PULL_ALLOC(ndr
, r
->out
.required_buf_size
);
3161 ZERO_STRUCTP(r
->out
.required_buf_size
);
3163 if (flags
& NDR_OUT
) {
3164 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
3165 NDR_PULL_ALLOC(ndr
, r
->out
.lock_status
);
3167 _mem_save_lock_status_0
= NDR_PULL_GET_MEM_CTX(ndr
);
3168 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.lock_status
, LIBNDR_FLAG_REF_ALLOC
);
3169 NDR_CHECK(ndr_pull_SERVICE_LOCK_STATUS(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->out
.lock_status
));
3170 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_lock_status_0
, LIBNDR_FLAG_REF_ALLOC
);
3171 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
3172 NDR_PULL_ALLOC(ndr
, r
->out
.required_buf_size
);
3174 _mem_save_required_buf_size_0
= NDR_PULL_GET_MEM_CTX(ndr
);
3175 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.required_buf_size
, LIBNDR_FLAG_REF_ALLOC
);
3176 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, r
->out
.required_buf_size
));
3177 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_required_buf_size_0
, LIBNDR_FLAG_REF_ALLOC
);
3178 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
3180 return NDR_ERR_SUCCESS
;
3183 _PUBLIC_
void ndr_print_svcctl_QueryServiceLockStatusW(struct ndr_print
*ndr
, const char *name
, int flags
, const struct svcctl_QueryServiceLockStatusW
*r
)
3185 ndr_print_struct(ndr
, name
, "svcctl_QueryServiceLockStatusW");
3187 if (flags
& NDR_SET_VALUES
) {
3188 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
3190 if (flags
& NDR_IN
) {
3191 ndr_print_struct(ndr
, "in", "svcctl_QueryServiceLockStatusW");
3193 ndr_print_ptr(ndr
, "handle", r
->in
.handle
);
3195 ndr_print_policy_handle(ndr
, "handle", r
->in
.handle
);
3197 ndr_print_uint32(ndr
, "buf_size", r
->in
.buf_size
);
3200 if (flags
& NDR_OUT
) {
3201 ndr_print_struct(ndr
, "out", "svcctl_QueryServiceLockStatusW");
3203 ndr_print_ptr(ndr
, "lock_status", r
->out
.lock_status
);
3205 ndr_print_SERVICE_LOCK_STATUS(ndr
, "lock_status", r
->out
.lock_status
);
3207 ndr_print_ptr(ndr
, "required_buf_size", r
->out
.required_buf_size
);
3209 ndr_print_uint32(ndr
, "required_buf_size", *r
->out
.required_buf_size
);
3211 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
3217 static enum ndr_err_code
ndr_push_svcctl_StartServiceW(struct ndr_push
*ndr
, int flags
, const struct svcctl_StartServiceW
*r
)
3219 if (flags
& NDR_IN
) {
3220 if (r
->in
.handle
== NULL
) {
3221 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
3223 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
, r
->in
.handle
));
3224 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.NumArgs
));
3225 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.Arguments
));
3226 if (r
->in
.Arguments
) {
3227 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.Arguments
, 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
.Arguments
, CH_UTF16
)));
3230 NDR_CHECK(ndr_push_charset(ndr
, NDR_SCALARS
, r
->in
.Arguments
, ndr_charset_length(r
->in
.Arguments
, CH_UTF16
), sizeof(uint16_t), CH_UTF16
));
3233 if (flags
& NDR_OUT
) {
3234 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
3236 return NDR_ERR_SUCCESS
;
3239 static enum ndr_err_code
ndr_pull_svcctl_StartServiceW(struct ndr_pull
*ndr
, int flags
, struct svcctl_StartServiceW
*r
)
3241 uint32_t _ptr_Arguments
;
3242 TALLOC_CTX
*_mem_save_handle_0
;
3243 TALLOC_CTX
*_mem_save_Arguments_0
;
3244 if (flags
& NDR_IN
) {
3245 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
3246 NDR_PULL_ALLOC(ndr
, r
->in
.handle
);
3248 _mem_save_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
3249 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.handle
, LIBNDR_FLAG_REF_ALLOC
);
3250 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
, r
->in
.handle
));
3251 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_handle_0
, LIBNDR_FLAG_REF_ALLOC
);
3252 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.NumArgs
));
3253 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_Arguments
));
3254 if (_ptr_Arguments
) {
3255 NDR_PULL_ALLOC(ndr
, r
->in
.Arguments
);
3257 r
->in
.Arguments
= NULL
;
3259 if (r
->in
.Arguments
) {
3260 _mem_save_Arguments_0
= NDR_PULL_GET_MEM_CTX(ndr
);
3261 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.Arguments
, 0);
3262 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->in
.Arguments
));
3263 NDR_CHECK(ndr_pull_array_length(ndr
, &r
->in
.Arguments
));
3264 if (ndr_get_array_length(ndr
, &r
->in
.Arguments
) > ndr_get_array_size(ndr
, &r
->in
.Arguments
)) {
3265 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
));
3267 NDR_CHECK(ndr_check_string_terminator(ndr
, ndr_get_array_length(ndr
, &r
->in
.Arguments
), sizeof(uint16_t)));
3268 NDR_CHECK(ndr_pull_charset(ndr
, NDR_SCALARS
, &r
->in
.Arguments
, ndr_get_array_length(ndr
, &r
->in
.Arguments
), sizeof(uint16_t), CH_UTF16
));
3269 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_Arguments_0
, 0);
3272 if (flags
& NDR_OUT
) {
3273 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
3275 return NDR_ERR_SUCCESS
;
3278 _PUBLIC_
void ndr_print_svcctl_StartServiceW(struct ndr_print
*ndr
, const char *name
, int flags
, const struct svcctl_StartServiceW
*r
)
3280 ndr_print_struct(ndr
, name
, "svcctl_StartServiceW");
3282 if (flags
& NDR_SET_VALUES
) {
3283 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
3285 if (flags
& NDR_IN
) {
3286 ndr_print_struct(ndr
, "in", "svcctl_StartServiceW");
3288 ndr_print_ptr(ndr
, "handle", r
->in
.handle
);
3290 ndr_print_policy_handle(ndr
, "handle", r
->in
.handle
);
3292 ndr_print_uint32(ndr
, "NumArgs", r
->in
.NumArgs
);
3293 ndr_print_ptr(ndr
, "Arguments", r
->in
.Arguments
);
3295 if (r
->in
.Arguments
) {
3296 ndr_print_string(ndr
, "Arguments", r
->in
.Arguments
);
3301 if (flags
& NDR_OUT
) {
3302 ndr_print_struct(ndr
, "out", "svcctl_StartServiceW");
3304 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
3310 static enum ndr_err_code
ndr_push_svcctl_GetServiceDisplayNameW(struct ndr_push
*ndr
, int flags
, const struct svcctl_GetServiceDisplayNameW
*r
)
3312 if (flags
& NDR_IN
) {
3313 if (r
->in
.handle
== NULL
) {
3314 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
3316 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
, r
->in
.handle
));
3317 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.service_name
));
3318 if (r
->in
.service_name
) {
3319 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.service_name
, CH_UTF16
)));
3320 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, 0));
3321 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.service_name
, CH_UTF16
)));
3322 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
));
3324 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.display_name_length
));
3325 if (r
->in
.display_name_length
) {
3326 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, *r
->in
.display_name_length
));
3329 if (flags
& NDR_OUT
) {
3330 if (r
->out
.display_name
== NULL
) {
3331 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
3333 NDR_CHECK(ndr_push_unique_ptr(ndr
, *r
->out
.display_name
));
3334 if (*r
->out
.display_name
) {
3335 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(*r
->out
.display_name
, CH_UTF16
)));
3336 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, 0));
3337 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(*r
->out
.display_name
, CH_UTF16
)));
3338 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
));
3340 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->out
.display_name_length
));
3341 if (r
->out
.display_name_length
) {
3342 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, *r
->out
.display_name_length
));
3344 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
3346 return NDR_ERR_SUCCESS
;
3349 static enum ndr_err_code
ndr_pull_svcctl_GetServiceDisplayNameW(struct ndr_pull
*ndr
, int flags
, struct svcctl_GetServiceDisplayNameW
*r
)
3351 uint32_t _ptr_service_name
;
3352 uint32_t _ptr_display_name
;
3353 uint32_t _ptr_display_name_length
;
3354 TALLOC_CTX
*_mem_save_handle_0
;
3355 TALLOC_CTX
*_mem_save_service_name_0
;
3356 TALLOC_CTX
*_mem_save_display_name_0
;
3357 TALLOC_CTX
*_mem_save_display_name_1
;
3358 TALLOC_CTX
*_mem_save_display_name_length_0
;
3359 if (flags
& NDR_IN
) {
3360 ZERO_STRUCT(r
->out
);
3362 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
3363 NDR_PULL_ALLOC(ndr
, r
->in
.handle
);
3365 _mem_save_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
3366 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.handle
, LIBNDR_FLAG_REF_ALLOC
);
3367 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
, r
->in
.handle
));
3368 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_handle_0
, LIBNDR_FLAG_REF_ALLOC
);
3369 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_service_name
));
3370 if (_ptr_service_name
) {
3371 NDR_PULL_ALLOC(ndr
, r
->in
.service_name
);
3373 r
->in
.service_name
= NULL
;
3375 if (r
->in
.service_name
) {
3376 _mem_save_service_name_0
= NDR_PULL_GET_MEM_CTX(ndr
);
3377 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.service_name
, 0);
3378 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->in
.service_name
));
3379 NDR_CHECK(ndr_pull_array_length(ndr
, &r
->in
.service_name
));
3380 if (ndr_get_array_length(ndr
, &r
->in
.service_name
) > ndr_get_array_size(ndr
, &r
->in
.service_name
)) {
3381 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
));
3383 NDR_CHECK(ndr_check_string_terminator(ndr
, ndr_get_array_length(ndr
, &r
->in
.service_name
), sizeof(uint16_t)));
3384 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
));
3385 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_service_name_0
, 0);
3387 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_display_name_length
));
3388 if (_ptr_display_name_length
) {
3389 NDR_PULL_ALLOC(ndr
, r
->in
.display_name_length
);
3391 r
->in
.display_name_length
= NULL
;
3393 if (r
->in
.display_name_length
) {
3394 _mem_save_display_name_length_0
= NDR_PULL_GET_MEM_CTX(ndr
);
3395 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.display_name_length
, 0);
3396 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, r
->in
.display_name_length
));
3397 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_display_name_length_0
, 0);
3399 NDR_PULL_ALLOC(ndr
, r
->out
.display_name
);
3400 ZERO_STRUCTP(r
->out
.display_name
);
3402 if (flags
& NDR_OUT
) {
3403 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
3404 NDR_PULL_ALLOC(ndr
, r
->out
.display_name
);
3406 _mem_save_display_name_0
= NDR_PULL_GET_MEM_CTX(ndr
);
3407 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.display_name
, LIBNDR_FLAG_REF_ALLOC
);
3408 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_display_name
));
3409 if (_ptr_display_name
) {
3410 NDR_PULL_ALLOC(ndr
, *r
->out
.display_name
);
3412 *r
->out
.display_name
= NULL
;
3414 if (*r
->out
.display_name
) {
3415 _mem_save_display_name_1
= NDR_PULL_GET_MEM_CTX(ndr
);
3416 NDR_PULL_SET_MEM_CTX(ndr
, *r
->out
.display_name
, 0);
3417 NDR_CHECK(ndr_pull_array_size(ndr
, r
->out
.display_name
));
3418 NDR_CHECK(ndr_pull_array_length(ndr
, r
->out
.display_name
));
3419 if (ndr_get_array_length(ndr
, r
->out
.display_name
) > ndr_get_array_size(ndr
, r
->out
.display_name
)) {
3420 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
));
3422 NDR_CHECK(ndr_check_string_terminator(ndr
, ndr_get_array_length(ndr
, r
->out
.display_name
), sizeof(uint16_t)));
3423 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
));
3424 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_display_name_1
, 0);
3426 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_display_name_0
, LIBNDR_FLAG_REF_ALLOC
);
3427 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_display_name_length
));
3428 if (_ptr_display_name_length
) {
3429 NDR_PULL_ALLOC(ndr
, r
->out
.display_name_length
);
3431 r
->out
.display_name_length
= NULL
;
3433 if (r
->out
.display_name_length
) {
3434 _mem_save_display_name_length_0
= NDR_PULL_GET_MEM_CTX(ndr
);
3435 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.display_name_length
, 0);
3436 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, r
->out
.display_name_length
));
3437 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_display_name_length_0
, 0);
3439 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
3441 return NDR_ERR_SUCCESS
;
3444 _PUBLIC_
void ndr_print_svcctl_GetServiceDisplayNameW(struct ndr_print
*ndr
, const char *name
, int flags
, const struct svcctl_GetServiceDisplayNameW
*r
)
3446 ndr_print_struct(ndr
, name
, "svcctl_GetServiceDisplayNameW");
3448 if (flags
& NDR_SET_VALUES
) {
3449 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
3451 if (flags
& NDR_IN
) {
3452 ndr_print_struct(ndr
, "in", "svcctl_GetServiceDisplayNameW");
3454 ndr_print_ptr(ndr
, "handle", r
->in
.handle
);
3456 ndr_print_policy_handle(ndr
, "handle", r
->in
.handle
);
3458 ndr_print_ptr(ndr
, "service_name", r
->in
.service_name
);
3460 if (r
->in
.service_name
) {
3461 ndr_print_string(ndr
, "service_name", r
->in
.service_name
);
3464 ndr_print_ptr(ndr
, "display_name_length", r
->in
.display_name_length
);
3466 if (r
->in
.display_name_length
) {
3467 ndr_print_uint32(ndr
, "display_name_length", *r
->in
.display_name_length
);
3472 if (flags
& NDR_OUT
) {
3473 ndr_print_struct(ndr
, "out", "svcctl_GetServiceDisplayNameW");
3475 ndr_print_ptr(ndr
, "display_name", r
->out
.display_name
);
3477 ndr_print_ptr(ndr
, "display_name", *r
->out
.display_name
);
3479 if (*r
->out
.display_name
) {
3480 ndr_print_string(ndr
, "display_name", *r
->out
.display_name
);
3484 ndr_print_ptr(ndr
, "display_name_length", r
->out
.display_name_length
);
3486 if (r
->out
.display_name_length
) {
3487 ndr_print_uint32(ndr
, "display_name_length", *r
->out
.display_name_length
);
3490 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
3496 static enum ndr_err_code
ndr_push_svcctl_GetServiceKeyNameW(struct ndr_push
*ndr
, int flags
, const struct svcctl_GetServiceKeyNameW
*r
)
3498 if (flags
& NDR_IN
) {
3499 if (r
->in
.handle
== NULL
) {
3500 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
3502 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
, r
->in
.handle
));
3503 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.service_name
));
3504 if (r
->in
.service_name
) {
3505 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.service_name
, 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
.service_name
, CH_UTF16
)));
3508 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
));
3510 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.display_name_length
));
3511 if (r
->in
.display_name_length
) {
3512 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, *r
->in
.display_name_length
));
3515 if (flags
& NDR_OUT
) {
3516 if (r
->out
.key_name
== NULL
) {
3517 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
3519 NDR_CHECK(ndr_push_unique_ptr(ndr
, *r
->out
.key_name
));
3520 if (*r
->out
.key_name
) {
3521 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(*r
->out
.key_name
, CH_UTF16
)));
3522 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, 0));
3523 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(*r
->out
.key_name
, CH_UTF16
)));
3524 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
));
3526 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->out
.display_name_length
));
3527 if (r
->out
.display_name_length
) {
3528 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, *r
->out
.display_name_length
));
3530 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
3532 return NDR_ERR_SUCCESS
;
3535 static enum ndr_err_code
ndr_pull_svcctl_GetServiceKeyNameW(struct ndr_pull
*ndr
, int flags
, struct svcctl_GetServiceKeyNameW
*r
)
3537 uint32_t _ptr_service_name
;
3538 uint32_t _ptr_key_name
;
3539 uint32_t _ptr_display_name_length
;
3540 TALLOC_CTX
*_mem_save_handle_0
;
3541 TALLOC_CTX
*_mem_save_service_name_0
;
3542 TALLOC_CTX
*_mem_save_key_name_0
;
3543 TALLOC_CTX
*_mem_save_key_name_1
;
3544 TALLOC_CTX
*_mem_save_display_name_length_0
;
3545 if (flags
& NDR_IN
) {
3546 ZERO_STRUCT(r
->out
);
3548 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
3549 NDR_PULL_ALLOC(ndr
, r
->in
.handle
);
3551 _mem_save_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
3552 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.handle
, LIBNDR_FLAG_REF_ALLOC
);
3553 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
, r
->in
.handle
));
3554 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_handle_0
, LIBNDR_FLAG_REF_ALLOC
);
3555 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_service_name
));
3556 if (_ptr_service_name
) {
3557 NDR_PULL_ALLOC(ndr
, r
->in
.service_name
);
3559 r
->in
.service_name
= NULL
;
3561 if (r
->in
.service_name
) {
3562 _mem_save_service_name_0
= NDR_PULL_GET_MEM_CTX(ndr
);
3563 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.service_name
, 0);
3564 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->in
.service_name
));
3565 NDR_CHECK(ndr_pull_array_length(ndr
, &r
->in
.service_name
));
3566 if (ndr_get_array_length(ndr
, &r
->in
.service_name
) > ndr_get_array_size(ndr
, &r
->in
.service_name
)) {
3567 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
));
3569 NDR_CHECK(ndr_check_string_terminator(ndr
, ndr_get_array_length(ndr
, &r
->in
.service_name
), sizeof(uint16_t)));
3570 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
));
3571 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_service_name_0
, 0);
3573 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_display_name_length
));
3574 if (_ptr_display_name_length
) {
3575 NDR_PULL_ALLOC(ndr
, r
->in
.display_name_length
);
3577 r
->in
.display_name_length
= NULL
;
3579 if (r
->in
.display_name_length
) {
3580 _mem_save_display_name_length_0
= NDR_PULL_GET_MEM_CTX(ndr
);
3581 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.display_name_length
, 0);
3582 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, r
->in
.display_name_length
));
3583 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_display_name_length_0
, 0);
3585 NDR_PULL_ALLOC(ndr
, r
->out
.key_name
);
3586 ZERO_STRUCTP(r
->out
.key_name
);
3588 if (flags
& NDR_OUT
) {
3589 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
3590 NDR_PULL_ALLOC(ndr
, r
->out
.key_name
);
3592 _mem_save_key_name_0
= NDR_PULL_GET_MEM_CTX(ndr
);
3593 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.key_name
, LIBNDR_FLAG_REF_ALLOC
);
3594 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_key_name
));
3595 if (_ptr_key_name
) {
3596 NDR_PULL_ALLOC(ndr
, *r
->out
.key_name
);
3598 *r
->out
.key_name
= NULL
;
3600 if (*r
->out
.key_name
) {
3601 _mem_save_key_name_1
= NDR_PULL_GET_MEM_CTX(ndr
);
3602 NDR_PULL_SET_MEM_CTX(ndr
, *r
->out
.key_name
, 0);
3603 NDR_CHECK(ndr_pull_array_size(ndr
, r
->out
.key_name
));
3604 NDR_CHECK(ndr_pull_array_length(ndr
, r
->out
.key_name
));
3605 if (ndr_get_array_length(ndr
, r
->out
.key_name
) > ndr_get_array_size(ndr
, r
->out
.key_name
)) {
3606 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
));
3608 NDR_CHECK(ndr_check_string_terminator(ndr
, ndr_get_array_length(ndr
, r
->out
.key_name
), sizeof(uint16_t)));
3609 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
));
3610 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_key_name_1
, 0);
3612 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_key_name_0
, LIBNDR_FLAG_REF_ALLOC
);
3613 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_display_name_length
));
3614 if (_ptr_display_name_length
) {
3615 NDR_PULL_ALLOC(ndr
, r
->out
.display_name_length
);
3617 r
->out
.display_name_length
= NULL
;
3619 if (r
->out
.display_name_length
) {
3620 _mem_save_display_name_length_0
= NDR_PULL_GET_MEM_CTX(ndr
);
3621 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.display_name_length
, 0);
3622 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, r
->out
.display_name_length
));
3623 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_display_name_length_0
, 0);
3625 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
3627 return NDR_ERR_SUCCESS
;
3630 _PUBLIC_
void ndr_print_svcctl_GetServiceKeyNameW(struct ndr_print
*ndr
, const char *name
, int flags
, const struct svcctl_GetServiceKeyNameW
*r
)
3632 ndr_print_struct(ndr
, name
, "svcctl_GetServiceKeyNameW");
3634 if (flags
& NDR_SET_VALUES
) {
3635 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
3637 if (flags
& NDR_IN
) {
3638 ndr_print_struct(ndr
, "in", "svcctl_GetServiceKeyNameW");
3640 ndr_print_ptr(ndr
, "handle", r
->in
.handle
);
3642 ndr_print_policy_handle(ndr
, "handle", r
->in
.handle
);
3644 ndr_print_ptr(ndr
, "service_name", r
->in
.service_name
);
3646 if (r
->in
.service_name
) {
3647 ndr_print_string(ndr
, "service_name", r
->in
.service_name
);
3650 ndr_print_ptr(ndr
, "display_name_length", r
->in
.display_name_length
);
3652 if (r
->in
.display_name_length
) {
3653 ndr_print_uint32(ndr
, "display_name_length", *r
->in
.display_name_length
);
3658 if (flags
& NDR_OUT
) {
3659 ndr_print_struct(ndr
, "out", "svcctl_GetServiceKeyNameW");
3661 ndr_print_ptr(ndr
, "key_name", r
->out
.key_name
);
3663 ndr_print_ptr(ndr
, "key_name", *r
->out
.key_name
);
3665 if (*r
->out
.key_name
) {
3666 ndr_print_string(ndr
, "key_name", *r
->out
.key_name
);
3670 ndr_print_ptr(ndr
, "display_name_length", r
->out
.display_name_length
);
3672 if (r
->out
.display_name_length
) {
3673 ndr_print_uint32(ndr
, "display_name_length", *r
->out
.display_name_length
);
3676 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
3682 static enum ndr_err_code
ndr_push_svcctl_SCSetServiceBitsA(struct ndr_push
*ndr
, int flags
, const struct svcctl_SCSetServiceBitsA
*r
)
3684 if (flags
& NDR_IN
) {
3685 if (r
->in
.handle
== NULL
) {
3686 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
3688 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
, r
->in
.handle
));
3689 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.bits
));
3690 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.bitson
));
3691 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.immediate
));
3693 if (flags
& NDR_OUT
) {
3694 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
3696 return NDR_ERR_SUCCESS
;
3699 static enum ndr_err_code
ndr_pull_svcctl_SCSetServiceBitsA(struct ndr_pull
*ndr
, int flags
, struct svcctl_SCSetServiceBitsA
*r
)
3701 TALLOC_CTX
*_mem_save_handle_0
;
3702 if (flags
& NDR_IN
) {
3703 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
3704 NDR_PULL_ALLOC(ndr
, r
->in
.handle
);
3706 _mem_save_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
3707 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.handle
, LIBNDR_FLAG_REF_ALLOC
);
3708 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
, r
->in
.handle
));
3709 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_handle_0
, LIBNDR_FLAG_REF_ALLOC
);
3710 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.bits
));
3711 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.bitson
));
3712 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.immediate
));
3714 if (flags
& NDR_OUT
) {
3715 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
3717 return NDR_ERR_SUCCESS
;
3720 _PUBLIC_
void ndr_print_svcctl_SCSetServiceBitsA(struct ndr_print
*ndr
, const char *name
, int flags
, const struct svcctl_SCSetServiceBitsA
*r
)
3722 ndr_print_struct(ndr
, name
, "svcctl_SCSetServiceBitsA");
3724 if (flags
& NDR_SET_VALUES
) {
3725 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
3727 if (flags
& NDR_IN
) {
3728 ndr_print_struct(ndr
, "in", "svcctl_SCSetServiceBitsA");
3730 ndr_print_ptr(ndr
, "handle", r
->in
.handle
);
3732 ndr_print_policy_handle(ndr
, "handle", r
->in
.handle
);
3734 ndr_print_uint32(ndr
, "bits", r
->in
.bits
);
3735 ndr_print_uint32(ndr
, "bitson", r
->in
.bitson
);
3736 ndr_print_uint32(ndr
, "immediate", r
->in
.immediate
);
3739 if (flags
& NDR_OUT
) {
3740 ndr_print_struct(ndr
, "out", "svcctl_SCSetServiceBitsA");
3742 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
3748 static enum ndr_err_code
ndr_push_svcctl_ChangeServiceConfigA(struct ndr_push
*ndr
, int flags
, const struct svcctl_ChangeServiceConfigA
*r
)
3750 if (flags
& NDR_IN
) {
3751 if (r
->in
.handle
== NULL
) {
3752 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
3754 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
, r
->in
.handle
));
3755 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.type
));
3756 NDR_CHECK(ndr_push_svcctl_StartType(ndr
, NDR_SCALARS
, r
->in
.start_type
));
3757 NDR_CHECK(ndr_push_svcctl_ErrorControl(ndr
, NDR_SCALARS
, r
->in
.error_control
));
3758 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.binary_path
));
3759 if (r
->in
.binary_path
) {
3760 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.binary_path
, CH_UTF16
)));
3761 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, 0));
3762 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.binary_path
, CH_UTF16
)));
3763 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
));
3765 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.load_order_group
));
3766 if (r
->in
.load_order_group
) {
3767 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.load_order_group
, CH_UTF16
)));
3768 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, 0));
3769 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.load_order_group
, CH_UTF16
)));
3770 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
));
3772 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.dependencies
));
3773 if (r
->in
.dependencies
) {
3774 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.dependencies
, CH_UTF16
)));
3775 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, 0));
3776 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.dependencies
, CH_UTF16
)));
3777 NDR_CHECK(ndr_push_charset(ndr
, NDR_SCALARS
, r
->in
.dependencies
, ndr_charset_length(r
->in
.dependencies
, CH_UTF16
), sizeof(uint16_t), CH_UTF16
));
3779 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.service_start_name
));
3780 if (r
->in
.service_start_name
) {
3781 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.service_start_name
, CH_UTF16
)));
3782 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, 0));
3783 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.service_start_name
, CH_UTF16
)));
3784 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
));
3786 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.password
));
3787 if (r
->in
.password
) {
3788 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.password
, CH_UTF16
)));
3789 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, 0));
3790 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.password
, CH_UTF16
)));
3791 NDR_CHECK(ndr_push_charset(ndr
, NDR_SCALARS
, r
->in
.password
, ndr_charset_length(r
->in
.password
, CH_UTF16
), sizeof(uint16_t), CH_UTF16
));
3793 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.display_name
));
3794 if (r
->in
.display_name
) {
3795 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.display_name
, CH_UTF16
)));
3796 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, 0));
3797 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.display_name
, CH_UTF16
)));
3798 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
));
3801 if (flags
& NDR_OUT
) {
3802 if (r
->out
.tag_id
== NULL
) {
3803 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
3805 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, *r
->out
.tag_id
));
3806 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
3808 return NDR_ERR_SUCCESS
;
3811 static enum ndr_err_code
ndr_pull_svcctl_ChangeServiceConfigA(struct ndr_pull
*ndr
, int flags
, struct svcctl_ChangeServiceConfigA
*r
)
3813 uint32_t _ptr_binary_path
;
3814 uint32_t _ptr_load_order_group
;
3815 uint32_t _ptr_dependencies
;
3816 uint32_t _ptr_service_start_name
;
3817 uint32_t _ptr_password
;
3818 uint32_t _ptr_display_name
;
3819 TALLOC_CTX
*_mem_save_handle_0
;
3820 TALLOC_CTX
*_mem_save_binary_path_0
;
3821 TALLOC_CTX
*_mem_save_load_order_group_0
;
3822 TALLOC_CTX
*_mem_save_tag_id_0
;
3823 TALLOC_CTX
*_mem_save_dependencies_0
;
3824 TALLOC_CTX
*_mem_save_service_start_name_0
;
3825 TALLOC_CTX
*_mem_save_password_0
;
3826 TALLOC_CTX
*_mem_save_display_name_0
;
3827 if (flags
& NDR_IN
) {
3828 ZERO_STRUCT(r
->out
);
3830 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
3831 NDR_PULL_ALLOC(ndr
, r
->in
.handle
);
3833 _mem_save_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
3834 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.handle
, LIBNDR_FLAG_REF_ALLOC
);
3835 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
, r
->in
.handle
));
3836 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_handle_0
, LIBNDR_FLAG_REF_ALLOC
);
3837 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.type
));
3838 NDR_CHECK(ndr_pull_svcctl_StartType(ndr
, NDR_SCALARS
, &r
->in
.start_type
));
3839 NDR_CHECK(ndr_pull_svcctl_ErrorControl(ndr
, NDR_SCALARS
, &r
->in
.error_control
));
3840 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_binary_path
));
3841 if (_ptr_binary_path
) {
3842 NDR_PULL_ALLOC(ndr
, r
->in
.binary_path
);
3844 r
->in
.binary_path
= NULL
;
3846 if (r
->in
.binary_path
) {
3847 _mem_save_binary_path_0
= NDR_PULL_GET_MEM_CTX(ndr
);
3848 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.binary_path
, 0);
3849 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->in
.binary_path
));
3850 NDR_CHECK(ndr_pull_array_length(ndr
, &r
->in
.binary_path
));
3851 if (ndr_get_array_length(ndr
, &r
->in
.binary_path
) > ndr_get_array_size(ndr
, &r
->in
.binary_path
)) {
3852 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
));
3854 NDR_CHECK(ndr_check_string_terminator(ndr
, ndr_get_array_length(ndr
, &r
->in
.binary_path
), sizeof(uint16_t)));
3855 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
));
3856 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_binary_path_0
, 0);
3858 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_load_order_group
));
3859 if (_ptr_load_order_group
) {
3860 NDR_PULL_ALLOC(ndr
, r
->in
.load_order_group
);
3862 r
->in
.load_order_group
= NULL
;
3864 if (r
->in
.load_order_group
) {
3865 _mem_save_load_order_group_0
= NDR_PULL_GET_MEM_CTX(ndr
);
3866 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.load_order_group
, 0);
3867 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->in
.load_order_group
));
3868 NDR_CHECK(ndr_pull_array_length(ndr
, &r
->in
.load_order_group
));
3869 if (ndr_get_array_length(ndr
, &r
->in
.load_order_group
) > ndr_get_array_size(ndr
, &r
->in
.load_order_group
)) {
3870 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
));
3872 NDR_CHECK(ndr_check_string_terminator(ndr
, ndr_get_array_length(ndr
, &r
->in
.load_order_group
), sizeof(uint16_t)));
3873 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
));
3874 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_load_order_group_0
, 0);
3876 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_dependencies
));
3877 if (_ptr_dependencies
) {
3878 NDR_PULL_ALLOC(ndr
, r
->in
.dependencies
);
3880 r
->in
.dependencies
= NULL
;
3882 if (r
->in
.dependencies
) {
3883 _mem_save_dependencies_0
= NDR_PULL_GET_MEM_CTX(ndr
);
3884 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.dependencies
, 0);
3885 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->in
.dependencies
));
3886 NDR_CHECK(ndr_pull_array_length(ndr
, &r
->in
.dependencies
));
3887 if (ndr_get_array_length(ndr
, &r
->in
.dependencies
) > ndr_get_array_size(ndr
, &r
->in
.dependencies
)) {
3888 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
));
3890 NDR_CHECK(ndr_check_string_terminator(ndr
, ndr_get_array_length(ndr
, &r
->in
.dependencies
), sizeof(uint16_t)));
3891 NDR_CHECK(ndr_pull_charset(ndr
, NDR_SCALARS
, &r
->in
.dependencies
, ndr_get_array_length(ndr
, &r
->in
.dependencies
), sizeof(uint16_t), CH_UTF16
));
3892 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_dependencies_0
, 0);
3894 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_service_start_name
));
3895 if (_ptr_service_start_name
) {
3896 NDR_PULL_ALLOC(ndr
, r
->in
.service_start_name
);
3898 r
->in
.service_start_name
= NULL
;
3900 if (r
->in
.service_start_name
) {
3901 _mem_save_service_start_name_0
= NDR_PULL_GET_MEM_CTX(ndr
);
3902 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.service_start_name
, 0);
3903 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->in
.service_start_name
));
3904 NDR_CHECK(ndr_pull_array_length(ndr
, &r
->in
.service_start_name
));
3905 if (ndr_get_array_length(ndr
, &r
->in
.service_start_name
) > ndr_get_array_size(ndr
, &r
->in
.service_start_name
)) {
3906 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
));
3908 NDR_CHECK(ndr_check_string_terminator(ndr
, ndr_get_array_length(ndr
, &r
->in
.service_start_name
), sizeof(uint16_t)));
3909 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
));
3910 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_service_start_name_0
, 0);
3912 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_password
));
3913 if (_ptr_password
) {
3914 NDR_PULL_ALLOC(ndr
, r
->in
.password
);
3916 r
->in
.password
= NULL
;
3918 if (r
->in
.password
) {
3919 _mem_save_password_0
= NDR_PULL_GET_MEM_CTX(ndr
);
3920 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.password
, 0);
3921 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->in
.password
));
3922 NDR_CHECK(ndr_pull_array_length(ndr
, &r
->in
.password
));
3923 if (ndr_get_array_length(ndr
, &r
->in
.password
) > ndr_get_array_size(ndr
, &r
->in
.password
)) {
3924 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
));
3926 NDR_CHECK(ndr_check_string_terminator(ndr
, ndr_get_array_length(ndr
, &r
->in
.password
), sizeof(uint16_t)));
3927 NDR_CHECK(ndr_pull_charset(ndr
, NDR_SCALARS
, &r
->in
.password
, ndr_get_array_length(ndr
, &r
->in
.password
), sizeof(uint16_t), CH_UTF16
));
3928 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_password_0
, 0);
3930 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_display_name
));
3931 if (_ptr_display_name
) {
3932 NDR_PULL_ALLOC(ndr
, r
->in
.display_name
);
3934 r
->in
.display_name
= NULL
;
3936 if (r
->in
.display_name
) {
3937 _mem_save_display_name_0
= NDR_PULL_GET_MEM_CTX(ndr
);
3938 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.display_name
, 0);
3939 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->in
.display_name
));
3940 NDR_CHECK(ndr_pull_array_length(ndr
, &r
->in
.display_name
));
3941 if (ndr_get_array_length(ndr
, &r
->in
.display_name
) > ndr_get_array_size(ndr
, &r
->in
.display_name
)) {
3942 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
));
3944 NDR_CHECK(ndr_check_string_terminator(ndr
, ndr_get_array_length(ndr
, &r
->in
.display_name
), sizeof(uint16_t)));
3945 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
));
3946 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_display_name_0
, 0);
3948 NDR_PULL_ALLOC(ndr
, r
->out
.tag_id
);
3949 ZERO_STRUCTP(r
->out
.tag_id
);
3951 if (flags
& NDR_OUT
) {
3952 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
3953 NDR_PULL_ALLOC(ndr
, r
->out
.tag_id
);
3955 _mem_save_tag_id_0
= NDR_PULL_GET_MEM_CTX(ndr
);
3956 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.tag_id
, LIBNDR_FLAG_REF_ALLOC
);
3957 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, r
->out
.tag_id
));
3958 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_tag_id_0
, LIBNDR_FLAG_REF_ALLOC
);
3959 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
3961 return NDR_ERR_SUCCESS
;
3964 _PUBLIC_
void ndr_print_svcctl_ChangeServiceConfigA(struct ndr_print
*ndr
, const char *name
, int flags
, const struct svcctl_ChangeServiceConfigA
*r
)
3966 ndr_print_struct(ndr
, name
, "svcctl_ChangeServiceConfigA");
3968 if (flags
& NDR_SET_VALUES
) {
3969 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
3971 if (flags
& NDR_IN
) {
3972 ndr_print_struct(ndr
, "in", "svcctl_ChangeServiceConfigA");
3974 ndr_print_ptr(ndr
, "handle", r
->in
.handle
);
3976 ndr_print_policy_handle(ndr
, "handle", r
->in
.handle
);
3978 ndr_print_uint32(ndr
, "type", r
->in
.type
);
3979 ndr_print_svcctl_StartType(ndr
, "start_type", r
->in
.start_type
);
3980 ndr_print_svcctl_ErrorControl(ndr
, "error_control", r
->in
.error_control
);
3981 ndr_print_ptr(ndr
, "binary_path", r
->in
.binary_path
);
3983 if (r
->in
.binary_path
) {
3984 ndr_print_string(ndr
, "binary_path", r
->in
.binary_path
);
3987 ndr_print_ptr(ndr
, "load_order_group", r
->in
.load_order_group
);
3989 if (r
->in
.load_order_group
) {
3990 ndr_print_string(ndr
, "load_order_group", r
->in
.load_order_group
);
3993 ndr_print_ptr(ndr
, "dependencies", r
->in
.dependencies
);
3995 if (r
->in
.dependencies
) {
3996 ndr_print_string(ndr
, "dependencies", r
->in
.dependencies
);
3999 ndr_print_ptr(ndr
, "service_start_name", r
->in
.service_start_name
);
4001 if (r
->in
.service_start_name
) {
4002 ndr_print_string(ndr
, "service_start_name", r
->in
.service_start_name
);
4005 ndr_print_ptr(ndr
, "password", r
->in
.password
);
4007 if (r
->in
.password
) {
4008 ndr_print_string(ndr
, "password", r
->in
.password
);
4011 ndr_print_ptr(ndr
, "display_name", r
->in
.display_name
);
4013 if (r
->in
.display_name
) {
4014 ndr_print_string(ndr
, "display_name", r
->in
.display_name
);
4019 if (flags
& NDR_OUT
) {
4020 ndr_print_struct(ndr
, "out", "svcctl_ChangeServiceConfigA");
4022 ndr_print_ptr(ndr
, "tag_id", r
->out
.tag_id
);
4024 ndr_print_uint32(ndr
, "tag_id", *r
->out
.tag_id
);
4026 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
4032 static enum ndr_err_code
ndr_push_svcctl_CreateServiceA(struct ndr_push
*ndr
, int flags
, const struct svcctl_CreateServiceA
*r
)
4034 if (flags
& NDR_IN
) {
4035 if (r
->in
.handle
== NULL
) {
4036 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
4038 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
, r
->in
.handle
));
4039 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.ServiceName
));
4040 if (r
->in
.ServiceName
) {
4041 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.ServiceName
, CH_UTF16
)));
4042 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, 0));
4043 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.ServiceName
, CH_UTF16
)));
4044 NDR_CHECK(ndr_push_charset(ndr
, NDR_SCALARS
, r
->in
.ServiceName
, ndr_charset_length(r
->in
.ServiceName
, CH_UTF16
), sizeof(uint16_t), CH_UTF16
));
4046 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.DisplayName
));
4047 if (r
->in
.DisplayName
) {
4048 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.DisplayName
, CH_UTF16
)));
4049 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, 0));
4050 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.DisplayName
, CH_UTF16
)));
4051 NDR_CHECK(ndr_push_charset(ndr
, NDR_SCALARS
, r
->in
.DisplayName
, ndr_charset_length(r
->in
.DisplayName
, CH_UTF16
), sizeof(uint16_t), CH_UTF16
));
4053 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.desired_access
));
4054 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.type
));
4055 NDR_CHECK(ndr_push_svcctl_StartType(ndr
, NDR_SCALARS
, r
->in
.start_type
));
4056 NDR_CHECK(ndr_push_svcctl_ErrorControl(ndr
, NDR_SCALARS
, r
->in
.error_control
));
4057 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.binary_path
));
4058 if (r
->in
.binary_path
) {
4059 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.binary_path
, CH_UTF16
)));
4060 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, 0));
4061 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.binary_path
, CH_UTF16
)));
4062 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
));
4064 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.LoadOrderGroupKey
));
4065 if (r
->in
.LoadOrderGroupKey
) {
4066 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.LoadOrderGroupKey
, CH_UTF16
)));
4067 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, 0));
4068 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.LoadOrderGroupKey
, CH_UTF16
)));
4069 NDR_CHECK(ndr_push_charset(ndr
, NDR_SCALARS
, r
->in
.LoadOrderGroupKey
, ndr_charset_length(r
->in
.LoadOrderGroupKey
, CH_UTF16
), sizeof(uint16_t), CH_UTF16
));
4071 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.dependencies
));
4072 if (r
->in
.dependencies
) {
4073 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.dependencies
, CH_UTF16
)));
4074 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, 0));
4075 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.dependencies
, CH_UTF16
)));
4076 NDR_CHECK(ndr_push_charset(ndr
, NDR_SCALARS
, r
->in
.dependencies
, ndr_charset_length(r
->in
.dependencies
, CH_UTF16
), sizeof(uint16_t), CH_UTF16
));
4078 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.service_start_name
));
4079 if (r
->in
.service_start_name
) {
4080 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.service_start_name
, CH_UTF16
)));
4081 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, 0));
4082 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.service_start_name
, CH_UTF16
)));
4083 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
));
4085 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.password
));
4086 if (r
->in
.password
) {
4087 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.password
, CH_UTF16
)));
4088 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, 0));
4089 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.password
, CH_UTF16
)));
4090 NDR_CHECK(ndr_push_charset(ndr
, NDR_SCALARS
, r
->in
.password
, ndr_charset_length(r
->in
.password
, CH_UTF16
), sizeof(uint16_t), CH_UTF16
));
4093 if (flags
& NDR_OUT
) {
4094 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->out
.TagId
));
4096 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, *r
->out
.TagId
));
4098 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
4100 return NDR_ERR_SUCCESS
;
4103 static enum ndr_err_code
ndr_pull_svcctl_CreateServiceA(struct ndr_pull
*ndr
, int flags
, struct svcctl_CreateServiceA
*r
)
4105 uint32_t _ptr_ServiceName
;
4106 uint32_t _ptr_DisplayName
;
4107 uint32_t _ptr_binary_path
;
4108 uint32_t _ptr_LoadOrderGroupKey
;
4109 uint32_t _ptr_TagId
;
4110 uint32_t _ptr_dependencies
;
4111 uint32_t _ptr_service_start_name
;
4112 uint32_t _ptr_password
;
4113 TALLOC_CTX
*_mem_save_handle_0
;
4114 TALLOC_CTX
*_mem_save_ServiceName_0
;
4115 TALLOC_CTX
*_mem_save_DisplayName_0
;
4116 TALLOC_CTX
*_mem_save_binary_path_0
;
4117 TALLOC_CTX
*_mem_save_LoadOrderGroupKey_0
;
4118 TALLOC_CTX
*_mem_save_TagId_0
;
4119 TALLOC_CTX
*_mem_save_dependencies_0
;
4120 TALLOC_CTX
*_mem_save_service_start_name_0
;
4121 TALLOC_CTX
*_mem_save_password_0
;
4122 if (flags
& NDR_IN
) {
4123 ZERO_STRUCT(r
->out
);
4125 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
4126 NDR_PULL_ALLOC(ndr
, r
->in
.handle
);
4128 _mem_save_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
4129 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.handle
, LIBNDR_FLAG_REF_ALLOC
);
4130 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
, r
->in
.handle
));
4131 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_handle_0
, LIBNDR_FLAG_REF_ALLOC
);
4132 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_ServiceName
));
4133 if (_ptr_ServiceName
) {
4134 NDR_PULL_ALLOC(ndr
, r
->in
.ServiceName
);
4136 r
->in
.ServiceName
= NULL
;
4138 if (r
->in
.ServiceName
) {
4139 _mem_save_ServiceName_0
= NDR_PULL_GET_MEM_CTX(ndr
);
4140 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.ServiceName
, 0);
4141 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->in
.ServiceName
));
4142 NDR_CHECK(ndr_pull_array_length(ndr
, &r
->in
.ServiceName
));
4143 if (ndr_get_array_length(ndr
, &r
->in
.ServiceName
) > ndr_get_array_size(ndr
, &r
->in
.ServiceName
)) {
4144 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
));
4146 NDR_CHECK(ndr_check_string_terminator(ndr
, ndr_get_array_length(ndr
, &r
->in
.ServiceName
), sizeof(uint16_t)));
4147 NDR_CHECK(ndr_pull_charset(ndr
, NDR_SCALARS
, &r
->in
.ServiceName
, ndr_get_array_length(ndr
, &r
->in
.ServiceName
), sizeof(uint16_t), CH_UTF16
));
4148 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_ServiceName_0
, 0);
4150 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_DisplayName
));
4151 if (_ptr_DisplayName
) {
4152 NDR_PULL_ALLOC(ndr
, r
->in
.DisplayName
);
4154 r
->in
.DisplayName
= NULL
;
4156 if (r
->in
.DisplayName
) {
4157 _mem_save_DisplayName_0
= NDR_PULL_GET_MEM_CTX(ndr
);
4158 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.DisplayName
, 0);
4159 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->in
.DisplayName
));
4160 NDR_CHECK(ndr_pull_array_length(ndr
, &r
->in
.DisplayName
));
4161 if (ndr_get_array_length(ndr
, &r
->in
.DisplayName
) > ndr_get_array_size(ndr
, &r
->in
.DisplayName
)) {
4162 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
));
4164 NDR_CHECK(ndr_check_string_terminator(ndr
, ndr_get_array_length(ndr
, &r
->in
.DisplayName
), sizeof(uint16_t)));
4165 NDR_CHECK(ndr_pull_charset(ndr
, NDR_SCALARS
, &r
->in
.DisplayName
, ndr_get_array_length(ndr
, &r
->in
.DisplayName
), sizeof(uint16_t), CH_UTF16
));
4166 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_DisplayName_0
, 0);
4168 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.desired_access
));
4169 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.type
));
4170 NDR_CHECK(ndr_pull_svcctl_StartType(ndr
, NDR_SCALARS
, &r
->in
.start_type
));
4171 NDR_CHECK(ndr_pull_svcctl_ErrorControl(ndr
, NDR_SCALARS
, &r
->in
.error_control
));
4172 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_binary_path
));
4173 if (_ptr_binary_path
) {
4174 NDR_PULL_ALLOC(ndr
, r
->in
.binary_path
);
4176 r
->in
.binary_path
= NULL
;
4178 if (r
->in
.binary_path
) {
4179 _mem_save_binary_path_0
= NDR_PULL_GET_MEM_CTX(ndr
);
4180 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.binary_path
, 0);
4181 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->in
.binary_path
));
4182 NDR_CHECK(ndr_pull_array_length(ndr
, &r
->in
.binary_path
));
4183 if (ndr_get_array_length(ndr
, &r
->in
.binary_path
) > ndr_get_array_size(ndr
, &r
->in
.binary_path
)) {
4184 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
));
4186 NDR_CHECK(ndr_check_string_terminator(ndr
, ndr_get_array_length(ndr
, &r
->in
.binary_path
), sizeof(uint16_t)));
4187 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
));
4188 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_binary_path_0
, 0);
4190 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_LoadOrderGroupKey
));
4191 if (_ptr_LoadOrderGroupKey
) {
4192 NDR_PULL_ALLOC(ndr
, r
->in
.LoadOrderGroupKey
);
4194 r
->in
.LoadOrderGroupKey
= NULL
;
4196 if (r
->in
.LoadOrderGroupKey
) {
4197 _mem_save_LoadOrderGroupKey_0
= NDR_PULL_GET_MEM_CTX(ndr
);
4198 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.LoadOrderGroupKey
, 0);
4199 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->in
.LoadOrderGroupKey
));
4200 NDR_CHECK(ndr_pull_array_length(ndr
, &r
->in
.LoadOrderGroupKey
));
4201 if (ndr_get_array_length(ndr
, &r
->in
.LoadOrderGroupKey
) > ndr_get_array_size(ndr
, &r
->in
.LoadOrderGroupKey
)) {
4202 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
));
4204 NDR_CHECK(ndr_check_string_terminator(ndr
, ndr_get_array_length(ndr
, &r
->in
.LoadOrderGroupKey
), sizeof(uint16_t)));
4205 NDR_CHECK(ndr_pull_charset(ndr
, NDR_SCALARS
, &r
->in
.LoadOrderGroupKey
, ndr_get_array_length(ndr
, &r
->in
.LoadOrderGroupKey
), sizeof(uint16_t), CH_UTF16
));
4206 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_LoadOrderGroupKey_0
, 0);
4208 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_dependencies
));
4209 if (_ptr_dependencies
) {
4210 NDR_PULL_ALLOC(ndr
, r
->in
.dependencies
);
4212 r
->in
.dependencies
= NULL
;
4214 if (r
->in
.dependencies
) {
4215 _mem_save_dependencies_0
= NDR_PULL_GET_MEM_CTX(ndr
);
4216 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.dependencies
, 0);
4217 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->in
.dependencies
));
4218 NDR_CHECK(ndr_pull_array_length(ndr
, &r
->in
.dependencies
));
4219 if (ndr_get_array_length(ndr
, &r
->in
.dependencies
) > ndr_get_array_size(ndr
, &r
->in
.dependencies
)) {
4220 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
));
4222 NDR_CHECK(ndr_check_string_terminator(ndr
, ndr_get_array_length(ndr
, &r
->in
.dependencies
), sizeof(uint16_t)));
4223 NDR_CHECK(ndr_pull_charset(ndr
, NDR_SCALARS
, &r
->in
.dependencies
, ndr_get_array_length(ndr
, &r
->in
.dependencies
), sizeof(uint16_t), CH_UTF16
));
4224 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_dependencies_0
, 0);
4226 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_service_start_name
));
4227 if (_ptr_service_start_name
) {
4228 NDR_PULL_ALLOC(ndr
, r
->in
.service_start_name
);
4230 r
->in
.service_start_name
= NULL
;
4232 if (r
->in
.service_start_name
) {
4233 _mem_save_service_start_name_0
= NDR_PULL_GET_MEM_CTX(ndr
);
4234 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.service_start_name
, 0);
4235 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->in
.service_start_name
));
4236 NDR_CHECK(ndr_pull_array_length(ndr
, &r
->in
.service_start_name
));
4237 if (ndr_get_array_length(ndr
, &r
->in
.service_start_name
) > ndr_get_array_size(ndr
, &r
->in
.service_start_name
)) {
4238 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
));
4240 NDR_CHECK(ndr_check_string_terminator(ndr
, ndr_get_array_length(ndr
, &r
->in
.service_start_name
), sizeof(uint16_t)));
4241 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
));
4242 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_service_start_name_0
, 0);
4244 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_password
));
4245 if (_ptr_password
) {
4246 NDR_PULL_ALLOC(ndr
, r
->in
.password
);
4248 r
->in
.password
= NULL
;
4250 if (r
->in
.password
) {
4251 _mem_save_password_0
= NDR_PULL_GET_MEM_CTX(ndr
);
4252 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.password
, 0);
4253 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->in
.password
));
4254 NDR_CHECK(ndr_pull_array_length(ndr
, &r
->in
.password
));
4255 if (ndr_get_array_length(ndr
, &r
->in
.password
) > ndr_get_array_size(ndr
, &r
->in
.password
)) {
4256 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
));
4258 NDR_CHECK(ndr_check_string_terminator(ndr
, ndr_get_array_length(ndr
, &r
->in
.password
), sizeof(uint16_t)));
4259 NDR_CHECK(ndr_pull_charset(ndr
, NDR_SCALARS
, &r
->in
.password
, ndr_get_array_length(ndr
, &r
->in
.password
), sizeof(uint16_t), CH_UTF16
));
4260 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_password_0
, 0);
4263 if (flags
& NDR_OUT
) {
4264 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_TagId
));
4266 NDR_PULL_ALLOC(ndr
, r
->out
.TagId
);
4268 r
->out
.TagId
= NULL
;
4271 _mem_save_TagId_0
= NDR_PULL_GET_MEM_CTX(ndr
);
4272 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.TagId
, 0);
4273 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, r
->out
.TagId
));
4274 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_TagId_0
, 0);
4276 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
4278 return NDR_ERR_SUCCESS
;
4281 _PUBLIC_
void ndr_print_svcctl_CreateServiceA(struct ndr_print
*ndr
, const char *name
, int flags
, const struct svcctl_CreateServiceA
*r
)
4283 ndr_print_struct(ndr
, name
, "svcctl_CreateServiceA");
4285 if (flags
& NDR_SET_VALUES
) {
4286 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
4288 if (flags
& NDR_IN
) {
4289 ndr_print_struct(ndr
, "in", "svcctl_CreateServiceA");
4291 ndr_print_ptr(ndr
, "handle", r
->in
.handle
);
4293 ndr_print_policy_handle(ndr
, "handle", r
->in
.handle
);
4295 ndr_print_ptr(ndr
, "ServiceName", r
->in
.ServiceName
);
4297 if (r
->in
.ServiceName
) {
4298 ndr_print_string(ndr
, "ServiceName", r
->in
.ServiceName
);
4301 ndr_print_ptr(ndr
, "DisplayName", r
->in
.DisplayName
);
4303 if (r
->in
.DisplayName
) {
4304 ndr_print_string(ndr
, "DisplayName", r
->in
.DisplayName
);
4307 ndr_print_uint32(ndr
, "desired_access", r
->in
.desired_access
);
4308 ndr_print_uint32(ndr
, "type", r
->in
.type
);
4309 ndr_print_svcctl_StartType(ndr
, "start_type", r
->in
.start_type
);
4310 ndr_print_svcctl_ErrorControl(ndr
, "error_control", r
->in
.error_control
);
4311 ndr_print_ptr(ndr
, "binary_path", r
->in
.binary_path
);
4313 if (r
->in
.binary_path
) {
4314 ndr_print_string(ndr
, "binary_path", r
->in
.binary_path
);
4317 ndr_print_ptr(ndr
, "LoadOrderGroupKey", r
->in
.LoadOrderGroupKey
);
4319 if (r
->in
.LoadOrderGroupKey
) {
4320 ndr_print_string(ndr
, "LoadOrderGroupKey", r
->in
.LoadOrderGroupKey
);
4323 ndr_print_ptr(ndr
, "dependencies", r
->in
.dependencies
);
4325 if (r
->in
.dependencies
) {
4326 ndr_print_string(ndr
, "dependencies", r
->in
.dependencies
);
4329 ndr_print_ptr(ndr
, "service_start_name", r
->in
.service_start_name
);
4331 if (r
->in
.service_start_name
) {
4332 ndr_print_string(ndr
, "service_start_name", r
->in
.service_start_name
);
4335 ndr_print_ptr(ndr
, "password", r
->in
.password
);
4337 if (r
->in
.password
) {
4338 ndr_print_string(ndr
, "password", r
->in
.password
);
4343 if (flags
& NDR_OUT
) {
4344 ndr_print_struct(ndr
, "out", "svcctl_CreateServiceA");
4346 ndr_print_ptr(ndr
, "TagId", r
->out
.TagId
);
4349 ndr_print_uint32(ndr
, "TagId", *r
->out
.TagId
);
4352 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
4358 static enum ndr_err_code
ndr_push_svcctl_EnumDependentServicesA(struct ndr_push
*ndr
, int flags
, const struct svcctl_EnumDependentServicesA
*r
)
4360 if (flags
& NDR_IN
) {
4361 if (r
->in
.service
== NULL
) {
4362 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
4364 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
, r
->in
.service
));
4365 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.state
));
4366 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.buf_size
));
4368 if (flags
& NDR_OUT
) {
4369 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->out
.service_status
));
4370 if (r
->out
.service_status
) {
4371 NDR_CHECK(ndr_push_ENUM_SERVICE_STATUS(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->out
.service_status
));
4373 if (r
->out
.bytes_needed
== NULL
) {
4374 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
4376 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, *r
->out
.bytes_needed
));
4377 if (r
->out
.services_returned
== NULL
) {
4378 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
4380 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, *r
->out
.services_returned
));
4381 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
4383 return NDR_ERR_SUCCESS
;
4386 static enum ndr_err_code
ndr_pull_svcctl_EnumDependentServicesA(struct ndr_pull
*ndr
, int flags
, struct svcctl_EnumDependentServicesA
*r
)
4388 uint32_t _ptr_service_status
;
4389 TALLOC_CTX
*_mem_save_service_0
;
4390 TALLOC_CTX
*_mem_save_service_status_0
;
4391 TALLOC_CTX
*_mem_save_bytes_needed_0
;
4392 TALLOC_CTX
*_mem_save_services_returned_0
;
4393 if (flags
& NDR_IN
) {
4394 ZERO_STRUCT(r
->out
);
4396 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
4397 NDR_PULL_ALLOC(ndr
, r
->in
.service
);
4399 _mem_save_service_0
= NDR_PULL_GET_MEM_CTX(ndr
);
4400 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.service
, LIBNDR_FLAG_REF_ALLOC
);
4401 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
, r
->in
.service
));
4402 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_service_0
, LIBNDR_FLAG_REF_ALLOC
);
4403 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.state
));
4404 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.buf_size
));
4405 NDR_PULL_ALLOC(ndr
, r
->out
.bytes_needed
);
4406 ZERO_STRUCTP(r
->out
.bytes_needed
);
4407 NDR_PULL_ALLOC(ndr
, r
->out
.services_returned
);
4408 ZERO_STRUCTP(r
->out
.services_returned
);
4410 if (flags
& NDR_OUT
) {
4411 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_service_status
));
4412 if (_ptr_service_status
) {
4413 NDR_PULL_ALLOC(ndr
, r
->out
.service_status
);
4415 r
->out
.service_status
= NULL
;
4417 if (r
->out
.service_status
) {
4418 _mem_save_service_status_0
= NDR_PULL_GET_MEM_CTX(ndr
);
4419 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.service_status
, 0);
4420 NDR_CHECK(ndr_pull_ENUM_SERVICE_STATUS(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->out
.service_status
));
4421 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_service_status_0
, 0);
4423 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
4424 NDR_PULL_ALLOC(ndr
, r
->out
.bytes_needed
);
4426 _mem_save_bytes_needed_0
= NDR_PULL_GET_MEM_CTX(ndr
);
4427 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.bytes_needed
, LIBNDR_FLAG_REF_ALLOC
);
4428 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, r
->out
.bytes_needed
));
4429 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_bytes_needed_0
, LIBNDR_FLAG_REF_ALLOC
);
4430 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
4431 NDR_PULL_ALLOC(ndr
, r
->out
.services_returned
);
4433 _mem_save_services_returned_0
= NDR_PULL_GET_MEM_CTX(ndr
);
4434 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.services_returned
, LIBNDR_FLAG_REF_ALLOC
);
4435 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, r
->out
.services_returned
));
4436 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_services_returned_0
, LIBNDR_FLAG_REF_ALLOC
);
4437 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
4439 return NDR_ERR_SUCCESS
;
4442 _PUBLIC_
void ndr_print_svcctl_EnumDependentServicesA(struct ndr_print
*ndr
, const char *name
, int flags
, const struct svcctl_EnumDependentServicesA
*r
)
4444 ndr_print_struct(ndr
, name
, "svcctl_EnumDependentServicesA");
4446 if (flags
& NDR_SET_VALUES
) {
4447 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
4449 if (flags
& NDR_IN
) {
4450 ndr_print_struct(ndr
, "in", "svcctl_EnumDependentServicesA");
4452 ndr_print_ptr(ndr
, "service", r
->in
.service
);
4454 ndr_print_policy_handle(ndr
, "service", r
->in
.service
);
4456 ndr_print_uint32(ndr
, "state", r
->in
.state
);
4457 ndr_print_uint32(ndr
, "buf_size", r
->in
.buf_size
);
4460 if (flags
& NDR_OUT
) {
4461 ndr_print_struct(ndr
, "out", "svcctl_EnumDependentServicesA");
4463 ndr_print_ptr(ndr
, "service_status", r
->out
.service_status
);
4465 if (r
->out
.service_status
) {
4466 ndr_print_ENUM_SERVICE_STATUS(ndr
, "service_status", r
->out
.service_status
);
4469 ndr_print_ptr(ndr
, "bytes_needed", r
->out
.bytes_needed
);
4471 ndr_print_uint32(ndr
, "bytes_needed", *r
->out
.bytes_needed
);
4473 ndr_print_ptr(ndr
, "services_returned", r
->out
.services_returned
);
4475 ndr_print_uint32(ndr
, "services_returned", *r
->out
.services_returned
);
4477 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
4483 static enum ndr_err_code
ndr_push_svcctl_EnumServicesStatusA(struct ndr_push
*ndr
, int flags
, const struct svcctl_EnumServicesStatusA
*r
)
4485 if (flags
& NDR_IN
) {
4486 if (r
->in
.handle
== NULL
) {
4487 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
4489 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
, r
->in
.handle
));
4490 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.type
));
4491 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.state
));
4492 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.buf_size
));
4493 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.resume_handle
));
4494 if (r
->in
.resume_handle
) {
4495 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, *r
->in
.resume_handle
));
4498 if (flags
& NDR_OUT
) {
4499 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.buf_size
));
4500 NDR_CHECK(ndr_push_array_uint8(ndr
, NDR_SCALARS
, r
->out
.service
, r
->in
.buf_size
));
4501 if (r
->out
.bytes_needed
== NULL
) {
4502 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
4504 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, *r
->out
.bytes_needed
));
4505 if (r
->out
.services_returned
== NULL
) {
4506 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
4508 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, *r
->out
.services_returned
));
4509 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->out
.resume_handle
));
4510 if (r
->out
.resume_handle
) {
4511 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, *r
->out
.resume_handle
));
4513 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
4515 return NDR_ERR_SUCCESS
;
4518 static enum ndr_err_code
ndr_pull_svcctl_EnumServicesStatusA(struct ndr_pull
*ndr
, int flags
, struct svcctl_EnumServicesStatusA
*r
)
4520 uint32_t _ptr_resume_handle
;
4521 TALLOC_CTX
*_mem_save_handle_0
;
4522 TALLOC_CTX
*_mem_save_bytes_needed_0
;
4523 TALLOC_CTX
*_mem_save_services_returned_0
;
4524 TALLOC_CTX
*_mem_save_resume_handle_0
;
4525 if (flags
& NDR_IN
) {
4526 ZERO_STRUCT(r
->out
);
4528 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
4529 NDR_PULL_ALLOC(ndr
, r
->in
.handle
);
4531 _mem_save_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
4532 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.handle
, LIBNDR_FLAG_REF_ALLOC
);
4533 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
, r
->in
.handle
));
4534 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_handle_0
, LIBNDR_FLAG_REF_ALLOC
);
4535 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.type
));
4536 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.state
));
4537 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.buf_size
));
4538 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_resume_handle
));
4539 if (_ptr_resume_handle
) {
4540 NDR_PULL_ALLOC(ndr
, r
->in
.resume_handle
);
4542 r
->in
.resume_handle
= NULL
;
4544 if (r
->in
.resume_handle
) {
4545 _mem_save_resume_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
4546 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.resume_handle
, 0);
4547 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, r
->in
.resume_handle
));
4548 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_resume_handle_0
, 0);
4550 NDR_PULL_ALLOC(ndr
, r
->out
.bytes_needed
);
4551 ZERO_STRUCTP(r
->out
.bytes_needed
);
4552 NDR_PULL_ALLOC(ndr
, r
->out
.services_returned
);
4553 ZERO_STRUCTP(r
->out
.services_returned
);
4555 if (flags
& NDR_OUT
) {
4556 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->out
.service
));
4557 NDR_PULL_ALLOC_N(ndr
, r
->out
.service
, ndr_get_array_size(ndr
, &r
->out
.service
));
4558 NDR_CHECK(ndr_pull_array_uint8(ndr
, NDR_SCALARS
, r
->out
.service
, ndr_get_array_size(ndr
, &r
->out
.service
)));
4559 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
4560 NDR_PULL_ALLOC(ndr
, r
->out
.bytes_needed
);
4562 _mem_save_bytes_needed_0
= NDR_PULL_GET_MEM_CTX(ndr
);
4563 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.bytes_needed
, LIBNDR_FLAG_REF_ALLOC
);
4564 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, r
->out
.bytes_needed
));
4565 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_bytes_needed_0
, LIBNDR_FLAG_REF_ALLOC
);
4566 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
4567 NDR_PULL_ALLOC(ndr
, r
->out
.services_returned
);
4569 _mem_save_services_returned_0
= NDR_PULL_GET_MEM_CTX(ndr
);
4570 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.services_returned
, LIBNDR_FLAG_REF_ALLOC
);
4571 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, r
->out
.services_returned
));
4572 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_services_returned_0
, LIBNDR_FLAG_REF_ALLOC
);
4573 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_resume_handle
));
4574 if (_ptr_resume_handle
) {
4575 NDR_PULL_ALLOC(ndr
, r
->out
.resume_handle
);
4577 r
->out
.resume_handle
= NULL
;
4579 if (r
->out
.resume_handle
) {
4580 _mem_save_resume_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
4581 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.resume_handle
, 0);
4582 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, r
->out
.resume_handle
));
4583 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_resume_handle_0
, 0);
4585 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
4586 if (r
->out
.service
) {
4587 NDR_CHECK(ndr_check_array_size(ndr
, (void*)&r
->out
.service
, r
->in
.buf_size
));
4590 return NDR_ERR_SUCCESS
;
4593 _PUBLIC_
void ndr_print_svcctl_EnumServicesStatusA(struct ndr_print
*ndr
, const char *name
, int flags
, const struct svcctl_EnumServicesStatusA
*r
)
4595 ndr_print_struct(ndr
, name
, "svcctl_EnumServicesStatusA");
4597 if (flags
& NDR_SET_VALUES
) {
4598 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
4600 if (flags
& NDR_IN
) {
4601 ndr_print_struct(ndr
, "in", "svcctl_EnumServicesStatusA");
4603 ndr_print_ptr(ndr
, "handle", r
->in
.handle
);
4605 ndr_print_policy_handle(ndr
, "handle", r
->in
.handle
);
4607 ndr_print_uint32(ndr
, "type", r
->in
.type
);
4608 ndr_print_uint32(ndr
, "state", r
->in
.state
);
4609 ndr_print_uint32(ndr
, "buf_size", r
->in
.buf_size
);
4610 ndr_print_ptr(ndr
, "resume_handle", r
->in
.resume_handle
);
4612 if (r
->in
.resume_handle
) {
4613 ndr_print_uint32(ndr
, "resume_handle", *r
->in
.resume_handle
);
4618 if (flags
& NDR_OUT
) {
4619 ndr_print_struct(ndr
, "out", "svcctl_EnumServicesStatusA");
4621 ndr_print_array_uint8(ndr
, "service", r
->out
.service
, r
->in
.buf_size
);
4622 ndr_print_ptr(ndr
, "bytes_needed", r
->out
.bytes_needed
);
4624 ndr_print_uint32(ndr
, "bytes_needed", *r
->out
.bytes_needed
);
4626 ndr_print_ptr(ndr
, "services_returned", r
->out
.services_returned
);
4628 ndr_print_uint32(ndr
, "services_returned", *r
->out
.services_returned
);
4630 ndr_print_ptr(ndr
, "resume_handle", r
->out
.resume_handle
);
4632 if (r
->out
.resume_handle
) {
4633 ndr_print_uint32(ndr
, "resume_handle", *r
->out
.resume_handle
);
4636 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
4642 static enum ndr_err_code
ndr_push_svcctl_OpenSCManagerA(struct ndr_push
*ndr
, int flags
, const struct svcctl_OpenSCManagerA
*r
)
4644 if (flags
& NDR_IN
) {
4645 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.MachineName
));
4646 if (r
->in
.MachineName
) {
4647 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.MachineName
, CH_UTF16
)));
4648 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, 0));
4649 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.MachineName
, CH_UTF16
)));
4650 NDR_CHECK(ndr_push_charset(ndr
, NDR_SCALARS
, r
->in
.MachineName
, ndr_charset_length(r
->in
.MachineName
, CH_UTF16
), sizeof(uint16_t), CH_UTF16
));
4652 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.DatabaseName
));
4653 if (r
->in
.DatabaseName
) {
4654 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.DatabaseName
, CH_UTF16
)));
4655 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, 0));
4656 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.DatabaseName
, CH_UTF16
)));
4657 NDR_CHECK(ndr_push_charset(ndr
, NDR_SCALARS
, r
->in
.DatabaseName
, ndr_charset_length(r
->in
.DatabaseName
, CH_UTF16
), sizeof(uint16_t), CH_UTF16
));
4659 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.access_mask
));
4661 if (flags
& NDR_OUT
) {
4662 if (r
->out
.handle
== NULL
) {
4663 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
4665 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
, r
->out
.handle
));
4666 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
4668 return NDR_ERR_SUCCESS
;
4671 static enum ndr_err_code
ndr_pull_svcctl_OpenSCManagerA(struct ndr_pull
*ndr
, int flags
, struct svcctl_OpenSCManagerA
*r
)
4673 uint32_t _ptr_MachineName
;
4674 uint32_t _ptr_DatabaseName
;
4675 TALLOC_CTX
*_mem_save_MachineName_0
;
4676 TALLOC_CTX
*_mem_save_DatabaseName_0
;
4677 TALLOC_CTX
*_mem_save_handle_0
;
4678 if (flags
& NDR_IN
) {
4679 ZERO_STRUCT(r
->out
);
4681 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_MachineName
));
4682 if (_ptr_MachineName
) {
4683 NDR_PULL_ALLOC(ndr
, r
->in
.MachineName
);
4685 r
->in
.MachineName
= NULL
;
4687 if (r
->in
.MachineName
) {
4688 _mem_save_MachineName_0
= NDR_PULL_GET_MEM_CTX(ndr
);
4689 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.MachineName
, 0);
4690 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->in
.MachineName
));
4691 NDR_CHECK(ndr_pull_array_length(ndr
, &r
->in
.MachineName
));
4692 if (ndr_get_array_length(ndr
, &r
->in
.MachineName
) > ndr_get_array_size(ndr
, &r
->in
.MachineName
)) {
4693 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
));
4695 NDR_CHECK(ndr_check_string_terminator(ndr
, ndr_get_array_length(ndr
, &r
->in
.MachineName
), sizeof(uint16_t)));
4696 NDR_CHECK(ndr_pull_charset(ndr
, NDR_SCALARS
, &r
->in
.MachineName
, ndr_get_array_length(ndr
, &r
->in
.MachineName
), sizeof(uint16_t), CH_UTF16
));
4697 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_MachineName_0
, 0);
4699 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_DatabaseName
));
4700 if (_ptr_DatabaseName
) {
4701 NDR_PULL_ALLOC(ndr
, r
->in
.DatabaseName
);
4703 r
->in
.DatabaseName
= NULL
;
4705 if (r
->in
.DatabaseName
) {
4706 _mem_save_DatabaseName_0
= NDR_PULL_GET_MEM_CTX(ndr
);
4707 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.DatabaseName
, 0);
4708 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->in
.DatabaseName
));
4709 NDR_CHECK(ndr_pull_array_length(ndr
, &r
->in
.DatabaseName
));
4710 if (ndr_get_array_length(ndr
, &r
->in
.DatabaseName
) > ndr_get_array_size(ndr
, &r
->in
.DatabaseName
)) {
4711 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
));
4713 NDR_CHECK(ndr_check_string_terminator(ndr
, ndr_get_array_length(ndr
, &r
->in
.DatabaseName
), sizeof(uint16_t)));
4714 NDR_CHECK(ndr_pull_charset(ndr
, NDR_SCALARS
, &r
->in
.DatabaseName
, ndr_get_array_length(ndr
, &r
->in
.DatabaseName
), sizeof(uint16_t), CH_UTF16
));
4715 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_DatabaseName_0
, 0);
4717 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.access_mask
));
4718 NDR_PULL_ALLOC(ndr
, r
->out
.handle
);
4719 ZERO_STRUCTP(r
->out
.handle
);
4721 if (flags
& NDR_OUT
) {
4722 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
4723 NDR_PULL_ALLOC(ndr
, r
->out
.handle
);
4725 _mem_save_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
4726 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.handle
, LIBNDR_FLAG_REF_ALLOC
);
4727 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
, r
->out
.handle
));
4728 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_handle_0
, LIBNDR_FLAG_REF_ALLOC
);
4729 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
4731 return NDR_ERR_SUCCESS
;
4734 _PUBLIC_
void ndr_print_svcctl_OpenSCManagerA(struct ndr_print
*ndr
, const char *name
, int flags
, const struct svcctl_OpenSCManagerA
*r
)
4736 ndr_print_struct(ndr
, name
, "svcctl_OpenSCManagerA");
4738 if (flags
& NDR_SET_VALUES
) {
4739 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
4741 if (flags
& NDR_IN
) {
4742 ndr_print_struct(ndr
, "in", "svcctl_OpenSCManagerA");
4744 ndr_print_ptr(ndr
, "MachineName", r
->in
.MachineName
);
4746 if (r
->in
.MachineName
) {
4747 ndr_print_string(ndr
, "MachineName", r
->in
.MachineName
);
4750 ndr_print_ptr(ndr
, "DatabaseName", r
->in
.DatabaseName
);
4752 if (r
->in
.DatabaseName
) {
4753 ndr_print_string(ndr
, "DatabaseName", r
->in
.DatabaseName
);
4756 ndr_print_uint32(ndr
, "access_mask", r
->in
.access_mask
);
4759 if (flags
& NDR_OUT
) {
4760 ndr_print_struct(ndr
, "out", "svcctl_OpenSCManagerA");
4762 ndr_print_ptr(ndr
, "handle", r
->out
.handle
);
4764 ndr_print_policy_handle(ndr
, "handle", r
->out
.handle
);
4766 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
4772 static enum ndr_err_code
ndr_push_svcctl_OpenServiceA(struct ndr_push
*ndr
, int flags
, const struct svcctl_OpenServiceA
*r
)
4774 if (flags
& NDR_IN
) {
4775 if (r
->in
.scmanager_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
, r
->in
.scmanager_handle
));
4779 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.ServiceName
));
4780 if (r
->in
.ServiceName
) {
4781 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.ServiceName
, 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
.ServiceName
, CH_UTF16
)));
4784 NDR_CHECK(ndr_push_charset(ndr
, NDR_SCALARS
, r
->in
.ServiceName
, ndr_charset_length(r
->in
.ServiceName
, CH_UTF16
), sizeof(uint16_t), CH_UTF16
));
4786 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.access_mask
));
4788 if (flags
& NDR_OUT
) {
4789 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
4791 return NDR_ERR_SUCCESS
;
4794 static enum ndr_err_code
ndr_pull_svcctl_OpenServiceA(struct ndr_pull
*ndr
, int flags
, struct svcctl_OpenServiceA
*r
)
4796 uint32_t _ptr_ServiceName
;
4797 TALLOC_CTX
*_mem_save_scmanager_handle_0
;
4798 TALLOC_CTX
*_mem_save_ServiceName_0
;
4799 if (flags
& NDR_IN
) {
4800 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
4801 NDR_PULL_ALLOC(ndr
, r
->in
.scmanager_handle
);
4803 _mem_save_scmanager_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
4804 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.scmanager_handle
, LIBNDR_FLAG_REF_ALLOC
);
4805 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
, r
->in
.scmanager_handle
));
4806 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_scmanager_handle_0
, LIBNDR_FLAG_REF_ALLOC
);
4807 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_ServiceName
));
4808 if (_ptr_ServiceName
) {
4809 NDR_PULL_ALLOC(ndr
, r
->in
.ServiceName
);
4811 r
->in
.ServiceName
= NULL
;
4813 if (r
->in
.ServiceName
) {
4814 _mem_save_ServiceName_0
= NDR_PULL_GET_MEM_CTX(ndr
);
4815 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.ServiceName
, 0);
4816 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->in
.ServiceName
));
4817 NDR_CHECK(ndr_pull_array_length(ndr
, &r
->in
.ServiceName
));
4818 if (ndr_get_array_length(ndr
, &r
->in
.ServiceName
) > ndr_get_array_size(ndr
, &r
->in
.ServiceName
)) {
4819 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
));
4821 NDR_CHECK(ndr_check_string_terminator(ndr
, ndr_get_array_length(ndr
, &r
->in
.ServiceName
), sizeof(uint16_t)));
4822 NDR_CHECK(ndr_pull_charset(ndr
, NDR_SCALARS
, &r
->in
.ServiceName
, ndr_get_array_length(ndr
, &r
->in
.ServiceName
), sizeof(uint16_t), CH_UTF16
));
4823 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_ServiceName_0
, 0);
4825 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.access_mask
));
4827 if (flags
& NDR_OUT
) {
4828 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
4830 return NDR_ERR_SUCCESS
;
4833 _PUBLIC_
void ndr_print_svcctl_OpenServiceA(struct ndr_print
*ndr
, const char *name
, int flags
, const struct svcctl_OpenServiceA
*r
)
4835 ndr_print_struct(ndr
, name
, "svcctl_OpenServiceA");
4837 if (flags
& NDR_SET_VALUES
) {
4838 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
4840 if (flags
& NDR_IN
) {
4841 ndr_print_struct(ndr
, "in", "svcctl_OpenServiceA");
4843 ndr_print_ptr(ndr
, "scmanager_handle", r
->in
.scmanager_handle
);
4845 ndr_print_policy_handle(ndr
, "scmanager_handle", r
->in
.scmanager_handle
);
4847 ndr_print_ptr(ndr
, "ServiceName", r
->in
.ServiceName
);
4849 if (r
->in
.ServiceName
) {
4850 ndr_print_string(ndr
, "ServiceName", r
->in
.ServiceName
);
4853 ndr_print_uint32(ndr
, "access_mask", r
->in
.access_mask
);
4856 if (flags
& NDR_OUT
) {
4857 ndr_print_struct(ndr
, "out", "svcctl_OpenServiceA");
4859 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
4865 static enum ndr_err_code
ndr_push_svcctl_QueryServiceConfigA(struct ndr_push
*ndr
, int flags
, const struct svcctl_QueryServiceConfigA
*r
)
4867 if (flags
& NDR_IN
) {
4868 if (r
->in
.handle
== NULL
) {
4869 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
4871 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
, r
->in
.handle
));
4872 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.buf_size
));
4874 if (flags
& NDR_OUT
) {
4875 NDR_CHECK(ndr_push_array_uint8(ndr
, NDR_SCALARS
, r
->out
.query
, r
->in
.buf_size
));
4876 if (r
->out
.bytes_needed
== NULL
) {
4877 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
4879 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, *r
->out
.bytes_needed
));
4880 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
4882 return NDR_ERR_SUCCESS
;
4885 static enum ndr_err_code
ndr_pull_svcctl_QueryServiceConfigA(struct ndr_pull
*ndr
, int flags
, struct svcctl_QueryServiceConfigA
*r
)
4887 TALLOC_CTX
*_mem_save_handle_0
;
4888 TALLOC_CTX
*_mem_save_bytes_needed_0
;
4889 if (flags
& NDR_IN
) {
4890 ZERO_STRUCT(r
->out
);
4892 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
4893 NDR_PULL_ALLOC(ndr
, r
->in
.handle
);
4895 _mem_save_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
4896 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.handle
, LIBNDR_FLAG_REF_ALLOC
);
4897 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
, r
->in
.handle
));
4898 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_handle_0
, LIBNDR_FLAG_REF_ALLOC
);
4899 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.buf_size
));
4900 NDR_PULL_ALLOC(ndr
, r
->out
.bytes_needed
);
4901 ZERO_STRUCTP(r
->out
.bytes_needed
);
4903 if (flags
& NDR_OUT
) {
4904 NDR_PULL_ALLOC_N(ndr
, r
->out
.query
, r
->in
.buf_size
);
4905 NDR_CHECK(ndr_pull_array_uint8(ndr
, NDR_SCALARS
, r
->out
.query
, r
->in
.buf_size
));
4906 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
4907 NDR_PULL_ALLOC(ndr
, r
->out
.bytes_needed
);
4909 _mem_save_bytes_needed_0
= NDR_PULL_GET_MEM_CTX(ndr
);
4910 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.bytes_needed
, LIBNDR_FLAG_REF_ALLOC
);
4911 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, r
->out
.bytes_needed
));
4912 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_bytes_needed_0
, LIBNDR_FLAG_REF_ALLOC
);
4913 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
4915 return NDR_ERR_SUCCESS
;
4918 _PUBLIC_
void ndr_print_svcctl_QueryServiceConfigA(struct ndr_print
*ndr
, const char *name
, int flags
, const struct svcctl_QueryServiceConfigA
*r
)
4920 ndr_print_struct(ndr
, name
, "svcctl_QueryServiceConfigA");
4922 if (flags
& NDR_SET_VALUES
) {
4923 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
4925 if (flags
& NDR_IN
) {
4926 ndr_print_struct(ndr
, "in", "svcctl_QueryServiceConfigA");
4928 ndr_print_ptr(ndr
, "handle", r
->in
.handle
);
4930 ndr_print_policy_handle(ndr
, "handle", r
->in
.handle
);
4932 ndr_print_uint32(ndr
, "buf_size", r
->in
.buf_size
);
4935 if (flags
& NDR_OUT
) {
4936 ndr_print_struct(ndr
, "out", "svcctl_QueryServiceConfigA");
4938 ndr_print_array_uint8(ndr
, "query", r
->out
.query
, r
->in
.buf_size
);
4939 ndr_print_ptr(ndr
, "bytes_needed", r
->out
.bytes_needed
);
4941 ndr_print_uint32(ndr
, "bytes_needed", *r
->out
.bytes_needed
);
4943 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
4949 static enum ndr_err_code
ndr_push_svcctl_QueryServiceLockStatusA(struct ndr_push
*ndr
, int flags
, const struct svcctl_QueryServiceLockStatusA
*r
)
4951 if (flags
& NDR_IN
) {
4952 if (r
->in
.handle
== NULL
) {
4953 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
4955 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
, r
->in
.handle
));
4956 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.buf_size
));
4958 if (flags
& NDR_OUT
) {
4959 if (r
->out
.lock_status
== NULL
) {
4960 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
4962 NDR_CHECK(ndr_push_SERVICE_LOCK_STATUS(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->out
.lock_status
));
4963 if (r
->out
.required_buf_size
== NULL
) {
4964 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
4966 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, *r
->out
.required_buf_size
));
4967 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
4969 return NDR_ERR_SUCCESS
;
4972 static enum ndr_err_code
ndr_pull_svcctl_QueryServiceLockStatusA(struct ndr_pull
*ndr
, int flags
, struct svcctl_QueryServiceLockStatusA
*r
)
4974 TALLOC_CTX
*_mem_save_handle_0
;
4975 TALLOC_CTX
*_mem_save_lock_status_0
;
4976 TALLOC_CTX
*_mem_save_required_buf_size_0
;
4977 if (flags
& NDR_IN
) {
4978 ZERO_STRUCT(r
->out
);
4980 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
4981 NDR_PULL_ALLOC(ndr
, r
->in
.handle
);
4983 _mem_save_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
4984 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.handle
, LIBNDR_FLAG_REF_ALLOC
);
4985 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
, r
->in
.handle
));
4986 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_handle_0
, LIBNDR_FLAG_REF_ALLOC
);
4987 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.buf_size
));
4988 NDR_PULL_ALLOC(ndr
, r
->out
.lock_status
);
4989 ZERO_STRUCTP(r
->out
.lock_status
);
4990 NDR_PULL_ALLOC(ndr
, r
->out
.required_buf_size
);
4991 ZERO_STRUCTP(r
->out
.required_buf_size
);
4993 if (flags
& NDR_OUT
) {
4994 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
4995 NDR_PULL_ALLOC(ndr
, r
->out
.lock_status
);
4997 _mem_save_lock_status_0
= NDR_PULL_GET_MEM_CTX(ndr
);
4998 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.lock_status
, LIBNDR_FLAG_REF_ALLOC
);
4999 NDR_CHECK(ndr_pull_SERVICE_LOCK_STATUS(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->out
.lock_status
));
5000 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_lock_status_0
, LIBNDR_FLAG_REF_ALLOC
);
5001 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
5002 NDR_PULL_ALLOC(ndr
, r
->out
.required_buf_size
);
5004 _mem_save_required_buf_size_0
= NDR_PULL_GET_MEM_CTX(ndr
);
5005 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.required_buf_size
, LIBNDR_FLAG_REF_ALLOC
);
5006 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, r
->out
.required_buf_size
));
5007 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_required_buf_size_0
, LIBNDR_FLAG_REF_ALLOC
);
5008 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
5010 return NDR_ERR_SUCCESS
;
5013 _PUBLIC_
void ndr_print_svcctl_QueryServiceLockStatusA(struct ndr_print
*ndr
, const char *name
, int flags
, const struct svcctl_QueryServiceLockStatusA
*r
)
5015 ndr_print_struct(ndr
, name
, "svcctl_QueryServiceLockStatusA");
5017 if (flags
& NDR_SET_VALUES
) {
5018 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
5020 if (flags
& NDR_IN
) {
5021 ndr_print_struct(ndr
, "in", "svcctl_QueryServiceLockStatusA");
5023 ndr_print_ptr(ndr
, "handle", r
->in
.handle
);
5025 ndr_print_policy_handle(ndr
, "handle", r
->in
.handle
);
5027 ndr_print_uint32(ndr
, "buf_size", r
->in
.buf_size
);
5030 if (flags
& NDR_OUT
) {
5031 ndr_print_struct(ndr
, "out", "svcctl_QueryServiceLockStatusA");
5033 ndr_print_ptr(ndr
, "lock_status", r
->out
.lock_status
);
5035 ndr_print_SERVICE_LOCK_STATUS(ndr
, "lock_status", r
->out
.lock_status
);
5037 ndr_print_ptr(ndr
, "required_buf_size", r
->out
.required_buf_size
);
5039 ndr_print_uint32(ndr
, "required_buf_size", *r
->out
.required_buf_size
);
5041 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
5047 static enum ndr_err_code
ndr_push_svcctl_StartServiceA(struct ndr_push
*ndr
, int flags
, const struct svcctl_StartServiceA
*r
)
5049 if (flags
& NDR_IN
) {
5050 if (r
->in
.handle
== NULL
) {
5051 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
5053 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
, r
->in
.handle
));
5054 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.NumArgs
));
5055 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.Arguments
));
5056 if (r
->in
.Arguments
) {
5057 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.Arguments
, CH_UTF16
)));
5058 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, 0));
5059 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.Arguments
, CH_UTF16
)));
5060 NDR_CHECK(ndr_push_charset(ndr
, NDR_SCALARS
, r
->in
.Arguments
, ndr_charset_length(r
->in
.Arguments
, CH_UTF16
), sizeof(uint16_t), CH_UTF16
));
5063 if (flags
& NDR_OUT
) {
5064 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
5066 return NDR_ERR_SUCCESS
;
5069 static enum ndr_err_code
ndr_pull_svcctl_StartServiceA(struct ndr_pull
*ndr
, int flags
, struct svcctl_StartServiceA
*r
)
5071 uint32_t _ptr_Arguments
;
5072 TALLOC_CTX
*_mem_save_handle_0
;
5073 TALLOC_CTX
*_mem_save_Arguments_0
;
5074 if (flags
& NDR_IN
) {
5075 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
5076 NDR_PULL_ALLOC(ndr
, r
->in
.handle
);
5078 _mem_save_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
5079 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.handle
, LIBNDR_FLAG_REF_ALLOC
);
5080 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
, r
->in
.handle
));
5081 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_handle_0
, LIBNDR_FLAG_REF_ALLOC
);
5082 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.NumArgs
));
5083 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_Arguments
));
5084 if (_ptr_Arguments
) {
5085 NDR_PULL_ALLOC(ndr
, r
->in
.Arguments
);
5087 r
->in
.Arguments
= NULL
;
5089 if (r
->in
.Arguments
) {
5090 _mem_save_Arguments_0
= NDR_PULL_GET_MEM_CTX(ndr
);
5091 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.Arguments
, 0);
5092 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->in
.Arguments
));
5093 NDR_CHECK(ndr_pull_array_length(ndr
, &r
->in
.Arguments
));
5094 if (ndr_get_array_length(ndr
, &r
->in
.Arguments
) > ndr_get_array_size(ndr
, &r
->in
.Arguments
)) {
5095 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
));
5097 NDR_CHECK(ndr_check_string_terminator(ndr
, ndr_get_array_length(ndr
, &r
->in
.Arguments
), sizeof(uint16_t)));
5098 NDR_CHECK(ndr_pull_charset(ndr
, NDR_SCALARS
, &r
->in
.Arguments
, ndr_get_array_length(ndr
, &r
->in
.Arguments
), sizeof(uint16_t), CH_UTF16
));
5099 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_Arguments_0
, 0);
5102 if (flags
& NDR_OUT
) {
5103 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
5105 return NDR_ERR_SUCCESS
;
5108 _PUBLIC_
void ndr_print_svcctl_StartServiceA(struct ndr_print
*ndr
, const char *name
, int flags
, const struct svcctl_StartServiceA
*r
)
5110 ndr_print_struct(ndr
, name
, "svcctl_StartServiceA");
5112 if (flags
& NDR_SET_VALUES
) {
5113 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
5115 if (flags
& NDR_IN
) {
5116 ndr_print_struct(ndr
, "in", "svcctl_StartServiceA");
5118 ndr_print_ptr(ndr
, "handle", r
->in
.handle
);
5120 ndr_print_policy_handle(ndr
, "handle", r
->in
.handle
);
5122 ndr_print_uint32(ndr
, "NumArgs", r
->in
.NumArgs
);
5123 ndr_print_ptr(ndr
, "Arguments", r
->in
.Arguments
);
5125 if (r
->in
.Arguments
) {
5126 ndr_print_string(ndr
, "Arguments", r
->in
.Arguments
);
5131 if (flags
& NDR_OUT
) {
5132 ndr_print_struct(ndr
, "out", "svcctl_StartServiceA");
5134 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
5140 static enum ndr_err_code
ndr_push_svcctl_GetServiceDisplayNameA(struct ndr_push
*ndr
, int flags
, const struct svcctl_GetServiceDisplayNameA
*r
)
5142 if (flags
& NDR_IN
) {
5143 if (r
->in
.handle
== NULL
) {
5144 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
5146 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
, r
->in
.handle
));
5147 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.service_name
));
5148 if (r
->in
.service_name
) {
5149 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.service_name
, CH_UTF16
)));
5150 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, 0));
5151 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.service_name
, CH_UTF16
)));
5152 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
));
5154 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.display_name_length
));
5155 if (r
->in
.display_name_length
) {
5156 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, *r
->in
.display_name_length
));
5159 if (flags
& NDR_OUT
) {
5160 if (r
->out
.display_name
== NULL
) {
5161 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
5163 NDR_CHECK(ndr_push_unique_ptr(ndr
, *r
->out
.display_name
));
5164 if (*r
->out
.display_name
) {
5165 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(*r
->out
.display_name
, CH_UTF16
)));
5166 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, 0));
5167 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(*r
->out
.display_name
, CH_UTF16
)));
5168 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
));
5170 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->out
.display_name_length
));
5171 if (r
->out
.display_name_length
) {
5172 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, *r
->out
.display_name_length
));
5174 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
5176 return NDR_ERR_SUCCESS
;
5179 static enum ndr_err_code
ndr_pull_svcctl_GetServiceDisplayNameA(struct ndr_pull
*ndr
, int flags
, struct svcctl_GetServiceDisplayNameA
*r
)
5181 uint32_t _ptr_service_name
;
5182 uint32_t _ptr_display_name
;
5183 uint32_t _ptr_display_name_length
;
5184 TALLOC_CTX
*_mem_save_handle_0
;
5185 TALLOC_CTX
*_mem_save_service_name_0
;
5186 TALLOC_CTX
*_mem_save_display_name_0
;
5187 TALLOC_CTX
*_mem_save_display_name_1
;
5188 TALLOC_CTX
*_mem_save_display_name_length_0
;
5189 if (flags
& NDR_IN
) {
5190 ZERO_STRUCT(r
->out
);
5192 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
5193 NDR_PULL_ALLOC(ndr
, r
->in
.handle
);
5195 _mem_save_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
5196 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.handle
, LIBNDR_FLAG_REF_ALLOC
);
5197 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
, r
->in
.handle
));
5198 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_handle_0
, LIBNDR_FLAG_REF_ALLOC
);
5199 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_service_name
));
5200 if (_ptr_service_name
) {
5201 NDR_PULL_ALLOC(ndr
, r
->in
.service_name
);
5203 r
->in
.service_name
= NULL
;
5205 if (r
->in
.service_name
) {
5206 _mem_save_service_name_0
= NDR_PULL_GET_MEM_CTX(ndr
);
5207 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.service_name
, 0);
5208 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->in
.service_name
));
5209 NDR_CHECK(ndr_pull_array_length(ndr
, &r
->in
.service_name
));
5210 if (ndr_get_array_length(ndr
, &r
->in
.service_name
) > ndr_get_array_size(ndr
, &r
->in
.service_name
)) {
5211 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
));
5213 NDR_CHECK(ndr_check_string_terminator(ndr
, ndr_get_array_length(ndr
, &r
->in
.service_name
), sizeof(uint16_t)));
5214 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
));
5215 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_service_name_0
, 0);
5217 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_display_name_length
));
5218 if (_ptr_display_name_length
) {
5219 NDR_PULL_ALLOC(ndr
, r
->in
.display_name_length
);
5221 r
->in
.display_name_length
= NULL
;
5223 if (r
->in
.display_name_length
) {
5224 _mem_save_display_name_length_0
= NDR_PULL_GET_MEM_CTX(ndr
);
5225 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.display_name_length
, 0);
5226 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, r
->in
.display_name_length
));
5227 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_display_name_length_0
, 0);
5229 NDR_PULL_ALLOC(ndr
, r
->out
.display_name
);
5230 ZERO_STRUCTP(r
->out
.display_name
);
5232 if (flags
& NDR_OUT
) {
5233 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
5234 NDR_PULL_ALLOC(ndr
, r
->out
.display_name
);
5236 _mem_save_display_name_0
= NDR_PULL_GET_MEM_CTX(ndr
);
5237 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.display_name
, LIBNDR_FLAG_REF_ALLOC
);
5238 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_display_name
));
5239 if (_ptr_display_name
) {
5240 NDR_PULL_ALLOC(ndr
, *r
->out
.display_name
);
5242 *r
->out
.display_name
= NULL
;
5244 if (*r
->out
.display_name
) {
5245 _mem_save_display_name_1
= NDR_PULL_GET_MEM_CTX(ndr
);
5246 NDR_PULL_SET_MEM_CTX(ndr
, *r
->out
.display_name
, 0);
5247 NDR_CHECK(ndr_pull_array_size(ndr
, r
->out
.display_name
));
5248 NDR_CHECK(ndr_pull_array_length(ndr
, r
->out
.display_name
));
5249 if (ndr_get_array_length(ndr
, r
->out
.display_name
) > ndr_get_array_size(ndr
, r
->out
.display_name
)) {
5250 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
));
5252 NDR_CHECK(ndr_check_string_terminator(ndr
, ndr_get_array_length(ndr
, r
->out
.display_name
), sizeof(uint16_t)));
5253 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
));
5254 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_display_name_1
, 0);
5256 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_display_name_0
, LIBNDR_FLAG_REF_ALLOC
);
5257 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_display_name_length
));
5258 if (_ptr_display_name_length
) {
5259 NDR_PULL_ALLOC(ndr
, r
->out
.display_name_length
);
5261 r
->out
.display_name_length
= NULL
;
5263 if (r
->out
.display_name_length
) {
5264 _mem_save_display_name_length_0
= NDR_PULL_GET_MEM_CTX(ndr
);
5265 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.display_name_length
, 0);
5266 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, r
->out
.display_name_length
));
5267 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_display_name_length_0
, 0);
5269 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
5271 return NDR_ERR_SUCCESS
;
5274 _PUBLIC_
void ndr_print_svcctl_GetServiceDisplayNameA(struct ndr_print
*ndr
, const char *name
, int flags
, const struct svcctl_GetServiceDisplayNameA
*r
)
5276 ndr_print_struct(ndr
, name
, "svcctl_GetServiceDisplayNameA");
5278 if (flags
& NDR_SET_VALUES
) {
5279 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
5281 if (flags
& NDR_IN
) {
5282 ndr_print_struct(ndr
, "in", "svcctl_GetServiceDisplayNameA");
5284 ndr_print_ptr(ndr
, "handle", r
->in
.handle
);
5286 ndr_print_policy_handle(ndr
, "handle", r
->in
.handle
);
5288 ndr_print_ptr(ndr
, "service_name", r
->in
.service_name
);
5290 if (r
->in
.service_name
) {
5291 ndr_print_string(ndr
, "service_name", r
->in
.service_name
);
5294 ndr_print_ptr(ndr
, "display_name_length", r
->in
.display_name_length
);
5296 if (r
->in
.display_name_length
) {
5297 ndr_print_uint32(ndr
, "display_name_length", *r
->in
.display_name_length
);
5302 if (flags
& NDR_OUT
) {
5303 ndr_print_struct(ndr
, "out", "svcctl_GetServiceDisplayNameA");
5305 ndr_print_ptr(ndr
, "display_name", r
->out
.display_name
);
5307 ndr_print_ptr(ndr
, "display_name", *r
->out
.display_name
);
5309 if (*r
->out
.display_name
) {
5310 ndr_print_string(ndr
, "display_name", *r
->out
.display_name
);
5314 ndr_print_ptr(ndr
, "display_name_length", r
->out
.display_name_length
);
5316 if (r
->out
.display_name_length
) {
5317 ndr_print_uint32(ndr
, "display_name_length", *r
->out
.display_name_length
);
5320 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
5326 static enum ndr_err_code
ndr_push_svcctl_GetServiceKeyNameA(struct ndr_push
*ndr
, int flags
, const struct svcctl_GetServiceKeyNameA
*r
)
5328 if (flags
& NDR_IN
) {
5329 if (r
->in
.handle
== NULL
) {
5330 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
5332 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
, r
->in
.handle
));
5333 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.service_name
));
5334 if (r
->in
.service_name
) {
5335 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.service_name
, CH_UTF16
)));
5336 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, 0));
5337 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.service_name
, CH_UTF16
)));
5338 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
));
5340 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.display_name_length
));
5341 if (r
->in
.display_name_length
) {
5342 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, *r
->in
.display_name_length
));
5345 if (flags
& NDR_OUT
) {
5346 if (r
->out
.key_name
== NULL
) {
5347 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
5349 NDR_CHECK(ndr_push_unique_ptr(ndr
, *r
->out
.key_name
));
5350 if (*r
->out
.key_name
) {
5351 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(*r
->out
.key_name
, CH_UTF16
)));
5352 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, 0));
5353 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(*r
->out
.key_name
, CH_UTF16
)));
5354 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
));
5356 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->out
.display_name_length
));
5357 if (r
->out
.display_name_length
) {
5358 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, *r
->out
.display_name_length
));
5360 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
5362 return NDR_ERR_SUCCESS
;
5365 static enum ndr_err_code
ndr_pull_svcctl_GetServiceKeyNameA(struct ndr_pull
*ndr
, int flags
, struct svcctl_GetServiceKeyNameA
*r
)
5367 uint32_t _ptr_service_name
;
5368 uint32_t _ptr_key_name
;
5369 uint32_t _ptr_display_name_length
;
5370 TALLOC_CTX
*_mem_save_handle_0
;
5371 TALLOC_CTX
*_mem_save_service_name_0
;
5372 TALLOC_CTX
*_mem_save_key_name_0
;
5373 TALLOC_CTX
*_mem_save_key_name_1
;
5374 TALLOC_CTX
*_mem_save_display_name_length_0
;
5375 if (flags
& NDR_IN
) {
5376 ZERO_STRUCT(r
->out
);
5378 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
5379 NDR_PULL_ALLOC(ndr
, r
->in
.handle
);
5381 _mem_save_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
5382 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.handle
, LIBNDR_FLAG_REF_ALLOC
);
5383 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
, r
->in
.handle
));
5384 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_handle_0
, LIBNDR_FLAG_REF_ALLOC
);
5385 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_service_name
));
5386 if (_ptr_service_name
) {
5387 NDR_PULL_ALLOC(ndr
, r
->in
.service_name
);
5389 r
->in
.service_name
= NULL
;
5391 if (r
->in
.service_name
) {
5392 _mem_save_service_name_0
= NDR_PULL_GET_MEM_CTX(ndr
);
5393 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.service_name
, 0);
5394 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->in
.service_name
));
5395 NDR_CHECK(ndr_pull_array_length(ndr
, &r
->in
.service_name
));
5396 if (ndr_get_array_length(ndr
, &r
->in
.service_name
) > ndr_get_array_size(ndr
, &r
->in
.service_name
)) {
5397 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
));
5399 NDR_CHECK(ndr_check_string_terminator(ndr
, ndr_get_array_length(ndr
, &r
->in
.service_name
), sizeof(uint16_t)));
5400 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
));
5401 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_service_name_0
, 0);
5403 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_display_name_length
));
5404 if (_ptr_display_name_length
) {
5405 NDR_PULL_ALLOC(ndr
, r
->in
.display_name_length
);
5407 r
->in
.display_name_length
= NULL
;
5409 if (r
->in
.display_name_length
) {
5410 _mem_save_display_name_length_0
= NDR_PULL_GET_MEM_CTX(ndr
);
5411 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.display_name_length
, 0);
5412 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, r
->in
.display_name_length
));
5413 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_display_name_length_0
, 0);
5415 NDR_PULL_ALLOC(ndr
, r
->out
.key_name
);
5416 ZERO_STRUCTP(r
->out
.key_name
);
5418 if (flags
& NDR_OUT
) {
5419 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
5420 NDR_PULL_ALLOC(ndr
, r
->out
.key_name
);
5422 _mem_save_key_name_0
= NDR_PULL_GET_MEM_CTX(ndr
);
5423 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.key_name
, LIBNDR_FLAG_REF_ALLOC
);
5424 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_key_name
));
5425 if (_ptr_key_name
) {
5426 NDR_PULL_ALLOC(ndr
, *r
->out
.key_name
);
5428 *r
->out
.key_name
= NULL
;
5430 if (*r
->out
.key_name
) {
5431 _mem_save_key_name_1
= NDR_PULL_GET_MEM_CTX(ndr
);
5432 NDR_PULL_SET_MEM_CTX(ndr
, *r
->out
.key_name
, 0);
5433 NDR_CHECK(ndr_pull_array_size(ndr
, r
->out
.key_name
));
5434 NDR_CHECK(ndr_pull_array_length(ndr
, r
->out
.key_name
));
5435 if (ndr_get_array_length(ndr
, r
->out
.key_name
) > ndr_get_array_size(ndr
, r
->out
.key_name
)) {
5436 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
));
5438 NDR_CHECK(ndr_check_string_terminator(ndr
, ndr_get_array_length(ndr
, r
->out
.key_name
), sizeof(uint16_t)));
5439 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
));
5440 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_key_name_1
, 0);
5442 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_key_name_0
, LIBNDR_FLAG_REF_ALLOC
);
5443 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_display_name_length
));
5444 if (_ptr_display_name_length
) {
5445 NDR_PULL_ALLOC(ndr
, r
->out
.display_name_length
);
5447 r
->out
.display_name_length
= NULL
;
5449 if (r
->out
.display_name_length
) {
5450 _mem_save_display_name_length_0
= NDR_PULL_GET_MEM_CTX(ndr
);
5451 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.display_name_length
, 0);
5452 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, r
->out
.display_name_length
));
5453 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_display_name_length_0
, 0);
5455 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
5457 return NDR_ERR_SUCCESS
;
5460 _PUBLIC_
void ndr_print_svcctl_GetServiceKeyNameA(struct ndr_print
*ndr
, const char *name
, int flags
, const struct svcctl_GetServiceKeyNameA
*r
)
5462 ndr_print_struct(ndr
, name
, "svcctl_GetServiceKeyNameA");
5464 if (flags
& NDR_SET_VALUES
) {
5465 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
5467 if (flags
& NDR_IN
) {
5468 ndr_print_struct(ndr
, "in", "svcctl_GetServiceKeyNameA");
5470 ndr_print_ptr(ndr
, "handle", r
->in
.handle
);
5472 ndr_print_policy_handle(ndr
, "handle", r
->in
.handle
);
5474 ndr_print_ptr(ndr
, "service_name", r
->in
.service_name
);
5476 if (r
->in
.service_name
) {
5477 ndr_print_string(ndr
, "service_name", r
->in
.service_name
);
5480 ndr_print_ptr(ndr
, "display_name_length", r
->in
.display_name_length
);
5482 if (r
->in
.display_name_length
) {
5483 ndr_print_uint32(ndr
, "display_name_length", *r
->in
.display_name_length
);
5488 if (flags
& NDR_OUT
) {
5489 ndr_print_struct(ndr
, "out", "svcctl_GetServiceKeyNameA");
5491 ndr_print_ptr(ndr
, "key_name", r
->out
.key_name
);
5493 ndr_print_ptr(ndr
, "key_name", *r
->out
.key_name
);
5495 if (*r
->out
.key_name
) {
5496 ndr_print_string(ndr
, "key_name", *r
->out
.key_name
);
5500 ndr_print_ptr(ndr
, "display_name_length", r
->out
.display_name_length
);
5502 if (r
->out
.display_name_length
) {
5503 ndr_print_uint32(ndr
, "display_name_length", *r
->out
.display_name_length
);
5506 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
5512 static enum ndr_err_code
ndr_push_svcctl_GetCurrentGroupeStateW(struct ndr_push
*ndr
, int flags
, const struct svcctl_GetCurrentGroupeStateW
*r
)
5514 if (flags
& NDR_IN
) {
5516 if (flags
& NDR_OUT
) {
5517 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
5519 return NDR_ERR_SUCCESS
;
5522 static enum ndr_err_code
ndr_pull_svcctl_GetCurrentGroupeStateW(struct ndr_pull
*ndr
, int flags
, struct svcctl_GetCurrentGroupeStateW
*r
)
5524 if (flags
& NDR_IN
) {
5526 if (flags
& NDR_OUT
) {
5527 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
5529 return NDR_ERR_SUCCESS
;
5532 _PUBLIC_
void ndr_print_svcctl_GetCurrentGroupeStateW(struct ndr_print
*ndr
, const char *name
, int flags
, const struct svcctl_GetCurrentGroupeStateW
*r
)
5534 ndr_print_struct(ndr
, name
, "svcctl_GetCurrentGroupeStateW");
5536 if (flags
& NDR_SET_VALUES
) {
5537 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
5539 if (flags
& NDR_IN
) {
5540 ndr_print_struct(ndr
, "in", "svcctl_GetCurrentGroupeStateW");
5544 if (flags
& NDR_OUT
) {
5545 ndr_print_struct(ndr
, "out", "svcctl_GetCurrentGroupeStateW");
5547 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
5553 static enum ndr_err_code
ndr_push_svcctl_EnumServiceGroupW(struct ndr_push
*ndr
, int flags
, const struct svcctl_EnumServiceGroupW
*r
)
5555 if (flags
& NDR_IN
) {
5557 if (flags
& NDR_OUT
) {
5558 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
5560 return NDR_ERR_SUCCESS
;
5563 static enum ndr_err_code
ndr_pull_svcctl_EnumServiceGroupW(struct ndr_pull
*ndr
, int flags
, struct svcctl_EnumServiceGroupW
*r
)
5565 if (flags
& NDR_IN
) {
5567 if (flags
& NDR_OUT
) {
5568 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
5570 return NDR_ERR_SUCCESS
;
5573 _PUBLIC_
void ndr_print_svcctl_EnumServiceGroupW(struct ndr_print
*ndr
, const char *name
, int flags
, const struct svcctl_EnumServiceGroupW
*r
)
5575 ndr_print_struct(ndr
, name
, "svcctl_EnumServiceGroupW");
5577 if (flags
& NDR_SET_VALUES
) {
5578 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
5580 if (flags
& NDR_IN
) {
5581 ndr_print_struct(ndr
, "in", "svcctl_EnumServiceGroupW");
5585 if (flags
& NDR_OUT
) {
5586 ndr_print_struct(ndr
, "out", "svcctl_EnumServiceGroupW");
5588 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
5594 static enum ndr_err_code
ndr_push_svcctl_ChangeServiceConfig2A(struct ndr_push
*ndr
, int flags
, const struct svcctl_ChangeServiceConfig2A
*r
)
5596 if (flags
& NDR_IN
) {
5597 if (r
->in
.handle
== NULL
) {
5598 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
5600 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
, r
->in
.handle
));
5601 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.info_level
));
5602 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.info
));
5604 NDR_CHECK(ndr_push_uint8(ndr
, NDR_SCALARS
, *r
->in
.info
));
5607 if (flags
& NDR_OUT
) {
5608 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
5610 return NDR_ERR_SUCCESS
;
5613 static enum ndr_err_code
ndr_pull_svcctl_ChangeServiceConfig2A(struct ndr_pull
*ndr
, int flags
, struct svcctl_ChangeServiceConfig2A
*r
)
5616 TALLOC_CTX
*_mem_save_handle_0
;
5617 TALLOC_CTX
*_mem_save_info_0
;
5618 if (flags
& NDR_IN
) {
5619 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
5620 NDR_PULL_ALLOC(ndr
, r
->in
.handle
);
5622 _mem_save_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
5623 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.handle
, LIBNDR_FLAG_REF_ALLOC
);
5624 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
, r
->in
.handle
));
5625 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_handle_0
, LIBNDR_FLAG_REF_ALLOC
);
5626 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.info_level
));
5627 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_info
));
5629 NDR_PULL_ALLOC(ndr
, r
->in
.info
);
5634 _mem_save_info_0
= NDR_PULL_GET_MEM_CTX(ndr
);
5635 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.info
, 0);
5636 NDR_CHECK(ndr_pull_uint8(ndr
, NDR_SCALARS
, r
->in
.info
));
5637 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_info_0
, 0);
5640 if (flags
& NDR_OUT
) {
5641 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
5643 return NDR_ERR_SUCCESS
;
5646 _PUBLIC_
void ndr_print_svcctl_ChangeServiceConfig2A(struct ndr_print
*ndr
, const char *name
, int flags
, const struct svcctl_ChangeServiceConfig2A
*r
)
5648 ndr_print_struct(ndr
, name
, "svcctl_ChangeServiceConfig2A");
5650 if (flags
& NDR_SET_VALUES
) {
5651 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
5653 if (flags
& NDR_IN
) {
5654 ndr_print_struct(ndr
, "in", "svcctl_ChangeServiceConfig2A");
5656 ndr_print_ptr(ndr
, "handle", r
->in
.handle
);
5658 ndr_print_policy_handle(ndr
, "handle", r
->in
.handle
);
5660 ndr_print_uint32(ndr
, "info_level", r
->in
.info_level
);
5661 ndr_print_ptr(ndr
, "info", r
->in
.info
);
5664 ndr_print_uint8(ndr
, "info", *r
->in
.info
);
5669 if (flags
& NDR_OUT
) {
5670 ndr_print_struct(ndr
, "out", "svcctl_ChangeServiceConfig2A");
5672 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
5678 static enum ndr_err_code
ndr_push_svcctl_ChangeServiceConfig2W(struct ndr_push
*ndr
, int flags
, const struct svcctl_ChangeServiceConfig2W
*r
)
5680 if (flags
& NDR_IN
) {
5681 if (r
->in
.handle
== NULL
) {
5682 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
5684 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
, r
->in
.handle
));
5685 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.info_level
));
5686 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.info
));
5688 NDR_CHECK(ndr_push_uint8(ndr
, NDR_SCALARS
, *r
->in
.info
));
5691 if (flags
& NDR_OUT
) {
5692 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
5694 return NDR_ERR_SUCCESS
;
5697 static enum ndr_err_code
ndr_pull_svcctl_ChangeServiceConfig2W(struct ndr_pull
*ndr
, int flags
, struct svcctl_ChangeServiceConfig2W
*r
)
5700 TALLOC_CTX
*_mem_save_handle_0
;
5701 TALLOC_CTX
*_mem_save_info_0
;
5702 if (flags
& NDR_IN
) {
5703 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
5704 NDR_PULL_ALLOC(ndr
, r
->in
.handle
);
5706 _mem_save_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
5707 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.handle
, LIBNDR_FLAG_REF_ALLOC
);
5708 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
, r
->in
.handle
));
5709 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_handle_0
, LIBNDR_FLAG_REF_ALLOC
);
5710 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.info_level
));
5711 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_info
));
5713 NDR_PULL_ALLOC(ndr
, r
->in
.info
);
5718 _mem_save_info_0
= NDR_PULL_GET_MEM_CTX(ndr
);
5719 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.info
, 0);
5720 NDR_CHECK(ndr_pull_uint8(ndr
, NDR_SCALARS
, r
->in
.info
));
5721 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_info_0
, 0);
5724 if (flags
& NDR_OUT
) {
5725 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
5727 return NDR_ERR_SUCCESS
;
5730 _PUBLIC_
void ndr_print_svcctl_ChangeServiceConfig2W(struct ndr_print
*ndr
, const char *name
, int flags
, const struct svcctl_ChangeServiceConfig2W
*r
)
5732 ndr_print_struct(ndr
, name
, "svcctl_ChangeServiceConfig2W");
5734 if (flags
& NDR_SET_VALUES
) {
5735 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
5737 if (flags
& NDR_IN
) {
5738 ndr_print_struct(ndr
, "in", "svcctl_ChangeServiceConfig2W");
5740 ndr_print_ptr(ndr
, "handle", r
->in
.handle
);
5742 ndr_print_policy_handle(ndr
, "handle", r
->in
.handle
);
5744 ndr_print_uint32(ndr
, "info_level", r
->in
.info_level
);
5745 ndr_print_ptr(ndr
, "info", r
->in
.info
);
5748 ndr_print_uint8(ndr
, "info", *r
->in
.info
);
5753 if (flags
& NDR_OUT
) {
5754 ndr_print_struct(ndr
, "out", "svcctl_ChangeServiceConfig2W");
5756 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
5762 static enum ndr_err_code
ndr_push_svcctl_QueryServiceConfig2A(struct ndr_push
*ndr
, int flags
, const struct svcctl_QueryServiceConfig2A
*r
)
5764 if (flags
& NDR_IN
) {
5765 if (r
->in
.handle
== NULL
) {
5766 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
5768 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
, r
->in
.handle
));
5769 NDR_CHECK(ndr_push_svcctl_ConfigLevel(ndr
, NDR_SCALARS
, r
->in
.info_level
));
5770 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.buf_size
));
5772 if (flags
& NDR_OUT
) {
5773 NDR_CHECK(ndr_push_array_uint8(ndr
, NDR_SCALARS
, r
->out
.buffer
, r
->in
.buf_size
));
5774 if (r
->out
.bytes_needed
== NULL
) {
5775 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
5777 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, *r
->out
.bytes_needed
));
5778 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
5780 return NDR_ERR_SUCCESS
;
5783 static enum ndr_err_code
ndr_pull_svcctl_QueryServiceConfig2A(struct ndr_pull
*ndr
, int flags
, struct svcctl_QueryServiceConfig2A
*r
)
5785 TALLOC_CTX
*_mem_save_handle_0
;
5786 TALLOC_CTX
*_mem_save_bytes_needed_0
;
5787 if (flags
& NDR_IN
) {
5788 ZERO_STRUCT(r
->out
);
5790 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
5791 NDR_PULL_ALLOC(ndr
, r
->in
.handle
);
5793 _mem_save_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
5794 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.handle
, LIBNDR_FLAG_REF_ALLOC
);
5795 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
, r
->in
.handle
));
5796 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_handle_0
, LIBNDR_FLAG_REF_ALLOC
);
5797 NDR_CHECK(ndr_pull_svcctl_ConfigLevel(ndr
, NDR_SCALARS
, &r
->in
.info_level
));
5798 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.buf_size
));
5799 NDR_PULL_ALLOC(ndr
, r
->out
.bytes_needed
);
5800 ZERO_STRUCTP(r
->out
.bytes_needed
);
5802 if (flags
& NDR_OUT
) {
5803 NDR_PULL_ALLOC_N(ndr
, r
->out
.buffer
, r
->in
.buf_size
);
5804 NDR_CHECK(ndr_pull_array_uint8(ndr
, NDR_SCALARS
, r
->out
.buffer
, r
->in
.buf_size
));
5805 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
5806 NDR_PULL_ALLOC(ndr
, r
->out
.bytes_needed
);
5808 _mem_save_bytes_needed_0
= NDR_PULL_GET_MEM_CTX(ndr
);
5809 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.bytes_needed
, LIBNDR_FLAG_REF_ALLOC
);
5810 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, r
->out
.bytes_needed
));
5811 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_bytes_needed_0
, LIBNDR_FLAG_REF_ALLOC
);
5812 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
5814 return NDR_ERR_SUCCESS
;
5817 _PUBLIC_
void ndr_print_svcctl_QueryServiceConfig2A(struct ndr_print
*ndr
, const char *name
, int flags
, const struct svcctl_QueryServiceConfig2A
*r
)
5819 ndr_print_struct(ndr
, name
, "svcctl_QueryServiceConfig2A");
5821 if (flags
& NDR_SET_VALUES
) {
5822 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
5824 if (flags
& NDR_IN
) {
5825 ndr_print_struct(ndr
, "in", "svcctl_QueryServiceConfig2A");
5827 ndr_print_ptr(ndr
, "handle", r
->in
.handle
);
5829 ndr_print_policy_handle(ndr
, "handle", r
->in
.handle
);
5831 ndr_print_svcctl_ConfigLevel(ndr
, "info_level", r
->in
.info_level
);
5832 ndr_print_uint32(ndr
, "buf_size", r
->in
.buf_size
);
5835 if (flags
& NDR_OUT
) {
5836 ndr_print_struct(ndr
, "out", "svcctl_QueryServiceConfig2A");
5838 ndr_print_array_uint8(ndr
, "buffer", r
->out
.buffer
, r
->in
.buf_size
);
5839 ndr_print_ptr(ndr
, "bytes_needed", r
->out
.bytes_needed
);
5841 ndr_print_uint32(ndr
, "bytes_needed", *r
->out
.bytes_needed
);
5843 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
5849 static enum ndr_err_code
ndr_push_svcctl_QueryServiceConfig2W(struct ndr_push
*ndr
, int flags
, const struct svcctl_QueryServiceConfig2W
*r
)
5851 if (flags
& NDR_IN
) {
5852 if (r
->in
.handle
== NULL
) {
5853 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
5855 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
, r
->in
.handle
));
5856 NDR_CHECK(ndr_push_svcctl_ConfigLevel(ndr
, NDR_SCALARS
, r
->in
.info_level
));
5857 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.buf_size
));
5859 if (flags
& NDR_OUT
) {
5860 if (r
->out
.buffer
== NULL
) {
5861 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
5863 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.buf_size
));
5864 NDR_CHECK(ndr_push_array_uint8(ndr
, NDR_SCALARS
, r
->out
.buffer
, r
->in
.buf_size
));
5865 if (r
->out
.bytes_needed
== NULL
) {
5866 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
5868 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, *r
->out
.bytes_needed
));
5869 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
5871 return NDR_ERR_SUCCESS
;
5874 static enum ndr_err_code
ndr_pull_svcctl_QueryServiceConfig2W(struct ndr_pull
*ndr
, int flags
, struct svcctl_QueryServiceConfig2W
*r
)
5876 TALLOC_CTX
*_mem_save_handle_0
;
5877 TALLOC_CTX
*_mem_save_bytes_needed_0
;
5878 if (flags
& NDR_IN
) {
5879 ZERO_STRUCT(r
->out
);
5881 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
5882 NDR_PULL_ALLOC(ndr
, r
->in
.handle
);
5884 _mem_save_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
5885 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.handle
, LIBNDR_FLAG_REF_ALLOC
);
5886 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
, r
->in
.handle
));
5887 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_handle_0
, LIBNDR_FLAG_REF_ALLOC
);
5888 NDR_CHECK(ndr_pull_svcctl_ConfigLevel(ndr
, NDR_SCALARS
, &r
->in
.info_level
));
5889 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.buf_size
));
5890 if (r
->in
.buf_size
< 0 || r
->in
.buf_size
> 8192) {
5891 return ndr_pull_error(ndr
, NDR_ERR_RANGE
, "value out of range");
5893 NDR_PULL_ALLOC_N(ndr
, r
->out
.buffer
, r
->in
.buf_size
);
5894 memset(CONST_DISCARD(struct svcctl_QueryServiceConfig2W
*,r
->out
.buffer
), 0, (r
->in
.buf_size
) * sizeof(*r
->out
.buffer
));
5895 NDR_PULL_ALLOC(ndr
, r
->out
.bytes_needed
);
5896 ZERO_STRUCTP(r
->out
.bytes_needed
);
5898 if (flags
& NDR_OUT
) {
5899 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->out
.buffer
));
5900 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
5901 NDR_PULL_ALLOC_N(ndr
, r
->out
.buffer
, ndr_get_array_size(ndr
, &r
->out
.buffer
));
5903 NDR_CHECK(ndr_pull_array_uint8(ndr
, NDR_SCALARS
, r
->out
.buffer
, ndr_get_array_size(ndr
, &r
->out
.buffer
)));
5904 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
5905 NDR_PULL_ALLOC(ndr
, r
->out
.bytes_needed
);
5907 _mem_save_bytes_needed_0
= NDR_PULL_GET_MEM_CTX(ndr
);
5908 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.bytes_needed
, LIBNDR_FLAG_REF_ALLOC
);
5909 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, r
->out
.bytes_needed
));
5910 if (*r
->out
.bytes_needed
< 0 || *r
->out
.bytes_needed
> 8192) {
5911 return ndr_pull_error(ndr
, NDR_ERR_RANGE
, "value out of range");
5913 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_bytes_needed_0
, LIBNDR_FLAG_REF_ALLOC
);
5914 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
5915 if (r
->out
.buffer
) {
5916 NDR_CHECK(ndr_check_array_size(ndr
, (void*)&r
->out
.buffer
, r
->in
.buf_size
));
5919 return NDR_ERR_SUCCESS
;
5922 _PUBLIC_
void ndr_print_svcctl_QueryServiceConfig2W(struct ndr_print
*ndr
, const char *name
, int flags
, const struct svcctl_QueryServiceConfig2W
*r
)
5924 ndr_print_struct(ndr
, name
, "svcctl_QueryServiceConfig2W");
5926 if (flags
& NDR_SET_VALUES
) {
5927 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
5929 if (flags
& NDR_IN
) {
5930 ndr_print_struct(ndr
, "in", "svcctl_QueryServiceConfig2W");
5932 ndr_print_ptr(ndr
, "handle", r
->in
.handle
);
5934 ndr_print_policy_handle(ndr
, "handle", r
->in
.handle
);
5936 ndr_print_svcctl_ConfigLevel(ndr
, "info_level", r
->in
.info_level
);
5937 ndr_print_uint32(ndr
, "buf_size", r
->in
.buf_size
);
5940 if (flags
& NDR_OUT
) {
5941 ndr_print_struct(ndr
, "out", "svcctl_QueryServiceConfig2W");
5943 ndr_print_ptr(ndr
, "buffer", r
->out
.buffer
);
5945 ndr_print_array_uint8(ndr
, "buffer", r
->out
.buffer
, r
->in
.buf_size
);
5947 ndr_print_ptr(ndr
, "bytes_needed", r
->out
.bytes_needed
);
5949 ndr_print_uint32(ndr
, "bytes_needed", *r
->out
.bytes_needed
);
5951 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
5957 static enum ndr_err_code
ndr_push_svcctl_QueryServiceStatusEx(struct ndr_push
*ndr
, int flags
, const struct svcctl_QueryServiceStatusEx
*r
)
5959 if (flags
& NDR_IN
) {
5960 if (r
->in
.handle
== NULL
) {
5961 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
5963 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
, r
->in
.handle
));
5964 NDR_CHECK(ndr_push_svcctl_StatusLevel(ndr
, NDR_SCALARS
, r
->in
.info_level
));
5965 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.buf_size
));
5967 if (flags
& NDR_OUT
) {
5968 if (r
->out
.buffer
== NULL
) {
5969 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
5971 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.buf_size
));
5972 NDR_CHECK(ndr_push_array_uint8(ndr
, NDR_SCALARS
, r
->out
.buffer
, r
->in
.buf_size
));
5973 if (r
->out
.bytes_needed
== NULL
) {
5974 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
5976 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, *r
->out
.bytes_needed
));
5977 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
5979 return NDR_ERR_SUCCESS
;
5982 static enum ndr_err_code
ndr_pull_svcctl_QueryServiceStatusEx(struct ndr_pull
*ndr
, int flags
, struct svcctl_QueryServiceStatusEx
*r
)
5984 TALLOC_CTX
*_mem_save_handle_0
;
5985 TALLOC_CTX
*_mem_save_bytes_needed_0
;
5986 if (flags
& NDR_IN
) {
5987 ZERO_STRUCT(r
->out
);
5989 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
5990 NDR_PULL_ALLOC(ndr
, r
->in
.handle
);
5992 _mem_save_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
5993 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.handle
, LIBNDR_FLAG_REF_ALLOC
);
5994 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
, r
->in
.handle
));
5995 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_handle_0
, LIBNDR_FLAG_REF_ALLOC
);
5996 NDR_CHECK(ndr_pull_svcctl_StatusLevel(ndr
, NDR_SCALARS
, &r
->in
.info_level
));
5997 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.buf_size
));
5998 if (r
->in
.buf_size
< 0 || r
->in
.buf_size
> 8192) {
5999 return ndr_pull_error(ndr
, NDR_ERR_RANGE
, "value out of range");
6001 NDR_PULL_ALLOC_N(ndr
, r
->out
.buffer
, r
->in
.buf_size
);
6002 memset(CONST_DISCARD(struct svcctl_QueryServiceStatusEx
*,r
->out
.buffer
), 0, (r
->in
.buf_size
) * sizeof(*r
->out
.buffer
));
6003 NDR_PULL_ALLOC(ndr
, r
->out
.bytes_needed
);
6004 ZERO_STRUCTP(r
->out
.bytes_needed
);
6006 if (flags
& NDR_OUT
) {
6007 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->out
.buffer
));
6008 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
6009 NDR_PULL_ALLOC_N(ndr
, r
->out
.buffer
, ndr_get_array_size(ndr
, &r
->out
.buffer
));
6011 NDR_CHECK(ndr_pull_array_uint8(ndr
, NDR_SCALARS
, r
->out
.buffer
, ndr_get_array_size(ndr
, &r
->out
.buffer
)));
6012 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
6013 NDR_PULL_ALLOC(ndr
, r
->out
.bytes_needed
);
6015 _mem_save_bytes_needed_0
= NDR_PULL_GET_MEM_CTX(ndr
);
6016 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.bytes_needed
, LIBNDR_FLAG_REF_ALLOC
);
6017 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, r
->out
.bytes_needed
));
6018 if (*r
->out
.bytes_needed
< 0 || *r
->out
.bytes_needed
> 8192) {
6019 return ndr_pull_error(ndr
, NDR_ERR_RANGE
, "value out of range");
6021 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_bytes_needed_0
, LIBNDR_FLAG_REF_ALLOC
);
6022 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
6023 if (r
->out
.buffer
) {
6024 NDR_CHECK(ndr_check_array_size(ndr
, (void*)&r
->out
.buffer
, r
->in
.buf_size
));
6027 return NDR_ERR_SUCCESS
;
6030 _PUBLIC_
void ndr_print_svcctl_QueryServiceStatusEx(struct ndr_print
*ndr
, const char *name
, int flags
, const struct svcctl_QueryServiceStatusEx
*r
)
6032 ndr_print_struct(ndr
, name
, "svcctl_QueryServiceStatusEx");
6034 if (flags
& NDR_SET_VALUES
) {
6035 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
6037 if (flags
& NDR_IN
) {
6038 ndr_print_struct(ndr
, "in", "svcctl_QueryServiceStatusEx");
6040 ndr_print_ptr(ndr
, "handle", r
->in
.handle
);
6042 ndr_print_policy_handle(ndr
, "handle", r
->in
.handle
);
6044 ndr_print_svcctl_StatusLevel(ndr
, "info_level", r
->in
.info_level
);
6045 ndr_print_uint32(ndr
, "buf_size", r
->in
.buf_size
);
6048 if (flags
& NDR_OUT
) {
6049 ndr_print_struct(ndr
, "out", "svcctl_QueryServiceStatusEx");
6051 ndr_print_ptr(ndr
, "buffer", r
->out
.buffer
);
6053 ndr_print_array_uint8(ndr
, "buffer", r
->out
.buffer
, r
->in
.buf_size
);
6055 ndr_print_ptr(ndr
, "bytes_needed", r
->out
.bytes_needed
);
6057 ndr_print_uint32(ndr
, "bytes_needed", *r
->out
.bytes_needed
);
6059 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
6065 static enum ndr_err_code
ndr_push_EnumServicesStatusExA(struct ndr_push
*ndr
, int flags
, const struct EnumServicesStatusExA
*r
)
6067 if (flags
& NDR_IN
) {
6068 if (r
->in
.scmanager
== NULL
) {
6069 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
6071 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
, r
->in
.scmanager
));
6072 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.info_level
));
6073 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.type
));
6074 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.state
));
6075 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.buf_size
));
6076 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.resume_handle
));
6077 if (r
->in
.resume_handle
) {
6078 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, *r
->in
.resume_handle
));
6081 if (flags
& NDR_OUT
) {
6082 NDR_CHECK(ndr_push_array_uint8(ndr
, NDR_SCALARS
, r
->out
.services
, r
->in
.buf_size
));
6083 if (r
->out
.bytes_needed
== NULL
) {
6084 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
6086 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, *r
->out
.bytes_needed
));
6087 if (r
->out
.service_returned
== NULL
) {
6088 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
6090 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, *r
->out
.service_returned
));
6091 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->out
.resume_handle
));
6092 if (r
->out
.resume_handle
) {
6093 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, *r
->out
.resume_handle
));
6095 if (r
->out
.group_name
== NULL
) {
6096 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
6098 NDR_CHECK(ndr_push_unique_ptr(ndr
, *r
->out
.group_name
));
6099 if (*r
->out
.group_name
) {
6100 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(*r
->out
.group_name
, CH_UTF16
)));
6101 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, 0));
6102 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(*r
->out
.group_name
, CH_UTF16
)));
6103 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
));
6105 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
6107 return NDR_ERR_SUCCESS
;
6110 static enum ndr_err_code
ndr_pull_EnumServicesStatusExA(struct ndr_pull
*ndr
, int flags
, struct EnumServicesStatusExA
*r
)
6112 uint32_t _ptr_resume_handle
;
6113 uint32_t _ptr_group_name
;
6114 TALLOC_CTX
*_mem_save_scmanager_0
;
6115 TALLOC_CTX
*_mem_save_bytes_needed_0
;
6116 TALLOC_CTX
*_mem_save_service_returned_0
;
6117 TALLOC_CTX
*_mem_save_resume_handle_0
;
6118 TALLOC_CTX
*_mem_save_group_name_0
;
6119 TALLOC_CTX
*_mem_save_group_name_1
;
6120 if (flags
& NDR_IN
) {
6121 ZERO_STRUCT(r
->out
);
6123 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
6124 NDR_PULL_ALLOC(ndr
, r
->in
.scmanager
);
6126 _mem_save_scmanager_0
= NDR_PULL_GET_MEM_CTX(ndr
);
6127 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.scmanager
, LIBNDR_FLAG_REF_ALLOC
);
6128 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
, r
->in
.scmanager
));
6129 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_scmanager_0
, LIBNDR_FLAG_REF_ALLOC
);
6130 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.info_level
));
6131 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.type
));
6132 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.state
));
6133 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.buf_size
));
6134 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_resume_handle
));
6135 if (_ptr_resume_handle
) {
6136 NDR_PULL_ALLOC(ndr
, r
->in
.resume_handle
);
6138 r
->in
.resume_handle
= NULL
;
6140 if (r
->in
.resume_handle
) {
6141 _mem_save_resume_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
6142 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.resume_handle
, 0);
6143 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, r
->in
.resume_handle
));
6144 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_resume_handle_0
, 0);
6146 NDR_PULL_ALLOC(ndr
, r
->out
.bytes_needed
);
6147 ZERO_STRUCTP(r
->out
.bytes_needed
);
6148 NDR_PULL_ALLOC(ndr
, r
->out
.service_returned
);
6149 ZERO_STRUCTP(r
->out
.service_returned
);
6150 NDR_PULL_ALLOC(ndr
, r
->out
.group_name
);
6151 ZERO_STRUCTP(r
->out
.group_name
);
6153 if (flags
& NDR_OUT
) {
6154 NDR_PULL_ALLOC_N(ndr
, r
->out
.services
, r
->in
.buf_size
);
6155 NDR_CHECK(ndr_pull_array_uint8(ndr
, NDR_SCALARS
, r
->out
.services
, r
->in
.buf_size
));
6156 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
6157 NDR_PULL_ALLOC(ndr
, r
->out
.bytes_needed
);
6159 _mem_save_bytes_needed_0
= NDR_PULL_GET_MEM_CTX(ndr
);
6160 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.bytes_needed
, LIBNDR_FLAG_REF_ALLOC
);
6161 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, r
->out
.bytes_needed
));
6162 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_bytes_needed_0
, LIBNDR_FLAG_REF_ALLOC
);
6163 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
6164 NDR_PULL_ALLOC(ndr
, r
->out
.service_returned
);
6166 _mem_save_service_returned_0
= NDR_PULL_GET_MEM_CTX(ndr
);
6167 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.service_returned
, LIBNDR_FLAG_REF_ALLOC
);
6168 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, r
->out
.service_returned
));
6169 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_service_returned_0
, LIBNDR_FLAG_REF_ALLOC
);
6170 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_resume_handle
));
6171 if (_ptr_resume_handle
) {
6172 NDR_PULL_ALLOC(ndr
, r
->out
.resume_handle
);
6174 r
->out
.resume_handle
= NULL
;
6176 if (r
->out
.resume_handle
) {
6177 _mem_save_resume_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
6178 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.resume_handle
, 0);
6179 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, r
->out
.resume_handle
));
6180 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_resume_handle_0
, 0);
6182 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
6183 NDR_PULL_ALLOC(ndr
, r
->out
.group_name
);
6185 _mem_save_group_name_0
= NDR_PULL_GET_MEM_CTX(ndr
);
6186 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.group_name
, LIBNDR_FLAG_REF_ALLOC
);
6187 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_group_name
));
6188 if (_ptr_group_name
) {
6189 NDR_PULL_ALLOC(ndr
, *r
->out
.group_name
);
6191 *r
->out
.group_name
= NULL
;
6193 if (*r
->out
.group_name
) {
6194 _mem_save_group_name_1
= NDR_PULL_GET_MEM_CTX(ndr
);
6195 NDR_PULL_SET_MEM_CTX(ndr
, *r
->out
.group_name
, 0);
6196 NDR_CHECK(ndr_pull_array_size(ndr
, r
->out
.group_name
));
6197 NDR_CHECK(ndr_pull_array_length(ndr
, r
->out
.group_name
));
6198 if (ndr_get_array_length(ndr
, r
->out
.group_name
) > ndr_get_array_size(ndr
, r
->out
.group_name
)) {
6199 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
));
6201 NDR_CHECK(ndr_check_string_terminator(ndr
, ndr_get_array_length(ndr
, r
->out
.group_name
), sizeof(uint16_t)));
6202 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
));
6203 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_group_name_1
, 0);
6205 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_group_name_0
, LIBNDR_FLAG_REF_ALLOC
);
6206 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
6208 return NDR_ERR_SUCCESS
;
6211 _PUBLIC_
void ndr_print_EnumServicesStatusExA(struct ndr_print
*ndr
, const char *name
, int flags
, const struct EnumServicesStatusExA
*r
)
6213 ndr_print_struct(ndr
, name
, "EnumServicesStatusExA");
6215 if (flags
& NDR_SET_VALUES
) {
6216 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
6218 if (flags
& NDR_IN
) {
6219 ndr_print_struct(ndr
, "in", "EnumServicesStatusExA");
6221 ndr_print_ptr(ndr
, "scmanager", r
->in
.scmanager
);
6223 ndr_print_policy_handle(ndr
, "scmanager", r
->in
.scmanager
);
6225 ndr_print_uint32(ndr
, "info_level", r
->in
.info_level
);
6226 ndr_print_uint32(ndr
, "type", r
->in
.type
);
6227 ndr_print_uint32(ndr
, "state", r
->in
.state
);
6228 ndr_print_uint32(ndr
, "buf_size", r
->in
.buf_size
);
6229 ndr_print_ptr(ndr
, "resume_handle", r
->in
.resume_handle
);
6231 if (r
->in
.resume_handle
) {
6232 ndr_print_uint32(ndr
, "resume_handle", *r
->in
.resume_handle
);
6237 if (flags
& NDR_OUT
) {
6238 ndr_print_struct(ndr
, "out", "EnumServicesStatusExA");
6240 ndr_print_array_uint8(ndr
, "services", r
->out
.services
, r
->in
.buf_size
);
6241 ndr_print_ptr(ndr
, "bytes_needed", r
->out
.bytes_needed
);
6243 ndr_print_uint32(ndr
, "bytes_needed", *r
->out
.bytes_needed
);
6245 ndr_print_ptr(ndr
, "service_returned", r
->out
.service_returned
);
6247 ndr_print_uint32(ndr
, "service_returned", *r
->out
.service_returned
);
6249 ndr_print_ptr(ndr
, "resume_handle", r
->out
.resume_handle
);
6251 if (r
->out
.resume_handle
) {
6252 ndr_print_uint32(ndr
, "resume_handle", *r
->out
.resume_handle
);
6255 ndr_print_ptr(ndr
, "group_name", r
->out
.group_name
);
6257 ndr_print_ptr(ndr
, "group_name", *r
->out
.group_name
);
6259 if (*r
->out
.group_name
) {
6260 ndr_print_string(ndr
, "group_name", *r
->out
.group_name
);
6264 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
6270 static enum ndr_err_code
ndr_push_EnumServicesStatusExW(struct ndr_push
*ndr
, int flags
, const struct EnumServicesStatusExW
*r
)
6272 if (flags
& NDR_IN
) {
6273 if (r
->in
.scmanager
== NULL
) {
6274 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
6276 NDR_CHECK(ndr_push_policy_handle(ndr
, NDR_SCALARS
, r
->in
.scmanager
));
6277 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.info_level
));
6278 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.type
));
6279 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.state
));
6280 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.buf_size
));
6281 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.resume_handle
));
6282 if (r
->in
.resume_handle
) {
6283 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, *r
->in
.resume_handle
));
6285 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->in
.group_name
));
6286 if (r
->in
.group_name
) {
6287 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.group_name
, CH_UTF16
)));
6288 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, 0));
6289 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.group_name
, CH_UTF16
)));
6290 NDR_CHECK(ndr_push_charset(ndr
, NDR_SCALARS
, r
->in
.group_name
, ndr_charset_length(r
->in
.group_name
, CH_UTF16
), sizeof(uint16_t), CH_UTF16
));
6293 if (flags
& NDR_OUT
) {
6294 if (r
->out
.services
== NULL
) {
6295 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
6297 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.buf_size
));
6298 NDR_CHECK(ndr_push_array_uint8(ndr
, NDR_SCALARS
, r
->out
.services
, r
->in
.buf_size
));
6299 if (r
->out
.bytes_needed
== NULL
) {
6300 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
6302 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, *r
->out
.bytes_needed
));
6303 if (r
->out
.service_returned
== NULL
) {
6304 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
6306 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, *r
->out
.service_returned
));
6307 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->out
.resume_handle
));
6308 if (r
->out
.resume_handle
) {
6309 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, *r
->out
.resume_handle
));
6311 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
6313 return NDR_ERR_SUCCESS
;
6316 static enum ndr_err_code
ndr_pull_EnumServicesStatusExW(struct ndr_pull
*ndr
, int flags
, struct EnumServicesStatusExW
*r
)
6318 uint32_t _ptr_resume_handle
;
6319 uint32_t _ptr_group_name
;
6320 TALLOC_CTX
*_mem_save_scmanager_0
;
6321 TALLOC_CTX
*_mem_save_bytes_needed_0
;
6322 TALLOC_CTX
*_mem_save_service_returned_0
;
6323 TALLOC_CTX
*_mem_save_resume_handle_0
;
6324 TALLOC_CTX
*_mem_save_group_name_0
;
6325 if (flags
& NDR_IN
) {
6326 ZERO_STRUCT(r
->out
);
6328 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
6329 NDR_PULL_ALLOC(ndr
, r
->in
.scmanager
);
6331 _mem_save_scmanager_0
= NDR_PULL_GET_MEM_CTX(ndr
);
6332 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.scmanager
, LIBNDR_FLAG_REF_ALLOC
);
6333 NDR_CHECK(ndr_pull_policy_handle(ndr
, NDR_SCALARS
, r
->in
.scmanager
));
6334 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_scmanager_0
, LIBNDR_FLAG_REF_ALLOC
);
6335 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.info_level
));
6336 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.type
));
6337 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.state
));
6338 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.buf_size
));
6339 if (r
->in
.buf_size
< 0 || r
->in
.buf_size
> 262144) {
6340 return ndr_pull_error(ndr
, NDR_ERR_RANGE
, "value out of range");
6342 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_resume_handle
));
6343 if (_ptr_resume_handle
) {
6344 NDR_PULL_ALLOC(ndr
, r
->in
.resume_handle
);
6346 r
->in
.resume_handle
= NULL
;
6348 if (r
->in
.resume_handle
) {
6349 _mem_save_resume_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
6350 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.resume_handle
, 0);
6351 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, r
->in
.resume_handle
));
6352 if (*r
->in
.resume_handle
< 0 || *r
->in
.resume_handle
> 262144) {
6353 return ndr_pull_error(ndr
, NDR_ERR_RANGE
, "value out of range");
6355 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_resume_handle_0
, 0);
6357 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_group_name
));
6358 if (_ptr_group_name
) {
6359 NDR_PULL_ALLOC(ndr
, r
->in
.group_name
);
6361 r
->in
.group_name
= NULL
;
6363 if (r
->in
.group_name
) {
6364 _mem_save_group_name_0
= NDR_PULL_GET_MEM_CTX(ndr
);
6365 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.group_name
, 0);
6366 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->in
.group_name
));
6367 NDR_CHECK(ndr_pull_array_length(ndr
, &r
->in
.group_name
));
6368 if (ndr_get_array_length(ndr
, &r
->in
.group_name
) > ndr_get_array_size(ndr
, &r
->in
.group_name
)) {
6369 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
.group_name
), ndr_get_array_length(ndr
, &r
->in
.group_name
));
6371 NDR_CHECK(ndr_check_string_terminator(ndr
, ndr_get_array_length(ndr
, &r
->in
.group_name
), sizeof(uint16_t)));
6372 NDR_CHECK(ndr_pull_charset(ndr
, NDR_SCALARS
, &r
->in
.group_name
, ndr_get_array_length(ndr
, &r
->in
.group_name
), sizeof(uint16_t), CH_UTF16
));
6373 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_group_name_0
, 0);
6375 NDR_PULL_ALLOC_N(ndr
, r
->out
.services
, r
->in
.buf_size
);
6376 memset(CONST_DISCARD(struct EnumServicesStatusExW
*,r
->out
.services
), 0, (r
->in
.buf_size
) * sizeof(*r
->out
.services
));
6377 NDR_PULL_ALLOC(ndr
, r
->out
.bytes_needed
);
6378 ZERO_STRUCTP(r
->out
.bytes_needed
);
6379 NDR_PULL_ALLOC(ndr
, r
->out
.service_returned
);
6380 ZERO_STRUCTP(r
->out
.service_returned
);
6382 if (flags
& NDR_OUT
) {
6383 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->out
.services
));
6384 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
6385 NDR_PULL_ALLOC_N(ndr
, r
->out
.services
, ndr_get_array_size(ndr
, &r
->out
.services
));
6387 NDR_CHECK(ndr_pull_array_uint8(ndr
, NDR_SCALARS
, r
->out
.services
, ndr_get_array_size(ndr
, &r
->out
.services
)));
6388 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
6389 NDR_PULL_ALLOC(ndr
, r
->out
.bytes_needed
);
6391 _mem_save_bytes_needed_0
= NDR_PULL_GET_MEM_CTX(ndr
);
6392 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.bytes_needed
, LIBNDR_FLAG_REF_ALLOC
);
6393 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, r
->out
.bytes_needed
));
6394 if (*r
->out
.bytes_needed
< 0 || *r
->out
.bytes_needed
> 262144) {
6395 return ndr_pull_error(ndr
, NDR_ERR_RANGE
, "value out of range");
6397 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_bytes_needed_0
, LIBNDR_FLAG_REF_ALLOC
);
6398 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
6399 NDR_PULL_ALLOC(ndr
, r
->out
.service_returned
);
6401 _mem_save_service_returned_0
= NDR_PULL_GET_MEM_CTX(ndr
);
6402 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.service_returned
, LIBNDR_FLAG_REF_ALLOC
);
6403 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, r
->out
.service_returned
));
6404 if (*r
->out
.service_returned
< 0 || *r
->out
.service_returned
> 262144) {
6405 return ndr_pull_error(ndr
, NDR_ERR_RANGE
, "value out of range");
6407 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_service_returned_0
, LIBNDR_FLAG_REF_ALLOC
);
6408 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_resume_handle
));
6409 if (_ptr_resume_handle
) {
6410 NDR_PULL_ALLOC(ndr
, r
->out
.resume_handle
);
6412 r
->out
.resume_handle
= NULL
;
6414 if (r
->out
.resume_handle
) {
6415 _mem_save_resume_handle_0
= NDR_PULL_GET_MEM_CTX(ndr
);
6416 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.resume_handle
, 0);
6417 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, r
->out
.resume_handle
));
6418 if (*r
->out
.resume_handle
< 0 || *r
->out
.resume_handle
> 262144) {
6419 return ndr_pull_error(ndr
, NDR_ERR_RANGE
, "value out of range");
6421 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_resume_handle_0
, 0);
6423 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
6424 if (r
->out
.services
) {
6425 NDR_CHECK(ndr_check_array_size(ndr
, (void*)&r
->out
.services
, r
->in
.buf_size
));
6428 return NDR_ERR_SUCCESS
;
6431 _PUBLIC_
void ndr_print_EnumServicesStatusExW(struct ndr_print
*ndr
, const char *name
, int flags
, const struct EnumServicesStatusExW
*r
)
6433 ndr_print_struct(ndr
, name
, "EnumServicesStatusExW");
6435 if (flags
& NDR_SET_VALUES
) {
6436 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
6438 if (flags
& NDR_IN
) {
6439 ndr_print_struct(ndr
, "in", "EnumServicesStatusExW");
6441 ndr_print_ptr(ndr
, "scmanager", r
->in
.scmanager
);
6443 ndr_print_policy_handle(ndr
, "scmanager", r
->in
.scmanager
);
6445 ndr_print_uint32(ndr
, "info_level", r
->in
.info_level
);
6446 ndr_print_uint32(ndr
, "type", r
->in
.type
);
6447 ndr_print_uint32(ndr
, "state", r
->in
.state
);
6448 ndr_print_uint32(ndr
, "buf_size", r
->in
.buf_size
);
6449 ndr_print_ptr(ndr
, "resume_handle", r
->in
.resume_handle
);
6451 if (r
->in
.resume_handle
) {
6452 ndr_print_uint32(ndr
, "resume_handle", *r
->in
.resume_handle
);
6455 ndr_print_ptr(ndr
, "group_name", r
->in
.group_name
);
6457 if (r
->in
.group_name
) {
6458 ndr_print_string(ndr
, "group_name", r
->in
.group_name
);
6463 if (flags
& NDR_OUT
) {
6464 ndr_print_struct(ndr
, "out", "EnumServicesStatusExW");
6466 ndr_print_ptr(ndr
, "services", r
->out
.services
);
6468 ndr_print_array_uint8(ndr
, "services", r
->out
.services
, r
->in
.buf_size
);
6470 ndr_print_ptr(ndr
, "bytes_needed", r
->out
.bytes_needed
);
6472 ndr_print_uint32(ndr
, "bytes_needed", *r
->out
.bytes_needed
);
6474 ndr_print_ptr(ndr
, "service_returned", r
->out
.service_returned
);
6476 ndr_print_uint32(ndr
, "service_returned", *r
->out
.service_returned
);
6478 ndr_print_ptr(ndr
, "resume_handle", r
->out
.resume_handle
);
6480 if (r
->out
.resume_handle
) {
6481 ndr_print_uint32(ndr
, "resume_handle", *r
->out
.resume_handle
);
6484 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
6490 static enum ndr_err_code
ndr_push_svcctl_SCSendTSMessage(struct ndr_push
*ndr
, int flags
, const struct svcctl_SCSendTSMessage
*r
)
6492 if (flags
& NDR_IN
) {
6494 if (flags
& NDR_OUT
) {
6495 NDR_CHECK(ndr_push_WERROR(ndr
, NDR_SCALARS
, r
->out
.result
));
6497 return NDR_ERR_SUCCESS
;
6500 static enum ndr_err_code
ndr_pull_svcctl_SCSendTSMessage(struct ndr_pull
*ndr
, int flags
, struct svcctl_SCSendTSMessage
*r
)
6502 if (flags
& NDR_IN
) {
6504 if (flags
& NDR_OUT
) {
6505 NDR_CHECK(ndr_pull_WERROR(ndr
, NDR_SCALARS
, &r
->out
.result
));
6507 return NDR_ERR_SUCCESS
;
6510 _PUBLIC_
void ndr_print_svcctl_SCSendTSMessage(struct ndr_print
*ndr
, const char *name
, int flags
, const struct svcctl_SCSendTSMessage
*r
)
6512 ndr_print_struct(ndr
, name
, "svcctl_SCSendTSMessage");
6514 if (flags
& NDR_SET_VALUES
) {
6515 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
6517 if (flags
& NDR_IN
) {
6518 ndr_print_struct(ndr
, "in", "svcctl_SCSendTSMessage");
6522 if (flags
& NDR_OUT
) {
6523 ndr_print_struct(ndr
, "out", "svcctl_SCSendTSMessage");
6525 ndr_print_WERROR(ndr
, "result", r
->out
.result
);
6531 static const struct ndr_interface_call svcctl_calls
[] = {
6533 "svcctl_CloseServiceHandle",
6534 sizeof(struct svcctl_CloseServiceHandle
),
6535 (ndr_push_flags_fn_t
) ndr_push_svcctl_CloseServiceHandle
,
6536 (ndr_pull_flags_fn_t
) ndr_pull_svcctl_CloseServiceHandle
,
6537 (ndr_print_function_t
) ndr_print_svcctl_CloseServiceHandle
,
6541 "svcctl_ControlService",
6542 sizeof(struct svcctl_ControlService
),
6543 (ndr_push_flags_fn_t
) ndr_push_svcctl_ControlService
,
6544 (ndr_pull_flags_fn_t
) ndr_pull_svcctl_ControlService
,
6545 (ndr_print_function_t
) ndr_print_svcctl_ControlService
,
6549 "svcctl_DeleteService",
6550 sizeof(struct svcctl_DeleteService
),
6551 (ndr_push_flags_fn_t
) ndr_push_svcctl_DeleteService
,
6552 (ndr_pull_flags_fn_t
) ndr_pull_svcctl_DeleteService
,
6553 (ndr_print_function_t
) ndr_print_svcctl_DeleteService
,
6557 "svcctl_LockServiceDatabase",
6558 sizeof(struct svcctl_LockServiceDatabase
),
6559 (ndr_push_flags_fn_t
) ndr_push_svcctl_LockServiceDatabase
,
6560 (ndr_pull_flags_fn_t
) ndr_pull_svcctl_LockServiceDatabase
,
6561 (ndr_print_function_t
) ndr_print_svcctl_LockServiceDatabase
,
6565 "svcctl_QueryServiceObjectSecurity",
6566 sizeof(struct svcctl_QueryServiceObjectSecurity
),
6567 (ndr_push_flags_fn_t
) ndr_push_svcctl_QueryServiceObjectSecurity
,
6568 (ndr_pull_flags_fn_t
) ndr_pull_svcctl_QueryServiceObjectSecurity
,
6569 (ndr_print_function_t
) ndr_print_svcctl_QueryServiceObjectSecurity
,
6573 "svcctl_SetServiceObjectSecurity",
6574 sizeof(struct svcctl_SetServiceObjectSecurity
),
6575 (ndr_push_flags_fn_t
) ndr_push_svcctl_SetServiceObjectSecurity
,
6576 (ndr_pull_flags_fn_t
) ndr_pull_svcctl_SetServiceObjectSecurity
,
6577 (ndr_print_function_t
) ndr_print_svcctl_SetServiceObjectSecurity
,
6581 "svcctl_QueryServiceStatus",
6582 sizeof(struct svcctl_QueryServiceStatus
),
6583 (ndr_push_flags_fn_t
) ndr_push_svcctl_QueryServiceStatus
,
6584 (ndr_pull_flags_fn_t
) ndr_pull_svcctl_QueryServiceStatus
,
6585 (ndr_print_function_t
) ndr_print_svcctl_QueryServiceStatus
,
6589 "svcctl_SetServiceStatus",
6590 sizeof(struct svcctl_SetServiceStatus
),
6591 (ndr_push_flags_fn_t
) ndr_push_svcctl_SetServiceStatus
,
6592 (ndr_pull_flags_fn_t
) ndr_pull_svcctl_SetServiceStatus
,
6593 (ndr_print_function_t
) ndr_print_svcctl_SetServiceStatus
,
6597 "svcctl_UnlockServiceDatabase",
6598 sizeof(struct svcctl_UnlockServiceDatabase
),
6599 (ndr_push_flags_fn_t
) ndr_push_svcctl_UnlockServiceDatabase
,
6600 (ndr_pull_flags_fn_t
) ndr_pull_svcctl_UnlockServiceDatabase
,
6601 (ndr_print_function_t
) ndr_print_svcctl_UnlockServiceDatabase
,
6605 "svcctl_NotifyBootConfigStatus",
6606 sizeof(struct svcctl_NotifyBootConfigStatus
),
6607 (ndr_push_flags_fn_t
) ndr_push_svcctl_NotifyBootConfigStatus
,
6608 (ndr_pull_flags_fn_t
) ndr_pull_svcctl_NotifyBootConfigStatus
,
6609 (ndr_print_function_t
) ndr_print_svcctl_NotifyBootConfigStatus
,
6613 "svcctl_SCSetServiceBitsW",
6614 sizeof(struct svcctl_SCSetServiceBitsW
),
6615 (ndr_push_flags_fn_t
) ndr_push_svcctl_SCSetServiceBitsW
,
6616 (ndr_pull_flags_fn_t
) ndr_pull_svcctl_SCSetServiceBitsW
,
6617 (ndr_print_function_t
) ndr_print_svcctl_SCSetServiceBitsW
,
6621 "svcctl_ChangeServiceConfigW",
6622 sizeof(struct svcctl_ChangeServiceConfigW
),
6623 (ndr_push_flags_fn_t
) ndr_push_svcctl_ChangeServiceConfigW
,
6624 (ndr_pull_flags_fn_t
) ndr_pull_svcctl_ChangeServiceConfigW
,
6625 (ndr_print_function_t
) ndr_print_svcctl_ChangeServiceConfigW
,
6629 "svcctl_CreateServiceW",
6630 sizeof(struct svcctl_CreateServiceW
),
6631 (ndr_push_flags_fn_t
) ndr_push_svcctl_CreateServiceW
,
6632 (ndr_pull_flags_fn_t
) ndr_pull_svcctl_CreateServiceW
,
6633 (ndr_print_function_t
) ndr_print_svcctl_CreateServiceW
,
6637 "svcctl_EnumDependentServicesW",
6638 sizeof(struct svcctl_EnumDependentServicesW
),
6639 (ndr_push_flags_fn_t
) ndr_push_svcctl_EnumDependentServicesW
,
6640 (ndr_pull_flags_fn_t
) ndr_pull_svcctl_EnumDependentServicesW
,
6641 (ndr_print_function_t
) ndr_print_svcctl_EnumDependentServicesW
,
6645 "svcctl_EnumServicesStatusW",
6646 sizeof(struct svcctl_EnumServicesStatusW
),
6647 (ndr_push_flags_fn_t
) ndr_push_svcctl_EnumServicesStatusW
,
6648 (ndr_pull_flags_fn_t
) ndr_pull_svcctl_EnumServicesStatusW
,
6649 (ndr_print_function_t
) ndr_print_svcctl_EnumServicesStatusW
,
6653 "svcctl_OpenSCManagerW",
6654 sizeof(struct svcctl_OpenSCManagerW
),
6655 (ndr_push_flags_fn_t
) ndr_push_svcctl_OpenSCManagerW
,
6656 (ndr_pull_flags_fn_t
) ndr_pull_svcctl_OpenSCManagerW
,
6657 (ndr_print_function_t
) ndr_print_svcctl_OpenSCManagerW
,
6661 "svcctl_OpenServiceW",
6662 sizeof(struct svcctl_OpenServiceW
),
6663 (ndr_push_flags_fn_t
) ndr_push_svcctl_OpenServiceW
,
6664 (ndr_pull_flags_fn_t
) ndr_pull_svcctl_OpenServiceW
,
6665 (ndr_print_function_t
) ndr_print_svcctl_OpenServiceW
,
6669 "svcctl_QueryServiceConfigW",
6670 sizeof(struct svcctl_QueryServiceConfigW
),
6671 (ndr_push_flags_fn_t
) ndr_push_svcctl_QueryServiceConfigW
,
6672 (ndr_pull_flags_fn_t
) ndr_pull_svcctl_QueryServiceConfigW
,
6673 (ndr_print_function_t
) ndr_print_svcctl_QueryServiceConfigW
,
6677 "svcctl_QueryServiceLockStatusW",
6678 sizeof(struct svcctl_QueryServiceLockStatusW
),
6679 (ndr_push_flags_fn_t
) ndr_push_svcctl_QueryServiceLockStatusW
,
6680 (ndr_pull_flags_fn_t
) ndr_pull_svcctl_QueryServiceLockStatusW
,
6681 (ndr_print_function_t
) ndr_print_svcctl_QueryServiceLockStatusW
,
6685 "svcctl_StartServiceW",
6686 sizeof(struct svcctl_StartServiceW
),
6687 (ndr_push_flags_fn_t
) ndr_push_svcctl_StartServiceW
,
6688 (ndr_pull_flags_fn_t
) ndr_pull_svcctl_StartServiceW
,
6689 (ndr_print_function_t
) ndr_print_svcctl_StartServiceW
,
6693 "svcctl_GetServiceDisplayNameW",
6694 sizeof(struct svcctl_GetServiceDisplayNameW
),
6695 (ndr_push_flags_fn_t
) ndr_push_svcctl_GetServiceDisplayNameW
,
6696 (ndr_pull_flags_fn_t
) ndr_pull_svcctl_GetServiceDisplayNameW
,
6697 (ndr_print_function_t
) ndr_print_svcctl_GetServiceDisplayNameW
,
6701 "svcctl_GetServiceKeyNameW",
6702 sizeof(struct svcctl_GetServiceKeyNameW
),
6703 (ndr_push_flags_fn_t
) ndr_push_svcctl_GetServiceKeyNameW
,
6704 (ndr_pull_flags_fn_t
) ndr_pull_svcctl_GetServiceKeyNameW
,
6705 (ndr_print_function_t
) ndr_print_svcctl_GetServiceKeyNameW
,
6709 "svcctl_SCSetServiceBitsA",
6710 sizeof(struct svcctl_SCSetServiceBitsA
),
6711 (ndr_push_flags_fn_t
) ndr_push_svcctl_SCSetServiceBitsA
,
6712 (ndr_pull_flags_fn_t
) ndr_pull_svcctl_SCSetServiceBitsA
,
6713 (ndr_print_function_t
) ndr_print_svcctl_SCSetServiceBitsA
,
6717 "svcctl_ChangeServiceConfigA",
6718 sizeof(struct svcctl_ChangeServiceConfigA
),
6719 (ndr_push_flags_fn_t
) ndr_push_svcctl_ChangeServiceConfigA
,
6720 (ndr_pull_flags_fn_t
) ndr_pull_svcctl_ChangeServiceConfigA
,
6721 (ndr_print_function_t
) ndr_print_svcctl_ChangeServiceConfigA
,
6725 "svcctl_CreateServiceA",
6726 sizeof(struct svcctl_CreateServiceA
),
6727 (ndr_push_flags_fn_t
) ndr_push_svcctl_CreateServiceA
,
6728 (ndr_pull_flags_fn_t
) ndr_pull_svcctl_CreateServiceA
,
6729 (ndr_print_function_t
) ndr_print_svcctl_CreateServiceA
,
6733 "svcctl_EnumDependentServicesA",
6734 sizeof(struct svcctl_EnumDependentServicesA
),
6735 (ndr_push_flags_fn_t
) ndr_push_svcctl_EnumDependentServicesA
,
6736 (ndr_pull_flags_fn_t
) ndr_pull_svcctl_EnumDependentServicesA
,
6737 (ndr_print_function_t
) ndr_print_svcctl_EnumDependentServicesA
,
6741 "svcctl_EnumServicesStatusA",
6742 sizeof(struct svcctl_EnumServicesStatusA
),
6743 (ndr_push_flags_fn_t
) ndr_push_svcctl_EnumServicesStatusA
,
6744 (ndr_pull_flags_fn_t
) ndr_pull_svcctl_EnumServicesStatusA
,
6745 (ndr_print_function_t
) ndr_print_svcctl_EnumServicesStatusA
,
6749 "svcctl_OpenSCManagerA",
6750 sizeof(struct svcctl_OpenSCManagerA
),
6751 (ndr_push_flags_fn_t
) ndr_push_svcctl_OpenSCManagerA
,
6752 (ndr_pull_flags_fn_t
) ndr_pull_svcctl_OpenSCManagerA
,
6753 (ndr_print_function_t
) ndr_print_svcctl_OpenSCManagerA
,
6757 "svcctl_OpenServiceA",
6758 sizeof(struct svcctl_OpenServiceA
),
6759 (ndr_push_flags_fn_t
) ndr_push_svcctl_OpenServiceA
,
6760 (ndr_pull_flags_fn_t
) ndr_pull_svcctl_OpenServiceA
,
6761 (ndr_print_function_t
) ndr_print_svcctl_OpenServiceA
,
6765 "svcctl_QueryServiceConfigA",
6766 sizeof(struct svcctl_QueryServiceConfigA
),
6767 (ndr_push_flags_fn_t
) ndr_push_svcctl_QueryServiceConfigA
,
6768 (ndr_pull_flags_fn_t
) ndr_pull_svcctl_QueryServiceConfigA
,
6769 (ndr_print_function_t
) ndr_print_svcctl_QueryServiceConfigA
,
6773 "svcctl_QueryServiceLockStatusA",
6774 sizeof(struct svcctl_QueryServiceLockStatusA
),
6775 (ndr_push_flags_fn_t
) ndr_push_svcctl_QueryServiceLockStatusA
,
6776 (ndr_pull_flags_fn_t
) ndr_pull_svcctl_QueryServiceLockStatusA
,
6777 (ndr_print_function_t
) ndr_print_svcctl_QueryServiceLockStatusA
,
6781 "svcctl_StartServiceA",
6782 sizeof(struct svcctl_StartServiceA
),
6783 (ndr_push_flags_fn_t
) ndr_push_svcctl_StartServiceA
,
6784 (ndr_pull_flags_fn_t
) ndr_pull_svcctl_StartServiceA
,
6785 (ndr_print_function_t
) ndr_print_svcctl_StartServiceA
,
6789 "svcctl_GetServiceDisplayNameA",
6790 sizeof(struct svcctl_GetServiceDisplayNameA
),
6791 (ndr_push_flags_fn_t
) ndr_push_svcctl_GetServiceDisplayNameA
,
6792 (ndr_pull_flags_fn_t
) ndr_pull_svcctl_GetServiceDisplayNameA
,
6793 (ndr_print_function_t
) ndr_print_svcctl_GetServiceDisplayNameA
,
6797 "svcctl_GetServiceKeyNameA",
6798 sizeof(struct svcctl_GetServiceKeyNameA
),
6799 (ndr_push_flags_fn_t
) ndr_push_svcctl_GetServiceKeyNameA
,
6800 (ndr_pull_flags_fn_t
) ndr_pull_svcctl_GetServiceKeyNameA
,
6801 (ndr_print_function_t
) ndr_print_svcctl_GetServiceKeyNameA
,
6805 "svcctl_GetCurrentGroupeStateW",
6806 sizeof(struct svcctl_GetCurrentGroupeStateW
),
6807 (ndr_push_flags_fn_t
) ndr_push_svcctl_GetCurrentGroupeStateW
,
6808 (ndr_pull_flags_fn_t
) ndr_pull_svcctl_GetCurrentGroupeStateW
,
6809 (ndr_print_function_t
) ndr_print_svcctl_GetCurrentGroupeStateW
,
6813 "svcctl_EnumServiceGroupW",
6814 sizeof(struct svcctl_EnumServiceGroupW
),
6815 (ndr_push_flags_fn_t
) ndr_push_svcctl_EnumServiceGroupW
,
6816 (ndr_pull_flags_fn_t
) ndr_pull_svcctl_EnumServiceGroupW
,
6817 (ndr_print_function_t
) ndr_print_svcctl_EnumServiceGroupW
,
6821 "svcctl_ChangeServiceConfig2A",
6822 sizeof(struct svcctl_ChangeServiceConfig2A
),
6823 (ndr_push_flags_fn_t
) ndr_push_svcctl_ChangeServiceConfig2A
,
6824 (ndr_pull_flags_fn_t
) ndr_pull_svcctl_ChangeServiceConfig2A
,
6825 (ndr_print_function_t
) ndr_print_svcctl_ChangeServiceConfig2A
,
6829 "svcctl_ChangeServiceConfig2W",
6830 sizeof(struct svcctl_ChangeServiceConfig2W
),
6831 (ndr_push_flags_fn_t
) ndr_push_svcctl_ChangeServiceConfig2W
,
6832 (ndr_pull_flags_fn_t
) ndr_pull_svcctl_ChangeServiceConfig2W
,
6833 (ndr_print_function_t
) ndr_print_svcctl_ChangeServiceConfig2W
,
6837 "svcctl_QueryServiceConfig2A",
6838 sizeof(struct svcctl_QueryServiceConfig2A
),
6839 (ndr_push_flags_fn_t
) ndr_push_svcctl_QueryServiceConfig2A
,
6840 (ndr_pull_flags_fn_t
) ndr_pull_svcctl_QueryServiceConfig2A
,
6841 (ndr_print_function_t
) ndr_print_svcctl_QueryServiceConfig2A
,
6845 "svcctl_QueryServiceConfig2W",
6846 sizeof(struct svcctl_QueryServiceConfig2W
),
6847 (ndr_push_flags_fn_t
) ndr_push_svcctl_QueryServiceConfig2W
,
6848 (ndr_pull_flags_fn_t
) ndr_pull_svcctl_QueryServiceConfig2W
,
6849 (ndr_print_function_t
) ndr_print_svcctl_QueryServiceConfig2W
,
6853 "svcctl_QueryServiceStatusEx",
6854 sizeof(struct svcctl_QueryServiceStatusEx
),
6855 (ndr_push_flags_fn_t
) ndr_push_svcctl_QueryServiceStatusEx
,
6856 (ndr_pull_flags_fn_t
) ndr_pull_svcctl_QueryServiceStatusEx
,
6857 (ndr_print_function_t
) ndr_print_svcctl_QueryServiceStatusEx
,
6861 "EnumServicesStatusExA",
6862 sizeof(struct EnumServicesStatusExA
),
6863 (ndr_push_flags_fn_t
) ndr_push_EnumServicesStatusExA
,
6864 (ndr_pull_flags_fn_t
) ndr_pull_EnumServicesStatusExA
,
6865 (ndr_print_function_t
) ndr_print_EnumServicesStatusExA
,
6869 "EnumServicesStatusExW",
6870 sizeof(struct EnumServicesStatusExW
),
6871 (ndr_push_flags_fn_t
) ndr_push_EnumServicesStatusExW
,
6872 (ndr_pull_flags_fn_t
) ndr_pull_EnumServicesStatusExW
,
6873 (ndr_print_function_t
) ndr_print_EnumServicesStatusExW
,
6877 "svcctl_SCSendTSMessage",
6878 sizeof(struct svcctl_SCSendTSMessage
),
6879 (ndr_push_flags_fn_t
) ndr_push_svcctl_SCSendTSMessage
,
6880 (ndr_pull_flags_fn_t
) ndr_pull_svcctl_SCSendTSMessage
,
6881 (ndr_print_function_t
) ndr_print_svcctl_SCSendTSMessage
,
6884 { NULL
, 0, NULL
, NULL
, NULL
, false }
6887 static const char * const svcctl_endpoint_strings
[] = {
6888 "ncacn_np:[\\pipe\\svcctl]",
6892 static const struct ndr_interface_string_array svcctl_endpoints
= {
6894 .names
= svcctl_endpoint_strings
6897 static const char * const svcctl_authservice_strings
[] = {
6901 static const struct ndr_interface_string_array svcctl_authservices
= {
6903 .names
= svcctl_authservice_strings
6907 const struct ndr_interface_table ndr_table_svcctl
= {
6910 {0x367abb81,0x9844,0x35f1,{0xad,0x32},{0x98,0xf0,0x38,0x00,0x10,0x03}},
6913 .helpstring
= NDR_SVCCTL_HELPSTRING
,
6915 .calls
= svcctl_calls
,
6916 .endpoints
= &svcctl_endpoints
,
6917 .authservices
= &svcctl_authservices