1
/* parser auto-generated by pidl */
4
#include "../librpc/gen_ndr/ndr_svcctl.h"
6
#include "librpc/gen_ndr/ndr_misc.h"
7
#include "librpc/gen_ndr/ndr_security.h"
8
static enum ndr_err_code ndr_push_SERVICE_LOCK_STATUS(struct ndr_push *ndr, int ndr_flags, const struct SERVICE_LOCK_STATUS *r)
10
if (ndr_flags & NDR_SCALARS) {
11
NDR_CHECK(ndr_push_align(ndr, 5));
12
NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->is_locked));
13
NDR_CHECK(ndr_push_unique_ptr(ndr, r->lock_owner));
14
NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->lock_duration));
15
NDR_CHECK(ndr_push_trailer_align(ndr, 5));
17
if (ndr_flags & NDR_BUFFERS) {
19
NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->lock_owner, CH_UTF16)));
20
NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0));
21
NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->lock_owner, CH_UTF16)));
22
NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->lock_owner, ndr_charset_length(r->lock_owner, CH_UTF16), sizeof(uint16_t), CH_UTF16));
25
return NDR_ERR_SUCCESS;
28
static enum ndr_err_code ndr_pull_SERVICE_LOCK_STATUS(struct ndr_pull *ndr, int ndr_flags, struct SERVICE_LOCK_STATUS *r)
30
uint32_t _ptr_lock_owner;
31
TALLOC_CTX *_mem_save_lock_owner_0;
32
if (ndr_flags & NDR_SCALARS) {
33
NDR_CHECK(ndr_pull_align(ndr, 5));
34
NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->is_locked));
35
NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_lock_owner));
36
if (_ptr_lock_owner) {
37
NDR_PULL_ALLOC(ndr, r->lock_owner);
41
NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->lock_duration));
42
NDR_CHECK(ndr_pull_trailer_align(ndr, 5));
44
if (ndr_flags & NDR_BUFFERS) {
46
_mem_save_lock_owner_0 = NDR_PULL_GET_MEM_CTX(ndr);
47
NDR_PULL_SET_MEM_CTX(ndr, r->lock_owner, 0);
48
NDR_CHECK(ndr_pull_array_size(ndr, &r->lock_owner));
49
NDR_CHECK(ndr_pull_array_length(ndr, &r->lock_owner));
50
if (ndr_get_array_length(ndr, &r->lock_owner) > ndr_get_array_size(ndr, &r->lock_owner)) {
51
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));
53
NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->lock_owner), sizeof(uint16_t)));
54
NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->lock_owner, ndr_get_array_length(ndr, &r->lock_owner), sizeof(uint16_t), CH_UTF16));
55
NDR_PULL_SET_MEM_CTX(ndr, _mem_save_lock_owner_0, 0);
58
return NDR_ERR_SUCCESS;
61
_PUBLIC_ void ndr_print_SERVICE_LOCK_STATUS(struct ndr_print *ndr, const char *name, const struct SERVICE_LOCK_STATUS *r)
63
ndr_print_struct(ndr, name, "SERVICE_LOCK_STATUS");
65
ndr_print_uint32(ndr, "is_locked", r->is_locked);
66
ndr_print_ptr(ndr, "lock_owner", r->lock_owner);
69
ndr_print_string(ndr, "lock_owner", r->lock_owner);
72
ndr_print_uint32(ndr, "lock_duration", r->lock_duration);
76
static enum ndr_err_code ndr_push_svcctl_ServiceStatus(struct ndr_push *ndr, int ndr_flags, enum svcctl_ServiceStatus r)
78
NDR_CHECK(ndr_push_enum_uint32(ndr, NDR_SCALARS, r));
79
return NDR_ERR_SUCCESS;
82
static enum ndr_err_code ndr_pull_svcctl_ServiceStatus(struct ndr_pull *ndr, int ndr_flags, enum svcctl_ServiceStatus *r)
85
NDR_CHECK(ndr_pull_enum_uint32(ndr, NDR_SCALARS, &v));
87
return NDR_ERR_SUCCESS;
90
_PUBLIC_ void ndr_print_svcctl_ServiceStatus(struct ndr_print *ndr, const char *name, enum svcctl_ServiceStatus r)
92
const char *val = NULL;
95
case SVCCTL_STATE_UNKNOWN: val = "SVCCTL_STATE_UNKNOWN"; break;
96
case SVCCTL_STOPPED: val = "SVCCTL_STOPPED"; break;
97
case SVCCTL_START_PENDING: val = "SVCCTL_START_PENDING"; break;
98
case SVCCTL_STOP_PENDING: val = "SVCCTL_STOP_PENDING"; break;
99
case SVCCTL_RUNNING: val = "SVCCTL_RUNNING"; break;
100
case SVCCTL_CONTINUE_PENDING: val = "SVCCTL_CONTINUE_PENDING"; break;
101
case SVCCTL_PAUSE_PENDING: val = "SVCCTL_PAUSE_PENDING"; break;
102
case SVCCTL_PAUSED: val = "SVCCTL_PAUSED"; break;
104
ndr_print_enum(ndr, name, "ENUM", val, r);
107
static enum ndr_err_code ndr_push_svcctl_ControlsAccepted(struct ndr_push *ndr, int ndr_flags, uint32_t r)
109
NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r));
110
return NDR_ERR_SUCCESS;
113
static enum ndr_err_code ndr_pull_svcctl_ControlsAccepted(struct ndr_pull *ndr, int ndr_flags, uint32_t *r)
116
NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &v));
118
return NDR_ERR_SUCCESS;
121
_PUBLIC_ void ndr_print_svcctl_ControlsAccepted(struct ndr_print *ndr, const char *name, uint32_t r)
123
ndr_print_uint32(ndr, name, r);
125
ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SVCCTL_ACCEPT_STOP", SVCCTL_ACCEPT_STOP, r);
126
ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SVCCTL_ACCEPT_PAUSE_CONTINUE", SVCCTL_ACCEPT_PAUSE_CONTINUE, r);
127
ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SVCCTL_ACCEPT_SHUTDOWN", SVCCTL_ACCEPT_SHUTDOWN, r);
128
ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SVCCTL_ACCEPT_PARAMCHANGE", SVCCTL_ACCEPT_PARAMCHANGE, r);
129
ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SVCCTL_ACCEPT_NETBINDCHANGE", SVCCTL_ACCEPT_NETBINDCHANGE, r);
130
ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SVCCTL_ACCEPT_HARDWAREPROFILECHANGE", SVCCTL_ACCEPT_HARDWAREPROFILECHANGE, r);
131
ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SVCCTL_ACCEPT_POWEREVENT", SVCCTL_ACCEPT_POWEREVENT, r);
135
static enum ndr_err_code ndr_push_SERVICE_STATUS(struct ndr_push *ndr, int ndr_flags, const struct SERVICE_STATUS *r)
137
if (ndr_flags & NDR_SCALARS) {
138
NDR_CHECK(ndr_push_align(ndr, 4));
139
NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->type));
140
NDR_CHECK(ndr_push_svcctl_ServiceStatus(ndr, NDR_SCALARS, r->state));
141
NDR_CHECK(ndr_push_svcctl_ControlsAccepted(ndr, NDR_SCALARS, r->controls_accepted));
142
NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->win32_exit_code));
143
NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->service_exit_code));
144
NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->check_point));
145
NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->wait_hint));
146
NDR_CHECK(ndr_push_trailer_align(ndr, 4));
148
if (ndr_flags & NDR_BUFFERS) {
150
return NDR_ERR_SUCCESS;
153
static enum ndr_err_code ndr_pull_SERVICE_STATUS(struct ndr_pull *ndr, int ndr_flags, struct SERVICE_STATUS *r)
155
if (ndr_flags & NDR_SCALARS) {
156
NDR_CHECK(ndr_pull_align(ndr, 4));
157
NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->type));
158
NDR_CHECK(ndr_pull_svcctl_ServiceStatus(ndr, NDR_SCALARS, &r->state));
159
NDR_CHECK(ndr_pull_svcctl_ControlsAccepted(ndr, NDR_SCALARS, &r->controls_accepted));
160
NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->win32_exit_code));
161
NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->service_exit_code));
162
NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->check_point));
163
NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->wait_hint));
164
NDR_CHECK(ndr_pull_trailer_align(ndr, 4));
166
if (ndr_flags & NDR_BUFFERS) {
168
return NDR_ERR_SUCCESS;
171
_PUBLIC_ void ndr_print_SERVICE_STATUS(struct ndr_print *ndr, const char *name, const struct SERVICE_STATUS *r)
173
ndr_print_struct(ndr, name, "SERVICE_STATUS");
175
ndr_print_uint32(ndr, "type", r->type);
176
ndr_print_svcctl_ServiceStatus(ndr, "state", r->state);
177
ndr_print_svcctl_ControlsAccepted(ndr, "controls_accepted", r->controls_accepted);
178
ndr_print_WERROR(ndr, "win32_exit_code", r->win32_exit_code);
179
ndr_print_uint32(ndr, "service_exit_code", r->service_exit_code);
180
ndr_print_uint32(ndr, "check_point", r->check_point);
181
ndr_print_uint32(ndr, "wait_hint", r->wait_hint);
185
_PUBLIC_ enum ndr_err_code ndr_push_SERVICE_STATUS_PROCESS(struct ndr_push *ndr, int ndr_flags, const struct SERVICE_STATUS_PROCESS *r)
187
if (ndr_flags & NDR_SCALARS) {
188
NDR_CHECK(ndr_push_align(ndr, 4));
189
NDR_CHECK(ndr_push_SERVICE_STATUS(ndr, NDR_SCALARS, &r->status));
190
NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->process_id));
191
NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->service_flags));
192
NDR_CHECK(ndr_push_trailer_align(ndr, 4));
194
if (ndr_flags & NDR_BUFFERS) {
196
return NDR_ERR_SUCCESS;
199
_PUBLIC_ enum ndr_err_code ndr_pull_SERVICE_STATUS_PROCESS(struct ndr_pull *ndr, int ndr_flags, struct SERVICE_STATUS_PROCESS *r)
201
if (ndr_flags & NDR_SCALARS) {
202
NDR_CHECK(ndr_pull_align(ndr, 4));
203
NDR_CHECK(ndr_pull_SERVICE_STATUS(ndr, NDR_SCALARS, &r->status));
204
NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->process_id));
205
NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->service_flags));
206
NDR_CHECK(ndr_pull_trailer_align(ndr, 4));
208
if (ndr_flags & NDR_BUFFERS) {
210
return NDR_ERR_SUCCESS;
213
_PUBLIC_ void ndr_print_SERVICE_STATUS_PROCESS(struct ndr_print *ndr, const char *name, const struct SERVICE_STATUS_PROCESS *r)
215
ndr_print_struct(ndr, name, "SERVICE_STATUS_PROCESS");
217
ndr_print_SERVICE_STATUS(ndr, "status", &r->status);
218
ndr_print_uint32(ndr, "process_id", r->process_id);
219
ndr_print_uint32(ndr, "service_flags", r->service_flags);
223
_PUBLIC_ enum ndr_err_code ndr_push_ENUM_SERVICE_STATUSW(struct ndr_push *ndr, int ndr_flags, const struct ENUM_SERVICE_STATUSW *r)
225
if (ndr_flags & NDR_SCALARS) {
226
NDR_CHECK(ndr_push_align(ndr, 5));
228
uint32_t _flags_save_string = ndr->flags;
229
ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
230
NDR_CHECK(ndr_push_relative_ptr1(ndr, r->service_name));
231
ndr->flags = _flags_save_string;
234
uint32_t _flags_save_string = ndr->flags;
235
ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
236
NDR_CHECK(ndr_push_relative_ptr1(ndr, r->display_name));
237
ndr->flags = _flags_save_string;
239
NDR_CHECK(ndr_push_SERVICE_STATUS(ndr, NDR_SCALARS, &r->status));
240
NDR_CHECK(ndr_push_trailer_align(ndr, 5));
242
if (ndr_flags & NDR_BUFFERS) {
244
uint32_t _flags_save_string = ndr->flags;
245
ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
246
if (r->service_name) {
247
NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->service_name));
248
NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->service_name));
249
NDR_CHECK(ndr_push_relative_ptr2_end(ndr, r->service_name));
251
ndr->flags = _flags_save_string;
254
uint32_t _flags_save_string = ndr->flags;
255
ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
256
if (r->display_name) {
257
NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->display_name));
258
NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->display_name));
259
NDR_CHECK(ndr_push_relative_ptr2_end(ndr, r->display_name));
261
ndr->flags = _flags_save_string;
264
return NDR_ERR_SUCCESS;
267
_PUBLIC_ enum ndr_err_code ndr_pull_ENUM_SERVICE_STATUSW(struct ndr_pull *ndr, int ndr_flags, struct ENUM_SERVICE_STATUSW *r)
269
uint32_t _ptr_service_name;
270
TALLOC_CTX *_mem_save_service_name_0;
271
uint32_t _ptr_display_name;
272
TALLOC_CTX *_mem_save_display_name_0;
273
if (ndr_flags & NDR_SCALARS) {
274
NDR_CHECK(ndr_pull_align(ndr, 5));
276
uint32_t _flags_save_string = ndr->flags;
277
ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
278
NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_service_name));
279
if (_ptr_service_name) {
280
NDR_PULL_ALLOC(ndr, r->service_name);
281
NDR_CHECK(ndr_pull_relative_ptr1(ndr, r->service_name, _ptr_service_name));
283
r->service_name = NULL;
285
ndr->flags = _flags_save_string;
288
uint32_t _flags_save_string = ndr->flags;
289
ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
290
NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_display_name));
291
if (_ptr_display_name) {
292
NDR_PULL_ALLOC(ndr, r->display_name);
293
NDR_CHECK(ndr_pull_relative_ptr1(ndr, r->display_name, _ptr_display_name));
295
r->display_name = NULL;
297
ndr->flags = _flags_save_string;
299
NDR_CHECK(ndr_pull_SERVICE_STATUS(ndr, NDR_SCALARS, &r->status));
300
NDR_CHECK(ndr_pull_trailer_align(ndr, 5));
302
if (ndr_flags & NDR_BUFFERS) {
304
uint32_t _flags_save_string = ndr->flags;
305
ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
306
if (r->service_name) {
307
uint32_t _relative_save_offset;
308
_relative_save_offset = ndr->offset;
309
NDR_CHECK(ndr_pull_relative_ptr2(ndr, r->service_name));
310
_mem_save_service_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
311
NDR_PULL_SET_MEM_CTX(ndr, r->service_name, 0);
312
NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->service_name));
313
NDR_PULL_SET_MEM_CTX(ndr, _mem_save_service_name_0, 0);
314
ndr->offset = _relative_save_offset;
316
ndr->flags = _flags_save_string;
319
uint32_t _flags_save_string = ndr->flags;
320
ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
321
if (r->display_name) {
322
uint32_t _relative_save_offset;
323
_relative_save_offset = ndr->offset;
324
NDR_CHECK(ndr_pull_relative_ptr2(ndr, r->display_name));
325
_mem_save_display_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
326
NDR_PULL_SET_MEM_CTX(ndr, r->display_name, 0);
327
NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->display_name));
328
NDR_PULL_SET_MEM_CTX(ndr, _mem_save_display_name_0, 0);
329
ndr->offset = _relative_save_offset;
331
ndr->flags = _flags_save_string;
334
return NDR_ERR_SUCCESS;
337
_PUBLIC_ void ndr_print_ENUM_SERVICE_STATUSW(struct ndr_print *ndr, const char *name, const struct ENUM_SERVICE_STATUSW *r)
339
ndr_print_struct(ndr, name, "ENUM_SERVICE_STATUSW");
341
ndr_print_ptr(ndr, "service_name", r->service_name);
343
if (r->service_name) {
344
ndr_print_string(ndr, "service_name", r->service_name);
347
ndr_print_ptr(ndr, "display_name", r->display_name);
349
if (r->display_name) {
350
ndr_print_string(ndr, "display_name", r->display_name);
353
ndr_print_SERVICE_STATUS(ndr, "status", &r->status);
357
_PUBLIC_ size_t ndr_size_ENUM_SERVICE_STATUSW(const struct ENUM_SERVICE_STATUSW *r, struct smb_iconv_convenience *ic, int flags)
359
return ndr_size_struct(r, flags, (ndr_push_flags_fn_t)ndr_push_ENUM_SERVICE_STATUSW, ic);
362
_PUBLIC_ enum ndr_err_code ndr_push_ENUM_SERVICE_STATUSA(struct ndr_push *ndr, int ndr_flags, const struct ENUM_SERVICE_STATUSA *r)
364
if (ndr_flags & NDR_SCALARS) {
365
NDR_CHECK(ndr_push_align(ndr, 5));
367
uint32_t _flags_save_string = ndr->flags;
368
ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_ASCII|LIBNDR_FLAG_STR_NULLTERM);
369
NDR_CHECK(ndr_push_relative_ptr1(ndr, r->service_name));
370
ndr->flags = _flags_save_string;
373
uint32_t _flags_save_string = ndr->flags;
374
ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_ASCII|LIBNDR_FLAG_STR_NULLTERM);
375
NDR_CHECK(ndr_push_relative_ptr1(ndr, r->display_name));
376
ndr->flags = _flags_save_string;
378
NDR_CHECK(ndr_push_SERVICE_STATUS(ndr, NDR_SCALARS, &r->status));
379
NDR_CHECK(ndr_push_trailer_align(ndr, 5));
381
if (ndr_flags & NDR_BUFFERS) {
383
uint32_t _flags_save_string = ndr->flags;
384
ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_ASCII|LIBNDR_FLAG_STR_NULLTERM);
385
if (r->service_name) {
386
NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->service_name));
387
NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->service_name));
388
NDR_CHECK(ndr_push_relative_ptr2_end(ndr, r->service_name));
390
ndr->flags = _flags_save_string;
393
uint32_t _flags_save_string = ndr->flags;
394
ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_ASCII|LIBNDR_FLAG_STR_NULLTERM);
395
if (r->display_name) {
396
NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->display_name));
397
NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->display_name));
398
NDR_CHECK(ndr_push_relative_ptr2_end(ndr, r->display_name));
400
ndr->flags = _flags_save_string;
403
return NDR_ERR_SUCCESS;
406
_PUBLIC_ enum ndr_err_code ndr_pull_ENUM_SERVICE_STATUSA(struct ndr_pull *ndr, int ndr_flags, struct ENUM_SERVICE_STATUSA *r)
408
uint32_t _ptr_service_name;
409
TALLOC_CTX *_mem_save_service_name_0;
410
uint32_t _ptr_display_name;
411
TALLOC_CTX *_mem_save_display_name_0;
412
if (ndr_flags & NDR_SCALARS) {
413
NDR_CHECK(ndr_pull_align(ndr, 5));
415
uint32_t _flags_save_string = ndr->flags;
416
ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_ASCII|LIBNDR_FLAG_STR_NULLTERM);
417
NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_service_name));
418
if (_ptr_service_name) {
419
NDR_PULL_ALLOC(ndr, r->service_name);
420
NDR_CHECK(ndr_pull_relative_ptr1(ndr, r->service_name, _ptr_service_name));
422
r->service_name = NULL;
424
ndr->flags = _flags_save_string;
427
uint32_t _flags_save_string = ndr->flags;
428
ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_ASCII|LIBNDR_FLAG_STR_NULLTERM);
429
NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_display_name));
430
if (_ptr_display_name) {
431
NDR_PULL_ALLOC(ndr, r->display_name);
432
NDR_CHECK(ndr_pull_relative_ptr1(ndr, r->display_name, _ptr_display_name));
434
r->display_name = NULL;
436
ndr->flags = _flags_save_string;
438
NDR_CHECK(ndr_pull_SERVICE_STATUS(ndr, NDR_SCALARS, &r->status));
439
NDR_CHECK(ndr_pull_trailer_align(ndr, 5));
441
if (ndr_flags & NDR_BUFFERS) {
443
uint32_t _flags_save_string = ndr->flags;
444
ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_ASCII|LIBNDR_FLAG_STR_NULLTERM);
445
if (r->service_name) {
446
uint32_t _relative_save_offset;
447
_relative_save_offset = ndr->offset;
448
NDR_CHECK(ndr_pull_relative_ptr2(ndr, r->service_name));
449
_mem_save_service_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
450
NDR_PULL_SET_MEM_CTX(ndr, r->service_name, 0);
451
NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->service_name));
452
NDR_PULL_SET_MEM_CTX(ndr, _mem_save_service_name_0, 0);
453
ndr->offset = _relative_save_offset;
455
ndr->flags = _flags_save_string;
458
uint32_t _flags_save_string = ndr->flags;
459
ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_ASCII|LIBNDR_FLAG_STR_NULLTERM);
460
if (r->display_name) {
461
uint32_t _relative_save_offset;
462
_relative_save_offset = ndr->offset;
463
NDR_CHECK(ndr_pull_relative_ptr2(ndr, r->display_name));
464
_mem_save_display_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
465
NDR_PULL_SET_MEM_CTX(ndr, r->display_name, 0);
466
NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->display_name));
467
NDR_PULL_SET_MEM_CTX(ndr, _mem_save_display_name_0, 0);
468
ndr->offset = _relative_save_offset;
470
ndr->flags = _flags_save_string;
473
return NDR_ERR_SUCCESS;
476
_PUBLIC_ void ndr_print_ENUM_SERVICE_STATUSA(struct ndr_print *ndr, const char *name, const struct ENUM_SERVICE_STATUSA *r)
478
ndr_print_struct(ndr, name, "ENUM_SERVICE_STATUSA");
480
ndr_print_ptr(ndr, "service_name", r->service_name);
482
if (r->service_name) {
483
ndr_print_string(ndr, "service_name", r->service_name);
486
ndr_print_ptr(ndr, "display_name", r->display_name);
488
if (r->display_name) {
489
ndr_print_string(ndr, "display_name", r->display_name);
492
ndr_print_SERVICE_STATUS(ndr, "status", &r->status);
496
_PUBLIC_ size_t ndr_size_ENUM_SERVICE_STATUSA(const struct ENUM_SERVICE_STATUSA *r, struct smb_iconv_convenience *ic, int flags)
498
return ndr_size_struct(r, flags, (ndr_push_flags_fn_t)ndr_push_ENUM_SERVICE_STATUSA, ic);
501
_PUBLIC_ enum ndr_err_code ndr_push_svcctl_ServerType(struct ndr_push *ndr, int ndr_flags, uint32_t r)
503
NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r));
504
return NDR_ERR_SUCCESS;
507
_PUBLIC_ enum ndr_err_code ndr_pull_svcctl_ServerType(struct ndr_pull *ndr, int ndr_flags, uint32_t *r)
510
NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &v));
512
return NDR_ERR_SUCCESS;
515
_PUBLIC_ void ndr_print_svcctl_ServerType(struct ndr_print *ndr, const char *name, uint32_t r)
517
ndr_print_uint32(ndr, name, r);
519
ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_WORKSTATION", SV_TYPE_WORKSTATION, r);
520
ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_SERVER", SV_TYPE_SERVER, r);
521
ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_SQLSERVER", SV_TYPE_SQLSERVER, r);
522
ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_DOMAIN_CTRL", SV_TYPE_DOMAIN_CTRL, r);
523
ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_DOMAIN_BAKCTRL", SV_TYPE_DOMAIN_BAKCTRL, r);
524
ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_TIME_SOURCE", SV_TYPE_TIME_SOURCE, r);
525
ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_AFP", SV_TYPE_AFP, r);
526
ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_NOVELL", SV_TYPE_NOVELL, r);
527
ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_DOMAIN_MEMBER", SV_TYPE_DOMAIN_MEMBER, r);
528
ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_PRINTQ_SERVER", SV_TYPE_PRINTQ_SERVER, r);
529
ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_DIALIN_SERVER", SV_TYPE_DIALIN_SERVER, r);
530
ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_SERVER_UNIX", SV_TYPE_SERVER_UNIX, r);
531
ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_NT", SV_TYPE_NT, r);
532
ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_WFW", SV_TYPE_WFW, r);
533
ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_SERVER_MFPN", SV_TYPE_SERVER_MFPN, r);
534
ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_SERVER_NT", SV_TYPE_SERVER_NT, r);
535
ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_POTENTIAL_BROWSER", SV_TYPE_POTENTIAL_BROWSER, r);
536
ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_BACKUP_BROWSER", SV_TYPE_BACKUP_BROWSER, r);
537
ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_MASTER_BROWSER", SV_TYPE_MASTER_BROWSER, r);
538
ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_DOMAIN_MASTER", SV_TYPE_DOMAIN_MASTER, r);
539
ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_SERVER_OSF", SV_TYPE_SERVER_OSF, r);
540
ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_SERVER_VMS", SV_TYPE_SERVER_VMS, r);
541
ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_WIN95_PLUS", SV_TYPE_WIN95_PLUS, r);
542
ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_DFS_SERVER", SV_TYPE_DFS_SERVER, r);
543
ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_ALTERNATE_XPORT", SV_TYPE_ALTERNATE_XPORT, r);
544
ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_LOCAL_LIST_ONLY", SV_TYPE_LOCAL_LIST_ONLY, r);
545
ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_DOMAIN_ENUM", SV_TYPE_DOMAIN_ENUM, r);
549
static enum ndr_err_code ndr_push_SERVICE_CONTROL(struct ndr_push *ndr, int ndr_flags, enum SERVICE_CONTROL r)
551
NDR_CHECK(ndr_push_enum_uint32(ndr, NDR_SCALARS, r));
552
return NDR_ERR_SUCCESS;
555
static enum ndr_err_code ndr_pull_SERVICE_CONTROL(struct ndr_pull *ndr, int ndr_flags, enum SERVICE_CONTROL *r)
558
NDR_CHECK(ndr_pull_enum_uint32(ndr, NDR_SCALARS, &v));
560
return NDR_ERR_SUCCESS;
563
_PUBLIC_ void ndr_print_SERVICE_CONTROL(struct ndr_print *ndr, const char *name, enum SERVICE_CONTROL r)
565
const char *val = NULL;
568
case SVCCTL_CONTROL_STOP: val = "SVCCTL_CONTROL_STOP"; break;
569
case SVCCTL_CONTROL_PAUSE: val = "SVCCTL_CONTROL_PAUSE"; break;
570
case SVCCTL_CONTROL_CONTINUE: val = "SVCCTL_CONTROL_CONTINUE"; break;
571
case SVCCTL_CONTROL_INTERROGATE: val = "SVCCTL_CONTROL_INTERROGATE"; break;
572
case SVCCTL_CONTROL_SHUTDOWN: val = "SVCCTL_CONTROL_SHUTDOWN"; break;
574
ndr_print_enum(ndr, name, "ENUM", val, r);
577
static enum ndr_err_code ndr_push_svcctl_ErrorControl(struct ndr_push *ndr, int ndr_flags, enum svcctl_ErrorControl r)
579
NDR_CHECK(ndr_push_enum_uint32(ndr, NDR_SCALARS, r));
580
return NDR_ERR_SUCCESS;
583
static enum ndr_err_code ndr_pull_svcctl_ErrorControl(struct ndr_pull *ndr, int ndr_flags, enum svcctl_ErrorControl *r)
586
NDR_CHECK(ndr_pull_enum_uint32(ndr, NDR_SCALARS, &v));
588
return NDR_ERR_SUCCESS;
591
_PUBLIC_ void ndr_print_svcctl_ErrorControl(struct ndr_print *ndr, const char *name, enum svcctl_ErrorControl r)
593
const char *val = NULL;
596
case SVCCTL_SVC_ERROR_IGNORE: val = "SVCCTL_SVC_ERROR_IGNORE"; break;
597
case SVCCTL_SVC_ERROR_NORMAL: val = "SVCCTL_SVC_ERROR_NORMAL"; break;
598
case SVCCTL_SVC_ERROR_CRITICAL: val = "SVCCTL_SVC_ERROR_CRITICAL"; break;
599
case SVCCTL_SVC_ERROR_SEVERE: val = "SVCCTL_SVC_ERROR_SEVERE"; break;
601
ndr_print_enum(ndr, name, "ENUM", val, r);
604
static enum ndr_err_code ndr_push_svcctl_StartType(struct ndr_push *ndr, int ndr_flags, enum svcctl_StartType r)
606
NDR_CHECK(ndr_push_enum_uint32(ndr, NDR_SCALARS, r));
607
return NDR_ERR_SUCCESS;
610
static enum ndr_err_code ndr_pull_svcctl_StartType(struct ndr_pull *ndr, int ndr_flags, enum svcctl_StartType *r)
613
NDR_CHECK(ndr_pull_enum_uint32(ndr, NDR_SCALARS, &v));
615
return NDR_ERR_SUCCESS;
618
_PUBLIC_ void ndr_print_svcctl_StartType(struct ndr_print *ndr, const char *name, enum svcctl_StartType r)
620
const char *val = NULL;
623
case SVCCTL_BOOT_START: val = "SVCCTL_BOOT_START"; break;
624
case SVCCTL_SYSTEM_START: val = "SVCCTL_SYSTEM_START"; break;
625
case SVCCTL_AUTO_START: val = "SVCCTL_AUTO_START"; break;
626
case SVCCTL_DEMAND_START: val = "SVCCTL_DEMAND_START"; break;
627
case SVCCTL_DISABLED: val = "SVCCTL_DISABLED"; break;
629
ndr_print_enum(ndr, name, "ENUM", val, r);
632
static enum ndr_err_code ndr_push_svcctl_ServiceState(struct ndr_push *ndr, int ndr_flags, enum svcctl_ServiceState r)
634
NDR_CHECK(ndr_push_enum_uint32(ndr, NDR_SCALARS, r));
635
return NDR_ERR_SUCCESS;
638
static enum ndr_err_code ndr_pull_svcctl_ServiceState(struct ndr_pull *ndr, int ndr_flags, enum svcctl_ServiceState *r)
641
NDR_CHECK(ndr_pull_enum_uint32(ndr, NDR_SCALARS, &v));
643
return NDR_ERR_SUCCESS;
646
_PUBLIC_ void ndr_print_svcctl_ServiceState(struct ndr_print *ndr, const char *name, enum svcctl_ServiceState r)
648
const char *val = NULL;
651
case SERVICE_STATE_ACTIVE: val = "SERVICE_STATE_ACTIVE"; break;
652
case SERVICE_STATE_INACTIVE: val = "SERVICE_STATE_INACTIVE"; break;
653
case SERVICE_STATE_ALL: val = "SERVICE_STATE_ALL"; break;
655
ndr_print_enum(ndr, name, "ENUM", val, r);
658
static enum ndr_err_code ndr_push_svcctl_MgrAccessMask(struct ndr_push *ndr, int ndr_flags, uint32_t r)
660
NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r));
661
return NDR_ERR_SUCCESS;
664
static enum ndr_err_code ndr_pull_svcctl_MgrAccessMask(struct ndr_pull *ndr, int ndr_flags, uint32_t *r)
667
NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &v));
669
return NDR_ERR_SUCCESS;
672
_PUBLIC_ void ndr_print_svcctl_MgrAccessMask(struct ndr_print *ndr, const char *name, uint32_t r)
674
ndr_print_uint32(ndr, name, r);
676
ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SC_RIGHT_MGR_CONNECT", SC_RIGHT_MGR_CONNECT, r);
677
ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SC_RIGHT_MGR_CREATE_SERVICE", SC_RIGHT_MGR_CREATE_SERVICE, r);
678
ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SC_RIGHT_MGR_ENUMERATE_SERVICE", SC_RIGHT_MGR_ENUMERATE_SERVICE, r);
679
ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SC_RIGHT_MGR_LOCK", SC_RIGHT_MGR_LOCK, r);
680
ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SC_RIGHT_MGR_QUERY_LOCK_STATUS", SC_RIGHT_MGR_QUERY_LOCK_STATUS, r);
681
ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SC_RIGHT_MGR_MODIFY_BOOT_CONFIG", SC_RIGHT_MGR_MODIFY_BOOT_CONFIG, r);
685
static enum ndr_err_code ndr_push_svcctl_ServiceAccessMask(struct ndr_push *ndr, int ndr_flags, uint32_t r)
687
NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r));
688
return NDR_ERR_SUCCESS;
691
static enum ndr_err_code ndr_pull_svcctl_ServiceAccessMask(struct ndr_pull *ndr, int ndr_flags, uint32_t *r)
694
NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &v));
696
return NDR_ERR_SUCCESS;
699
_PUBLIC_ void ndr_print_svcctl_ServiceAccessMask(struct ndr_print *ndr, const char *name, uint32_t r)
701
ndr_print_uint32(ndr, name, r);
703
ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SC_RIGHT_SVC_QUERY_CONFIG", SC_RIGHT_SVC_QUERY_CONFIG, r);
704
ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SC_RIGHT_SVC_CHANGE_CONFIG", SC_RIGHT_SVC_CHANGE_CONFIG, r);
705
ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SC_RIGHT_SVC_QUERY_STATUS", SC_RIGHT_SVC_QUERY_STATUS, r);
706
ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SC_RIGHT_SVC_ENUMERATE_DEPENDENTS", SC_RIGHT_SVC_ENUMERATE_DEPENDENTS, r);
707
ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SC_RIGHT_SVC_START", SC_RIGHT_SVC_START, r);
708
ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SC_RIGHT_SVC_STOP", SC_RIGHT_SVC_STOP, r);
709
ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SC_RIGHT_SVC_PAUSE_CONTINUE", SC_RIGHT_SVC_PAUSE_CONTINUE, r);
710
ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SC_RIGHT_SVC_INTERROGATE", SC_RIGHT_SVC_INTERROGATE, r);
711
ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SC_RIGHT_SVC_USER_DEFINED_CONTROL", SC_RIGHT_SVC_USER_DEFINED_CONTROL, r);
715
_PUBLIC_ enum ndr_err_code ndr_push_QUERY_SERVICE_CONFIG(struct ndr_push *ndr, int ndr_flags, const struct QUERY_SERVICE_CONFIG *r)
717
if (ndr_flags & NDR_SCALARS) {
718
NDR_CHECK(ndr_push_align(ndr, 5));
719
NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->service_type));
720
NDR_CHECK(ndr_push_svcctl_StartType(ndr, NDR_SCALARS, r->start_type));
721
NDR_CHECK(ndr_push_svcctl_ErrorControl(ndr, NDR_SCALARS, r->error_control));
722
NDR_CHECK(ndr_push_unique_ptr(ndr, r->executablepath));
723
NDR_CHECK(ndr_push_unique_ptr(ndr, r->loadordergroup));
724
NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->tag_id));
725
NDR_CHECK(ndr_push_unique_ptr(ndr, r->dependencies));
726
NDR_CHECK(ndr_push_unique_ptr(ndr, r->startname));
727
NDR_CHECK(ndr_push_unique_ptr(ndr, r->displayname));
728
NDR_CHECK(ndr_push_trailer_align(ndr, 5));
730
if (ndr_flags & NDR_BUFFERS) {
731
if (r->executablepath) {
732
NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->executablepath, CH_UTF16)));
733
NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0));
734
NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->executablepath, CH_UTF16)));
735
NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->executablepath, ndr_charset_length(r->executablepath, CH_UTF16), sizeof(uint16_t), CH_UTF16));
737
if (r->loadordergroup) {
738
NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->loadordergroup, CH_UTF16)));
739
NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0));
740
NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->loadordergroup, CH_UTF16)));
741
NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->loadordergroup, ndr_charset_length(r->loadordergroup, CH_UTF16), sizeof(uint16_t), CH_UTF16));
743
if (r->dependencies) {
744
NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->dependencies, CH_UTF16)));
745
NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0));
746
NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->dependencies, CH_UTF16)));
747
NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->dependencies, ndr_charset_length(r->dependencies, CH_UTF16), sizeof(uint16_t), CH_UTF16));
750
NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->startname, CH_UTF16)));
751
NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0));
752
NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->startname, CH_UTF16)));
753
NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->startname, ndr_charset_length(r->startname, CH_UTF16), sizeof(uint16_t), CH_UTF16));
755
if (r->displayname) {
756
NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->displayname, CH_UTF16)));
757
NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0));
758
NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->displayname, CH_UTF16)));
759
NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->displayname, ndr_charset_length(r->displayname, CH_UTF16), sizeof(uint16_t), CH_UTF16));
762
return NDR_ERR_SUCCESS;
765
_PUBLIC_ enum ndr_err_code ndr_pull_QUERY_SERVICE_CONFIG(struct ndr_pull *ndr, int ndr_flags, struct QUERY_SERVICE_CONFIG *r)
767
uint32_t _ptr_executablepath;
768
TALLOC_CTX *_mem_save_executablepath_0;
769
uint32_t _ptr_loadordergroup;
770
TALLOC_CTX *_mem_save_loadordergroup_0;
771
uint32_t _ptr_dependencies;
772
TALLOC_CTX *_mem_save_dependencies_0;
773
uint32_t _ptr_startname;
774
TALLOC_CTX *_mem_save_startname_0;
775
uint32_t _ptr_displayname;
776
TALLOC_CTX *_mem_save_displayname_0;
777
if (ndr_flags & NDR_SCALARS) {
778
NDR_CHECK(ndr_pull_align(ndr, 5));
779
NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->service_type));
780
NDR_CHECK(ndr_pull_svcctl_StartType(ndr, NDR_SCALARS, &r->start_type));
781
NDR_CHECK(ndr_pull_svcctl_ErrorControl(ndr, NDR_SCALARS, &r->error_control));
782
NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_executablepath));
783
if (_ptr_executablepath) {
784
NDR_PULL_ALLOC(ndr, r->executablepath);
786
r->executablepath = NULL;
788
NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_loadordergroup));
789
if (_ptr_loadordergroup) {
790
NDR_PULL_ALLOC(ndr, r->loadordergroup);
792
r->loadordergroup = NULL;
794
NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->tag_id));
795
NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_dependencies));
796
if (_ptr_dependencies) {
797
NDR_PULL_ALLOC(ndr, r->dependencies);
799
r->dependencies = NULL;
801
NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_startname));
802
if (_ptr_startname) {
803
NDR_PULL_ALLOC(ndr, r->startname);
807
NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_displayname));
808
if (_ptr_displayname) {
809
NDR_PULL_ALLOC(ndr, r->displayname);
811
r->displayname = NULL;
813
NDR_CHECK(ndr_pull_trailer_align(ndr, 5));
815
if (ndr_flags & NDR_BUFFERS) {
816
if (r->executablepath) {
817
_mem_save_executablepath_0 = NDR_PULL_GET_MEM_CTX(ndr);
818
NDR_PULL_SET_MEM_CTX(ndr, r->executablepath, 0);
819
NDR_CHECK(ndr_pull_array_size(ndr, &r->executablepath));
820
NDR_CHECK(ndr_pull_array_length(ndr, &r->executablepath));
821
if (ndr_get_array_length(ndr, &r->executablepath) > ndr_get_array_size(ndr, &r->executablepath)) {
822
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));
824
NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->executablepath), sizeof(uint16_t)));
825
NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->executablepath, ndr_get_array_length(ndr, &r->executablepath), sizeof(uint16_t), CH_UTF16));
826
NDR_PULL_SET_MEM_CTX(ndr, _mem_save_executablepath_0, 0);
828
if (r->loadordergroup) {
829
_mem_save_loadordergroup_0 = NDR_PULL_GET_MEM_CTX(ndr);
830
NDR_PULL_SET_MEM_CTX(ndr, r->loadordergroup, 0);
831
NDR_CHECK(ndr_pull_array_size(ndr, &r->loadordergroup));
832
NDR_CHECK(ndr_pull_array_length(ndr, &r->loadordergroup));
833
if (ndr_get_array_length(ndr, &r->loadordergroup) > ndr_get_array_size(ndr, &r->loadordergroup)) {
834
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));
836
NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->loadordergroup), sizeof(uint16_t)));
837
NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->loadordergroup, ndr_get_array_length(ndr, &r->loadordergroup), sizeof(uint16_t), CH_UTF16));
838
NDR_PULL_SET_MEM_CTX(ndr, _mem_save_loadordergroup_0, 0);
840
if (r->dependencies) {
841
_mem_save_dependencies_0 = NDR_PULL_GET_MEM_CTX(ndr);
842
NDR_PULL_SET_MEM_CTX(ndr, r->dependencies, 0);
843
NDR_CHECK(ndr_pull_array_size(ndr, &r->dependencies));
844
NDR_CHECK(ndr_pull_array_length(ndr, &r->dependencies));
845
if (ndr_get_array_length(ndr, &r->dependencies) > ndr_get_array_size(ndr, &r->dependencies)) {
846
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));
848
NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->dependencies), sizeof(uint16_t)));
849
NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->dependencies, ndr_get_array_length(ndr, &r->dependencies), sizeof(uint16_t), CH_UTF16));
850
NDR_PULL_SET_MEM_CTX(ndr, _mem_save_dependencies_0, 0);
853
_mem_save_startname_0 = NDR_PULL_GET_MEM_CTX(ndr);
854
NDR_PULL_SET_MEM_CTX(ndr, r->startname, 0);
855
NDR_CHECK(ndr_pull_array_size(ndr, &r->startname));
856
NDR_CHECK(ndr_pull_array_length(ndr, &r->startname));
857
if (ndr_get_array_length(ndr, &r->startname) > ndr_get_array_size(ndr, &r->startname)) {
858
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));
860
NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->startname), sizeof(uint16_t)));
861
NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->startname, ndr_get_array_length(ndr, &r->startname), sizeof(uint16_t), CH_UTF16));
862
NDR_PULL_SET_MEM_CTX(ndr, _mem_save_startname_0, 0);
864
if (r->displayname) {
865
_mem_save_displayname_0 = NDR_PULL_GET_MEM_CTX(ndr);
866
NDR_PULL_SET_MEM_CTX(ndr, r->displayname, 0);
867
NDR_CHECK(ndr_pull_array_size(ndr, &r->displayname));
868
NDR_CHECK(ndr_pull_array_length(ndr, &r->displayname));
869
if (ndr_get_array_length(ndr, &r->displayname) > ndr_get_array_size(ndr, &r->displayname)) {
870
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));
872
NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->displayname), sizeof(uint16_t)));
873
NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->displayname, ndr_get_array_length(ndr, &r->displayname), sizeof(uint16_t), CH_UTF16));
874
NDR_PULL_SET_MEM_CTX(ndr, _mem_save_displayname_0, 0);
877
return NDR_ERR_SUCCESS;
880
_PUBLIC_ void ndr_print_QUERY_SERVICE_CONFIG(struct ndr_print *ndr, const char *name, const struct QUERY_SERVICE_CONFIG *r)
882
ndr_print_struct(ndr, name, "QUERY_SERVICE_CONFIG");
884
ndr_print_uint32(ndr, "service_type", r->service_type);
885
ndr_print_svcctl_StartType(ndr, "start_type", r->start_type);
886
ndr_print_svcctl_ErrorControl(ndr, "error_control", r->error_control);
887
ndr_print_ptr(ndr, "executablepath", r->executablepath);
889
if (r->executablepath) {
890
ndr_print_string(ndr, "executablepath", r->executablepath);
893
ndr_print_ptr(ndr, "loadordergroup", r->loadordergroup);
895
if (r->loadordergroup) {
896
ndr_print_string(ndr, "loadordergroup", r->loadordergroup);
899
ndr_print_uint32(ndr, "tag_id", r->tag_id);
900
ndr_print_ptr(ndr, "dependencies", r->dependencies);
902
if (r->dependencies) {
903
ndr_print_string(ndr, "dependencies", r->dependencies);
906
ndr_print_ptr(ndr, "startname", r->startname);
909
ndr_print_string(ndr, "startname", r->startname);
912
ndr_print_ptr(ndr, "displayname", r->displayname);
914
if (r->displayname) {
915
ndr_print_string(ndr, "displayname", r->displayname);
921
_PUBLIC_ size_t ndr_size_QUERY_SERVICE_CONFIG(const struct QUERY_SERVICE_CONFIG *r, struct smb_iconv_convenience *ic, int flags)
923
return ndr_size_struct(r, flags, (ndr_push_flags_fn_t)ndr_push_QUERY_SERVICE_CONFIG, ic);
926
static enum ndr_err_code ndr_push_svcctl_ArgumentString(struct ndr_push *ndr, int ndr_flags, const struct svcctl_ArgumentString *r)
928
if (ndr_flags & NDR_SCALARS) {
929
NDR_CHECK(ndr_push_align(ndr, 5));
930
NDR_CHECK(ndr_push_unique_ptr(ndr, r->string));
931
NDR_CHECK(ndr_push_trailer_align(ndr, 5));
933
if (ndr_flags & NDR_BUFFERS) {
935
NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->string, CH_UTF16)));
936
NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0));
937
NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->string, CH_UTF16)));
938
NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->string, ndr_charset_length(r->string, CH_UTF16), sizeof(uint16_t), CH_UTF16));
941
return NDR_ERR_SUCCESS;
944
static enum ndr_err_code ndr_pull_svcctl_ArgumentString(struct ndr_pull *ndr, int ndr_flags, struct svcctl_ArgumentString *r)
946
uint32_t _ptr_string;
947
TALLOC_CTX *_mem_save_string_0;
948
if (ndr_flags & NDR_SCALARS) {
949
NDR_CHECK(ndr_pull_align(ndr, 5));
950
NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_string));
952
NDR_PULL_ALLOC(ndr, r->string);
956
NDR_CHECK(ndr_pull_trailer_align(ndr, 5));
958
if (ndr_flags & NDR_BUFFERS) {
960
_mem_save_string_0 = NDR_PULL_GET_MEM_CTX(ndr);
961
NDR_PULL_SET_MEM_CTX(ndr, r->string, 0);
962
NDR_CHECK(ndr_pull_array_size(ndr, &r->string));
963
NDR_CHECK(ndr_pull_array_length(ndr, &r->string));
964
if (ndr_get_array_length(ndr, &r->string) > ndr_get_array_size(ndr, &r->string)) {
965
return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->string), ndr_get_array_length(ndr, &r->string));
967
NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->string), sizeof(uint16_t)));
968
NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->string, ndr_get_array_length(ndr, &r->string), sizeof(uint16_t), CH_UTF16));
969
NDR_PULL_SET_MEM_CTX(ndr, _mem_save_string_0, 0);
972
return NDR_ERR_SUCCESS;
975
_PUBLIC_ void ndr_print_svcctl_ArgumentString(struct ndr_print *ndr, const char *name, const struct svcctl_ArgumentString *r)
977
ndr_print_struct(ndr, name, "svcctl_ArgumentString");
979
ndr_print_ptr(ndr, "string", r->string);
982
ndr_print_string(ndr, "string", r->string);
988
static enum ndr_err_code ndr_push_svcctl_ConfigLevel(struct ndr_push *ndr, int ndr_flags, enum svcctl_ConfigLevel r)
990
NDR_CHECK(ndr_push_enum_uint32(ndr, NDR_SCALARS, r));
991
return NDR_ERR_SUCCESS;
994
static enum ndr_err_code ndr_pull_svcctl_ConfigLevel(struct ndr_pull *ndr, int ndr_flags, enum svcctl_ConfigLevel *r)
997
NDR_CHECK(ndr_pull_enum_uint32(ndr, NDR_SCALARS, &v));
999
return NDR_ERR_SUCCESS;
1002
_PUBLIC_ void ndr_print_svcctl_ConfigLevel(struct ndr_print *ndr, const char *name, enum svcctl_ConfigLevel r)
1004
const char *val = NULL;
1007
case SERVICE_CONFIG_DESCRIPTION: val = "SERVICE_CONFIG_DESCRIPTION"; break;
1008
case SERVICE_CONFIG_FAILURE_ACTIONS: val = "SERVICE_CONFIG_FAILURE_ACTIONS"; break;
1010
ndr_print_enum(ndr, name, "ENUM", val, r);
1013
_PUBLIC_ enum ndr_err_code ndr_push_SERVICE_DESCRIPTION(struct ndr_push *ndr, int ndr_flags, const struct SERVICE_DESCRIPTION *r)
1015
if (ndr_flags & NDR_SCALARS) {
1016
NDR_CHECK(ndr_push_align(ndr, 5));
1018
uint32_t _flags_save_string = ndr->flags;
1019
ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
1020
NDR_CHECK(ndr_push_relative_ptr1(ndr, r->description));
1021
ndr->flags = _flags_save_string;
1023
NDR_CHECK(ndr_push_trailer_align(ndr, 5));
1025
if (ndr_flags & NDR_BUFFERS) {
1027
uint32_t _flags_save_string = ndr->flags;
1028
ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
1029
if (r->description) {
1030
NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->description));
1031
NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->description));
1032
NDR_CHECK(ndr_push_relative_ptr2_end(ndr, r->description));
1034
ndr->flags = _flags_save_string;
1037
return NDR_ERR_SUCCESS;
1040
_PUBLIC_ enum ndr_err_code ndr_pull_SERVICE_DESCRIPTION(struct ndr_pull *ndr, int ndr_flags, struct SERVICE_DESCRIPTION *r)
1042
uint32_t _ptr_description;
1043
TALLOC_CTX *_mem_save_description_0;
1044
if (ndr_flags & NDR_SCALARS) {
1045
NDR_CHECK(ndr_pull_align(ndr, 5));
1047
uint32_t _flags_save_string = ndr->flags;
1048
ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
1049
NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_description));
1050
if (_ptr_description) {
1051
NDR_PULL_ALLOC(ndr, r->description);
1052
NDR_CHECK(ndr_pull_relative_ptr1(ndr, r->description, _ptr_description));
1054
r->description = NULL;
1056
ndr->flags = _flags_save_string;
1058
NDR_CHECK(ndr_pull_trailer_align(ndr, 5));
1060
if (ndr_flags & NDR_BUFFERS) {
1062
uint32_t _flags_save_string = ndr->flags;
1063
ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
1064
if (r->description) {
1065
uint32_t _relative_save_offset;
1066
_relative_save_offset = ndr->offset;
1067
NDR_CHECK(ndr_pull_relative_ptr2(ndr, r->description));
1068
_mem_save_description_0 = NDR_PULL_GET_MEM_CTX(ndr);
1069
NDR_PULL_SET_MEM_CTX(ndr, r->description, 0);
1070
NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->description));
1071
NDR_PULL_SET_MEM_CTX(ndr, _mem_save_description_0, 0);
1072
ndr->offset = _relative_save_offset;
1074
ndr->flags = _flags_save_string;
1077
return NDR_ERR_SUCCESS;
1080
_PUBLIC_ void ndr_print_SERVICE_DESCRIPTION(struct ndr_print *ndr, const char *name, const struct SERVICE_DESCRIPTION *r)
1082
ndr_print_struct(ndr, name, "SERVICE_DESCRIPTION");
1084
ndr_print_ptr(ndr, "description", r->description);
1086
if (r->description) {
1087
ndr_print_string(ndr, "description", r->description);
1093
_PUBLIC_ size_t ndr_size_SERVICE_DESCRIPTION(const struct SERVICE_DESCRIPTION *r, struct smb_iconv_convenience *ic, int flags)
1095
return ndr_size_struct(r, flags, (ndr_push_flags_fn_t)ndr_push_SERVICE_DESCRIPTION, ic);
1098
static enum ndr_err_code ndr_push_SC_ACTION_TYPE(struct ndr_push *ndr, int ndr_flags, enum SC_ACTION_TYPE r)
1100
NDR_CHECK(ndr_push_enum_uint32(ndr, NDR_SCALARS, r));
1101
return NDR_ERR_SUCCESS;
1104
static enum ndr_err_code ndr_pull_SC_ACTION_TYPE(struct ndr_pull *ndr, int ndr_flags, enum SC_ACTION_TYPE *r)
1107
NDR_CHECK(ndr_pull_enum_uint32(ndr, NDR_SCALARS, &v));
1109
return NDR_ERR_SUCCESS;
1112
_PUBLIC_ void ndr_print_SC_ACTION_TYPE(struct ndr_print *ndr, const char *name, enum SC_ACTION_TYPE r)
1114
const char *val = NULL;
1117
case SC_ACTION_NONE: val = "SC_ACTION_NONE"; break;
1118
case SC_ACTION_RESTART: val = "SC_ACTION_RESTART"; break;
1119
case SC_ACTION_REBOOT: val = "SC_ACTION_REBOOT"; break;
1120
case SC_ACTION_RUN_COMMAND: val = "SC_ACTION_RUN_COMMAND"; break;
1122
ndr_print_enum(ndr, name, "ENUM", val, r);
1125
static enum ndr_err_code ndr_push_SC_ACTION(struct ndr_push *ndr, int ndr_flags, const struct SC_ACTION *r)
1127
if (ndr_flags & NDR_SCALARS) {
1128
NDR_CHECK(ndr_push_align(ndr, 4));
1129
NDR_CHECK(ndr_push_SC_ACTION_TYPE(ndr, NDR_SCALARS, r->type));
1130
NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->delay));
1131
NDR_CHECK(ndr_push_trailer_align(ndr, 4));
1133
if (ndr_flags & NDR_BUFFERS) {
1135
return NDR_ERR_SUCCESS;
1138
static enum ndr_err_code ndr_pull_SC_ACTION(struct ndr_pull *ndr, int ndr_flags, struct SC_ACTION *r)
1140
if (ndr_flags & NDR_SCALARS) {
1141
NDR_CHECK(ndr_pull_align(ndr, 4));
1142
NDR_CHECK(ndr_pull_SC_ACTION_TYPE(ndr, NDR_SCALARS, &r->type));
1143
NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->delay));
1144
NDR_CHECK(ndr_pull_trailer_align(ndr, 4));
1146
if (ndr_flags & NDR_BUFFERS) {
1148
return NDR_ERR_SUCCESS;
1151
_PUBLIC_ void ndr_print_SC_ACTION(struct ndr_print *ndr, const char *name, const struct SC_ACTION *r)
1153
ndr_print_struct(ndr, name, "SC_ACTION");
1155
ndr_print_SC_ACTION_TYPE(ndr, "type", r->type);
1156
ndr_print_uint32(ndr, "delay", r->delay);
1160
_PUBLIC_ enum ndr_err_code ndr_push_SERVICE_FAILURE_ACTIONS(struct ndr_push *ndr, int ndr_flags, const struct SERVICE_FAILURE_ACTIONS *r)
1162
uint32_t cntr_actions_1;
1163
if (ndr_flags & NDR_SCALARS) {
1164
NDR_CHECK(ndr_push_align(ndr, 5));
1165
NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->reset_period));
1167
uint32_t _flags_save_string = ndr->flags;
1168
ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
1169
NDR_CHECK(ndr_push_relative_ptr1(ndr, r->rebootmsg));
1170
ndr->flags = _flags_save_string;
1173
uint32_t _flags_save_string = ndr->flags;
1174
ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
1175
NDR_CHECK(ndr_push_relative_ptr1(ndr, r->command));
1176
ndr->flags = _flags_save_string;
1178
NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->num_actions));
1179
NDR_CHECK(ndr_push_relative_ptr1(ndr, r->actions));
1180
NDR_CHECK(ndr_push_trailer_align(ndr, 5));
1182
if (ndr_flags & NDR_BUFFERS) {
1184
uint32_t _flags_save_string = ndr->flags;
1185
ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
1187
NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->rebootmsg));
1188
NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->rebootmsg));
1189
NDR_CHECK(ndr_push_relative_ptr2_end(ndr, r->rebootmsg));
1191
ndr->flags = _flags_save_string;
1194
uint32_t _flags_save_string = ndr->flags;
1195
ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
1197
NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->command));
1198
NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->command));
1199
NDR_CHECK(ndr_push_relative_ptr2_end(ndr, r->command));
1201
ndr->flags = _flags_save_string;
1204
NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->actions));
1205
NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, r->num_actions));
1206
for (cntr_actions_1 = 0; cntr_actions_1 < r->num_actions; cntr_actions_1++) {
1207
NDR_CHECK(ndr_push_SC_ACTION(ndr, NDR_SCALARS, &r->actions[cntr_actions_1]));
1209
NDR_CHECK(ndr_push_relative_ptr2_end(ndr, r->actions));
1212
return NDR_ERR_SUCCESS;
1215
_PUBLIC_ enum ndr_err_code ndr_pull_SERVICE_FAILURE_ACTIONS(struct ndr_pull *ndr, int ndr_flags, struct SERVICE_FAILURE_ACTIONS *r)
1217
uint32_t _ptr_rebootmsg;
1218
TALLOC_CTX *_mem_save_rebootmsg_0;
1219
uint32_t _ptr_command;
1220
TALLOC_CTX *_mem_save_command_0;
1221
uint32_t _ptr_actions;
1222
uint32_t cntr_actions_1;
1223
TALLOC_CTX *_mem_save_actions_0;
1224
TALLOC_CTX *_mem_save_actions_1;
1225
if (ndr_flags & NDR_SCALARS) {
1226
NDR_CHECK(ndr_pull_align(ndr, 5));
1227
NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->reset_period));
1229
uint32_t _flags_save_string = ndr->flags;
1230
ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
1231
NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_rebootmsg));
1232
if (_ptr_rebootmsg) {
1233
NDR_PULL_ALLOC(ndr, r->rebootmsg);
1234
NDR_CHECK(ndr_pull_relative_ptr1(ndr, r->rebootmsg, _ptr_rebootmsg));
1236
r->rebootmsg = NULL;
1238
ndr->flags = _flags_save_string;
1241
uint32_t _flags_save_string = ndr->flags;
1242
ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
1243
NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_command));
1245
NDR_PULL_ALLOC(ndr, r->command);
1246
NDR_CHECK(ndr_pull_relative_ptr1(ndr, r->command, _ptr_command));
1250
ndr->flags = _flags_save_string;
1252
NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->num_actions));
1253
if (r->num_actions > 1024) {
1254
return ndr_pull_error(ndr, NDR_ERR_RANGE, "value out of range");
1256
NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_actions));
1258
NDR_PULL_ALLOC(ndr, r->actions);
1259
NDR_CHECK(ndr_pull_relative_ptr1(ndr, r->actions, _ptr_actions));
1263
NDR_CHECK(ndr_pull_trailer_align(ndr, 5));
1265
if (ndr_flags & NDR_BUFFERS) {
1267
uint32_t _flags_save_string = ndr->flags;
1268
ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
1270
uint32_t _relative_save_offset;
1271
_relative_save_offset = ndr->offset;
1272
NDR_CHECK(ndr_pull_relative_ptr2(ndr, r->rebootmsg));
1273
_mem_save_rebootmsg_0 = NDR_PULL_GET_MEM_CTX(ndr);
1274
NDR_PULL_SET_MEM_CTX(ndr, r->rebootmsg, 0);
1275
NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->rebootmsg));
1276
NDR_PULL_SET_MEM_CTX(ndr, _mem_save_rebootmsg_0, 0);
1277
ndr->offset = _relative_save_offset;
1279
ndr->flags = _flags_save_string;
1282
uint32_t _flags_save_string = ndr->flags;
1283
ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
1285
uint32_t _relative_save_offset;
1286
_relative_save_offset = ndr->offset;
1287
NDR_CHECK(ndr_pull_relative_ptr2(ndr, r->command));
1288
_mem_save_command_0 = NDR_PULL_GET_MEM_CTX(ndr);
1289
NDR_PULL_SET_MEM_CTX(ndr, r->command, 0);
1290
NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->command));
1291
NDR_PULL_SET_MEM_CTX(ndr, _mem_save_command_0, 0);
1292
ndr->offset = _relative_save_offset;
1294
ndr->flags = _flags_save_string;
1297
uint32_t _relative_save_offset;
1298
_relative_save_offset = ndr->offset;
1299
NDR_CHECK(ndr_pull_relative_ptr2(ndr, r->actions));
1300
_mem_save_actions_0 = NDR_PULL_GET_MEM_CTX(ndr);
1301
NDR_PULL_SET_MEM_CTX(ndr, r->actions, 0);
1302
NDR_CHECK(ndr_pull_array_size(ndr, &r->actions));
1303
NDR_PULL_ALLOC_N(ndr, r->actions, ndr_get_array_size(ndr, &r->actions));
1304
_mem_save_actions_1 = NDR_PULL_GET_MEM_CTX(ndr);
1305
NDR_PULL_SET_MEM_CTX(ndr, r->actions, 0);
1306
for (cntr_actions_1 = 0; cntr_actions_1 < r->num_actions; cntr_actions_1++) {
1307
NDR_CHECK(ndr_pull_SC_ACTION(ndr, NDR_SCALARS, &r->actions[cntr_actions_1]));
1309
NDR_PULL_SET_MEM_CTX(ndr, _mem_save_actions_1, 0);
1310
NDR_PULL_SET_MEM_CTX(ndr, _mem_save_actions_0, 0);
1311
ndr->offset = _relative_save_offset;
1314
NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->actions, r->num_actions));
1317
return NDR_ERR_SUCCESS;
1320
_PUBLIC_ void ndr_print_SERVICE_FAILURE_ACTIONS(struct ndr_print *ndr, const char *name, const struct SERVICE_FAILURE_ACTIONS *r)
1322
uint32_t cntr_actions_1;
1323
ndr_print_struct(ndr, name, "SERVICE_FAILURE_ACTIONS");
1325
ndr_print_uint32(ndr, "reset_period", r->reset_period);
1326
ndr_print_ptr(ndr, "rebootmsg", r->rebootmsg);
1329
ndr_print_string(ndr, "rebootmsg", r->rebootmsg);
1332
ndr_print_ptr(ndr, "command", r->command);
1335
ndr_print_string(ndr, "command", r->command);
1338
ndr_print_uint32(ndr, "num_actions", r->num_actions);
1339
ndr_print_ptr(ndr, "actions", r->actions);
1342
ndr->print(ndr, "%s: ARRAY(%d)", "actions", (int)r->num_actions);
1344
for (cntr_actions_1=0;cntr_actions_1<r->num_actions;cntr_actions_1++) {
1346
if (asprintf(&idx_1, "[%d]", cntr_actions_1) != -1) {
1347
ndr_print_SC_ACTION(ndr, "actions", &r->actions[cntr_actions_1]);
1357
_PUBLIC_ size_t ndr_size_SERVICE_FAILURE_ACTIONS(const struct SERVICE_FAILURE_ACTIONS *r, struct smb_iconv_convenience *ic, int flags)
1359
return ndr_size_struct(r, flags, (ndr_push_flags_fn_t)ndr_push_SERVICE_FAILURE_ACTIONS, ic);
1362
static enum ndr_err_code ndr_push_svcctl_StatusLevel(struct ndr_push *ndr, int ndr_flags, enum svcctl_StatusLevel r)
1364
NDR_CHECK(ndr_push_enum_uint32(ndr, NDR_SCALARS, r));
1365
return NDR_ERR_SUCCESS;
1368
static enum ndr_err_code ndr_pull_svcctl_StatusLevel(struct ndr_pull *ndr, int ndr_flags, enum svcctl_StatusLevel *r)
1371
NDR_CHECK(ndr_pull_enum_uint32(ndr, NDR_SCALARS, &v));
1373
return NDR_ERR_SUCCESS;
1376
_PUBLIC_ void ndr_print_svcctl_StatusLevel(struct ndr_print *ndr, const char *name, enum svcctl_StatusLevel r)
1378
const char *val = NULL;
1381
case SVC_STATUS_PROCESS_INFO: val = "SVC_STATUS_PROCESS_INFO"; break;
1383
ndr_print_enum(ndr, name, "ENUM", val, r);
1386
static enum ndr_err_code ndr_push_svcctl_CloseServiceHandle(struct ndr_push *ndr, int flags, const struct svcctl_CloseServiceHandle *r)
1388
if (flags & NDR_IN) {
1389
if (r->in.handle == NULL) {
1390
return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
1392
NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
1394
if (flags & NDR_OUT) {
1395
if (r->out.handle == NULL) {
1396
return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
1398
NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->out.handle));
1399
NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
1401
return NDR_ERR_SUCCESS;
1404
static enum ndr_err_code ndr_pull_svcctl_CloseServiceHandle(struct ndr_pull *ndr, int flags, struct svcctl_CloseServiceHandle *r)
1406
TALLOC_CTX *_mem_save_handle_0;
1407
if (flags & NDR_IN) {
1408
ZERO_STRUCT(r->out);
1410
if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
1411
NDR_PULL_ALLOC(ndr, r->in.handle);
1413
_mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
1414
NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
1415
NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
1416
NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
1417
NDR_PULL_ALLOC(ndr, r->out.handle);
1418
*r->out.handle = *r->in.handle;
1420
if (flags & NDR_OUT) {
1421
if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
1422
NDR_PULL_ALLOC(ndr, r->out.handle);
1424
_mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
1425
NDR_PULL_SET_MEM_CTX(ndr, r->out.handle, LIBNDR_FLAG_REF_ALLOC);
1426
NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->out.handle));
1427
NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
1428
NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
1430
return NDR_ERR_SUCCESS;
1433
_PUBLIC_ void ndr_print_svcctl_CloseServiceHandle(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_CloseServiceHandle *r)
1435
ndr_print_struct(ndr, name, "svcctl_CloseServiceHandle");
1437
if (flags & NDR_SET_VALUES) {
1438
ndr->flags |= LIBNDR_PRINT_SET_VALUES;
1440
if (flags & NDR_IN) {
1441
ndr_print_struct(ndr, "in", "svcctl_CloseServiceHandle");
1443
ndr_print_ptr(ndr, "handle", r->in.handle);
1445
ndr_print_policy_handle(ndr, "handle", r->in.handle);
1449
if (flags & NDR_OUT) {
1450
ndr_print_struct(ndr, "out", "svcctl_CloseServiceHandle");
1452
ndr_print_ptr(ndr, "handle", r->out.handle);
1454
ndr_print_policy_handle(ndr, "handle", r->out.handle);
1456
ndr_print_WERROR(ndr, "result", r->out.result);
1462
static enum ndr_err_code ndr_push_svcctl_ControlService(struct ndr_push *ndr, int flags, const struct svcctl_ControlService *r)
1464
if (flags & NDR_IN) {
1465
if (r->in.handle == NULL) {
1466
return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
1468
NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
1469
NDR_CHECK(ndr_push_SERVICE_CONTROL(ndr, NDR_SCALARS, r->in.control));
1471
if (flags & NDR_OUT) {
1472
if (r->out.service_status == NULL) {
1473
return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
1475
NDR_CHECK(ndr_push_SERVICE_STATUS(ndr, NDR_SCALARS, r->out.service_status));
1476
NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
1478
return NDR_ERR_SUCCESS;
1481
static enum ndr_err_code ndr_pull_svcctl_ControlService(struct ndr_pull *ndr, int flags, struct svcctl_ControlService *r)
1483
TALLOC_CTX *_mem_save_handle_0;
1484
TALLOC_CTX *_mem_save_service_status_0;
1485
if (flags & NDR_IN) {
1486
ZERO_STRUCT(r->out);
1488
if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
1489
NDR_PULL_ALLOC(ndr, r->in.handle);
1491
_mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
1492
NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
1493
NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
1494
NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
1495
NDR_CHECK(ndr_pull_SERVICE_CONTROL(ndr, NDR_SCALARS, &r->in.control));
1496
NDR_PULL_ALLOC(ndr, r->out.service_status);
1497
ZERO_STRUCTP(r->out.service_status);
1499
if (flags & NDR_OUT) {
1500
if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
1501
NDR_PULL_ALLOC(ndr, r->out.service_status);
1503
_mem_save_service_status_0 = NDR_PULL_GET_MEM_CTX(ndr);
1504
NDR_PULL_SET_MEM_CTX(ndr, r->out.service_status, LIBNDR_FLAG_REF_ALLOC);
1505
NDR_CHECK(ndr_pull_SERVICE_STATUS(ndr, NDR_SCALARS, r->out.service_status));
1506
NDR_PULL_SET_MEM_CTX(ndr, _mem_save_service_status_0, LIBNDR_FLAG_REF_ALLOC);
1507
NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
1509
return NDR_ERR_SUCCESS;
1512
_PUBLIC_ void ndr_print_svcctl_ControlService(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_ControlService *r)
1514
ndr_print_struct(ndr, name, "svcctl_ControlService");
1516
if (flags & NDR_SET_VALUES) {
1517
ndr->flags |= LIBNDR_PRINT_SET_VALUES;
1519
if (flags & NDR_IN) {
1520
ndr_print_struct(ndr, "in", "svcctl_ControlService");
1522
ndr_print_ptr(ndr, "handle", r->in.handle);
1524
ndr_print_policy_handle(ndr, "handle", r->in.handle);
1526
ndr_print_SERVICE_CONTROL(ndr, "control", r->in.control);
1529
if (flags & NDR_OUT) {
1530
ndr_print_struct(ndr, "out", "svcctl_ControlService");
1532
ndr_print_ptr(ndr, "service_status", r->out.service_status);
1534
ndr_print_SERVICE_STATUS(ndr, "service_status", r->out.service_status);
1536
ndr_print_WERROR(ndr, "result", r->out.result);
1542
static enum ndr_err_code ndr_push_svcctl_DeleteService(struct ndr_push *ndr, int flags, const struct svcctl_DeleteService *r)
1544
if (flags & NDR_IN) {
1545
if (r->in.handle == NULL) {
1546
return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
1548
NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
1550
if (flags & NDR_OUT) {
1551
NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
1553
return NDR_ERR_SUCCESS;
1556
static enum ndr_err_code ndr_pull_svcctl_DeleteService(struct ndr_pull *ndr, int flags, struct svcctl_DeleteService *r)
1558
TALLOC_CTX *_mem_save_handle_0;
1559
if (flags & NDR_IN) {
1560
if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
1561
NDR_PULL_ALLOC(ndr, r->in.handle);
1563
_mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
1564
NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
1565
NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
1566
NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
1568
if (flags & NDR_OUT) {
1569
NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
1571
return NDR_ERR_SUCCESS;
1574
_PUBLIC_ void ndr_print_svcctl_DeleteService(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_DeleteService *r)
1576
ndr_print_struct(ndr, name, "svcctl_DeleteService");
1578
if (flags & NDR_SET_VALUES) {
1579
ndr->flags |= LIBNDR_PRINT_SET_VALUES;
1581
if (flags & NDR_IN) {
1582
ndr_print_struct(ndr, "in", "svcctl_DeleteService");
1584
ndr_print_ptr(ndr, "handle", r->in.handle);
1586
ndr_print_policy_handle(ndr, "handle", r->in.handle);
1590
if (flags & NDR_OUT) {
1591
ndr_print_struct(ndr, "out", "svcctl_DeleteService");
1593
ndr_print_WERROR(ndr, "result", r->out.result);
1599
static enum ndr_err_code ndr_push_svcctl_LockServiceDatabase(struct ndr_push *ndr, int flags, const struct svcctl_LockServiceDatabase *r)
1601
if (flags & NDR_IN) {
1602
if (r->in.handle == NULL) {
1603
return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
1605
NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
1607
if (flags & NDR_OUT) {
1608
if (r->out.lock == NULL) {
1609
return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
1611
NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->out.lock));
1612
NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
1614
return NDR_ERR_SUCCESS;
1617
static enum ndr_err_code ndr_pull_svcctl_LockServiceDatabase(struct ndr_pull *ndr, int flags, struct svcctl_LockServiceDatabase *r)
1619
TALLOC_CTX *_mem_save_handle_0;
1620
TALLOC_CTX *_mem_save_lock_0;
1621
if (flags & NDR_IN) {
1622
ZERO_STRUCT(r->out);
1624
if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
1625
NDR_PULL_ALLOC(ndr, r->in.handle);
1627
_mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
1628
NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
1629
NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
1630
NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
1631
NDR_PULL_ALLOC(ndr, r->out.lock);
1632
ZERO_STRUCTP(r->out.lock);
1634
if (flags & NDR_OUT) {
1635
if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
1636
NDR_PULL_ALLOC(ndr, r->out.lock);
1638
_mem_save_lock_0 = NDR_PULL_GET_MEM_CTX(ndr);
1639
NDR_PULL_SET_MEM_CTX(ndr, r->out.lock, LIBNDR_FLAG_REF_ALLOC);
1640
NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->out.lock));
1641
NDR_PULL_SET_MEM_CTX(ndr, _mem_save_lock_0, LIBNDR_FLAG_REF_ALLOC);
1642
NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
1644
return NDR_ERR_SUCCESS;
1647
_PUBLIC_ void ndr_print_svcctl_LockServiceDatabase(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_LockServiceDatabase *r)
1649
ndr_print_struct(ndr, name, "svcctl_LockServiceDatabase");
1651
if (flags & NDR_SET_VALUES) {
1652
ndr->flags |= LIBNDR_PRINT_SET_VALUES;
1654
if (flags & NDR_IN) {
1655
ndr_print_struct(ndr, "in", "svcctl_LockServiceDatabase");
1657
ndr_print_ptr(ndr, "handle", r->in.handle);
1659
ndr_print_policy_handle(ndr, "handle", r->in.handle);
1663
if (flags & NDR_OUT) {
1664
ndr_print_struct(ndr, "out", "svcctl_LockServiceDatabase");
1666
ndr_print_ptr(ndr, "lock", r->out.lock);
1668
ndr_print_policy_handle(ndr, "lock", r->out.lock);
1670
ndr_print_WERROR(ndr, "result", r->out.result);
1676
static enum ndr_err_code ndr_push_svcctl_QueryServiceObjectSecurity(struct ndr_push *ndr, int flags, const struct svcctl_QueryServiceObjectSecurity *r)
1678
if (flags & NDR_IN) {
1679
if (r->in.handle == NULL) {
1680
return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
1682
NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
1683
NDR_CHECK(ndr_push_security_secinfo(ndr, NDR_SCALARS, r->in.security_flags));
1684
NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.offered));
1686
if (flags & NDR_OUT) {
1687
if (r->out.buffer == NULL) {
1688
return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
1690
NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, r->in.offered));
1691
NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->out.buffer, r->in.offered));
1692
if (r->out.needed == NULL) {
1693
return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
1695
NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.needed));
1696
NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
1698
return NDR_ERR_SUCCESS;
1701
static enum ndr_err_code ndr_pull_svcctl_QueryServiceObjectSecurity(struct ndr_pull *ndr, int flags, struct svcctl_QueryServiceObjectSecurity *r)
1703
TALLOC_CTX *_mem_save_handle_0;
1704
TALLOC_CTX *_mem_save_needed_0;
1705
if (flags & NDR_IN) {
1706
ZERO_STRUCT(r->out);
1708
if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
1709
NDR_PULL_ALLOC(ndr, r->in.handle);
1711
_mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
1712
NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
1713
NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
1714
NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
1715
NDR_CHECK(ndr_pull_security_secinfo(ndr, NDR_SCALARS, &r->in.security_flags));
1716
NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.offered));
1717
if (r->in.offered > 0x40000) {
1718
return ndr_pull_error(ndr, NDR_ERR_RANGE, "value out of range");
1720
NDR_PULL_ALLOC_N(ndr, r->out.buffer, r->in.offered);
1721
memset(r->out.buffer, 0, (r->in.offered) * sizeof(*r->out.buffer));
1722
NDR_PULL_ALLOC(ndr, r->out.needed);
1723
ZERO_STRUCTP(r->out.needed);
1725
if (flags & NDR_OUT) {
1726
NDR_CHECK(ndr_pull_array_size(ndr, &r->out.buffer));
1727
if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
1728
NDR_PULL_ALLOC_N(ndr, r->out.buffer, ndr_get_array_size(ndr, &r->out.buffer));
1730
NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->out.buffer, ndr_get_array_size(ndr, &r->out.buffer)));
1731
if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
1732
NDR_PULL_ALLOC(ndr, r->out.needed);
1734
_mem_save_needed_0 = NDR_PULL_GET_MEM_CTX(ndr);
1735
NDR_PULL_SET_MEM_CTX(ndr, r->out.needed, LIBNDR_FLAG_REF_ALLOC);
1736
NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.needed));
1737
if (*r->out.needed > 0x40000) {
1738
return ndr_pull_error(ndr, NDR_ERR_RANGE, "value out of range");
1740
NDR_PULL_SET_MEM_CTX(ndr, _mem_save_needed_0, LIBNDR_FLAG_REF_ALLOC);
1741
NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
1742
if (r->out.buffer) {
1743
NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->out.buffer, r->in.offered));
1746
return NDR_ERR_SUCCESS;
1749
_PUBLIC_ void ndr_print_svcctl_QueryServiceObjectSecurity(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_QueryServiceObjectSecurity *r)
1751
ndr_print_struct(ndr, name, "svcctl_QueryServiceObjectSecurity");
1753
if (flags & NDR_SET_VALUES) {
1754
ndr->flags |= LIBNDR_PRINT_SET_VALUES;
1756
if (flags & NDR_IN) {
1757
ndr_print_struct(ndr, "in", "svcctl_QueryServiceObjectSecurity");
1759
ndr_print_ptr(ndr, "handle", r->in.handle);
1761
ndr_print_policy_handle(ndr, "handle", r->in.handle);
1763
ndr_print_security_secinfo(ndr, "security_flags", r->in.security_flags);
1764
ndr_print_uint32(ndr, "offered", r->in.offered);
1767
if (flags & NDR_OUT) {
1768
ndr_print_struct(ndr, "out", "svcctl_QueryServiceObjectSecurity");
1770
ndr_print_ptr(ndr, "buffer", r->out.buffer);
1772
ndr_print_array_uint8(ndr, "buffer", r->out.buffer, r->in.offered);
1774
ndr_print_ptr(ndr, "needed", r->out.needed);
1776
ndr_print_uint32(ndr, "needed", *r->out.needed);
1778
ndr_print_WERROR(ndr, "result", r->out.result);
1784
static enum ndr_err_code ndr_push_svcctl_SetServiceObjectSecurity(struct ndr_push *ndr, int flags, const struct svcctl_SetServiceObjectSecurity *r)
1786
if (flags & NDR_IN) {
1787
if (r->in.handle == NULL) {
1788
return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
1790
NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
1791
NDR_CHECK(ndr_push_security_secinfo(ndr, NDR_SCALARS, r->in.security_flags));
1792
if (r->in.buffer == NULL) {
1793
return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
1795
NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, r->in.offered));
1796
NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->in.buffer, r->in.offered));
1797
NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.offered));
1799
if (flags & NDR_OUT) {
1800
NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
1802
return NDR_ERR_SUCCESS;
1805
static enum ndr_err_code ndr_pull_svcctl_SetServiceObjectSecurity(struct ndr_pull *ndr, int flags, struct svcctl_SetServiceObjectSecurity *r)
1807
TALLOC_CTX *_mem_save_handle_0;
1808
if (flags & NDR_IN) {
1809
if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
1810
NDR_PULL_ALLOC(ndr, r->in.handle);
1812
_mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
1813
NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
1814
NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
1815
NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
1816
NDR_CHECK(ndr_pull_security_secinfo(ndr, NDR_SCALARS, &r->in.security_flags));
1817
NDR_CHECK(ndr_pull_array_size(ndr, &r->in.buffer));
1818
if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
1819
NDR_PULL_ALLOC_N(ndr, r->in.buffer, ndr_get_array_size(ndr, &r->in.buffer));
1821
NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->in.buffer, ndr_get_array_size(ndr, &r->in.buffer)));
1822
NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.offered));
1824
NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->in.buffer, r->in.offered));
1827
if (flags & NDR_OUT) {
1828
NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
1830
return NDR_ERR_SUCCESS;
1833
_PUBLIC_ void ndr_print_svcctl_SetServiceObjectSecurity(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_SetServiceObjectSecurity *r)
1835
ndr_print_struct(ndr, name, "svcctl_SetServiceObjectSecurity");
1837
if (flags & NDR_SET_VALUES) {
1838
ndr->flags |= LIBNDR_PRINT_SET_VALUES;
1840
if (flags & NDR_IN) {
1841
ndr_print_struct(ndr, "in", "svcctl_SetServiceObjectSecurity");
1843
ndr_print_ptr(ndr, "handle", r->in.handle);
1845
ndr_print_policy_handle(ndr, "handle", r->in.handle);
1847
ndr_print_security_secinfo(ndr, "security_flags", r->in.security_flags);
1848
ndr_print_ptr(ndr, "buffer", r->in.buffer);
1850
ndr_print_array_uint8(ndr, "buffer", r->in.buffer, r->in.offered);
1852
ndr_print_uint32(ndr, "offered", r->in.offered);
1855
if (flags & NDR_OUT) {
1856
ndr_print_struct(ndr, "out", "svcctl_SetServiceObjectSecurity");
1858
ndr_print_WERROR(ndr, "result", r->out.result);
1864
static enum ndr_err_code ndr_push_svcctl_QueryServiceStatus(struct ndr_push *ndr, int flags, const struct svcctl_QueryServiceStatus *r)
1866
if (flags & NDR_IN) {
1867
if (r->in.handle == NULL) {
1868
return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
1870
NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
1872
if (flags & NDR_OUT) {
1873
if (r->out.service_status == NULL) {
1874
return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
1876
NDR_CHECK(ndr_push_SERVICE_STATUS(ndr, NDR_SCALARS, r->out.service_status));
1877
NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
1879
return NDR_ERR_SUCCESS;
1882
static enum ndr_err_code ndr_pull_svcctl_QueryServiceStatus(struct ndr_pull *ndr, int flags, struct svcctl_QueryServiceStatus *r)
1884
TALLOC_CTX *_mem_save_handle_0;
1885
TALLOC_CTX *_mem_save_service_status_0;
1886
if (flags & NDR_IN) {
1887
ZERO_STRUCT(r->out);
1889
if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
1890
NDR_PULL_ALLOC(ndr, r->in.handle);
1892
_mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
1893
NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
1894
NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
1895
NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
1896
NDR_PULL_ALLOC(ndr, r->out.service_status);
1897
ZERO_STRUCTP(r->out.service_status);
1899
if (flags & NDR_OUT) {
1900
if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
1901
NDR_PULL_ALLOC(ndr, r->out.service_status);
1903
_mem_save_service_status_0 = NDR_PULL_GET_MEM_CTX(ndr);
1904
NDR_PULL_SET_MEM_CTX(ndr, r->out.service_status, LIBNDR_FLAG_REF_ALLOC);
1905
NDR_CHECK(ndr_pull_SERVICE_STATUS(ndr, NDR_SCALARS, r->out.service_status));
1906
NDR_PULL_SET_MEM_CTX(ndr, _mem_save_service_status_0, LIBNDR_FLAG_REF_ALLOC);
1907
NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
1909
return NDR_ERR_SUCCESS;
1912
_PUBLIC_ void ndr_print_svcctl_QueryServiceStatus(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_QueryServiceStatus *r)
1914
ndr_print_struct(ndr, name, "svcctl_QueryServiceStatus");
1916
if (flags & NDR_SET_VALUES) {
1917
ndr->flags |= LIBNDR_PRINT_SET_VALUES;
1919
if (flags & NDR_IN) {
1920
ndr_print_struct(ndr, "in", "svcctl_QueryServiceStatus");
1922
ndr_print_ptr(ndr, "handle", r->in.handle);
1924
ndr_print_policy_handle(ndr, "handle", r->in.handle);
1928
if (flags & NDR_OUT) {
1929
ndr_print_struct(ndr, "out", "svcctl_QueryServiceStatus");
1931
ndr_print_ptr(ndr, "service_status", r->out.service_status);
1933
ndr_print_SERVICE_STATUS(ndr, "service_status", r->out.service_status);
1935
ndr_print_WERROR(ndr, "result", r->out.result);
1941
static enum ndr_err_code ndr_push_svcctl_SetServiceStatus(struct ndr_push *ndr, int flags, const struct svcctl_SetServiceStatus *r)
1943
if (flags & NDR_IN) {
1945
if (flags & NDR_OUT) {
1946
NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
1948
return NDR_ERR_SUCCESS;
1951
static enum ndr_err_code ndr_pull_svcctl_SetServiceStatus(struct ndr_pull *ndr, int flags, struct svcctl_SetServiceStatus *r)
1953
if (flags & NDR_IN) {
1955
if (flags & NDR_OUT) {
1956
NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
1958
return NDR_ERR_SUCCESS;
1961
_PUBLIC_ void ndr_print_svcctl_SetServiceStatus(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_SetServiceStatus *r)
1963
ndr_print_struct(ndr, name, "svcctl_SetServiceStatus");
1965
if (flags & NDR_SET_VALUES) {
1966
ndr->flags |= LIBNDR_PRINT_SET_VALUES;
1968
if (flags & NDR_IN) {
1969
ndr_print_struct(ndr, "in", "svcctl_SetServiceStatus");
1973
if (flags & NDR_OUT) {
1974
ndr_print_struct(ndr, "out", "svcctl_SetServiceStatus");
1976
ndr_print_WERROR(ndr, "result", r->out.result);
1982
static enum ndr_err_code ndr_push_svcctl_UnlockServiceDatabase(struct ndr_push *ndr, int flags, const struct svcctl_UnlockServiceDatabase *r)
1984
if (flags & NDR_IN) {
1985
if (r->in.lock == NULL) {
1986
return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
1988
NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.lock));
1990
if (flags & NDR_OUT) {
1991
if (r->out.lock == NULL) {
1992
return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
1994
NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->out.lock));
1995
NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
1997
return NDR_ERR_SUCCESS;
2000
static enum ndr_err_code ndr_pull_svcctl_UnlockServiceDatabase(struct ndr_pull *ndr, int flags, struct svcctl_UnlockServiceDatabase *r)
2002
TALLOC_CTX *_mem_save_lock_0;
2003
if (flags & NDR_IN) {
2004
ZERO_STRUCT(r->out);
2006
if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
2007
NDR_PULL_ALLOC(ndr, r->in.lock);
2009
_mem_save_lock_0 = NDR_PULL_GET_MEM_CTX(ndr);
2010
NDR_PULL_SET_MEM_CTX(ndr, r->in.lock, LIBNDR_FLAG_REF_ALLOC);
2011
NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.lock));
2012
NDR_PULL_SET_MEM_CTX(ndr, _mem_save_lock_0, LIBNDR_FLAG_REF_ALLOC);
2013
NDR_PULL_ALLOC(ndr, r->out.lock);
2014
*r->out.lock = *r->in.lock;
2016
if (flags & NDR_OUT) {
2017
if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
2018
NDR_PULL_ALLOC(ndr, r->out.lock);
2020
_mem_save_lock_0 = NDR_PULL_GET_MEM_CTX(ndr);
2021
NDR_PULL_SET_MEM_CTX(ndr, r->out.lock, LIBNDR_FLAG_REF_ALLOC);
2022
NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->out.lock));
2023
NDR_PULL_SET_MEM_CTX(ndr, _mem_save_lock_0, LIBNDR_FLAG_REF_ALLOC);
2024
NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
2026
return NDR_ERR_SUCCESS;
2029
_PUBLIC_ void ndr_print_svcctl_UnlockServiceDatabase(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_UnlockServiceDatabase *r)
2031
ndr_print_struct(ndr, name, "svcctl_UnlockServiceDatabase");
2033
if (flags & NDR_SET_VALUES) {
2034
ndr->flags |= LIBNDR_PRINT_SET_VALUES;
2036
if (flags & NDR_IN) {
2037
ndr_print_struct(ndr, "in", "svcctl_UnlockServiceDatabase");
2039
ndr_print_ptr(ndr, "lock", r->in.lock);
2041
ndr_print_policy_handle(ndr, "lock", r->in.lock);
2045
if (flags & NDR_OUT) {
2046
ndr_print_struct(ndr, "out", "svcctl_UnlockServiceDatabase");
2048
ndr_print_ptr(ndr, "lock", r->out.lock);
2050
ndr_print_policy_handle(ndr, "lock", r->out.lock);
2052
ndr_print_WERROR(ndr, "result", r->out.result);
2058
static enum ndr_err_code ndr_push_svcctl_NotifyBootConfigStatus(struct ndr_push *ndr, int flags, const struct svcctl_NotifyBootConfigStatus *r)
2060
if (flags & NDR_IN) {
2062
if (flags & NDR_OUT) {
2063
NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
2065
return NDR_ERR_SUCCESS;
2068
static enum ndr_err_code ndr_pull_svcctl_NotifyBootConfigStatus(struct ndr_pull *ndr, int flags, struct svcctl_NotifyBootConfigStatus *r)
2070
if (flags & NDR_IN) {
2072
if (flags & NDR_OUT) {
2073
NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
2075
return NDR_ERR_SUCCESS;
2078
_PUBLIC_ void ndr_print_svcctl_NotifyBootConfigStatus(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_NotifyBootConfigStatus *r)
2080
ndr_print_struct(ndr, name, "svcctl_NotifyBootConfigStatus");
2082
if (flags & NDR_SET_VALUES) {
2083
ndr->flags |= LIBNDR_PRINT_SET_VALUES;
2085
if (flags & NDR_IN) {
2086
ndr_print_struct(ndr, "in", "svcctl_NotifyBootConfigStatus");
2090
if (flags & NDR_OUT) {
2091
ndr_print_struct(ndr, "out", "svcctl_NotifyBootConfigStatus");
2093
ndr_print_WERROR(ndr, "result", r->out.result);
2099
static enum ndr_err_code ndr_push_svcctl_SCSetServiceBitsW(struct ndr_push *ndr, int flags, const struct svcctl_SCSetServiceBitsW *r)
2101
if (flags & NDR_IN) {
2102
if (r->in.handle == NULL) {
2103
return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
2105
NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
2106
NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.bits));
2107
NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.bitson));
2108
NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.immediate));
2110
if (flags & NDR_OUT) {
2111
NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
2113
return NDR_ERR_SUCCESS;
2116
static enum ndr_err_code ndr_pull_svcctl_SCSetServiceBitsW(struct ndr_pull *ndr, int flags, struct svcctl_SCSetServiceBitsW *r)
2118
TALLOC_CTX *_mem_save_handle_0;
2119
if (flags & NDR_IN) {
2120
if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
2121
NDR_PULL_ALLOC(ndr, r->in.handle);
2123
_mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
2124
NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
2125
NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
2126
NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
2127
NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.bits));
2128
NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.bitson));
2129
NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.immediate));
2131
if (flags & NDR_OUT) {
2132
NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
2134
return NDR_ERR_SUCCESS;
2137
_PUBLIC_ void ndr_print_svcctl_SCSetServiceBitsW(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_SCSetServiceBitsW *r)
2139
ndr_print_struct(ndr, name, "svcctl_SCSetServiceBitsW");
2141
if (flags & NDR_SET_VALUES) {
2142
ndr->flags |= LIBNDR_PRINT_SET_VALUES;
2144
if (flags & NDR_IN) {
2145
ndr_print_struct(ndr, "in", "svcctl_SCSetServiceBitsW");
2147
ndr_print_ptr(ndr, "handle", r->in.handle);
2149
ndr_print_policy_handle(ndr, "handle", r->in.handle);
2151
ndr_print_uint32(ndr, "bits", r->in.bits);
2152
ndr_print_uint32(ndr, "bitson", r->in.bitson);
2153
ndr_print_uint32(ndr, "immediate", r->in.immediate);
2156
if (flags & NDR_OUT) {
2157
ndr_print_struct(ndr, "out", "svcctl_SCSetServiceBitsW");
2159
ndr_print_WERROR(ndr, "result", r->out.result);
2165
static enum ndr_err_code ndr_push_svcctl_ChangeServiceConfigW(struct ndr_push *ndr, int flags, const struct svcctl_ChangeServiceConfigW *r)
2167
if (flags & NDR_IN) {
2168
if (r->in.handle == NULL) {
2169
return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
2171
NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
2172
NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.type));
2173
NDR_CHECK(ndr_push_svcctl_StartType(ndr, NDR_SCALARS, r->in.start_type));
2174
NDR_CHECK(ndr_push_svcctl_ErrorControl(ndr, NDR_SCALARS, r->in.error_control));
2175
NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.binary_path));
2176
if (r->in.binary_path) {
2177
NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.binary_path, CH_UTF16)));
2178
NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0));
2179
NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.binary_path, CH_UTF16)));
2180
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));
2182
NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.load_order_group));
2183
if (r->in.load_order_group) {
2184
NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.load_order_group, CH_UTF16)));
2185
NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0));
2186
NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.load_order_group, CH_UTF16)));
2187
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));
2189
NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.dependencies));
2190
if (r->in.dependencies) {
2191
NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.dependencies, CH_UTF16)));
2192
NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0));
2193
NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.dependencies, CH_UTF16)));
2194
NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.dependencies, ndr_charset_length(r->in.dependencies, CH_UTF16), sizeof(uint16_t), CH_UTF16));
2196
NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.service_start_name));
2197
if (r->in.service_start_name) {
2198
NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.service_start_name, CH_UTF16)));
2199
NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0));
2200
NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.service_start_name, CH_UTF16)));
2201
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));
2203
NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.password));
2204
if (r->in.password) {
2205
NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.password, CH_UTF16)));
2206
NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0));
2207
NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.password, CH_UTF16)));
2208
NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.password, ndr_charset_length(r->in.password, CH_UTF16), sizeof(uint16_t), CH_UTF16));
2210
NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.display_name));
2211
if (r->in.display_name) {
2212
NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.display_name, CH_UTF16)));
2213
NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0));
2214
NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.display_name, CH_UTF16)));
2215
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));
2218
if (flags & NDR_OUT) {
2219
if (r->out.tag_id == NULL) {
2220
return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
2222
NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.tag_id));
2223
NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
2225
return NDR_ERR_SUCCESS;
2228
static enum ndr_err_code ndr_pull_svcctl_ChangeServiceConfigW(struct ndr_pull *ndr, int flags, struct svcctl_ChangeServiceConfigW *r)
2230
uint32_t _ptr_binary_path;
2231
uint32_t _ptr_load_order_group;
2232
uint32_t _ptr_dependencies;
2233
uint32_t _ptr_service_start_name;
2234
uint32_t _ptr_password;
2235
uint32_t _ptr_display_name;
2236
TALLOC_CTX *_mem_save_handle_0;
2237
TALLOC_CTX *_mem_save_binary_path_0;
2238
TALLOC_CTX *_mem_save_load_order_group_0;
2239
TALLOC_CTX *_mem_save_tag_id_0;
2240
TALLOC_CTX *_mem_save_dependencies_0;
2241
TALLOC_CTX *_mem_save_service_start_name_0;
2242
TALLOC_CTX *_mem_save_password_0;
2243
TALLOC_CTX *_mem_save_display_name_0;
2244
if (flags & NDR_IN) {
2245
ZERO_STRUCT(r->out);
2247
if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
2248
NDR_PULL_ALLOC(ndr, r->in.handle);
2250
_mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
2251
NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
2252
NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
2253
NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
2254
NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.type));
2255
NDR_CHECK(ndr_pull_svcctl_StartType(ndr, NDR_SCALARS, &r->in.start_type));
2256
NDR_CHECK(ndr_pull_svcctl_ErrorControl(ndr, NDR_SCALARS, &r->in.error_control));
2257
NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_binary_path));
2258
if (_ptr_binary_path) {
2259
NDR_PULL_ALLOC(ndr, r->in.binary_path);
2261
r->in.binary_path = NULL;
2263
if (r->in.binary_path) {
2264
_mem_save_binary_path_0 = NDR_PULL_GET_MEM_CTX(ndr);
2265
NDR_PULL_SET_MEM_CTX(ndr, r->in.binary_path, 0);
2266
NDR_CHECK(ndr_pull_array_size(ndr, &r->in.binary_path));
2267
NDR_CHECK(ndr_pull_array_length(ndr, &r->in.binary_path));
2268
if (ndr_get_array_length(ndr, &r->in.binary_path) > ndr_get_array_size(ndr, &r->in.binary_path)) {
2269
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));
2271
NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.binary_path), sizeof(uint16_t)));
2272
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));
2273
NDR_PULL_SET_MEM_CTX(ndr, _mem_save_binary_path_0, 0);
2275
NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_load_order_group));
2276
if (_ptr_load_order_group) {
2277
NDR_PULL_ALLOC(ndr, r->in.load_order_group);
2279
r->in.load_order_group = NULL;
2281
if (r->in.load_order_group) {
2282
_mem_save_load_order_group_0 = NDR_PULL_GET_MEM_CTX(ndr);
2283
NDR_PULL_SET_MEM_CTX(ndr, r->in.load_order_group, 0);
2284
NDR_CHECK(ndr_pull_array_size(ndr, &r->in.load_order_group));
2285
NDR_CHECK(ndr_pull_array_length(ndr, &r->in.load_order_group));
2286
if (ndr_get_array_length(ndr, &r->in.load_order_group) > ndr_get_array_size(ndr, &r->in.load_order_group)) {
2287
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));
2289
NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.load_order_group), sizeof(uint16_t)));
2290
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));
2291
NDR_PULL_SET_MEM_CTX(ndr, _mem_save_load_order_group_0, 0);
2293
NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_dependencies));
2294
if (_ptr_dependencies) {
2295
NDR_PULL_ALLOC(ndr, r->in.dependencies);
2297
r->in.dependencies = NULL;
2299
if (r->in.dependencies) {
2300
_mem_save_dependencies_0 = NDR_PULL_GET_MEM_CTX(ndr);
2301
NDR_PULL_SET_MEM_CTX(ndr, r->in.dependencies, 0);
2302
NDR_CHECK(ndr_pull_array_size(ndr, &r->in.dependencies));
2303
NDR_CHECK(ndr_pull_array_length(ndr, &r->in.dependencies));
2304
if (ndr_get_array_length(ndr, &r->in.dependencies) > ndr_get_array_size(ndr, &r->in.dependencies)) {
2305
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));
2307
NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.dependencies), sizeof(uint16_t)));
2308
NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.dependencies, ndr_get_array_length(ndr, &r->in.dependencies), sizeof(uint16_t), CH_UTF16));
2309
NDR_PULL_SET_MEM_CTX(ndr, _mem_save_dependencies_0, 0);
2311
NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_service_start_name));
2312
if (_ptr_service_start_name) {
2313
NDR_PULL_ALLOC(ndr, r->in.service_start_name);
2315
r->in.service_start_name = NULL;
2317
if (r->in.service_start_name) {
2318
_mem_save_service_start_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
2319
NDR_PULL_SET_MEM_CTX(ndr, r->in.service_start_name, 0);
2320
NDR_CHECK(ndr_pull_array_size(ndr, &r->in.service_start_name));
2321
NDR_CHECK(ndr_pull_array_length(ndr, &r->in.service_start_name));
2322
if (ndr_get_array_length(ndr, &r->in.service_start_name) > ndr_get_array_size(ndr, &r->in.service_start_name)) {
2323
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));
2325
NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.service_start_name), sizeof(uint16_t)));
2326
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));
2327
NDR_PULL_SET_MEM_CTX(ndr, _mem_save_service_start_name_0, 0);
2329
NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_password));
2330
if (_ptr_password) {
2331
NDR_PULL_ALLOC(ndr, r->in.password);
2333
r->in.password = NULL;
2335
if (r->in.password) {
2336
_mem_save_password_0 = NDR_PULL_GET_MEM_CTX(ndr);
2337
NDR_PULL_SET_MEM_CTX(ndr, r->in.password, 0);
2338
NDR_CHECK(ndr_pull_array_size(ndr, &r->in.password));
2339
NDR_CHECK(ndr_pull_array_length(ndr, &r->in.password));
2340
if (ndr_get_array_length(ndr, &r->in.password) > ndr_get_array_size(ndr, &r->in.password)) {
2341
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));
2343
NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.password), sizeof(uint16_t)));
2344
NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.password, ndr_get_array_length(ndr, &r->in.password), sizeof(uint16_t), CH_UTF16));
2345
NDR_PULL_SET_MEM_CTX(ndr, _mem_save_password_0, 0);
2347
NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_display_name));
2348
if (_ptr_display_name) {
2349
NDR_PULL_ALLOC(ndr, r->in.display_name);
2351
r->in.display_name = NULL;
2353
if (r->in.display_name) {
2354
_mem_save_display_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
2355
NDR_PULL_SET_MEM_CTX(ndr, r->in.display_name, 0);
2356
NDR_CHECK(ndr_pull_array_size(ndr, &r->in.display_name));
2357
NDR_CHECK(ndr_pull_array_length(ndr, &r->in.display_name));
2358
if (ndr_get_array_length(ndr, &r->in.display_name) > ndr_get_array_size(ndr, &r->in.display_name)) {
2359
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));
2361
NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.display_name), sizeof(uint16_t)));
2362
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));
2363
NDR_PULL_SET_MEM_CTX(ndr, _mem_save_display_name_0, 0);
2365
NDR_PULL_ALLOC(ndr, r->out.tag_id);
2366
ZERO_STRUCTP(r->out.tag_id);
2368
if (flags & NDR_OUT) {
2369
if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
2370
NDR_PULL_ALLOC(ndr, r->out.tag_id);
2372
_mem_save_tag_id_0 = NDR_PULL_GET_MEM_CTX(ndr);
2373
NDR_PULL_SET_MEM_CTX(ndr, r->out.tag_id, LIBNDR_FLAG_REF_ALLOC);
2374
NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.tag_id));
2375
NDR_PULL_SET_MEM_CTX(ndr, _mem_save_tag_id_0, LIBNDR_FLAG_REF_ALLOC);
2376
NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
2378
return NDR_ERR_SUCCESS;
2381
_PUBLIC_ void ndr_print_svcctl_ChangeServiceConfigW(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_ChangeServiceConfigW *r)
2383
ndr_print_struct(ndr, name, "svcctl_ChangeServiceConfigW");
2385
if (flags & NDR_SET_VALUES) {
2386
ndr->flags |= LIBNDR_PRINT_SET_VALUES;
2388
if (flags & NDR_IN) {
2389
ndr_print_struct(ndr, "in", "svcctl_ChangeServiceConfigW");
2391
ndr_print_ptr(ndr, "handle", r->in.handle);
2393
ndr_print_policy_handle(ndr, "handle", r->in.handle);
2395
ndr_print_uint32(ndr, "type", r->in.type);
2396
ndr_print_svcctl_StartType(ndr, "start_type", r->in.start_type);
2397
ndr_print_svcctl_ErrorControl(ndr, "error_control", r->in.error_control);
2398
ndr_print_ptr(ndr, "binary_path", r->in.binary_path);
2400
if (r->in.binary_path) {
2401
ndr_print_string(ndr, "binary_path", r->in.binary_path);
2404
ndr_print_ptr(ndr, "load_order_group", r->in.load_order_group);
2406
if (r->in.load_order_group) {
2407
ndr_print_string(ndr, "load_order_group", r->in.load_order_group);
2410
ndr_print_ptr(ndr, "dependencies", r->in.dependencies);
2412
if (r->in.dependencies) {
2413
ndr_print_string(ndr, "dependencies", r->in.dependencies);
2416
ndr_print_ptr(ndr, "service_start_name", r->in.service_start_name);
2418
if (r->in.service_start_name) {
2419
ndr_print_string(ndr, "service_start_name", r->in.service_start_name);
2422
ndr_print_ptr(ndr, "password", r->in.password);
2424
if (r->in.password) {
2425
ndr_print_string(ndr, "password", r->in.password);
2428
ndr_print_ptr(ndr, "display_name", r->in.display_name);
2430
if (r->in.display_name) {
2431
ndr_print_string(ndr, "display_name", r->in.display_name);
2436
if (flags & NDR_OUT) {
2437
ndr_print_struct(ndr, "out", "svcctl_ChangeServiceConfigW");
2439
ndr_print_ptr(ndr, "tag_id", r->out.tag_id);
2441
ndr_print_uint32(ndr, "tag_id", *r->out.tag_id);
2443
ndr_print_WERROR(ndr, "result", r->out.result);
2449
static enum ndr_err_code ndr_push_svcctl_CreateServiceW(struct ndr_push *ndr, int flags, const struct svcctl_CreateServiceW *r)
2451
if (flags & NDR_IN) {
2452
if (r->in.scmanager_handle == NULL) {
2453
return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
2455
NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.scmanager_handle));
2456
NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.ServiceName, CH_UTF16)));
2457
NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0));
2458
NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.ServiceName, CH_UTF16)));
2459
NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.ServiceName, ndr_charset_length(r->in.ServiceName, CH_UTF16), sizeof(uint16_t), CH_UTF16));
2460
NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.DisplayName));
2461
if (r->in.DisplayName) {
2462
NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.DisplayName, CH_UTF16)));
2463
NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0));
2464
NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.DisplayName, CH_UTF16)));
2465
NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.DisplayName, ndr_charset_length(r->in.DisplayName, CH_UTF16), sizeof(uint16_t), CH_UTF16));
2467
NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.desired_access));
2468
NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.type));
2469
NDR_CHECK(ndr_push_svcctl_StartType(ndr, NDR_SCALARS, r->in.start_type));
2470
NDR_CHECK(ndr_push_svcctl_ErrorControl(ndr, NDR_SCALARS, r->in.error_control));
2471
NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.binary_path, CH_UTF16)));
2472
NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0));
2473
NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.binary_path, CH_UTF16)));
2474
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));
2475
NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.LoadOrderGroupKey));
2476
if (r->in.LoadOrderGroupKey) {
2477
NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.LoadOrderGroupKey, CH_UTF16)));
2478
NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0));
2479
NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.LoadOrderGroupKey, CH_UTF16)));
2480
NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.LoadOrderGroupKey, ndr_charset_length(r->in.LoadOrderGroupKey, CH_UTF16), sizeof(uint16_t), CH_UTF16));
2482
NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.TagId));
2484
NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->in.TagId));
2486
NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.dependencies));
2487
if (r->in.dependencies) {
2488
NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, r->in.dependencies_size));
2489
NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->in.dependencies, r->in.dependencies_size));
2491
NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.dependencies_size));
2492
NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.service_start_name));
2493
if (r->in.service_start_name) {
2494
NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.service_start_name, CH_UTF16)));
2495
NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0));
2496
NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.service_start_name, CH_UTF16)));
2497
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));
2499
NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.password));
2500
if (r->in.password) {
2501
NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, r->in.password_size));
2502
NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->in.password, r->in.password_size));
2504
NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.password_size));
2506
if (flags & NDR_OUT) {
2507
NDR_CHECK(ndr_push_unique_ptr(ndr, r->out.TagId));
2509
NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.TagId));
2511
if (r->out.handle == NULL) {
2512
return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
2514
NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->out.handle));
2515
NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
2517
return NDR_ERR_SUCCESS;
2520
static enum ndr_err_code ndr_pull_svcctl_CreateServiceW(struct ndr_pull *ndr, int flags, struct svcctl_CreateServiceW *r)
2522
uint32_t _ptr_DisplayName;
2523
uint32_t _ptr_LoadOrderGroupKey;
2524
uint32_t _ptr_TagId;
2525
uint32_t _ptr_dependencies;
2526
uint32_t _ptr_service_start_name;
2527
uint32_t _ptr_password;
2528
TALLOC_CTX *_mem_save_scmanager_handle_0;
2529
TALLOC_CTX *_mem_save_DisplayName_0;
2530
TALLOC_CTX *_mem_save_LoadOrderGroupKey_0;
2531
TALLOC_CTX *_mem_save_TagId_0;
2532
TALLOC_CTX *_mem_save_dependencies_0;
2533
TALLOC_CTX *_mem_save_service_start_name_0;
2534
TALLOC_CTX *_mem_save_password_0;
2535
TALLOC_CTX *_mem_save_handle_0;
2536
if (flags & NDR_IN) {
2537
ZERO_STRUCT(r->out);
2539
if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
2540
NDR_PULL_ALLOC(ndr, r->in.scmanager_handle);
2542
_mem_save_scmanager_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
2543
NDR_PULL_SET_MEM_CTX(ndr, r->in.scmanager_handle, LIBNDR_FLAG_REF_ALLOC);
2544
NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.scmanager_handle));
2545
NDR_PULL_SET_MEM_CTX(ndr, _mem_save_scmanager_handle_0, LIBNDR_FLAG_REF_ALLOC);
2546
NDR_CHECK(ndr_pull_array_size(ndr, &r->in.ServiceName));
2547
NDR_CHECK(ndr_pull_array_length(ndr, &r->in.ServiceName));
2548
if (ndr_get_array_length(ndr, &r->in.ServiceName) > ndr_get_array_size(ndr, &r->in.ServiceName)) {
2549
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));
2551
NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.ServiceName), sizeof(uint16_t)));
2552
NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.ServiceName, ndr_get_array_length(ndr, &r->in.ServiceName), sizeof(uint16_t), CH_UTF16));
2553
NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_DisplayName));
2554
if (_ptr_DisplayName) {
2555
NDR_PULL_ALLOC(ndr, r->in.DisplayName);
2557
r->in.DisplayName = NULL;
2559
if (r->in.DisplayName) {
2560
_mem_save_DisplayName_0 = NDR_PULL_GET_MEM_CTX(ndr);
2561
NDR_PULL_SET_MEM_CTX(ndr, r->in.DisplayName, 0);
2562
NDR_CHECK(ndr_pull_array_size(ndr, &r->in.DisplayName));
2563
NDR_CHECK(ndr_pull_array_length(ndr, &r->in.DisplayName));
2564
if (ndr_get_array_length(ndr, &r->in.DisplayName) > ndr_get_array_size(ndr, &r->in.DisplayName)) {
2565
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));
2567
NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.DisplayName), sizeof(uint16_t)));
2568
NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.DisplayName, ndr_get_array_length(ndr, &r->in.DisplayName), sizeof(uint16_t), CH_UTF16));
2569
NDR_PULL_SET_MEM_CTX(ndr, _mem_save_DisplayName_0, 0);
2571
NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.desired_access));
2572
NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.type));
2573
NDR_CHECK(ndr_pull_svcctl_StartType(ndr, NDR_SCALARS, &r->in.start_type));
2574
NDR_CHECK(ndr_pull_svcctl_ErrorControl(ndr, NDR_SCALARS, &r->in.error_control));
2575
NDR_CHECK(ndr_pull_array_size(ndr, &r->in.binary_path));
2576
NDR_CHECK(ndr_pull_array_length(ndr, &r->in.binary_path));
2577
if (ndr_get_array_length(ndr, &r->in.binary_path) > ndr_get_array_size(ndr, &r->in.binary_path)) {
2578
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));
2580
NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.binary_path), sizeof(uint16_t)));
2581
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));
2582
NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_LoadOrderGroupKey));
2583
if (_ptr_LoadOrderGroupKey) {
2584
NDR_PULL_ALLOC(ndr, r->in.LoadOrderGroupKey);
2586
r->in.LoadOrderGroupKey = NULL;
2588
if (r->in.LoadOrderGroupKey) {
2589
_mem_save_LoadOrderGroupKey_0 = NDR_PULL_GET_MEM_CTX(ndr);
2590
NDR_PULL_SET_MEM_CTX(ndr, r->in.LoadOrderGroupKey, 0);
2591
NDR_CHECK(ndr_pull_array_size(ndr, &r->in.LoadOrderGroupKey));
2592
NDR_CHECK(ndr_pull_array_length(ndr, &r->in.LoadOrderGroupKey));
2593
if (ndr_get_array_length(ndr, &r->in.LoadOrderGroupKey) > ndr_get_array_size(ndr, &r->in.LoadOrderGroupKey)) {
2594
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));
2596
NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.LoadOrderGroupKey), sizeof(uint16_t)));
2597
NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.LoadOrderGroupKey, ndr_get_array_length(ndr, &r->in.LoadOrderGroupKey), sizeof(uint16_t), CH_UTF16));
2598
NDR_PULL_SET_MEM_CTX(ndr, _mem_save_LoadOrderGroupKey_0, 0);
2600
NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_TagId));
2602
NDR_PULL_ALLOC(ndr, r->in.TagId);
2607
_mem_save_TagId_0 = NDR_PULL_GET_MEM_CTX(ndr);
2608
NDR_PULL_SET_MEM_CTX(ndr, r->in.TagId, 0);
2609
NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->in.TagId));
2610
NDR_PULL_SET_MEM_CTX(ndr, _mem_save_TagId_0, 0);
2612
NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_dependencies));
2613
if (_ptr_dependencies) {
2614
NDR_PULL_ALLOC(ndr, r->in.dependencies);
2616
r->in.dependencies = NULL;
2618
if (r->in.dependencies) {
2619
_mem_save_dependencies_0 = NDR_PULL_GET_MEM_CTX(ndr);
2620
NDR_PULL_SET_MEM_CTX(ndr, r->in.dependencies, 0);
2621
NDR_CHECK(ndr_pull_array_size(ndr, &r->in.dependencies));
2622
NDR_PULL_ALLOC_N(ndr, r->in.dependencies, ndr_get_array_size(ndr, &r->in.dependencies));
2623
NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->in.dependencies, ndr_get_array_size(ndr, &r->in.dependencies)));
2624
NDR_PULL_SET_MEM_CTX(ndr, _mem_save_dependencies_0, 0);
2626
NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.dependencies_size));
2627
NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_service_start_name));
2628
if (_ptr_service_start_name) {
2629
NDR_PULL_ALLOC(ndr, r->in.service_start_name);
2631
r->in.service_start_name = NULL;
2633
if (r->in.service_start_name) {
2634
_mem_save_service_start_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
2635
NDR_PULL_SET_MEM_CTX(ndr, r->in.service_start_name, 0);
2636
NDR_CHECK(ndr_pull_array_size(ndr, &r->in.service_start_name));
2637
NDR_CHECK(ndr_pull_array_length(ndr, &r->in.service_start_name));
2638
if (ndr_get_array_length(ndr, &r->in.service_start_name) > ndr_get_array_size(ndr, &r->in.service_start_name)) {
2639
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));
2641
NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.service_start_name), sizeof(uint16_t)));
2642
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));
2643
NDR_PULL_SET_MEM_CTX(ndr, _mem_save_service_start_name_0, 0);
2645
NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_password));
2646
if (_ptr_password) {
2647
NDR_PULL_ALLOC(ndr, r->in.password);
2649
r->in.password = NULL;
2651
if (r->in.password) {
2652
_mem_save_password_0 = NDR_PULL_GET_MEM_CTX(ndr);
2653
NDR_PULL_SET_MEM_CTX(ndr, r->in.password, 0);
2654
NDR_CHECK(ndr_pull_array_size(ndr, &r->in.password));
2655
NDR_PULL_ALLOC_N(ndr, r->in.password, ndr_get_array_size(ndr, &r->in.password));
2656
NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->in.password, ndr_get_array_size(ndr, &r->in.password)));
2657
NDR_PULL_SET_MEM_CTX(ndr, _mem_save_password_0, 0);
2659
NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.password_size));
2660
NDR_PULL_ALLOC(ndr, r->out.handle);
2661
ZERO_STRUCTP(r->out.handle);
2662
if (r->in.dependencies) {
2663
NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->in.dependencies, r->in.dependencies_size));
2665
if (r->in.password) {
2666
NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->in.password, r->in.password_size));
2669
if (flags & NDR_OUT) {
2670
NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_TagId));
2672
NDR_PULL_ALLOC(ndr, r->out.TagId);
2674
r->out.TagId = NULL;
2677
_mem_save_TagId_0 = NDR_PULL_GET_MEM_CTX(ndr);
2678
NDR_PULL_SET_MEM_CTX(ndr, r->out.TagId, 0);
2679
NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.TagId));
2680
NDR_PULL_SET_MEM_CTX(ndr, _mem_save_TagId_0, 0);
2682
if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
2683
NDR_PULL_ALLOC(ndr, r->out.handle);
2685
_mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
2686
NDR_PULL_SET_MEM_CTX(ndr, r->out.handle, LIBNDR_FLAG_REF_ALLOC);
2687
NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->out.handle));
2688
NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
2689
NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
2691
return NDR_ERR_SUCCESS;
2694
_PUBLIC_ void ndr_print_svcctl_CreateServiceW(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_CreateServiceW *r)
2696
ndr_print_struct(ndr, name, "svcctl_CreateServiceW");
2698
if (flags & NDR_SET_VALUES) {
2699
ndr->flags |= LIBNDR_PRINT_SET_VALUES;
2701
if (flags & NDR_IN) {
2702
ndr_print_struct(ndr, "in", "svcctl_CreateServiceW");
2704
ndr_print_ptr(ndr, "scmanager_handle", r->in.scmanager_handle);
2706
ndr_print_policy_handle(ndr, "scmanager_handle", r->in.scmanager_handle);
2708
ndr_print_string(ndr, "ServiceName", r->in.ServiceName);
2709
ndr_print_ptr(ndr, "DisplayName", r->in.DisplayName);
2711
if (r->in.DisplayName) {
2712
ndr_print_string(ndr, "DisplayName", r->in.DisplayName);
2715
ndr_print_uint32(ndr, "desired_access", r->in.desired_access);
2716
ndr_print_uint32(ndr, "type", r->in.type);
2717
ndr_print_svcctl_StartType(ndr, "start_type", r->in.start_type);
2718
ndr_print_svcctl_ErrorControl(ndr, "error_control", r->in.error_control);
2719
ndr_print_string(ndr, "binary_path", r->in.binary_path);
2720
ndr_print_ptr(ndr, "LoadOrderGroupKey", r->in.LoadOrderGroupKey);
2722
if (r->in.LoadOrderGroupKey) {
2723
ndr_print_string(ndr, "LoadOrderGroupKey", r->in.LoadOrderGroupKey);
2726
ndr_print_ptr(ndr, "TagId", r->in.TagId);
2729
ndr_print_uint32(ndr, "TagId", *r->in.TagId);
2732
ndr_print_ptr(ndr, "dependencies", r->in.dependencies);
2734
if (r->in.dependencies) {
2735
ndr_print_array_uint8(ndr, "dependencies", r->in.dependencies, r->in.dependencies_size);
2738
ndr_print_uint32(ndr, "dependencies_size", r->in.dependencies_size);
2739
ndr_print_ptr(ndr, "service_start_name", r->in.service_start_name);
2741
if (r->in.service_start_name) {
2742
ndr_print_string(ndr, "service_start_name", r->in.service_start_name);
2745
ndr_print_ptr(ndr, "password", r->in.password);
2747
if (r->in.password) {
2748
ndr_print_array_uint8(ndr, "password", r->in.password, r->in.password_size);
2751
ndr_print_uint32(ndr, "password_size", r->in.password_size);
2754
if (flags & NDR_OUT) {
2755
ndr_print_struct(ndr, "out", "svcctl_CreateServiceW");
2757
ndr_print_ptr(ndr, "TagId", r->out.TagId);
2760
ndr_print_uint32(ndr, "TagId", *r->out.TagId);
2763
ndr_print_ptr(ndr, "handle", r->out.handle);
2765
ndr_print_policy_handle(ndr, "handle", r->out.handle);
2767
ndr_print_WERROR(ndr, "result", r->out.result);
2773
static enum ndr_err_code ndr_push_svcctl_EnumDependentServicesW(struct ndr_push *ndr, int flags, const struct svcctl_EnumDependentServicesW *r)
2775
if (flags & NDR_IN) {
2776
if (r->in.service == NULL) {
2777
return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
2779
NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.service));
2780
NDR_CHECK(ndr_push_svcctl_ServiceState(ndr, NDR_SCALARS, r->in.state));
2781
NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.offered));
2783
if (flags & NDR_OUT) {
2784
if (r->out.service_status == NULL) {
2785
return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
2787
NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, r->in.offered));
2788
NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->out.service_status, r->in.offered));
2789
if (r->out.needed == NULL) {
2790
return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
2792
NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.needed));
2793
if (r->out.services_returned == NULL) {
2794
return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
2796
NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.services_returned));
2797
NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
2799
return NDR_ERR_SUCCESS;
2802
static enum ndr_err_code ndr_pull_svcctl_EnumDependentServicesW(struct ndr_pull *ndr, int flags, struct svcctl_EnumDependentServicesW *r)
2804
TALLOC_CTX *_mem_save_service_0;
2805
TALLOC_CTX *_mem_save_needed_0;
2806
TALLOC_CTX *_mem_save_services_returned_0;
2807
if (flags & NDR_IN) {
2808
ZERO_STRUCT(r->out);
2810
if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
2811
NDR_PULL_ALLOC(ndr, r->in.service);
2813
_mem_save_service_0 = NDR_PULL_GET_MEM_CTX(ndr);
2814
NDR_PULL_SET_MEM_CTX(ndr, r->in.service, LIBNDR_FLAG_REF_ALLOC);
2815
NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.service));
2816
NDR_PULL_SET_MEM_CTX(ndr, _mem_save_service_0, LIBNDR_FLAG_REF_ALLOC);
2817
NDR_CHECK(ndr_pull_svcctl_ServiceState(ndr, NDR_SCALARS, &r->in.state));
2818
NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.offered));
2819
if (r->in.offered > 0x40000) {
2820
return ndr_pull_error(ndr, NDR_ERR_RANGE, "value out of range");
2822
NDR_PULL_ALLOC_N(ndr, r->out.service_status, r->in.offered);
2823
memset(r->out.service_status, 0, (r->in.offered) * sizeof(*r->out.service_status));
2824
NDR_PULL_ALLOC(ndr, r->out.needed);
2825
ZERO_STRUCTP(r->out.needed);
2826
NDR_PULL_ALLOC(ndr, r->out.services_returned);
2827
ZERO_STRUCTP(r->out.services_returned);
2829
if (flags & NDR_OUT) {
2830
NDR_CHECK(ndr_pull_array_size(ndr, &r->out.service_status));
2831
if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
2832
NDR_PULL_ALLOC_N(ndr, r->out.service_status, ndr_get_array_size(ndr, &r->out.service_status));
2834
NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->out.service_status, ndr_get_array_size(ndr, &r->out.service_status)));
2835
if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
2836
NDR_PULL_ALLOC(ndr, r->out.needed);
2838
_mem_save_needed_0 = NDR_PULL_GET_MEM_CTX(ndr);
2839
NDR_PULL_SET_MEM_CTX(ndr, r->out.needed, LIBNDR_FLAG_REF_ALLOC);
2840
NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.needed));
2841
if (*r->out.needed > 0x40000) {
2842
return ndr_pull_error(ndr, NDR_ERR_RANGE, "value out of range");
2844
NDR_PULL_SET_MEM_CTX(ndr, _mem_save_needed_0, LIBNDR_FLAG_REF_ALLOC);
2845
if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
2846
NDR_PULL_ALLOC(ndr, r->out.services_returned);
2848
_mem_save_services_returned_0 = NDR_PULL_GET_MEM_CTX(ndr);
2849
NDR_PULL_SET_MEM_CTX(ndr, r->out.services_returned, LIBNDR_FLAG_REF_ALLOC);
2850
NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.services_returned));
2851
if (*r->out.services_returned > 0x40000) {
2852
return ndr_pull_error(ndr, NDR_ERR_RANGE, "value out of range");
2854
NDR_PULL_SET_MEM_CTX(ndr, _mem_save_services_returned_0, LIBNDR_FLAG_REF_ALLOC);
2855
NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
2856
if (r->out.service_status) {
2857
NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->out.service_status, r->in.offered));
2860
return NDR_ERR_SUCCESS;
2863
_PUBLIC_ void ndr_print_svcctl_EnumDependentServicesW(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_EnumDependentServicesW *r)
2865
ndr_print_struct(ndr, name, "svcctl_EnumDependentServicesW");
2867
if (flags & NDR_SET_VALUES) {
2868
ndr->flags |= LIBNDR_PRINT_SET_VALUES;
2870
if (flags & NDR_IN) {
2871
ndr_print_struct(ndr, "in", "svcctl_EnumDependentServicesW");
2873
ndr_print_ptr(ndr, "service", r->in.service);
2875
ndr_print_policy_handle(ndr, "service", r->in.service);
2877
ndr_print_svcctl_ServiceState(ndr, "state", r->in.state);
2878
ndr_print_uint32(ndr, "offered", r->in.offered);
2881
if (flags & NDR_OUT) {
2882
ndr_print_struct(ndr, "out", "svcctl_EnumDependentServicesW");
2884
ndr_print_ptr(ndr, "service_status", r->out.service_status);
2886
ndr_print_array_uint8(ndr, "service_status", r->out.service_status, r->in.offered);
2888
ndr_print_ptr(ndr, "needed", r->out.needed);
2890
ndr_print_uint32(ndr, "needed", *r->out.needed);
2892
ndr_print_ptr(ndr, "services_returned", r->out.services_returned);
2894
ndr_print_uint32(ndr, "services_returned", *r->out.services_returned);
2896
ndr_print_WERROR(ndr, "result", r->out.result);
2902
static enum ndr_err_code ndr_push_svcctl_EnumServicesStatusW(struct ndr_push *ndr, int flags, const struct svcctl_EnumServicesStatusW *r)
2904
if (flags & NDR_IN) {
2905
if (r->in.handle == NULL) {
2906
return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
2908
NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
2909
NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.type));
2910
NDR_CHECK(ndr_push_svcctl_ServiceState(ndr, NDR_SCALARS, r->in.state));
2911
NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.offered));
2912
NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.resume_handle));
2913
if (r->in.resume_handle) {
2914
NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->in.resume_handle));
2917
if (flags & NDR_OUT) {
2918
if (r->out.service == NULL) {
2919
return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
2921
NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, r->in.offered));
2922
NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->out.service, r->in.offered));
2923
if (r->out.needed == NULL) {
2924
return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
2926
NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.needed));
2927
if (r->out.services_returned == NULL) {
2928
return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
2930
NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.services_returned));
2931
NDR_CHECK(ndr_push_unique_ptr(ndr, r->out.resume_handle));
2932
if (r->out.resume_handle) {
2933
NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.resume_handle));
2935
NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
2937
return NDR_ERR_SUCCESS;
2940
static enum ndr_err_code ndr_pull_svcctl_EnumServicesStatusW(struct ndr_pull *ndr, int flags, struct svcctl_EnumServicesStatusW *r)
2942
uint32_t _ptr_resume_handle;
2943
TALLOC_CTX *_mem_save_handle_0;
2944
TALLOC_CTX *_mem_save_needed_0;
2945
TALLOC_CTX *_mem_save_services_returned_0;
2946
TALLOC_CTX *_mem_save_resume_handle_0;
2947
if (flags & NDR_IN) {
2948
ZERO_STRUCT(r->out);
2950
if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
2951
NDR_PULL_ALLOC(ndr, r->in.handle);
2953
_mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
2954
NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
2955
NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
2956
NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
2957
NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.type));
2958
NDR_CHECK(ndr_pull_svcctl_ServiceState(ndr, NDR_SCALARS, &r->in.state));
2959
NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.offered));
2960
if (r->in.offered > 0x40000) {
2961
return ndr_pull_error(ndr, NDR_ERR_RANGE, "value out of range");
2963
NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_resume_handle));
2964
if (_ptr_resume_handle) {
2965
NDR_PULL_ALLOC(ndr, r->in.resume_handle);
2967
r->in.resume_handle = NULL;
2969
if (r->in.resume_handle) {
2970
_mem_save_resume_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
2971
NDR_PULL_SET_MEM_CTX(ndr, r->in.resume_handle, 0);
2972
NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->in.resume_handle));
2973
NDR_PULL_SET_MEM_CTX(ndr, _mem_save_resume_handle_0, 0);
2975
NDR_PULL_ALLOC_N(ndr, r->out.service, r->in.offered);
2976
memset(r->out.service, 0, (r->in.offered) * sizeof(*r->out.service));
2977
NDR_PULL_ALLOC(ndr, r->out.needed);
2978
ZERO_STRUCTP(r->out.needed);
2979
NDR_PULL_ALLOC(ndr, r->out.services_returned);
2980
ZERO_STRUCTP(r->out.services_returned);
2982
if (flags & NDR_OUT) {
2983
NDR_CHECK(ndr_pull_array_size(ndr, &r->out.service));
2984
if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
2985
NDR_PULL_ALLOC_N(ndr, r->out.service, ndr_get_array_size(ndr, &r->out.service));
2987
NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->out.service, ndr_get_array_size(ndr, &r->out.service)));
2988
if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
2989
NDR_PULL_ALLOC(ndr, r->out.needed);
2991
_mem_save_needed_0 = NDR_PULL_GET_MEM_CTX(ndr);
2992
NDR_PULL_SET_MEM_CTX(ndr, r->out.needed, LIBNDR_FLAG_REF_ALLOC);
2993
NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.needed));
2994
if (*r->out.needed > 0x40000) {
2995
return ndr_pull_error(ndr, NDR_ERR_RANGE, "value out of range");
2997
NDR_PULL_SET_MEM_CTX(ndr, _mem_save_needed_0, LIBNDR_FLAG_REF_ALLOC);
2998
if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
2999
NDR_PULL_ALLOC(ndr, r->out.services_returned);
3001
_mem_save_services_returned_0 = NDR_PULL_GET_MEM_CTX(ndr);
3002
NDR_PULL_SET_MEM_CTX(ndr, r->out.services_returned, LIBNDR_FLAG_REF_ALLOC);
3003
NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.services_returned));
3004
if (*r->out.services_returned > 0x40000) {
3005
return ndr_pull_error(ndr, NDR_ERR_RANGE, "value out of range");
3007
NDR_PULL_SET_MEM_CTX(ndr, _mem_save_services_returned_0, LIBNDR_FLAG_REF_ALLOC);
3008
NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_resume_handle));
3009
if (_ptr_resume_handle) {
3010
NDR_PULL_ALLOC(ndr, r->out.resume_handle);
3012
r->out.resume_handle = NULL;
3014
if (r->out.resume_handle) {
3015
_mem_save_resume_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
3016
NDR_PULL_SET_MEM_CTX(ndr, r->out.resume_handle, 0);
3017
NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.resume_handle));
3018
NDR_PULL_SET_MEM_CTX(ndr, _mem_save_resume_handle_0, 0);
3020
NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
3021
if (r->out.service) {
3022
NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->out.service, r->in.offered));
3025
return NDR_ERR_SUCCESS;
3028
_PUBLIC_ void ndr_print_svcctl_EnumServicesStatusW(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_EnumServicesStatusW *r)
3030
ndr_print_struct(ndr, name, "svcctl_EnumServicesStatusW");
3032
if (flags & NDR_SET_VALUES) {
3033
ndr->flags |= LIBNDR_PRINT_SET_VALUES;
3035
if (flags & NDR_IN) {
3036
ndr_print_struct(ndr, "in", "svcctl_EnumServicesStatusW");
3038
ndr_print_ptr(ndr, "handle", r->in.handle);
3040
ndr_print_policy_handle(ndr, "handle", r->in.handle);
3042
ndr_print_uint32(ndr, "type", r->in.type);
3043
ndr_print_svcctl_ServiceState(ndr, "state", r->in.state);
3044
ndr_print_uint32(ndr, "offered", r->in.offered);
3045
ndr_print_ptr(ndr, "resume_handle", r->in.resume_handle);
3047
if (r->in.resume_handle) {
3048
ndr_print_uint32(ndr, "resume_handle", *r->in.resume_handle);
3053
if (flags & NDR_OUT) {
3054
ndr_print_struct(ndr, "out", "svcctl_EnumServicesStatusW");
3056
ndr_print_ptr(ndr, "service", r->out.service);
3058
ndr_print_array_uint8(ndr, "service", r->out.service, r->in.offered);
3060
ndr_print_ptr(ndr, "needed", r->out.needed);
3062
ndr_print_uint32(ndr, "needed", *r->out.needed);
3064
ndr_print_ptr(ndr, "services_returned", r->out.services_returned);
3066
ndr_print_uint32(ndr, "services_returned", *r->out.services_returned);
3068
ndr_print_ptr(ndr, "resume_handle", r->out.resume_handle);
3070
if (r->out.resume_handle) {
3071
ndr_print_uint32(ndr, "resume_handle", *r->out.resume_handle);
3074
ndr_print_WERROR(ndr, "result", r->out.result);
3080
static enum ndr_err_code ndr_push_svcctl_OpenSCManagerW(struct ndr_push *ndr, int flags, const struct svcctl_OpenSCManagerW *r)
3082
if (flags & NDR_IN) {
3083
NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.MachineName));
3084
if (r->in.MachineName) {
3085
NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.MachineName, CH_UTF16)));
3086
NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0));
3087
NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.MachineName, CH_UTF16)));
3088
NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.MachineName, ndr_charset_length(r->in.MachineName, CH_UTF16), sizeof(uint16_t), CH_UTF16));
3090
NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.DatabaseName));
3091
if (r->in.DatabaseName) {
3092
NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.DatabaseName, CH_UTF16)));
3093
NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0));
3094
NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.DatabaseName, CH_UTF16)));
3095
NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.DatabaseName, ndr_charset_length(r->in.DatabaseName, CH_UTF16), sizeof(uint16_t), CH_UTF16));
3097
NDR_CHECK(ndr_push_svcctl_MgrAccessMask(ndr, NDR_SCALARS, r->in.access_mask));
3099
if (flags & NDR_OUT) {
3100
if (r->out.handle == NULL) {
3101
return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
3103
NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->out.handle));
3104
NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
3106
return NDR_ERR_SUCCESS;
3109
static enum ndr_err_code ndr_pull_svcctl_OpenSCManagerW(struct ndr_pull *ndr, int flags, struct svcctl_OpenSCManagerW *r)
3111
uint32_t _ptr_MachineName;
3112
uint32_t _ptr_DatabaseName;
3113
TALLOC_CTX *_mem_save_MachineName_0;
3114
TALLOC_CTX *_mem_save_DatabaseName_0;
3115
TALLOC_CTX *_mem_save_handle_0;
3116
if (flags & NDR_IN) {
3117
ZERO_STRUCT(r->out);
3119
NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_MachineName));
3120
if (_ptr_MachineName) {
3121
NDR_PULL_ALLOC(ndr, r->in.MachineName);
3123
r->in.MachineName = NULL;
3125
if (r->in.MachineName) {
3126
_mem_save_MachineName_0 = NDR_PULL_GET_MEM_CTX(ndr);
3127
NDR_PULL_SET_MEM_CTX(ndr, r->in.MachineName, 0);
3128
NDR_CHECK(ndr_pull_array_size(ndr, &r->in.MachineName));
3129
NDR_CHECK(ndr_pull_array_length(ndr, &r->in.MachineName));
3130
if (ndr_get_array_length(ndr, &r->in.MachineName) > ndr_get_array_size(ndr, &r->in.MachineName)) {
3131
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));
3133
NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.MachineName), sizeof(uint16_t)));
3134
NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.MachineName, ndr_get_array_length(ndr, &r->in.MachineName), sizeof(uint16_t), CH_UTF16));
3135
NDR_PULL_SET_MEM_CTX(ndr, _mem_save_MachineName_0, 0);
3137
NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_DatabaseName));
3138
if (_ptr_DatabaseName) {
3139
NDR_PULL_ALLOC(ndr, r->in.DatabaseName);
3141
r->in.DatabaseName = NULL;
3143
if (r->in.DatabaseName) {
3144
_mem_save_DatabaseName_0 = NDR_PULL_GET_MEM_CTX(ndr);
3145
NDR_PULL_SET_MEM_CTX(ndr, r->in.DatabaseName, 0);
3146
NDR_CHECK(ndr_pull_array_size(ndr, &r->in.DatabaseName));
3147
NDR_CHECK(ndr_pull_array_length(ndr, &r->in.DatabaseName));
3148
if (ndr_get_array_length(ndr, &r->in.DatabaseName) > ndr_get_array_size(ndr, &r->in.DatabaseName)) {
3149
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));
3151
NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.DatabaseName), sizeof(uint16_t)));
3152
NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.DatabaseName, ndr_get_array_length(ndr, &r->in.DatabaseName), sizeof(uint16_t), CH_UTF16));
3153
NDR_PULL_SET_MEM_CTX(ndr, _mem_save_DatabaseName_0, 0);
3155
NDR_CHECK(ndr_pull_svcctl_MgrAccessMask(ndr, NDR_SCALARS, &r->in.access_mask));
3156
NDR_PULL_ALLOC(ndr, r->out.handle);
3157
ZERO_STRUCTP(r->out.handle);
3159
if (flags & NDR_OUT) {
3160
if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
3161
NDR_PULL_ALLOC(ndr, r->out.handle);
3163
_mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
3164
NDR_PULL_SET_MEM_CTX(ndr, r->out.handle, LIBNDR_FLAG_REF_ALLOC);
3165
NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->out.handle));
3166
NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
3167
NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
3169
return NDR_ERR_SUCCESS;
3172
_PUBLIC_ void ndr_print_svcctl_OpenSCManagerW(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_OpenSCManagerW *r)
3174
ndr_print_struct(ndr, name, "svcctl_OpenSCManagerW");
3176
if (flags & NDR_SET_VALUES) {
3177
ndr->flags |= LIBNDR_PRINT_SET_VALUES;
3179
if (flags & NDR_IN) {
3180
ndr_print_struct(ndr, "in", "svcctl_OpenSCManagerW");
3182
ndr_print_ptr(ndr, "MachineName", r->in.MachineName);
3184
if (r->in.MachineName) {
3185
ndr_print_string(ndr, "MachineName", r->in.MachineName);
3188
ndr_print_ptr(ndr, "DatabaseName", r->in.DatabaseName);
3190
if (r->in.DatabaseName) {
3191
ndr_print_string(ndr, "DatabaseName", r->in.DatabaseName);
3194
ndr_print_svcctl_MgrAccessMask(ndr, "access_mask", r->in.access_mask);
3197
if (flags & NDR_OUT) {
3198
ndr_print_struct(ndr, "out", "svcctl_OpenSCManagerW");
3200
ndr_print_ptr(ndr, "handle", r->out.handle);
3202
ndr_print_policy_handle(ndr, "handle", r->out.handle);
3204
ndr_print_WERROR(ndr, "result", r->out.result);
3210
static enum ndr_err_code ndr_push_svcctl_OpenServiceW(struct ndr_push *ndr, int flags, const struct svcctl_OpenServiceW *r)
3212
if (flags & NDR_IN) {
3213
if (r->in.scmanager_handle == NULL) {
3214
return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
3216
NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.scmanager_handle));
3217
NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.ServiceName, CH_UTF16)));
3218
NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0));
3219
NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.ServiceName, CH_UTF16)));
3220
NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.ServiceName, ndr_charset_length(r->in.ServiceName, CH_UTF16), sizeof(uint16_t), CH_UTF16));
3221
NDR_CHECK(ndr_push_svcctl_ServiceAccessMask(ndr, NDR_SCALARS, r->in.access_mask));
3223
if (flags & NDR_OUT) {
3224
if (r->out.handle == NULL) {
3225
return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
3227
NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->out.handle));
3228
NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
3230
return NDR_ERR_SUCCESS;
3233
static enum ndr_err_code ndr_pull_svcctl_OpenServiceW(struct ndr_pull *ndr, int flags, struct svcctl_OpenServiceW *r)
3235
TALLOC_CTX *_mem_save_scmanager_handle_0;
3236
TALLOC_CTX *_mem_save_handle_0;
3237
if (flags & NDR_IN) {
3238
ZERO_STRUCT(r->out);
3240
if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
3241
NDR_PULL_ALLOC(ndr, r->in.scmanager_handle);
3243
_mem_save_scmanager_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
3244
NDR_PULL_SET_MEM_CTX(ndr, r->in.scmanager_handle, LIBNDR_FLAG_REF_ALLOC);
3245
NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.scmanager_handle));
3246
NDR_PULL_SET_MEM_CTX(ndr, _mem_save_scmanager_handle_0, LIBNDR_FLAG_REF_ALLOC);
3247
NDR_CHECK(ndr_pull_array_size(ndr, &r->in.ServiceName));
3248
NDR_CHECK(ndr_pull_array_length(ndr, &r->in.ServiceName));
3249
if (ndr_get_array_length(ndr, &r->in.ServiceName) > ndr_get_array_size(ndr, &r->in.ServiceName)) {
3250
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));
3252
NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.ServiceName), sizeof(uint16_t)));
3253
NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.ServiceName, ndr_get_array_length(ndr, &r->in.ServiceName), sizeof(uint16_t), CH_UTF16));
3254
NDR_CHECK(ndr_pull_svcctl_ServiceAccessMask(ndr, NDR_SCALARS, &r->in.access_mask));
3255
NDR_PULL_ALLOC(ndr, r->out.handle);
3256
ZERO_STRUCTP(r->out.handle);
3258
if (flags & NDR_OUT) {
3259
if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
3260
NDR_PULL_ALLOC(ndr, r->out.handle);
3262
_mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
3263
NDR_PULL_SET_MEM_CTX(ndr, r->out.handle, LIBNDR_FLAG_REF_ALLOC);
3264
NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->out.handle));
3265
NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
3266
NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
3268
return NDR_ERR_SUCCESS;
3271
_PUBLIC_ void ndr_print_svcctl_OpenServiceW(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_OpenServiceW *r)
3273
ndr_print_struct(ndr, name, "svcctl_OpenServiceW");
3275
if (flags & NDR_SET_VALUES) {
3276
ndr->flags |= LIBNDR_PRINT_SET_VALUES;
3278
if (flags & NDR_IN) {
3279
ndr_print_struct(ndr, "in", "svcctl_OpenServiceW");
3281
ndr_print_ptr(ndr, "scmanager_handle", r->in.scmanager_handle);
3283
ndr_print_policy_handle(ndr, "scmanager_handle", r->in.scmanager_handle);
3285
ndr_print_string(ndr, "ServiceName", r->in.ServiceName);
3286
ndr_print_svcctl_ServiceAccessMask(ndr, "access_mask", r->in.access_mask);
3289
if (flags & NDR_OUT) {
3290
ndr_print_struct(ndr, "out", "svcctl_OpenServiceW");
3292
ndr_print_ptr(ndr, "handle", r->out.handle);
3294
ndr_print_policy_handle(ndr, "handle", r->out.handle);
3296
ndr_print_WERROR(ndr, "result", r->out.result);
3302
static enum ndr_err_code ndr_push_svcctl_QueryServiceConfigW(struct ndr_push *ndr, int flags, const struct svcctl_QueryServiceConfigW *r)
3304
if (flags & NDR_IN) {
3305
if (r->in.handle == NULL) {
3306
return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
3308
NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
3309
NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.offered));
3311
if (flags & NDR_OUT) {
3312
if (r->out.query == NULL) {
3313
return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
3315
NDR_CHECK(ndr_push_QUERY_SERVICE_CONFIG(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.query));
3316
if (r->out.needed == NULL) {
3317
return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
3319
NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.needed));
3320
NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
3322
return NDR_ERR_SUCCESS;
3325
static enum ndr_err_code ndr_pull_svcctl_QueryServiceConfigW(struct ndr_pull *ndr, int flags, struct svcctl_QueryServiceConfigW *r)
3327
TALLOC_CTX *_mem_save_handle_0;
3328
TALLOC_CTX *_mem_save_query_0;
3329
TALLOC_CTX *_mem_save_needed_0;
3330
if (flags & NDR_IN) {
3331
ZERO_STRUCT(r->out);
3333
if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
3334
NDR_PULL_ALLOC(ndr, r->in.handle);
3336
_mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
3337
NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
3338
NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
3339
NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
3340
NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.offered));
3341
if (r->in.offered > 8192) {
3342
return ndr_pull_error(ndr, NDR_ERR_RANGE, "value out of range");
3344
NDR_PULL_ALLOC(ndr, r->out.query);
3345
ZERO_STRUCTP(r->out.query);
3346
NDR_PULL_ALLOC(ndr, r->out.needed);
3347
ZERO_STRUCTP(r->out.needed);
3349
if (flags & NDR_OUT) {
3350
if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
3351
NDR_PULL_ALLOC(ndr, r->out.query);
3353
_mem_save_query_0 = NDR_PULL_GET_MEM_CTX(ndr);
3354
NDR_PULL_SET_MEM_CTX(ndr, r->out.query, LIBNDR_FLAG_REF_ALLOC);
3355
NDR_CHECK(ndr_pull_QUERY_SERVICE_CONFIG(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.query));
3356
NDR_PULL_SET_MEM_CTX(ndr, _mem_save_query_0, LIBNDR_FLAG_REF_ALLOC);
3357
if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
3358
NDR_PULL_ALLOC(ndr, r->out.needed);
3360
_mem_save_needed_0 = NDR_PULL_GET_MEM_CTX(ndr);
3361
NDR_PULL_SET_MEM_CTX(ndr, r->out.needed, LIBNDR_FLAG_REF_ALLOC);
3362
NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.needed));
3363
if (*r->out.needed > 8192) {
3364
return ndr_pull_error(ndr, NDR_ERR_RANGE, "value out of range");
3366
NDR_PULL_SET_MEM_CTX(ndr, _mem_save_needed_0, LIBNDR_FLAG_REF_ALLOC);
3367
NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
3369
return NDR_ERR_SUCCESS;
3372
_PUBLIC_ void ndr_print_svcctl_QueryServiceConfigW(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_QueryServiceConfigW *r)
3374
ndr_print_struct(ndr, name, "svcctl_QueryServiceConfigW");
3376
if (flags & NDR_SET_VALUES) {
3377
ndr->flags |= LIBNDR_PRINT_SET_VALUES;
3379
if (flags & NDR_IN) {
3380
ndr_print_struct(ndr, "in", "svcctl_QueryServiceConfigW");
3382
ndr_print_ptr(ndr, "handle", r->in.handle);
3384
ndr_print_policy_handle(ndr, "handle", r->in.handle);
3386
ndr_print_uint32(ndr, "offered", r->in.offered);
3389
if (flags & NDR_OUT) {
3390
ndr_print_struct(ndr, "out", "svcctl_QueryServiceConfigW");
3392
ndr_print_ptr(ndr, "query", r->out.query);
3394
ndr_print_QUERY_SERVICE_CONFIG(ndr, "query", r->out.query);
3396
ndr_print_ptr(ndr, "needed", r->out.needed);
3398
ndr_print_uint32(ndr, "needed", *r->out.needed);
3400
ndr_print_WERROR(ndr, "result", r->out.result);
3406
static enum ndr_err_code ndr_push_svcctl_QueryServiceLockStatusW(struct ndr_push *ndr, int flags, const struct svcctl_QueryServiceLockStatusW *r)
3408
if (flags & NDR_IN) {
3409
if (r->in.handle == NULL) {
3410
return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
3412
NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
3413
NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.offered));
3415
if (flags & NDR_OUT) {
3416
if (r->out.lock_status == NULL) {
3417
return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
3419
NDR_CHECK(ndr_push_SERVICE_LOCK_STATUS(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.lock_status));
3420
if (r->out.needed == NULL) {
3421
return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
3423
NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.needed));
3424
NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
3426
return NDR_ERR_SUCCESS;
3429
static enum ndr_err_code ndr_pull_svcctl_QueryServiceLockStatusW(struct ndr_pull *ndr, int flags, struct svcctl_QueryServiceLockStatusW *r)
3431
TALLOC_CTX *_mem_save_handle_0;
3432
TALLOC_CTX *_mem_save_lock_status_0;
3433
TALLOC_CTX *_mem_save_needed_0;
3434
if (flags & NDR_IN) {
3435
ZERO_STRUCT(r->out);
3437
if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
3438
NDR_PULL_ALLOC(ndr, r->in.handle);
3440
_mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
3441
NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
3442
NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
3443
NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
3444
NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.offered));
3445
NDR_PULL_ALLOC(ndr, r->out.lock_status);
3446
ZERO_STRUCTP(r->out.lock_status);
3447
NDR_PULL_ALLOC(ndr, r->out.needed);
3448
ZERO_STRUCTP(r->out.needed);
3450
if (flags & NDR_OUT) {
3451
if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
3452
NDR_PULL_ALLOC(ndr, r->out.lock_status);
3454
_mem_save_lock_status_0 = NDR_PULL_GET_MEM_CTX(ndr);
3455
NDR_PULL_SET_MEM_CTX(ndr, r->out.lock_status, LIBNDR_FLAG_REF_ALLOC);
3456
NDR_CHECK(ndr_pull_SERVICE_LOCK_STATUS(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.lock_status));
3457
NDR_PULL_SET_MEM_CTX(ndr, _mem_save_lock_status_0, LIBNDR_FLAG_REF_ALLOC);
3458
if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
3459
NDR_PULL_ALLOC(ndr, r->out.needed);
3461
_mem_save_needed_0 = NDR_PULL_GET_MEM_CTX(ndr);
3462
NDR_PULL_SET_MEM_CTX(ndr, r->out.needed, LIBNDR_FLAG_REF_ALLOC);
3463
NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.needed));
3464
NDR_PULL_SET_MEM_CTX(ndr, _mem_save_needed_0, LIBNDR_FLAG_REF_ALLOC);
3465
NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
3467
return NDR_ERR_SUCCESS;
3470
_PUBLIC_ void ndr_print_svcctl_QueryServiceLockStatusW(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_QueryServiceLockStatusW *r)
3472
ndr_print_struct(ndr, name, "svcctl_QueryServiceLockStatusW");
3474
if (flags & NDR_SET_VALUES) {
3475
ndr->flags |= LIBNDR_PRINT_SET_VALUES;
3477
if (flags & NDR_IN) {
3478
ndr_print_struct(ndr, "in", "svcctl_QueryServiceLockStatusW");
3480
ndr_print_ptr(ndr, "handle", r->in.handle);
3482
ndr_print_policy_handle(ndr, "handle", r->in.handle);
3484
ndr_print_uint32(ndr, "offered", r->in.offered);
3487
if (flags & NDR_OUT) {
3488
ndr_print_struct(ndr, "out", "svcctl_QueryServiceLockStatusW");
3490
ndr_print_ptr(ndr, "lock_status", r->out.lock_status);
3492
ndr_print_SERVICE_LOCK_STATUS(ndr, "lock_status", r->out.lock_status);
3494
ndr_print_ptr(ndr, "needed", r->out.needed);
3496
ndr_print_uint32(ndr, "needed", *r->out.needed);
3498
ndr_print_WERROR(ndr, "result", r->out.result);
3504
static enum ndr_err_code ndr_push_svcctl_StartServiceW(struct ndr_push *ndr, int flags, const struct svcctl_StartServiceW *r)
3506
uint32_t cntr_Arguments_1;
3507
if (flags & NDR_IN) {
3508
if (r->in.handle == NULL) {
3509
return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
3511
NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
3512
NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.NumArgs));
3513
NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.Arguments));
3514
if (r->in.Arguments) {
3515
NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, r->in.NumArgs));
3516
for (cntr_Arguments_1 = 0; cntr_Arguments_1 < r->in.NumArgs; cntr_Arguments_1++) {
3517
NDR_CHECK(ndr_push_svcctl_ArgumentString(ndr, NDR_SCALARS, &r->in.Arguments[cntr_Arguments_1]));
3519
for (cntr_Arguments_1 = 0; cntr_Arguments_1 < r->in.NumArgs; cntr_Arguments_1++) {
3520
NDR_CHECK(ndr_push_svcctl_ArgumentString(ndr, NDR_BUFFERS, &r->in.Arguments[cntr_Arguments_1]));
3524
if (flags & NDR_OUT) {
3525
NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
3527
return NDR_ERR_SUCCESS;
3530
static enum ndr_err_code ndr_pull_svcctl_StartServiceW(struct ndr_pull *ndr, int flags, struct svcctl_StartServiceW *r)
3532
uint32_t _ptr_Arguments;
3533
uint32_t cntr_Arguments_1;
3534
TALLOC_CTX *_mem_save_handle_0;
3535
TALLOC_CTX *_mem_save_Arguments_0;
3536
TALLOC_CTX *_mem_save_Arguments_1;
3537
if (flags & NDR_IN) {
3538
if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
3539
NDR_PULL_ALLOC(ndr, r->in.handle);
3541
_mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
3542
NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
3543
NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
3544
NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
3545
NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.NumArgs));
3546
if (r->in.NumArgs > SC_MAX_ARGUMENTS) {
3547
return ndr_pull_error(ndr, NDR_ERR_RANGE, "value out of range");
3549
NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_Arguments));
3550
if (_ptr_Arguments) {
3551
NDR_PULL_ALLOC(ndr, r->in.Arguments);
3553
r->in.Arguments = NULL;
3555
if (r->in.Arguments) {
3556
_mem_save_Arguments_0 = NDR_PULL_GET_MEM_CTX(ndr);
3557
NDR_PULL_SET_MEM_CTX(ndr, r->in.Arguments, 0);
3558
NDR_CHECK(ndr_pull_array_size(ndr, &r->in.Arguments));
3559
NDR_PULL_ALLOC_N(ndr, r->in.Arguments, ndr_get_array_size(ndr, &r->in.Arguments));
3560
_mem_save_Arguments_1 = NDR_PULL_GET_MEM_CTX(ndr);
3561
NDR_PULL_SET_MEM_CTX(ndr, r->in.Arguments, 0);
3562
for (cntr_Arguments_1 = 0; cntr_Arguments_1 < r->in.NumArgs; cntr_Arguments_1++) {
3563
NDR_CHECK(ndr_pull_svcctl_ArgumentString(ndr, NDR_SCALARS, &r->in.Arguments[cntr_Arguments_1]));
3565
for (cntr_Arguments_1 = 0; cntr_Arguments_1 < r->in.NumArgs; cntr_Arguments_1++) {
3566
NDR_CHECK(ndr_pull_svcctl_ArgumentString(ndr, NDR_BUFFERS, &r->in.Arguments[cntr_Arguments_1]));
3568
NDR_PULL_SET_MEM_CTX(ndr, _mem_save_Arguments_1, 0);
3569
NDR_PULL_SET_MEM_CTX(ndr, _mem_save_Arguments_0, 0);
3571
if (r->in.Arguments) {
3572
NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->in.Arguments, r->in.NumArgs));
3575
if (flags & NDR_OUT) {
3576
NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
3578
return NDR_ERR_SUCCESS;
3581
_PUBLIC_ void ndr_print_svcctl_StartServiceW(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_StartServiceW *r)
3583
uint32_t cntr_Arguments_1;
3584
ndr_print_struct(ndr, name, "svcctl_StartServiceW");
3586
if (flags & NDR_SET_VALUES) {
3587
ndr->flags |= LIBNDR_PRINT_SET_VALUES;
3589
if (flags & NDR_IN) {
3590
ndr_print_struct(ndr, "in", "svcctl_StartServiceW");
3592
ndr_print_ptr(ndr, "handle", r->in.handle);
3594
ndr_print_policy_handle(ndr, "handle", r->in.handle);
3596
ndr_print_uint32(ndr, "NumArgs", r->in.NumArgs);
3597
ndr_print_ptr(ndr, "Arguments", r->in.Arguments);
3599
if (r->in.Arguments) {
3600
ndr->print(ndr, "%s: ARRAY(%d)", "Arguments", (int)r->in.NumArgs);
3602
for (cntr_Arguments_1=0;cntr_Arguments_1<r->in.NumArgs;cntr_Arguments_1++) {
3604
if (asprintf(&idx_1, "[%d]", cntr_Arguments_1) != -1) {
3605
ndr_print_svcctl_ArgumentString(ndr, "Arguments", &r->in.Arguments[cntr_Arguments_1]);
3614
if (flags & NDR_OUT) {
3615
ndr_print_struct(ndr, "out", "svcctl_StartServiceW");
3617
ndr_print_WERROR(ndr, "result", r->out.result);
3623
static enum ndr_err_code ndr_push_svcctl_GetServiceDisplayNameW(struct ndr_push *ndr, int flags, const struct svcctl_GetServiceDisplayNameW *r)
3625
if (flags & NDR_IN) {
3626
if (r->in.handle == NULL) {
3627
return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
3629
NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
3630
NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.service_name));
3631
if (r->in.service_name) {
3632
NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.service_name, CH_UTF16)));
3633
NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0));
3634
NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.service_name, CH_UTF16)));
3635
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));
3637
NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.display_name_length));
3638
if (r->in.display_name_length) {
3639
NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->in.display_name_length));
3642
if (flags & NDR_OUT) {
3643
if (r->out.display_name == NULL) {
3644
return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
3646
NDR_CHECK(ndr_push_unique_ptr(ndr, *r->out.display_name));
3647
if (*r->out.display_name) {
3648
NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(*r->out.display_name, CH_UTF16)));
3649
NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0));
3650
NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(*r->out.display_name, CH_UTF16)));
3651
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));
3653
NDR_CHECK(ndr_push_unique_ptr(ndr, r->out.display_name_length));
3654
if (r->out.display_name_length) {
3655
NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.display_name_length));
3657
NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
3659
return NDR_ERR_SUCCESS;
3662
static enum ndr_err_code ndr_pull_svcctl_GetServiceDisplayNameW(struct ndr_pull *ndr, int flags, struct svcctl_GetServiceDisplayNameW *r)
3664
uint32_t _ptr_service_name;
3665
uint32_t _ptr_display_name;
3666
uint32_t _ptr_display_name_length;
3667
TALLOC_CTX *_mem_save_handle_0;
3668
TALLOC_CTX *_mem_save_service_name_0;
3669
TALLOC_CTX *_mem_save_display_name_0;
3670
TALLOC_CTX *_mem_save_display_name_1;
3671
TALLOC_CTX *_mem_save_display_name_length_0;
3672
if (flags & NDR_IN) {
3673
ZERO_STRUCT(r->out);
3675
if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
3676
NDR_PULL_ALLOC(ndr, r->in.handle);
3678
_mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
3679
NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
3680
NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
3681
NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
3682
NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_service_name));
3683
if (_ptr_service_name) {
3684
NDR_PULL_ALLOC(ndr, r->in.service_name);
3686
r->in.service_name = NULL;
3688
if (r->in.service_name) {
3689
_mem_save_service_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
3690
NDR_PULL_SET_MEM_CTX(ndr, r->in.service_name, 0);
3691
NDR_CHECK(ndr_pull_array_size(ndr, &r->in.service_name));
3692
NDR_CHECK(ndr_pull_array_length(ndr, &r->in.service_name));
3693
if (ndr_get_array_length(ndr, &r->in.service_name) > ndr_get_array_size(ndr, &r->in.service_name)) {
3694
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));
3696
NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.service_name), sizeof(uint16_t)));
3697
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));
3698
NDR_PULL_SET_MEM_CTX(ndr, _mem_save_service_name_0, 0);
3700
NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_display_name_length));
3701
if (_ptr_display_name_length) {
3702
NDR_PULL_ALLOC(ndr, r->in.display_name_length);
3704
r->in.display_name_length = NULL;
3706
if (r->in.display_name_length) {
3707
_mem_save_display_name_length_0 = NDR_PULL_GET_MEM_CTX(ndr);
3708
NDR_PULL_SET_MEM_CTX(ndr, r->in.display_name_length, 0);
3709
NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->in.display_name_length));
3710
NDR_PULL_SET_MEM_CTX(ndr, _mem_save_display_name_length_0, 0);
3712
NDR_PULL_ALLOC(ndr, r->out.display_name);
3713
ZERO_STRUCTP(r->out.display_name);
3715
if (flags & NDR_OUT) {
3716
if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
3717
NDR_PULL_ALLOC(ndr, r->out.display_name);
3719
_mem_save_display_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
3720
NDR_PULL_SET_MEM_CTX(ndr, r->out.display_name, LIBNDR_FLAG_REF_ALLOC);
3721
NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_display_name));
3722
if (_ptr_display_name) {
3723
NDR_PULL_ALLOC(ndr, *r->out.display_name);
3725
*r->out.display_name = NULL;
3727
if (*r->out.display_name) {
3728
_mem_save_display_name_1 = NDR_PULL_GET_MEM_CTX(ndr);
3729
NDR_PULL_SET_MEM_CTX(ndr, *r->out.display_name, 0);
3730
NDR_CHECK(ndr_pull_array_size(ndr, r->out.display_name));
3731
NDR_CHECK(ndr_pull_array_length(ndr, r->out.display_name));
3732
if (ndr_get_array_length(ndr, r->out.display_name) > ndr_get_array_size(ndr, r->out.display_name)) {
3733
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));
3735
NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, r->out.display_name), sizeof(uint16_t)));
3736
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));
3737
NDR_PULL_SET_MEM_CTX(ndr, _mem_save_display_name_1, 0);
3739
NDR_PULL_SET_MEM_CTX(ndr, _mem_save_display_name_0, LIBNDR_FLAG_REF_ALLOC);
3740
NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_display_name_length));
3741
if (_ptr_display_name_length) {
3742
NDR_PULL_ALLOC(ndr, r->out.display_name_length);
3744
r->out.display_name_length = NULL;
3746
if (r->out.display_name_length) {
3747
_mem_save_display_name_length_0 = NDR_PULL_GET_MEM_CTX(ndr);
3748
NDR_PULL_SET_MEM_CTX(ndr, r->out.display_name_length, 0);
3749
NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.display_name_length));
3750
NDR_PULL_SET_MEM_CTX(ndr, _mem_save_display_name_length_0, 0);
3752
NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
3754
return NDR_ERR_SUCCESS;
3757
_PUBLIC_ void ndr_print_svcctl_GetServiceDisplayNameW(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_GetServiceDisplayNameW *r)
3759
ndr_print_struct(ndr, name, "svcctl_GetServiceDisplayNameW");
3761
if (flags & NDR_SET_VALUES) {
3762
ndr->flags |= LIBNDR_PRINT_SET_VALUES;
3764
if (flags & NDR_IN) {
3765
ndr_print_struct(ndr, "in", "svcctl_GetServiceDisplayNameW");
3767
ndr_print_ptr(ndr, "handle", r->in.handle);
3769
ndr_print_policy_handle(ndr, "handle", r->in.handle);
3771
ndr_print_ptr(ndr, "service_name", r->in.service_name);
3773
if (r->in.service_name) {
3774
ndr_print_string(ndr, "service_name", r->in.service_name);
3777
ndr_print_ptr(ndr, "display_name_length", r->in.display_name_length);
3779
if (r->in.display_name_length) {
3780
ndr_print_uint32(ndr, "display_name_length", *r->in.display_name_length);
3785
if (flags & NDR_OUT) {
3786
ndr_print_struct(ndr, "out", "svcctl_GetServiceDisplayNameW");
3788
ndr_print_ptr(ndr, "display_name", r->out.display_name);
3790
ndr_print_ptr(ndr, "display_name", *r->out.display_name);
3792
if (*r->out.display_name) {
3793
ndr_print_string(ndr, "display_name", *r->out.display_name);
3797
ndr_print_ptr(ndr, "display_name_length", r->out.display_name_length);
3799
if (r->out.display_name_length) {
3800
ndr_print_uint32(ndr, "display_name_length", *r->out.display_name_length);
3803
ndr_print_WERROR(ndr, "result", r->out.result);
3809
static enum ndr_err_code ndr_push_svcctl_GetServiceKeyNameW(struct ndr_push *ndr, int flags, const struct svcctl_GetServiceKeyNameW *r)
3811
if (flags & NDR_IN) {
3812
if (r->in.handle == NULL) {
3813
return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
3815
NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
3816
NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.service_name));
3817
if (r->in.service_name) {
3818
NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.service_name, CH_UTF16)));
3819
NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0));
3820
NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.service_name, CH_UTF16)));
3821
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));
3823
NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.display_name_length));
3824
if (r->in.display_name_length) {
3825
NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->in.display_name_length));
3828
if (flags & NDR_OUT) {
3829
if (r->out.key_name == NULL) {
3830
return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
3832
NDR_CHECK(ndr_push_unique_ptr(ndr, *r->out.key_name));
3833
if (*r->out.key_name) {
3834
NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(*r->out.key_name, CH_UTF16)));
3835
NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0));
3836
NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(*r->out.key_name, CH_UTF16)));
3837
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));
3839
NDR_CHECK(ndr_push_unique_ptr(ndr, r->out.display_name_length));
3840
if (r->out.display_name_length) {
3841
NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.display_name_length));
3843
NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
3845
return NDR_ERR_SUCCESS;
3848
static enum ndr_err_code ndr_pull_svcctl_GetServiceKeyNameW(struct ndr_pull *ndr, int flags, struct svcctl_GetServiceKeyNameW *r)
3850
uint32_t _ptr_service_name;
3851
uint32_t _ptr_key_name;
3852
uint32_t _ptr_display_name_length;
3853
TALLOC_CTX *_mem_save_handle_0;
3854
TALLOC_CTX *_mem_save_service_name_0;
3855
TALLOC_CTX *_mem_save_key_name_0;
3856
TALLOC_CTX *_mem_save_key_name_1;
3857
TALLOC_CTX *_mem_save_display_name_length_0;
3858
if (flags & NDR_IN) {
3859
ZERO_STRUCT(r->out);
3861
if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
3862
NDR_PULL_ALLOC(ndr, r->in.handle);
3864
_mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
3865
NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
3866
NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
3867
NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
3868
NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_service_name));
3869
if (_ptr_service_name) {
3870
NDR_PULL_ALLOC(ndr, r->in.service_name);
3872
r->in.service_name = NULL;
3874
if (r->in.service_name) {
3875
_mem_save_service_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
3876
NDR_PULL_SET_MEM_CTX(ndr, r->in.service_name, 0);
3877
NDR_CHECK(ndr_pull_array_size(ndr, &r->in.service_name));
3878
NDR_CHECK(ndr_pull_array_length(ndr, &r->in.service_name));
3879
if (ndr_get_array_length(ndr, &r->in.service_name) > ndr_get_array_size(ndr, &r->in.service_name)) {
3880
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));
3882
NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.service_name), sizeof(uint16_t)));
3883
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));
3884
NDR_PULL_SET_MEM_CTX(ndr, _mem_save_service_name_0, 0);
3886
NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_display_name_length));
3887
if (_ptr_display_name_length) {
3888
NDR_PULL_ALLOC(ndr, r->in.display_name_length);
3890
r->in.display_name_length = NULL;
3892
if (r->in.display_name_length) {
3893
_mem_save_display_name_length_0 = NDR_PULL_GET_MEM_CTX(ndr);
3894
NDR_PULL_SET_MEM_CTX(ndr, r->in.display_name_length, 0);
3895
NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->in.display_name_length));
3896
NDR_PULL_SET_MEM_CTX(ndr, _mem_save_display_name_length_0, 0);
3898
NDR_PULL_ALLOC(ndr, r->out.key_name);
3899
ZERO_STRUCTP(r->out.key_name);
3901
if (flags & NDR_OUT) {
3902
if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
3903
NDR_PULL_ALLOC(ndr, r->out.key_name);
3905
_mem_save_key_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
3906
NDR_PULL_SET_MEM_CTX(ndr, r->out.key_name, LIBNDR_FLAG_REF_ALLOC);
3907
NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_key_name));
3908
if (_ptr_key_name) {
3909
NDR_PULL_ALLOC(ndr, *r->out.key_name);
3911
*r->out.key_name = NULL;
3913
if (*r->out.key_name) {
3914
_mem_save_key_name_1 = NDR_PULL_GET_MEM_CTX(ndr);
3915
NDR_PULL_SET_MEM_CTX(ndr, *r->out.key_name, 0);
3916
NDR_CHECK(ndr_pull_array_size(ndr, r->out.key_name));
3917
NDR_CHECK(ndr_pull_array_length(ndr, r->out.key_name));
3918
if (ndr_get_array_length(ndr, r->out.key_name) > ndr_get_array_size(ndr, r->out.key_name)) {
3919
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));
3921
NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, r->out.key_name), sizeof(uint16_t)));
3922
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));
3923
NDR_PULL_SET_MEM_CTX(ndr, _mem_save_key_name_1, 0);
3925
NDR_PULL_SET_MEM_CTX(ndr, _mem_save_key_name_0, LIBNDR_FLAG_REF_ALLOC);
3926
NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_display_name_length));
3927
if (_ptr_display_name_length) {
3928
NDR_PULL_ALLOC(ndr, r->out.display_name_length);
3930
r->out.display_name_length = NULL;
3932
if (r->out.display_name_length) {
3933
_mem_save_display_name_length_0 = NDR_PULL_GET_MEM_CTX(ndr);
3934
NDR_PULL_SET_MEM_CTX(ndr, r->out.display_name_length, 0);
3935
NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.display_name_length));
3936
NDR_PULL_SET_MEM_CTX(ndr, _mem_save_display_name_length_0, 0);
3938
NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
3940
return NDR_ERR_SUCCESS;
3943
_PUBLIC_ void ndr_print_svcctl_GetServiceKeyNameW(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_GetServiceKeyNameW *r)
3945
ndr_print_struct(ndr, name, "svcctl_GetServiceKeyNameW");
3947
if (flags & NDR_SET_VALUES) {
3948
ndr->flags |= LIBNDR_PRINT_SET_VALUES;
3950
if (flags & NDR_IN) {
3951
ndr_print_struct(ndr, "in", "svcctl_GetServiceKeyNameW");
3953
ndr_print_ptr(ndr, "handle", r->in.handle);
3955
ndr_print_policy_handle(ndr, "handle", r->in.handle);
3957
ndr_print_ptr(ndr, "service_name", r->in.service_name);
3959
if (r->in.service_name) {
3960
ndr_print_string(ndr, "service_name", r->in.service_name);
3963
ndr_print_ptr(ndr, "display_name_length", r->in.display_name_length);
3965
if (r->in.display_name_length) {
3966
ndr_print_uint32(ndr, "display_name_length", *r->in.display_name_length);
3971
if (flags & NDR_OUT) {
3972
ndr_print_struct(ndr, "out", "svcctl_GetServiceKeyNameW");
3974
ndr_print_ptr(ndr, "key_name", r->out.key_name);
3976
ndr_print_ptr(ndr, "key_name", *r->out.key_name);
3978
if (*r->out.key_name) {
3979
ndr_print_string(ndr, "key_name", *r->out.key_name);
3983
ndr_print_ptr(ndr, "display_name_length", r->out.display_name_length);
3985
if (r->out.display_name_length) {
3986
ndr_print_uint32(ndr, "display_name_length", *r->out.display_name_length);
3989
ndr_print_WERROR(ndr, "result", r->out.result);
3995
static enum ndr_err_code ndr_push_svcctl_SCSetServiceBitsA(struct ndr_push *ndr, int flags, const struct svcctl_SCSetServiceBitsA *r)
3997
if (flags & NDR_IN) {
3998
if (r->in.handle == NULL) {
3999
return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
4001
NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
4002
NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.bits));
4003
NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.bitson));
4004
NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.immediate));
4006
if (flags & NDR_OUT) {
4007
NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
4009
return NDR_ERR_SUCCESS;
4012
static enum ndr_err_code ndr_pull_svcctl_SCSetServiceBitsA(struct ndr_pull *ndr, int flags, struct svcctl_SCSetServiceBitsA *r)
4014
TALLOC_CTX *_mem_save_handle_0;
4015
if (flags & NDR_IN) {
4016
if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
4017
NDR_PULL_ALLOC(ndr, r->in.handle);
4019
_mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
4020
NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
4021
NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
4022
NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
4023
NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.bits));
4024
NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.bitson));
4025
NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.immediate));
4027
if (flags & NDR_OUT) {
4028
NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
4030
return NDR_ERR_SUCCESS;
4033
_PUBLIC_ void ndr_print_svcctl_SCSetServiceBitsA(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_SCSetServiceBitsA *r)
4035
ndr_print_struct(ndr, name, "svcctl_SCSetServiceBitsA");
4037
if (flags & NDR_SET_VALUES) {
4038
ndr->flags |= LIBNDR_PRINT_SET_VALUES;
4040
if (flags & NDR_IN) {
4041
ndr_print_struct(ndr, "in", "svcctl_SCSetServiceBitsA");
4043
ndr_print_ptr(ndr, "handle", r->in.handle);
4045
ndr_print_policy_handle(ndr, "handle", r->in.handle);
4047
ndr_print_uint32(ndr, "bits", r->in.bits);
4048
ndr_print_uint32(ndr, "bitson", r->in.bitson);
4049
ndr_print_uint32(ndr, "immediate", r->in.immediate);
4052
if (flags & NDR_OUT) {
4053
ndr_print_struct(ndr, "out", "svcctl_SCSetServiceBitsA");
4055
ndr_print_WERROR(ndr, "result", r->out.result);
4061
static enum ndr_err_code ndr_push_svcctl_ChangeServiceConfigA(struct ndr_push *ndr, int flags, const struct svcctl_ChangeServiceConfigA *r)
4063
if (flags & NDR_IN) {
4064
if (r->in.handle == NULL) {
4065
return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
4067
NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
4068
NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.type));
4069
NDR_CHECK(ndr_push_svcctl_StartType(ndr, NDR_SCALARS, r->in.start_type));
4070
NDR_CHECK(ndr_push_svcctl_ErrorControl(ndr, NDR_SCALARS, r->in.error_control));
4071
NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.binary_path));
4072
if (r->in.binary_path) {
4073
NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.binary_path, CH_UTF16)));
4074
NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0));
4075
NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.binary_path, CH_UTF16)));
4076
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));
4078
NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.load_order_group));
4079
if (r->in.load_order_group) {
4080
NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.load_order_group, CH_UTF16)));
4081
NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0));
4082
NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.load_order_group, CH_UTF16)));
4083
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));
4085
NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.dependencies));
4086
if (r->in.dependencies) {
4087
NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.dependencies, CH_UTF16)));
4088
NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0));
4089
NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.dependencies, CH_UTF16)));
4090
NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.dependencies, ndr_charset_length(r->in.dependencies, CH_UTF16), sizeof(uint16_t), CH_UTF16));
4092
NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.service_start_name));
4093
if (r->in.service_start_name) {
4094
NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.service_start_name, CH_UTF16)));
4095
NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0));
4096
NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.service_start_name, CH_UTF16)));
4097
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));
4099
NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.password));
4100
if (r->in.password) {
4101
NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.password, CH_UTF16)));
4102
NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0));
4103
NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.password, CH_UTF16)));
4104
NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.password, ndr_charset_length(r->in.password, CH_UTF16), sizeof(uint16_t), CH_UTF16));
4106
NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.display_name));
4107
if (r->in.display_name) {
4108
NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.display_name, CH_UTF16)));
4109
NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0));
4110
NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.display_name, CH_UTF16)));
4111
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));
4114
if (flags & NDR_OUT) {
4115
if (r->out.tag_id == NULL) {
4116
return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
4118
NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.tag_id));
4119
NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
4121
return NDR_ERR_SUCCESS;
4124
static enum ndr_err_code ndr_pull_svcctl_ChangeServiceConfigA(struct ndr_pull *ndr, int flags, struct svcctl_ChangeServiceConfigA *r)
4126
uint32_t _ptr_binary_path;
4127
uint32_t _ptr_load_order_group;
4128
uint32_t _ptr_dependencies;
4129
uint32_t _ptr_service_start_name;
4130
uint32_t _ptr_password;
4131
uint32_t _ptr_display_name;
4132
TALLOC_CTX *_mem_save_handle_0;
4133
TALLOC_CTX *_mem_save_binary_path_0;
4134
TALLOC_CTX *_mem_save_load_order_group_0;
4135
TALLOC_CTX *_mem_save_tag_id_0;
4136
TALLOC_CTX *_mem_save_dependencies_0;
4137
TALLOC_CTX *_mem_save_service_start_name_0;
4138
TALLOC_CTX *_mem_save_password_0;
4139
TALLOC_CTX *_mem_save_display_name_0;
4140
if (flags & NDR_IN) {
4141
ZERO_STRUCT(r->out);
4143
if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
4144
NDR_PULL_ALLOC(ndr, r->in.handle);
4146
_mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
4147
NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
4148
NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
4149
NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
4150
NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.type));
4151
NDR_CHECK(ndr_pull_svcctl_StartType(ndr, NDR_SCALARS, &r->in.start_type));
4152
NDR_CHECK(ndr_pull_svcctl_ErrorControl(ndr, NDR_SCALARS, &r->in.error_control));
4153
NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_binary_path));
4154
if (_ptr_binary_path) {
4155
NDR_PULL_ALLOC(ndr, r->in.binary_path);
4157
r->in.binary_path = NULL;
4159
if (r->in.binary_path) {
4160
_mem_save_binary_path_0 = NDR_PULL_GET_MEM_CTX(ndr);
4161
NDR_PULL_SET_MEM_CTX(ndr, r->in.binary_path, 0);
4162
NDR_CHECK(ndr_pull_array_size(ndr, &r->in.binary_path));
4163
NDR_CHECK(ndr_pull_array_length(ndr, &r->in.binary_path));
4164
if (ndr_get_array_length(ndr, &r->in.binary_path) > ndr_get_array_size(ndr, &r->in.binary_path)) {
4165
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));
4167
NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.binary_path), sizeof(uint16_t)));
4168
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));
4169
NDR_PULL_SET_MEM_CTX(ndr, _mem_save_binary_path_0, 0);
4171
NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_load_order_group));
4172
if (_ptr_load_order_group) {
4173
NDR_PULL_ALLOC(ndr, r->in.load_order_group);
4175
r->in.load_order_group = NULL;
4177
if (r->in.load_order_group) {
4178
_mem_save_load_order_group_0 = NDR_PULL_GET_MEM_CTX(ndr);
4179
NDR_PULL_SET_MEM_CTX(ndr, r->in.load_order_group, 0);
4180
NDR_CHECK(ndr_pull_array_size(ndr, &r->in.load_order_group));
4181
NDR_CHECK(ndr_pull_array_length(ndr, &r->in.load_order_group));
4182
if (ndr_get_array_length(ndr, &r->in.load_order_group) > ndr_get_array_size(ndr, &r->in.load_order_group)) {
4183
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));
4185
NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.load_order_group), sizeof(uint16_t)));
4186
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));
4187
NDR_PULL_SET_MEM_CTX(ndr, _mem_save_load_order_group_0, 0);
4189
NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_dependencies));
4190
if (_ptr_dependencies) {
4191
NDR_PULL_ALLOC(ndr, r->in.dependencies);
4193
r->in.dependencies = NULL;
4195
if (r->in.dependencies) {
4196
_mem_save_dependencies_0 = NDR_PULL_GET_MEM_CTX(ndr);
4197
NDR_PULL_SET_MEM_CTX(ndr, r->in.dependencies, 0);
4198
NDR_CHECK(ndr_pull_array_size(ndr, &r->in.dependencies));
4199
NDR_CHECK(ndr_pull_array_length(ndr, &r->in.dependencies));
4200
if (ndr_get_array_length(ndr, &r->in.dependencies) > ndr_get_array_size(ndr, &r->in.dependencies)) {
4201
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));
4203
NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.dependencies), sizeof(uint16_t)));
4204
NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.dependencies, ndr_get_array_length(ndr, &r->in.dependencies), sizeof(uint16_t), CH_UTF16));
4205
NDR_PULL_SET_MEM_CTX(ndr, _mem_save_dependencies_0, 0);
4207
NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_service_start_name));
4208
if (_ptr_service_start_name) {
4209
NDR_PULL_ALLOC(ndr, r->in.service_start_name);
4211
r->in.service_start_name = NULL;
4213
if (r->in.service_start_name) {
4214
_mem_save_service_start_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
4215
NDR_PULL_SET_MEM_CTX(ndr, r->in.service_start_name, 0);
4216
NDR_CHECK(ndr_pull_array_size(ndr, &r->in.service_start_name));
4217
NDR_CHECK(ndr_pull_array_length(ndr, &r->in.service_start_name));
4218
if (ndr_get_array_length(ndr, &r->in.service_start_name) > ndr_get_array_size(ndr, &r->in.service_start_name)) {
4219
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));
4221
NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.service_start_name), sizeof(uint16_t)));
4222
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));
4223
NDR_PULL_SET_MEM_CTX(ndr, _mem_save_service_start_name_0, 0);
4225
NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_password));
4226
if (_ptr_password) {
4227
NDR_PULL_ALLOC(ndr, r->in.password);
4229
r->in.password = NULL;
4231
if (r->in.password) {
4232
_mem_save_password_0 = NDR_PULL_GET_MEM_CTX(ndr);
4233
NDR_PULL_SET_MEM_CTX(ndr, r->in.password, 0);
4234
NDR_CHECK(ndr_pull_array_size(ndr, &r->in.password));
4235
NDR_CHECK(ndr_pull_array_length(ndr, &r->in.password));
4236
if (ndr_get_array_length(ndr, &r->in.password) > ndr_get_array_size(ndr, &r->in.password)) {
4237
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));
4239
NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.password), sizeof(uint16_t)));
4240
NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.password, ndr_get_array_length(ndr, &r->in.password), sizeof(uint16_t), CH_UTF16));
4241
NDR_PULL_SET_MEM_CTX(ndr, _mem_save_password_0, 0);
4243
NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_display_name));
4244
if (_ptr_display_name) {
4245
NDR_PULL_ALLOC(ndr, r->in.display_name);
4247
r->in.display_name = NULL;
4249
if (r->in.display_name) {
4250
_mem_save_display_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
4251
NDR_PULL_SET_MEM_CTX(ndr, r->in.display_name, 0);
4252
NDR_CHECK(ndr_pull_array_size(ndr, &r->in.display_name));
4253
NDR_CHECK(ndr_pull_array_length(ndr, &r->in.display_name));
4254
if (ndr_get_array_length(ndr, &r->in.display_name) > ndr_get_array_size(ndr, &r->in.display_name)) {
4255
return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.display_name), ndr_get_array_length(ndr, &r->in.display_name));
4257
NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.display_name), sizeof(uint16_t)));
4258
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));
4259
NDR_PULL_SET_MEM_CTX(ndr, _mem_save_display_name_0, 0);
4261
NDR_PULL_ALLOC(ndr, r->out.tag_id);
4262
ZERO_STRUCTP(r->out.tag_id);
4264
if (flags & NDR_OUT) {
4265
if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
4266
NDR_PULL_ALLOC(ndr, r->out.tag_id);
4268
_mem_save_tag_id_0 = NDR_PULL_GET_MEM_CTX(ndr);
4269
NDR_PULL_SET_MEM_CTX(ndr, r->out.tag_id, LIBNDR_FLAG_REF_ALLOC);
4270
NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.tag_id));
4271
NDR_PULL_SET_MEM_CTX(ndr, _mem_save_tag_id_0, LIBNDR_FLAG_REF_ALLOC);
4272
NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
4274
return NDR_ERR_SUCCESS;
4277
_PUBLIC_ void ndr_print_svcctl_ChangeServiceConfigA(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_ChangeServiceConfigA *r)
4279
ndr_print_struct(ndr, name, "svcctl_ChangeServiceConfigA");
4281
if (flags & NDR_SET_VALUES) {
4282
ndr->flags |= LIBNDR_PRINT_SET_VALUES;
4284
if (flags & NDR_IN) {
4285
ndr_print_struct(ndr, "in", "svcctl_ChangeServiceConfigA");
4287
ndr_print_ptr(ndr, "handle", r->in.handle);
4289
ndr_print_policy_handle(ndr, "handle", r->in.handle);
4291
ndr_print_uint32(ndr, "type", r->in.type);
4292
ndr_print_svcctl_StartType(ndr, "start_type", r->in.start_type);
4293
ndr_print_svcctl_ErrorControl(ndr, "error_control", r->in.error_control);
4294
ndr_print_ptr(ndr, "binary_path", r->in.binary_path);
4296
if (r->in.binary_path) {
4297
ndr_print_string(ndr, "binary_path", r->in.binary_path);
4300
ndr_print_ptr(ndr, "load_order_group", r->in.load_order_group);
4302
if (r->in.load_order_group) {
4303
ndr_print_string(ndr, "load_order_group", r->in.load_order_group);
4306
ndr_print_ptr(ndr, "dependencies", r->in.dependencies);
4308
if (r->in.dependencies) {
4309
ndr_print_string(ndr, "dependencies", r->in.dependencies);
4312
ndr_print_ptr(ndr, "service_start_name", r->in.service_start_name);
4314
if (r->in.service_start_name) {
4315
ndr_print_string(ndr, "service_start_name", r->in.service_start_name);
4318
ndr_print_ptr(ndr, "password", r->in.password);
4320
if (r->in.password) {
4321
ndr_print_string(ndr, "password", r->in.password);
4324
ndr_print_ptr(ndr, "display_name", r->in.display_name);
4326
if (r->in.display_name) {
4327
ndr_print_string(ndr, "display_name", r->in.display_name);
4332
if (flags & NDR_OUT) {
4333
ndr_print_struct(ndr, "out", "svcctl_ChangeServiceConfigA");
4335
ndr_print_ptr(ndr, "tag_id", r->out.tag_id);
4337
ndr_print_uint32(ndr, "tag_id", *r->out.tag_id);
4339
ndr_print_WERROR(ndr, "result", r->out.result);
4345
static enum ndr_err_code ndr_push_svcctl_CreateServiceA(struct ndr_push *ndr, int flags, const struct svcctl_CreateServiceA *r)
4347
if (flags & NDR_IN) {
4348
if (r->in.handle == NULL) {
4349
return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
4351
NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
4352
NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.ServiceName));
4353
if (r->in.ServiceName) {
4354
NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.ServiceName, CH_UTF16)));
4355
NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0));
4356
NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.ServiceName, CH_UTF16)));
4357
NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.ServiceName, ndr_charset_length(r->in.ServiceName, CH_UTF16), sizeof(uint16_t), CH_UTF16));
4359
NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.DisplayName));
4360
if (r->in.DisplayName) {
4361
NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.DisplayName, CH_UTF16)));
4362
NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0));
4363
NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.DisplayName, CH_UTF16)));
4364
NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.DisplayName, ndr_charset_length(r->in.DisplayName, CH_UTF16), sizeof(uint16_t), CH_UTF16));
4366
NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.desired_access));
4367
NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.type));
4368
NDR_CHECK(ndr_push_svcctl_StartType(ndr, NDR_SCALARS, r->in.start_type));
4369
NDR_CHECK(ndr_push_svcctl_ErrorControl(ndr, NDR_SCALARS, r->in.error_control));
4370
NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.binary_path));
4371
if (r->in.binary_path) {
4372
NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.binary_path, CH_UTF16)));
4373
NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0));
4374
NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.binary_path, CH_UTF16)));
4375
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));
4377
NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.LoadOrderGroupKey));
4378
if (r->in.LoadOrderGroupKey) {
4379
NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.LoadOrderGroupKey, CH_UTF16)));
4380
NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0));
4381
NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.LoadOrderGroupKey, CH_UTF16)));
4382
NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.LoadOrderGroupKey, ndr_charset_length(r->in.LoadOrderGroupKey, CH_UTF16), sizeof(uint16_t), CH_UTF16));
4384
NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.dependencies));
4385
if (r->in.dependencies) {
4386
NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.dependencies, CH_UTF16)));
4387
NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0));
4388
NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.dependencies, CH_UTF16)));
4389
NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.dependencies, ndr_charset_length(r->in.dependencies, CH_UTF16), sizeof(uint16_t), CH_UTF16));
4391
NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.service_start_name));
4392
if (r->in.service_start_name) {
4393
NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.service_start_name, CH_UTF16)));
4394
NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0));
4395
NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.service_start_name, CH_UTF16)));
4396
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));
4398
NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.password));
4399
if (r->in.password) {
4400
NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.password, CH_UTF16)));
4401
NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0));
4402
NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.password, CH_UTF16)));
4403
NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.password, ndr_charset_length(r->in.password, CH_UTF16), sizeof(uint16_t), CH_UTF16));
4406
if (flags & NDR_OUT) {
4407
NDR_CHECK(ndr_push_unique_ptr(ndr, r->out.TagId));
4409
NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.TagId));
4411
NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
4413
return NDR_ERR_SUCCESS;
4416
static enum ndr_err_code ndr_pull_svcctl_CreateServiceA(struct ndr_pull *ndr, int flags, struct svcctl_CreateServiceA *r)
4418
uint32_t _ptr_ServiceName;
4419
uint32_t _ptr_DisplayName;
4420
uint32_t _ptr_binary_path;
4421
uint32_t _ptr_LoadOrderGroupKey;
4422
uint32_t _ptr_TagId;
4423
uint32_t _ptr_dependencies;
4424
uint32_t _ptr_service_start_name;
4425
uint32_t _ptr_password;
4426
TALLOC_CTX *_mem_save_handle_0;
4427
TALLOC_CTX *_mem_save_ServiceName_0;
4428
TALLOC_CTX *_mem_save_DisplayName_0;
4429
TALLOC_CTX *_mem_save_binary_path_0;
4430
TALLOC_CTX *_mem_save_LoadOrderGroupKey_0;
4431
TALLOC_CTX *_mem_save_TagId_0;
4432
TALLOC_CTX *_mem_save_dependencies_0;
4433
TALLOC_CTX *_mem_save_service_start_name_0;
4434
TALLOC_CTX *_mem_save_password_0;
4435
if (flags & NDR_IN) {
4436
ZERO_STRUCT(r->out);
4438
if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
4439
NDR_PULL_ALLOC(ndr, r->in.handle);
4441
_mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
4442
NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
4443
NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
4444
NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
4445
NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_ServiceName));
4446
if (_ptr_ServiceName) {
4447
NDR_PULL_ALLOC(ndr, r->in.ServiceName);
4449
r->in.ServiceName = NULL;
4451
if (r->in.ServiceName) {
4452
_mem_save_ServiceName_0 = NDR_PULL_GET_MEM_CTX(ndr);
4453
NDR_PULL_SET_MEM_CTX(ndr, r->in.ServiceName, 0);
4454
NDR_CHECK(ndr_pull_array_size(ndr, &r->in.ServiceName));
4455
NDR_CHECK(ndr_pull_array_length(ndr, &r->in.ServiceName));
4456
if (ndr_get_array_length(ndr, &r->in.ServiceName) > ndr_get_array_size(ndr, &r->in.ServiceName)) {
4457
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));
4459
NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.ServiceName), sizeof(uint16_t)));
4460
NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.ServiceName, ndr_get_array_length(ndr, &r->in.ServiceName), sizeof(uint16_t), CH_UTF16));
4461
NDR_PULL_SET_MEM_CTX(ndr, _mem_save_ServiceName_0, 0);
4463
NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_DisplayName));
4464
if (_ptr_DisplayName) {
4465
NDR_PULL_ALLOC(ndr, r->in.DisplayName);
4467
r->in.DisplayName = NULL;
4469
if (r->in.DisplayName) {
4470
_mem_save_DisplayName_0 = NDR_PULL_GET_MEM_CTX(ndr);
4471
NDR_PULL_SET_MEM_CTX(ndr, r->in.DisplayName, 0);
4472
NDR_CHECK(ndr_pull_array_size(ndr, &r->in.DisplayName));
4473
NDR_CHECK(ndr_pull_array_length(ndr, &r->in.DisplayName));
4474
if (ndr_get_array_length(ndr, &r->in.DisplayName) > ndr_get_array_size(ndr, &r->in.DisplayName)) {
4475
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));
4477
NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.DisplayName), sizeof(uint16_t)));
4478
NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.DisplayName, ndr_get_array_length(ndr, &r->in.DisplayName), sizeof(uint16_t), CH_UTF16));
4479
NDR_PULL_SET_MEM_CTX(ndr, _mem_save_DisplayName_0, 0);
4481
NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.desired_access));
4482
NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.type));
4483
NDR_CHECK(ndr_pull_svcctl_StartType(ndr, NDR_SCALARS, &r->in.start_type));
4484
NDR_CHECK(ndr_pull_svcctl_ErrorControl(ndr, NDR_SCALARS, &r->in.error_control));
4485
NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_binary_path));
4486
if (_ptr_binary_path) {
4487
NDR_PULL_ALLOC(ndr, r->in.binary_path);
4489
r->in.binary_path = NULL;
4491
if (r->in.binary_path) {
4492
_mem_save_binary_path_0 = NDR_PULL_GET_MEM_CTX(ndr);
4493
NDR_PULL_SET_MEM_CTX(ndr, r->in.binary_path, 0);
4494
NDR_CHECK(ndr_pull_array_size(ndr, &r->in.binary_path));
4495
NDR_CHECK(ndr_pull_array_length(ndr, &r->in.binary_path));
4496
if (ndr_get_array_length(ndr, &r->in.binary_path) > ndr_get_array_size(ndr, &r->in.binary_path)) {
4497
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));
4499
NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.binary_path), sizeof(uint16_t)));
4500
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));
4501
NDR_PULL_SET_MEM_CTX(ndr, _mem_save_binary_path_0, 0);
4503
NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_LoadOrderGroupKey));
4504
if (_ptr_LoadOrderGroupKey) {
4505
NDR_PULL_ALLOC(ndr, r->in.LoadOrderGroupKey);
4507
r->in.LoadOrderGroupKey = NULL;
4509
if (r->in.LoadOrderGroupKey) {
4510
_mem_save_LoadOrderGroupKey_0 = NDR_PULL_GET_MEM_CTX(ndr);
4511
NDR_PULL_SET_MEM_CTX(ndr, r->in.LoadOrderGroupKey, 0);
4512
NDR_CHECK(ndr_pull_array_size(ndr, &r->in.LoadOrderGroupKey));
4513
NDR_CHECK(ndr_pull_array_length(ndr, &r->in.LoadOrderGroupKey));
4514
if (ndr_get_array_length(ndr, &r->in.LoadOrderGroupKey) > ndr_get_array_size(ndr, &r->in.LoadOrderGroupKey)) {
4515
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));
4517
NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.LoadOrderGroupKey), sizeof(uint16_t)));
4518
NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.LoadOrderGroupKey, ndr_get_array_length(ndr, &r->in.LoadOrderGroupKey), sizeof(uint16_t), CH_UTF16));
4519
NDR_PULL_SET_MEM_CTX(ndr, _mem_save_LoadOrderGroupKey_0, 0);
4521
NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_dependencies));
4522
if (_ptr_dependencies) {
4523
NDR_PULL_ALLOC(ndr, r->in.dependencies);
4525
r->in.dependencies = NULL;
4527
if (r->in.dependencies) {
4528
_mem_save_dependencies_0 = NDR_PULL_GET_MEM_CTX(ndr);
4529
NDR_PULL_SET_MEM_CTX(ndr, r->in.dependencies, 0);
4530
NDR_CHECK(ndr_pull_array_size(ndr, &r->in.dependencies));
4531
NDR_CHECK(ndr_pull_array_length(ndr, &r->in.dependencies));
4532
if (ndr_get_array_length(ndr, &r->in.dependencies) > ndr_get_array_size(ndr, &r->in.dependencies)) {
4533
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));
4535
NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.dependencies), sizeof(uint16_t)));
4536
NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.dependencies, ndr_get_array_length(ndr, &r->in.dependencies), sizeof(uint16_t), CH_UTF16));
4537
NDR_PULL_SET_MEM_CTX(ndr, _mem_save_dependencies_0, 0);
4539
NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_service_start_name));
4540
if (_ptr_service_start_name) {
4541
NDR_PULL_ALLOC(ndr, r->in.service_start_name);
4543
r->in.service_start_name = NULL;
4545
if (r->in.service_start_name) {
4546
_mem_save_service_start_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
4547
NDR_PULL_SET_MEM_CTX(ndr, r->in.service_start_name, 0);
4548
NDR_CHECK(ndr_pull_array_size(ndr, &r->in.service_start_name));
4549
NDR_CHECK(ndr_pull_array_length(ndr, &r->in.service_start_name));
4550
if (ndr_get_array_length(ndr, &r->in.service_start_name) > ndr_get_array_size(ndr, &r->in.service_start_name)) {
4551
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));
4553
NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.service_start_name), sizeof(uint16_t)));
4554
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));
4555
NDR_PULL_SET_MEM_CTX(ndr, _mem_save_service_start_name_0, 0);
4557
NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_password));
4558
if (_ptr_password) {
4559
NDR_PULL_ALLOC(ndr, r->in.password);
4561
r->in.password = NULL;
4563
if (r->in.password) {
4564
_mem_save_password_0 = NDR_PULL_GET_MEM_CTX(ndr);
4565
NDR_PULL_SET_MEM_CTX(ndr, r->in.password, 0);
4566
NDR_CHECK(ndr_pull_array_size(ndr, &r->in.password));
4567
NDR_CHECK(ndr_pull_array_length(ndr, &r->in.password));
4568
if (ndr_get_array_length(ndr, &r->in.password) > ndr_get_array_size(ndr, &r->in.password)) {
4569
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));
4571
NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.password), sizeof(uint16_t)));
4572
NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.password, ndr_get_array_length(ndr, &r->in.password), sizeof(uint16_t), CH_UTF16));
4573
NDR_PULL_SET_MEM_CTX(ndr, _mem_save_password_0, 0);
4576
if (flags & NDR_OUT) {
4577
NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_TagId));
4579
NDR_PULL_ALLOC(ndr, r->out.TagId);
4581
r->out.TagId = NULL;
4584
_mem_save_TagId_0 = NDR_PULL_GET_MEM_CTX(ndr);
4585
NDR_PULL_SET_MEM_CTX(ndr, r->out.TagId, 0);
4586
NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.TagId));
4587
NDR_PULL_SET_MEM_CTX(ndr, _mem_save_TagId_0, 0);
4589
NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
4591
return NDR_ERR_SUCCESS;
4594
_PUBLIC_ void ndr_print_svcctl_CreateServiceA(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_CreateServiceA *r)
4596
ndr_print_struct(ndr, name, "svcctl_CreateServiceA");
4598
if (flags & NDR_SET_VALUES) {
4599
ndr->flags |= LIBNDR_PRINT_SET_VALUES;
4601
if (flags & NDR_IN) {
4602
ndr_print_struct(ndr, "in", "svcctl_CreateServiceA");
4604
ndr_print_ptr(ndr, "handle", r->in.handle);
4606
ndr_print_policy_handle(ndr, "handle", r->in.handle);
4608
ndr_print_ptr(ndr, "ServiceName", r->in.ServiceName);
4610
if (r->in.ServiceName) {
4611
ndr_print_string(ndr, "ServiceName", r->in.ServiceName);
4614
ndr_print_ptr(ndr, "DisplayName", r->in.DisplayName);
4616
if (r->in.DisplayName) {
4617
ndr_print_string(ndr, "DisplayName", r->in.DisplayName);
4620
ndr_print_uint32(ndr, "desired_access", r->in.desired_access);
4621
ndr_print_uint32(ndr, "type", r->in.type);
4622
ndr_print_svcctl_StartType(ndr, "start_type", r->in.start_type);
4623
ndr_print_svcctl_ErrorControl(ndr, "error_control", r->in.error_control);
4624
ndr_print_ptr(ndr, "binary_path", r->in.binary_path);
4626
if (r->in.binary_path) {
4627
ndr_print_string(ndr, "binary_path", r->in.binary_path);
4630
ndr_print_ptr(ndr, "LoadOrderGroupKey", r->in.LoadOrderGroupKey);
4632
if (r->in.LoadOrderGroupKey) {
4633
ndr_print_string(ndr, "LoadOrderGroupKey", r->in.LoadOrderGroupKey);
4636
ndr_print_ptr(ndr, "dependencies", r->in.dependencies);
4638
if (r->in.dependencies) {
4639
ndr_print_string(ndr, "dependencies", r->in.dependencies);
4642
ndr_print_ptr(ndr, "service_start_name", r->in.service_start_name);
4644
if (r->in.service_start_name) {
4645
ndr_print_string(ndr, "service_start_name", r->in.service_start_name);
4648
ndr_print_ptr(ndr, "password", r->in.password);
4650
if (r->in.password) {
4651
ndr_print_string(ndr, "password", r->in.password);
4656
if (flags & NDR_OUT) {
4657
ndr_print_struct(ndr, "out", "svcctl_CreateServiceA");
4659
ndr_print_ptr(ndr, "TagId", r->out.TagId);
4662
ndr_print_uint32(ndr, "TagId", *r->out.TagId);
4665
ndr_print_WERROR(ndr, "result", r->out.result);
4671
static enum ndr_err_code ndr_push_svcctl_EnumDependentServicesA(struct ndr_push *ndr, int flags, const struct svcctl_EnumDependentServicesA *r)
4673
if (flags & NDR_IN) {
4674
if (r->in.service == NULL) {
4675
return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
4677
NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.service));
4678
NDR_CHECK(ndr_push_svcctl_ServiceState(ndr, NDR_SCALARS, r->in.state));
4679
NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.offered));
4681
if (flags & NDR_OUT) {
4682
NDR_CHECK(ndr_push_unique_ptr(ndr, r->out.service_status));
4683
if (r->out.service_status) {
4684
NDR_CHECK(ndr_push_ENUM_SERVICE_STATUSA(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.service_status));
4686
if (r->out.needed == NULL) {
4687
return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
4689
NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.needed));
4690
if (r->out.services_returned == NULL) {
4691
return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
4693
NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.services_returned));
4694
NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
4696
return NDR_ERR_SUCCESS;
4699
static enum ndr_err_code ndr_pull_svcctl_EnumDependentServicesA(struct ndr_pull *ndr, int flags, struct svcctl_EnumDependentServicesA *r)
4701
uint32_t _ptr_service_status;
4702
TALLOC_CTX *_mem_save_service_0;
4703
TALLOC_CTX *_mem_save_service_status_0;
4704
TALLOC_CTX *_mem_save_needed_0;
4705
TALLOC_CTX *_mem_save_services_returned_0;
4706
if (flags & NDR_IN) {
4707
ZERO_STRUCT(r->out);
4709
if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
4710
NDR_PULL_ALLOC(ndr, r->in.service);
4712
_mem_save_service_0 = NDR_PULL_GET_MEM_CTX(ndr);
4713
NDR_PULL_SET_MEM_CTX(ndr, r->in.service, LIBNDR_FLAG_REF_ALLOC);
4714
NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.service));
4715
NDR_PULL_SET_MEM_CTX(ndr, _mem_save_service_0, LIBNDR_FLAG_REF_ALLOC);
4716
NDR_CHECK(ndr_pull_svcctl_ServiceState(ndr, NDR_SCALARS, &r->in.state));
4717
NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.offered));
4718
NDR_PULL_ALLOC(ndr, r->out.needed);
4719
ZERO_STRUCTP(r->out.needed);
4720
NDR_PULL_ALLOC(ndr, r->out.services_returned);
4721
ZERO_STRUCTP(r->out.services_returned);
4723
if (flags & NDR_OUT) {
4724
NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_service_status));
4725
if (_ptr_service_status) {
4726
NDR_PULL_ALLOC(ndr, r->out.service_status);
4728
r->out.service_status = NULL;
4730
if (r->out.service_status) {
4731
_mem_save_service_status_0 = NDR_PULL_GET_MEM_CTX(ndr);
4732
NDR_PULL_SET_MEM_CTX(ndr, r->out.service_status, 0);
4733
NDR_CHECK(ndr_pull_ENUM_SERVICE_STATUSA(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.service_status));
4734
NDR_PULL_SET_MEM_CTX(ndr, _mem_save_service_status_0, 0);
4736
if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
4737
NDR_PULL_ALLOC(ndr, r->out.needed);
4739
_mem_save_needed_0 = NDR_PULL_GET_MEM_CTX(ndr);
4740
NDR_PULL_SET_MEM_CTX(ndr, r->out.needed, LIBNDR_FLAG_REF_ALLOC);
4741
NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.needed));
4742
NDR_PULL_SET_MEM_CTX(ndr, _mem_save_needed_0, LIBNDR_FLAG_REF_ALLOC);
4743
if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
4744
NDR_PULL_ALLOC(ndr, r->out.services_returned);
4746
_mem_save_services_returned_0 = NDR_PULL_GET_MEM_CTX(ndr);
4747
NDR_PULL_SET_MEM_CTX(ndr, r->out.services_returned, LIBNDR_FLAG_REF_ALLOC);
4748
NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.services_returned));
4749
NDR_PULL_SET_MEM_CTX(ndr, _mem_save_services_returned_0, LIBNDR_FLAG_REF_ALLOC);
4750
NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
4752
return NDR_ERR_SUCCESS;
4755
_PUBLIC_ void ndr_print_svcctl_EnumDependentServicesA(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_EnumDependentServicesA *r)
4757
ndr_print_struct(ndr, name, "svcctl_EnumDependentServicesA");
4759
if (flags & NDR_SET_VALUES) {
4760
ndr->flags |= LIBNDR_PRINT_SET_VALUES;
4762
if (flags & NDR_IN) {
4763
ndr_print_struct(ndr, "in", "svcctl_EnumDependentServicesA");
4765
ndr_print_ptr(ndr, "service", r->in.service);
4767
ndr_print_policy_handle(ndr, "service", r->in.service);
4769
ndr_print_svcctl_ServiceState(ndr, "state", r->in.state);
4770
ndr_print_uint32(ndr, "offered", r->in.offered);
4773
if (flags & NDR_OUT) {
4774
ndr_print_struct(ndr, "out", "svcctl_EnumDependentServicesA");
4776
ndr_print_ptr(ndr, "service_status", r->out.service_status);
4778
if (r->out.service_status) {
4779
ndr_print_ENUM_SERVICE_STATUSA(ndr, "service_status", r->out.service_status);
4782
ndr_print_ptr(ndr, "needed", r->out.needed);
4784
ndr_print_uint32(ndr, "needed", *r->out.needed);
4786
ndr_print_ptr(ndr, "services_returned", r->out.services_returned);
4788
ndr_print_uint32(ndr, "services_returned", *r->out.services_returned);
4790
ndr_print_WERROR(ndr, "result", r->out.result);
4796
static enum ndr_err_code ndr_push_svcctl_EnumServicesStatusA(struct ndr_push *ndr, int flags, const struct svcctl_EnumServicesStatusA *r)
4798
if (flags & NDR_IN) {
4799
if (r->in.handle == NULL) {
4800
return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
4802
NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
4803
NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.type));
4804
NDR_CHECK(ndr_push_svcctl_ServiceState(ndr, NDR_SCALARS, r->in.state));
4805
NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.offered));
4806
NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.resume_handle));
4807
if (r->in.resume_handle) {
4808
NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->in.resume_handle));
4811
if (flags & NDR_OUT) {
4812
NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, r->in.offered));
4813
NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->out.service, r->in.offered));
4814
if (r->out.needed == NULL) {
4815
return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
4817
NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.needed));
4818
if (r->out.services_returned == NULL) {
4819
return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
4821
NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.services_returned));
4822
NDR_CHECK(ndr_push_unique_ptr(ndr, r->out.resume_handle));
4823
if (r->out.resume_handle) {
4824
NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.resume_handle));
4826
NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
4828
return NDR_ERR_SUCCESS;
4831
static enum ndr_err_code ndr_pull_svcctl_EnumServicesStatusA(struct ndr_pull *ndr, int flags, struct svcctl_EnumServicesStatusA *r)
4833
uint32_t _ptr_resume_handle;
4834
TALLOC_CTX *_mem_save_handle_0;
4835
TALLOC_CTX *_mem_save_needed_0;
4836
TALLOC_CTX *_mem_save_services_returned_0;
4837
TALLOC_CTX *_mem_save_resume_handle_0;
4838
if (flags & NDR_IN) {
4839
ZERO_STRUCT(r->out);
4841
if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
4842
NDR_PULL_ALLOC(ndr, r->in.handle);
4844
_mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
4845
NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
4846
NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
4847
NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
4848
NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.type));
4849
NDR_CHECK(ndr_pull_svcctl_ServiceState(ndr, NDR_SCALARS, &r->in.state));
4850
NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.offered));
4851
NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_resume_handle));
4852
if (_ptr_resume_handle) {
4853
NDR_PULL_ALLOC(ndr, r->in.resume_handle);
4855
r->in.resume_handle = NULL;
4857
if (r->in.resume_handle) {
4858
_mem_save_resume_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
4859
NDR_PULL_SET_MEM_CTX(ndr, r->in.resume_handle, 0);
4860
NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->in.resume_handle));
4861
NDR_PULL_SET_MEM_CTX(ndr, _mem_save_resume_handle_0, 0);
4863
NDR_PULL_ALLOC(ndr, r->out.needed);
4864
ZERO_STRUCTP(r->out.needed);
4865
NDR_PULL_ALLOC(ndr, r->out.services_returned);
4866
ZERO_STRUCTP(r->out.services_returned);
4868
if (flags & NDR_OUT) {
4869
NDR_CHECK(ndr_pull_array_size(ndr, &r->out.service));
4870
NDR_PULL_ALLOC_N(ndr, r->out.service, ndr_get_array_size(ndr, &r->out.service));
4871
NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->out.service, ndr_get_array_size(ndr, &r->out.service)));
4872
if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
4873
NDR_PULL_ALLOC(ndr, r->out.needed);
4875
_mem_save_needed_0 = NDR_PULL_GET_MEM_CTX(ndr);
4876
NDR_PULL_SET_MEM_CTX(ndr, r->out.needed, LIBNDR_FLAG_REF_ALLOC);
4877
NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.needed));
4878
NDR_PULL_SET_MEM_CTX(ndr, _mem_save_needed_0, LIBNDR_FLAG_REF_ALLOC);
4879
if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
4880
NDR_PULL_ALLOC(ndr, r->out.services_returned);
4882
_mem_save_services_returned_0 = NDR_PULL_GET_MEM_CTX(ndr);
4883
NDR_PULL_SET_MEM_CTX(ndr, r->out.services_returned, LIBNDR_FLAG_REF_ALLOC);
4884
NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.services_returned));
4885
NDR_PULL_SET_MEM_CTX(ndr, _mem_save_services_returned_0, LIBNDR_FLAG_REF_ALLOC);
4886
NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_resume_handle));
4887
if (_ptr_resume_handle) {
4888
NDR_PULL_ALLOC(ndr, r->out.resume_handle);
4890
r->out.resume_handle = NULL;
4892
if (r->out.resume_handle) {
4893
_mem_save_resume_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
4894
NDR_PULL_SET_MEM_CTX(ndr, r->out.resume_handle, 0);
4895
NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.resume_handle));
4896
NDR_PULL_SET_MEM_CTX(ndr, _mem_save_resume_handle_0, 0);
4898
NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
4899
if (r->out.service) {
4900
NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->out.service, r->in.offered));
4903
return NDR_ERR_SUCCESS;
4906
_PUBLIC_ void ndr_print_svcctl_EnumServicesStatusA(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_EnumServicesStatusA *r)
4908
ndr_print_struct(ndr, name, "svcctl_EnumServicesStatusA");
4910
if (flags & NDR_SET_VALUES) {
4911
ndr->flags |= LIBNDR_PRINT_SET_VALUES;
4913
if (flags & NDR_IN) {
4914
ndr_print_struct(ndr, "in", "svcctl_EnumServicesStatusA");
4916
ndr_print_ptr(ndr, "handle", r->in.handle);
4918
ndr_print_policy_handle(ndr, "handle", r->in.handle);
4920
ndr_print_uint32(ndr, "type", r->in.type);
4921
ndr_print_svcctl_ServiceState(ndr, "state", r->in.state);
4922
ndr_print_uint32(ndr, "offered", r->in.offered);
4923
ndr_print_ptr(ndr, "resume_handle", r->in.resume_handle);
4925
if (r->in.resume_handle) {
4926
ndr_print_uint32(ndr, "resume_handle", *r->in.resume_handle);
4931
if (flags & NDR_OUT) {
4932
ndr_print_struct(ndr, "out", "svcctl_EnumServicesStatusA");
4934
ndr_print_array_uint8(ndr, "service", r->out.service, r->in.offered);
4935
ndr_print_ptr(ndr, "needed", r->out.needed);
4937
ndr_print_uint32(ndr, "needed", *r->out.needed);
4939
ndr_print_ptr(ndr, "services_returned", r->out.services_returned);
4941
ndr_print_uint32(ndr, "services_returned", *r->out.services_returned);
4943
ndr_print_ptr(ndr, "resume_handle", r->out.resume_handle);
4945
if (r->out.resume_handle) {
4946
ndr_print_uint32(ndr, "resume_handle", *r->out.resume_handle);
4949
ndr_print_WERROR(ndr, "result", r->out.result);
4955
static enum ndr_err_code ndr_push_svcctl_OpenSCManagerA(struct ndr_push *ndr, int flags, const struct svcctl_OpenSCManagerA *r)
4957
if (flags & NDR_IN) {
4958
NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.MachineName));
4959
if (r->in.MachineName) {
4960
NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.MachineName, CH_UTF16)));
4961
NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0));
4962
NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.MachineName, CH_UTF16)));
4963
NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.MachineName, ndr_charset_length(r->in.MachineName, CH_UTF16), sizeof(uint16_t), CH_UTF16));
4965
NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.DatabaseName));
4966
if (r->in.DatabaseName) {
4967
NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.DatabaseName, CH_UTF16)));
4968
NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0));
4969
NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.DatabaseName, CH_UTF16)));
4970
NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.DatabaseName, ndr_charset_length(r->in.DatabaseName, CH_UTF16), sizeof(uint16_t), CH_UTF16));
4972
NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.access_mask));
4974
if (flags & NDR_OUT) {
4975
if (r->out.handle == NULL) {
4976
return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
4978
NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->out.handle));
4979
NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
4981
return NDR_ERR_SUCCESS;
4984
static enum ndr_err_code ndr_pull_svcctl_OpenSCManagerA(struct ndr_pull *ndr, int flags, struct svcctl_OpenSCManagerA *r)
4986
uint32_t _ptr_MachineName;
4987
uint32_t _ptr_DatabaseName;
4988
TALLOC_CTX *_mem_save_MachineName_0;
4989
TALLOC_CTX *_mem_save_DatabaseName_0;
4990
TALLOC_CTX *_mem_save_handle_0;
4991
if (flags & NDR_IN) {
4992
ZERO_STRUCT(r->out);
4994
NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_MachineName));
4995
if (_ptr_MachineName) {
4996
NDR_PULL_ALLOC(ndr, r->in.MachineName);
4998
r->in.MachineName = NULL;
5000
if (r->in.MachineName) {
5001
_mem_save_MachineName_0 = NDR_PULL_GET_MEM_CTX(ndr);
5002
NDR_PULL_SET_MEM_CTX(ndr, r->in.MachineName, 0);
5003
NDR_CHECK(ndr_pull_array_size(ndr, &r->in.MachineName));
5004
NDR_CHECK(ndr_pull_array_length(ndr, &r->in.MachineName));
5005
if (ndr_get_array_length(ndr, &r->in.MachineName) > ndr_get_array_size(ndr, &r->in.MachineName)) {
5006
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));
5008
NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.MachineName), sizeof(uint16_t)));
5009
NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.MachineName, ndr_get_array_length(ndr, &r->in.MachineName), sizeof(uint16_t), CH_UTF16));
5010
NDR_PULL_SET_MEM_CTX(ndr, _mem_save_MachineName_0, 0);
5012
NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_DatabaseName));
5013
if (_ptr_DatabaseName) {
5014
NDR_PULL_ALLOC(ndr, r->in.DatabaseName);
5016
r->in.DatabaseName = NULL;
5018
if (r->in.DatabaseName) {
5019
_mem_save_DatabaseName_0 = NDR_PULL_GET_MEM_CTX(ndr);
5020
NDR_PULL_SET_MEM_CTX(ndr, r->in.DatabaseName, 0);
5021
NDR_CHECK(ndr_pull_array_size(ndr, &r->in.DatabaseName));
5022
NDR_CHECK(ndr_pull_array_length(ndr, &r->in.DatabaseName));
5023
if (ndr_get_array_length(ndr, &r->in.DatabaseName) > ndr_get_array_size(ndr, &r->in.DatabaseName)) {
5024
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));
5026
NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.DatabaseName), sizeof(uint16_t)));
5027
NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.DatabaseName, ndr_get_array_length(ndr, &r->in.DatabaseName), sizeof(uint16_t), CH_UTF16));
5028
NDR_PULL_SET_MEM_CTX(ndr, _mem_save_DatabaseName_0, 0);
5030
NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.access_mask));
5031
NDR_PULL_ALLOC(ndr, r->out.handle);
5032
ZERO_STRUCTP(r->out.handle);
5034
if (flags & NDR_OUT) {
5035
if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
5036
NDR_PULL_ALLOC(ndr, r->out.handle);
5038
_mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
5039
NDR_PULL_SET_MEM_CTX(ndr, r->out.handle, LIBNDR_FLAG_REF_ALLOC);
5040
NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->out.handle));
5041
NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
5042
NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
5044
return NDR_ERR_SUCCESS;
5047
_PUBLIC_ void ndr_print_svcctl_OpenSCManagerA(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_OpenSCManagerA *r)
5049
ndr_print_struct(ndr, name, "svcctl_OpenSCManagerA");
5051
if (flags & NDR_SET_VALUES) {
5052
ndr->flags |= LIBNDR_PRINT_SET_VALUES;
5054
if (flags & NDR_IN) {
5055
ndr_print_struct(ndr, "in", "svcctl_OpenSCManagerA");
5057
ndr_print_ptr(ndr, "MachineName", r->in.MachineName);
5059
if (r->in.MachineName) {
5060
ndr_print_string(ndr, "MachineName", r->in.MachineName);
5063
ndr_print_ptr(ndr, "DatabaseName", r->in.DatabaseName);
5065
if (r->in.DatabaseName) {
5066
ndr_print_string(ndr, "DatabaseName", r->in.DatabaseName);
5069
ndr_print_uint32(ndr, "access_mask", r->in.access_mask);
5072
if (flags & NDR_OUT) {
5073
ndr_print_struct(ndr, "out", "svcctl_OpenSCManagerA");
5075
ndr_print_ptr(ndr, "handle", r->out.handle);
5077
ndr_print_policy_handle(ndr, "handle", r->out.handle);
5079
ndr_print_WERROR(ndr, "result", r->out.result);
5085
static enum ndr_err_code ndr_push_svcctl_OpenServiceA(struct ndr_push *ndr, int flags, const struct svcctl_OpenServiceA *r)
5087
if (flags & NDR_IN) {
5088
if (r->in.scmanager_handle == NULL) {
5089
return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
5091
NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.scmanager_handle));
5092
NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.ServiceName));
5093
if (r->in.ServiceName) {
5094
NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.ServiceName, CH_UTF16)));
5095
NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0));
5096
NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.ServiceName, CH_UTF16)));
5097
NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.ServiceName, ndr_charset_length(r->in.ServiceName, CH_UTF16), sizeof(uint16_t), CH_UTF16));
5099
NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.access_mask));
5101
if (flags & NDR_OUT) {
5102
NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
5104
return NDR_ERR_SUCCESS;
5107
static enum ndr_err_code ndr_pull_svcctl_OpenServiceA(struct ndr_pull *ndr, int flags, struct svcctl_OpenServiceA *r)
5109
uint32_t _ptr_ServiceName;
5110
TALLOC_CTX *_mem_save_scmanager_handle_0;
5111
TALLOC_CTX *_mem_save_ServiceName_0;
5112
if (flags & NDR_IN) {
5113
if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
5114
NDR_PULL_ALLOC(ndr, r->in.scmanager_handle);
5116
_mem_save_scmanager_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
5117
NDR_PULL_SET_MEM_CTX(ndr, r->in.scmanager_handle, LIBNDR_FLAG_REF_ALLOC);
5118
NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.scmanager_handle));
5119
NDR_PULL_SET_MEM_CTX(ndr, _mem_save_scmanager_handle_0, LIBNDR_FLAG_REF_ALLOC);
5120
NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_ServiceName));
5121
if (_ptr_ServiceName) {
5122
NDR_PULL_ALLOC(ndr, r->in.ServiceName);
5124
r->in.ServiceName = NULL;
5126
if (r->in.ServiceName) {
5127
_mem_save_ServiceName_0 = NDR_PULL_GET_MEM_CTX(ndr);
5128
NDR_PULL_SET_MEM_CTX(ndr, r->in.ServiceName, 0);
5129
NDR_CHECK(ndr_pull_array_size(ndr, &r->in.ServiceName));
5130
NDR_CHECK(ndr_pull_array_length(ndr, &r->in.ServiceName));
5131
if (ndr_get_array_length(ndr, &r->in.ServiceName) > ndr_get_array_size(ndr, &r->in.ServiceName)) {
5132
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));
5134
NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.ServiceName), sizeof(uint16_t)));
5135
NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.ServiceName, ndr_get_array_length(ndr, &r->in.ServiceName), sizeof(uint16_t), CH_UTF16));
5136
NDR_PULL_SET_MEM_CTX(ndr, _mem_save_ServiceName_0, 0);
5138
NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.access_mask));
5140
if (flags & NDR_OUT) {
5141
NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
5143
return NDR_ERR_SUCCESS;
5146
_PUBLIC_ void ndr_print_svcctl_OpenServiceA(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_OpenServiceA *r)
5148
ndr_print_struct(ndr, name, "svcctl_OpenServiceA");
5150
if (flags & NDR_SET_VALUES) {
5151
ndr->flags |= LIBNDR_PRINT_SET_VALUES;
5153
if (flags & NDR_IN) {
5154
ndr_print_struct(ndr, "in", "svcctl_OpenServiceA");
5156
ndr_print_ptr(ndr, "scmanager_handle", r->in.scmanager_handle);
5158
ndr_print_policy_handle(ndr, "scmanager_handle", r->in.scmanager_handle);
5160
ndr_print_ptr(ndr, "ServiceName", r->in.ServiceName);
5162
if (r->in.ServiceName) {
5163
ndr_print_string(ndr, "ServiceName", r->in.ServiceName);
5166
ndr_print_uint32(ndr, "access_mask", r->in.access_mask);
5169
if (flags & NDR_OUT) {
5170
ndr_print_struct(ndr, "out", "svcctl_OpenServiceA");
5172
ndr_print_WERROR(ndr, "result", r->out.result);
5178
static enum ndr_err_code ndr_push_svcctl_QueryServiceConfigA(struct ndr_push *ndr, int flags, const struct svcctl_QueryServiceConfigA *r)
5180
if (flags & NDR_IN) {
5181
if (r->in.handle == NULL) {
5182
return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
5184
NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
5185
NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.offered));
5187
if (flags & NDR_OUT) {
5188
NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->out.query, r->in.offered));
5189
if (r->out.needed == NULL) {
5190
return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
5192
NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.needed));
5193
NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
5195
return NDR_ERR_SUCCESS;
5198
static enum ndr_err_code ndr_pull_svcctl_QueryServiceConfigA(struct ndr_pull *ndr, int flags, struct svcctl_QueryServiceConfigA *r)
5200
TALLOC_CTX *_mem_save_handle_0;
5201
TALLOC_CTX *_mem_save_needed_0;
5202
if (flags & NDR_IN) {
5203
ZERO_STRUCT(r->out);
5205
if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
5206
NDR_PULL_ALLOC(ndr, r->in.handle);
5208
_mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
5209
NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
5210
NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
5211
NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
5212
NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.offered));
5213
NDR_PULL_ALLOC(ndr, r->out.needed);
5214
ZERO_STRUCTP(r->out.needed);
5216
if (flags & NDR_OUT) {
5217
NDR_PULL_ALLOC_N(ndr, r->out.query, r->in.offered);
5218
NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->out.query, r->in.offered));
5219
if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
5220
NDR_PULL_ALLOC(ndr, r->out.needed);
5222
_mem_save_needed_0 = NDR_PULL_GET_MEM_CTX(ndr);
5223
NDR_PULL_SET_MEM_CTX(ndr, r->out.needed, LIBNDR_FLAG_REF_ALLOC);
5224
NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.needed));
5225
NDR_PULL_SET_MEM_CTX(ndr, _mem_save_needed_0, LIBNDR_FLAG_REF_ALLOC);
5226
NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
5228
return NDR_ERR_SUCCESS;
5231
_PUBLIC_ void ndr_print_svcctl_QueryServiceConfigA(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_QueryServiceConfigA *r)
5233
ndr_print_struct(ndr, name, "svcctl_QueryServiceConfigA");
5235
if (flags & NDR_SET_VALUES) {
5236
ndr->flags |= LIBNDR_PRINT_SET_VALUES;
5238
if (flags & NDR_IN) {
5239
ndr_print_struct(ndr, "in", "svcctl_QueryServiceConfigA");
5241
ndr_print_ptr(ndr, "handle", r->in.handle);
5243
ndr_print_policy_handle(ndr, "handle", r->in.handle);
5245
ndr_print_uint32(ndr, "offered", r->in.offered);
5248
if (flags & NDR_OUT) {
5249
ndr_print_struct(ndr, "out", "svcctl_QueryServiceConfigA");
5251
ndr_print_array_uint8(ndr, "query", r->out.query, r->in.offered);
5252
ndr_print_ptr(ndr, "needed", r->out.needed);
5254
ndr_print_uint32(ndr, "needed", *r->out.needed);
5256
ndr_print_WERROR(ndr, "result", r->out.result);
5262
static enum ndr_err_code ndr_push_svcctl_QueryServiceLockStatusA(struct ndr_push *ndr, int flags, const struct svcctl_QueryServiceLockStatusA *r)
5264
if (flags & NDR_IN) {
5265
if (r->in.handle == NULL) {
5266
return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
5268
NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
5269
NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.offered));
5271
if (flags & NDR_OUT) {
5272
if (r->out.lock_status == NULL) {
5273
return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
5275
NDR_CHECK(ndr_push_SERVICE_LOCK_STATUS(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.lock_status));
5276
if (r->out.needed == NULL) {
5277
return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
5279
NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.needed));
5280
NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
5282
return NDR_ERR_SUCCESS;
5285
static enum ndr_err_code ndr_pull_svcctl_QueryServiceLockStatusA(struct ndr_pull *ndr, int flags, struct svcctl_QueryServiceLockStatusA *r)
5287
TALLOC_CTX *_mem_save_handle_0;
5288
TALLOC_CTX *_mem_save_lock_status_0;
5289
TALLOC_CTX *_mem_save_needed_0;
5290
if (flags & NDR_IN) {
5291
ZERO_STRUCT(r->out);
5293
if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
5294
NDR_PULL_ALLOC(ndr, r->in.handle);
5296
_mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
5297
NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
5298
NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
5299
NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
5300
NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.offered));
5301
NDR_PULL_ALLOC(ndr, r->out.lock_status);
5302
ZERO_STRUCTP(r->out.lock_status);
5303
NDR_PULL_ALLOC(ndr, r->out.needed);
5304
ZERO_STRUCTP(r->out.needed);
5306
if (flags & NDR_OUT) {
5307
if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
5308
NDR_PULL_ALLOC(ndr, r->out.lock_status);
5310
_mem_save_lock_status_0 = NDR_PULL_GET_MEM_CTX(ndr);
5311
NDR_PULL_SET_MEM_CTX(ndr, r->out.lock_status, LIBNDR_FLAG_REF_ALLOC);
5312
NDR_CHECK(ndr_pull_SERVICE_LOCK_STATUS(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.lock_status));
5313
NDR_PULL_SET_MEM_CTX(ndr, _mem_save_lock_status_0, LIBNDR_FLAG_REF_ALLOC);
5314
if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
5315
NDR_PULL_ALLOC(ndr, r->out.needed);
5317
_mem_save_needed_0 = NDR_PULL_GET_MEM_CTX(ndr);
5318
NDR_PULL_SET_MEM_CTX(ndr, r->out.needed, LIBNDR_FLAG_REF_ALLOC);
5319
NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.needed));
5320
NDR_PULL_SET_MEM_CTX(ndr, _mem_save_needed_0, LIBNDR_FLAG_REF_ALLOC);
5321
NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
5323
return NDR_ERR_SUCCESS;
5326
_PUBLIC_ void ndr_print_svcctl_QueryServiceLockStatusA(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_QueryServiceLockStatusA *r)
5328
ndr_print_struct(ndr, name, "svcctl_QueryServiceLockStatusA");
5330
if (flags & NDR_SET_VALUES) {
5331
ndr->flags |= LIBNDR_PRINT_SET_VALUES;
5333
if (flags & NDR_IN) {
5334
ndr_print_struct(ndr, "in", "svcctl_QueryServiceLockStatusA");
5336
ndr_print_ptr(ndr, "handle", r->in.handle);
5338
ndr_print_policy_handle(ndr, "handle", r->in.handle);
5340
ndr_print_uint32(ndr, "offered", r->in.offered);
5343
if (flags & NDR_OUT) {
5344
ndr_print_struct(ndr, "out", "svcctl_QueryServiceLockStatusA");
5346
ndr_print_ptr(ndr, "lock_status", r->out.lock_status);
5348
ndr_print_SERVICE_LOCK_STATUS(ndr, "lock_status", r->out.lock_status);
5350
ndr_print_ptr(ndr, "needed", r->out.needed);
5352
ndr_print_uint32(ndr, "needed", *r->out.needed);
5354
ndr_print_WERROR(ndr, "result", r->out.result);
5360
static enum ndr_err_code ndr_push_svcctl_StartServiceA(struct ndr_push *ndr, int flags, const struct svcctl_StartServiceA *r)
5362
if (flags & NDR_IN) {
5363
if (r->in.handle == NULL) {
5364
return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
5366
NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
5367
NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.NumArgs));
5368
NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.Arguments));
5369
if (r->in.Arguments) {
5370
NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.Arguments, CH_UTF16)));
5371
NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0));
5372
NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.Arguments, CH_UTF16)));
5373
NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.Arguments, ndr_charset_length(r->in.Arguments, CH_UTF16), sizeof(uint16_t), CH_UTF16));
5376
if (flags & NDR_OUT) {
5377
NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
5379
return NDR_ERR_SUCCESS;
5382
static enum ndr_err_code ndr_pull_svcctl_StartServiceA(struct ndr_pull *ndr, int flags, struct svcctl_StartServiceA *r)
5384
uint32_t _ptr_Arguments;
5385
TALLOC_CTX *_mem_save_handle_0;
5386
TALLOC_CTX *_mem_save_Arguments_0;
5387
if (flags & NDR_IN) {
5388
if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
5389
NDR_PULL_ALLOC(ndr, r->in.handle);
5391
_mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
5392
NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
5393
NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
5394
NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
5395
NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.NumArgs));
5396
NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_Arguments));
5397
if (_ptr_Arguments) {
5398
NDR_PULL_ALLOC(ndr, r->in.Arguments);
5400
r->in.Arguments = NULL;
5402
if (r->in.Arguments) {
5403
_mem_save_Arguments_0 = NDR_PULL_GET_MEM_CTX(ndr);
5404
NDR_PULL_SET_MEM_CTX(ndr, r->in.Arguments, 0);
5405
NDR_CHECK(ndr_pull_array_size(ndr, &r->in.Arguments));
5406
NDR_CHECK(ndr_pull_array_length(ndr, &r->in.Arguments));
5407
if (ndr_get_array_length(ndr, &r->in.Arguments) > ndr_get_array_size(ndr, &r->in.Arguments)) {
5408
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));
5410
NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.Arguments), sizeof(uint16_t)));
5411
NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.Arguments, ndr_get_array_length(ndr, &r->in.Arguments), sizeof(uint16_t), CH_UTF16));
5412
NDR_PULL_SET_MEM_CTX(ndr, _mem_save_Arguments_0, 0);
5415
if (flags & NDR_OUT) {
5416
NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
5418
return NDR_ERR_SUCCESS;
5421
_PUBLIC_ void ndr_print_svcctl_StartServiceA(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_StartServiceA *r)
5423
ndr_print_struct(ndr, name, "svcctl_StartServiceA");
5425
if (flags & NDR_SET_VALUES) {
5426
ndr->flags |= LIBNDR_PRINT_SET_VALUES;
5428
if (flags & NDR_IN) {
5429
ndr_print_struct(ndr, "in", "svcctl_StartServiceA");
5431
ndr_print_ptr(ndr, "handle", r->in.handle);
5433
ndr_print_policy_handle(ndr, "handle", r->in.handle);
5435
ndr_print_uint32(ndr, "NumArgs", r->in.NumArgs);
5436
ndr_print_ptr(ndr, "Arguments", r->in.Arguments);
5438
if (r->in.Arguments) {
5439
ndr_print_string(ndr, "Arguments", r->in.Arguments);
5444
if (flags & NDR_OUT) {
5445
ndr_print_struct(ndr, "out", "svcctl_StartServiceA");
5447
ndr_print_WERROR(ndr, "result", r->out.result);
5453
static enum ndr_err_code ndr_push_svcctl_GetServiceDisplayNameA(struct ndr_push *ndr, int flags, const struct svcctl_GetServiceDisplayNameA *r)
5455
if (flags & NDR_IN) {
5456
if (r->in.handle == NULL) {
5457
return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
5459
NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
5460
NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.service_name));
5461
if (r->in.service_name) {
5462
NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.service_name, CH_UTF16)));
5463
NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0));
5464
NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.service_name, CH_UTF16)));
5465
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));
5467
NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.display_name_length));
5468
if (r->in.display_name_length) {
5469
NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->in.display_name_length));
5472
if (flags & NDR_OUT) {
5473
if (r->out.display_name == NULL) {
5474
return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
5476
NDR_CHECK(ndr_push_unique_ptr(ndr, *r->out.display_name));
5477
if (*r->out.display_name) {
5478
NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(*r->out.display_name, CH_UTF16)));
5479
NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0));
5480
NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(*r->out.display_name, CH_UTF16)));
5481
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));
5483
NDR_CHECK(ndr_push_unique_ptr(ndr, r->out.display_name_length));
5484
if (r->out.display_name_length) {
5485
NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.display_name_length));
5487
NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
5489
return NDR_ERR_SUCCESS;
5492
static enum ndr_err_code ndr_pull_svcctl_GetServiceDisplayNameA(struct ndr_pull *ndr, int flags, struct svcctl_GetServiceDisplayNameA *r)
5494
uint32_t _ptr_service_name;
5495
uint32_t _ptr_display_name;
5496
uint32_t _ptr_display_name_length;
5497
TALLOC_CTX *_mem_save_handle_0;
5498
TALLOC_CTX *_mem_save_service_name_0;
5499
TALLOC_CTX *_mem_save_display_name_0;
5500
TALLOC_CTX *_mem_save_display_name_1;
5501
TALLOC_CTX *_mem_save_display_name_length_0;
5502
if (flags & NDR_IN) {
5503
ZERO_STRUCT(r->out);
5505
if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
5506
NDR_PULL_ALLOC(ndr, r->in.handle);
5508
_mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
5509
NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
5510
NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
5511
NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
5512
NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_service_name));
5513
if (_ptr_service_name) {
5514
NDR_PULL_ALLOC(ndr, r->in.service_name);
5516
r->in.service_name = NULL;
5518
if (r->in.service_name) {
5519
_mem_save_service_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
5520
NDR_PULL_SET_MEM_CTX(ndr, r->in.service_name, 0);
5521
NDR_CHECK(ndr_pull_array_size(ndr, &r->in.service_name));
5522
NDR_CHECK(ndr_pull_array_length(ndr, &r->in.service_name));
5523
if (ndr_get_array_length(ndr, &r->in.service_name) > ndr_get_array_size(ndr, &r->in.service_name)) {
5524
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));
5526
NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.service_name), sizeof(uint16_t)));
5527
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));
5528
NDR_PULL_SET_MEM_CTX(ndr, _mem_save_service_name_0, 0);
5530
NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_display_name_length));
5531
if (_ptr_display_name_length) {
5532
NDR_PULL_ALLOC(ndr, r->in.display_name_length);
5534
r->in.display_name_length = NULL;
5536
if (r->in.display_name_length) {
5537
_mem_save_display_name_length_0 = NDR_PULL_GET_MEM_CTX(ndr);
5538
NDR_PULL_SET_MEM_CTX(ndr, r->in.display_name_length, 0);
5539
NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->in.display_name_length));
5540
NDR_PULL_SET_MEM_CTX(ndr, _mem_save_display_name_length_0, 0);
5542
NDR_PULL_ALLOC(ndr, r->out.display_name);
5543
ZERO_STRUCTP(r->out.display_name);
5545
if (flags & NDR_OUT) {
5546
if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
5547
NDR_PULL_ALLOC(ndr, r->out.display_name);
5549
_mem_save_display_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
5550
NDR_PULL_SET_MEM_CTX(ndr, r->out.display_name, LIBNDR_FLAG_REF_ALLOC);
5551
NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_display_name));
5552
if (_ptr_display_name) {
5553
NDR_PULL_ALLOC(ndr, *r->out.display_name);
5555
*r->out.display_name = NULL;
5557
if (*r->out.display_name) {
5558
_mem_save_display_name_1 = NDR_PULL_GET_MEM_CTX(ndr);
5559
NDR_PULL_SET_MEM_CTX(ndr, *r->out.display_name, 0);
5560
NDR_CHECK(ndr_pull_array_size(ndr, r->out.display_name));
5561
NDR_CHECK(ndr_pull_array_length(ndr, r->out.display_name));
5562
if (ndr_get_array_length(ndr, r->out.display_name) > ndr_get_array_size(ndr, r->out.display_name)) {
5563
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));
5565
NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, r->out.display_name), sizeof(uint16_t)));
5566
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));
5567
NDR_PULL_SET_MEM_CTX(ndr, _mem_save_display_name_1, 0);
5569
NDR_PULL_SET_MEM_CTX(ndr, _mem_save_display_name_0, LIBNDR_FLAG_REF_ALLOC);
5570
NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_display_name_length));
5571
if (_ptr_display_name_length) {
5572
NDR_PULL_ALLOC(ndr, r->out.display_name_length);
5574
r->out.display_name_length = NULL;
5576
if (r->out.display_name_length) {
5577
_mem_save_display_name_length_0 = NDR_PULL_GET_MEM_CTX(ndr);
5578
NDR_PULL_SET_MEM_CTX(ndr, r->out.display_name_length, 0);
5579
NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.display_name_length));
5580
NDR_PULL_SET_MEM_CTX(ndr, _mem_save_display_name_length_0, 0);
5582
NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
5584
return NDR_ERR_SUCCESS;
5587
_PUBLIC_ void ndr_print_svcctl_GetServiceDisplayNameA(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_GetServiceDisplayNameA *r)
5589
ndr_print_struct(ndr, name, "svcctl_GetServiceDisplayNameA");
5591
if (flags & NDR_SET_VALUES) {
5592
ndr->flags |= LIBNDR_PRINT_SET_VALUES;
5594
if (flags & NDR_IN) {
5595
ndr_print_struct(ndr, "in", "svcctl_GetServiceDisplayNameA");
5597
ndr_print_ptr(ndr, "handle", r->in.handle);
5599
ndr_print_policy_handle(ndr, "handle", r->in.handle);
5601
ndr_print_ptr(ndr, "service_name", r->in.service_name);
5603
if (r->in.service_name) {
5604
ndr_print_string(ndr, "service_name", r->in.service_name);
5607
ndr_print_ptr(ndr, "display_name_length", r->in.display_name_length);
5609
if (r->in.display_name_length) {
5610
ndr_print_uint32(ndr, "display_name_length", *r->in.display_name_length);
5615
if (flags & NDR_OUT) {
5616
ndr_print_struct(ndr, "out", "svcctl_GetServiceDisplayNameA");
5618
ndr_print_ptr(ndr, "display_name", r->out.display_name);
5620
ndr_print_ptr(ndr, "display_name", *r->out.display_name);
5622
if (*r->out.display_name) {
5623
ndr_print_string(ndr, "display_name", *r->out.display_name);
5627
ndr_print_ptr(ndr, "display_name_length", r->out.display_name_length);
5629
if (r->out.display_name_length) {
5630
ndr_print_uint32(ndr, "display_name_length", *r->out.display_name_length);
5633
ndr_print_WERROR(ndr, "result", r->out.result);
5639
static enum ndr_err_code ndr_push_svcctl_GetServiceKeyNameA(struct ndr_push *ndr, int flags, const struct svcctl_GetServiceKeyNameA *r)
5641
if (flags & NDR_IN) {
5642
if (r->in.handle == NULL) {
5643
return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
5645
NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
5646
NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.service_name));
5647
if (r->in.service_name) {
5648
NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.service_name, CH_UTF16)));
5649
NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0));
5650
NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.service_name, CH_UTF16)));
5651
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));
5653
NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.display_name_length));
5654
if (r->in.display_name_length) {
5655
NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->in.display_name_length));
5658
if (flags & NDR_OUT) {
5659
if (r->out.key_name == NULL) {
5660
return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
5662
NDR_CHECK(ndr_push_unique_ptr(ndr, *r->out.key_name));
5663
if (*r->out.key_name) {
5664
NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(*r->out.key_name, CH_UTF16)));
5665
NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0));
5666
NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(*r->out.key_name, CH_UTF16)));
5667
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));
5669
NDR_CHECK(ndr_push_unique_ptr(ndr, r->out.display_name_length));
5670
if (r->out.display_name_length) {
5671
NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.display_name_length));
5673
NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
5675
return NDR_ERR_SUCCESS;
5678
static enum ndr_err_code ndr_pull_svcctl_GetServiceKeyNameA(struct ndr_pull *ndr, int flags, struct svcctl_GetServiceKeyNameA *r)
5680
uint32_t _ptr_service_name;
5681
uint32_t _ptr_key_name;
5682
uint32_t _ptr_display_name_length;
5683
TALLOC_CTX *_mem_save_handle_0;
5684
TALLOC_CTX *_mem_save_service_name_0;
5685
TALLOC_CTX *_mem_save_key_name_0;
5686
TALLOC_CTX *_mem_save_key_name_1;
5687
TALLOC_CTX *_mem_save_display_name_length_0;
5688
if (flags & NDR_IN) {
5689
ZERO_STRUCT(r->out);
5691
if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
5692
NDR_PULL_ALLOC(ndr, r->in.handle);
5694
_mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
5695
NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
5696
NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
5697
NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
5698
NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_service_name));
5699
if (_ptr_service_name) {
5700
NDR_PULL_ALLOC(ndr, r->in.service_name);
5702
r->in.service_name = NULL;
5704
if (r->in.service_name) {
5705
_mem_save_service_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
5706
NDR_PULL_SET_MEM_CTX(ndr, r->in.service_name, 0);
5707
NDR_CHECK(ndr_pull_array_size(ndr, &r->in.service_name));
5708
NDR_CHECK(ndr_pull_array_length(ndr, &r->in.service_name));
5709
if (ndr_get_array_length(ndr, &r->in.service_name) > ndr_get_array_size(ndr, &r->in.service_name)) {
5710
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));
5712
NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.service_name), sizeof(uint16_t)));
5713
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));
5714
NDR_PULL_SET_MEM_CTX(ndr, _mem_save_service_name_0, 0);
5716
NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_display_name_length));
5717
if (_ptr_display_name_length) {
5718
NDR_PULL_ALLOC(ndr, r->in.display_name_length);
5720
r->in.display_name_length = NULL;
5722
if (r->in.display_name_length) {
5723
_mem_save_display_name_length_0 = NDR_PULL_GET_MEM_CTX(ndr);
5724
NDR_PULL_SET_MEM_CTX(ndr, r->in.display_name_length, 0);
5725
NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->in.display_name_length));
5726
NDR_PULL_SET_MEM_CTX(ndr, _mem_save_display_name_length_0, 0);
5728
NDR_PULL_ALLOC(ndr, r->out.key_name);
5729
ZERO_STRUCTP(r->out.key_name);
5731
if (flags & NDR_OUT) {
5732
if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
5733
NDR_PULL_ALLOC(ndr, r->out.key_name);
5735
_mem_save_key_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
5736
NDR_PULL_SET_MEM_CTX(ndr, r->out.key_name, LIBNDR_FLAG_REF_ALLOC);
5737
NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_key_name));
5738
if (_ptr_key_name) {
5739
NDR_PULL_ALLOC(ndr, *r->out.key_name);
5741
*r->out.key_name = NULL;
5743
if (*r->out.key_name) {
5744
_mem_save_key_name_1 = NDR_PULL_GET_MEM_CTX(ndr);
5745
NDR_PULL_SET_MEM_CTX(ndr, *r->out.key_name, 0);
5746
NDR_CHECK(ndr_pull_array_size(ndr, r->out.key_name));
5747
NDR_CHECK(ndr_pull_array_length(ndr, r->out.key_name));
5748
if (ndr_get_array_length(ndr, r->out.key_name) > ndr_get_array_size(ndr, r->out.key_name)) {
5749
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));
5751
NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, r->out.key_name), sizeof(uint16_t)));
5752
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));
5753
NDR_PULL_SET_MEM_CTX(ndr, _mem_save_key_name_1, 0);
5755
NDR_PULL_SET_MEM_CTX(ndr, _mem_save_key_name_0, LIBNDR_FLAG_REF_ALLOC);
5756
NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_display_name_length));
5757
if (_ptr_display_name_length) {
5758
NDR_PULL_ALLOC(ndr, r->out.display_name_length);
5760
r->out.display_name_length = NULL;
5762
if (r->out.display_name_length) {
5763
_mem_save_display_name_length_0 = NDR_PULL_GET_MEM_CTX(ndr);
5764
NDR_PULL_SET_MEM_CTX(ndr, r->out.display_name_length, 0);
5765
NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.display_name_length));
5766
NDR_PULL_SET_MEM_CTX(ndr, _mem_save_display_name_length_0, 0);
5768
NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
5770
return NDR_ERR_SUCCESS;
5773
_PUBLIC_ void ndr_print_svcctl_GetServiceKeyNameA(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_GetServiceKeyNameA *r)
5775
ndr_print_struct(ndr, name, "svcctl_GetServiceKeyNameA");
5777
if (flags & NDR_SET_VALUES) {
5778
ndr->flags |= LIBNDR_PRINT_SET_VALUES;
5780
if (flags & NDR_IN) {
5781
ndr_print_struct(ndr, "in", "svcctl_GetServiceKeyNameA");
5783
ndr_print_ptr(ndr, "handle", r->in.handle);
5785
ndr_print_policy_handle(ndr, "handle", r->in.handle);
5787
ndr_print_ptr(ndr, "service_name", r->in.service_name);
5789
if (r->in.service_name) {
5790
ndr_print_string(ndr, "service_name", r->in.service_name);
5793
ndr_print_ptr(ndr, "display_name_length", r->in.display_name_length);
5795
if (r->in.display_name_length) {
5796
ndr_print_uint32(ndr, "display_name_length", *r->in.display_name_length);
5801
if (flags & NDR_OUT) {
5802
ndr_print_struct(ndr, "out", "svcctl_GetServiceKeyNameA");
5804
ndr_print_ptr(ndr, "key_name", r->out.key_name);
5806
ndr_print_ptr(ndr, "key_name", *r->out.key_name);
5808
if (*r->out.key_name) {
5809
ndr_print_string(ndr, "key_name", *r->out.key_name);
5813
ndr_print_ptr(ndr, "display_name_length", r->out.display_name_length);
5815
if (r->out.display_name_length) {
5816
ndr_print_uint32(ndr, "display_name_length", *r->out.display_name_length);
5819
ndr_print_WERROR(ndr, "result", r->out.result);
5825
static enum ndr_err_code ndr_push_svcctl_GetCurrentGroupeStateW(struct ndr_push *ndr, int flags, const struct svcctl_GetCurrentGroupeStateW *r)
5827
if (flags & NDR_IN) {
5829
if (flags & NDR_OUT) {
5830
NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
5832
return NDR_ERR_SUCCESS;
5835
static enum ndr_err_code ndr_pull_svcctl_GetCurrentGroupeStateW(struct ndr_pull *ndr, int flags, struct svcctl_GetCurrentGroupeStateW *r)
5837
if (flags & NDR_IN) {
5839
if (flags & NDR_OUT) {
5840
NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
5842
return NDR_ERR_SUCCESS;
5845
_PUBLIC_ void ndr_print_svcctl_GetCurrentGroupeStateW(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_GetCurrentGroupeStateW *r)
5847
ndr_print_struct(ndr, name, "svcctl_GetCurrentGroupeStateW");
5849
if (flags & NDR_SET_VALUES) {
5850
ndr->flags |= LIBNDR_PRINT_SET_VALUES;
5852
if (flags & NDR_IN) {
5853
ndr_print_struct(ndr, "in", "svcctl_GetCurrentGroupeStateW");
5857
if (flags & NDR_OUT) {
5858
ndr_print_struct(ndr, "out", "svcctl_GetCurrentGroupeStateW");
5860
ndr_print_WERROR(ndr, "result", r->out.result);
5866
static enum ndr_err_code ndr_push_svcctl_EnumServiceGroupW(struct ndr_push *ndr, int flags, const struct svcctl_EnumServiceGroupW *r)
5868
if (flags & NDR_IN) {
5870
if (flags & NDR_OUT) {
5871
NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
5873
return NDR_ERR_SUCCESS;
5876
static enum ndr_err_code ndr_pull_svcctl_EnumServiceGroupW(struct ndr_pull *ndr, int flags, struct svcctl_EnumServiceGroupW *r)
5878
if (flags & NDR_IN) {
5880
if (flags & NDR_OUT) {
5881
NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
5883
return NDR_ERR_SUCCESS;
5886
_PUBLIC_ void ndr_print_svcctl_EnumServiceGroupW(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_EnumServiceGroupW *r)
5888
ndr_print_struct(ndr, name, "svcctl_EnumServiceGroupW");
5890
if (flags & NDR_SET_VALUES) {
5891
ndr->flags |= LIBNDR_PRINT_SET_VALUES;
5893
if (flags & NDR_IN) {
5894
ndr_print_struct(ndr, "in", "svcctl_EnumServiceGroupW");
5898
if (flags & NDR_OUT) {
5899
ndr_print_struct(ndr, "out", "svcctl_EnumServiceGroupW");
5901
ndr_print_WERROR(ndr, "result", r->out.result);
5907
static enum ndr_err_code ndr_push_svcctl_ChangeServiceConfig2A(struct ndr_push *ndr, int flags, const struct svcctl_ChangeServiceConfig2A *r)
5909
if (flags & NDR_IN) {
5910
if (r->in.handle == NULL) {
5911
return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
5913
NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
5914
NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.info_level));
5915
NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.info));
5917
NDR_CHECK(ndr_push_uint8(ndr, NDR_SCALARS, *r->in.info));
5920
if (flags & NDR_OUT) {
5921
NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
5923
return NDR_ERR_SUCCESS;
5926
static enum ndr_err_code ndr_pull_svcctl_ChangeServiceConfig2A(struct ndr_pull *ndr, int flags, struct svcctl_ChangeServiceConfig2A *r)
5929
TALLOC_CTX *_mem_save_handle_0;
5930
TALLOC_CTX *_mem_save_info_0;
5931
if (flags & NDR_IN) {
5932
if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
5933
NDR_PULL_ALLOC(ndr, r->in.handle);
5935
_mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
5936
NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
5937
NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
5938
NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
5939
NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.info_level));
5940
NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_info));
5942
NDR_PULL_ALLOC(ndr, r->in.info);
5947
_mem_save_info_0 = NDR_PULL_GET_MEM_CTX(ndr);
5948
NDR_PULL_SET_MEM_CTX(ndr, r->in.info, 0);
5949
NDR_CHECK(ndr_pull_uint8(ndr, NDR_SCALARS, r->in.info));
5950
NDR_PULL_SET_MEM_CTX(ndr, _mem_save_info_0, 0);
5953
if (flags & NDR_OUT) {
5954
NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
5956
return NDR_ERR_SUCCESS;
5959
_PUBLIC_ void ndr_print_svcctl_ChangeServiceConfig2A(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_ChangeServiceConfig2A *r)
5961
ndr_print_struct(ndr, name, "svcctl_ChangeServiceConfig2A");
5963
if (flags & NDR_SET_VALUES) {
5964
ndr->flags |= LIBNDR_PRINT_SET_VALUES;
5966
if (flags & NDR_IN) {
5967
ndr_print_struct(ndr, "in", "svcctl_ChangeServiceConfig2A");
5969
ndr_print_ptr(ndr, "handle", r->in.handle);
5971
ndr_print_policy_handle(ndr, "handle", r->in.handle);
5973
ndr_print_uint32(ndr, "info_level", r->in.info_level);
5974
ndr_print_ptr(ndr, "info", r->in.info);
5977
ndr_print_uint8(ndr, "info", *r->in.info);
5982
if (flags & NDR_OUT) {
5983
ndr_print_struct(ndr, "out", "svcctl_ChangeServiceConfig2A");
5985
ndr_print_WERROR(ndr, "result", r->out.result);
5991
static enum ndr_err_code ndr_push_svcctl_ChangeServiceConfig2W(struct ndr_push *ndr, int flags, const struct svcctl_ChangeServiceConfig2W *r)
5993
if (flags & NDR_IN) {
5994
if (r->in.handle == NULL) {
5995
return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
5997
NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
5998
NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.info_level));
5999
NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.info));
6001
NDR_CHECK(ndr_push_uint8(ndr, NDR_SCALARS, *r->in.info));
6004
if (flags & NDR_OUT) {
6005
NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
6007
return NDR_ERR_SUCCESS;
6010
static enum ndr_err_code ndr_pull_svcctl_ChangeServiceConfig2W(struct ndr_pull *ndr, int flags, struct svcctl_ChangeServiceConfig2W *r)
6013
TALLOC_CTX *_mem_save_handle_0;
6014
TALLOC_CTX *_mem_save_info_0;
6015
if (flags & NDR_IN) {
6016
if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
6017
NDR_PULL_ALLOC(ndr, r->in.handle);
6019
_mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
6020
NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
6021
NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
6022
NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
6023
NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.info_level));
6024
NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_info));
6026
NDR_PULL_ALLOC(ndr, r->in.info);
6031
_mem_save_info_0 = NDR_PULL_GET_MEM_CTX(ndr);
6032
NDR_PULL_SET_MEM_CTX(ndr, r->in.info, 0);
6033
NDR_CHECK(ndr_pull_uint8(ndr, NDR_SCALARS, r->in.info));
6034
NDR_PULL_SET_MEM_CTX(ndr, _mem_save_info_0, 0);
6037
if (flags & NDR_OUT) {
6038
NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
6040
return NDR_ERR_SUCCESS;
6043
_PUBLIC_ void ndr_print_svcctl_ChangeServiceConfig2W(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_ChangeServiceConfig2W *r)
6045
ndr_print_struct(ndr, name, "svcctl_ChangeServiceConfig2W");
6047
if (flags & NDR_SET_VALUES) {
6048
ndr->flags |= LIBNDR_PRINT_SET_VALUES;
6050
if (flags & NDR_IN) {
6051
ndr_print_struct(ndr, "in", "svcctl_ChangeServiceConfig2W");
6053
ndr_print_ptr(ndr, "handle", r->in.handle);
6055
ndr_print_policy_handle(ndr, "handle", r->in.handle);
6057
ndr_print_uint32(ndr, "info_level", r->in.info_level);
6058
ndr_print_ptr(ndr, "info", r->in.info);
6061
ndr_print_uint8(ndr, "info", *r->in.info);
6066
if (flags & NDR_OUT) {
6067
ndr_print_struct(ndr, "out", "svcctl_ChangeServiceConfig2W");
6069
ndr_print_WERROR(ndr, "result", r->out.result);
6075
static enum ndr_err_code ndr_push_svcctl_QueryServiceConfig2A(struct ndr_push *ndr, int flags, const struct svcctl_QueryServiceConfig2A *r)
6077
if (flags & NDR_IN) {
6078
if (r->in.handle == NULL) {
6079
return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
6081
NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
6082
NDR_CHECK(ndr_push_svcctl_ConfigLevel(ndr, NDR_SCALARS, r->in.info_level));
6083
NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.offered));
6085
if (flags & NDR_OUT) {
6086
NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->out.buffer, r->in.offered));
6087
if (r->out.needed == 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.needed));
6091
NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
6093
return NDR_ERR_SUCCESS;
6096
static enum ndr_err_code ndr_pull_svcctl_QueryServiceConfig2A(struct ndr_pull *ndr, int flags, struct svcctl_QueryServiceConfig2A *r)
6098
TALLOC_CTX *_mem_save_handle_0;
6099
TALLOC_CTX *_mem_save_needed_0;
6100
if (flags & NDR_IN) {
6101
ZERO_STRUCT(r->out);
6103
if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
6104
NDR_PULL_ALLOC(ndr, r->in.handle);
6106
_mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
6107
NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
6108
NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
6109
NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
6110
NDR_CHECK(ndr_pull_svcctl_ConfigLevel(ndr, NDR_SCALARS, &r->in.info_level));
6111
NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.offered));
6112
NDR_PULL_ALLOC(ndr, r->out.needed);
6113
ZERO_STRUCTP(r->out.needed);
6115
if (flags & NDR_OUT) {
6116
NDR_PULL_ALLOC_N(ndr, r->out.buffer, r->in.offered);
6117
NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->out.buffer, r->in.offered));
6118
if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
6119
NDR_PULL_ALLOC(ndr, r->out.needed);
6121
_mem_save_needed_0 = NDR_PULL_GET_MEM_CTX(ndr);
6122
NDR_PULL_SET_MEM_CTX(ndr, r->out.needed, LIBNDR_FLAG_REF_ALLOC);
6123
NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.needed));
6124
NDR_PULL_SET_MEM_CTX(ndr, _mem_save_needed_0, LIBNDR_FLAG_REF_ALLOC);
6125
NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
6127
return NDR_ERR_SUCCESS;
6130
_PUBLIC_ void ndr_print_svcctl_QueryServiceConfig2A(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_QueryServiceConfig2A *r)
6132
ndr_print_struct(ndr, name, "svcctl_QueryServiceConfig2A");
6134
if (flags & NDR_SET_VALUES) {
6135
ndr->flags |= LIBNDR_PRINT_SET_VALUES;
6137
if (flags & NDR_IN) {
6138
ndr_print_struct(ndr, "in", "svcctl_QueryServiceConfig2A");
6140
ndr_print_ptr(ndr, "handle", r->in.handle);
6142
ndr_print_policy_handle(ndr, "handle", r->in.handle);
6144
ndr_print_svcctl_ConfigLevel(ndr, "info_level", r->in.info_level);
6145
ndr_print_uint32(ndr, "offered", r->in.offered);
6148
if (flags & NDR_OUT) {
6149
ndr_print_struct(ndr, "out", "svcctl_QueryServiceConfig2A");
6151
ndr_print_array_uint8(ndr, "buffer", r->out.buffer, r->in.offered);
6152
ndr_print_ptr(ndr, "needed", r->out.needed);
6154
ndr_print_uint32(ndr, "needed", *r->out.needed);
6156
ndr_print_WERROR(ndr, "result", r->out.result);
6162
static enum ndr_err_code ndr_push_svcctl_QueryServiceConfig2W(struct ndr_push *ndr, int flags, const struct svcctl_QueryServiceConfig2W *r)
6164
if (flags & NDR_IN) {
6165
if (r->in.handle == NULL) {
6166
return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
6168
NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
6169
NDR_CHECK(ndr_push_svcctl_ConfigLevel(ndr, NDR_SCALARS, r->in.info_level));
6170
NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.offered));
6172
if (flags & NDR_OUT) {
6173
if (r->out.buffer == NULL) {
6174
return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
6176
NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, r->in.offered));
6177
NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->out.buffer, r->in.offered));
6178
if (r->out.needed == NULL) {
6179
return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
6181
NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.needed));
6182
NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
6184
return NDR_ERR_SUCCESS;
6187
static enum ndr_err_code ndr_pull_svcctl_QueryServiceConfig2W(struct ndr_pull *ndr, int flags, struct svcctl_QueryServiceConfig2W *r)
6189
TALLOC_CTX *_mem_save_handle_0;
6190
TALLOC_CTX *_mem_save_needed_0;
6191
if (flags & NDR_IN) {
6192
ZERO_STRUCT(r->out);
6194
if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
6195
NDR_PULL_ALLOC(ndr, r->in.handle);
6197
_mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
6198
NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
6199
NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
6200
NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
6201
NDR_CHECK(ndr_pull_svcctl_ConfigLevel(ndr, NDR_SCALARS, &r->in.info_level));
6202
NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.offered));
6203
if (r->in.offered > 8192) {
6204
return ndr_pull_error(ndr, NDR_ERR_RANGE, "value out of range");
6206
NDR_PULL_ALLOC_N(ndr, r->out.buffer, r->in.offered);
6207
memset(r->out.buffer, 0, (r->in.offered) * sizeof(*r->out.buffer));
6208
NDR_PULL_ALLOC(ndr, r->out.needed);
6209
ZERO_STRUCTP(r->out.needed);
6211
if (flags & NDR_OUT) {
6212
NDR_CHECK(ndr_pull_array_size(ndr, &r->out.buffer));
6213
if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
6214
NDR_PULL_ALLOC_N(ndr, r->out.buffer, ndr_get_array_size(ndr, &r->out.buffer));
6216
NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->out.buffer, ndr_get_array_size(ndr, &r->out.buffer)));
6217
if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
6218
NDR_PULL_ALLOC(ndr, r->out.needed);
6220
_mem_save_needed_0 = NDR_PULL_GET_MEM_CTX(ndr);
6221
NDR_PULL_SET_MEM_CTX(ndr, r->out.needed, LIBNDR_FLAG_REF_ALLOC);
6222
NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.needed));
6223
if (*r->out.needed > 8192) {
6224
return ndr_pull_error(ndr, NDR_ERR_RANGE, "value out of range");
6226
NDR_PULL_SET_MEM_CTX(ndr, _mem_save_needed_0, LIBNDR_FLAG_REF_ALLOC);
6227
NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
6228
if (r->out.buffer) {
6229
NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->out.buffer, r->in.offered));
6232
return NDR_ERR_SUCCESS;
6235
_PUBLIC_ void ndr_print_svcctl_QueryServiceConfig2W(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_QueryServiceConfig2W *r)
6237
ndr_print_struct(ndr, name, "svcctl_QueryServiceConfig2W");
6239
if (flags & NDR_SET_VALUES) {
6240
ndr->flags |= LIBNDR_PRINT_SET_VALUES;
6242
if (flags & NDR_IN) {
6243
ndr_print_struct(ndr, "in", "svcctl_QueryServiceConfig2W");
6245
ndr_print_ptr(ndr, "handle", r->in.handle);
6247
ndr_print_policy_handle(ndr, "handle", r->in.handle);
6249
ndr_print_svcctl_ConfigLevel(ndr, "info_level", r->in.info_level);
6250
ndr_print_uint32(ndr, "offered", r->in.offered);
6253
if (flags & NDR_OUT) {
6254
ndr_print_struct(ndr, "out", "svcctl_QueryServiceConfig2W");
6256
ndr_print_ptr(ndr, "buffer", r->out.buffer);
6258
ndr_print_array_uint8(ndr, "buffer", r->out.buffer, r->in.offered);
6260
ndr_print_ptr(ndr, "needed", r->out.needed);
6262
ndr_print_uint32(ndr, "needed", *r->out.needed);
6264
ndr_print_WERROR(ndr, "result", r->out.result);
6270
static enum ndr_err_code ndr_push_svcctl_QueryServiceStatusEx(struct ndr_push *ndr, int flags, const struct svcctl_QueryServiceStatusEx *r)
6272
if (flags & NDR_IN) {
6273
if (r->in.handle == 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.handle));
6277
NDR_CHECK(ndr_push_svcctl_StatusLevel(ndr, NDR_SCALARS, r->in.info_level));
6278
NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.offered));
6280
if (flags & NDR_OUT) {
6281
if (r->out.buffer == NULL) {
6282
return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
6284
NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, r->in.offered));
6285
NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->out.buffer, r->in.offered));
6286
if (r->out.needed == NULL) {
6287
return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
6289
NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.needed));
6290
NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
6292
return NDR_ERR_SUCCESS;
6295
static enum ndr_err_code ndr_pull_svcctl_QueryServiceStatusEx(struct ndr_pull *ndr, int flags, struct svcctl_QueryServiceStatusEx *r)
6297
TALLOC_CTX *_mem_save_handle_0;
6298
TALLOC_CTX *_mem_save_needed_0;
6299
if (flags & NDR_IN) {
6300
ZERO_STRUCT(r->out);
6302
if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
6303
NDR_PULL_ALLOC(ndr, r->in.handle);
6305
_mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
6306
NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
6307
NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
6308
NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
6309
NDR_CHECK(ndr_pull_svcctl_StatusLevel(ndr, NDR_SCALARS, &r->in.info_level));
6310
NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.offered));
6311
if (r->in.offered > 8192) {
6312
return ndr_pull_error(ndr, NDR_ERR_RANGE, "value out of range");
6314
NDR_PULL_ALLOC_N(ndr, r->out.buffer, r->in.offered);
6315
memset(r->out.buffer, 0, (r->in.offered) * sizeof(*r->out.buffer));
6316
NDR_PULL_ALLOC(ndr, r->out.needed);
6317
ZERO_STRUCTP(r->out.needed);
6319
if (flags & NDR_OUT) {
6320
NDR_CHECK(ndr_pull_array_size(ndr, &r->out.buffer));
6321
if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
6322
NDR_PULL_ALLOC_N(ndr, r->out.buffer, ndr_get_array_size(ndr, &r->out.buffer));
6324
NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->out.buffer, ndr_get_array_size(ndr, &r->out.buffer)));
6325
if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
6326
NDR_PULL_ALLOC(ndr, r->out.needed);
6328
_mem_save_needed_0 = NDR_PULL_GET_MEM_CTX(ndr);
6329
NDR_PULL_SET_MEM_CTX(ndr, r->out.needed, LIBNDR_FLAG_REF_ALLOC);
6330
NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.needed));
6331
if (*r->out.needed > 8192) {
6332
return ndr_pull_error(ndr, NDR_ERR_RANGE, "value out of range");
6334
NDR_PULL_SET_MEM_CTX(ndr, _mem_save_needed_0, LIBNDR_FLAG_REF_ALLOC);
6335
NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
6336
if (r->out.buffer) {
6337
NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->out.buffer, r->in.offered));
6340
return NDR_ERR_SUCCESS;
6343
_PUBLIC_ void ndr_print_svcctl_QueryServiceStatusEx(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_QueryServiceStatusEx *r)
6345
ndr_print_struct(ndr, name, "svcctl_QueryServiceStatusEx");
6347
if (flags & NDR_SET_VALUES) {
6348
ndr->flags |= LIBNDR_PRINT_SET_VALUES;
6350
if (flags & NDR_IN) {
6351
ndr_print_struct(ndr, "in", "svcctl_QueryServiceStatusEx");
6353
ndr_print_ptr(ndr, "handle", r->in.handle);
6355
ndr_print_policy_handle(ndr, "handle", r->in.handle);
6357
ndr_print_svcctl_StatusLevel(ndr, "info_level", r->in.info_level);
6358
ndr_print_uint32(ndr, "offered", r->in.offered);
6361
if (flags & NDR_OUT) {
6362
ndr_print_struct(ndr, "out", "svcctl_QueryServiceStatusEx");
6364
ndr_print_ptr(ndr, "buffer", r->out.buffer);
6366
ndr_print_array_uint8(ndr, "buffer", r->out.buffer, r->in.offered);
6368
ndr_print_ptr(ndr, "needed", r->out.needed);
6370
ndr_print_uint32(ndr, "needed", *r->out.needed);
6372
ndr_print_WERROR(ndr, "result", r->out.result);
6378
static enum ndr_err_code ndr_push_EnumServicesStatusExA(struct ndr_push *ndr, int flags, const struct EnumServicesStatusExA *r)
6380
if (flags & NDR_IN) {
6381
if (r->in.scmanager == NULL) {
6382
return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
6384
NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.scmanager));
6385
NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.info_level));
6386
NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.type));
6387
NDR_CHECK(ndr_push_svcctl_ServiceState(ndr, NDR_SCALARS, r->in.state));
6388
NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.offered));
6389
NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.resume_handle));
6390
if (r->in.resume_handle) {
6391
NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->in.resume_handle));
6394
if (flags & NDR_OUT) {
6395
NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->out.services, r->in.offered));
6396
if (r->out.needed == NULL) {
6397
return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
6399
NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.needed));
6400
if (r->out.service_returned == NULL) {
6401
return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
6403
NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.service_returned));
6404
NDR_CHECK(ndr_push_unique_ptr(ndr, r->out.resume_handle));
6405
if (r->out.resume_handle) {
6406
NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.resume_handle));
6408
if (r->out.group_name == NULL) {
6409
return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
6411
NDR_CHECK(ndr_push_unique_ptr(ndr, *r->out.group_name));
6412
if (*r->out.group_name) {
6413
NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(*r->out.group_name, CH_UTF16)));
6414
NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0));
6415
NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(*r->out.group_name, CH_UTF16)));
6416
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));
6418
NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
6420
return NDR_ERR_SUCCESS;
6423
static enum ndr_err_code ndr_pull_EnumServicesStatusExA(struct ndr_pull *ndr, int flags, struct EnumServicesStatusExA *r)
6425
uint32_t _ptr_resume_handle;
6426
uint32_t _ptr_group_name;
6427
TALLOC_CTX *_mem_save_scmanager_0;
6428
TALLOC_CTX *_mem_save_needed_0;
6429
TALLOC_CTX *_mem_save_service_returned_0;
6430
TALLOC_CTX *_mem_save_resume_handle_0;
6431
TALLOC_CTX *_mem_save_group_name_0;
6432
TALLOC_CTX *_mem_save_group_name_1;
6433
if (flags & NDR_IN) {
6434
ZERO_STRUCT(r->out);
6436
if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
6437
NDR_PULL_ALLOC(ndr, r->in.scmanager);
6439
_mem_save_scmanager_0 = NDR_PULL_GET_MEM_CTX(ndr);
6440
NDR_PULL_SET_MEM_CTX(ndr, r->in.scmanager, LIBNDR_FLAG_REF_ALLOC);
6441
NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.scmanager));
6442
NDR_PULL_SET_MEM_CTX(ndr, _mem_save_scmanager_0, LIBNDR_FLAG_REF_ALLOC);
6443
NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.info_level));
6444
NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.type));
6445
NDR_CHECK(ndr_pull_svcctl_ServiceState(ndr, NDR_SCALARS, &r->in.state));
6446
NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.offered));
6447
NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_resume_handle));
6448
if (_ptr_resume_handle) {
6449
NDR_PULL_ALLOC(ndr, r->in.resume_handle);
6451
r->in.resume_handle = NULL;
6453
if (r->in.resume_handle) {
6454
_mem_save_resume_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
6455
NDR_PULL_SET_MEM_CTX(ndr, r->in.resume_handle, 0);
6456
NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->in.resume_handle));
6457
NDR_PULL_SET_MEM_CTX(ndr, _mem_save_resume_handle_0, 0);
6459
NDR_PULL_ALLOC(ndr, r->out.needed);
6460
ZERO_STRUCTP(r->out.needed);
6461
NDR_PULL_ALLOC(ndr, r->out.service_returned);
6462
ZERO_STRUCTP(r->out.service_returned);
6463
NDR_PULL_ALLOC(ndr, r->out.group_name);
6464
ZERO_STRUCTP(r->out.group_name);
6466
if (flags & NDR_OUT) {
6467
NDR_PULL_ALLOC_N(ndr, r->out.services, r->in.offered);
6468
NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->out.services, r->in.offered));
6469
if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
6470
NDR_PULL_ALLOC(ndr, r->out.needed);
6472
_mem_save_needed_0 = NDR_PULL_GET_MEM_CTX(ndr);
6473
NDR_PULL_SET_MEM_CTX(ndr, r->out.needed, LIBNDR_FLAG_REF_ALLOC);
6474
NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.needed));
6475
NDR_PULL_SET_MEM_CTX(ndr, _mem_save_needed_0, LIBNDR_FLAG_REF_ALLOC);
6476
if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
6477
NDR_PULL_ALLOC(ndr, r->out.service_returned);
6479
_mem_save_service_returned_0 = NDR_PULL_GET_MEM_CTX(ndr);
6480
NDR_PULL_SET_MEM_CTX(ndr, r->out.service_returned, LIBNDR_FLAG_REF_ALLOC);
6481
NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.service_returned));
6482
NDR_PULL_SET_MEM_CTX(ndr, _mem_save_service_returned_0, LIBNDR_FLAG_REF_ALLOC);
6483
NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_resume_handle));
6484
if (_ptr_resume_handle) {
6485
NDR_PULL_ALLOC(ndr, r->out.resume_handle);
6487
r->out.resume_handle = NULL;
6489
if (r->out.resume_handle) {
6490
_mem_save_resume_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
6491
NDR_PULL_SET_MEM_CTX(ndr, r->out.resume_handle, 0);
6492
NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.resume_handle));
6493
NDR_PULL_SET_MEM_CTX(ndr, _mem_save_resume_handle_0, 0);
6495
if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
6496
NDR_PULL_ALLOC(ndr, r->out.group_name);
6498
_mem_save_group_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
6499
NDR_PULL_SET_MEM_CTX(ndr, r->out.group_name, LIBNDR_FLAG_REF_ALLOC);
6500
NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_group_name));
6501
if (_ptr_group_name) {
6502
NDR_PULL_ALLOC(ndr, *r->out.group_name);
6504
*r->out.group_name = NULL;
6506
if (*r->out.group_name) {
6507
_mem_save_group_name_1 = NDR_PULL_GET_MEM_CTX(ndr);
6508
NDR_PULL_SET_MEM_CTX(ndr, *r->out.group_name, 0);
6509
NDR_CHECK(ndr_pull_array_size(ndr, r->out.group_name));
6510
NDR_CHECK(ndr_pull_array_length(ndr, r->out.group_name));
6511
if (ndr_get_array_length(ndr, r->out.group_name) > ndr_get_array_size(ndr, r->out.group_name)) {
6512
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));
6514
NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, r->out.group_name), sizeof(uint16_t)));
6515
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));
6516
NDR_PULL_SET_MEM_CTX(ndr, _mem_save_group_name_1, 0);
6518
NDR_PULL_SET_MEM_CTX(ndr, _mem_save_group_name_0, LIBNDR_FLAG_REF_ALLOC);
6519
NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
6521
return NDR_ERR_SUCCESS;
6524
_PUBLIC_ void ndr_print_EnumServicesStatusExA(struct ndr_print *ndr, const char *name, int flags, const struct EnumServicesStatusExA *r)
6526
ndr_print_struct(ndr, name, "EnumServicesStatusExA");
6528
if (flags & NDR_SET_VALUES) {
6529
ndr->flags |= LIBNDR_PRINT_SET_VALUES;
6531
if (flags & NDR_IN) {
6532
ndr_print_struct(ndr, "in", "EnumServicesStatusExA");
6534
ndr_print_ptr(ndr, "scmanager", r->in.scmanager);
6536
ndr_print_policy_handle(ndr, "scmanager", r->in.scmanager);
6538
ndr_print_uint32(ndr, "info_level", r->in.info_level);
6539
ndr_print_uint32(ndr, "type", r->in.type);
6540
ndr_print_svcctl_ServiceState(ndr, "state", r->in.state);
6541
ndr_print_uint32(ndr, "offered", r->in.offered);
6542
ndr_print_ptr(ndr, "resume_handle", r->in.resume_handle);
6544
if (r->in.resume_handle) {
6545
ndr_print_uint32(ndr, "resume_handle", *r->in.resume_handle);
6550
if (flags & NDR_OUT) {
6551
ndr_print_struct(ndr, "out", "EnumServicesStatusExA");
6553
ndr_print_array_uint8(ndr, "services", r->out.services, r->in.offered);
6554
ndr_print_ptr(ndr, "needed", r->out.needed);
6556
ndr_print_uint32(ndr, "needed", *r->out.needed);
6558
ndr_print_ptr(ndr, "service_returned", r->out.service_returned);
6560
ndr_print_uint32(ndr, "service_returned", *r->out.service_returned);
6562
ndr_print_ptr(ndr, "resume_handle", r->out.resume_handle);
6564
if (r->out.resume_handle) {
6565
ndr_print_uint32(ndr, "resume_handle", *r->out.resume_handle);
6568
ndr_print_ptr(ndr, "group_name", r->out.group_name);
6570
ndr_print_ptr(ndr, "group_name", *r->out.group_name);
6572
if (*r->out.group_name) {
6573
ndr_print_string(ndr, "group_name", *r->out.group_name);
6577
ndr_print_WERROR(ndr, "result", r->out.result);
6583
static enum ndr_err_code ndr_push_EnumServicesStatusExW(struct ndr_push *ndr, int flags, const struct EnumServicesStatusExW *r)
6585
if (flags & NDR_IN) {
6586
if (r->in.scmanager == NULL) {
6587
return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
6589
NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.scmanager));
6590
NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.info_level));
6591
NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.type));
6592
NDR_CHECK(ndr_push_svcctl_ServiceState(ndr, NDR_SCALARS, r->in.state));
6593
NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.offered));
6594
NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.resume_handle));
6595
if (r->in.resume_handle) {
6596
NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->in.resume_handle));
6598
NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.group_name));
6599
if (r->in.group_name) {
6600
NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.group_name, CH_UTF16)));
6601
NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0));
6602
NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.group_name, CH_UTF16)));
6603
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));
6606
if (flags & NDR_OUT) {
6607
if (r->out.services == NULL) {
6608
return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
6610
NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, r->in.offered));
6611
NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->out.services, r->in.offered));
6612
if (r->out.needed == NULL) {
6613
return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
6615
NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.needed));
6616
if (r->out.service_returned == NULL) {
6617
return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
6619
NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.service_returned));
6620
NDR_CHECK(ndr_push_unique_ptr(ndr, r->out.resume_handle));
6621
if (r->out.resume_handle) {
6622
NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.resume_handle));
6624
NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
6626
return NDR_ERR_SUCCESS;
6629
static enum ndr_err_code ndr_pull_EnumServicesStatusExW(struct ndr_pull *ndr, int flags, struct EnumServicesStatusExW *r)
6631
uint32_t _ptr_resume_handle;
6632
uint32_t _ptr_group_name;
6633
TALLOC_CTX *_mem_save_scmanager_0;
6634
TALLOC_CTX *_mem_save_needed_0;
6635
TALLOC_CTX *_mem_save_service_returned_0;
6636
TALLOC_CTX *_mem_save_resume_handle_0;
6637
TALLOC_CTX *_mem_save_group_name_0;
6638
if (flags & NDR_IN) {
6639
ZERO_STRUCT(r->out);
6641
if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
6642
NDR_PULL_ALLOC(ndr, r->in.scmanager);
6644
_mem_save_scmanager_0 = NDR_PULL_GET_MEM_CTX(ndr);
6645
NDR_PULL_SET_MEM_CTX(ndr, r->in.scmanager, LIBNDR_FLAG_REF_ALLOC);
6646
NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.scmanager));
6647
NDR_PULL_SET_MEM_CTX(ndr, _mem_save_scmanager_0, LIBNDR_FLAG_REF_ALLOC);
6648
NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.info_level));
6649
NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.type));
6650
NDR_CHECK(ndr_pull_svcctl_ServiceState(ndr, NDR_SCALARS, &r->in.state));
6651
NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.offered));
6652
if (r->in.offered > 0x40000) {
6653
return ndr_pull_error(ndr, NDR_ERR_RANGE, "value out of range");
6655
NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_resume_handle));
6656
if (_ptr_resume_handle) {
6657
NDR_PULL_ALLOC(ndr, r->in.resume_handle);
6659
r->in.resume_handle = NULL;
6661
if (r->in.resume_handle) {
6662
_mem_save_resume_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
6663
NDR_PULL_SET_MEM_CTX(ndr, r->in.resume_handle, 0);
6664
NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->in.resume_handle));
6665
if (*r->in.resume_handle > 0x40000) {
6666
return ndr_pull_error(ndr, NDR_ERR_RANGE, "value out of range");
6668
NDR_PULL_SET_MEM_CTX(ndr, _mem_save_resume_handle_0, 0);
6670
NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_group_name));
6671
if (_ptr_group_name) {
6672
NDR_PULL_ALLOC(ndr, r->in.group_name);
6674
r->in.group_name = NULL;
6676
if (r->in.group_name) {
6677
_mem_save_group_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
6678
NDR_PULL_SET_MEM_CTX(ndr, r->in.group_name, 0);
6679
NDR_CHECK(ndr_pull_array_size(ndr, &r->in.group_name));
6680
NDR_CHECK(ndr_pull_array_length(ndr, &r->in.group_name));
6681
if (ndr_get_array_length(ndr, &r->in.group_name) > ndr_get_array_size(ndr, &r->in.group_name)) {
6682
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));
6684
NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.group_name), sizeof(uint16_t)));
6685
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));
6686
NDR_PULL_SET_MEM_CTX(ndr, _mem_save_group_name_0, 0);
6688
NDR_PULL_ALLOC_N(ndr, r->out.services, r->in.offered);
6689
memset(r->out.services, 0, (r->in.offered) * sizeof(*r->out.services));
6690
NDR_PULL_ALLOC(ndr, r->out.needed);
6691
ZERO_STRUCTP(r->out.needed);
6692
NDR_PULL_ALLOC(ndr, r->out.service_returned);
6693
ZERO_STRUCTP(r->out.service_returned);
6695
if (flags & NDR_OUT) {
6696
NDR_CHECK(ndr_pull_array_size(ndr, &r->out.services));
6697
if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
6698
NDR_PULL_ALLOC_N(ndr, r->out.services, ndr_get_array_size(ndr, &r->out.services));
6700
NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->out.services, ndr_get_array_size(ndr, &r->out.services)));
6701
if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
6702
NDR_PULL_ALLOC(ndr, r->out.needed);
6704
_mem_save_needed_0 = NDR_PULL_GET_MEM_CTX(ndr);
6705
NDR_PULL_SET_MEM_CTX(ndr, r->out.needed, LIBNDR_FLAG_REF_ALLOC);
6706
NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.needed));
6707
if (*r->out.needed > 0x40000) {
6708
return ndr_pull_error(ndr, NDR_ERR_RANGE, "value out of range");
6710
NDR_PULL_SET_MEM_CTX(ndr, _mem_save_needed_0, LIBNDR_FLAG_REF_ALLOC);
6711
if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
6712
NDR_PULL_ALLOC(ndr, r->out.service_returned);
6714
_mem_save_service_returned_0 = NDR_PULL_GET_MEM_CTX(ndr);
6715
NDR_PULL_SET_MEM_CTX(ndr, r->out.service_returned, LIBNDR_FLAG_REF_ALLOC);
6716
NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.service_returned));
6717
if (*r->out.service_returned > 0x40000) {
6718
return ndr_pull_error(ndr, NDR_ERR_RANGE, "value out of range");
6720
NDR_PULL_SET_MEM_CTX(ndr, _mem_save_service_returned_0, LIBNDR_FLAG_REF_ALLOC);
6721
NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_resume_handle));
6722
if (_ptr_resume_handle) {
6723
NDR_PULL_ALLOC(ndr, r->out.resume_handle);
6725
r->out.resume_handle = NULL;
6727
if (r->out.resume_handle) {
6728
_mem_save_resume_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
6729
NDR_PULL_SET_MEM_CTX(ndr, r->out.resume_handle, 0);
6730
NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.resume_handle));
6731
if (*r->out.resume_handle > 0x40000) {
6732
return ndr_pull_error(ndr, NDR_ERR_RANGE, "value out of range");
6734
NDR_PULL_SET_MEM_CTX(ndr, _mem_save_resume_handle_0, 0);
6736
NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
6737
if (r->out.services) {
6738
NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->out.services, r->in.offered));
6741
return NDR_ERR_SUCCESS;
6744
_PUBLIC_ void ndr_print_EnumServicesStatusExW(struct ndr_print *ndr, const char *name, int flags, const struct EnumServicesStatusExW *r)
6746
ndr_print_struct(ndr, name, "EnumServicesStatusExW");
6748
if (flags & NDR_SET_VALUES) {
6749
ndr->flags |= LIBNDR_PRINT_SET_VALUES;
6751
if (flags & NDR_IN) {
6752
ndr_print_struct(ndr, "in", "EnumServicesStatusExW");
6754
ndr_print_ptr(ndr, "scmanager", r->in.scmanager);
6756
ndr_print_policy_handle(ndr, "scmanager", r->in.scmanager);
6758
ndr_print_uint32(ndr, "info_level", r->in.info_level);
6759
ndr_print_uint32(ndr, "type", r->in.type);
6760
ndr_print_svcctl_ServiceState(ndr, "state", r->in.state);
6761
ndr_print_uint32(ndr, "offered", r->in.offered);
6762
ndr_print_ptr(ndr, "resume_handle", r->in.resume_handle);
6764
if (r->in.resume_handle) {
6765
ndr_print_uint32(ndr, "resume_handle", *r->in.resume_handle);
6768
ndr_print_ptr(ndr, "group_name", r->in.group_name);
6770
if (r->in.group_name) {
6771
ndr_print_string(ndr, "group_name", r->in.group_name);
6776
if (flags & NDR_OUT) {
6777
ndr_print_struct(ndr, "out", "EnumServicesStatusExW");
6779
ndr_print_ptr(ndr, "services", r->out.services);
6781
ndr_print_array_uint8(ndr, "services", r->out.services, r->in.offered);
6783
ndr_print_ptr(ndr, "needed", r->out.needed);
6785
ndr_print_uint32(ndr, "needed", *r->out.needed);
6787
ndr_print_ptr(ndr, "service_returned", r->out.service_returned);
6789
ndr_print_uint32(ndr, "service_returned", *r->out.service_returned);
6791
ndr_print_ptr(ndr, "resume_handle", r->out.resume_handle);
6793
if (r->out.resume_handle) {
6794
ndr_print_uint32(ndr, "resume_handle", *r->out.resume_handle);
6797
ndr_print_WERROR(ndr, "result", r->out.result);
6803
static enum ndr_err_code ndr_push_svcctl_SCSendTSMessage(struct ndr_push *ndr, int flags, const struct svcctl_SCSendTSMessage *r)
6805
if (flags & NDR_IN) {
6807
if (flags & NDR_OUT) {
6808
NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
6810
return NDR_ERR_SUCCESS;
6813
static enum ndr_err_code ndr_pull_svcctl_SCSendTSMessage(struct ndr_pull *ndr, int flags, struct svcctl_SCSendTSMessage *r)
6815
if (flags & NDR_IN) {
6817
if (flags & NDR_OUT) {
6818
NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
6820
return NDR_ERR_SUCCESS;
6823
_PUBLIC_ void ndr_print_svcctl_SCSendTSMessage(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_SCSendTSMessage *r)
6825
ndr_print_struct(ndr, name, "svcctl_SCSendTSMessage");
6827
if (flags & NDR_SET_VALUES) {
6828
ndr->flags |= LIBNDR_PRINT_SET_VALUES;
6830
if (flags & NDR_IN) {
6831
ndr_print_struct(ndr, "in", "svcctl_SCSendTSMessage");
6835
if (flags & NDR_OUT) {
6836
ndr_print_struct(ndr, "out", "svcctl_SCSendTSMessage");
6838
ndr_print_WERROR(ndr, "result", r->out.result);
6844
static const struct ndr_interface_call svcctl_calls[] = {
6846
"svcctl_CloseServiceHandle",
6847
sizeof(struct svcctl_CloseServiceHandle),
6848
(ndr_push_flags_fn_t) ndr_push_svcctl_CloseServiceHandle,
6849
(ndr_pull_flags_fn_t) ndr_pull_svcctl_CloseServiceHandle,
6850
(ndr_print_function_t) ndr_print_svcctl_CloseServiceHandle,
6854
"svcctl_ControlService",
6855
sizeof(struct svcctl_ControlService),
6856
(ndr_push_flags_fn_t) ndr_push_svcctl_ControlService,
6857
(ndr_pull_flags_fn_t) ndr_pull_svcctl_ControlService,
6858
(ndr_print_function_t) ndr_print_svcctl_ControlService,
6862
"svcctl_DeleteService",
6863
sizeof(struct svcctl_DeleteService),
6864
(ndr_push_flags_fn_t) ndr_push_svcctl_DeleteService,
6865
(ndr_pull_flags_fn_t) ndr_pull_svcctl_DeleteService,
6866
(ndr_print_function_t) ndr_print_svcctl_DeleteService,
6870
"svcctl_LockServiceDatabase",
6871
sizeof(struct svcctl_LockServiceDatabase),
6872
(ndr_push_flags_fn_t) ndr_push_svcctl_LockServiceDatabase,
6873
(ndr_pull_flags_fn_t) ndr_pull_svcctl_LockServiceDatabase,
6874
(ndr_print_function_t) ndr_print_svcctl_LockServiceDatabase,
6878
"svcctl_QueryServiceObjectSecurity",
6879
sizeof(struct svcctl_QueryServiceObjectSecurity),
6880
(ndr_push_flags_fn_t) ndr_push_svcctl_QueryServiceObjectSecurity,
6881
(ndr_pull_flags_fn_t) ndr_pull_svcctl_QueryServiceObjectSecurity,
6882
(ndr_print_function_t) ndr_print_svcctl_QueryServiceObjectSecurity,
6886
"svcctl_SetServiceObjectSecurity",
6887
sizeof(struct svcctl_SetServiceObjectSecurity),
6888
(ndr_push_flags_fn_t) ndr_push_svcctl_SetServiceObjectSecurity,
6889
(ndr_pull_flags_fn_t) ndr_pull_svcctl_SetServiceObjectSecurity,
6890
(ndr_print_function_t) ndr_print_svcctl_SetServiceObjectSecurity,
6894
"svcctl_QueryServiceStatus",
6895
sizeof(struct svcctl_QueryServiceStatus),
6896
(ndr_push_flags_fn_t) ndr_push_svcctl_QueryServiceStatus,
6897
(ndr_pull_flags_fn_t) ndr_pull_svcctl_QueryServiceStatus,
6898
(ndr_print_function_t) ndr_print_svcctl_QueryServiceStatus,
6902
"svcctl_SetServiceStatus",
6903
sizeof(struct svcctl_SetServiceStatus),
6904
(ndr_push_flags_fn_t) ndr_push_svcctl_SetServiceStatus,
6905
(ndr_pull_flags_fn_t) ndr_pull_svcctl_SetServiceStatus,
6906
(ndr_print_function_t) ndr_print_svcctl_SetServiceStatus,
6910
"svcctl_UnlockServiceDatabase",
6911
sizeof(struct svcctl_UnlockServiceDatabase),
6912
(ndr_push_flags_fn_t) ndr_push_svcctl_UnlockServiceDatabase,
6913
(ndr_pull_flags_fn_t) ndr_pull_svcctl_UnlockServiceDatabase,
6914
(ndr_print_function_t) ndr_print_svcctl_UnlockServiceDatabase,
6918
"svcctl_NotifyBootConfigStatus",
6919
sizeof(struct svcctl_NotifyBootConfigStatus),
6920
(ndr_push_flags_fn_t) ndr_push_svcctl_NotifyBootConfigStatus,
6921
(ndr_pull_flags_fn_t) ndr_pull_svcctl_NotifyBootConfigStatus,
6922
(ndr_print_function_t) ndr_print_svcctl_NotifyBootConfigStatus,
6926
"svcctl_SCSetServiceBitsW",
6927
sizeof(struct svcctl_SCSetServiceBitsW),
6928
(ndr_push_flags_fn_t) ndr_push_svcctl_SCSetServiceBitsW,
6929
(ndr_pull_flags_fn_t) ndr_pull_svcctl_SCSetServiceBitsW,
6930
(ndr_print_function_t) ndr_print_svcctl_SCSetServiceBitsW,
6934
"svcctl_ChangeServiceConfigW",
6935
sizeof(struct svcctl_ChangeServiceConfigW),
6936
(ndr_push_flags_fn_t) ndr_push_svcctl_ChangeServiceConfigW,
6937
(ndr_pull_flags_fn_t) ndr_pull_svcctl_ChangeServiceConfigW,
6938
(ndr_print_function_t) ndr_print_svcctl_ChangeServiceConfigW,
6942
"svcctl_CreateServiceW",
6943
sizeof(struct svcctl_CreateServiceW),
6944
(ndr_push_flags_fn_t) ndr_push_svcctl_CreateServiceW,
6945
(ndr_pull_flags_fn_t) ndr_pull_svcctl_CreateServiceW,
6946
(ndr_print_function_t) ndr_print_svcctl_CreateServiceW,
6950
"svcctl_EnumDependentServicesW",
6951
sizeof(struct svcctl_EnumDependentServicesW),
6952
(ndr_push_flags_fn_t) ndr_push_svcctl_EnumDependentServicesW,
6953
(ndr_pull_flags_fn_t) ndr_pull_svcctl_EnumDependentServicesW,
6954
(ndr_print_function_t) ndr_print_svcctl_EnumDependentServicesW,
6958
"svcctl_EnumServicesStatusW",
6959
sizeof(struct svcctl_EnumServicesStatusW),
6960
(ndr_push_flags_fn_t) ndr_push_svcctl_EnumServicesStatusW,
6961
(ndr_pull_flags_fn_t) ndr_pull_svcctl_EnumServicesStatusW,
6962
(ndr_print_function_t) ndr_print_svcctl_EnumServicesStatusW,
6966
"svcctl_OpenSCManagerW",
6967
sizeof(struct svcctl_OpenSCManagerW),
6968
(ndr_push_flags_fn_t) ndr_push_svcctl_OpenSCManagerW,
6969
(ndr_pull_flags_fn_t) ndr_pull_svcctl_OpenSCManagerW,
6970
(ndr_print_function_t) ndr_print_svcctl_OpenSCManagerW,
6974
"svcctl_OpenServiceW",
6975
sizeof(struct svcctl_OpenServiceW),
6976
(ndr_push_flags_fn_t) ndr_push_svcctl_OpenServiceW,
6977
(ndr_pull_flags_fn_t) ndr_pull_svcctl_OpenServiceW,
6978
(ndr_print_function_t) ndr_print_svcctl_OpenServiceW,
6982
"svcctl_QueryServiceConfigW",
6983
sizeof(struct svcctl_QueryServiceConfigW),
6984
(ndr_push_flags_fn_t) ndr_push_svcctl_QueryServiceConfigW,
6985
(ndr_pull_flags_fn_t) ndr_pull_svcctl_QueryServiceConfigW,
6986
(ndr_print_function_t) ndr_print_svcctl_QueryServiceConfigW,
6990
"svcctl_QueryServiceLockStatusW",
6991
sizeof(struct svcctl_QueryServiceLockStatusW),
6992
(ndr_push_flags_fn_t) ndr_push_svcctl_QueryServiceLockStatusW,
6993
(ndr_pull_flags_fn_t) ndr_pull_svcctl_QueryServiceLockStatusW,
6994
(ndr_print_function_t) ndr_print_svcctl_QueryServiceLockStatusW,
6998
"svcctl_StartServiceW",
6999
sizeof(struct svcctl_StartServiceW),
7000
(ndr_push_flags_fn_t) ndr_push_svcctl_StartServiceW,
7001
(ndr_pull_flags_fn_t) ndr_pull_svcctl_StartServiceW,
7002
(ndr_print_function_t) ndr_print_svcctl_StartServiceW,
7006
"svcctl_GetServiceDisplayNameW",
7007
sizeof(struct svcctl_GetServiceDisplayNameW),
7008
(ndr_push_flags_fn_t) ndr_push_svcctl_GetServiceDisplayNameW,
7009
(ndr_pull_flags_fn_t) ndr_pull_svcctl_GetServiceDisplayNameW,
7010
(ndr_print_function_t) ndr_print_svcctl_GetServiceDisplayNameW,
7014
"svcctl_GetServiceKeyNameW",
7015
sizeof(struct svcctl_GetServiceKeyNameW),
7016
(ndr_push_flags_fn_t) ndr_push_svcctl_GetServiceKeyNameW,
7017
(ndr_pull_flags_fn_t) ndr_pull_svcctl_GetServiceKeyNameW,
7018
(ndr_print_function_t) ndr_print_svcctl_GetServiceKeyNameW,
7022
"svcctl_SCSetServiceBitsA",
7023
sizeof(struct svcctl_SCSetServiceBitsA),
7024
(ndr_push_flags_fn_t) ndr_push_svcctl_SCSetServiceBitsA,
7025
(ndr_pull_flags_fn_t) ndr_pull_svcctl_SCSetServiceBitsA,
7026
(ndr_print_function_t) ndr_print_svcctl_SCSetServiceBitsA,
7030
"svcctl_ChangeServiceConfigA",
7031
sizeof(struct svcctl_ChangeServiceConfigA),
7032
(ndr_push_flags_fn_t) ndr_push_svcctl_ChangeServiceConfigA,
7033
(ndr_pull_flags_fn_t) ndr_pull_svcctl_ChangeServiceConfigA,
7034
(ndr_print_function_t) ndr_print_svcctl_ChangeServiceConfigA,
7038
"svcctl_CreateServiceA",
7039
sizeof(struct svcctl_CreateServiceA),
7040
(ndr_push_flags_fn_t) ndr_push_svcctl_CreateServiceA,
7041
(ndr_pull_flags_fn_t) ndr_pull_svcctl_CreateServiceA,
7042
(ndr_print_function_t) ndr_print_svcctl_CreateServiceA,
7046
"svcctl_EnumDependentServicesA",
7047
sizeof(struct svcctl_EnumDependentServicesA),
7048
(ndr_push_flags_fn_t) ndr_push_svcctl_EnumDependentServicesA,
7049
(ndr_pull_flags_fn_t) ndr_pull_svcctl_EnumDependentServicesA,
7050
(ndr_print_function_t) ndr_print_svcctl_EnumDependentServicesA,
7054
"svcctl_EnumServicesStatusA",
7055
sizeof(struct svcctl_EnumServicesStatusA),
7056
(ndr_push_flags_fn_t) ndr_push_svcctl_EnumServicesStatusA,
7057
(ndr_pull_flags_fn_t) ndr_pull_svcctl_EnumServicesStatusA,
7058
(ndr_print_function_t) ndr_print_svcctl_EnumServicesStatusA,
7062
"svcctl_OpenSCManagerA",
7063
sizeof(struct svcctl_OpenSCManagerA),
7064
(ndr_push_flags_fn_t) ndr_push_svcctl_OpenSCManagerA,
7065
(ndr_pull_flags_fn_t) ndr_pull_svcctl_OpenSCManagerA,
7066
(ndr_print_function_t) ndr_print_svcctl_OpenSCManagerA,
7070
"svcctl_OpenServiceA",
7071
sizeof(struct svcctl_OpenServiceA),
7072
(ndr_push_flags_fn_t) ndr_push_svcctl_OpenServiceA,
7073
(ndr_pull_flags_fn_t) ndr_pull_svcctl_OpenServiceA,
7074
(ndr_print_function_t) ndr_print_svcctl_OpenServiceA,
7078
"svcctl_QueryServiceConfigA",
7079
sizeof(struct svcctl_QueryServiceConfigA),
7080
(ndr_push_flags_fn_t) ndr_push_svcctl_QueryServiceConfigA,
7081
(ndr_pull_flags_fn_t) ndr_pull_svcctl_QueryServiceConfigA,
7082
(ndr_print_function_t) ndr_print_svcctl_QueryServiceConfigA,
7086
"svcctl_QueryServiceLockStatusA",
7087
sizeof(struct svcctl_QueryServiceLockStatusA),
7088
(ndr_push_flags_fn_t) ndr_push_svcctl_QueryServiceLockStatusA,
7089
(ndr_pull_flags_fn_t) ndr_pull_svcctl_QueryServiceLockStatusA,
7090
(ndr_print_function_t) ndr_print_svcctl_QueryServiceLockStatusA,
7094
"svcctl_StartServiceA",
7095
sizeof(struct svcctl_StartServiceA),
7096
(ndr_push_flags_fn_t) ndr_push_svcctl_StartServiceA,
7097
(ndr_pull_flags_fn_t) ndr_pull_svcctl_StartServiceA,
7098
(ndr_print_function_t) ndr_print_svcctl_StartServiceA,
7102
"svcctl_GetServiceDisplayNameA",
7103
sizeof(struct svcctl_GetServiceDisplayNameA),
7104
(ndr_push_flags_fn_t) ndr_push_svcctl_GetServiceDisplayNameA,
7105
(ndr_pull_flags_fn_t) ndr_pull_svcctl_GetServiceDisplayNameA,
7106
(ndr_print_function_t) ndr_print_svcctl_GetServiceDisplayNameA,
7110
"svcctl_GetServiceKeyNameA",
7111
sizeof(struct svcctl_GetServiceKeyNameA),
7112
(ndr_push_flags_fn_t) ndr_push_svcctl_GetServiceKeyNameA,
7113
(ndr_pull_flags_fn_t) ndr_pull_svcctl_GetServiceKeyNameA,
7114
(ndr_print_function_t) ndr_print_svcctl_GetServiceKeyNameA,
7118
"svcctl_GetCurrentGroupeStateW",
7119
sizeof(struct svcctl_GetCurrentGroupeStateW),
7120
(ndr_push_flags_fn_t) ndr_push_svcctl_GetCurrentGroupeStateW,
7121
(ndr_pull_flags_fn_t) ndr_pull_svcctl_GetCurrentGroupeStateW,
7122
(ndr_print_function_t) ndr_print_svcctl_GetCurrentGroupeStateW,
7126
"svcctl_EnumServiceGroupW",
7127
sizeof(struct svcctl_EnumServiceGroupW),
7128
(ndr_push_flags_fn_t) ndr_push_svcctl_EnumServiceGroupW,
7129
(ndr_pull_flags_fn_t) ndr_pull_svcctl_EnumServiceGroupW,
7130
(ndr_print_function_t) ndr_print_svcctl_EnumServiceGroupW,
7134
"svcctl_ChangeServiceConfig2A",
7135
sizeof(struct svcctl_ChangeServiceConfig2A),
7136
(ndr_push_flags_fn_t) ndr_push_svcctl_ChangeServiceConfig2A,
7137
(ndr_pull_flags_fn_t) ndr_pull_svcctl_ChangeServiceConfig2A,
7138
(ndr_print_function_t) ndr_print_svcctl_ChangeServiceConfig2A,
7142
"svcctl_ChangeServiceConfig2W",
7143
sizeof(struct svcctl_ChangeServiceConfig2W),
7144
(ndr_push_flags_fn_t) ndr_push_svcctl_ChangeServiceConfig2W,
7145
(ndr_pull_flags_fn_t) ndr_pull_svcctl_ChangeServiceConfig2W,
7146
(ndr_print_function_t) ndr_print_svcctl_ChangeServiceConfig2W,
7150
"svcctl_QueryServiceConfig2A",
7151
sizeof(struct svcctl_QueryServiceConfig2A),
7152
(ndr_push_flags_fn_t) ndr_push_svcctl_QueryServiceConfig2A,
7153
(ndr_pull_flags_fn_t) ndr_pull_svcctl_QueryServiceConfig2A,
7154
(ndr_print_function_t) ndr_print_svcctl_QueryServiceConfig2A,
7158
"svcctl_QueryServiceConfig2W",
7159
sizeof(struct svcctl_QueryServiceConfig2W),
7160
(ndr_push_flags_fn_t) ndr_push_svcctl_QueryServiceConfig2W,
7161
(ndr_pull_flags_fn_t) ndr_pull_svcctl_QueryServiceConfig2W,
7162
(ndr_print_function_t) ndr_print_svcctl_QueryServiceConfig2W,
7166
"svcctl_QueryServiceStatusEx",
7167
sizeof(struct svcctl_QueryServiceStatusEx),
7168
(ndr_push_flags_fn_t) ndr_push_svcctl_QueryServiceStatusEx,
7169
(ndr_pull_flags_fn_t) ndr_pull_svcctl_QueryServiceStatusEx,
7170
(ndr_print_function_t) ndr_print_svcctl_QueryServiceStatusEx,
7174
"EnumServicesStatusExA",
7175
sizeof(struct EnumServicesStatusExA),
7176
(ndr_push_flags_fn_t) ndr_push_EnumServicesStatusExA,
7177
(ndr_pull_flags_fn_t) ndr_pull_EnumServicesStatusExA,
7178
(ndr_print_function_t) ndr_print_EnumServicesStatusExA,
7182
"EnumServicesStatusExW",
7183
sizeof(struct EnumServicesStatusExW),
7184
(ndr_push_flags_fn_t) ndr_push_EnumServicesStatusExW,
7185
(ndr_pull_flags_fn_t) ndr_pull_EnumServicesStatusExW,
7186
(ndr_print_function_t) ndr_print_EnumServicesStatusExW,
7190
"svcctl_SCSendTSMessage",
7191
sizeof(struct svcctl_SCSendTSMessage),
7192
(ndr_push_flags_fn_t) ndr_push_svcctl_SCSendTSMessage,
7193
(ndr_pull_flags_fn_t) ndr_pull_svcctl_SCSendTSMessage,
7194
(ndr_print_function_t) ndr_print_svcctl_SCSendTSMessage,
7197
{ NULL, 0, NULL, NULL, NULL, false }
7200
static const char * const svcctl_endpoint_strings[] = {
7201
"ncacn_np:[\\pipe\\svcctl]",
7205
static const struct ndr_interface_string_array svcctl_endpoints = {
7207
.names = svcctl_endpoint_strings
7210
static const char * const svcctl_authservice_strings[] = {
7214
static const struct ndr_interface_string_array svcctl_authservices = {
7216
.names = svcctl_authservice_strings
7220
const struct ndr_interface_table ndr_table_svcctl = {
7223
{0x367abb81,0x9844,0x35f1,{0xad,0x32},{0x98,0xf0,0x38,0x00,0x10,0x03}},
7226
.helpstring = NDR_SVCCTL_HELPSTRING,
7228
.calls = svcctl_calls,
7229
.endpoints = &svcctl_endpoints,
7230
.authservices = &svcctl_authservices