~ubuntu-branches/ubuntu/oneiric/samba/oneiric-security

« back to all changes in this revision

Viewing changes to .pc/CVE-2012-1182-2.patch/librpc/gen_ndr/ndr_svcctl.c

  • Committer: Package Import Robot
  • Author(s): Tyler Hicks
  • Date: 2012-04-12 05:28:44 UTC
  • mfrom: (147.1.1 oneiric-proposed)
  • Revision ID: package-import@ubuntu.com-20120412052844-348q6l4dcb303sdu
Tags: 2:3.5.11~dfsg-1ubuntu2.2
* SECURITY UPDATE: Unauthenticated remote code execution via
  RPC calls (LP: #978458)
  - debian/patches/CVE-2012-1182-1.patch: Fix PIDL compiler to generate code
    that uses the same value for array allocation and array length checks.
    Based on upstream patch.
  - debian/patches/CVE-2012-1182-2.patch: Regenerate PIDL generated files with
    the patched PIDL compiler
  - CVE-2012-1182

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/* parser auto-generated by pidl */
 
2
 
 
3
#include "includes.h"
 
4
#include "../librpc/gen_ndr/ndr_svcctl.h"
 
5
 
 
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)
 
9
{
 
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));
 
16
        }
 
17
        if (ndr_flags & NDR_BUFFERS) {
 
18
                if (r->lock_owner) {
 
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));
 
23
                }
 
24
        }
 
25
        return NDR_ERR_SUCCESS;
 
26
}
 
27
 
 
28
static enum ndr_err_code ndr_pull_SERVICE_LOCK_STATUS(struct ndr_pull *ndr, int ndr_flags, struct SERVICE_LOCK_STATUS *r)
 
29
{
 
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);
 
38
                } else {
 
39
                        r->lock_owner = NULL;
 
40
                }
 
41
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->lock_duration));
 
42
                NDR_CHECK(ndr_pull_trailer_align(ndr, 5));
 
43
        }
 
44
        if (ndr_flags & NDR_BUFFERS) {
 
45
                if (r->lock_owner) {
 
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));
 
52
                        }
 
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);
 
56
                }
 
57
        }
 
58
        return NDR_ERR_SUCCESS;
 
59
}
 
60
 
 
61
_PUBLIC_ void ndr_print_SERVICE_LOCK_STATUS(struct ndr_print *ndr, const char *name, const struct SERVICE_LOCK_STATUS *r)
 
62
{
 
63
        ndr_print_struct(ndr, name, "SERVICE_LOCK_STATUS");
 
64
        ndr->depth++;
 
65
        ndr_print_uint32(ndr, "is_locked", r->is_locked);
 
66
        ndr_print_ptr(ndr, "lock_owner", r->lock_owner);
 
67
        ndr->depth++;
 
68
        if (r->lock_owner) {
 
69
                ndr_print_string(ndr, "lock_owner", r->lock_owner);
 
70
        }
 
71
        ndr->depth--;
 
72
        ndr_print_uint32(ndr, "lock_duration", r->lock_duration);
 
73
        ndr->depth--;
 
74
}
 
75
 
 
76
static enum ndr_err_code ndr_push_svcctl_ServiceStatus(struct ndr_push *ndr, int ndr_flags, enum svcctl_ServiceStatus r)
 
77
{
 
78
        NDR_CHECK(ndr_push_enum_uint32(ndr, NDR_SCALARS, r));
 
79
        return NDR_ERR_SUCCESS;
 
80
}
 
81
 
 
82
static enum ndr_err_code ndr_pull_svcctl_ServiceStatus(struct ndr_pull *ndr, int ndr_flags, enum svcctl_ServiceStatus *r)
 
83
{
 
84
        uint32_t v;
 
85
        NDR_CHECK(ndr_pull_enum_uint32(ndr, NDR_SCALARS, &v));
 
86
        *r = v;
 
87
        return NDR_ERR_SUCCESS;
 
88
}
 
89
 
 
90
_PUBLIC_ void ndr_print_svcctl_ServiceStatus(struct ndr_print *ndr, const char *name, enum svcctl_ServiceStatus r)
 
91
{
 
92
        const char *val = NULL;
 
93
 
 
94
        switch (r) {
 
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;
 
103
        }
 
104
        ndr_print_enum(ndr, name, "ENUM", val, r);
 
105
}
 
106
 
 
107
static enum ndr_err_code ndr_push_svcctl_ControlsAccepted(struct ndr_push *ndr, int ndr_flags, uint32_t r)
 
108
{
 
109
        NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r));
 
110
        return NDR_ERR_SUCCESS;
 
111
}
 
112
 
 
113
static enum ndr_err_code ndr_pull_svcctl_ControlsAccepted(struct ndr_pull *ndr, int ndr_flags, uint32_t *r)
 
114
{
 
115
        uint32_t v;
 
116
        NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &v));
 
117
        *r = v;
 
118
        return NDR_ERR_SUCCESS;
 
119
}
 
120
 
 
121
_PUBLIC_ void ndr_print_svcctl_ControlsAccepted(struct ndr_print *ndr, const char *name, uint32_t r)
 
122
{
 
123
        ndr_print_uint32(ndr, name, r);
 
124
        ndr->depth++;
 
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);
 
132
        ndr->depth--;
 
133
}
 
134
 
 
135
static enum ndr_err_code ndr_push_SERVICE_STATUS(struct ndr_push *ndr, int ndr_flags, const struct SERVICE_STATUS *r)
 
136
{
 
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));
 
147
        }
 
148
        if (ndr_flags & NDR_BUFFERS) {
 
149
        }
 
150
        return NDR_ERR_SUCCESS;
 
151
}
 
152
 
 
153
static enum ndr_err_code ndr_pull_SERVICE_STATUS(struct ndr_pull *ndr, int ndr_flags, struct SERVICE_STATUS *r)
 
154
{
 
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));
 
165
        }
 
166
        if (ndr_flags & NDR_BUFFERS) {
 
167
        }
 
168
        return NDR_ERR_SUCCESS;
 
169
}
 
170
 
 
171
_PUBLIC_ void ndr_print_SERVICE_STATUS(struct ndr_print *ndr, const char *name, const struct SERVICE_STATUS *r)
 
172
{
 
173
        ndr_print_struct(ndr, name, "SERVICE_STATUS");
 
174
        ndr->depth++;
 
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);
 
182
        ndr->depth--;
 
183
}
 
184
 
 
185
_PUBLIC_ enum ndr_err_code ndr_push_SERVICE_STATUS_PROCESS(struct ndr_push *ndr, int ndr_flags, const struct SERVICE_STATUS_PROCESS *r)
 
186
{
 
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));
 
193
        }
 
194
        if (ndr_flags & NDR_BUFFERS) {
 
195
        }
 
196
        return NDR_ERR_SUCCESS;
 
197
}
 
198
 
 
199
_PUBLIC_ enum ndr_err_code ndr_pull_SERVICE_STATUS_PROCESS(struct ndr_pull *ndr, int ndr_flags, struct SERVICE_STATUS_PROCESS *r)
 
200
{
 
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));
 
207
        }
 
208
        if (ndr_flags & NDR_BUFFERS) {
 
209
        }
 
210
        return NDR_ERR_SUCCESS;
 
211
}
 
212
 
 
213
_PUBLIC_ void ndr_print_SERVICE_STATUS_PROCESS(struct ndr_print *ndr, const char *name, const struct SERVICE_STATUS_PROCESS *r)
 
214
{
 
215
        ndr_print_struct(ndr, name, "SERVICE_STATUS_PROCESS");
 
216
        ndr->depth++;
 
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);
 
220
        ndr->depth--;
 
221
}
 
222
 
 
223
_PUBLIC_ enum ndr_err_code ndr_push_ENUM_SERVICE_STATUSW(struct ndr_push *ndr, int ndr_flags, const struct ENUM_SERVICE_STATUSW *r)
 
224
{
 
225
        if (ndr_flags & NDR_SCALARS) {
 
226
                NDR_CHECK(ndr_push_align(ndr, 5));
 
227
                {
 
228
                        uint32_t _flags_save_string = ndr->flags;
 
229
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
 
230
                        NDR_CHECK(ndr_push_relative_ptr1(ndr, r->service_name));
 
231
                        ndr->flags = _flags_save_string;
 
232
                }
 
233
                {
 
234
                        uint32_t _flags_save_string = ndr->flags;
 
235
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
 
236
                        NDR_CHECK(ndr_push_relative_ptr1(ndr, r->display_name));
 
237
                        ndr->flags = _flags_save_string;
 
238
                }
 
239
                NDR_CHECK(ndr_push_SERVICE_STATUS(ndr, NDR_SCALARS, &r->status));
 
240
                NDR_CHECK(ndr_push_trailer_align(ndr, 5));
 
241
        }
 
242
        if (ndr_flags & NDR_BUFFERS) {
 
243
                {
 
244
                        uint32_t _flags_save_string = ndr->flags;
 
245
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
 
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));
 
250
                        }
 
251
                        ndr->flags = _flags_save_string;
 
252
                }
 
253
                {
 
254
                        uint32_t _flags_save_string = ndr->flags;
 
255
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
 
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));
 
260
                        }
 
261
                        ndr->flags = _flags_save_string;
 
262
                }
 
263
        }
 
264
        return NDR_ERR_SUCCESS;
 
265
}
 
266
 
 
267
_PUBLIC_ enum ndr_err_code ndr_pull_ENUM_SERVICE_STATUSW(struct ndr_pull *ndr, int ndr_flags, struct ENUM_SERVICE_STATUSW *r)
 
268
{
 
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));
 
275
                {
 
276
                        uint32_t _flags_save_string = ndr->flags;
 
277
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
 
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));
 
282
                        } else {
 
283
                                r->service_name = NULL;
 
284
                        }
 
285
                        ndr->flags = _flags_save_string;
 
286
                }
 
287
                {
 
288
                        uint32_t _flags_save_string = ndr->flags;
 
289
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
 
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));
 
294
                        } else {
 
295
                                r->display_name = NULL;
 
296
                        }
 
297
                        ndr->flags = _flags_save_string;
 
298
                }
 
299
                NDR_CHECK(ndr_pull_SERVICE_STATUS(ndr, NDR_SCALARS, &r->status));
 
300
                NDR_CHECK(ndr_pull_trailer_align(ndr, 5));
 
301
        }
 
302
        if (ndr_flags & NDR_BUFFERS) {
 
303
                {
 
304
                        uint32_t _flags_save_string = ndr->flags;
 
305
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
 
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;
 
315
                        }
 
316
                        ndr->flags = _flags_save_string;
 
317
                }
 
318
                {
 
319
                        uint32_t _flags_save_string = ndr->flags;
 
320
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
 
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;
 
330
                        }
 
331
                        ndr->flags = _flags_save_string;
 
332
                }
 
333
        }
 
334
        return NDR_ERR_SUCCESS;
 
335
}
 
336
 
 
337
_PUBLIC_ void ndr_print_ENUM_SERVICE_STATUSW(struct ndr_print *ndr, const char *name, const struct ENUM_SERVICE_STATUSW *r)
 
338
{
 
339
        ndr_print_struct(ndr, name, "ENUM_SERVICE_STATUSW");
 
340
        ndr->depth++;
 
341
        ndr_print_ptr(ndr, "service_name", r->service_name);
 
342
        ndr->depth++;
 
343
        if (r->service_name) {
 
344
                ndr_print_string(ndr, "service_name", r->service_name);
 
345
        }
 
346
        ndr->depth--;
 
347
        ndr_print_ptr(ndr, "display_name", r->display_name);
 
348
        ndr->depth++;
 
349
        if (r->display_name) {
 
350
                ndr_print_string(ndr, "display_name", r->display_name);
 
351
        }
 
352
        ndr->depth--;
 
353
        ndr_print_SERVICE_STATUS(ndr, "status", &r->status);
 
354
        ndr->depth--;
 
355
}
 
356
 
 
357
_PUBLIC_ size_t ndr_size_ENUM_SERVICE_STATUSW(const struct ENUM_SERVICE_STATUSW *r, struct smb_iconv_convenience *ic, int flags)
 
358
{
 
359
        return ndr_size_struct(r, flags, (ndr_push_flags_fn_t)ndr_push_ENUM_SERVICE_STATUSW, ic);
 
360
}
 
361
 
 
362
_PUBLIC_ enum ndr_err_code ndr_push_ENUM_SERVICE_STATUSA(struct ndr_push *ndr, int ndr_flags, const struct ENUM_SERVICE_STATUSA *r)
 
363
{
 
364
        if (ndr_flags & NDR_SCALARS) {
 
365
                NDR_CHECK(ndr_push_align(ndr, 5));
 
366
                {
 
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;
 
371
                }
 
372
                {
 
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;
 
377
                }
 
378
                NDR_CHECK(ndr_push_SERVICE_STATUS(ndr, NDR_SCALARS, &r->status));
 
379
                NDR_CHECK(ndr_push_trailer_align(ndr, 5));
 
380
        }
 
381
        if (ndr_flags & NDR_BUFFERS) {
 
382
                {
 
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));
 
389
                        }
 
390
                        ndr->flags = _flags_save_string;
 
391
                }
 
392
                {
 
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));
 
399
                        }
 
400
                        ndr->flags = _flags_save_string;
 
401
                }
 
402
        }
 
403
        return NDR_ERR_SUCCESS;
 
404
}
 
405
 
 
406
_PUBLIC_ enum ndr_err_code ndr_pull_ENUM_SERVICE_STATUSA(struct ndr_pull *ndr, int ndr_flags, struct ENUM_SERVICE_STATUSA *r)
 
407
{
 
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));
 
414
                {
 
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));
 
421
                        } else {
 
422
                                r->service_name = NULL;
 
423
                        }
 
424
                        ndr->flags = _flags_save_string;
 
425
                }
 
426
                {
 
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));
 
433
                        } else {
 
434
                                r->display_name = NULL;
 
435
                        }
 
436
                        ndr->flags = _flags_save_string;
 
437
                }
 
438
                NDR_CHECK(ndr_pull_SERVICE_STATUS(ndr, NDR_SCALARS, &r->status));
 
439
                NDR_CHECK(ndr_pull_trailer_align(ndr, 5));
 
440
        }
 
441
        if (ndr_flags & NDR_BUFFERS) {
 
442
                {
 
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;
 
454
                        }
 
455
                        ndr->flags = _flags_save_string;
 
456
                }
 
457
                {
 
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;
 
469
                        }
 
470
                        ndr->flags = _flags_save_string;
 
471
                }
 
472
        }
 
473
        return NDR_ERR_SUCCESS;
 
474
}
 
475
 
 
476
_PUBLIC_ void ndr_print_ENUM_SERVICE_STATUSA(struct ndr_print *ndr, const char *name, const struct ENUM_SERVICE_STATUSA *r)
 
477
{
 
478
        ndr_print_struct(ndr, name, "ENUM_SERVICE_STATUSA");
 
479
        ndr->depth++;
 
480
        ndr_print_ptr(ndr, "service_name", r->service_name);
 
481
        ndr->depth++;
 
482
        if (r->service_name) {
 
483
                ndr_print_string(ndr, "service_name", r->service_name);
 
484
        }
 
485
        ndr->depth--;
 
486
        ndr_print_ptr(ndr, "display_name", r->display_name);
 
487
        ndr->depth++;
 
488
        if (r->display_name) {
 
489
                ndr_print_string(ndr, "display_name", r->display_name);
 
490
        }
 
491
        ndr->depth--;
 
492
        ndr_print_SERVICE_STATUS(ndr, "status", &r->status);
 
493
        ndr->depth--;
 
494
}
 
495
 
 
496
_PUBLIC_ size_t ndr_size_ENUM_SERVICE_STATUSA(const struct ENUM_SERVICE_STATUSA *r, struct smb_iconv_convenience *ic, int flags)
 
497
{
 
498
        return ndr_size_struct(r, flags, (ndr_push_flags_fn_t)ndr_push_ENUM_SERVICE_STATUSA, ic);
 
499
}
 
500
 
 
501
_PUBLIC_ enum ndr_err_code ndr_push_svcctl_ServerType(struct ndr_push *ndr, int ndr_flags, uint32_t r)
 
502
{
 
503
        NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r));
 
504
        return NDR_ERR_SUCCESS;
 
505
}
 
506
 
 
507
_PUBLIC_ enum ndr_err_code ndr_pull_svcctl_ServerType(struct ndr_pull *ndr, int ndr_flags, uint32_t *r)
 
508
{
 
509
        uint32_t v;
 
510
        NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &v));
 
511
        *r = v;
 
512
        return NDR_ERR_SUCCESS;
 
513
}
 
514
 
 
515
_PUBLIC_ void ndr_print_svcctl_ServerType(struct ndr_print *ndr, const char *name, uint32_t r)
 
516
{
 
517
        ndr_print_uint32(ndr, name, r);
 
518
        ndr->depth++;
 
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);
 
546
        ndr->depth--;
 
547
}
 
548
 
 
549
static enum ndr_err_code ndr_push_SERVICE_CONTROL(struct ndr_push *ndr, int ndr_flags, enum SERVICE_CONTROL r)
 
550
{
 
551
        NDR_CHECK(ndr_push_enum_uint32(ndr, NDR_SCALARS, r));
 
552
        return NDR_ERR_SUCCESS;
 
553
}
 
554
 
 
555
static enum ndr_err_code ndr_pull_SERVICE_CONTROL(struct ndr_pull *ndr, int ndr_flags, enum SERVICE_CONTROL *r)
 
556
{
 
557
        uint32_t v;
 
558
        NDR_CHECK(ndr_pull_enum_uint32(ndr, NDR_SCALARS, &v));
 
559
        *r = v;
 
560
        return NDR_ERR_SUCCESS;
 
561
}
 
562
 
 
563
_PUBLIC_ void ndr_print_SERVICE_CONTROL(struct ndr_print *ndr, const char *name, enum SERVICE_CONTROL r)
 
564
{
 
565
        const char *val = NULL;
 
566
 
 
567
        switch (r) {
 
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;
 
573
        }
 
574
        ndr_print_enum(ndr, name, "ENUM", val, r);
 
575
}
 
576
 
 
577
static enum ndr_err_code ndr_push_svcctl_ErrorControl(struct ndr_push *ndr, int ndr_flags, enum svcctl_ErrorControl r)
 
578
{
 
579
        NDR_CHECK(ndr_push_enum_uint32(ndr, NDR_SCALARS, r));
 
580
        return NDR_ERR_SUCCESS;
 
581
}
 
582
 
 
583
static enum ndr_err_code ndr_pull_svcctl_ErrorControl(struct ndr_pull *ndr, int ndr_flags, enum svcctl_ErrorControl *r)
 
584
{
 
585
        uint32_t v;
 
586
        NDR_CHECK(ndr_pull_enum_uint32(ndr, NDR_SCALARS, &v));
 
587
        *r = v;
 
588
        return NDR_ERR_SUCCESS;
 
589
}
 
590
 
 
591
_PUBLIC_ void ndr_print_svcctl_ErrorControl(struct ndr_print *ndr, const char *name, enum svcctl_ErrorControl r)
 
592
{
 
593
        const char *val = NULL;
 
594
 
 
595
        switch (r) {
 
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;
 
600
        }
 
601
        ndr_print_enum(ndr, name, "ENUM", val, r);
 
602
}
 
603
 
 
604
static enum ndr_err_code ndr_push_svcctl_StartType(struct ndr_push *ndr, int ndr_flags, enum svcctl_StartType r)
 
605
{
 
606
        NDR_CHECK(ndr_push_enum_uint32(ndr, NDR_SCALARS, r));
 
607
        return NDR_ERR_SUCCESS;
 
608
}
 
609
 
 
610
static enum ndr_err_code ndr_pull_svcctl_StartType(struct ndr_pull *ndr, int ndr_flags, enum svcctl_StartType *r)
 
611
{
 
612
        uint32_t v;
 
613
        NDR_CHECK(ndr_pull_enum_uint32(ndr, NDR_SCALARS, &v));
 
614
        *r = v;
 
615
        return NDR_ERR_SUCCESS;
 
616
}
 
617
 
 
618
_PUBLIC_ void ndr_print_svcctl_StartType(struct ndr_print *ndr, const char *name, enum svcctl_StartType r)
 
619
{
 
620
        const char *val = NULL;
 
621
 
 
622
        switch (r) {
 
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;
 
628
        }
 
629
        ndr_print_enum(ndr, name, "ENUM", val, r);
 
630
}
 
631
 
 
632
static enum ndr_err_code ndr_push_svcctl_ServiceState(struct ndr_push *ndr, int ndr_flags, enum svcctl_ServiceState r)
 
633
{
 
634
        NDR_CHECK(ndr_push_enum_uint32(ndr, NDR_SCALARS, r));
 
635
        return NDR_ERR_SUCCESS;
 
636
}
 
637
 
 
638
static enum ndr_err_code ndr_pull_svcctl_ServiceState(struct ndr_pull *ndr, int ndr_flags, enum svcctl_ServiceState *r)
 
639
{
 
640
        uint32_t v;
 
641
        NDR_CHECK(ndr_pull_enum_uint32(ndr, NDR_SCALARS, &v));
 
642
        *r = v;
 
643
        return NDR_ERR_SUCCESS;
 
644
}
 
645
 
 
646
_PUBLIC_ void ndr_print_svcctl_ServiceState(struct ndr_print *ndr, const char *name, enum svcctl_ServiceState r)
 
647
{
 
648
        const char *val = NULL;
 
649
 
 
650
        switch (r) {
 
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;
 
654
        }
 
655
        ndr_print_enum(ndr, name, "ENUM", val, r);
 
656
}
 
657
 
 
658
static enum ndr_err_code ndr_push_svcctl_MgrAccessMask(struct ndr_push *ndr, int ndr_flags, uint32_t r)
 
659
{
 
660
        NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r));
 
661
        return NDR_ERR_SUCCESS;
 
662
}
 
663
 
 
664
static enum ndr_err_code ndr_pull_svcctl_MgrAccessMask(struct ndr_pull *ndr, int ndr_flags, uint32_t *r)
 
665
{
 
666
        uint32_t v;
 
667
        NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &v));
 
668
        *r = v;
 
669
        return NDR_ERR_SUCCESS;
 
670
}
 
671
 
 
672
_PUBLIC_ void ndr_print_svcctl_MgrAccessMask(struct ndr_print *ndr, const char *name, uint32_t r)
 
673
{
 
674
        ndr_print_uint32(ndr, name, r);
 
675
        ndr->depth++;
 
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);
 
682
        ndr->depth--;
 
683
}
 
684
 
 
685
static enum ndr_err_code ndr_push_svcctl_ServiceAccessMask(struct ndr_push *ndr, int ndr_flags, uint32_t r)
 
686
{
 
687
        NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r));
 
688
        return NDR_ERR_SUCCESS;
 
689
}
 
690
 
 
691
static enum ndr_err_code ndr_pull_svcctl_ServiceAccessMask(struct ndr_pull *ndr, int ndr_flags, uint32_t *r)
 
692
{
 
693
        uint32_t v;
 
694
        NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &v));
 
695
        *r = v;
 
696
        return NDR_ERR_SUCCESS;
 
697
}
 
698
 
 
699
_PUBLIC_ void ndr_print_svcctl_ServiceAccessMask(struct ndr_print *ndr, const char *name, uint32_t r)
 
700
{
 
701
        ndr_print_uint32(ndr, name, r);
 
702
        ndr->depth++;
 
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);
 
712
        ndr->depth--;
 
713
}
 
714
 
 
715
_PUBLIC_ enum ndr_err_code ndr_push_QUERY_SERVICE_CONFIG(struct ndr_push *ndr, int ndr_flags, const struct QUERY_SERVICE_CONFIG *r)
 
716
{
 
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));
 
729
        }
 
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));
 
736
                }
 
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));
 
742
                }
 
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));
 
748
                }
 
749
                if (r->startname) {
 
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));
 
754
                }
 
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));
 
760
                }
 
761
        }
 
762
        return NDR_ERR_SUCCESS;
 
763
}
 
764
 
 
765
_PUBLIC_ enum ndr_err_code ndr_pull_QUERY_SERVICE_CONFIG(struct ndr_pull *ndr, int ndr_flags, struct QUERY_SERVICE_CONFIG *r)
 
766
{
 
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);
 
785
                } else {
 
786
                        r->executablepath = NULL;
 
787
                }
 
788
                NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_loadordergroup));
 
789
                if (_ptr_loadordergroup) {
 
790
                        NDR_PULL_ALLOC(ndr, r->loadordergroup);
 
791
                } else {
 
792
                        r->loadordergroup = NULL;
 
793
                }
 
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);
 
798
                } else {
 
799
                        r->dependencies = NULL;
 
800
                }
 
801
                NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_startname));
 
802
                if (_ptr_startname) {
 
803
                        NDR_PULL_ALLOC(ndr, r->startname);
 
804
                } else {
 
805
                        r->startname = NULL;
 
806
                }
 
807
                NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_displayname));
 
808
                if (_ptr_displayname) {
 
809
                        NDR_PULL_ALLOC(ndr, r->displayname);
 
810
                } else {
 
811
                        r->displayname = NULL;
 
812
                }
 
813
                NDR_CHECK(ndr_pull_trailer_align(ndr, 5));
 
814
        }
 
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));
 
823
                        }
 
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);
 
827
                }
 
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));
 
835
                        }
 
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);
 
839
                }
 
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));
 
847
                        }
 
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);
 
851
                }
 
852
                if (r->startname) {
 
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));
 
859
                        }
 
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);
 
863
                }
 
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));
 
871
                        }
 
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);
 
875
                }
 
876
        }
 
877
        return NDR_ERR_SUCCESS;
 
878
}
 
879
 
 
880
_PUBLIC_ void ndr_print_QUERY_SERVICE_CONFIG(struct ndr_print *ndr, const char *name, const struct QUERY_SERVICE_CONFIG *r)
 
881
{
 
882
        ndr_print_struct(ndr, name, "QUERY_SERVICE_CONFIG");
 
883
        ndr->depth++;
 
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);
 
888
        ndr->depth++;
 
889
        if (r->executablepath) {
 
890
                ndr_print_string(ndr, "executablepath", r->executablepath);
 
891
        }
 
892
        ndr->depth--;
 
893
        ndr_print_ptr(ndr, "loadordergroup", r->loadordergroup);
 
894
        ndr->depth++;
 
895
        if (r->loadordergroup) {
 
896
                ndr_print_string(ndr, "loadordergroup", r->loadordergroup);
 
897
        }
 
898
        ndr->depth--;
 
899
        ndr_print_uint32(ndr, "tag_id", r->tag_id);
 
900
        ndr_print_ptr(ndr, "dependencies", r->dependencies);
 
901
        ndr->depth++;
 
902
        if (r->dependencies) {
 
903
                ndr_print_string(ndr, "dependencies", r->dependencies);
 
904
        }
 
905
        ndr->depth--;
 
906
        ndr_print_ptr(ndr, "startname", r->startname);
 
907
        ndr->depth++;
 
908
        if (r->startname) {
 
909
                ndr_print_string(ndr, "startname", r->startname);
 
910
        }
 
911
        ndr->depth--;
 
912
        ndr_print_ptr(ndr, "displayname", r->displayname);
 
913
        ndr->depth++;
 
914
        if (r->displayname) {
 
915
                ndr_print_string(ndr, "displayname", r->displayname);
 
916
        }
 
917
        ndr->depth--;
 
918
        ndr->depth--;
 
919
}
 
920
 
 
921
_PUBLIC_ size_t ndr_size_QUERY_SERVICE_CONFIG(const struct QUERY_SERVICE_CONFIG *r, struct smb_iconv_convenience *ic, int flags)
 
922
{
 
923
        return ndr_size_struct(r, flags, (ndr_push_flags_fn_t)ndr_push_QUERY_SERVICE_CONFIG, ic);
 
924
}
 
925
 
 
926
static enum ndr_err_code ndr_push_svcctl_ArgumentString(struct ndr_push *ndr, int ndr_flags, const struct svcctl_ArgumentString *r)
 
927
{
 
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));
 
932
        }
 
933
        if (ndr_flags & NDR_BUFFERS) {
 
934
                if (r->string) {
 
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));
 
939
                }
 
940
        }
 
941
        return NDR_ERR_SUCCESS;
 
942
}
 
943
 
 
944
static enum ndr_err_code ndr_pull_svcctl_ArgumentString(struct ndr_pull *ndr, int ndr_flags, struct svcctl_ArgumentString *r)
 
945
{
 
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));
 
951
                if (_ptr_string) {
 
952
                        NDR_PULL_ALLOC(ndr, r->string);
 
953
                } else {
 
954
                        r->string = NULL;
 
955
                }
 
956
                NDR_CHECK(ndr_pull_trailer_align(ndr, 5));
 
957
        }
 
958
        if (ndr_flags & NDR_BUFFERS) {
 
959
                if (r->string) {
 
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));
 
966
                        }
 
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);
 
970
                }
 
971
        }
 
972
        return NDR_ERR_SUCCESS;
 
973
}
 
974
 
 
975
_PUBLIC_ void ndr_print_svcctl_ArgumentString(struct ndr_print *ndr, const char *name, const struct svcctl_ArgumentString *r)
 
976
{
 
977
        ndr_print_struct(ndr, name, "svcctl_ArgumentString");
 
978
        ndr->depth++;
 
979
        ndr_print_ptr(ndr, "string", r->string);
 
980
        ndr->depth++;
 
981
        if (r->string) {
 
982
                ndr_print_string(ndr, "string", r->string);
 
983
        }
 
984
        ndr->depth--;
 
985
        ndr->depth--;
 
986
}
 
987
 
 
988
static enum ndr_err_code ndr_push_svcctl_ConfigLevel(struct ndr_push *ndr, int ndr_flags, enum svcctl_ConfigLevel r)
 
989
{
 
990
        NDR_CHECK(ndr_push_enum_uint32(ndr, NDR_SCALARS, r));
 
991
        return NDR_ERR_SUCCESS;
 
992
}
 
993
 
 
994
static enum ndr_err_code ndr_pull_svcctl_ConfigLevel(struct ndr_pull *ndr, int ndr_flags, enum svcctl_ConfigLevel *r)
 
995
{
 
996
        uint32_t v;
 
997
        NDR_CHECK(ndr_pull_enum_uint32(ndr, NDR_SCALARS, &v));
 
998
        *r = v;
 
999
        return NDR_ERR_SUCCESS;
 
1000
}
 
1001
 
 
1002
_PUBLIC_ void ndr_print_svcctl_ConfigLevel(struct ndr_print *ndr, const char *name, enum svcctl_ConfigLevel r)
 
1003
{
 
1004
        const char *val = NULL;
 
1005
 
 
1006
        switch (r) {
 
1007
                case SERVICE_CONFIG_DESCRIPTION: val = "SERVICE_CONFIG_DESCRIPTION"; break;
 
1008
                case SERVICE_CONFIG_FAILURE_ACTIONS: val = "SERVICE_CONFIG_FAILURE_ACTIONS"; break;
 
1009
        }
 
1010
        ndr_print_enum(ndr, name, "ENUM", val, r);
 
1011
}
 
1012
 
 
1013
_PUBLIC_ enum ndr_err_code ndr_push_SERVICE_DESCRIPTION(struct ndr_push *ndr, int ndr_flags, const struct SERVICE_DESCRIPTION *r)
 
1014
{
 
1015
        if (ndr_flags & NDR_SCALARS) {
 
1016
                NDR_CHECK(ndr_push_align(ndr, 5));
 
1017
                {
 
1018
                        uint32_t _flags_save_string = ndr->flags;
 
1019
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
 
1020
                        NDR_CHECK(ndr_push_relative_ptr1(ndr, r->description));
 
1021
                        ndr->flags = _flags_save_string;
 
1022
                }
 
1023
                NDR_CHECK(ndr_push_trailer_align(ndr, 5));
 
1024
        }
 
1025
        if (ndr_flags & NDR_BUFFERS) {
 
1026
                {
 
1027
                        uint32_t _flags_save_string = ndr->flags;
 
1028
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
 
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));
 
1033
                        }
 
1034
                        ndr->flags = _flags_save_string;
 
1035
                }
 
1036
        }
 
1037
        return NDR_ERR_SUCCESS;
 
1038
}
 
1039
 
 
1040
_PUBLIC_ enum ndr_err_code ndr_pull_SERVICE_DESCRIPTION(struct ndr_pull *ndr, int ndr_flags, struct SERVICE_DESCRIPTION *r)
 
1041
{
 
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));
 
1046
                {
 
1047
                        uint32_t _flags_save_string = ndr->flags;
 
1048
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
 
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));
 
1053
                        } else {
 
1054
                                r->description = NULL;
 
1055
                        }
 
1056
                        ndr->flags = _flags_save_string;
 
1057
                }
 
1058
                NDR_CHECK(ndr_pull_trailer_align(ndr, 5));
 
1059
        }
 
1060
        if (ndr_flags & NDR_BUFFERS) {
 
1061
                {
 
1062
                        uint32_t _flags_save_string = ndr->flags;
 
1063
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
 
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;
 
1073
                        }
 
1074
                        ndr->flags = _flags_save_string;
 
1075
                }
 
1076
        }
 
1077
        return NDR_ERR_SUCCESS;
 
1078
}
 
1079
 
 
1080
_PUBLIC_ void ndr_print_SERVICE_DESCRIPTION(struct ndr_print *ndr, const char *name, const struct SERVICE_DESCRIPTION *r)
 
1081
{
 
1082
        ndr_print_struct(ndr, name, "SERVICE_DESCRIPTION");
 
1083
        ndr->depth++;
 
1084
        ndr_print_ptr(ndr, "description", r->description);
 
1085
        ndr->depth++;
 
1086
        if (r->description) {
 
1087
                ndr_print_string(ndr, "description", r->description);
 
1088
        }
 
1089
        ndr->depth--;
 
1090
        ndr->depth--;
 
1091
}
 
1092
 
 
1093
_PUBLIC_ size_t ndr_size_SERVICE_DESCRIPTION(const struct SERVICE_DESCRIPTION *r, struct smb_iconv_convenience *ic, int flags)
 
1094
{
 
1095
        return ndr_size_struct(r, flags, (ndr_push_flags_fn_t)ndr_push_SERVICE_DESCRIPTION, ic);
 
1096
}
 
1097
 
 
1098
static enum ndr_err_code ndr_push_SC_ACTION_TYPE(struct ndr_push *ndr, int ndr_flags, enum SC_ACTION_TYPE r)
 
1099
{
 
1100
        NDR_CHECK(ndr_push_enum_uint32(ndr, NDR_SCALARS, r));
 
1101
        return NDR_ERR_SUCCESS;
 
1102
}
 
1103
 
 
1104
static enum ndr_err_code ndr_pull_SC_ACTION_TYPE(struct ndr_pull *ndr, int ndr_flags, enum SC_ACTION_TYPE *r)
 
1105
{
 
1106
        uint32_t v;
 
1107
        NDR_CHECK(ndr_pull_enum_uint32(ndr, NDR_SCALARS, &v));
 
1108
        *r = v;
 
1109
        return NDR_ERR_SUCCESS;
 
1110
}
 
1111
 
 
1112
_PUBLIC_ void ndr_print_SC_ACTION_TYPE(struct ndr_print *ndr, const char *name, enum SC_ACTION_TYPE r)
 
1113
{
 
1114
        const char *val = NULL;
 
1115
 
 
1116
        switch (r) {
 
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;
 
1121
        }
 
1122
        ndr_print_enum(ndr, name, "ENUM", val, r);
 
1123
}
 
1124
 
 
1125
static enum ndr_err_code ndr_push_SC_ACTION(struct ndr_push *ndr, int ndr_flags, const struct SC_ACTION *r)
 
1126
{
 
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));
 
1132
        }
 
1133
        if (ndr_flags & NDR_BUFFERS) {
 
1134
        }
 
1135
        return NDR_ERR_SUCCESS;
 
1136
}
 
1137
 
 
1138
static enum ndr_err_code ndr_pull_SC_ACTION(struct ndr_pull *ndr, int ndr_flags, struct SC_ACTION *r)
 
1139
{
 
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));
 
1145
        }
 
1146
        if (ndr_flags & NDR_BUFFERS) {
 
1147
        }
 
1148
        return NDR_ERR_SUCCESS;
 
1149
}
 
1150
 
 
1151
_PUBLIC_ void ndr_print_SC_ACTION(struct ndr_print *ndr, const char *name, const struct SC_ACTION *r)
 
1152
{
 
1153
        ndr_print_struct(ndr, name, "SC_ACTION");
 
1154
        ndr->depth++;
 
1155
        ndr_print_SC_ACTION_TYPE(ndr, "type", r->type);
 
1156
        ndr_print_uint32(ndr, "delay", r->delay);
 
1157
        ndr->depth--;
 
1158
}
 
1159
 
 
1160
_PUBLIC_ enum ndr_err_code ndr_push_SERVICE_FAILURE_ACTIONS(struct ndr_push *ndr, int ndr_flags, const struct SERVICE_FAILURE_ACTIONS *r)
 
1161
{
 
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));
 
1166
                {
 
1167
                        uint32_t _flags_save_string = ndr->flags;
 
1168
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
 
1169
                        NDR_CHECK(ndr_push_relative_ptr1(ndr, r->rebootmsg));
 
1170
                        ndr->flags = _flags_save_string;
 
1171
                }
 
1172
                {
 
1173
                        uint32_t _flags_save_string = ndr->flags;
 
1174
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
 
1175
                        NDR_CHECK(ndr_push_relative_ptr1(ndr, r->command));
 
1176
                        ndr->flags = _flags_save_string;
 
1177
                }
 
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));
 
1181
        }
 
1182
        if (ndr_flags & NDR_BUFFERS) {
 
1183
                {
 
1184
                        uint32_t _flags_save_string = ndr->flags;
 
1185
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
 
1186
                        if (r->rebootmsg) {
 
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));
 
1190
                        }
 
1191
                        ndr->flags = _flags_save_string;
 
1192
                }
 
1193
                {
 
1194
                        uint32_t _flags_save_string = ndr->flags;
 
1195
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
 
1196
                        if (r->command) {
 
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));
 
1200
                        }
 
1201
                        ndr->flags = _flags_save_string;
 
1202
                }
 
1203
                if (r->actions) {
 
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]));
 
1208
                        }
 
1209
                        NDR_CHECK(ndr_push_relative_ptr2_end(ndr, r->actions));
 
1210
                }
 
1211
        }
 
1212
        return NDR_ERR_SUCCESS;
 
1213
}
 
1214
 
 
1215
_PUBLIC_ enum ndr_err_code ndr_pull_SERVICE_FAILURE_ACTIONS(struct ndr_pull *ndr, int ndr_flags, struct SERVICE_FAILURE_ACTIONS *r)
 
1216
{
 
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));
 
1228
                {
 
1229
                        uint32_t _flags_save_string = ndr->flags;
 
1230
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
 
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));
 
1235
                        } else {
 
1236
                                r->rebootmsg = NULL;
 
1237
                        }
 
1238
                        ndr->flags = _flags_save_string;
 
1239
                }
 
1240
                {
 
1241
                        uint32_t _flags_save_string = ndr->flags;
 
1242
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
 
1243
                        NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_command));
 
1244
                        if (_ptr_command) {
 
1245
                                NDR_PULL_ALLOC(ndr, r->command);
 
1246
                                NDR_CHECK(ndr_pull_relative_ptr1(ndr, r->command, _ptr_command));
 
1247
                        } else {
 
1248
                                r->command = NULL;
 
1249
                        }
 
1250
                        ndr->flags = _flags_save_string;
 
1251
                }
 
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");
 
1255
                }
 
1256
                NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_actions));
 
1257
                if (_ptr_actions) {
 
1258
                        NDR_PULL_ALLOC(ndr, r->actions);
 
1259
                        NDR_CHECK(ndr_pull_relative_ptr1(ndr, r->actions, _ptr_actions));
 
1260
                } else {
 
1261
                        r->actions = NULL;
 
1262
                }
 
1263
                NDR_CHECK(ndr_pull_trailer_align(ndr, 5));
 
1264
        }
 
1265
        if (ndr_flags & NDR_BUFFERS) {
 
1266
                {
 
1267
                        uint32_t _flags_save_string = ndr->flags;
 
1268
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
 
1269
                        if (r->rebootmsg) {
 
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;
 
1278
                        }
 
1279
                        ndr->flags = _flags_save_string;
 
1280
                }
 
1281
                {
 
1282
                        uint32_t _flags_save_string = ndr->flags;
 
1283
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2);
 
1284
                        if (r->command) {
 
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;
 
1293
                        }
 
1294
                        ndr->flags = _flags_save_string;
 
1295
                }
 
1296
                if (r->actions) {
 
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]));
 
1308
                        }
 
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;
 
1312
                }
 
1313
                if (r->actions) {
 
1314
                        NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->actions, r->num_actions));
 
1315
                }
 
1316
        }
 
1317
        return NDR_ERR_SUCCESS;
 
1318
}
 
1319
 
 
1320
_PUBLIC_ void ndr_print_SERVICE_FAILURE_ACTIONS(struct ndr_print *ndr, const char *name, const struct SERVICE_FAILURE_ACTIONS *r)
 
1321
{
 
1322
        uint32_t cntr_actions_1;
 
1323
        ndr_print_struct(ndr, name, "SERVICE_FAILURE_ACTIONS");
 
1324
        ndr->depth++;
 
1325
        ndr_print_uint32(ndr, "reset_period", r->reset_period);
 
1326
        ndr_print_ptr(ndr, "rebootmsg", r->rebootmsg);
 
1327
        ndr->depth++;
 
1328
        if (r->rebootmsg) {
 
1329
                ndr_print_string(ndr, "rebootmsg", r->rebootmsg);
 
1330
        }
 
1331
        ndr->depth--;
 
1332
        ndr_print_ptr(ndr, "command", r->command);
 
1333
        ndr->depth++;
 
1334
        if (r->command) {
 
1335
                ndr_print_string(ndr, "command", r->command);
 
1336
        }
 
1337
        ndr->depth--;
 
1338
        ndr_print_uint32(ndr, "num_actions", r->num_actions);
 
1339
        ndr_print_ptr(ndr, "actions", r->actions);
 
1340
        ndr->depth++;
 
1341
        if (r->actions) {
 
1342
                ndr->print(ndr, "%s: ARRAY(%d)", "actions", (int)r->num_actions);
 
1343
                ndr->depth++;
 
1344
                for (cntr_actions_1=0;cntr_actions_1<r->num_actions;cntr_actions_1++) {
 
1345
                        char *idx_1=NULL;
 
1346
                        if (asprintf(&idx_1, "[%d]", cntr_actions_1) != -1) {
 
1347
                                ndr_print_SC_ACTION(ndr, "actions", &r->actions[cntr_actions_1]);
 
1348
                                free(idx_1);
 
1349
                        }
 
1350
                }
 
1351
                ndr->depth--;
 
1352
        }
 
1353
        ndr->depth--;
 
1354
        ndr->depth--;
 
1355
}
 
1356
 
 
1357
_PUBLIC_ size_t ndr_size_SERVICE_FAILURE_ACTIONS(const struct SERVICE_FAILURE_ACTIONS *r, struct smb_iconv_convenience *ic, int flags)
 
1358
{
 
1359
        return ndr_size_struct(r, flags, (ndr_push_flags_fn_t)ndr_push_SERVICE_FAILURE_ACTIONS, ic);
 
1360
}
 
1361
 
 
1362
static enum ndr_err_code ndr_push_svcctl_StatusLevel(struct ndr_push *ndr, int ndr_flags, enum svcctl_StatusLevel r)
 
1363
{
 
1364
        NDR_CHECK(ndr_push_enum_uint32(ndr, NDR_SCALARS, r));
 
1365
        return NDR_ERR_SUCCESS;
 
1366
}
 
1367
 
 
1368
static enum ndr_err_code ndr_pull_svcctl_StatusLevel(struct ndr_pull *ndr, int ndr_flags, enum svcctl_StatusLevel *r)
 
1369
{
 
1370
        uint32_t v;
 
1371
        NDR_CHECK(ndr_pull_enum_uint32(ndr, NDR_SCALARS, &v));
 
1372
        *r = v;
 
1373
        return NDR_ERR_SUCCESS;
 
1374
}
 
1375
 
 
1376
_PUBLIC_ void ndr_print_svcctl_StatusLevel(struct ndr_print *ndr, const char *name, enum svcctl_StatusLevel r)
 
1377
{
 
1378
        const char *val = NULL;
 
1379
 
 
1380
        switch (r) {
 
1381
                case SVC_STATUS_PROCESS_INFO: val = "SVC_STATUS_PROCESS_INFO"; break;
 
1382
        }
 
1383
        ndr_print_enum(ndr, name, "ENUM", val, r);
 
1384
}
 
1385
 
 
1386
static enum ndr_err_code ndr_push_svcctl_CloseServiceHandle(struct ndr_push *ndr, int flags, const struct svcctl_CloseServiceHandle *r)
 
1387
{
 
1388
        if (flags & NDR_IN) {
 
1389
                if (r->in.handle == NULL) {
 
1390
                        return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
 
1391
                }
 
1392
                NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
 
1393
        }
 
1394
        if (flags & NDR_OUT) {
 
1395
                if (r->out.handle == NULL) {
 
1396
                        return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
 
1397
                }
 
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));
 
1400
        }
 
1401
        return NDR_ERR_SUCCESS;
 
1402
}
 
1403
 
 
1404
static enum ndr_err_code ndr_pull_svcctl_CloseServiceHandle(struct ndr_pull *ndr, int flags, struct svcctl_CloseServiceHandle *r)
 
1405
{
 
1406
        TALLOC_CTX *_mem_save_handle_0;
 
1407
        if (flags & NDR_IN) {
 
1408
                ZERO_STRUCT(r->out);
 
1409
 
 
1410
                if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
 
1411
                        NDR_PULL_ALLOC(ndr, r->in.handle);
 
1412
                }
 
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;
 
1419
        }
 
1420
        if (flags & NDR_OUT) {
 
1421
                if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
 
1422
                        NDR_PULL_ALLOC(ndr, r->out.handle);
 
1423
                }
 
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));
 
1429
        }
 
1430
        return NDR_ERR_SUCCESS;
 
1431
}
 
1432
 
 
1433
_PUBLIC_ void ndr_print_svcctl_CloseServiceHandle(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_CloseServiceHandle *r)
 
1434
{
 
1435
        ndr_print_struct(ndr, name, "svcctl_CloseServiceHandle");
 
1436
        ndr->depth++;
 
1437
        if (flags & NDR_SET_VALUES) {
 
1438
                ndr->flags |= LIBNDR_PRINT_SET_VALUES;
 
1439
        }
 
1440
        if (flags & NDR_IN) {
 
1441
                ndr_print_struct(ndr, "in", "svcctl_CloseServiceHandle");
 
1442
                ndr->depth++;
 
1443
                ndr_print_ptr(ndr, "handle", r->in.handle);
 
1444
                ndr->depth++;
 
1445
                ndr_print_policy_handle(ndr, "handle", r->in.handle);
 
1446
                ndr->depth--;
 
1447
                ndr->depth--;
 
1448
        }
 
1449
        if (flags & NDR_OUT) {
 
1450
                ndr_print_struct(ndr, "out", "svcctl_CloseServiceHandle");
 
1451
                ndr->depth++;
 
1452
                ndr_print_ptr(ndr, "handle", r->out.handle);
 
1453
                ndr->depth++;
 
1454
                ndr_print_policy_handle(ndr, "handle", r->out.handle);
 
1455
                ndr->depth--;
 
1456
                ndr_print_WERROR(ndr, "result", r->out.result);
 
1457
                ndr->depth--;
 
1458
        }
 
1459
        ndr->depth--;
 
1460
}
 
1461
 
 
1462
static enum ndr_err_code ndr_push_svcctl_ControlService(struct ndr_push *ndr, int flags, const struct svcctl_ControlService *r)
 
1463
{
 
1464
        if (flags & NDR_IN) {
 
1465
                if (r->in.handle == NULL) {
 
1466
                        return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
 
1467
                }
 
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));
 
1470
        }
 
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");
 
1474
                }
 
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));
 
1477
        }
 
1478
        return NDR_ERR_SUCCESS;
 
1479
}
 
1480
 
 
1481
static enum ndr_err_code ndr_pull_svcctl_ControlService(struct ndr_pull *ndr, int flags, struct svcctl_ControlService *r)
 
1482
{
 
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);
 
1487
 
 
1488
                if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
 
1489
                        NDR_PULL_ALLOC(ndr, r->in.handle);
 
1490
                }
 
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);
 
1498
        }
 
1499
        if (flags & NDR_OUT) {
 
1500
                if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
 
1501
                        NDR_PULL_ALLOC(ndr, r->out.service_status);
 
1502
                }
 
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));
 
1508
        }
 
1509
        return NDR_ERR_SUCCESS;
 
1510
}
 
1511
 
 
1512
_PUBLIC_ void ndr_print_svcctl_ControlService(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_ControlService *r)
 
1513
{
 
1514
        ndr_print_struct(ndr, name, "svcctl_ControlService");
 
1515
        ndr->depth++;
 
1516
        if (flags & NDR_SET_VALUES) {
 
1517
                ndr->flags |= LIBNDR_PRINT_SET_VALUES;
 
1518
        }
 
1519
        if (flags & NDR_IN) {
 
1520
                ndr_print_struct(ndr, "in", "svcctl_ControlService");
 
1521
                ndr->depth++;
 
1522
                ndr_print_ptr(ndr, "handle", r->in.handle);
 
1523
                ndr->depth++;
 
1524
                ndr_print_policy_handle(ndr, "handle", r->in.handle);
 
1525
                ndr->depth--;
 
1526
                ndr_print_SERVICE_CONTROL(ndr, "control", r->in.control);
 
1527
                ndr->depth--;
 
1528
        }
 
1529
        if (flags & NDR_OUT) {
 
1530
                ndr_print_struct(ndr, "out", "svcctl_ControlService");
 
1531
                ndr->depth++;
 
1532
                ndr_print_ptr(ndr, "service_status", r->out.service_status);
 
1533
                ndr->depth++;
 
1534
                ndr_print_SERVICE_STATUS(ndr, "service_status", r->out.service_status);
 
1535
                ndr->depth--;
 
1536
                ndr_print_WERROR(ndr, "result", r->out.result);
 
1537
                ndr->depth--;
 
1538
        }
 
1539
        ndr->depth--;
 
1540
}
 
1541
 
 
1542
static enum ndr_err_code ndr_push_svcctl_DeleteService(struct ndr_push *ndr, int flags, const struct svcctl_DeleteService *r)
 
1543
{
 
1544
        if (flags & NDR_IN) {
 
1545
                if (r->in.handle == NULL) {
 
1546
                        return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
 
1547
                }
 
1548
                NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
 
1549
        }
 
1550
        if (flags & NDR_OUT) {
 
1551
                NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
 
1552
        }
 
1553
        return NDR_ERR_SUCCESS;
 
1554
}
 
1555
 
 
1556
static enum ndr_err_code ndr_pull_svcctl_DeleteService(struct ndr_pull *ndr, int flags, struct svcctl_DeleteService *r)
 
1557
{
 
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);
 
1562
                }
 
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);
 
1567
        }
 
1568
        if (flags & NDR_OUT) {
 
1569
                NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
 
1570
        }
 
1571
        return NDR_ERR_SUCCESS;
 
1572
}
 
1573
 
 
1574
_PUBLIC_ void ndr_print_svcctl_DeleteService(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_DeleteService *r)
 
1575
{
 
1576
        ndr_print_struct(ndr, name, "svcctl_DeleteService");
 
1577
        ndr->depth++;
 
1578
        if (flags & NDR_SET_VALUES) {
 
1579
                ndr->flags |= LIBNDR_PRINT_SET_VALUES;
 
1580
        }
 
1581
        if (flags & NDR_IN) {
 
1582
                ndr_print_struct(ndr, "in", "svcctl_DeleteService");
 
1583
                ndr->depth++;
 
1584
                ndr_print_ptr(ndr, "handle", r->in.handle);
 
1585
                ndr->depth++;
 
1586
                ndr_print_policy_handle(ndr, "handle", r->in.handle);
 
1587
                ndr->depth--;
 
1588
                ndr->depth--;
 
1589
        }
 
1590
        if (flags & NDR_OUT) {
 
1591
                ndr_print_struct(ndr, "out", "svcctl_DeleteService");
 
1592
                ndr->depth++;
 
1593
                ndr_print_WERROR(ndr, "result", r->out.result);
 
1594
                ndr->depth--;
 
1595
        }
 
1596
        ndr->depth--;
 
1597
}
 
1598
 
 
1599
static enum ndr_err_code ndr_push_svcctl_LockServiceDatabase(struct ndr_push *ndr, int flags, const struct svcctl_LockServiceDatabase *r)
 
1600
{
 
1601
        if (flags & NDR_IN) {
 
1602
                if (r->in.handle == NULL) {
 
1603
                        return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
 
1604
                }
 
1605
                NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
 
1606
        }
 
1607
        if (flags & NDR_OUT) {
 
1608
                if (r->out.lock == NULL) {
 
1609
                        return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
 
1610
                }
 
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));
 
1613
        }
 
1614
        return NDR_ERR_SUCCESS;
 
1615
}
 
1616
 
 
1617
static enum ndr_err_code ndr_pull_svcctl_LockServiceDatabase(struct ndr_pull *ndr, int flags, struct svcctl_LockServiceDatabase *r)
 
1618
{
 
1619
        TALLOC_CTX *_mem_save_handle_0;
 
1620
        TALLOC_CTX *_mem_save_lock_0;
 
1621
        if (flags & NDR_IN) {
 
1622
                ZERO_STRUCT(r->out);
 
1623
 
 
1624
                if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
 
1625
                        NDR_PULL_ALLOC(ndr, r->in.handle);
 
1626
                }
 
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);
 
1633
        }
 
1634
        if (flags & NDR_OUT) {
 
1635
                if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
 
1636
                        NDR_PULL_ALLOC(ndr, r->out.lock);
 
1637
                }
 
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));
 
1643
        }
 
1644
        return NDR_ERR_SUCCESS;
 
1645
}
 
1646
 
 
1647
_PUBLIC_ void ndr_print_svcctl_LockServiceDatabase(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_LockServiceDatabase *r)
 
1648
{
 
1649
        ndr_print_struct(ndr, name, "svcctl_LockServiceDatabase");
 
1650
        ndr->depth++;
 
1651
        if (flags & NDR_SET_VALUES) {
 
1652
                ndr->flags |= LIBNDR_PRINT_SET_VALUES;
 
1653
        }
 
1654
        if (flags & NDR_IN) {
 
1655
                ndr_print_struct(ndr, "in", "svcctl_LockServiceDatabase");
 
1656
                ndr->depth++;
 
1657
                ndr_print_ptr(ndr, "handle", r->in.handle);
 
1658
                ndr->depth++;
 
1659
                ndr_print_policy_handle(ndr, "handle", r->in.handle);
 
1660
                ndr->depth--;
 
1661
                ndr->depth--;
 
1662
        }
 
1663
        if (flags & NDR_OUT) {
 
1664
                ndr_print_struct(ndr, "out", "svcctl_LockServiceDatabase");
 
1665
                ndr->depth++;
 
1666
                ndr_print_ptr(ndr, "lock", r->out.lock);
 
1667
                ndr->depth++;
 
1668
                ndr_print_policy_handle(ndr, "lock", r->out.lock);
 
1669
                ndr->depth--;
 
1670
                ndr_print_WERROR(ndr, "result", r->out.result);
 
1671
                ndr->depth--;
 
1672
        }
 
1673
        ndr->depth--;
 
1674
}
 
1675
 
 
1676
static enum ndr_err_code ndr_push_svcctl_QueryServiceObjectSecurity(struct ndr_push *ndr, int flags, const struct svcctl_QueryServiceObjectSecurity *r)
 
1677
{
 
1678
        if (flags & NDR_IN) {
 
1679
                if (r->in.handle == NULL) {
 
1680
                        return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
 
1681
                }
 
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));
 
1685
        }
 
1686
        if (flags & NDR_OUT) {
 
1687
                if (r->out.buffer == NULL) {
 
1688
                        return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
 
1689
                }
 
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");
 
1694
                }
 
1695
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.needed));
 
1696
                NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
 
1697
        }
 
1698
        return NDR_ERR_SUCCESS;
 
1699
}
 
1700
 
 
1701
static enum ndr_err_code ndr_pull_svcctl_QueryServiceObjectSecurity(struct ndr_pull *ndr, int flags, struct svcctl_QueryServiceObjectSecurity *r)
 
1702
{
 
1703
        TALLOC_CTX *_mem_save_handle_0;
 
1704
        TALLOC_CTX *_mem_save_needed_0;
 
1705
        if (flags & NDR_IN) {
 
1706
                ZERO_STRUCT(r->out);
 
1707
 
 
1708
                if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
 
1709
                        NDR_PULL_ALLOC(ndr, r->in.handle);
 
1710
                }
 
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");
 
1719
                }
 
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);
 
1724
        }
 
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));
 
1729
                }
 
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);
 
1733
                }
 
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");
 
1739
                }
 
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));
 
1744
                }
 
1745
        }
 
1746
        return NDR_ERR_SUCCESS;
 
1747
}
 
1748
 
 
1749
_PUBLIC_ void ndr_print_svcctl_QueryServiceObjectSecurity(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_QueryServiceObjectSecurity *r)
 
1750
{
 
1751
        ndr_print_struct(ndr, name, "svcctl_QueryServiceObjectSecurity");
 
1752
        ndr->depth++;
 
1753
        if (flags & NDR_SET_VALUES) {
 
1754
                ndr->flags |= LIBNDR_PRINT_SET_VALUES;
 
1755
        }
 
1756
        if (flags & NDR_IN) {
 
1757
                ndr_print_struct(ndr, "in", "svcctl_QueryServiceObjectSecurity");
 
1758
                ndr->depth++;
 
1759
                ndr_print_ptr(ndr, "handle", r->in.handle);
 
1760
                ndr->depth++;
 
1761
                ndr_print_policy_handle(ndr, "handle", r->in.handle);
 
1762
                ndr->depth--;
 
1763
                ndr_print_security_secinfo(ndr, "security_flags", r->in.security_flags);
 
1764
                ndr_print_uint32(ndr, "offered", r->in.offered);
 
1765
                ndr->depth--;
 
1766
        }
 
1767
        if (flags & NDR_OUT) {
 
1768
                ndr_print_struct(ndr, "out", "svcctl_QueryServiceObjectSecurity");
 
1769
                ndr->depth++;
 
1770
                ndr_print_ptr(ndr, "buffer", r->out.buffer);
 
1771
                ndr->depth++;
 
1772
                ndr_print_array_uint8(ndr, "buffer", r->out.buffer, r->in.offered);
 
1773
                ndr->depth--;
 
1774
                ndr_print_ptr(ndr, "needed", r->out.needed);
 
1775
                ndr->depth++;
 
1776
                ndr_print_uint32(ndr, "needed", *r->out.needed);
 
1777
                ndr->depth--;
 
1778
                ndr_print_WERROR(ndr, "result", r->out.result);
 
1779
                ndr->depth--;
 
1780
        }
 
1781
        ndr->depth--;
 
1782
}
 
1783
 
 
1784
static enum ndr_err_code ndr_push_svcctl_SetServiceObjectSecurity(struct ndr_push *ndr, int flags, const struct svcctl_SetServiceObjectSecurity *r)
 
1785
{
 
1786
        if (flags & NDR_IN) {
 
1787
                if (r->in.handle == NULL) {
 
1788
                        return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
 
1789
                }
 
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");
 
1794
                }
 
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));
 
1798
        }
 
1799
        if (flags & NDR_OUT) {
 
1800
                NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
 
1801
        }
 
1802
        return NDR_ERR_SUCCESS;
 
1803
}
 
1804
 
 
1805
static enum ndr_err_code ndr_pull_svcctl_SetServiceObjectSecurity(struct ndr_pull *ndr, int flags, struct svcctl_SetServiceObjectSecurity *r)
 
1806
{
 
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);
 
1811
                }
 
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));
 
1820
                }
 
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));
 
1823
                if (r->in.buffer) {
 
1824
                        NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->in.buffer, r->in.offered));
 
1825
                }
 
1826
        }
 
1827
        if (flags & NDR_OUT) {
 
1828
                NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
 
1829
        }
 
1830
        return NDR_ERR_SUCCESS;
 
1831
}
 
1832
 
 
1833
_PUBLIC_ void ndr_print_svcctl_SetServiceObjectSecurity(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_SetServiceObjectSecurity *r)
 
1834
{
 
1835
        ndr_print_struct(ndr, name, "svcctl_SetServiceObjectSecurity");
 
1836
        ndr->depth++;
 
1837
        if (flags & NDR_SET_VALUES) {
 
1838
                ndr->flags |= LIBNDR_PRINT_SET_VALUES;
 
1839
        }
 
1840
        if (flags & NDR_IN) {
 
1841
                ndr_print_struct(ndr, "in", "svcctl_SetServiceObjectSecurity");
 
1842
                ndr->depth++;
 
1843
                ndr_print_ptr(ndr, "handle", r->in.handle);
 
1844
                ndr->depth++;
 
1845
                ndr_print_policy_handle(ndr, "handle", r->in.handle);
 
1846
                ndr->depth--;
 
1847
                ndr_print_security_secinfo(ndr, "security_flags", r->in.security_flags);
 
1848
                ndr_print_ptr(ndr, "buffer", r->in.buffer);
 
1849
                ndr->depth++;
 
1850
                ndr_print_array_uint8(ndr, "buffer", r->in.buffer, r->in.offered);
 
1851
                ndr->depth--;
 
1852
                ndr_print_uint32(ndr, "offered", r->in.offered);
 
1853
                ndr->depth--;
 
1854
        }
 
1855
        if (flags & NDR_OUT) {
 
1856
                ndr_print_struct(ndr, "out", "svcctl_SetServiceObjectSecurity");
 
1857
                ndr->depth++;
 
1858
                ndr_print_WERROR(ndr, "result", r->out.result);
 
1859
                ndr->depth--;
 
1860
        }
 
1861
        ndr->depth--;
 
1862
}
 
1863
 
 
1864
static enum ndr_err_code ndr_push_svcctl_QueryServiceStatus(struct ndr_push *ndr, int flags, const struct svcctl_QueryServiceStatus *r)
 
1865
{
 
1866
        if (flags & NDR_IN) {
 
1867
                if (r->in.handle == NULL) {
 
1868
                        return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
 
1869
                }
 
1870
                NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
 
1871
        }
 
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");
 
1875
                }
 
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));
 
1878
        }
 
1879
        return NDR_ERR_SUCCESS;
 
1880
}
 
1881
 
 
1882
static enum ndr_err_code ndr_pull_svcctl_QueryServiceStatus(struct ndr_pull *ndr, int flags, struct svcctl_QueryServiceStatus *r)
 
1883
{
 
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);
 
1888
 
 
1889
                if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
 
1890
                        NDR_PULL_ALLOC(ndr, r->in.handle);
 
1891
                }
 
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);
 
1898
        }
 
1899
        if (flags & NDR_OUT) {
 
1900
                if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
 
1901
                        NDR_PULL_ALLOC(ndr, r->out.service_status);
 
1902
                }
 
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));
 
1908
        }
 
1909
        return NDR_ERR_SUCCESS;
 
1910
}
 
1911
 
 
1912
_PUBLIC_ void ndr_print_svcctl_QueryServiceStatus(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_QueryServiceStatus *r)
 
1913
{
 
1914
        ndr_print_struct(ndr, name, "svcctl_QueryServiceStatus");
 
1915
        ndr->depth++;
 
1916
        if (flags & NDR_SET_VALUES) {
 
1917
                ndr->flags |= LIBNDR_PRINT_SET_VALUES;
 
1918
        }
 
1919
        if (flags & NDR_IN) {
 
1920
                ndr_print_struct(ndr, "in", "svcctl_QueryServiceStatus");
 
1921
                ndr->depth++;
 
1922
                ndr_print_ptr(ndr, "handle", r->in.handle);
 
1923
                ndr->depth++;
 
1924
                ndr_print_policy_handle(ndr, "handle", r->in.handle);
 
1925
                ndr->depth--;
 
1926
                ndr->depth--;
 
1927
        }
 
1928
        if (flags & NDR_OUT) {
 
1929
                ndr_print_struct(ndr, "out", "svcctl_QueryServiceStatus");
 
1930
                ndr->depth++;
 
1931
                ndr_print_ptr(ndr, "service_status", r->out.service_status);
 
1932
                ndr->depth++;
 
1933
                ndr_print_SERVICE_STATUS(ndr, "service_status", r->out.service_status);
 
1934
                ndr->depth--;
 
1935
                ndr_print_WERROR(ndr, "result", r->out.result);
 
1936
                ndr->depth--;
 
1937
        }
 
1938
        ndr->depth--;
 
1939
}
 
1940
 
 
1941
static enum ndr_err_code ndr_push_svcctl_SetServiceStatus(struct ndr_push *ndr, int flags, const struct svcctl_SetServiceStatus *r)
 
1942
{
 
1943
        if (flags & NDR_IN) {
 
1944
        }
 
1945
        if (flags & NDR_OUT) {
 
1946
                NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
 
1947
        }
 
1948
        return NDR_ERR_SUCCESS;
 
1949
}
 
1950
 
 
1951
static enum ndr_err_code ndr_pull_svcctl_SetServiceStatus(struct ndr_pull *ndr, int flags, struct svcctl_SetServiceStatus *r)
 
1952
{
 
1953
        if (flags & NDR_IN) {
 
1954
        }
 
1955
        if (flags & NDR_OUT) {
 
1956
                NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
 
1957
        }
 
1958
        return NDR_ERR_SUCCESS;
 
1959
}
 
1960
 
 
1961
_PUBLIC_ void ndr_print_svcctl_SetServiceStatus(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_SetServiceStatus *r)
 
1962
{
 
1963
        ndr_print_struct(ndr, name, "svcctl_SetServiceStatus");
 
1964
        ndr->depth++;
 
1965
        if (flags & NDR_SET_VALUES) {
 
1966
                ndr->flags |= LIBNDR_PRINT_SET_VALUES;
 
1967
        }
 
1968
        if (flags & NDR_IN) {
 
1969
                ndr_print_struct(ndr, "in", "svcctl_SetServiceStatus");
 
1970
                ndr->depth++;
 
1971
                ndr->depth--;
 
1972
        }
 
1973
        if (flags & NDR_OUT) {
 
1974
                ndr_print_struct(ndr, "out", "svcctl_SetServiceStatus");
 
1975
                ndr->depth++;
 
1976
                ndr_print_WERROR(ndr, "result", r->out.result);
 
1977
                ndr->depth--;
 
1978
        }
 
1979
        ndr->depth--;
 
1980
}
 
1981
 
 
1982
static enum ndr_err_code ndr_push_svcctl_UnlockServiceDatabase(struct ndr_push *ndr, int flags, const struct svcctl_UnlockServiceDatabase *r)
 
1983
{
 
1984
        if (flags & NDR_IN) {
 
1985
                if (r->in.lock == NULL) {
 
1986
                        return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
 
1987
                }
 
1988
                NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.lock));
 
1989
        }
 
1990
        if (flags & NDR_OUT) {
 
1991
                if (r->out.lock == NULL) {
 
1992
                        return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
 
1993
                }
 
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));
 
1996
        }
 
1997
        return NDR_ERR_SUCCESS;
 
1998
}
 
1999
 
 
2000
static enum ndr_err_code ndr_pull_svcctl_UnlockServiceDatabase(struct ndr_pull *ndr, int flags, struct svcctl_UnlockServiceDatabase *r)
 
2001
{
 
2002
        TALLOC_CTX *_mem_save_lock_0;
 
2003
        if (flags & NDR_IN) {
 
2004
                ZERO_STRUCT(r->out);
 
2005
 
 
2006
                if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
 
2007
                        NDR_PULL_ALLOC(ndr, r->in.lock);
 
2008
                }
 
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;
 
2015
        }
 
2016
        if (flags & NDR_OUT) {
 
2017
                if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
 
2018
                        NDR_PULL_ALLOC(ndr, r->out.lock);
 
2019
                }
 
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));
 
2025
        }
 
2026
        return NDR_ERR_SUCCESS;
 
2027
}
 
2028
 
 
2029
_PUBLIC_ void ndr_print_svcctl_UnlockServiceDatabase(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_UnlockServiceDatabase *r)
 
2030
{
 
2031
        ndr_print_struct(ndr, name, "svcctl_UnlockServiceDatabase");
 
2032
        ndr->depth++;
 
2033
        if (flags & NDR_SET_VALUES) {
 
2034
                ndr->flags |= LIBNDR_PRINT_SET_VALUES;
 
2035
        }
 
2036
        if (flags & NDR_IN) {
 
2037
                ndr_print_struct(ndr, "in", "svcctl_UnlockServiceDatabase");
 
2038
                ndr->depth++;
 
2039
                ndr_print_ptr(ndr, "lock", r->in.lock);
 
2040
                ndr->depth++;
 
2041
                ndr_print_policy_handle(ndr, "lock", r->in.lock);
 
2042
                ndr->depth--;
 
2043
                ndr->depth--;
 
2044
        }
 
2045
        if (flags & NDR_OUT) {
 
2046
                ndr_print_struct(ndr, "out", "svcctl_UnlockServiceDatabase");
 
2047
                ndr->depth++;
 
2048
                ndr_print_ptr(ndr, "lock", r->out.lock);
 
2049
                ndr->depth++;
 
2050
                ndr_print_policy_handle(ndr, "lock", r->out.lock);
 
2051
                ndr->depth--;
 
2052
                ndr_print_WERROR(ndr, "result", r->out.result);
 
2053
                ndr->depth--;
 
2054
        }
 
2055
        ndr->depth--;
 
2056
}
 
2057
 
 
2058
static enum ndr_err_code ndr_push_svcctl_NotifyBootConfigStatus(struct ndr_push *ndr, int flags, const struct svcctl_NotifyBootConfigStatus *r)
 
2059
{
 
2060
        if (flags & NDR_IN) {
 
2061
        }
 
2062
        if (flags & NDR_OUT) {
 
2063
                NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
 
2064
        }
 
2065
        return NDR_ERR_SUCCESS;
 
2066
}
 
2067
 
 
2068
static enum ndr_err_code ndr_pull_svcctl_NotifyBootConfigStatus(struct ndr_pull *ndr, int flags, struct svcctl_NotifyBootConfigStatus *r)
 
2069
{
 
2070
        if (flags & NDR_IN) {
 
2071
        }
 
2072
        if (flags & NDR_OUT) {
 
2073
                NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
 
2074
        }
 
2075
        return NDR_ERR_SUCCESS;
 
2076
}
 
2077
 
 
2078
_PUBLIC_ void ndr_print_svcctl_NotifyBootConfigStatus(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_NotifyBootConfigStatus *r)
 
2079
{
 
2080
        ndr_print_struct(ndr, name, "svcctl_NotifyBootConfigStatus");
 
2081
        ndr->depth++;
 
2082
        if (flags & NDR_SET_VALUES) {
 
2083
                ndr->flags |= LIBNDR_PRINT_SET_VALUES;
 
2084
        }
 
2085
        if (flags & NDR_IN) {
 
2086
                ndr_print_struct(ndr, "in", "svcctl_NotifyBootConfigStatus");
 
2087
                ndr->depth++;
 
2088
                ndr->depth--;
 
2089
        }
 
2090
        if (flags & NDR_OUT) {
 
2091
                ndr_print_struct(ndr, "out", "svcctl_NotifyBootConfigStatus");
 
2092
                ndr->depth++;
 
2093
                ndr_print_WERROR(ndr, "result", r->out.result);
 
2094
                ndr->depth--;
 
2095
        }
 
2096
        ndr->depth--;
 
2097
}
 
2098
 
 
2099
static enum ndr_err_code ndr_push_svcctl_SCSetServiceBitsW(struct ndr_push *ndr, int flags, const struct svcctl_SCSetServiceBitsW *r)
 
2100
{
 
2101
        if (flags & NDR_IN) {
 
2102
                if (r->in.handle == NULL) {
 
2103
                        return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
 
2104
                }
 
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));
 
2109
        }
 
2110
        if (flags & NDR_OUT) {
 
2111
                NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
 
2112
        }
 
2113
        return NDR_ERR_SUCCESS;
 
2114
}
 
2115
 
 
2116
static enum ndr_err_code ndr_pull_svcctl_SCSetServiceBitsW(struct ndr_pull *ndr, int flags, struct svcctl_SCSetServiceBitsW *r)
 
2117
{
 
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);
 
2122
                }
 
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));
 
2130
        }
 
2131
        if (flags & NDR_OUT) {
 
2132
                NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
 
2133
        }
 
2134
        return NDR_ERR_SUCCESS;
 
2135
}
 
2136
 
 
2137
_PUBLIC_ void ndr_print_svcctl_SCSetServiceBitsW(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_SCSetServiceBitsW *r)
 
2138
{
 
2139
        ndr_print_struct(ndr, name, "svcctl_SCSetServiceBitsW");
 
2140
        ndr->depth++;
 
2141
        if (flags & NDR_SET_VALUES) {
 
2142
                ndr->flags |= LIBNDR_PRINT_SET_VALUES;
 
2143
        }
 
2144
        if (flags & NDR_IN) {
 
2145
                ndr_print_struct(ndr, "in", "svcctl_SCSetServiceBitsW");
 
2146
                ndr->depth++;
 
2147
                ndr_print_ptr(ndr, "handle", r->in.handle);
 
2148
                ndr->depth++;
 
2149
                ndr_print_policy_handle(ndr, "handle", r->in.handle);
 
2150
                ndr->depth--;
 
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);
 
2154
                ndr->depth--;
 
2155
        }
 
2156
        if (flags & NDR_OUT) {
 
2157
                ndr_print_struct(ndr, "out", "svcctl_SCSetServiceBitsW");
 
2158
                ndr->depth++;
 
2159
                ndr_print_WERROR(ndr, "result", r->out.result);
 
2160
                ndr->depth--;
 
2161
        }
 
2162
        ndr->depth--;
 
2163
}
 
2164
 
 
2165
static enum ndr_err_code ndr_push_svcctl_ChangeServiceConfigW(struct ndr_push *ndr, int flags, const struct svcctl_ChangeServiceConfigW *r)
 
2166
{
 
2167
        if (flags & NDR_IN) {
 
2168
                if (r->in.handle == NULL) {
 
2169
                        return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
 
2170
                }
 
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));
 
2181
                }
 
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));
 
2188
                }
 
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));
 
2195
                }
 
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));
 
2202
                }
 
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));
 
2209
                }
 
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));
 
2216
                }
 
2217
        }
 
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");
 
2221
                }
 
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));
 
2224
        }
 
2225
        return NDR_ERR_SUCCESS;
 
2226
}
 
2227
 
 
2228
static enum ndr_err_code ndr_pull_svcctl_ChangeServiceConfigW(struct ndr_pull *ndr, int flags, struct svcctl_ChangeServiceConfigW *r)
 
2229
{
 
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);
 
2246
 
 
2247
                if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
 
2248
                        NDR_PULL_ALLOC(ndr, r->in.handle);
 
2249
                }
 
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);
 
2260
                } else {
 
2261
                        r->in.binary_path = NULL;
 
2262
                }
 
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));
 
2270
                        }
 
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);
 
2274
                }
 
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);
 
2278
                } else {
 
2279
                        r->in.load_order_group = NULL;
 
2280
                }
 
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));
 
2288
                        }
 
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);
 
2292
                }
 
2293
                NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_dependencies));
 
2294
                if (_ptr_dependencies) {
 
2295
                        NDR_PULL_ALLOC(ndr, r->in.dependencies);
 
2296
                } else {
 
2297
                        r->in.dependencies = NULL;
 
2298
                }
 
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));
 
2306
                        }
 
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);
 
2310
                }
 
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);
 
2314
                } else {
 
2315
                        r->in.service_start_name = NULL;
 
2316
                }
 
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));
 
2324
                        }
 
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);
 
2328
                }
 
2329
                NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_password));
 
2330
                if (_ptr_password) {
 
2331
                        NDR_PULL_ALLOC(ndr, r->in.password);
 
2332
                } else {
 
2333
                        r->in.password = NULL;
 
2334
                }
 
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));
 
2342
                        }
 
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);
 
2346
                }
 
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);
 
2350
                } else {
 
2351
                        r->in.display_name = NULL;
 
2352
                }
 
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));
 
2360
                        }
 
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);
 
2364
                }
 
2365
                NDR_PULL_ALLOC(ndr, r->out.tag_id);
 
2366
                ZERO_STRUCTP(r->out.tag_id);
 
2367
        }
 
2368
        if (flags & NDR_OUT) {
 
2369
                if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
 
2370
                        NDR_PULL_ALLOC(ndr, r->out.tag_id);
 
2371
                }
 
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));
 
2377
        }
 
2378
        return NDR_ERR_SUCCESS;
 
2379
}
 
2380
 
 
2381
_PUBLIC_ void ndr_print_svcctl_ChangeServiceConfigW(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_ChangeServiceConfigW *r)
 
2382
{
 
2383
        ndr_print_struct(ndr, name, "svcctl_ChangeServiceConfigW");
 
2384
        ndr->depth++;
 
2385
        if (flags & NDR_SET_VALUES) {
 
2386
                ndr->flags |= LIBNDR_PRINT_SET_VALUES;
 
2387
        }
 
2388
        if (flags & NDR_IN) {
 
2389
                ndr_print_struct(ndr, "in", "svcctl_ChangeServiceConfigW");
 
2390
                ndr->depth++;
 
2391
                ndr_print_ptr(ndr, "handle", r->in.handle);
 
2392
                ndr->depth++;
 
2393
                ndr_print_policy_handle(ndr, "handle", r->in.handle);
 
2394
                ndr->depth--;
 
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);
 
2399
                ndr->depth++;
 
2400
                if (r->in.binary_path) {
 
2401
                        ndr_print_string(ndr, "binary_path", r->in.binary_path);
 
2402
                }
 
2403
                ndr->depth--;
 
2404
                ndr_print_ptr(ndr, "load_order_group", r->in.load_order_group);
 
2405
                ndr->depth++;
 
2406
                if (r->in.load_order_group) {
 
2407
                        ndr_print_string(ndr, "load_order_group", r->in.load_order_group);
 
2408
                }
 
2409
                ndr->depth--;
 
2410
                ndr_print_ptr(ndr, "dependencies", r->in.dependencies);
 
2411
                ndr->depth++;
 
2412
                if (r->in.dependencies) {
 
2413
                        ndr_print_string(ndr, "dependencies", r->in.dependencies);
 
2414
                }
 
2415
                ndr->depth--;
 
2416
                ndr_print_ptr(ndr, "service_start_name", r->in.service_start_name);
 
2417
                ndr->depth++;
 
2418
                if (r->in.service_start_name) {
 
2419
                        ndr_print_string(ndr, "service_start_name", r->in.service_start_name);
 
2420
                }
 
2421
                ndr->depth--;
 
2422
                ndr_print_ptr(ndr, "password", r->in.password);
 
2423
                ndr->depth++;
 
2424
                if (r->in.password) {
 
2425
                        ndr_print_string(ndr, "password", r->in.password);
 
2426
                }
 
2427
                ndr->depth--;
 
2428
                ndr_print_ptr(ndr, "display_name", r->in.display_name);
 
2429
                ndr->depth++;
 
2430
                if (r->in.display_name) {
 
2431
                        ndr_print_string(ndr, "display_name", r->in.display_name);
 
2432
                }
 
2433
                ndr->depth--;
 
2434
                ndr->depth--;
 
2435
        }
 
2436
        if (flags & NDR_OUT) {
 
2437
                ndr_print_struct(ndr, "out", "svcctl_ChangeServiceConfigW");
 
2438
                ndr->depth++;
 
2439
                ndr_print_ptr(ndr, "tag_id", r->out.tag_id);
 
2440
                ndr->depth++;
 
2441
                ndr_print_uint32(ndr, "tag_id", *r->out.tag_id);
 
2442
                ndr->depth--;
 
2443
                ndr_print_WERROR(ndr, "result", r->out.result);
 
2444
                ndr->depth--;
 
2445
        }
 
2446
        ndr->depth--;
 
2447
}
 
2448
 
 
2449
static enum ndr_err_code ndr_push_svcctl_CreateServiceW(struct ndr_push *ndr, int flags, const struct svcctl_CreateServiceW *r)
 
2450
{
 
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");
 
2454
                }
 
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));
 
2466
                }
 
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));
 
2481
                }
 
2482
                NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.TagId));
 
2483
                if (r->in.TagId) {
 
2484
                        NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->in.TagId));
 
2485
                }
 
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));
 
2490
                }
 
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));
 
2498
                }
 
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));
 
2503
                }
 
2504
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.password_size));
 
2505
        }
 
2506
        if (flags & NDR_OUT) {
 
2507
                NDR_CHECK(ndr_push_unique_ptr(ndr, r->out.TagId));
 
2508
                if (r->out.TagId) {
 
2509
                        NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.TagId));
 
2510
                }
 
2511
                if (r->out.handle == NULL) {
 
2512
                        return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
 
2513
                }
 
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));
 
2516
        }
 
2517
        return NDR_ERR_SUCCESS;
 
2518
}
 
2519
 
 
2520
static enum ndr_err_code ndr_pull_svcctl_CreateServiceW(struct ndr_pull *ndr, int flags, struct svcctl_CreateServiceW *r)
 
2521
{
 
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);
 
2538
 
 
2539
                if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
 
2540
                        NDR_PULL_ALLOC(ndr, r->in.scmanager_handle);
 
2541
                }
 
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));
 
2550
                }
 
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);
 
2556
                } else {
 
2557
                        r->in.DisplayName = NULL;
 
2558
                }
 
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));
 
2566
                        }
 
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);
 
2570
                }
 
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));
 
2579
                }
 
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);
 
2585
                } else {
 
2586
                        r->in.LoadOrderGroupKey = NULL;
 
2587
                }
 
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));
 
2595
                        }
 
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);
 
2599
                }
 
2600
                NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_TagId));
 
2601
                if (_ptr_TagId) {
 
2602
                        NDR_PULL_ALLOC(ndr, r->in.TagId);
 
2603
                } else {
 
2604
                        r->in.TagId = NULL;
 
2605
                }
 
2606
                if (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);
 
2611
                }
 
2612
                NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_dependencies));
 
2613
                if (_ptr_dependencies) {
 
2614
                        NDR_PULL_ALLOC(ndr, r->in.dependencies);
 
2615
                } else {
 
2616
                        r->in.dependencies = NULL;
 
2617
                }
 
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);
 
2625
                }
 
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);
 
2630
                } else {
 
2631
                        r->in.service_start_name = NULL;
 
2632
                }
 
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));
 
2640
                        }
 
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);
 
2644
                }
 
2645
                NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_password));
 
2646
                if (_ptr_password) {
 
2647
                        NDR_PULL_ALLOC(ndr, r->in.password);
 
2648
                } else {
 
2649
                        r->in.password = NULL;
 
2650
                }
 
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);
 
2658
                }
 
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));
 
2664
                }
 
2665
                if (r->in.password) {
 
2666
                        NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->in.password, r->in.password_size));
 
2667
                }
 
2668
        }
 
2669
        if (flags & NDR_OUT) {
 
2670
                NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_TagId));
 
2671
                if (_ptr_TagId) {
 
2672
                        NDR_PULL_ALLOC(ndr, r->out.TagId);
 
2673
                } else {
 
2674
                        r->out.TagId = NULL;
 
2675
                }
 
2676
                if (r->out.TagId) {
 
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);
 
2681
                }
 
2682
                if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
 
2683
                        NDR_PULL_ALLOC(ndr, r->out.handle);
 
2684
                }
 
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));
 
2690
        }
 
2691
        return NDR_ERR_SUCCESS;
 
2692
}
 
2693
 
 
2694
_PUBLIC_ void ndr_print_svcctl_CreateServiceW(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_CreateServiceW *r)
 
2695
{
 
2696
        ndr_print_struct(ndr, name, "svcctl_CreateServiceW");
 
2697
        ndr->depth++;
 
2698
        if (flags & NDR_SET_VALUES) {
 
2699
                ndr->flags |= LIBNDR_PRINT_SET_VALUES;
 
2700
        }
 
2701
        if (flags & NDR_IN) {
 
2702
                ndr_print_struct(ndr, "in", "svcctl_CreateServiceW");
 
2703
                ndr->depth++;
 
2704
                ndr_print_ptr(ndr, "scmanager_handle", r->in.scmanager_handle);
 
2705
                ndr->depth++;
 
2706
                ndr_print_policy_handle(ndr, "scmanager_handle", r->in.scmanager_handle);
 
2707
                ndr->depth--;
 
2708
                ndr_print_string(ndr, "ServiceName", r->in.ServiceName);
 
2709
                ndr_print_ptr(ndr, "DisplayName", r->in.DisplayName);
 
2710
                ndr->depth++;
 
2711
                if (r->in.DisplayName) {
 
2712
                        ndr_print_string(ndr, "DisplayName", r->in.DisplayName);
 
2713
                }
 
2714
                ndr->depth--;
 
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);
 
2721
                ndr->depth++;
 
2722
                if (r->in.LoadOrderGroupKey) {
 
2723
                        ndr_print_string(ndr, "LoadOrderGroupKey", r->in.LoadOrderGroupKey);
 
2724
                }
 
2725
                ndr->depth--;
 
2726
                ndr_print_ptr(ndr, "TagId", r->in.TagId);
 
2727
                ndr->depth++;
 
2728
                if (r->in.TagId) {
 
2729
                        ndr_print_uint32(ndr, "TagId", *r->in.TagId);
 
2730
                }
 
2731
                ndr->depth--;
 
2732
                ndr_print_ptr(ndr, "dependencies", r->in.dependencies);
 
2733
                ndr->depth++;
 
2734
                if (r->in.dependencies) {
 
2735
                        ndr_print_array_uint8(ndr, "dependencies", r->in.dependencies, r->in.dependencies_size);
 
2736
                }
 
2737
                ndr->depth--;
 
2738
                ndr_print_uint32(ndr, "dependencies_size", r->in.dependencies_size);
 
2739
                ndr_print_ptr(ndr, "service_start_name", r->in.service_start_name);
 
2740
                ndr->depth++;
 
2741
                if (r->in.service_start_name) {
 
2742
                        ndr_print_string(ndr, "service_start_name", r->in.service_start_name);
 
2743
                }
 
2744
                ndr->depth--;
 
2745
                ndr_print_ptr(ndr, "password", r->in.password);
 
2746
                ndr->depth++;
 
2747
                if (r->in.password) {
 
2748
                        ndr_print_array_uint8(ndr, "password", r->in.password, r->in.password_size);
 
2749
                }
 
2750
                ndr->depth--;
 
2751
                ndr_print_uint32(ndr, "password_size", r->in.password_size);
 
2752
                ndr->depth--;
 
2753
        }
 
2754
        if (flags & NDR_OUT) {
 
2755
                ndr_print_struct(ndr, "out", "svcctl_CreateServiceW");
 
2756
                ndr->depth++;
 
2757
                ndr_print_ptr(ndr, "TagId", r->out.TagId);
 
2758
                ndr->depth++;
 
2759
                if (r->out.TagId) {
 
2760
                        ndr_print_uint32(ndr, "TagId", *r->out.TagId);
 
2761
                }
 
2762
                ndr->depth--;
 
2763
                ndr_print_ptr(ndr, "handle", r->out.handle);
 
2764
                ndr->depth++;
 
2765
                ndr_print_policy_handle(ndr, "handle", r->out.handle);
 
2766
                ndr->depth--;
 
2767
                ndr_print_WERROR(ndr, "result", r->out.result);
 
2768
                ndr->depth--;
 
2769
        }
 
2770
        ndr->depth--;
 
2771
}
 
2772
 
 
2773
static enum ndr_err_code ndr_push_svcctl_EnumDependentServicesW(struct ndr_push *ndr, int flags, const struct svcctl_EnumDependentServicesW *r)
 
2774
{
 
2775
        if (flags & NDR_IN) {
 
2776
                if (r->in.service == NULL) {
 
2777
                        return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
 
2778
                }
 
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));
 
2782
        }
 
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");
 
2786
                }
 
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");
 
2791
                }
 
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");
 
2795
                }
 
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));
 
2798
        }
 
2799
        return NDR_ERR_SUCCESS;
 
2800
}
 
2801
 
 
2802
static enum ndr_err_code ndr_pull_svcctl_EnumDependentServicesW(struct ndr_pull *ndr, int flags, struct svcctl_EnumDependentServicesW *r)
 
2803
{
 
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);
 
2809
 
 
2810
                if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
 
2811
                        NDR_PULL_ALLOC(ndr, r->in.service);
 
2812
                }
 
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");
 
2821
                }
 
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);
 
2828
        }
 
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));
 
2833
                }
 
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);
 
2837
                }
 
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");
 
2843
                }
 
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);
 
2847
                }
 
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");
 
2853
                }
 
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));
 
2858
                }
 
2859
        }
 
2860
        return NDR_ERR_SUCCESS;
 
2861
}
 
2862
 
 
2863
_PUBLIC_ void ndr_print_svcctl_EnumDependentServicesW(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_EnumDependentServicesW *r)
 
2864
{
 
2865
        ndr_print_struct(ndr, name, "svcctl_EnumDependentServicesW");
 
2866
        ndr->depth++;
 
2867
        if (flags & NDR_SET_VALUES) {
 
2868
                ndr->flags |= LIBNDR_PRINT_SET_VALUES;
 
2869
        }
 
2870
        if (flags & NDR_IN) {
 
2871
                ndr_print_struct(ndr, "in", "svcctl_EnumDependentServicesW");
 
2872
                ndr->depth++;
 
2873
                ndr_print_ptr(ndr, "service", r->in.service);
 
2874
                ndr->depth++;
 
2875
                ndr_print_policy_handle(ndr, "service", r->in.service);
 
2876
                ndr->depth--;
 
2877
                ndr_print_svcctl_ServiceState(ndr, "state", r->in.state);
 
2878
                ndr_print_uint32(ndr, "offered", r->in.offered);
 
2879
                ndr->depth--;
 
2880
        }
 
2881
        if (flags & NDR_OUT) {
 
2882
                ndr_print_struct(ndr, "out", "svcctl_EnumDependentServicesW");
 
2883
                ndr->depth++;
 
2884
                ndr_print_ptr(ndr, "service_status", r->out.service_status);
 
2885
                ndr->depth++;
 
2886
                ndr_print_array_uint8(ndr, "service_status", r->out.service_status, r->in.offered);
 
2887
                ndr->depth--;
 
2888
                ndr_print_ptr(ndr, "needed", r->out.needed);
 
2889
                ndr->depth++;
 
2890
                ndr_print_uint32(ndr, "needed", *r->out.needed);
 
2891
                ndr->depth--;
 
2892
                ndr_print_ptr(ndr, "services_returned", r->out.services_returned);
 
2893
                ndr->depth++;
 
2894
                ndr_print_uint32(ndr, "services_returned", *r->out.services_returned);
 
2895
                ndr->depth--;
 
2896
                ndr_print_WERROR(ndr, "result", r->out.result);
 
2897
                ndr->depth--;
 
2898
        }
 
2899
        ndr->depth--;
 
2900
}
 
2901
 
 
2902
static enum ndr_err_code ndr_push_svcctl_EnumServicesStatusW(struct ndr_push *ndr, int flags, const struct svcctl_EnumServicesStatusW *r)
 
2903
{
 
2904
        if (flags & NDR_IN) {
 
2905
                if (r->in.handle == NULL) {
 
2906
                        return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
 
2907
                }
 
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));
 
2915
                }
 
2916
        }
 
2917
        if (flags & NDR_OUT) {
 
2918
                if (r->out.service == NULL) {
 
2919
                        return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
 
2920
                }
 
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");
 
2925
                }
 
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");
 
2929
                }
 
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));
 
2934
                }
 
2935
                NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
 
2936
        }
 
2937
        return NDR_ERR_SUCCESS;
 
2938
}
 
2939
 
 
2940
static enum ndr_err_code ndr_pull_svcctl_EnumServicesStatusW(struct ndr_pull *ndr, int flags, struct svcctl_EnumServicesStatusW *r)
 
2941
{
 
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);
 
2949
 
 
2950
                if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
 
2951
                        NDR_PULL_ALLOC(ndr, r->in.handle);
 
2952
                }
 
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");
 
2962
                }
 
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);
 
2966
                } else {
 
2967
                        r->in.resume_handle = NULL;
 
2968
                }
 
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);
 
2974
                }
 
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);
 
2981
        }
 
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));
 
2986
                }
 
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);
 
2990
                }
 
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");
 
2996
                }
 
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);
 
3000
                }
 
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");
 
3006
                }
 
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);
 
3011
                } else {
 
3012
                        r->out.resume_handle = NULL;
 
3013
                }
 
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);
 
3019
                }
 
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));
 
3023
                }
 
3024
        }
 
3025
        return NDR_ERR_SUCCESS;
 
3026
}
 
3027
 
 
3028
_PUBLIC_ void ndr_print_svcctl_EnumServicesStatusW(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_EnumServicesStatusW *r)
 
3029
{
 
3030
        ndr_print_struct(ndr, name, "svcctl_EnumServicesStatusW");
 
3031
        ndr->depth++;
 
3032
        if (flags & NDR_SET_VALUES) {
 
3033
                ndr->flags |= LIBNDR_PRINT_SET_VALUES;
 
3034
        }
 
3035
        if (flags & NDR_IN) {
 
3036
                ndr_print_struct(ndr, "in", "svcctl_EnumServicesStatusW");
 
3037
                ndr->depth++;
 
3038
                ndr_print_ptr(ndr, "handle", r->in.handle);
 
3039
                ndr->depth++;
 
3040
                ndr_print_policy_handle(ndr, "handle", r->in.handle);
 
3041
                ndr->depth--;
 
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);
 
3046
                ndr->depth++;
 
3047
                if (r->in.resume_handle) {
 
3048
                        ndr_print_uint32(ndr, "resume_handle", *r->in.resume_handle);
 
3049
                }
 
3050
                ndr->depth--;
 
3051
                ndr->depth--;
 
3052
        }
 
3053
        if (flags & NDR_OUT) {
 
3054
                ndr_print_struct(ndr, "out", "svcctl_EnumServicesStatusW");
 
3055
                ndr->depth++;
 
3056
                ndr_print_ptr(ndr, "service", r->out.service);
 
3057
                ndr->depth++;
 
3058
                ndr_print_array_uint8(ndr, "service", r->out.service, r->in.offered);
 
3059
                ndr->depth--;
 
3060
                ndr_print_ptr(ndr, "needed", r->out.needed);
 
3061
                ndr->depth++;
 
3062
                ndr_print_uint32(ndr, "needed", *r->out.needed);
 
3063
                ndr->depth--;
 
3064
                ndr_print_ptr(ndr, "services_returned", r->out.services_returned);
 
3065
                ndr->depth++;
 
3066
                ndr_print_uint32(ndr, "services_returned", *r->out.services_returned);
 
3067
                ndr->depth--;
 
3068
                ndr_print_ptr(ndr, "resume_handle", r->out.resume_handle);
 
3069
                ndr->depth++;
 
3070
                if (r->out.resume_handle) {
 
3071
                        ndr_print_uint32(ndr, "resume_handle", *r->out.resume_handle);
 
3072
                }
 
3073
                ndr->depth--;
 
3074
                ndr_print_WERROR(ndr, "result", r->out.result);
 
3075
                ndr->depth--;
 
3076
        }
 
3077
        ndr->depth--;
 
3078
}
 
3079
 
 
3080
static enum ndr_err_code ndr_push_svcctl_OpenSCManagerW(struct ndr_push *ndr, int flags, const struct svcctl_OpenSCManagerW *r)
 
3081
{
 
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));
 
3089
                }
 
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));
 
3096
                }
 
3097
                NDR_CHECK(ndr_push_svcctl_MgrAccessMask(ndr, NDR_SCALARS, r->in.access_mask));
 
3098
        }
 
3099
        if (flags & NDR_OUT) {
 
3100
                if (r->out.handle == NULL) {
 
3101
                        return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
 
3102
                }
 
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));
 
3105
        }
 
3106
        return NDR_ERR_SUCCESS;
 
3107
}
 
3108
 
 
3109
static enum ndr_err_code ndr_pull_svcctl_OpenSCManagerW(struct ndr_pull *ndr, int flags, struct svcctl_OpenSCManagerW *r)
 
3110
{
 
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);
 
3118
 
 
3119
                NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_MachineName));
 
3120
                if (_ptr_MachineName) {
 
3121
                        NDR_PULL_ALLOC(ndr, r->in.MachineName);
 
3122
                } else {
 
3123
                        r->in.MachineName = NULL;
 
3124
                }
 
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));
 
3132
                        }
 
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);
 
3136
                }
 
3137
                NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_DatabaseName));
 
3138
                if (_ptr_DatabaseName) {
 
3139
                        NDR_PULL_ALLOC(ndr, r->in.DatabaseName);
 
3140
                } else {
 
3141
                        r->in.DatabaseName = NULL;
 
3142
                }
 
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));
 
3150
                        }
 
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);
 
3154
                }
 
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);
 
3158
        }
 
3159
        if (flags & NDR_OUT) {
 
3160
                if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
 
3161
                        NDR_PULL_ALLOC(ndr, r->out.handle);
 
3162
                }
 
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));
 
3168
        }
 
3169
        return NDR_ERR_SUCCESS;
 
3170
}
 
3171
 
 
3172
_PUBLIC_ void ndr_print_svcctl_OpenSCManagerW(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_OpenSCManagerW *r)
 
3173
{
 
3174
        ndr_print_struct(ndr, name, "svcctl_OpenSCManagerW");
 
3175
        ndr->depth++;
 
3176
        if (flags & NDR_SET_VALUES) {
 
3177
                ndr->flags |= LIBNDR_PRINT_SET_VALUES;
 
3178
        }
 
3179
        if (flags & NDR_IN) {
 
3180
                ndr_print_struct(ndr, "in", "svcctl_OpenSCManagerW");
 
3181
                ndr->depth++;
 
3182
                ndr_print_ptr(ndr, "MachineName", r->in.MachineName);
 
3183
                ndr->depth++;
 
3184
                if (r->in.MachineName) {
 
3185
                        ndr_print_string(ndr, "MachineName", r->in.MachineName);
 
3186
                }
 
3187
                ndr->depth--;
 
3188
                ndr_print_ptr(ndr, "DatabaseName", r->in.DatabaseName);
 
3189
                ndr->depth++;
 
3190
                if (r->in.DatabaseName) {
 
3191
                        ndr_print_string(ndr, "DatabaseName", r->in.DatabaseName);
 
3192
                }
 
3193
                ndr->depth--;
 
3194
                ndr_print_svcctl_MgrAccessMask(ndr, "access_mask", r->in.access_mask);
 
3195
                ndr->depth--;
 
3196
        }
 
3197
        if (flags & NDR_OUT) {
 
3198
                ndr_print_struct(ndr, "out", "svcctl_OpenSCManagerW");
 
3199
                ndr->depth++;
 
3200
                ndr_print_ptr(ndr, "handle", r->out.handle);
 
3201
                ndr->depth++;
 
3202
                ndr_print_policy_handle(ndr, "handle", r->out.handle);
 
3203
                ndr->depth--;
 
3204
                ndr_print_WERROR(ndr, "result", r->out.result);
 
3205
                ndr->depth--;
 
3206
        }
 
3207
        ndr->depth--;
 
3208
}
 
3209
 
 
3210
static enum ndr_err_code ndr_push_svcctl_OpenServiceW(struct ndr_push *ndr, int flags, const struct svcctl_OpenServiceW *r)
 
3211
{
 
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");
 
3215
                }
 
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));
 
3222
        }
 
3223
        if (flags & NDR_OUT) {
 
3224
                if (r->out.handle == NULL) {
 
3225
                        return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
 
3226
                }
 
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));
 
3229
        }
 
3230
        return NDR_ERR_SUCCESS;
 
3231
}
 
3232
 
 
3233
static enum ndr_err_code ndr_pull_svcctl_OpenServiceW(struct ndr_pull *ndr, int flags, struct svcctl_OpenServiceW *r)
 
3234
{
 
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);
 
3239
 
 
3240
                if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
 
3241
                        NDR_PULL_ALLOC(ndr, r->in.scmanager_handle);
 
3242
                }
 
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));
 
3251
                }
 
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);
 
3257
        }
 
3258
        if (flags & NDR_OUT) {
 
3259
                if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
 
3260
                        NDR_PULL_ALLOC(ndr, r->out.handle);
 
3261
                }
 
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));
 
3267
        }
 
3268
        return NDR_ERR_SUCCESS;
 
3269
}
 
3270
 
 
3271
_PUBLIC_ void ndr_print_svcctl_OpenServiceW(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_OpenServiceW *r)
 
3272
{
 
3273
        ndr_print_struct(ndr, name, "svcctl_OpenServiceW");
 
3274
        ndr->depth++;
 
3275
        if (flags & NDR_SET_VALUES) {
 
3276
                ndr->flags |= LIBNDR_PRINT_SET_VALUES;
 
3277
        }
 
3278
        if (flags & NDR_IN) {
 
3279
                ndr_print_struct(ndr, "in", "svcctl_OpenServiceW");
 
3280
                ndr->depth++;
 
3281
                ndr_print_ptr(ndr, "scmanager_handle", r->in.scmanager_handle);
 
3282
                ndr->depth++;
 
3283
                ndr_print_policy_handle(ndr, "scmanager_handle", r->in.scmanager_handle);
 
3284
                ndr->depth--;
 
3285
                ndr_print_string(ndr, "ServiceName", r->in.ServiceName);
 
3286
                ndr_print_svcctl_ServiceAccessMask(ndr, "access_mask", r->in.access_mask);
 
3287
                ndr->depth--;
 
3288
        }
 
3289
        if (flags & NDR_OUT) {
 
3290
                ndr_print_struct(ndr, "out", "svcctl_OpenServiceW");
 
3291
                ndr->depth++;
 
3292
                ndr_print_ptr(ndr, "handle", r->out.handle);
 
3293
                ndr->depth++;
 
3294
                ndr_print_policy_handle(ndr, "handle", r->out.handle);
 
3295
                ndr->depth--;
 
3296
                ndr_print_WERROR(ndr, "result", r->out.result);
 
3297
                ndr->depth--;
 
3298
        }
 
3299
        ndr->depth--;
 
3300
}
 
3301
 
 
3302
static enum ndr_err_code ndr_push_svcctl_QueryServiceConfigW(struct ndr_push *ndr, int flags, const struct svcctl_QueryServiceConfigW *r)
 
3303
{
 
3304
        if (flags & NDR_IN) {
 
3305
                if (r->in.handle == NULL) {
 
3306
                        return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
 
3307
                }
 
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));
 
3310
        }
 
3311
        if (flags & NDR_OUT) {
 
3312
                if (r->out.query == NULL) {
 
3313
                        return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
 
3314
                }
 
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");
 
3318
                }
 
3319
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.needed));
 
3320
                NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
 
3321
        }
 
3322
        return NDR_ERR_SUCCESS;
 
3323
}
 
3324
 
 
3325
static enum ndr_err_code ndr_pull_svcctl_QueryServiceConfigW(struct ndr_pull *ndr, int flags, struct svcctl_QueryServiceConfigW *r)
 
3326
{
 
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);
 
3332
 
 
3333
                if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
 
3334
                        NDR_PULL_ALLOC(ndr, r->in.handle);
 
3335
                }
 
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");
 
3343
                }
 
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);
 
3348
        }
 
3349
        if (flags & NDR_OUT) {
 
3350
                if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
 
3351
                        NDR_PULL_ALLOC(ndr, r->out.query);
 
3352
                }
 
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);
 
3359
                }
 
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");
 
3365
                }
 
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));
 
3368
        }
 
3369
        return NDR_ERR_SUCCESS;
 
3370
}
 
3371
 
 
3372
_PUBLIC_ void ndr_print_svcctl_QueryServiceConfigW(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_QueryServiceConfigW *r)
 
3373
{
 
3374
        ndr_print_struct(ndr, name, "svcctl_QueryServiceConfigW");
 
3375
        ndr->depth++;
 
3376
        if (flags & NDR_SET_VALUES) {
 
3377
                ndr->flags |= LIBNDR_PRINT_SET_VALUES;
 
3378
        }
 
3379
        if (flags & NDR_IN) {
 
3380
                ndr_print_struct(ndr, "in", "svcctl_QueryServiceConfigW");
 
3381
                ndr->depth++;
 
3382
                ndr_print_ptr(ndr, "handle", r->in.handle);
 
3383
                ndr->depth++;
 
3384
                ndr_print_policy_handle(ndr, "handle", r->in.handle);
 
3385
                ndr->depth--;
 
3386
                ndr_print_uint32(ndr, "offered", r->in.offered);
 
3387
                ndr->depth--;
 
3388
        }
 
3389
        if (flags & NDR_OUT) {
 
3390
                ndr_print_struct(ndr, "out", "svcctl_QueryServiceConfigW");
 
3391
                ndr->depth++;
 
3392
                ndr_print_ptr(ndr, "query", r->out.query);
 
3393
                ndr->depth++;
 
3394
                ndr_print_QUERY_SERVICE_CONFIG(ndr, "query", r->out.query);
 
3395
                ndr->depth--;
 
3396
                ndr_print_ptr(ndr, "needed", r->out.needed);
 
3397
                ndr->depth++;
 
3398
                ndr_print_uint32(ndr, "needed", *r->out.needed);
 
3399
                ndr->depth--;
 
3400
                ndr_print_WERROR(ndr, "result", r->out.result);
 
3401
                ndr->depth--;
 
3402
        }
 
3403
        ndr->depth--;
 
3404
}
 
3405
 
 
3406
static enum ndr_err_code ndr_push_svcctl_QueryServiceLockStatusW(struct ndr_push *ndr, int flags, const struct svcctl_QueryServiceLockStatusW *r)
 
3407
{
 
3408
        if (flags & NDR_IN) {
 
3409
                if (r->in.handle == NULL) {
 
3410
                        return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
 
3411
                }
 
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));
 
3414
        }
 
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");
 
3418
                }
 
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");
 
3422
                }
 
3423
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.needed));
 
3424
                NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
 
3425
        }
 
3426
        return NDR_ERR_SUCCESS;
 
3427
}
 
3428
 
 
3429
static enum ndr_err_code ndr_pull_svcctl_QueryServiceLockStatusW(struct ndr_pull *ndr, int flags, struct svcctl_QueryServiceLockStatusW *r)
 
3430
{
 
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);
 
3436
 
 
3437
                if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
 
3438
                        NDR_PULL_ALLOC(ndr, r->in.handle);
 
3439
                }
 
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);
 
3449
        }
 
3450
        if (flags & NDR_OUT) {
 
3451
                if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
 
3452
                        NDR_PULL_ALLOC(ndr, r->out.lock_status);
 
3453
                }
 
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);
 
3460
                }
 
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));
 
3466
        }
 
3467
        return NDR_ERR_SUCCESS;
 
3468
}
 
3469
 
 
3470
_PUBLIC_ void ndr_print_svcctl_QueryServiceLockStatusW(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_QueryServiceLockStatusW *r)
 
3471
{
 
3472
        ndr_print_struct(ndr, name, "svcctl_QueryServiceLockStatusW");
 
3473
        ndr->depth++;
 
3474
        if (flags & NDR_SET_VALUES) {
 
3475
                ndr->flags |= LIBNDR_PRINT_SET_VALUES;
 
3476
        }
 
3477
        if (flags & NDR_IN) {
 
3478
                ndr_print_struct(ndr, "in", "svcctl_QueryServiceLockStatusW");
 
3479
                ndr->depth++;
 
3480
                ndr_print_ptr(ndr, "handle", r->in.handle);
 
3481
                ndr->depth++;
 
3482
                ndr_print_policy_handle(ndr, "handle", r->in.handle);
 
3483
                ndr->depth--;
 
3484
                ndr_print_uint32(ndr, "offered", r->in.offered);
 
3485
                ndr->depth--;
 
3486
        }
 
3487
        if (flags & NDR_OUT) {
 
3488
                ndr_print_struct(ndr, "out", "svcctl_QueryServiceLockStatusW");
 
3489
                ndr->depth++;
 
3490
                ndr_print_ptr(ndr, "lock_status", r->out.lock_status);
 
3491
                ndr->depth++;
 
3492
                ndr_print_SERVICE_LOCK_STATUS(ndr, "lock_status", r->out.lock_status);
 
3493
                ndr->depth--;
 
3494
                ndr_print_ptr(ndr, "needed", r->out.needed);
 
3495
                ndr->depth++;
 
3496
                ndr_print_uint32(ndr, "needed", *r->out.needed);
 
3497
                ndr->depth--;
 
3498
                ndr_print_WERROR(ndr, "result", r->out.result);
 
3499
                ndr->depth--;
 
3500
        }
 
3501
        ndr->depth--;
 
3502
}
 
3503
 
 
3504
static enum ndr_err_code ndr_push_svcctl_StartServiceW(struct ndr_push *ndr, int flags, const struct svcctl_StartServiceW *r)
 
3505
{
 
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");
 
3510
                }
 
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]));
 
3518
                        }
 
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]));
 
3521
                        }
 
3522
                }
 
3523
        }
 
3524
        if (flags & NDR_OUT) {
 
3525
                NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
 
3526
        }
 
3527
        return NDR_ERR_SUCCESS;
 
3528
}
 
3529
 
 
3530
static enum ndr_err_code ndr_pull_svcctl_StartServiceW(struct ndr_pull *ndr, int flags, struct svcctl_StartServiceW *r)
 
3531
{
 
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);
 
3540
                }
 
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");
 
3548
                }
 
3549
                NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_Arguments));
 
3550
                if (_ptr_Arguments) {
 
3551
                        NDR_PULL_ALLOC(ndr, r->in.Arguments);
 
3552
                } else {
 
3553
                        r->in.Arguments = NULL;
 
3554
                }
 
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]));
 
3564
                        }
 
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]));
 
3567
                        }
 
3568
                        NDR_PULL_SET_MEM_CTX(ndr, _mem_save_Arguments_1, 0);
 
3569
                        NDR_PULL_SET_MEM_CTX(ndr, _mem_save_Arguments_0, 0);
 
3570
                }
 
3571
                if (r->in.Arguments) {
 
3572
                        NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->in.Arguments, r->in.NumArgs));
 
3573
                }
 
3574
        }
 
3575
        if (flags & NDR_OUT) {
 
3576
                NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
 
3577
        }
 
3578
        return NDR_ERR_SUCCESS;
 
3579
}
 
3580
 
 
3581
_PUBLIC_ void ndr_print_svcctl_StartServiceW(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_StartServiceW *r)
 
3582
{
 
3583
        uint32_t cntr_Arguments_1;
 
3584
        ndr_print_struct(ndr, name, "svcctl_StartServiceW");
 
3585
        ndr->depth++;
 
3586
        if (flags & NDR_SET_VALUES) {
 
3587
                ndr->flags |= LIBNDR_PRINT_SET_VALUES;
 
3588
        }
 
3589
        if (flags & NDR_IN) {
 
3590
                ndr_print_struct(ndr, "in", "svcctl_StartServiceW");
 
3591
                ndr->depth++;
 
3592
                ndr_print_ptr(ndr, "handle", r->in.handle);
 
3593
                ndr->depth++;
 
3594
                ndr_print_policy_handle(ndr, "handle", r->in.handle);
 
3595
                ndr->depth--;
 
3596
                ndr_print_uint32(ndr, "NumArgs", r->in.NumArgs);
 
3597
                ndr_print_ptr(ndr, "Arguments", r->in.Arguments);
 
3598
                ndr->depth++;
 
3599
                if (r->in.Arguments) {
 
3600
                        ndr->print(ndr, "%s: ARRAY(%d)", "Arguments", (int)r->in.NumArgs);
 
3601
                        ndr->depth++;
 
3602
                        for (cntr_Arguments_1=0;cntr_Arguments_1<r->in.NumArgs;cntr_Arguments_1++) {
 
3603
                                char *idx_1=NULL;
 
3604
                                if (asprintf(&idx_1, "[%d]", cntr_Arguments_1) != -1) {
 
3605
                                        ndr_print_svcctl_ArgumentString(ndr, "Arguments", &r->in.Arguments[cntr_Arguments_1]);
 
3606
                                        free(idx_1);
 
3607
                                }
 
3608
                        }
 
3609
                        ndr->depth--;
 
3610
                }
 
3611
                ndr->depth--;
 
3612
                ndr->depth--;
 
3613
        }
 
3614
        if (flags & NDR_OUT) {
 
3615
                ndr_print_struct(ndr, "out", "svcctl_StartServiceW");
 
3616
                ndr->depth++;
 
3617
                ndr_print_WERROR(ndr, "result", r->out.result);
 
3618
                ndr->depth--;
 
3619
        }
 
3620
        ndr->depth--;
 
3621
}
 
3622
 
 
3623
static enum ndr_err_code ndr_push_svcctl_GetServiceDisplayNameW(struct ndr_push *ndr, int flags, const struct svcctl_GetServiceDisplayNameW *r)
 
3624
{
 
3625
        if (flags & NDR_IN) {
 
3626
                if (r->in.handle == NULL) {
 
3627
                        return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
 
3628
                }
 
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));
 
3636
                }
 
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));
 
3640
                }
 
3641
        }
 
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");
 
3645
                }
 
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));
 
3652
                }
 
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));
 
3656
                }
 
3657
                NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
 
3658
        }
 
3659
        return NDR_ERR_SUCCESS;
 
3660
}
 
3661
 
 
3662
static enum ndr_err_code ndr_pull_svcctl_GetServiceDisplayNameW(struct ndr_pull *ndr, int flags, struct svcctl_GetServiceDisplayNameW *r)
 
3663
{
 
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);
 
3674
 
 
3675
                if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
 
3676
                        NDR_PULL_ALLOC(ndr, r->in.handle);
 
3677
                }
 
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);
 
3685
                } else {
 
3686
                        r->in.service_name = NULL;
 
3687
                }
 
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));
 
3695
                        }
 
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);
 
3699
                }
 
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);
 
3703
                } else {
 
3704
                        r->in.display_name_length = NULL;
 
3705
                }
 
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);
 
3711
                }
 
3712
                NDR_PULL_ALLOC(ndr, r->out.display_name);
 
3713
                ZERO_STRUCTP(r->out.display_name);
 
3714
        }
 
3715
        if (flags & NDR_OUT) {
 
3716
                if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
 
3717
                        NDR_PULL_ALLOC(ndr, r->out.display_name);
 
3718
                }
 
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);
 
3724
                } else {
 
3725
                        *r->out.display_name = NULL;
 
3726
                }
 
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));
 
3734
                        }
 
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);
 
3738
                }
 
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);
 
3743
                } else {
 
3744
                        r->out.display_name_length = NULL;
 
3745
                }
 
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);
 
3751
                }
 
3752
                NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
 
3753
        }
 
3754
        return NDR_ERR_SUCCESS;
 
3755
}
 
3756
 
 
3757
_PUBLIC_ void ndr_print_svcctl_GetServiceDisplayNameW(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_GetServiceDisplayNameW *r)
 
3758
{
 
3759
        ndr_print_struct(ndr, name, "svcctl_GetServiceDisplayNameW");
 
3760
        ndr->depth++;
 
3761
        if (flags & NDR_SET_VALUES) {
 
3762
                ndr->flags |= LIBNDR_PRINT_SET_VALUES;
 
3763
        }
 
3764
        if (flags & NDR_IN) {
 
3765
                ndr_print_struct(ndr, "in", "svcctl_GetServiceDisplayNameW");
 
3766
                ndr->depth++;
 
3767
                ndr_print_ptr(ndr, "handle", r->in.handle);
 
3768
                ndr->depth++;
 
3769
                ndr_print_policy_handle(ndr, "handle", r->in.handle);
 
3770
                ndr->depth--;
 
3771
                ndr_print_ptr(ndr, "service_name", r->in.service_name);
 
3772
                ndr->depth++;
 
3773
                if (r->in.service_name) {
 
3774
                        ndr_print_string(ndr, "service_name", r->in.service_name);
 
3775
                }
 
3776
                ndr->depth--;
 
3777
                ndr_print_ptr(ndr, "display_name_length", r->in.display_name_length);
 
3778
                ndr->depth++;
 
3779
                if (r->in.display_name_length) {
 
3780
                        ndr_print_uint32(ndr, "display_name_length", *r->in.display_name_length);
 
3781
                }
 
3782
                ndr->depth--;
 
3783
                ndr->depth--;
 
3784
        }
 
3785
        if (flags & NDR_OUT) {
 
3786
                ndr_print_struct(ndr, "out", "svcctl_GetServiceDisplayNameW");
 
3787
                ndr->depth++;
 
3788
                ndr_print_ptr(ndr, "display_name", r->out.display_name);
 
3789
                ndr->depth++;
 
3790
                ndr_print_ptr(ndr, "display_name", *r->out.display_name);
 
3791
                ndr->depth++;
 
3792
                if (*r->out.display_name) {
 
3793
                        ndr_print_string(ndr, "display_name", *r->out.display_name);
 
3794
                }
 
3795
                ndr->depth--;
 
3796
                ndr->depth--;
 
3797
                ndr_print_ptr(ndr, "display_name_length", r->out.display_name_length);
 
3798
                ndr->depth++;
 
3799
                if (r->out.display_name_length) {
 
3800
                        ndr_print_uint32(ndr, "display_name_length", *r->out.display_name_length);
 
3801
                }
 
3802
                ndr->depth--;
 
3803
                ndr_print_WERROR(ndr, "result", r->out.result);
 
3804
                ndr->depth--;
 
3805
        }
 
3806
        ndr->depth--;
 
3807
}
 
3808
 
 
3809
static enum ndr_err_code ndr_push_svcctl_GetServiceKeyNameW(struct ndr_push *ndr, int flags, const struct svcctl_GetServiceKeyNameW *r)
 
3810
{
 
3811
        if (flags & NDR_IN) {
 
3812
                if (r->in.handle == NULL) {
 
3813
                        return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
 
3814
                }
 
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));
 
3822
                }
 
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));
 
3826
                }
 
3827
        }
 
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");
 
3831
                }
 
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));
 
3838
                }
 
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));
 
3842
                }
 
3843
                NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
 
3844
        }
 
3845
        return NDR_ERR_SUCCESS;
 
3846
}
 
3847
 
 
3848
static enum ndr_err_code ndr_pull_svcctl_GetServiceKeyNameW(struct ndr_pull *ndr, int flags, struct svcctl_GetServiceKeyNameW *r)
 
3849
{
 
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);
 
3860
 
 
3861
                if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
 
3862
                        NDR_PULL_ALLOC(ndr, r->in.handle);
 
3863
                }
 
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);
 
3871
                } else {
 
3872
                        r->in.service_name = NULL;
 
3873
                }
 
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));
 
3881
                        }
 
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);
 
3885
                }
 
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);
 
3889
                } else {
 
3890
                        r->in.display_name_length = NULL;
 
3891
                }
 
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);
 
3897
                }
 
3898
                NDR_PULL_ALLOC(ndr, r->out.key_name);
 
3899
                ZERO_STRUCTP(r->out.key_name);
 
3900
        }
 
3901
        if (flags & NDR_OUT) {
 
3902
                if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
 
3903
                        NDR_PULL_ALLOC(ndr, r->out.key_name);
 
3904
                }
 
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);
 
3910
                } else {
 
3911
                        *r->out.key_name = NULL;
 
3912
                }
 
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));
 
3920
                        }
 
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);
 
3924
                }
 
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);
 
3929
                } else {
 
3930
                        r->out.display_name_length = NULL;
 
3931
                }
 
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);
 
3937
                }
 
3938
                NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
 
3939
        }
 
3940
        return NDR_ERR_SUCCESS;
 
3941
}
 
3942
 
 
3943
_PUBLIC_ void ndr_print_svcctl_GetServiceKeyNameW(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_GetServiceKeyNameW *r)
 
3944
{
 
3945
        ndr_print_struct(ndr, name, "svcctl_GetServiceKeyNameW");
 
3946
        ndr->depth++;
 
3947
        if (flags & NDR_SET_VALUES) {
 
3948
                ndr->flags |= LIBNDR_PRINT_SET_VALUES;
 
3949
        }
 
3950
        if (flags & NDR_IN) {
 
3951
                ndr_print_struct(ndr, "in", "svcctl_GetServiceKeyNameW");
 
3952
                ndr->depth++;
 
3953
                ndr_print_ptr(ndr, "handle", r->in.handle);
 
3954
                ndr->depth++;
 
3955
                ndr_print_policy_handle(ndr, "handle", r->in.handle);
 
3956
                ndr->depth--;
 
3957
                ndr_print_ptr(ndr, "service_name", r->in.service_name);
 
3958
                ndr->depth++;
 
3959
                if (r->in.service_name) {
 
3960
                        ndr_print_string(ndr, "service_name", r->in.service_name);
 
3961
                }
 
3962
                ndr->depth--;
 
3963
                ndr_print_ptr(ndr, "display_name_length", r->in.display_name_length);
 
3964
                ndr->depth++;
 
3965
                if (r->in.display_name_length) {
 
3966
                        ndr_print_uint32(ndr, "display_name_length", *r->in.display_name_length);
 
3967
                }
 
3968
                ndr->depth--;
 
3969
                ndr->depth--;
 
3970
        }
 
3971
        if (flags & NDR_OUT) {
 
3972
                ndr_print_struct(ndr, "out", "svcctl_GetServiceKeyNameW");
 
3973
                ndr->depth++;
 
3974
                ndr_print_ptr(ndr, "key_name", r->out.key_name);
 
3975
                ndr->depth++;
 
3976
                ndr_print_ptr(ndr, "key_name", *r->out.key_name);
 
3977
                ndr->depth++;
 
3978
                if (*r->out.key_name) {
 
3979
                        ndr_print_string(ndr, "key_name", *r->out.key_name);
 
3980
                }
 
3981
                ndr->depth--;
 
3982
                ndr->depth--;
 
3983
                ndr_print_ptr(ndr, "display_name_length", r->out.display_name_length);
 
3984
                ndr->depth++;
 
3985
                if (r->out.display_name_length) {
 
3986
                        ndr_print_uint32(ndr, "display_name_length", *r->out.display_name_length);
 
3987
                }
 
3988
                ndr->depth--;
 
3989
                ndr_print_WERROR(ndr, "result", r->out.result);
 
3990
                ndr->depth--;
 
3991
        }
 
3992
        ndr->depth--;
 
3993
}
 
3994
 
 
3995
static enum ndr_err_code ndr_push_svcctl_SCSetServiceBitsA(struct ndr_push *ndr, int flags, const struct svcctl_SCSetServiceBitsA *r)
 
3996
{
 
3997
        if (flags & NDR_IN) {
 
3998
                if (r->in.handle == NULL) {
 
3999
                        return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
 
4000
                }
 
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));
 
4005
        }
 
4006
        if (flags & NDR_OUT) {
 
4007
                NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
 
4008
        }
 
4009
        return NDR_ERR_SUCCESS;
 
4010
}
 
4011
 
 
4012
static enum ndr_err_code ndr_pull_svcctl_SCSetServiceBitsA(struct ndr_pull *ndr, int flags, struct svcctl_SCSetServiceBitsA *r)
 
4013
{
 
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);
 
4018
                }
 
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));
 
4026
        }
 
4027
        if (flags & NDR_OUT) {
 
4028
                NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
 
4029
        }
 
4030
        return NDR_ERR_SUCCESS;
 
4031
}
 
4032
 
 
4033
_PUBLIC_ void ndr_print_svcctl_SCSetServiceBitsA(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_SCSetServiceBitsA *r)
 
4034
{
 
4035
        ndr_print_struct(ndr, name, "svcctl_SCSetServiceBitsA");
 
4036
        ndr->depth++;
 
4037
        if (flags & NDR_SET_VALUES) {
 
4038
                ndr->flags |= LIBNDR_PRINT_SET_VALUES;
 
4039
        }
 
4040
        if (flags & NDR_IN) {
 
4041
                ndr_print_struct(ndr, "in", "svcctl_SCSetServiceBitsA");
 
4042
                ndr->depth++;
 
4043
                ndr_print_ptr(ndr, "handle", r->in.handle);
 
4044
                ndr->depth++;
 
4045
                ndr_print_policy_handle(ndr, "handle", r->in.handle);
 
4046
                ndr->depth--;
 
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);
 
4050
                ndr->depth--;
 
4051
        }
 
4052
        if (flags & NDR_OUT) {
 
4053
                ndr_print_struct(ndr, "out", "svcctl_SCSetServiceBitsA");
 
4054
                ndr->depth++;
 
4055
                ndr_print_WERROR(ndr, "result", r->out.result);
 
4056
                ndr->depth--;
 
4057
        }
 
4058
        ndr->depth--;
 
4059
}
 
4060
 
 
4061
static enum ndr_err_code ndr_push_svcctl_ChangeServiceConfigA(struct ndr_push *ndr, int flags, const struct svcctl_ChangeServiceConfigA *r)
 
4062
{
 
4063
        if (flags & NDR_IN) {
 
4064
                if (r->in.handle == NULL) {
 
4065
                        return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
 
4066
                }
 
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));
 
4077
                }
 
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));
 
4084
                }
 
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));
 
4091
                }
 
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));
 
4098
                }
 
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));
 
4105
                }
 
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));
 
4112
                }
 
4113
        }
 
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");
 
4117
                }
 
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));
 
4120
        }
 
4121
        return NDR_ERR_SUCCESS;
 
4122
}
 
4123
 
 
4124
static enum ndr_err_code ndr_pull_svcctl_ChangeServiceConfigA(struct ndr_pull *ndr, int flags, struct svcctl_ChangeServiceConfigA *r)
 
4125
{
 
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);
 
4142
 
 
4143
                if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
 
4144
                        NDR_PULL_ALLOC(ndr, r->in.handle);
 
4145
                }
 
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);
 
4156
                } else {
 
4157
                        r->in.binary_path = NULL;
 
4158
                }
 
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));
 
4166
                        }
 
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);
 
4170
                }
 
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);
 
4174
                } else {
 
4175
                        r->in.load_order_group = NULL;
 
4176
                }
 
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));
 
4184
                        }
 
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);
 
4188
                }
 
4189
                NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_dependencies));
 
4190
                if (_ptr_dependencies) {
 
4191
                        NDR_PULL_ALLOC(ndr, r->in.dependencies);
 
4192
                } else {
 
4193
                        r->in.dependencies = NULL;
 
4194
                }
 
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));
 
4202
                        }
 
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);
 
4206
                }
 
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);
 
4210
                } else {
 
4211
                        r->in.service_start_name = NULL;
 
4212
                }
 
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));
 
4220
                        }
 
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);
 
4224
                }
 
4225
                NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_password));
 
4226
                if (_ptr_password) {
 
4227
                        NDR_PULL_ALLOC(ndr, r->in.password);
 
4228
                } else {
 
4229
                        r->in.password = NULL;
 
4230
                }
 
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));
 
4238
                        }
 
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);
 
4242
                }
 
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);
 
4246
                } else {
 
4247
                        r->in.display_name = NULL;
 
4248
                }
 
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));
 
4256
                        }
 
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);
 
4260
                }
 
4261
                NDR_PULL_ALLOC(ndr, r->out.tag_id);
 
4262
                ZERO_STRUCTP(r->out.tag_id);
 
4263
        }
 
4264
        if (flags & NDR_OUT) {
 
4265
                if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
 
4266
                        NDR_PULL_ALLOC(ndr, r->out.tag_id);
 
4267
                }
 
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));
 
4273
        }
 
4274
        return NDR_ERR_SUCCESS;
 
4275
}
 
4276
 
 
4277
_PUBLIC_ void ndr_print_svcctl_ChangeServiceConfigA(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_ChangeServiceConfigA *r)
 
4278
{
 
4279
        ndr_print_struct(ndr, name, "svcctl_ChangeServiceConfigA");
 
4280
        ndr->depth++;
 
4281
        if (flags & NDR_SET_VALUES) {
 
4282
                ndr->flags |= LIBNDR_PRINT_SET_VALUES;
 
4283
        }
 
4284
        if (flags & NDR_IN) {
 
4285
                ndr_print_struct(ndr, "in", "svcctl_ChangeServiceConfigA");
 
4286
                ndr->depth++;
 
4287
                ndr_print_ptr(ndr, "handle", r->in.handle);
 
4288
                ndr->depth++;
 
4289
                ndr_print_policy_handle(ndr, "handle", r->in.handle);
 
4290
                ndr->depth--;
 
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);
 
4295
                ndr->depth++;
 
4296
                if (r->in.binary_path) {
 
4297
                        ndr_print_string(ndr, "binary_path", r->in.binary_path);
 
4298
                }
 
4299
                ndr->depth--;
 
4300
                ndr_print_ptr(ndr, "load_order_group", r->in.load_order_group);
 
4301
                ndr->depth++;
 
4302
                if (r->in.load_order_group) {
 
4303
                        ndr_print_string(ndr, "load_order_group", r->in.load_order_group);
 
4304
                }
 
4305
                ndr->depth--;
 
4306
                ndr_print_ptr(ndr, "dependencies", r->in.dependencies);
 
4307
                ndr->depth++;
 
4308
                if (r->in.dependencies) {
 
4309
                        ndr_print_string(ndr, "dependencies", r->in.dependencies);
 
4310
                }
 
4311
                ndr->depth--;
 
4312
                ndr_print_ptr(ndr, "service_start_name", r->in.service_start_name);
 
4313
                ndr->depth++;
 
4314
                if (r->in.service_start_name) {
 
4315
                        ndr_print_string(ndr, "service_start_name", r->in.service_start_name);
 
4316
                }
 
4317
                ndr->depth--;
 
4318
                ndr_print_ptr(ndr, "password", r->in.password);
 
4319
                ndr->depth++;
 
4320
                if (r->in.password) {
 
4321
                        ndr_print_string(ndr, "password", r->in.password);
 
4322
                }
 
4323
                ndr->depth--;
 
4324
                ndr_print_ptr(ndr, "display_name", r->in.display_name);
 
4325
                ndr->depth++;
 
4326
                if (r->in.display_name) {
 
4327
                        ndr_print_string(ndr, "display_name", r->in.display_name);
 
4328
                }
 
4329
                ndr->depth--;
 
4330
                ndr->depth--;
 
4331
        }
 
4332
        if (flags & NDR_OUT) {
 
4333
                ndr_print_struct(ndr, "out", "svcctl_ChangeServiceConfigA");
 
4334
                ndr->depth++;
 
4335
                ndr_print_ptr(ndr, "tag_id", r->out.tag_id);
 
4336
                ndr->depth++;
 
4337
                ndr_print_uint32(ndr, "tag_id", *r->out.tag_id);
 
4338
                ndr->depth--;
 
4339
                ndr_print_WERROR(ndr, "result", r->out.result);
 
4340
                ndr->depth--;
 
4341
        }
 
4342
        ndr->depth--;
 
4343
}
 
4344
 
 
4345
static enum ndr_err_code ndr_push_svcctl_CreateServiceA(struct ndr_push *ndr, int flags, const struct svcctl_CreateServiceA *r)
 
4346
{
 
4347
        if (flags & NDR_IN) {
 
4348
                if (r->in.handle == NULL) {
 
4349
                        return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
 
4350
                }
 
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));
 
4358
                }
 
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));
 
4365
                }
 
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));
 
4376
                }
 
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));
 
4383
                }
 
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));
 
4390
                }
 
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));
 
4397
                }
 
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));
 
4404
                }
 
4405
        }
 
4406
        if (flags & NDR_OUT) {
 
4407
                NDR_CHECK(ndr_push_unique_ptr(ndr, r->out.TagId));
 
4408
                if (r->out.TagId) {
 
4409
                        NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.TagId));
 
4410
                }
 
4411
                NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
 
4412
        }
 
4413
        return NDR_ERR_SUCCESS;
 
4414
}
 
4415
 
 
4416
static enum ndr_err_code ndr_pull_svcctl_CreateServiceA(struct ndr_pull *ndr, int flags, struct svcctl_CreateServiceA *r)
 
4417
{
 
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);
 
4437
 
 
4438
                if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
 
4439
                        NDR_PULL_ALLOC(ndr, r->in.handle);
 
4440
                }
 
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);
 
4448
                } else {
 
4449
                        r->in.ServiceName = NULL;
 
4450
                }
 
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));
 
4458
                        }
 
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);
 
4462
                }
 
4463
                NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_DisplayName));
 
4464
                if (_ptr_DisplayName) {
 
4465
                        NDR_PULL_ALLOC(ndr, r->in.DisplayName);
 
4466
                } else {
 
4467
                        r->in.DisplayName = NULL;
 
4468
                }
 
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));
 
4476
                        }
 
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);
 
4480
                }
 
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);
 
4488
                } else {
 
4489
                        r->in.binary_path = NULL;
 
4490
                }
 
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));
 
4498
                        }
 
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);
 
4502
                }
 
4503
                NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_LoadOrderGroupKey));
 
4504
                if (_ptr_LoadOrderGroupKey) {
 
4505
                        NDR_PULL_ALLOC(ndr, r->in.LoadOrderGroupKey);
 
4506
                } else {
 
4507
                        r->in.LoadOrderGroupKey = NULL;
 
4508
                }
 
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));
 
4516
                        }
 
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);
 
4520
                }
 
4521
                NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_dependencies));
 
4522
                if (_ptr_dependencies) {
 
4523
                        NDR_PULL_ALLOC(ndr, r->in.dependencies);
 
4524
                } else {
 
4525
                        r->in.dependencies = NULL;
 
4526
                }
 
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));
 
4534
                        }
 
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);
 
4538
                }
 
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);
 
4542
                } else {
 
4543
                        r->in.service_start_name = NULL;
 
4544
                }
 
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));
 
4552
                        }
 
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);
 
4556
                }
 
4557
                NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_password));
 
4558
                if (_ptr_password) {
 
4559
                        NDR_PULL_ALLOC(ndr, r->in.password);
 
4560
                } else {
 
4561
                        r->in.password = NULL;
 
4562
                }
 
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));
 
4570
                        }
 
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);
 
4574
                }
 
4575
        }
 
4576
        if (flags & NDR_OUT) {
 
4577
                NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_TagId));
 
4578
                if (_ptr_TagId) {
 
4579
                        NDR_PULL_ALLOC(ndr, r->out.TagId);
 
4580
                } else {
 
4581
                        r->out.TagId = NULL;
 
4582
                }
 
4583
                if (r->out.TagId) {
 
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);
 
4588
                }
 
4589
                NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
 
4590
        }
 
4591
        return NDR_ERR_SUCCESS;
 
4592
}
 
4593
 
 
4594
_PUBLIC_ void ndr_print_svcctl_CreateServiceA(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_CreateServiceA *r)
 
4595
{
 
4596
        ndr_print_struct(ndr, name, "svcctl_CreateServiceA");
 
4597
        ndr->depth++;
 
4598
        if (flags & NDR_SET_VALUES) {
 
4599
                ndr->flags |= LIBNDR_PRINT_SET_VALUES;
 
4600
        }
 
4601
        if (flags & NDR_IN) {
 
4602
                ndr_print_struct(ndr, "in", "svcctl_CreateServiceA");
 
4603
                ndr->depth++;
 
4604
                ndr_print_ptr(ndr, "handle", r->in.handle);
 
4605
                ndr->depth++;
 
4606
                ndr_print_policy_handle(ndr, "handle", r->in.handle);
 
4607
                ndr->depth--;
 
4608
                ndr_print_ptr(ndr, "ServiceName", r->in.ServiceName);
 
4609
                ndr->depth++;
 
4610
                if (r->in.ServiceName) {
 
4611
                        ndr_print_string(ndr, "ServiceName", r->in.ServiceName);
 
4612
                }
 
4613
                ndr->depth--;
 
4614
                ndr_print_ptr(ndr, "DisplayName", r->in.DisplayName);
 
4615
                ndr->depth++;
 
4616
                if (r->in.DisplayName) {
 
4617
                        ndr_print_string(ndr, "DisplayName", r->in.DisplayName);
 
4618
                }
 
4619
                ndr->depth--;
 
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);
 
4625
                ndr->depth++;
 
4626
                if (r->in.binary_path) {
 
4627
                        ndr_print_string(ndr, "binary_path", r->in.binary_path);
 
4628
                }
 
4629
                ndr->depth--;
 
4630
                ndr_print_ptr(ndr, "LoadOrderGroupKey", r->in.LoadOrderGroupKey);
 
4631
                ndr->depth++;
 
4632
                if (r->in.LoadOrderGroupKey) {
 
4633
                        ndr_print_string(ndr, "LoadOrderGroupKey", r->in.LoadOrderGroupKey);
 
4634
                }
 
4635
                ndr->depth--;
 
4636
                ndr_print_ptr(ndr, "dependencies", r->in.dependencies);
 
4637
                ndr->depth++;
 
4638
                if (r->in.dependencies) {
 
4639
                        ndr_print_string(ndr, "dependencies", r->in.dependencies);
 
4640
                }
 
4641
                ndr->depth--;
 
4642
                ndr_print_ptr(ndr, "service_start_name", r->in.service_start_name);
 
4643
                ndr->depth++;
 
4644
                if (r->in.service_start_name) {
 
4645
                        ndr_print_string(ndr, "service_start_name", r->in.service_start_name);
 
4646
                }
 
4647
                ndr->depth--;
 
4648
                ndr_print_ptr(ndr, "password", r->in.password);
 
4649
                ndr->depth++;
 
4650
                if (r->in.password) {
 
4651
                        ndr_print_string(ndr, "password", r->in.password);
 
4652
                }
 
4653
                ndr->depth--;
 
4654
                ndr->depth--;
 
4655
        }
 
4656
        if (flags & NDR_OUT) {
 
4657
                ndr_print_struct(ndr, "out", "svcctl_CreateServiceA");
 
4658
                ndr->depth++;
 
4659
                ndr_print_ptr(ndr, "TagId", r->out.TagId);
 
4660
                ndr->depth++;
 
4661
                if (r->out.TagId) {
 
4662
                        ndr_print_uint32(ndr, "TagId", *r->out.TagId);
 
4663
                }
 
4664
                ndr->depth--;
 
4665
                ndr_print_WERROR(ndr, "result", r->out.result);
 
4666
                ndr->depth--;
 
4667
        }
 
4668
        ndr->depth--;
 
4669
}
 
4670
 
 
4671
static enum ndr_err_code ndr_push_svcctl_EnumDependentServicesA(struct ndr_push *ndr, int flags, const struct svcctl_EnumDependentServicesA *r)
 
4672
{
 
4673
        if (flags & NDR_IN) {
 
4674
                if (r->in.service == NULL) {
 
4675
                        return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
 
4676
                }
 
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));
 
4680
        }
 
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));
 
4685
                }
 
4686
                if (r->out.needed == NULL) {
 
4687
                        return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
 
4688
                }
 
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");
 
4692
                }
 
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));
 
4695
        }
 
4696
        return NDR_ERR_SUCCESS;
 
4697
}
 
4698
 
 
4699
static enum ndr_err_code ndr_pull_svcctl_EnumDependentServicesA(struct ndr_pull *ndr, int flags, struct svcctl_EnumDependentServicesA *r)
 
4700
{
 
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);
 
4708
 
 
4709
                if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
 
4710
                        NDR_PULL_ALLOC(ndr, r->in.service);
 
4711
                }
 
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);
 
4722
        }
 
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);
 
4727
                } else {
 
4728
                        r->out.service_status = NULL;
 
4729
                }
 
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);
 
4735
                }
 
4736
                if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
 
4737
                        NDR_PULL_ALLOC(ndr, r->out.needed);
 
4738
                }
 
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);
 
4745
                }
 
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));
 
4751
        }
 
4752
        return NDR_ERR_SUCCESS;
 
4753
}
 
4754
 
 
4755
_PUBLIC_ void ndr_print_svcctl_EnumDependentServicesA(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_EnumDependentServicesA *r)
 
4756
{
 
4757
        ndr_print_struct(ndr, name, "svcctl_EnumDependentServicesA");
 
4758
        ndr->depth++;
 
4759
        if (flags & NDR_SET_VALUES) {
 
4760
                ndr->flags |= LIBNDR_PRINT_SET_VALUES;
 
4761
        }
 
4762
        if (flags & NDR_IN) {
 
4763
                ndr_print_struct(ndr, "in", "svcctl_EnumDependentServicesA");
 
4764
                ndr->depth++;
 
4765
                ndr_print_ptr(ndr, "service", r->in.service);
 
4766
                ndr->depth++;
 
4767
                ndr_print_policy_handle(ndr, "service", r->in.service);
 
4768
                ndr->depth--;
 
4769
                ndr_print_svcctl_ServiceState(ndr, "state", r->in.state);
 
4770
                ndr_print_uint32(ndr, "offered", r->in.offered);
 
4771
                ndr->depth--;
 
4772
        }
 
4773
        if (flags & NDR_OUT) {
 
4774
                ndr_print_struct(ndr, "out", "svcctl_EnumDependentServicesA");
 
4775
                ndr->depth++;
 
4776
                ndr_print_ptr(ndr, "service_status", r->out.service_status);
 
4777
                ndr->depth++;
 
4778
                if (r->out.service_status) {
 
4779
                        ndr_print_ENUM_SERVICE_STATUSA(ndr, "service_status", r->out.service_status);
 
4780
                }
 
4781
                ndr->depth--;
 
4782
                ndr_print_ptr(ndr, "needed", r->out.needed);
 
4783
                ndr->depth++;
 
4784
                ndr_print_uint32(ndr, "needed", *r->out.needed);
 
4785
                ndr->depth--;
 
4786
                ndr_print_ptr(ndr, "services_returned", r->out.services_returned);
 
4787
                ndr->depth++;
 
4788
                ndr_print_uint32(ndr, "services_returned", *r->out.services_returned);
 
4789
                ndr->depth--;
 
4790
                ndr_print_WERROR(ndr, "result", r->out.result);
 
4791
                ndr->depth--;
 
4792
        }
 
4793
        ndr->depth--;
 
4794
}
 
4795
 
 
4796
static enum ndr_err_code ndr_push_svcctl_EnumServicesStatusA(struct ndr_push *ndr, int flags, const struct svcctl_EnumServicesStatusA *r)
 
4797
{
 
4798
        if (flags & NDR_IN) {
 
4799
                if (r->in.handle == NULL) {
 
4800
                        return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
 
4801
                }
 
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));
 
4809
                }
 
4810
        }
 
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");
 
4816
                }
 
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");
 
4820
                }
 
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));
 
4825
                }
 
4826
                NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
 
4827
        }
 
4828
        return NDR_ERR_SUCCESS;
 
4829
}
 
4830
 
 
4831
static enum ndr_err_code ndr_pull_svcctl_EnumServicesStatusA(struct ndr_pull *ndr, int flags, struct svcctl_EnumServicesStatusA *r)
 
4832
{
 
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);
 
4840
 
 
4841
                if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
 
4842
                        NDR_PULL_ALLOC(ndr, r->in.handle);
 
4843
                }
 
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);
 
4854
                } else {
 
4855
                        r->in.resume_handle = NULL;
 
4856
                }
 
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);
 
4862
                }
 
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);
 
4867
        }
 
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);
 
4874
                }
 
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);
 
4881
                }
 
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);
 
4889
                } else {
 
4890
                        r->out.resume_handle = NULL;
 
4891
                }
 
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);
 
4897
                }
 
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));
 
4901
                }
 
4902
        }
 
4903
        return NDR_ERR_SUCCESS;
 
4904
}
 
4905
 
 
4906
_PUBLIC_ void ndr_print_svcctl_EnumServicesStatusA(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_EnumServicesStatusA *r)
 
4907
{
 
4908
        ndr_print_struct(ndr, name, "svcctl_EnumServicesStatusA");
 
4909
        ndr->depth++;
 
4910
        if (flags & NDR_SET_VALUES) {
 
4911
                ndr->flags |= LIBNDR_PRINT_SET_VALUES;
 
4912
        }
 
4913
        if (flags & NDR_IN) {
 
4914
                ndr_print_struct(ndr, "in", "svcctl_EnumServicesStatusA");
 
4915
                ndr->depth++;
 
4916
                ndr_print_ptr(ndr, "handle", r->in.handle);
 
4917
                ndr->depth++;
 
4918
                ndr_print_policy_handle(ndr, "handle", r->in.handle);
 
4919
                ndr->depth--;
 
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);
 
4924
                ndr->depth++;
 
4925
                if (r->in.resume_handle) {
 
4926
                        ndr_print_uint32(ndr, "resume_handle", *r->in.resume_handle);
 
4927
                }
 
4928
                ndr->depth--;
 
4929
                ndr->depth--;
 
4930
        }
 
4931
        if (flags & NDR_OUT) {
 
4932
                ndr_print_struct(ndr, "out", "svcctl_EnumServicesStatusA");
 
4933
                ndr->depth++;
 
4934
                ndr_print_array_uint8(ndr, "service", r->out.service, r->in.offered);
 
4935
                ndr_print_ptr(ndr, "needed", r->out.needed);
 
4936
                ndr->depth++;
 
4937
                ndr_print_uint32(ndr, "needed", *r->out.needed);
 
4938
                ndr->depth--;
 
4939
                ndr_print_ptr(ndr, "services_returned", r->out.services_returned);
 
4940
                ndr->depth++;
 
4941
                ndr_print_uint32(ndr, "services_returned", *r->out.services_returned);
 
4942
                ndr->depth--;
 
4943
                ndr_print_ptr(ndr, "resume_handle", r->out.resume_handle);
 
4944
                ndr->depth++;
 
4945
                if (r->out.resume_handle) {
 
4946
                        ndr_print_uint32(ndr, "resume_handle", *r->out.resume_handle);
 
4947
                }
 
4948
                ndr->depth--;
 
4949
                ndr_print_WERROR(ndr, "result", r->out.result);
 
4950
                ndr->depth--;
 
4951
        }
 
4952
        ndr->depth--;
 
4953
}
 
4954
 
 
4955
static enum ndr_err_code ndr_push_svcctl_OpenSCManagerA(struct ndr_push *ndr, int flags, const struct svcctl_OpenSCManagerA *r)
 
4956
{
 
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));
 
4964
                }
 
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));
 
4971
                }
 
4972
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.access_mask));
 
4973
        }
 
4974
        if (flags & NDR_OUT) {
 
4975
                if (r->out.handle == NULL) {
 
4976
                        return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
 
4977
                }
 
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));
 
4980
        }
 
4981
        return NDR_ERR_SUCCESS;
 
4982
}
 
4983
 
 
4984
static enum ndr_err_code ndr_pull_svcctl_OpenSCManagerA(struct ndr_pull *ndr, int flags, struct svcctl_OpenSCManagerA *r)
 
4985
{
 
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);
 
4993
 
 
4994
                NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_MachineName));
 
4995
                if (_ptr_MachineName) {
 
4996
                        NDR_PULL_ALLOC(ndr, r->in.MachineName);
 
4997
                } else {
 
4998
                        r->in.MachineName = NULL;
 
4999
                }
 
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));
 
5007
                        }
 
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);
 
5011
                }
 
5012
                NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_DatabaseName));
 
5013
                if (_ptr_DatabaseName) {
 
5014
                        NDR_PULL_ALLOC(ndr, r->in.DatabaseName);
 
5015
                } else {
 
5016
                        r->in.DatabaseName = NULL;
 
5017
                }
 
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));
 
5025
                        }
 
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);
 
5029
                }
 
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);
 
5033
        }
 
5034
        if (flags & NDR_OUT) {
 
5035
                if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
 
5036
                        NDR_PULL_ALLOC(ndr, r->out.handle);
 
5037
                }
 
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));
 
5043
        }
 
5044
        return NDR_ERR_SUCCESS;
 
5045
}
 
5046
 
 
5047
_PUBLIC_ void ndr_print_svcctl_OpenSCManagerA(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_OpenSCManagerA *r)
 
5048
{
 
5049
        ndr_print_struct(ndr, name, "svcctl_OpenSCManagerA");
 
5050
        ndr->depth++;
 
5051
        if (flags & NDR_SET_VALUES) {
 
5052
                ndr->flags |= LIBNDR_PRINT_SET_VALUES;
 
5053
        }
 
5054
        if (flags & NDR_IN) {
 
5055
                ndr_print_struct(ndr, "in", "svcctl_OpenSCManagerA");
 
5056
                ndr->depth++;
 
5057
                ndr_print_ptr(ndr, "MachineName", r->in.MachineName);
 
5058
                ndr->depth++;
 
5059
                if (r->in.MachineName) {
 
5060
                        ndr_print_string(ndr, "MachineName", r->in.MachineName);
 
5061
                }
 
5062
                ndr->depth--;
 
5063
                ndr_print_ptr(ndr, "DatabaseName", r->in.DatabaseName);
 
5064
                ndr->depth++;
 
5065
                if (r->in.DatabaseName) {
 
5066
                        ndr_print_string(ndr, "DatabaseName", r->in.DatabaseName);
 
5067
                }
 
5068
                ndr->depth--;
 
5069
                ndr_print_uint32(ndr, "access_mask", r->in.access_mask);
 
5070
                ndr->depth--;
 
5071
        }
 
5072
        if (flags & NDR_OUT) {
 
5073
                ndr_print_struct(ndr, "out", "svcctl_OpenSCManagerA");
 
5074
                ndr->depth++;
 
5075
                ndr_print_ptr(ndr, "handle", r->out.handle);
 
5076
                ndr->depth++;
 
5077
                ndr_print_policy_handle(ndr, "handle", r->out.handle);
 
5078
                ndr->depth--;
 
5079
                ndr_print_WERROR(ndr, "result", r->out.result);
 
5080
                ndr->depth--;
 
5081
        }
 
5082
        ndr->depth--;
 
5083
}
 
5084
 
 
5085
static enum ndr_err_code ndr_push_svcctl_OpenServiceA(struct ndr_push *ndr, int flags, const struct svcctl_OpenServiceA *r)
 
5086
{
 
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");
 
5090
                }
 
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));
 
5098
                }
 
5099
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.access_mask));
 
5100
        }
 
5101
        if (flags & NDR_OUT) {
 
5102
                NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
 
5103
        }
 
5104
        return NDR_ERR_SUCCESS;
 
5105
}
 
5106
 
 
5107
static enum ndr_err_code ndr_pull_svcctl_OpenServiceA(struct ndr_pull *ndr, int flags, struct svcctl_OpenServiceA *r)
 
5108
{
 
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);
 
5115
                }
 
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);
 
5123
                } else {
 
5124
                        r->in.ServiceName = NULL;
 
5125
                }
 
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));
 
5133
                        }
 
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);
 
5137
                }
 
5138
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.access_mask));
 
5139
        }
 
5140
        if (flags & NDR_OUT) {
 
5141
                NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
 
5142
        }
 
5143
        return NDR_ERR_SUCCESS;
 
5144
}
 
5145
 
 
5146
_PUBLIC_ void ndr_print_svcctl_OpenServiceA(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_OpenServiceA *r)
 
5147
{
 
5148
        ndr_print_struct(ndr, name, "svcctl_OpenServiceA");
 
5149
        ndr->depth++;
 
5150
        if (flags & NDR_SET_VALUES) {
 
5151
                ndr->flags |= LIBNDR_PRINT_SET_VALUES;
 
5152
        }
 
5153
        if (flags & NDR_IN) {
 
5154
                ndr_print_struct(ndr, "in", "svcctl_OpenServiceA");
 
5155
                ndr->depth++;
 
5156
                ndr_print_ptr(ndr, "scmanager_handle", r->in.scmanager_handle);
 
5157
                ndr->depth++;
 
5158
                ndr_print_policy_handle(ndr, "scmanager_handle", r->in.scmanager_handle);
 
5159
                ndr->depth--;
 
5160
                ndr_print_ptr(ndr, "ServiceName", r->in.ServiceName);
 
5161
                ndr->depth++;
 
5162
                if (r->in.ServiceName) {
 
5163
                        ndr_print_string(ndr, "ServiceName", r->in.ServiceName);
 
5164
                }
 
5165
                ndr->depth--;
 
5166
                ndr_print_uint32(ndr, "access_mask", r->in.access_mask);
 
5167
                ndr->depth--;
 
5168
        }
 
5169
        if (flags & NDR_OUT) {
 
5170
                ndr_print_struct(ndr, "out", "svcctl_OpenServiceA");
 
5171
                ndr->depth++;
 
5172
                ndr_print_WERROR(ndr, "result", r->out.result);
 
5173
                ndr->depth--;
 
5174
        }
 
5175
        ndr->depth--;
 
5176
}
 
5177
 
 
5178
static enum ndr_err_code ndr_push_svcctl_QueryServiceConfigA(struct ndr_push *ndr, int flags, const struct svcctl_QueryServiceConfigA *r)
 
5179
{
 
5180
        if (flags & NDR_IN) {
 
5181
                if (r->in.handle == NULL) {
 
5182
                        return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
 
5183
                }
 
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));
 
5186
        }
 
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");
 
5191
                }
 
5192
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.needed));
 
5193
                NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
 
5194
        }
 
5195
        return NDR_ERR_SUCCESS;
 
5196
}
 
5197
 
 
5198
static enum ndr_err_code ndr_pull_svcctl_QueryServiceConfigA(struct ndr_pull *ndr, int flags, struct svcctl_QueryServiceConfigA *r)
 
5199
{
 
5200
        TALLOC_CTX *_mem_save_handle_0;
 
5201
        TALLOC_CTX *_mem_save_needed_0;
 
5202
        if (flags & NDR_IN) {
 
5203
                ZERO_STRUCT(r->out);
 
5204
 
 
5205
                if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
 
5206
                        NDR_PULL_ALLOC(ndr, r->in.handle);
 
5207
                }
 
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);
 
5215
        }
 
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);
 
5221
                }
 
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));
 
5227
        }
 
5228
        return NDR_ERR_SUCCESS;
 
5229
}
 
5230
 
 
5231
_PUBLIC_ void ndr_print_svcctl_QueryServiceConfigA(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_QueryServiceConfigA *r)
 
5232
{
 
5233
        ndr_print_struct(ndr, name, "svcctl_QueryServiceConfigA");
 
5234
        ndr->depth++;
 
5235
        if (flags & NDR_SET_VALUES) {
 
5236
                ndr->flags |= LIBNDR_PRINT_SET_VALUES;
 
5237
        }
 
5238
        if (flags & NDR_IN) {
 
5239
                ndr_print_struct(ndr, "in", "svcctl_QueryServiceConfigA");
 
5240
                ndr->depth++;
 
5241
                ndr_print_ptr(ndr, "handle", r->in.handle);
 
5242
                ndr->depth++;
 
5243
                ndr_print_policy_handle(ndr, "handle", r->in.handle);
 
5244
                ndr->depth--;
 
5245
                ndr_print_uint32(ndr, "offered", r->in.offered);
 
5246
                ndr->depth--;
 
5247
        }
 
5248
        if (flags & NDR_OUT) {
 
5249
                ndr_print_struct(ndr, "out", "svcctl_QueryServiceConfigA");
 
5250
                ndr->depth++;
 
5251
                ndr_print_array_uint8(ndr, "query", r->out.query, r->in.offered);
 
5252
                ndr_print_ptr(ndr, "needed", r->out.needed);
 
5253
                ndr->depth++;
 
5254
                ndr_print_uint32(ndr, "needed", *r->out.needed);
 
5255
                ndr->depth--;
 
5256
                ndr_print_WERROR(ndr, "result", r->out.result);
 
5257
                ndr->depth--;
 
5258
        }
 
5259
        ndr->depth--;
 
5260
}
 
5261
 
 
5262
static enum ndr_err_code ndr_push_svcctl_QueryServiceLockStatusA(struct ndr_push *ndr, int flags, const struct svcctl_QueryServiceLockStatusA *r)
 
5263
{
 
5264
        if (flags & NDR_IN) {
 
5265
                if (r->in.handle == NULL) {
 
5266
                        return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
 
5267
                }
 
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));
 
5270
        }
 
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");
 
5274
                }
 
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");
 
5278
                }
 
5279
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.needed));
 
5280
                NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
 
5281
        }
 
5282
        return NDR_ERR_SUCCESS;
 
5283
}
 
5284
 
 
5285
static enum ndr_err_code ndr_pull_svcctl_QueryServiceLockStatusA(struct ndr_pull *ndr, int flags, struct svcctl_QueryServiceLockStatusA *r)
 
5286
{
 
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);
 
5292
 
 
5293
                if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
 
5294
                        NDR_PULL_ALLOC(ndr, r->in.handle);
 
5295
                }
 
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);
 
5305
        }
 
5306
        if (flags & NDR_OUT) {
 
5307
                if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
 
5308
                        NDR_PULL_ALLOC(ndr, r->out.lock_status);
 
5309
                }
 
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);
 
5316
                }
 
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));
 
5322
        }
 
5323
        return NDR_ERR_SUCCESS;
 
5324
}
 
5325
 
 
5326
_PUBLIC_ void ndr_print_svcctl_QueryServiceLockStatusA(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_QueryServiceLockStatusA *r)
 
5327
{
 
5328
        ndr_print_struct(ndr, name, "svcctl_QueryServiceLockStatusA");
 
5329
        ndr->depth++;
 
5330
        if (flags & NDR_SET_VALUES) {
 
5331
                ndr->flags |= LIBNDR_PRINT_SET_VALUES;
 
5332
        }
 
5333
        if (flags & NDR_IN) {
 
5334
                ndr_print_struct(ndr, "in", "svcctl_QueryServiceLockStatusA");
 
5335
                ndr->depth++;
 
5336
                ndr_print_ptr(ndr, "handle", r->in.handle);
 
5337
                ndr->depth++;
 
5338
                ndr_print_policy_handle(ndr, "handle", r->in.handle);
 
5339
                ndr->depth--;
 
5340
                ndr_print_uint32(ndr, "offered", r->in.offered);
 
5341
                ndr->depth--;
 
5342
        }
 
5343
        if (flags & NDR_OUT) {
 
5344
                ndr_print_struct(ndr, "out", "svcctl_QueryServiceLockStatusA");
 
5345
                ndr->depth++;
 
5346
                ndr_print_ptr(ndr, "lock_status", r->out.lock_status);
 
5347
                ndr->depth++;
 
5348
                ndr_print_SERVICE_LOCK_STATUS(ndr, "lock_status", r->out.lock_status);
 
5349
                ndr->depth--;
 
5350
                ndr_print_ptr(ndr, "needed", r->out.needed);
 
5351
                ndr->depth++;
 
5352
                ndr_print_uint32(ndr, "needed", *r->out.needed);
 
5353
                ndr->depth--;
 
5354
                ndr_print_WERROR(ndr, "result", r->out.result);
 
5355
                ndr->depth--;
 
5356
        }
 
5357
        ndr->depth--;
 
5358
}
 
5359
 
 
5360
static enum ndr_err_code ndr_push_svcctl_StartServiceA(struct ndr_push *ndr, int flags, const struct svcctl_StartServiceA *r)
 
5361
{
 
5362
        if (flags & NDR_IN) {
 
5363
                if (r->in.handle == NULL) {
 
5364
                        return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
 
5365
                }
 
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));
 
5374
                }
 
5375
        }
 
5376
        if (flags & NDR_OUT) {
 
5377
                NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
 
5378
        }
 
5379
        return NDR_ERR_SUCCESS;
 
5380
}
 
5381
 
 
5382
static enum ndr_err_code ndr_pull_svcctl_StartServiceA(struct ndr_pull *ndr, int flags, struct svcctl_StartServiceA *r)
 
5383
{
 
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);
 
5390
                }
 
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);
 
5399
                } else {
 
5400
                        r->in.Arguments = NULL;
 
5401
                }
 
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));
 
5409
                        }
 
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);
 
5413
                }
 
5414
        }
 
5415
        if (flags & NDR_OUT) {
 
5416
                NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
 
5417
        }
 
5418
        return NDR_ERR_SUCCESS;
 
5419
}
 
5420
 
 
5421
_PUBLIC_ void ndr_print_svcctl_StartServiceA(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_StartServiceA *r)
 
5422
{
 
5423
        ndr_print_struct(ndr, name, "svcctl_StartServiceA");
 
5424
        ndr->depth++;
 
5425
        if (flags & NDR_SET_VALUES) {
 
5426
                ndr->flags |= LIBNDR_PRINT_SET_VALUES;
 
5427
        }
 
5428
        if (flags & NDR_IN) {
 
5429
                ndr_print_struct(ndr, "in", "svcctl_StartServiceA");
 
5430
                ndr->depth++;
 
5431
                ndr_print_ptr(ndr, "handle", r->in.handle);
 
5432
                ndr->depth++;
 
5433
                ndr_print_policy_handle(ndr, "handle", r->in.handle);
 
5434
                ndr->depth--;
 
5435
                ndr_print_uint32(ndr, "NumArgs", r->in.NumArgs);
 
5436
                ndr_print_ptr(ndr, "Arguments", r->in.Arguments);
 
5437
                ndr->depth++;
 
5438
                if (r->in.Arguments) {
 
5439
                        ndr_print_string(ndr, "Arguments", r->in.Arguments);
 
5440
                }
 
5441
                ndr->depth--;
 
5442
                ndr->depth--;
 
5443
        }
 
5444
        if (flags & NDR_OUT) {
 
5445
                ndr_print_struct(ndr, "out", "svcctl_StartServiceA");
 
5446
                ndr->depth++;
 
5447
                ndr_print_WERROR(ndr, "result", r->out.result);
 
5448
                ndr->depth--;
 
5449
        }
 
5450
        ndr->depth--;
 
5451
}
 
5452
 
 
5453
static enum ndr_err_code ndr_push_svcctl_GetServiceDisplayNameA(struct ndr_push *ndr, int flags, const struct svcctl_GetServiceDisplayNameA *r)
 
5454
{
 
5455
        if (flags & NDR_IN) {
 
5456
                if (r->in.handle == NULL) {
 
5457
                        return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
 
5458
                }
 
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));
 
5466
                }
 
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));
 
5470
                }
 
5471
        }
 
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");
 
5475
                }
 
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));
 
5482
                }
 
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));
 
5486
                }
 
5487
                NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
 
5488
        }
 
5489
        return NDR_ERR_SUCCESS;
 
5490
}
 
5491
 
 
5492
static enum ndr_err_code ndr_pull_svcctl_GetServiceDisplayNameA(struct ndr_pull *ndr, int flags, struct svcctl_GetServiceDisplayNameA *r)
 
5493
{
 
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);
 
5504
 
 
5505
                if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
 
5506
                        NDR_PULL_ALLOC(ndr, r->in.handle);
 
5507
                }
 
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);
 
5515
                } else {
 
5516
                        r->in.service_name = NULL;
 
5517
                }
 
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));
 
5525
                        }
 
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);
 
5529
                }
 
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);
 
5533
                } else {
 
5534
                        r->in.display_name_length = NULL;
 
5535
                }
 
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);
 
5541
                }
 
5542
                NDR_PULL_ALLOC(ndr, r->out.display_name);
 
5543
                ZERO_STRUCTP(r->out.display_name);
 
5544
        }
 
5545
        if (flags & NDR_OUT) {
 
5546
                if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
 
5547
                        NDR_PULL_ALLOC(ndr, r->out.display_name);
 
5548
                }
 
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);
 
5554
                } else {
 
5555
                        *r->out.display_name = NULL;
 
5556
                }
 
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));
 
5564
                        }
 
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);
 
5568
                }
 
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);
 
5573
                } else {
 
5574
                        r->out.display_name_length = NULL;
 
5575
                }
 
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);
 
5581
                }
 
5582
                NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
 
5583
        }
 
5584
        return NDR_ERR_SUCCESS;
 
5585
}
 
5586
 
 
5587
_PUBLIC_ void ndr_print_svcctl_GetServiceDisplayNameA(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_GetServiceDisplayNameA *r)
 
5588
{
 
5589
        ndr_print_struct(ndr, name, "svcctl_GetServiceDisplayNameA");
 
5590
        ndr->depth++;
 
5591
        if (flags & NDR_SET_VALUES) {
 
5592
                ndr->flags |= LIBNDR_PRINT_SET_VALUES;
 
5593
        }
 
5594
        if (flags & NDR_IN) {
 
5595
                ndr_print_struct(ndr, "in", "svcctl_GetServiceDisplayNameA");
 
5596
                ndr->depth++;
 
5597
                ndr_print_ptr(ndr, "handle", r->in.handle);
 
5598
                ndr->depth++;
 
5599
                ndr_print_policy_handle(ndr, "handle", r->in.handle);
 
5600
                ndr->depth--;
 
5601
                ndr_print_ptr(ndr, "service_name", r->in.service_name);
 
5602
                ndr->depth++;
 
5603
                if (r->in.service_name) {
 
5604
                        ndr_print_string(ndr, "service_name", r->in.service_name);
 
5605
                }
 
5606
                ndr->depth--;
 
5607
                ndr_print_ptr(ndr, "display_name_length", r->in.display_name_length);
 
5608
                ndr->depth++;
 
5609
                if (r->in.display_name_length) {
 
5610
                        ndr_print_uint32(ndr, "display_name_length", *r->in.display_name_length);
 
5611
                }
 
5612
                ndr->depth--;
 
5613
                ndr->depth--;
 
5614
        }
 
5615
        if (flags & NDR_OUT) {
 
5616
                ndr_print_struct(ndr, "out", "svcctl_GetServiceDisplayNameA");
 
5617
                ndr->depth++;
 
5618
                ndr_print_ptr(ndr, "display_name", r->out.display_name);
 
5619
                ndr->depth++;
 
5620
                ndr_print_ptr(ndr, "display_name", *r->out.display_name);
 
5621
                ndr->depth++;
 
5622
                if (*r->out.display_name) {
 
5623
                        ndr_print_string(ndr, "display_name", *r->out.display_name);
 
5624
                }
 
5625
                ndr->depth--;
 
5626
                ndr->depth--;
 
5627
                ndr_print_ptr(ndr, "display_name_length", r->out.display_name_length);
 
5628
                ndr->depth++;
 
5629
                if (r->out.display_name_length) {
 
5630
                        ndr_print_uint32(ndr, "display_name_length", *r->out.display_name_length);
 
5631
                }
 
5632
                ndr->depth--;
 
5633
                ndr_print_WERROR(ndr, "result", r->out.result);
 
5634
                ndr->depth--;
 
5635
        }
 
5636
        ndr->depth--;
 
5637
}
 
5638
 
 
5639
static enum ndr_err_code ndr_push_svcctl_GetServiceKeyNameA(struct ndr_push *ndr, int flags, const struct svcctl_GetServiceKeyNameA *r)
 
5640
{
 
5641
        if (flags & NDR_IN) {
 
5642
                if (r->in.handle == NULL) {
 
5643
                        return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
 
5644
                }
 
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));
 
5652
                }
 
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));
 
5656
                }
 
5657
        }
 
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");
 
5661
                }
 
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));
 
5668
                }
 
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));
 
5672
                }
 
5673
                NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
 
5674
        }
 
5675
        return NDR_ERR_SUCCESS;
 
5676
}
 
5677
 
 
5678
static enum ndr_err_code ndr_pull_svcctl_GetServiceKeyNameA(struct ndr_pull *ndr, int flags, struct svcctl_GetServiceKeyNameA *r)
 
5679
{
 
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);
 
5690
 
 
5691
                if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
 
5692
                        NDR_PULL_ALLOC(ndr, r->in.handle);
 
5693
                }
 
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);
 
5701
                } else {
 
5702
                        r->in.service_name = NULL;
 
5703
                }
 
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));
 
5711
                        }
 
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);
 
5715
                }
 
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);
 
5719
                } else {
 
5720
                        r->in.display_name_length = NULL;
 
5721
                }
 
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);
 
5727
                }
 
5728
                NDR_PULL_ALLOC(ndr, r->out.key_name);
 
5729
                ZERO_STRUCTP(r->out.key_name);
 
5730
        }
 
5731
        if (flags & NDR_OUT) {
 
5732
                if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
 
5733
                        NDR_PULL_ALLOC(ndr, r->out.key_name);
 
5734
                }
 
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);
 
5740
                } else {
 
5741
                        *r->out.key_name = NULL;
 
5742
                }
 
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));
 
5750
                        }
 
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);
 
5754
                }
 
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);
 
5759
                } else {
 
5760
                        r->out.display_name_length = NULL;
 
5761
                }
 
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);
 
5767
                }
 
5768
                NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
 
5769
        }
 
5770
        return NDR_ERR_SUCCESS;
 
5771
}
 
5772
 
 
5773
_PUBLIC_ void ndr_print_svcctl_GetServiceKeyNameA(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_GetServiceKeyNameA *r)
 
5774
{
 
5775
        ndr_print_struct(ndr, name, "svcctl_GetServiceKeyNameA");
 
5776
        ndr->depth++;
 
5777
        if (flags & NDR_SET_VALUES) {
 
5778
                ndr->flags |= LIBNDR_PRINT_SET_VALUES;
 
5779
        }
 
5780
        if (flags & NDR_IN) {
 
5781
                ndr_print_struct(ndr, "in", "svcctl_GetServiceKeyNameA");
 
5782
                ndr->depth++;
 
5783
                ndr_print_ptr(ndr, "handle", r->in.handle);
 
5784
                ndr->depth++;
 
5785
                ndr_print_policy_handle(ndr, "handle", r->in.handle);
 
5786
                ndr->depth--;
 
5787
                ndr_print_ptr(ndr, "service_name", r->in.service_name);
 
5788
                ndr->depth++;
 
5789
                if (r->in.service_name) {
 
5790
                        ndr_print_string(ndr, "service_name", r->in.service_name);
 
5791
                }
 
5792
                ndr->depth--;
 
5793
                ndr_print_ptr(ndr, "display_name_length", r->in.display_name_length);
 
5794
                ndr->depth++;
 
5795
                if (r->in.display_name_length) {
 
5796
                        ndr_print_uint32(ndr, "display_name_length", *r->in.display_name_length);
 
5797
                }
 
5798
                ndr->depth--;
 
5799
                ndr->depth--;
 
5800
        }
 
5801
        if (flags & NDR_OUT) {
 
5802
                ndr_print_struct(ndr, "out", "svcctl_GetServiceKeyNameA");
 
5803
                ndr->depth++;
 
5804
                ndr_print_ptr(ndr, "key_name", r->out.key_name);
 
5805
                ndr->depth++;
 
5806
                ndr_print_ptr(ndr, "key_name", *r->out.key_name);
 
5807
                ndr->depth++;
 
5808
                if (*r->out.key_name) {
 
5809
                        ndr_print_string(ndr, "key_name", *r->out.key_name);
 
5810
                }
 
5811
                ndr->depth--;
 
5812
                ndr->depth--;
 
5813
                ndr_print_ptr(ndr, "display_name_length", r->out.display_name_length);
 
5814
                ndr->depth++;
 
5815
                if (r->out.display_name_length) {
 
5816
                        ndr_print_uint32(ndr, "display_name_length", *r->out.display_name_length);
 
5817
                }
 
5818
                ndr->depth--;
 
5819
                ndr_print_WERROR(ndr, "result", r->out.result);
 
5820
                ndr->depth--;
 
5821
        }
 
5822
        ndr->depth--;
 
5823
}
 
5824
 
 
5825
static enum ndr_err_code ndr_push_svcctl_GetCurrentGroupeStateW(struct ndr_push *ndr, int flags, const struct svcctl_GetCurrentGroupeStateW *r)
 
5826
{
 
5827
        if (flags & NDR_IN) {
 
5828
        }
 
5829
        if (flags & NDR_OUT) {
 
5830
                NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
 
5831
        }
 
5832
        return NDR_ERR_SUCCESS;
 
5833
}
 
5834
 
 
5835
static enum ndr_err_code ndr_pull_svcctl_GetCurrentGroupeStateW(struct ndr_pull *ndr, int flags, struct svcctl_GetCurrentGroupeStateW *r)
 
5836
{
 
5837
        if (flags & NDR_IN) {
 
5838
        }
 
5839
        if (flags & NDR_OUT) {
 
5840
                NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
 
5841
        }
 
5842
        return NDR_ERR_SUCCESS;
 
5843
}
 
5844
 
 
5845
_PUBLIC_ void ndr_print_svcctl_GetCurrentGroupeStateW(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_GetCurrentGroupeStateW *r)
 
5846
{
 
5847
        ndr_print_struct(ndr, name, "svcctl_GetCurrentGroupeStateW");
 
5848
        ndr->depth++;
 
5849
        if (flags & NDR_SET_VALUES) {
 
5850
                ndr->flags |= LIBNDR_PRINT_SET_VALUES;
 
5851
        }
 
5852
        if (flags & NDR_IN) {
 
5853
                ndr_print_struct(ndr, "in", "svcctl_GetCurrentGroupeStateW");
 
5854
                ndr->depth++;
 
5855
                ndr->depth--;
 
5856
        }
 
5857
        if (flags & NDR_OUT) {
 
5858
                ndr_print_struct(ndr, "out", "svcctl_GetCurrentGroupeStateW");
 
5859
                ndr->depth++;
 
5860
                ndr_print_WERROR(ndr, "result", r->out.result);
 
5861
                ndr->depth--;
 
5862
        }
 
5863
        ndr->depth--;
 
5864
}
 
5865
 
 
5866
static enum ndr_err_code ndr_push_svcctl_EnumServiceGroupW(struct ndr_push *ndr, int flags, const struct svcctl_EnumServiceGroupW *r)
 
5867
{
 
5868
        if (flags & NDR_IN) {
 
5869
        }
 
5870
        if (flags & NDR_OUT) {
 
5871
                NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
 
5872
        }
 
5873
        return NDR_ERR_SUCCESS;
 
5874
}
 
5875
 
 
5876
static enum ndr_err_code ndr_pull_svcctl_EnumServiceGroupW(struct ndr_pull *ndr, int flags, struct svcctl_EnumServiceGroupW *r)
 
5877
{
 
5878
        if (flags & NDR_IN) {
 
5879
        }
 
5880
        if (flags & NDR_OUT) {
 
5881
                NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
 
5882
        }
 
5883
        return NDR_ERR_SUCCESS;
 
5884
}
 
5885
 
 
5886
_PUBLIC_ void ndr_print_svcctl_EnumServiceGroupW(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_EnumServiceGroupW *r)
 
5887
{
 
5888
        ndr_print_struct(ndr, name, "svcctl_EnumServiceGroupW");
 
5889
        ndr->depth++;
 
5890
        if (flags & NDR_SET_VALUES) {
 
5891
                ndr->flags |= LIBNDR_PRINT_SET_VALUES;
 
5892
        }
 
5893
        if (flags & NDR_IN) {
 
5894
                ndr_print_struct(ndr, "in", "svcctl_EnumServiceGroupW");
 
5895
                ndr->depth++;
 
5896
                ndr->depth--;
 
5897
        }
 
5898
        if (flags & NDR_OUT) {
 
5899
                ndr_print_struct(ndr, "out", "svcctl_EnumServiceGroupW");
 
5900
                ndr->depth++;
 
5901
                ndr_print_WERROR(ndr, "result", r->out.result);
 
5902
                ndr->depth--;
 
5903
        }
 
5904
        ndr->depth--;
 
5905
}
 
5906
 
 
5907
static enum ndr_err_code ndr_push_svcctl_ChangeServiceConfig2A(struct ndr_push *ndr, int flags, const struct svcctl_ChangeServiceConfig2A *r)
 
5908
{
 
5909
        if (flags & NDR_IN) {
 
5910
                if (r->in.handle == NULL) {
 
5911
                        return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
 
5912
                }
 
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));
 
5916
                if (r->in.info) {
 
5917
                        NDR_CHECK(ndr_push_uint8(ndr, NDR_SCALARS, *r->in.info));
 
5918
                }
 
5919
        }
 
5920
        if (flags & NDR_OUT) {
 
5921
                NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
 
5922
        }
 
5923
        return NDR_ERR_SUCCESS;
 
5924
}
 
5925
 
 
5926
static enum ndr_err_code ndr_pull_svcctl_ChangeServiceConfig2A(struct ndr_pull *ndr, int flags, struct svcctl_ChangeServiceConfig2A *r)
 
5927
{
 
5928
        uint32_t _ptr_info;
 
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);
 
5934
                }
 
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));
 
5941
                if (_ptr_info) {
 
5942
                        NDR_PULL_ALLOC(ndr, r->in.info);
 
5943
                } else {
 
5944
                        r->in.info = NULL;
 
5945
                }
 
5946
                if (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);
 
5951
                }
 
5952
        }
 
5953
        if (flags & NDR_OUT) {
 
5954
                NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
 
5955
        }
 
5956
        return NDR_ERR_SUCCESS;
 
5957
}
 
5958
 
 
5959
_PUBLIC_ void ndr_print_svcctl_ChangeServiceConfig2A(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_ChangeServiceConfig2A *r)
 
5960
{
 
5961
        ndr_print_struct(ndr, name, "svcctl_ChangeServiceConfig2A");
 
5962
        ndr->depth++;
 
5963
        if (flags & NDR_SET_VALUES) {
 
5964
                ndr->flags |= LIBNDR_PRINT_SET_VALUES;
 
5965
        }
 
5966
        if (flags & NDR_IN) {
 
5967
                ndr_print_struct(ndr, "in", "svcctl_ChangeServiceConfig2A");
 
5968
                ndr->depth++;
 
5969
                ndr_print_ptr(ndr, "handle", r->in.handle);
 
5970
                ndr->depth++;
 
5971
                ndr_print_policy_handle(ndr, "handle", r->in.handle);
 
5972
                ndr->depth--;
 
5973
                ndr_print_uint32(ndr, "info_level", r->in.info_level);
 
5974
                ndr_print_ptr(ndr, "info", r->in.info);
 
5975
                ndr->depth++;
 
5976
                if (r->in.info) {
 
5977
                        ndr_print_uint8(ndr, "info", *r->in.info);
 
5978
                }
 
5979
                ndr->depth--;
 
5980
                ndr->depth--;
 
5981
        }
 
5982
        if (flags & NDR_OUT) {
 
5983
                ndr_print_struct(ndr, "out", "svcctl_ChangeServiceConfig2A");
 
5984
                ndr->depth++;
 
5985
                ndr_print_WERROR(ndr, "result", r->out.result);
 
5986
                ndr->depth--;
 
5987
        }
 
5988
        ndr->depth--;
 
5989
}
 
5990
 
 
5991
static enum ndr_err_code ndr_push_svcctl_ChangeServiceConfig2W(struct ndr_push *ndr, int flags, const struct svcctl_ChangeServiceConfig2W *r)
 
5992
{
 
5993
        if (flags & NDR_IN) {
 
5994
                if (r->in.handle == NULL) {
 
5995
                        return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
 
5996
                }
 
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));
 
6000
                if (r->in.info) {
 
6001
                        NDR_CHECK(ndr_push_uint8(ndr, NDR_SCALARS, *r->in.info));
 
6002
                }
 
6003
        }
 
6004
        if (flags & NDR_OUT) {
 
6005
                NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
 
6006
        }
 
6007
        return NDR_ERR_SUCCESS;
 
6008
}
 
6009
 
 
6010
static enum ndr_err_code ndr_pull_svcctl_ChangeServiceConfig2W(struct ndr_pull *ndr, int flags, struct svcctl_ChangeServiceConfig2W *r)
 
6011
{
 
6012
        uint32_t _ptr_info;
 
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);
 
6018
                }
 
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));
 
6025
                if (_ptr_info) {
 
6026
                        NDR_PULL_ALLOC(ndr, r->in.info);
 
6027
                } else {
 
6028
                        r->in.info = NULL;
 
6029
                }
 
6030
                if (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);
 
6035
                }
 
6036
        }
 
6037
        if (flags & NDR_OUT) {
 
6038
                NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
 
6039
        }
 
6040
        return NDR_ERR_SUCCESS;
 
6041
}
 
6042
 
 
6043
_PUBLIC_ void ndr_print_svcctl_ChangeServiceConfig2W(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_ChangeServiceConfig2W *r)
 
6044
{
 
6045
        ndr_print_struct(ndr, name, "svcctl_ChangeServiceConfig2W");
 
6046
        ndr->depth++;
 
6047
        if (flags & NDR_SET_VALUES) {
 
6048
                ndr->flags |= LIBNDR_PRINT_SET_VALUES;
 
6049
        }
 
6050
        if (flags & NDR_IN) {
 
6051
                ndr_print_struct(ndr, "in", "svcctl_ChangeServiceConfig2W");
 
6052
                ndr->depth++;
 
6053
                ndr_print_ptr(ndr, "handle", r->in.handle);
 
6054
                ndr->depth++;
 
6055
                ndr_print_policy_handle(ndr, "handle", r->in.handle);
 
6056
                ndr->depth--;
 
6057
                ndr_print_uint32(ndr, "info_level", r->in.info_level);
 
6058
                ndr_print_ptr(ndr, "info", r->in.info);
 
6059
                ndr->depth++;
 
6060
                if (r->in.info) {
 
6061
                        ndr_print_uint8(ndr, "info", *r->in.info);
 
6062
                }
 
6063
                ndr->depth--;
 
6064
                ndr->depth--;
 
6065
        }
 
6066
        if (flags & NDR_OUT) {
 
6067
                ndr_print_struct(ndr, "out", "svcctl_ChangeServiceConfig2W");
 
6068
                ndr->depth++;
 
6069
                ndr_print_WERROR(ndr, "result", r->out.result);
 
6070
                ndr->depth--;
 
6071
        }
 
6072
        ndr->depth--;
 
6073
}
 
6074
 
 
6075
static enum ndr_err_code ndr_push_svcctl_QueryServiceConfig2A(struct ndr_push *ndr, int flags, const struct svcctl_QueryServiceConfig2A *r)
 
6076
{
 
6077
        if (flags & NDR_IN) {
 
6078
                if (r->in.handle == NULL) {
 
6079
                        return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
 
6080
                }
 
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));
 
6084
        }
 
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");
 
6089
                }
 
6090
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.needed));
 
6091
                NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
 
6092
        }
 
6093
        return NDR_ERR_SUCCESS;
 
6094
}
 
6095
 
 
6096
static enum ndr_err_code ndr_pull_svcctl_QueryServiceConfig2A(struct ndr_pull *ndr, int flags, struct svcctl_QueryServiceConfig2A *r)
 
6097
{
 
6098
        TALLOC_CTX *_mem_save_handle_0;
 
6099
        TALLOC_CTX *_mem_save_needed_0;
 
6100
        if (flags & NDR_IN) {
 
6101
                ZERO_STRUCT(r->out);
 
6102
 
 
6103
                if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
 
6104
                        NDR_PULL_ALLOC(ndr, r->in.handle);
 
6105
                }
 
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);
 
6114
        }
 
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);
 
6120
                }
 
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));
 
6126
        }
 
6127
        return NDR_ERR_SUCCESS;
 
6128
}
 
6129
 
 
6130
_PUBLIC_ void ndr_print_svcctl_QueryServiceConfig2A(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_QueryServiceConfig2A *r)
 
6131
{
 
6132
        ndr_print_struct(ndr, name, "svcctl_QueryServiceConfig2A");
 
6133
        ndr->depth++;
 
6134
        if (flags & NDR_SET_VALUES) {
 
6135
                ndr->flags |= LIBNDR_PRINT_SET_VALUES;
 
6136
        }
 
6137
        if (flags & NDR_IN) {
 
6138
                ndr_print_struct(ndr, "in", "svcctl_QueryServiceConfig2A");
 
6139
                ndr->depth++;
 
6140
                ndr_print_ptr(ndr, "handle", r->in.handle);
 
6141
                ndr->depth++;
 
6142
                ndr_print_policy_handle(ndr, "handle", r->in.handle);
 
6143
                ndr->depth--;
 
6144
                ndr_print_svcctl_ConfigLevel(ndr, "info_level", r->in.info_level);
 
6145
                ndr_print_uint32(ndr, "offered", r->in.offered);
 
6146
                ndr->depth--;
 
6147
        }
 
6148
        if (flags & NDR_OUT) {
 
6149
                ndr_print_struct(ndr, "out", "svcctl_QueryServiceConfig2A");
 
6150
                ndr->depth++;
 
6151
                ndr_print_array_uint8(ndr, "buffer", r->out.buffer, r->in.offered);
 
6152
                ndr_print_ptr(ndr, "needed", r->out.needed);
 
6153
                ndr->depth++;
 
6154
                ndr_print_uint32(ndr, "needed", *r->out.needed);
 
6155
                ndr->depth--;
 
6156
                ndr_print_WERROR(ndr, "result", r->out.result);
 
6157
                ndr->depth--;
 
6158
        }
 
6159
        ndr->depth--;
 
6160
}
 
6161
 
 
6162
static enum ndr_err_code ndr_push_svcctl_QueryServiceConfig2W(struct ndr_push *ndr, int flags, const struct svcctl_QueryServiceConfig2W *r)
 
6163
{
 
6164
        if (flags & NDR_IN) {
 
6165
                if (r->in.handle == NULL) {
 
6166
                        return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
 
6167
                }
 
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));
 
6171
        }
 
6172
        if (flags & NDR_OUT) {
 
6173
                if (r->out.buffer == NULL) {
 
6174
                        return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
 
6175
                }
 
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");
 
6180
                }
 
6181
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.needed));
 
6182
                NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
 
6183
        }
 
6184
        return NDR_ERR_SUCCESS;
 
6185
}
 
6186
 
 
6187
static enum ndr_err_code ndr_pull_svcctl_QueryServiceConfig2W(struct ndr_pull *ndr, int flags, struct svcctl_QueryServiceConfig2W *r)
 
6188
{
 
6189
        TALLOC_CTX *_mem_save_handle_0;
 
6190
        TALLOC_CTX *_mem_save_needed_0;
 
6191
        if (flags & NDR_IN) {
 
6192
                ZERO_STRUCT(r->out);
 
6193
 
 
6194
                if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
 
6195
                        NDR_PULL_ALLOC(ndr, r->in.handle);
 
6196
                }
 
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");
 
6205
                }
 
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);
 
6210
        }
 
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));
 
6215
                }
 
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);
 
6219
                }
 
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");
 
6225
                }
 
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));
 
6230
                }
 
6231
        }
 
6232
        return NDR_ERR_SUCCESS;
 
6233
}
 
6234
 
 
6235
_PUBLIC_ void ndr_print_svcctl_QueryServiceConfig2W(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_QueryServiceConfig2W *r)
 
6236
{
 
6237
        ndr_print_struct(ndr, name, "svcctl_QueryServiceConfig2W");
 
6238
        ndr->depth++;
 
6239
        if (flags & NDR_SET_VALUES) {
 
6240
                ndr->flags |= LIBNDR_PRINT_SET_VALUES;
 
6241
        }
 
6242
        if (flags & NDR_IN) {
 
6243
                ndr_print_struct(ndr, "in", "svcctl_QueryServiceConfig2W");
 
6244
                ndr->depth++;
 
6245
                ndr_print_ptr(ndr, "handle", r->in.handle);
 
6246
                ndr->depth++;
 
6247
                ndr_print_policy_handle(ndr, "handle", r->in.handle);
 
6248
                ndr->depth--;
 
6249
                ndr_print_svcctl_ConfigLevel(ndr, "info_level", r->in.info_level);
 
6250
                ndr_print_uint32(ndr, "offered", r->in.offered);
 
6251
                ndr->depth--;
 
6252
        }
 
6253
        if (flags & NDR_OUT) {
 
6254
                ndr_print_struct(ndr, "out", "svcctl_QueryServiceConfig2W");
 
6255
                ndr->depth++;
 
6256
                ndr_print_ptr(ndr, "buffer", r->out.buffer);
 
6257
                ndr->depth++;
 
6258
                ndr_print_array_uint8(ndr, "buffer", r->out.buffer, r->in.offered);
 
6259
                ndr->depth--;
 
6260
                ndr_print_ptr(ndr, "needed", r->out.needed);
 
6261
                ndr->depth++;
 
6262
                ndr_print_uint32(ndr, "needed", *r->out.needed);
 
6263
                ndr->depth--;
 
6264
                ndr_print_WERROR(ndr, "result", r->out.result);
 
6265
                ndr->depth--;
 
6266
        }
 
6267
        ndr->depth--;
 
6268
}
 
6269
 
 
6270
static enum ndr_err_code ndr_push_svcctl_QueryServiceStatusEx(struct ndr_push *ndr, int flags, const struct svcctl_QueryServiceStatusEx *r)
 
6271
{
 
6272
        if (flags & NDR_IN) {
 
6273
                if (r->in.handle == NULL) {
 
6274
                        return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
 
6275
                }
 
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));
 
6279
        }
 
6280
        if (flags & NDR_OUT) {
 
6281
                if (r->out.buffer == NULL) {
 
6282
                        return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
 
6283
                }
 
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");
 
6288
                }
 
6289
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.needed));
 
6290
                NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
 
6291
        }
 
6292
        return NDR_ERR_SUCCESS;
 
6293
}
 
6294
 
 
6295
static enum ndr_err_code ndr_pull_svcctl_QueryServiceStatusEx(struct ndr_pull *ndr, int flags, struct svcctl_QueryServiceStatusEx *r)
 
6296
{
 
6297
        TALLOC_CTX *_mem_save_handle_0;
 
6298
        TALLOC_CTX *_mem_save_needed_0;
 
6299
        if (flags & NDR_IN) {
 
6300
                ZERO_STRUCT(r->out);
 
6301
 
 
6302
                if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
 
6303
                        NDR_PULL_ALLOC(ndr, r->in.handle);
 
6304
                }
 
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");
 
6313
                }
 
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);
 
6318
        }
 
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));
 
6323
                }
 
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);
 
6327
                }
 
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");
 
6333
                }
 
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));
 
6338
                }
 
6339
        }
 
6340
        return NDR_ERR_SUCCESS;
 
6341
}
 
6342
 
 
6343
_PUBLIC_ void ndr_print_svcctl_QueryServiceStatusEx(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_QueryServiceStatusEx *r)
 
6344
{
 
6345
        ndr_print_struct(ndr, name, "svcctl_QueryServiceStatusEx");
 
6346
        ndr->depth++;
 
6347
        if (flags & NDR_SET_VALUES) {
 
6348
                ndr->flags |= LIBNDR_PRINT_SET_VALUES;
 
6349
        }
 
6350
        if (flags & NDR_IN) {
 
6351
                ndr_print_struct(ndr, "in", "svcctl_QueryServiceStatusEx");
 
6352
                ndr->depth++;
 
6353
                ndr_print_ptr(ndr, "handle", r->in.handle);
 
6354
                ndr->depth++;
 
6355
                ndr_print_policy_handle(ndr, "handle", r->in.handle);
 
6356
                ndr->depth--;
 
6357
                ndr_print_svcctl_StatusLevel(ndr, "info_level", r->in.info_level);
 
6358
                ndr_print_uint32(ndr, "offered", r->in.offered);
 
6359
                ndr->depth--;
 
6360
        }
 
6361
        if (flags & NDR_OUT) {
 
6362
                ndr_print_struct(ndr, "out", "svcctl_QueryServiceStatusEx");
 
6363
                ndr->depth++;
 
6364
                ndr_print_ptr(ndr, "buffer", r->out.buffer);
 
6365
                ndr->depth++;
 
6366
                ndr_print_array_uint8(ndr, "buffer", r->out.buffer, r->in.offered);
 
6367
                ndr->depth--;
 
6368
                ndr_print_ptr(ndr, "needed", r->out.needed);
 
6369
                ndr->depth++;
 
6370
                ndr_print_uint32(ndr, "needed", *r->out.needed);
 
6371
                ndr->depth--;
 
6372
                ndr_print_WERROR(ndr, "result", r->out.result);
 
6373
                ndr->depth--;
 
6374
        }
 
6375
        ndr->depth--;
 
6376
}
 
6377
 
 
6378
static enum ndr_err_code ndr_push_EnumServicesStatusExA(struct ndr_push *ndr, int flags, const struct EnumServicesStatusExA *r)
 
6379
{
 
6380
        if (flags & NDR_IN) {
 
6381
                if (r->in.scmanager == NULL) {
 
6382
                        return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
 
6383
                }
 
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));
 
6392
                }
 
6393
        }
 
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");
 
6398
                }
 
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");
 
6402
                }
 
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));
 
6407
                }
 
6408
                if (r->out.group_name == NULL) {
 
6409
                        return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
 
6410
                }
 
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));
 
6417
                }
 
6418
                NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
 
6419
        }
 
6420
        return NDR_ERR_SUCCESS;
 
6421
}
 
6422
 
 
6423
static enum ndr_err_code ndr_pull_EnumServicesStatusExA(struct ndr_pull *ndr, int flags, struct EnumServicesStatusExA *r)
 
6424
{
 
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);
 
6435
 
 
6436
                if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
 
6437
                        NDR_PULL_ALLOC(ndr, r->in.scmanager);
 
6438
                }
 
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);
 
6450
                } else {
 
6451
                        r->in.resume_handle = NULL;
 
6452
                }
 
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);
 
6458
                }
 
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);
 
6465
        }
 
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);
 
6471
                }
 
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);
 
6478
                }
 
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);
 
6486
                } else {
 
6487
                        r->out.resume_handle = NULL;
 
6488
                }
 
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);
 
6494
                }
 
6495
                if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
 
6496
                        NDR_PULL_ALLOC(ndr, r->out.group_name);
 
6497
                }
 
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);
 
6503
                } else {
 
6504
                        *r->out.group_name = NULL;
 
6505
                }
 
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));
 
6513
                        }
 
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);
 
6517
                }
 
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));
 
6520
        }
 
6521
        return NDR_ERR_SUCCESS;
 
6522
}
 
6523
 
 
6524
_PUBLIC_ void ndr_print_EnumServicesStatusExA(struct ndr_print *ndr, const char *name, int flags, const struct EnumServicesStatusExA *r)
 
6525
{
 
6526
        ndr_print_struct(ndr, name, "EnumServicesStatusExA");
 
6527
        ndr->depth++;
 
6528
        if (flags & NDR_SET_VALUES) {
 
6529
                ndr->flags |= LIBNDR_PRINT_SET_VALUES;
 
6530
        }
 
6531
        if (flags & NDR_IN) {
 
6532
                ndr_print_struct(ndr, "in", "EnumServicesStatusExA");
 
6533
                ndr->depth++;
 
6534
                ndr_print_ptr(ndr, "scmanager", r->in.scmanager);
 
6535
                ndr->depth++;
 
6536
                ndr_print_policy_handle(ndr, "scmanager", r->in.scmanager);
 
6537
                ndr->depth--;
 
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);
 
6543
                ndr->depth++;
 
6544
                if (r->in.resume_handle) {
 
6545
                        ndr_print_uint32(ndr, "resume_handle", *r->in.resume_handle);
 
6546
                }
 
6547
                ndr->depth--;
 
6548
                ndr->depth--;
 
6549
        }
 
6550
        if (flags & NDR_OUT) {
 
6551
                ndr_print_struct(ndr, "out", "EnumServicesStatusExA");
 
6552
                ndr->depth++;
 
6553
                ndr_print_array_uint8(ndr, "services", r->out.services, r->in.offered);
 
6554
                ndr_print_ptr(ndr, "needed", r->out.needed);
 
6555
                ndr->depth++;
 
6556
                ndr_print_uint32(ndr, "needed", *r->out.needed);
 
6557
                ndr->depth--;
 
6558
                ndr_print_ptr(ndr, "service_returned", r->out.service_returned);
 
6559
                ndr->depth++;
 
6560
                ndr_print_uint32(ndr, "service_returned", *r->out.service_returned);
 
6561
                ndr->depth--;
 
6562
                ndr_print_ptr(ndr, "resume_handle", r->out.resume_handle);
 
6563
                ndr->depth++;
 
6564
                if (r->out.resume_handle) {
 
6565
                        ndr_print_uint32(ndr, "resume_handle", *r->out.resume_handle);
 
6566
                }
 
6567
                ndr->depth--;
 
6568
                ndr_print_ptr(ndr, "group_name", r->out.group_name);
 
6569
                ndr->depth++;
 
6570
                ndr_print_ptr(ndr, "group_name", *r->out.group_name);
 
6571
                ndr->depth++;
 
6572
                if (*r->out.group_name) {
 
6573
                        ndr_print_string(ndr, "group_name", *r->out.group_name);
 
6574
                }
 
6575
                ndr->depth--;
 
6576
                ndr->depth--;
 
6577
                ndr_print_WERROR(ndr, "result", r->out.result);
 
6578
                ndr->depth--;
 
6579
        }
 
6580
        ndr->depth--;
 
6581
}
 
6582
 
 
6583
static enum ndr_err_code ndr_push_EnumServicesStatusExW(struct ndr_push *ndr, int flags, const struct EnumServicesStatusExW *r)
 
6584
{
 
6585
        if (flags & NDR_IN) {
 
6586
                if (r->in.scmanager == NULL) {
 
6587
                        return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
 
6588
                }
 
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));
 
6597
                }
 
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));
 
6604
                }
 
6605
        }
 
6606
        if (flags & NDR_OUT) {
 
6607
                if (r->out.services == NULL) {
 
6608
                        return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
 
6609
                }
 
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");
 
6614
                }
 
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");
 
6618
                }
 
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));
 
6623
                }
 
6624
                NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
 
6625
        }
 
6626
        return NDR_ERR_SUCCESS;
 
6627
}
 
6628
 
 
6629
static enum ndr_err_code ndr_pull_EnumServicesStatusExW(struct ndr_pull *ndr, int flags, struct EnumServicesStatusExW *r)
 
6630
{
 
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);
 
6640
 
 
6641
                if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
 
6642
                        NDR_PULL_ALLOC(ndr, r->in.scmanager);
 
6643
                }
 
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");
 
6654
                }
 
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);
 
6658
                } else {
 
6659
                        r->in.resume_handle = NULL;
 
6660
                }
 
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");
 
6667
                        }
 
6668
                        NDR_PULL_SET_MEM_CTX(ndr, _mem_save_resume_handle_0, 0);
 
6669
                }
 
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);
 
6673
                } else {
 
6674
                        r->in.group_name = NULL;
 
6675
                }
 
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));
 
6683
                        }
 
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);
 
6687
                }
 
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);
 
6694
        }
 
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));
 
6699
                }
 
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);
 
6703
                }
 
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");
 
6709
                }
 
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);
 
6713
                }
 
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");
 
6719
                }
 
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);
 
6724
                } else {
 
6725
                        r->out.resume_handle = NULL;
 
6726
                }
 
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");
 
6733
                        }
 
6734
                        NDR_PULL_SET_MEM_CTX(ndr, _mem_save_resume_handle_0, 0);
 
6735
                }
 
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));
 
6739
                }
 
6740
        }
 
6741
        return NDR_ERR_SUCCESS;
 
6742
}
 
6743
 
 
6744
_PUBLIC_ void ndr_print_EnumServicesStatusExW(struct ndr_print *ndr, const char *name, int flags, const struct EnumServicesStatusExW *r)
 
6745
{
 
6746
        ndr_print_struct(ndr, name, "EnumServicesStatusExW");
 
6747
        ndr->depth++;
 
6748
        if (flags & NDR_SET_VALUES) {
 
6749
                ndr->flags |= LIBNDR_PRINT_SET_VALUES;
 
6750
        }
 
6751
        if (flags & NDR_IN) {
 
6752
                ndr_print_struct(ndr, "in", "EnumServicesStatusExW");
 
6753
                ndr->depth++;
 
6754
                ndr_print_ptr(ndr, "scmanager", r->in.scmanager);
 
6755
                ndr->depth++;
 
6756
                ndr_print_policy_handle(ndr, "scmanager", r->in.scmanager);
 
6757
                ndr->depth--;
 
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);
 
6763
                ndr->depth++;
 
6764
                if (r->in.resume_handle) {
 
6765
                        ndr_print_uint32(ndr, "resume_handle", *r->in.resume_handle);
 
6766
                }
 
6767
                ndr->depth--;
 
6768
                ndr_print_ptr(ndr, "group_name", r->in.group_name);
 
6769
                ndr->depth++;
 
6770
                if (r->in.group_name) {
 
6771
                        ndr_print_string(ndr, "group_name", r->in.group_name);
 
6772
                }
 
6773
                ndr->depth--;
 
6774
                ndr->depth--;
 
6775
        }
 
6776
        if (flags & NDR_OUT) {
 
6777
                ndr_print_struct(ndr, "out", "EnumServicesStatusExW");
 
6778
                ndr->depth++;
 
6779
                ndr_print_ptr(ndr, "services", r->out.services);
 
6780
                ndr->depth++;
 
6781
                ndr_print_array_uint8(ndr, "services", r->out.services, r->in.offered);
 
6782
                ndr->depth--;
 
6783
                ndr_print_ptr(ndr, "needed", r->out.needed);
 
6784
                ndr->depth++;
 
6785
                ndr_print_uint32(ndr, "needed", *r->out.needed);
 
6786
                ndr->depth--;
 
6787
                ndr_print_ptr(ndr, "service_returned", r->out.service_returned);
 
6788
                ndr->depth++;
 
6789
                ndr_print_uint32(ndr, "service_returned", *r->out.service_returned);
 
6790
                ndr->depth--;
 
6791
                ndr_print_ptr(ndr, "resume_handle", r->out.resume_handle);
 
6792
                ndr->depth++;
 
6793
                if (r->out.resume_handle) {
 
6794
                        ndr_print_uint32(ndr, "resume_handle", *r->out.resume_handle);
 
6795
                }
 
6796
                ndr->depth--;
 
6797
                ndr_print_WERROR(ndr, "result", r->out.result);
 
6798
                ndr->depth--;
 
6799
        }
 
6800
        ndr->depth--;
 
6801
}
 
6802
 
 
6803
static enum ndr_err_code ndr_push_svcctl_SCSendTSMessage(struct ndr_push *ndr, int flags, const struct svcctl_SCSendTSMessage *r)
 
6804
{
 
6805
        if (flags & NDR_IN) {
 
6806
        }
 
6807
        if (flags & NDR_OUT) {
 
6808
                NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
 
6809
        }
 
6810
        return NDR_ERR_SUCCESS;
 
6811
}
 
6812
 
 
6813
static enum ndr_err_code ndr_pull_svcctl_SCSendTSMessage(struct ndr_pull *ndr, int flags, struct svcctl_SCSendTSMessage *r)
 
6814
{
 
6815
        if (flags & NDR_IN) {
 
6816
        }
 
6817
        if (flags & NDR_OUT) {
 
6818
                NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
 
6819
        }
 
6820
        return NDR_ERR_SUCCESS;
 
6821
}
 
6822
 
 
6823
_PUBLIC_ void ndr_print_svcctl_SCSendTSMessage(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_SCSendTSMessage *r)
 
6824
{
 
6825
        ndr_print_struct(ndr, name, "svcctl_SCSendTSMessage");
 
6826
        ndr->depth++;
 
6827
        if (flags & NDR_SET_VALUES) {
 
6828
                ndr->flags |= LIBNDR_PRINT_SET_VALUES;
 
6829
        }
 
6830
        if (flags & NDR_IN) {
 
6831
                ndr_print_struct(ndr, "in", "svcctl_SCSendTSMessage");
 
6832
                ndr->depth++;
 
6833
                ndr->depth--;
 
6834
        }
 
6835
        if (flags & NDR_OUT) {
 
6836
                ndr_print_struct(ndr, "out", "svcctl_SCSendTSMessage");
 
6837
                ndr->depth++;
 
6838
                ndr_print_WERROR(ndr, "result", r->out.result);
 
6839
                ndr->depth--;
 
6840
        }
 
6841
        ndr->depth--;
 
6842
}
 
6843
 
 
6844
static const struct ndr_interface_call svcctl_calls[] = {
 
6845
        {
 
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,
 
6851
                false,
 
6852
        },
 
6853
        {
 
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,
 
6859
                false,
 
6860
        },
 
6861
        {
 
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,
 
6867
                false,
 
6868
        },
 
6869
        {
 
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,
 
6875
                false,
 
6876
        },
 
6877
        {
 
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,
 
6883
                false,
 
6884
        },
 
6885
        {
 
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,
 
6891
                false,
 
6892
        },
 
6893
        {
 
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,
 
6899
                false,
 
6900
        },
 
6901
        {
 
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,
 
6907
                false,
 
6908
        },
 
6909
        {
 
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,
 
6915
                false,
 
6916
        },
 
6917
        {
 
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,
 
6923
                false,
 
6924
        },
 
6925
        {
 
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,
 
6931
                false,
 
6932
        },
 
6933
        {
 
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,
 
6939
                false,
 
6940
        },
 
6941
        {
 
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,
 
6947
                false,
 
6948
        },
 
6949
        {
 
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,
 
6955
                false,
 
6956
        },
 
6957
        {
 
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,
 
6963
                false,
 
6964
        },
 
6965
        {
 
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,
 
6971
                false,
 
6972
        },
 
6973
        {
 
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,
 
6979
                false,
 
6980
        },
 
6981
        {
 
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,
 
6987
                false,
 
6988
        },
 
6989
        {
 
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,
 
6995
                false,
 
6996
        },
 
6997
        {
 
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,
 
7003
                false,
 
7004
        },
 
7005
        {
 
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,
 
7011
                false,
 
7012
        },
 
7013
        {
 
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,
 
7019
                false,
 
7020
        },
 
7021
        {
 
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,
 
7027
                false,
 
7028
        },
 
7029
        {
 
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,
 
7035
                false,
 
7036
        },
 
7037
        {
 
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,
 
7043
                false,
 
7044
        },
 
7045
        {
 
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,
 
7051
                false,
 
7052
        },
 
7053
        {
 
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,
 
7059
                false,
 
7060
        },
 
7061
        {
 
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,
 
7067
                false,
 
7068
        },
 
7069
        {
 
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,
 
7075
                false,
 
7076
        },
 
7077
        {
 
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,
 
7083
                false,
 
7084
        },
 
7085
        {
 
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,
 
7091
                false,
 
7092
        },
 
7093
        {
 
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,
 
7099
                false,
 
7100
        },
 
7101
        {
 
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,
 
7107
                false,
 
7108
        },
 
7109
        {
 
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,
 
7115
                false,
 
7116
        },
 
7117
        {
 
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,
 
7123
                false,
 
7124
        },
 
7125
        {
 
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,
 
7131
                false,
 
7132
        },
 
7133
        {
 
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,
 
7139
                false,
 
7140
        },
 
7141
        {
 
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,
 
7147
                false,
 
7148
        },
 
7149
        {
 
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,
 
7155
                false,
 
7156
        },
 
7157
        {
 
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,
 
7163
                false,
 
7164
        },
 
7165
        {
 
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,
 
7171
                false,
 
7172
        },
 
7173
        {
 
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,
 
7179
                false,
 
7180
        },
 
7181
        {
 
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,
 
7187
                false,
 
7188
        },
 
7189
        {
 
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,
 
7195
                false,
 
7196
        },
 
7197
        { NULL, 0, NULL, NULL, NULL, false }
 
7198
};
 
7199
 
 
7200
static const char * const svcctl_endpoint_strings[] = {
 
7201
        "ncacn_np:[\\pipe\\svcctl]", 
 
7202
        "ncalrpc:", 
 
7203
};
 
7204
 
 
7205
static const struct ndr_interface_string_array svcctl_endpoints = {
 
7206
        .count  = 2,
 
7207
        .names  = svcctl_endpoint_strings
 
7208
};
 
7209
 
 
7210
static const char * const svcctl_authservice_strings[] = {
 
7211
        "host", 
 
7212
};
 
7213
 
 
7214
static const struct ndr_interface_string_array svcctl_authservices = {
 
7215
        .count  = 1,
 
7216
        .names  = svcctl_authservice_strings
 
7217
};
 
7218
 
 
7219
 
 
7220
const struct ndr_interface_table ndr_table_svcctl = {
 
7221
        .name           = "svcctl",
 
7222
        .syntax_id      = {
 
7223
                {0x367abb81,0x9844,0x35f1,{0xad,0x32},{0x98,0xf0,0x38,0x00,0x10,0x03}},
 
7224
                NDR_SVCCTL_VERSION
 
7225
        },
 
7226
        .helpstring     = NDR_SVCCTL_HELPSTRING,
 
7227
        .num_calls      = 44,
 
7228
        .calls          = svcctl_calls,
 
7229
        .endpoints      = &svcctl_endpoints,
 
7230
        .authservices   = &svcctl_authservices
 
7231
};
 
7232