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

« back to all changes in this revision

Viewing changes to .pc/fix-windows7-print-connection.patch/librpc/gen_ndr/ndr_spoolss.c

  • Committer: Bazaar Package Importer
  • Author(s): Chuck Short
  • Date: 2011-03-02 16:05:41 UTC
  • Revision ID: james.westby@ubuntu.com-20110302160541-oi1y7yhqn9qe2phs
Tags: 2:3.5.6~dfsg-5ubuntu3
* debian/patches/fix-windows7-print-connection.patch: Fix
  error "0x000003e6" when trying to connect a Windows 7 printer
  to a domain. (LP: #674216)
* debian/samba-common.dhcp: Take in account of the upstart script.
  (LP: #652065)

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_spoolss.h"
 
5
 
 
6
#include "librpc/gen_ndr/ndr_misc.h"
 
7
#include "librpc/gen_ndr/ndr_security.h"
 
8
#include "librpc/gen_ndr/ndr_winreg.h"
 
9
static enum ndr_err_code ndr_push_spoolss_Time(struct ndr_push *ndr, int ndr_flags, const struct spoolss_Time *r)
 
10
{
 
11
        if (ndr_flags & NDR_SCALARS) {
 
12
                NDR_CHECK(ndr_push_align(ndr, 2));
 
13
                NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->year));
 
14
                NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->month));
 
15
                NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->day_of_week));
 
16
                NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->day));
 
17
                NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->hour));
 
18
                NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->minute));
 
19
                NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->second));
 
20
                NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->millisecond));
 
21
                NDR_CHECK(ndr_push_trailer_align(ndr, 2));
 
22
        }
 
23
        if (ndr_flags & NDR_BUFFERS) {
 
24
        }
 
25
        return NDR_ERR_SUCCESS;
 
26
}
 
27
 
 
28
static enum ndr_err_code ndr_pull_spoolss_Time(struct ndr_pull *ndr, int ndr_flags, struct spoolss_Time *r)
 
29
{
 
30
        if (ndr_flags & NDR_SCALARS) {
 
31
                NDR_CHECK(ndr_pull_align(ndr, 2));
 
32
                NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->year));
 
33
                NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->month));
 
34
                NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->day_of_week));
 
35
                NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->day));
 
36
                NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->hour));
 
37
                NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->minute));
 
38
                NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->second));
 
39
                NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->millisecond));
 
40
                NDR_CHECK(ndr_pull_trailer_align(ndr, 2));
 
41
        }
 
42
        if (ndr_flags & NDR_BUFFERS) {
 
43
        }
 
44
        return NDR_ERR_SUCCESS;
 
45
}
 
46
 
 
47
_PUBLIC_ void ndr_print_spoolss_Time(struct ndr_print *ndr, const char *name, const struct spoolss_Time *r)
 
48
{
 
49
        ndr_print_struct(ndr, name, "spoolss_Time");
 
50
        ndr->depth++;
 
51
        ndr_print_uint16(ndr, "year", r->year);
 
52
        ndr_print_uint16(ndr, "month", r->month);
 
53
        ndr_print_uint16(ndr, "day_of_week", r->day_of_week);
 
54
        ndr_print_uint16(ndr, "day", r->day);
 
55
        ndr_print_uint16(ndr, "hour", r->hour);
 
56
        ndr_print_uint16(ndr, "minute", r->minute);
 
57
        ndr_print_uint16(ndr, "second", r->second);
 
58
        ndr_print_uint16(ndr, "millisecond", r->millisecond);
 
59
        ndr->depth--;
 
60
}
 
61
 
 
62
static size_t ndr_size_spoolss_Time(const struct spoolss_Time *r, struct smb_iconv_convenience *ic, int flags)
 
63
{
 
64
        return ndr_size_struct(r, flags, (ndr_push_flags_fn_t)ndr_push_spoolss_Time, ic);
 
65
}
 
66
 
 
67
static enum ndr_err_code ndr_push_spoolss_TimeCtr(struct ndr_push *ndr, int ndr_flags, const struct spoolss_TimeCtr *r)
 
68
{
 
69
        if (ndr_flags & NDR_SCALARS) {
 
70
                NDR_CHECK(ndr_push_align(ndr, 5));
 
71
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_size_spoolss_Time(r->time, ndr->iconv_convenience, ndr->flags)));
 
72
                NDR_CHECK(ndr_push_unique_ptr(ndr, r->time));
 
73
                NDR_CHECK(ndr_push_trailer_align(ndr, 5));
 
74
        }
 
75
        if (ndr_flags & NDR_BUFFERS) {
 
76
                if (r->time) {
 
77
                        NDR_CHECK(ndr_push_spoolss_Time(ndr, NDR_SCALARS, r->time));
 
78
                }
 
79
        }
 
80
        return NDR_ERR_SUCCESS;
 
81
}
 
82
 
 
83
static enum ndr_err_code ndr_pull_spoolss_TimeCtr(struct ndr_pull *ndr, int ndr_flags, struct spoolss_TimeCtr *r)
 
84
{
 
85
        uint32_t _ptr_time;
 
86
        TALLOC_CTX *_mem_save_time_0;
 
87
        if (ndr_flags & NDR_SCALARS) {
 
88
                NDR_CHECK(ndr_pull_align(ndr, 5));
 
89
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->size));
 
90
                NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_time));
 
91
                if (_ptr_time) {
 
92
                        NDR_PULL_ALLOC(ndr, r->time);
 
93
                } else {
 
94
                        r->time = NULL;
 
95
                }
 
96
                NDR_CHECK(ndr_pull_trailer_align(ndr, 5));
 
97
        }
 
98
        if (ndr_flags & NDR_BUFFERS) {
 
99
                if (r->time) {
 
100
                        _mem_save_time_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
101
                        NDR_PULL_SET_MEM_CTX(ndr, r->time, 0);
 
102
                        NDR_CHECK(ndr_pull_spoolss_Time(ndr, NDR_SCALARS, r->time));
 
103
                        NDR_PULL_SET_MEM_CTX(ndr, _mem_save_time_0, 0);
 
104
                }
 
105
        }
 
106
        return NDR_ERR_SUCCESS;
 
107
}
 
108
 
 
109
_PUBLIC_ void ndr_print_spoolss_TimeCtr(struct ndr_print *ndr, const char *name, const struct spoolss_TimeCtr *r)
 
110
{
 
111
        ndr_print_struct(ndr, name, "spoolss_TimeCtr");
 
112
        ndr->depth++;
 
113
        ndr_print_uint32(ndr, "size", (ndr->flags & LIBNDR_PRINT_SET_VALUES)?ndr_size_spoolss_Time(r->time, ndr->iconv_convenience, ndr->flags):r->size);
 
114
        ndr_print_ptr(ndr, "time", r->time);
 
115
        ndr->depth++;
 
116
        if (r->time) {
 
117
                ndr_print_spoolss_Time(ndr, "time", r->time);
 
118
        }
 
119
        ndr->depth--;
 
120
        ndr->depth--;
 
121
}
 
122
 
 
123
static enum ndr_err_code ndr_push_spoolss_ProcessorArchitecture(struct ndr_push *ndr, int ndr_flags, enum spoolss_ProcessorArchitecture r)
 
124
{
 
125
        NDR_CHECK(ndr_push_enum_uint1632(ndr, NDR_SCALARS, r));
 
126
        return NDR_ERR_SUCCESS;
 
127
}
 
128
 
 
129
static enum ndr_err_code ndr_pull_spoolss_ProcessorArchitecture(struct ndr_pull *ndr, int ndr_flags, enum spoolss_ProcessorArchitecture *r)
 
130
{
 
131
        uint16_t v;
 
132
        NDR_CHECK(ndr_pull_enum_uint1632(ndr, NDR_SCALARS, &v));
 
133
        *r = v;
 
134
        return NDR_ERR_SUCCESS;
 
135
}
 
136
 
 
137
_PUBLIC_ void ndr_print_spoolss_ProcessorArchitecture(struct ndr_print *ndr, const char *name, enum spoolss_ProcessorArchitecture r)
 
138
{
 
139
        const char *val = NULL;
 
140
 
 
141
        switch (r) {
 
142
                case PROCESSOR_ARCHITECTURE_INTEL: val = "PROCESSOR_ARCHITECTURE_INTEL"; break;
 
143
                case PROCESSOR_ARCHITECTURE_IA64: val = "PROCESSOR_ARCHITECTURE_IA64"; break;
 
144
                case PROCESSOR_ARCHITECTURE_AMD64: val = "PROCESSOR_ARCHITECTURE_AMD64"; break;
 
145
        }
 
146
        ndr_print_enum(ndr, name, "ENUM", val, r);
 
147
}
 
148
 
 
149
static enum ndr_err_code ndr_push_spoolss_ProcessorType(struct ndr_push *ndr, int ndr_flags, enum spoolss_ProcessorType r)
 
150
{
 
151
        NDR_CHECK(ndr_push_enum_uint32(ndr, NDR_SCALARS, r));
 
152
        return NDR_ERR_SUCCESS;
 
153
}
 
154
 
 
155
static enum ndr_err_code ndr_pull_spoolss_ProcessorType(struct ndr_pull *ndr, int ndr_flags, enum spoolss_ProcessorType *r)
 
156
{
 
157
        uint32_t v;
 
158
        NDR_CHECK(ndr_pull_enum_uint32(ndr, NDR_SCALARS, &v));
 
159
        *r = v;
 
160
        return NDR_ERR_SUCCESS;
 
161
}
 
162
 
 
163
_PUBLIC_ void ndr_print_spoolss_ProcessorType(struct ndr_print *ndr, const char *name, enum spoolss_ProcessorType r)
 
164
{
 
165
        const char *val = NULL;
 
166
 
 
167
        switch (r) {
 
168
                case PROCESSOR_INTEL_386: val = "PROCESSOR_INTEL_386"; break;
 
169
                case PROCESSOR_INTEL_486: val = "PROCESSOR_INTEL_486"; break;
 
170
                case PROCESSOR_INTEL_PENTIUM: val = "PROCESSOR_INTEL_PENTIUM"; break;
 
171
                case PROCESSOR_INTEL_IA64: val = "PROCESSOR_INTEL_IA64"; break;
 
172
                case PROCESSOR_AMD_X8664: val = "PROCESSOR_AMD_X8664"; break;
 
173
        }
 
174
        ndr_print_enum(ndr, name, "ENUM", val, r);
 
175
}
 
176
 
 
177
static enum ndr_err_code ndr_push_spoolss_MajorVersion(struct ndr_push *ndr, int ndr_flags, enum spoolss_MajorVersion r)
 
178
{
 
179
        NDR_CHECK(ndr_push_enum_uint32(ndr, NDR_SCALARS, r));
 
180
        return NDR_ERR_SUCCESS;
 
181
}
 
182
 
 
183
static enum ndr_err_code ndr_pull_spoolss_MajorVersion(struct ndr_pull *ndr, int ndr_flags, enum spoolss_MajorVersion *r)
 
184
{
 
185
        uint32_t v;
 
186
        NDR_CHECK(ndr_pull_enum_uint32(ndr, NDR_SCALARS, &v));
 
187
        *r = v;
 
188
        return NDR_ERR_SUCCESS;
 
189
}
 
190
 
 
191
_PUBLIC_ void ndr_print_spoolss_MajorVersion(struct ndr_print *ndr, const char *name, enum spoolss_MajorVersion r)
 
192
{
 
193
        const char *val = NULL;
 
194
 
 
195
        switch (r) {
 
196
                case SPOOLSS_MAJOR_VERSION_NT4_95_98_ME: val = "SPOOLSS_MAJOR_VERSION_NT4_95_98_ME"; break;
 
197
                case SPOOLSS_MAJOR_VERSION_2000_2003_XP: val = "SPOOLSS_MAJOR_VERSION_2000_2003_XP"; break;
 
198
                case SPOOLSS_MAJOR_VERSION_2008_VISTA: val = "SPOOLSS_MAJOR_VERSION_2008_VISTA"; break;
 
199
        }
 
200
        ndr_print_enum(ndr, name, "ENUM", val, r);
 
201
}
 
202
 
 
203
static enum ndr_err_code ndr_push_spoolss_MinorVersion(struct ndr_push *ndr, int ndr_flags, enum spoolss_MinorVersion r)
 
204
{
 
205
        NDR_CHECK(ndr_push_enum_uint32(ndr, NDR_SCALARS, r));
 
206
        return NDR_ERR_SUCCESS;
 
207
}
 
208
 
 
209
static enum ndr_err_code ndr_pull_spoolss_MinorVersion(struct ndr_pull *ndr, int ndr_flags, enum spoolss_MinorVersion *r)
 
210
{
 
211
        uint32_t v;
 
212
        NDR_CHECK(ndr_pull_enum_uint32(ndr, NDR_SCALARS, &v));
 
213
        *r = v;
 
214
        return NDR_ERR_SUCCESS;
 
215
}
 
216
 
 
217
_PUBLIC_ void ndr_print_spoolss_MinorVersion(struct ndr_print *ndr, const char *name, enum spoolss_MinorVersion r)
 
218
{
 
219
        const char *val = NULL;
 
220
 
 
221
        switch (r) {
 
222
                case SPOOLSS_MINOR_VERSION_0: val = "SPOOLSS_MINOR_VERSION_0"; break;
 
223
                case SPOOLSS_MINOR_VERSION_XP: val = "SPOOLSS_MINOR_VERSION_XP"; break;
 
224
                case SPOOLSS_MINOR_VERSION_2003_XP64: val = "SPOOLSS_MINOR_VERSION_2003_XP64"; break;
 
225
                case SPOOLSS_MINOR_VERSION_98: val = "SPOOLSS_MINOR_VERSION_98"; break;
 
226
                case SPOOLSS_MINOR_VERSION_ME: val = "SPOOLSS_MINOR_VERSION_ME"; break;
 
227
        }
 
228
        ndr_print_enum(ndr, name, "ENUM", val, r);
 
229
}
 
230
 
 
231
_PUBLIC_ enum ndr_err_code ndr_push_spoolss_PrinterStatus(struct ndr_push *ndr, int ndr_flags, uint32_t r)
 
232
{
 
233
        NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r));
 
234
        return NDR_ERR_SUCCESS;
 
235
}
 
236
 
 
237
_PUBLIC_ enum ndr_err_code ndr_pull_spoolss_PrinterStatus(struct ndr_pull *ndr, int ndr_flags, uint32_t *r)
 
238
{
 
239
        uint32_t v;
 
240
        NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &v));
 
241
        *r = v;
 
242
        return NDR_ERR_SUCCESS;
 
243
}
 
244
 
 
245
_PUBLIC_ void ndr_print_spoolss_PrinterStatus(struct ndr_print *ndr, const char *name, uint32_t r)
 
246
{
 
247
        ndr_print_uint32(ndr, name, r);
 
248
        ndr->depth++;
 
249
        ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "PRINTER_STATUS_PAUSED", PRINTER_STATUS_PAUSED, r);
 
250
        ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "PRINTER_STATUS_ERROR", PRINTER_STATUS_ERROR, r);
 
251
        ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "PRINTER_STATUS_PENDING_DELETION", PRINTER_STATUS_PENDING_DELETION, r);
 
252
        ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "PRINTER_STATUS_PAPER_JAM", PRINTER_STATUS_PAPER_JAM, r);
 
253
        ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "PRINTER_STATUS_PAPER_OUT", PRINTER_STATUS_PAPER_OUT, r);
 
254
        ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "PRINTER_STATUS_MANUAL_FEED", PRINTER_STATUS_MANUAL_FEED, r);
 
255
        ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "PRINTER_STATUS_PAPER_PROBLEM", PRINTER_STATUS_PAPER_PROBLEM, r);
 
256
        ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "PRINTER_STATUS_OFFLINE", PRINTER_STATUS_OFFLINE, r);
 
257
        ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "PRINTER_STATUS_IO_ACTIVE", PRINTER_STATUS_IO_ACTIVE, r);
 
258
        ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "PRINTER_STATUS_BUSY", PRINTER_STATUS_BUSY, r);
 
259
        ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "PRINTER_STATUS_PRINTING", PRINTER_STATUS_PRINTING, r);
 
260
        ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "PRINTER_STATUS_OUTPUT_BIN_FULL", PRINTER_STATUS_OUTPUT_BIN_FULL, r);
 
261
        ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "PRINTER_STATUS_NOT_AVAILABLE", PRINTER_STATUS_NOT_AVAILABLE, r);
 
262
        ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "PRINTER_STATUS_WAITING", PRINTER_STATUS_WAITING, r);
 
263
        ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "PRINTER_STATUS_PROCESSING", PRINTER_STATUS_PROCESSING, r);
 
264
        ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "PRINTER_STATUS_INITIALIZING", PRINTER_STATUS_INITIALIZING, r);
 
265
        ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "PRINTER_STATUS_WARMING_UP", PRINTER_STATUS_WARMING_UP, r);
 
266
        ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "PRINTER_STATUS_TONER_LOW", PRINTER_STATUS_TONER_LOW, r);
 
267
        ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "PRINTER_STATUS_NO_TONER", PRINTER_STATUS_NO_TONER, r);
 
268
        ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "PRINTER_STATUS_PAGE_PUNT", PRINTER_STATUS_PAGE_PUNT, r);
 
269
        ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "PRINTER_STATUS_USER_INTERVENTION", PRINTER_STATUS_USER_INTERVENTION, r);
 
270
        ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "PRINTER_STATUS_OUT_OF_MEMORY", PRINTER_STATUS_OUT_OF_MEMORY, r);
 
271
        ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "PRINTER_STATUS_DOOR_OPEN", PRINTER_STATUS_DOOR_OPEN, r);
 
272
        ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "PRINTER_STATUS_SERVER_UNKNOWN", PRINTER_STATUS_SERVER_UNKNOWN, r);
 
273
        ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "PRINTER_STATUS_POWER_SAVE", PRINTER_STATUS_POWER_SAVE, r);
 
274
        ndr->depth--;
 
275
}
 
276
 
 
277
static enum ndr_err_code ndr_push_spoolss_JobStatus(struct ndr_push *ndr, int ndr_flags, uint32_t r)
 
278
{
 
279
        NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r));
 
280
        return NDR_ERR_SUCCESS;
 
281
}
 
282
 
 
283
static enum ndr_err_code ndr_pull_spoolss_JobStatus(struct ndr_pull *ndr, int ndr_flags, uint32_t *r)
 
284
{
 
285
        uint32_t v;
 
286
        NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &v));
 
287
        *r = v;
 
288
        return NDR_ERR_SUCCESS;
 
289
}
 
290
 
 
291
_PUBLIC_ void ndr_print_spoolss_JobStatus(struct ndr_print *ndr, const char *name, uint32_t r)
 
292
{
 
293
        ndr_print_uint32(ndr, name, r);
 
294
        ndr->depth++;
 
295
        ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "JOB_STATUS_PAUSED", JOB_STATUS_PAUSED, r);
 
296
        ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "JOB_STATUS_ERROR", JOB_STATUS_ERROR, r);
 
297
        ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "JOB_STATUS_DELETING", JOB_STATUS_DELETING, r);
 
298
        ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "JOB_STATUS_SPOOLING", JOB_STATUS_SPOOLING, r);
 
299
        ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "JOB_STATUS_PRINTING", JOB_STATUS_PRINTING, r);
 
300
        ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "JOB_STATUS_OFFLINE", JOB_STATUS_OFFLINE, r);
 
301
        ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "JOB_STATUS_PAPEROUT", JOB_STATUS_PAPEROUT, r);
 
302
        ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "JOB_STATUS_PRINTED", JOB_STATUS_PRINTED, r);
 
303
        ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "JOB_STATUS_DELETED", JOB_STATUS_DELETED, r);
 
304
        ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "JOB_STATUS_BLOCKED_DEVQ", JOB_STATUS_BLOCKED_DEVQ, r);
 
305
        ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "JOB_STATUS_USER_INTERVENTION", JOB_STATUS_USER_INTERVENTION, r);
 
306
        ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "JOB_STATUS_RESTART", JOB_STATUS_RESTART, r);
 
307
        ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "JOB_STATUS_COMPLETE", JOB_STATUS_COMPLETE, r);
 
308
        ndr->depth--;
 
309
}
 
310
 
 
311
_PUBLIC_ enum ndr_err_code ndr_push_spoolss_PrinterInfo0(struct ndr_push *ndr, int ndr_flags, const struct spoolss_PrinterInfo0 *r)
 
312
{
 
313
        if (ndr_flags & NDR_SCALARS) {
 
314
                NDR_CHECK(ndr_push_align(ndr, 5));
 
315
                {
 
316
                        uint32_t _flags_save_string = ndr->flags;
 
317
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
318
                        NDR_CHECK(ndr_push_relative_ptr1(ndr, r->printername));
 
319
                        ndr->flags = _flags_save_string;
 
320
                }
 
321
                {
 
322
                        uint32_t _flags_save_string = ndr->flags;
 
323
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
324
                        NDR_CHECK(ndr_push_relative_ptr1(ndr, r->servername));
 
325
                        ndr->flags = _flags_save_string;
 
326
                }
 
327
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->cjobs));
 
328
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->total_jobs));
 
329
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->total_bytes));
 
330
                NDR_CHECK(ndr_push_spoolss_Time(ndr, NDR_SCALARS, &r->time));
 
331
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->global_counter));
 
332
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->total_pages));
 
333
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->version));
 
334
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->free_build));
 
335
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->spooling));
 
336
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->max_spooling));
 
337
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->session_counter));
 
338
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->num_error_out_of_paper));
 
339
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->num_error_not_ready));
 
340
                NDR_CHECK(ndr_push_spoolss_JobStatus(ndr, NDR_SCALARS, r->job_error));
 
341
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->number_of_processors));
 
342
                NDR_CHECK(ndr_push_spoolss_ProcessorType(ndr, NDR_SCALARS, r->processor_type));
 
343
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->high_part_total_bytes));
 
344
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->change_id));
 
345
                NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->last_error));
 
346
                NDR_CHECK(ndr_push_spoolss_PrinterStatus(ndr, NDR_SCALARS, r->status));
 
347
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->enumerate_network_printers));
 
348
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->c_setprinter));
 
349
                NDR_CHECK(ndr_push_spoolss_ProcessorArchitecture(ndr, NDR_SCALARS, r->processor_architecture));
 
350
                NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->processor_level));
 
351
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->ref_ic));
 
352
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->reserved2));
 
353
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->reserved3));
 
354
                NDR_CHECK(ndr_push_trailer_align(ndr, 5));
 
355
        }
 
356
        if (ndr_flags & NDR_BUFFERS) {
 
357
                {
 
358
                        uint32_t _flags_save_string = ndr->flags;
 
359
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
360
                        if (r->printername) {
 
361
                                NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->printername));
 
362
                                NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->printername));
 
363
                                NDR_CHECK(ndr_push_relative_ptr2_end(ndr, r->printername));
 
364
                        }
 
365
                        ndr->flags = _flags_save_string;
 
366
                }
 
367
                {
 
368
                        uint32_t _flags_save_string = ndr->flags;
 
369
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
370
                        if (r->servername) {
 
371
                                NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->servername));
 
372
                                NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->servername));
 
373
                                NDR_CHECK(ndr_push_relative_ptr2_end(ndr, r->servername));
 
374
                        }
 
375
                        ndr->flags = _flags_save_string;
 
376
                }
 
377
        }
 
378
        return NDR_ERR_SUCCESS;
 
379
}
 
380
 
 
381
_PUBLIC_ enum ndr_err_code ndr_pull_spoolss_PrinterInfo0(struct ndr_pull *ndr, int ndr_flags, struct spoolss_PrinterInfo0 *r)
 
382
{
 
383
        uint32_t _ptr_printername;
 
384
        TALLOC_CTX *_mem_save_printername_0;
 
385
        uint32_t _ptr_servername;
 
386
        TALLOC_CTX *_mem_save_servername_0;
 
387
        if (ndr_flags & NDR_SCALARS) {
 
388
                NDR_CHECK(ndr_pull_align(ndr, 5));
 
389
                {
 
390
                        uint32_t _flags_save_string = ndr->flags;
 
391
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
392
                        NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_printername));
 
393
                        if (_ptr_printername) {
 
394
                                NDR_PULL_ALLOC(ndr, r->printername);
 
395
                                NDR_CHECK(ndr_pull_relative_ptr1(ndr, r->printername, _ptr_printername));
 
396
                        } else {
 
397
                                r->printername = NULL;
 
398
                        }
 
399
                        ndr->flags = _flags_save_string;
 
400
                }
 
401
                {
 
402
                        uint32_t _flags_save_string = ndr->flags;
 
403
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
404
                        NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_servername));
 
405
                        if (_ptr_servername) {
 
406
                                NDR_PULL_ALLOC(ndr, r->servername);
 
407
                                NDR_CHECK(ndr_pull_relative_ptr1(ndr, r->servername, _ptr_servername));
 
408
                        } else {
 
409
                                r->servername = NULL;
 
410
                        }
 
411
                        ndr->flags = _flags_save_string;
 
412
                }
 
413
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->cjobs));
 
414
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->total_jobs));
 
415
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->total_bytes));
 
416
                NDR_CHECK(ndr_pull_spoolss_Time(ndr, NDR_SCALARS, &r->time));
 
417
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->global_counter));
 
418
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->total_pages));
 
419
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->version));
 
420
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->free_build));
 
421
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->spooling));
 
422
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->max_spooling));
 
423
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->session_counter));
 
424
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->num_error_out_of_paper));
 
425
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->num_error_not_ready));
 
426
                NDR_CHECK(ndr_pull_spoolss_JobStatus(ndr, NDR_SCALARS, &r->job_error));
 
427
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->number_of_processors));
 
428
                NDR_CHECK(ndr_pull_spoolss_ProcessorType(ndr, NDR_SCALARS, &r->processor_type));
 
429
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->high_part_total_bytes));
 
430
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->change_id));
 
431
                NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->last_error));
 
432
                NDR_CHECK(ndr_pull_spoolss_PrinterStatus(ndr, NDR_SCALARS, &r->status));
 
433
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->enumerate_network_printers));
 
434
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->c_setprinter));
 
435
                NDR_CHECK(ndr_pull_spoolss_ProcessorArchitecture(ndr, NDR_SCALARS, &r->processor_architecture));
 
436
                NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->processor_level));
 
437
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->ref_ic));
 
438
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->reserved2));
 
439
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->reserved3));
 
440
                NDR_CHECK(ndr_pull_trailer_align(ndr, 5));
 
441
        }
 
442
        if (ndr_flags & NDR_BUFFERS) {
 
443
                {
 
444
                        uint32_t _flags_save_string = ndr->flags;
 
445
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
446
                        if (r->printername) {
 
447
                                uint32_t _relative_save_offset;
 
448
                                _relative_save_offset = ndr->offset;
 
449
                                NDR_CHECK(ndr_pull_relative_ptr2(ndr, r->printername));
 
450
                                _mem_save_printername_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
451
                                NDR_PULL_SET_MEM_CTX(ndr, r->printername, 0);
 
452
                                NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->printername));
 
453
                                NDR_PULL_SET_MEM_CTX(ndr, _mem_save_printername_0, 0);
 
454
                                ndr->offset = _relative_save_offset;
 
455
                        }
 
456
                        ndr->flags = _flags_save_string;
 
457
                }
 
458
                {
 
459
                        uint32_t _flags_save_string = ndr->flags;
 
460
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
461
                        if (r->servername) {
 
462
                                uint32_t _relative_save_offset;
 
463
                                _relative_save_offset = ndr->offset;
 
464
                                NDR_CHECK(ndr_pull_relative_ptr2(ndr, r->servername));
 
465
                                _mem_save_servername_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
466
                                NDR_PULL_SET_MEM_CTX(ndr, r->servername, 0);
 
467
                                NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->servername));
 
468
                                NDR_PULL_SET_MEM_CTX(ndr, _mem_save_servername_0, 0);
 
469
                                ndr->offset = _relative_save_offset;
 
470
                        }
 
471
                        ndr->flags = _flags_save_string;
 
472
                }
 
473
        }
 
474
        return NDR_ERR_SUCCESS;
 
475
}
 
476
 
 
477
_PUBLIC_ void ndr_print_spoolss_PrinterInfo0(struct ndr_print *ndr, const char *name, const struct spoolss_PrinterInfo0 *r)
 
478
{
 
479
        ndr_print_struct(ndr, name, "spoolss_PrinterInfo0");
 
480
        ndr->depth++;
 
481
        ndr_print_ptr(ndr, "printername", r->printername);
 
482
        ndr->depth++;
 
483
        if (r->printername) {
 
484
                ndr_print_string(ndr, "printername", r->printername);
 
485
        }
 
486
        ndr->depth--;
 
487
        ndr_print_ptr(ndr, "servername", r->servername);
 
488
        ndr->depth++;
 
489
        if (r->servername) {
 
490
                ndr_print_string(ndr, "servername", r->servername);
 
491
        }
 
492
        ndr->depth--;
 
493
        ndr_print_uint32(ndr, "cjobs", r->cjobs);
 
494
        ndr_print_uint32(ndr, "total_jobs", r->total_jobs);
 
495
        ndr_print_uint32(ndr, "total_bytes", r->total_bytes);
 
496
        ndr_print_spoolss_Time(ndr, "time", &r->time);
 
497
        ndr_print_uint32(ndr, "global_counter", r->global_counter);
 
498
        ndr_print_uint32(ndr, "total_pages", r->total_pages);
 
499
        ndr_print_uint32(ndr, "version", r->version);
 
500
        ndr_print_uint32(ndr, "free_build", r->free_build);
 
501
        ndr_print_uint32(ndr, "spooling", r->spooling);
 
502
        ndr_print_uint32(ndr, "max_spooling", r->max_spooling);
 
503
        ndr_print_uint32(ndr, "session_counter", r->session_counter);
 
504
        ndr_print_uint32(ndr, "num_error_out_of_paper", r->num_error_out_of_paper);
 
505
        ndr_print_uint32(ndr, "num_error_not_ready", r->num_error_not_ready);
 
506
        ndr_print_spoolss_JobStatus(ndr, "job_error", r->job_error);
 
507
        ndr_print_uint32(ndr, "number_of_processors", r->number_of_processors);
 
508
        ndr_print_spoolss_ProcessorType(ndr, "processor_type", r->processor_type);
 
509
        ndr_print_uint32(ndr, "high_part_total_bytes", r->high_part_total_bytes);
 
510
        ndr_print_uint32(ndr, "change_id", r->change_id);
 
511
        ndr_print_WERROR(ndr, "last_error", r->last_error);
 
512
        ndr_print_spoolss_PrinterStatus(ndr, "status", r->status);
 
513
        ndr_print_uint32(ndr, "enumerate_network_printers", r->enumerate_network_printers);
 
514
        ndr_print_uint32(ndr, "c_setprinter", r->c_setprinter);
 
515
        ndr_print_spoolss_ProcessorArchitecture(ndr, "processor_architecture", r->processor_architecture);
 
516
        ndr_print_uint16(ndr, "processor_level", r->processor_level);
 
517
        ndr_print_uint32(ndr, "ref_ic", r->ref_ic);
 
518
        ndr_print_uint32(ndr, "reserved2", r->reserved2);
 
519
        ndr_print_uint32(ndr, "reserved3", r->reserved3);
 
520
        ndr->depth--;
 
521
}
 
522
 
 
523
_PUBLIC_ size_t ndr_size_spoolss_PrinterInfo0(const struct spoolss_PrinterInfo0 *r, struct smb_iconv_convenience *ic, int flags)
 
524
{
 
525
        return ndr_size_struct(r, flags, (ndr_push_flags_fn_t)ndr_push_spoolss_PrinterInfo0, ic);
 
526
}
 
527
 
 
528
static enum ndr_err_code ndr_push_spoolss_DeviceModeFields(struct ndr_push *ndr, int ndr_flags, uint32_t r)
 
529
{
 
530
        NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r));
 
531
        return NDR_ERR_SUCCESS;
 
532
}
 
533
 
 
534
static enum ndr_err_code ndr_pull_spoolss_DeviceModeFields(struct ndr_pull *ndr, int ndr_flags, uint32_t *r)
 
535
{
 
536
        uint32_t v;
 
537
        NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &v));
 
538
        *r = v;
 
539
        return NDR_ERR_SUCCESS;
 
540
}
 
541
 
 
542
_PUBLIC_ void ndr_print_spoolss_DeviceModeFields(struct ndr_print *ndr, const char *name, uint32_t r)
 
543
{
 
544
        ndr_print_uint32(ndr, name, r);
 
545
        ndr->depth++;
 
546
        ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "DEVMODE_ORIENTATION", DEVMODE_ORIENTATION, r);
 
547
        ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "DEVMODE_PAPERSIZE", DEVMODE_PAPERSIZE, r);
 
548
        ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "DEVMODE_PAPERLENGTH", DEVMODE_PAPERLENGTH, r);
 
549
        ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "DEVMODE_PAPERWIDTH", DEVMODE_PAPERWIDTH, r);
 
550
        ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "DEVMODE_SCALE", DEVMODE_SCALE, r);
 
551
        ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "DEVMODE_POSITION", DEVMODE_POSITION, r);
 
552
        ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "DEVMODE_NUP", DEVMODE_NUP, r);
 
553
        ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "DEVMODE_COPIES", DEVMODE_COPIES, r);
 
554
        ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "DEVMODE_DEFAULTSOURCE", DEVMODE_DEFAULTSOURCE, r);
 
555
        ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "DEVMODE_PRINTQUALITY", DEVMODE_PRINTQUALITY, r);
 
556
        ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "DEVMODE_COLOR", DEVMODE_COLOR, r);
 
557
        ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "DEVMODE_DUPLEX", DEVMODE_DUPLEX, r);
 
558
        ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "DEVMODE_YRESOLUTION", DEVMODE_YRESOLUTION, r);
 
559
        ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "DEVMODE_TTOPTION", DEVMODE_TTOPTION, r);
 
560
        ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "DEVMODE_COLLATE", DEVMODE_COLLATE, r);
 
561
        ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "DEVMODE_FORMNAME", DEVMODE_FORMNAME, r);
 
562
        ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "DEVMODE_LOGPIXELS", DEVMODE_LOGPIXELS, r);
 
563
        ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "DEVMODE_BITSPERPEL", DEVMODE_BITSPERPEL, r);
 
564
        ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "DEVMODE_PELSWIDTH", DEVMODE_PELSWIDTH, r);
 
565
        ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "DEVMODE_PELSHEIGHT", DEVMODE_PELSHEIGHT, r);
 
566
        ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "DEVMODE_DISPLAYFLAGS", DEVMODE_DISPLAYFLAGS, r);
 
567
        ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "DEVMODE_DISPLAYFREQUENCY", DEVMODE_DISPLAYFREQUENCY, r);
 
568
        ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "DEVMODE_ICMMETHOD", DEVMODE_ICMMETHOD, r);
 
569
        ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "DEVMODE_ICMINTENT", DEVMODE_ICMINTENT, r);
 
570
        ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "DEVMODE_MEDIATYPE", DEVMODE_MEDIATYPE, r);
 
571
        ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "DEVMODE_DITHERTYPE", DEVMODE_DITHERTYPE, r);
 
572
        ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "DEVMODE_PANNINGWIDTH", DEVMODE_PANNINGWIDTH, r);
 
573
        ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "DEVMODE_PANNINGHEIGHT", DEVMODE_PANNINGHEIGHT, r);
 
574
        ndr->depth--;
 
575
}
 
576
 
 
577
static enum ndr_err_code ndr_push_spoolss_DeviceModeSpecVersion(struct ndr_push *ndr, int ndr_flags, enum spoolss_DeviceModeSpecVersion r)
 
578
{
 
579
        NDR_CHECK(ndr_push_enum_uint16(ndr, NDR_SCALARS, r));
 
580
        return NDR_ERR_SUCCESS;
 
581
}
 
582
 
 
583
static enum ndr_err_code ndr_pull_spoolss_DeviceModeSpecVersion(struct ndr_pull *ndr, int ndr_flags, enum spoolss_DeviceModeSpecVersion *r)
 
584
{
 
585
        uint16_t v;
 
586
        NDR_CHECK(ndr_pull_enum_uint16(ndr, NDR_SCALARS, &v));
 
587
        *r = v;
 
588
        return NDR_ERR_SUCCESS;
 
589
}
 
590
 
 
591
_PUBLIC_ void ndr_print_spoolss_DeviceModeSpecVersion(struct ndr_print *ndr, const char *name, enum spoolss_DeviceModeSpecVersion r)
 
592
{
 
593
        const char *val = NULL;
 
594
 
 
595
        switch (r) {
 
596
                case DMSPEC_NT3: val = "DMSPEC_NT3"; break;
 
597
                case DMSPEC_WIN95_98_ME: val = "DMSPEC_WIN95_98_ME"; break;
 
598
                case DMSPEC_NT4_AND_ABOVE: val = "DMSPEC_NT4_AND_ABOVE"; break;
 
599
        }
 
600
        ndr_print_enum(ndr, name, "ENUM", val, r);
 
601
}
 
602
 
 
603
static enum ndr_err_code ndr_push_spoolss_DeviceModeOrientation(struct ndr_push *ndr, int ndr_flags, enum spoolss_DeviceModeOrientation r)
 
604
{
 
605
        NDR_CHECK(ndr_push_enum_uint16(ndr, NDR_SCALARS, r));
 
606
        return NDR_ERR_SUCCESS;
 
607
}
 
608
 
 
609
static enum ndr_err_code ndr_pull_spoolss_DeviceModeOrientation(struct ndr_pull *ndr, int ndr_flags, enum spoolss_DeviceModeOrientation *r)
 
610
{
 
611
        uint16_t v;
 
612
        NDR_CHECK(ndr_pull_enum_uint16(ndr, NDR_SCALARS, &v));
 
613
        *r = v;
 
614
        return NDR_ERR_SUCCESS;
 
615
}
 
616
 
 
617
_PUBLIC_ void ndr_print_spoolss_DeviceModeOrientation(struct ndr_print *ndr, const char *name, enum spoolss_DeviceModeOrientation r)
 
618
{
 
619
        const char *val = NULL;
 
620
 
 
621
        switch (r) {
 
622
                case DMORIENT_PORTRAIT: val = "DMORIENT_PORTRAIT"; break;
 
623
                case DMORIENT_LANDSCAPE: val = "DMORIENT_LANDSCAPE"; break;
 
624
        }
 
625
        ndr_print_enum(ndr, name, "ENUM", val, r);
 
626
}
 
627
 
 
628
static enum ndr_err_code ndr_push_spoolss_DeviceModePaperSize(struct ndr_push *ndr, int ndr_flags, enum spoolss_DeviceModePaperSize r)
 
629
{
 
630
        NDR_CHECK(ndr_push_enum_uint16(ndr, NDR_SCALARS, r));
 
631
        return NDR_ERR_SUCCESS;
 
632
}
 
633
 
 
634
static enum ndr_err_code ndr_pull_spoolss_DeviceModePaperSize(struct ndr_pull *ndr, int ndr_flags, enum spoolss_DeviceModePaperSize *r)
 
635
{
 
636
        uint16_t v;
 
637
        NDR_CHECK(ndr_pull_enum_uint16(ndr, NDR_SCALARS, &v));
 
638
        *r = v;
 
639
        return NDR_ERR_SUCCESS;
 
640
}
 
641
 
 
642
_PUBLIC_ void ndr_print_spoolss_DeviceModePaperSize(struct ndr_print *ndr, const char *name, enum spoolss_DeviceModePaperSize r)
 
643
{
 
644
        const char *val = NULL;
 
645
 
 
646
        switch (r) {
 
647
                case DMPAPER_LETTER: val = "DMPAPER_LETTER"; break;
 
648
                case DMPAPER_LETTERSMALL: val = "DMPAPER_LETTERSMALL"; break;
 
649
                case DMPAPER_TABLOID: val = "DMPAPER_TABLOID"; break;
 
650
                case DMPAPER_LEDGER: val = "DMPAPER_LEDGER"; break;
 
651
                case DMPAPER_LEGAL: val = "DMPAPER_LEGAL"; break;
 
652
                case DMPAPER_STATEMENT: val = "DMPAPER_STATEMENT"; break;
 
653
                case DMPAPER_EXECUTIVE: val = "DMPAPER_EXECUTIVE"; break;
 
654
                case DMPAPER_A3: val = "DMPAPER_A3"; break;
 
655
                case DMPAPER_A4: val = "DMPAPER_A4"; break;
 
656
                case DMPAPER_A4SMALL: val = "DMPAPER_A4SMALL"; break;
 
657
                case DMPAPER_A5: val = "DMPAPER_A5"; break;
 
658
                case DMPAPER_B4: val = "DMPAPER_B4"; break;
 
659
                case DMPAPER_B5: val = "DMPAPER_B5"; break;
 
660
                case DMPAPER_FOLIO: val = "DMPAPER_FOLIO"; break;
 
661
                case DMPAPER_QUARTO: val = "DMPAPER_QUARTO"; break;
 
662
                case DMPAPER_10X14: val = "DMPAPER_10X14"; break;
 
663
                case DMPAPER_11X17: val = "DMPAPER_11X17"; break;
 
664
                case DMPAPER_NOTE: val = "DMPAPER_NOTE"; break;
 
665
                case DMPAPER_ENV_9: val = "DMPAPER_ENV_9"; break;
 
666
                case DMPAPER_ENV_10: val = "DMPAPER_ENV_10"; break;
 
667
                case DMPAPER_ENV_11: val = "DMPAPER_ENV_11"; break;
 
668
                case DMPAPER_ENV_12: val = "DMPAPER_ENV_12"; break;
 
669
                case DMPAPER_ENV_14: val = "DMPAPER_ENV_14"; break;
 
670
                case DMPAPER_CSHEET: val = "DMPAPER_CSHEET"; break;
 
671
                case DMPAPER_DSHEET: val = "DMPAPER_DSHEET"; break;
 
672
                case DMPAPER_ESHEET: val = "DMPAPER_ESHEET"; break;
 
673
                case DMPAPER_ENV_DL: val = "DMPAPER_ENV_DL"; break;
 
674
                case DMPAPER_ENV_C5: val = "DMPAPER_ENV_C5"; break;
 
675
                case DMPAPER_ENV_C3: val = "DMPAPER_ENV_C3"; break;
 
676
                case DMPAPER_ENV_C4: val = "DMPAPER_ENV_C4"; break;
 
677
                case DMPAPER_ENV_C6: val = "DMPAPER_ENV_C6"; break;
 
678
                case DMPAPER_ENV_C65: val = "DMPAPER_ENV_C65"; break;
 
679
                case DMPAPER_ENV_B4: val = "DMPAPER_ENV_B4"; break;
 
680
                case DMPAPER_ENV_B5: val = "DMPAPER_ENV_B5"; break;
 
681
                case DMPAPER_ENV_B6: val = "DMPAPER_ENV_B6"; break;
 
682
                case DMPAPER_ENV_ITALY: val = "DMPAPER_ENV_ITALY"; break;
 
683
                case DMPAPER_ENV_MONARCH: val = "DMPAPER_ENV_MONARCH"; break;
 
684
                case DMPAPER_ENV_PERSONAL: val = "DMPAPER_ENV_PERSONAL"; break;
 
685
                case DMPAPER_FANFOLD_US: val = "DMPAPER_FANFOLD_US"; break;
 
686
                case DMPAPER_FANFOLD_STD_GERMAN: val = "DMPAPER_FANFOLD_STD_GERMAN"; break;
 
687
                case DMPAPER_FANFOLD_LGL_GERMAN: val = "DMPAPER_FANFOLD_LGL_GERMAN"; break;
 
688
                case DMPAPER_DBL_JAPANESE_POSTCARD: val = "DMPAPER_DBL_JAPANESE_POSTCARD"; break;
 
689
                case DMPAPER_A6: val = "DMPAPER_A6"; break;
 
690
                case DMPAPER_JENV_KAKU2: val = "DMPAPER_JENV_KAKU2"; break;
 
691
                case DMPAPER_JENV_KAKU3: val = "DMPAPER_JENV_KAKU3"; break;
 
692
                case DMPAPER_JENV_CHOU3: val = "DMPAPER_JENV_CHOU3"; break;
 
693
                case DMPAPER_JENV_CHOU4: val = "DMPAPER_JENV_CHOU4"; break;
 
694
                case DMPAPER_LETTER_ROTATED: val = "DMPAPER_LETTER_ROTATED"; break;
 
695
                case DMPAPER_A3_ROTATED: val = "DMPAPER_A3_ROTATED"; break;
 
696
                case DMPAPER_A4_ROTATED: val = "DMPAPER_A4_ROTATED"; break;
 
697
                case DMPAPER_A5_ROTATED: val = "DMPAPER_A5_ROTATED"; break;
 
698
                case DMPAPER_B4_JIS_ROTATED: val = "DMPAPER_B4_JIS_ROTATED"; break;
 
699
                case DMPAPER_B5_JIS_ROTATED: val = "DMPAPER_B5_JIS_ROTATED"; break;
 
700
                case DMPAPER_JAPANESE_POSTCARD_ROTATED: val = "DMPAPER_JAPANESE_POSTCARD_ROTATED"; break;
 
701
                case DMPAPER_DBL_JAPANESE_POSTCARD_ROTATED: val = "DMPAPER_DBL_JAPANESE_POSTCARD_ROTATED"; break;
 
702
                case DMPAPER_A6_ROTATED: val = "DMPAPER_A6_ROTATED"; break;
 
703
                case DMPAPER_JENV_KAKU2_ROTATED: val = "DMPAPER_JENV_KAKU2_ROTATED"; break;
 
704
                case DMPAPER_JENV_KAKU3_ROTATED: val = "DMPAPER_JENV_KAKU3_ROTATED"; break;
 
705
                case DMPAPER_JENV_CHOU3_ROTATED: val = "DMPAPER_JENV_CHOU3_ROTATED"; break;
 
706
                case DMPAPER_JENV_CHOU4_ROTATED: val = "DMPAPER_JENV_CHOU4_ROTATED"; break;
 
707
                case DMPAPER_B6_JIS: val = "DMPAPER_B6_JIS"; break;
 
708
                case DMPAPER_B6_JIS_ROTATED: val = "DMPAPER_B6_JIS_ROTATED"; break;
 
709
                case DMPAPER_12X11: val = "DMPAPER_12X11"; break;
 
710
                case DMPAPER_JENV_YOU4: val = "DMPAPER_JENV_YOU4"; break;
 
711
                case DMPAPER_JENV_YOU4_ROTATED: val = "DMPAPER_JENV_YOU4_ROTATED"; break;
 
712
                case DMPAPER_P16K: val = "DMPAPER_P16K"; break;
 
713
                case DMPAPER_P32K: val = "DMPAPER_P32K"; break;
 
714
                case DMPAPER_P32KBIG: val = "DMPAPER_P32KBIG"; break;
 
715
                case DMPAPER_PENV_1: val = "DMPAPER_PENV_1"; break;
 
716
                case DMPAPER_PENV_2: val = "DMPAPER_PENV_2"; break;
 
717
                case DMPAPER_PENV_3: val = "DMPAPER_PENV_3"; break;
 
718
                case DMPAPER_PENV_4: val = "DMPAPER_PENV_4"; break;
 
719
                case DMPAPER_PENV_5: val = "DMPAPER_PENV_5"; break;
 
720
                case DMPAPER_PENV_6: val = "DMPAPER_PENV_6"; break;
 
721
                case DMPAPER_PENV_7: val = "DMPAPER_PENV_7"; break;
 
722
                case DMPAPER_PENV_8: val = "DMPAPER_PENV_8"; break;
 
723
                case DMPAPER_PENV_9: val = "DMPAPER_PENV_9"; break;
 
724
                case DMPAPER_PENV_10: val = "DMPAPER_PENV_10"; break;
 
725
                case DMPAPER_P16K_ROTATED: val = "DMPAPER_P16K_ROTATED"; break;
 
726
                case DMPAPER_P32K_ROTATED: val = "DMPAPER_P32K_ROTATED"; break;
 
727
                case DMPAPER_P32KBIG_ROTATED: val = "DMPAPER_P32KBIG_ROTATED"; break;
 
728
                case DMPAPER_PENV_1_ROTATED: val = "DMPAPER_PENV_1_ROTATED"; break;
 
729
                case DMPAPER_PENV_2_ROTATED: val = "DMPAPER_PENV_2_ROTATED"; break;
 
730
                case DMPAPER_PENV_3_ROTATED: val = "DMPAPER_PENV_3_ROTATED"; break;
 
731
                case DMPAPER_PENV_4_ROTATED: val = "DMPAPER_PENV_4_ROTATED"; break;
 
732
                case DMPAPER_PENV_5_ROTATED: val = "DMPAPER_PENV_5_ROTATED"; break;
 
733
                case DMPAPER_PENV_6_ROTATED: val = "DMPAPER_PENV_6_ROTATED"; break;
 
734
                case DMPAPER_PENV_7_ROTATED: val = "DMPAPER_PENV_7_ROTATED"; break;
 
735
                case DMPAPER_PENV_8_ROTATED: val = "DMPAPER_PENV_8_ROTATED"; break;
 
736
                case DMPAPER_PENV_9_ROTATED: val = "DMPAPER_PENV_9_ROTATED"; break;
 
737
                case DMPAPER_PENV_10_ROTATED: val = "DMPAPER_PENV_10_ROTATED"; break;
 
738
        }
 
739
        ndr_print_enum(ndr, name, "ENUM", val, r);
 
740
}
 
741
 
 
742
static enum ndr_err_code ndr_push_spoolss_DeviceModeDefaultSource(struct ndr_push *ndr, int ndr_flags, enum spoolss_DeviceModeDefaultSource r)
 
743
{
 
744
        NDR_CHECK(ndr_push_enum_uint16(ndr, NDR_SCALARS, r));
 
745
        return NDR_ERR_SUCCESS;
 
746
}
 
747
 
 
748
static enum ndr_err_code ndr_pull_spoolss_DeviceModeDefaultSource(struct ndr_pull *ndr, int ndr_flags, enum spoolss_DeviceModeDefaultSource *r)
 
749
{
 
750
        uint16_t v;
 
751
        NDR_CHECK(ndr_pull_enum_uint16(ndr, NDR_SCALARS, &v));
 
752
        *r = v;
 
753
        return NDR_ERR_SUCCESS;
 
754
}
 
755
 
 
756
_PUBLIC_ void ndr_print_spoolss_DeviceModeDefaultSource(struct ndr_print *ndr, const char *name, enum spoolss_DeviceModeDefaultSource r)
 
757
{
 
758
        const char *val = NULL;
 
759
 
 
760
        switch (r) {
 
761
                case DMBIN_UPPER: val = "DMBIN_UPPER"; break;
 
762
                case DMBIN_LOWER: val = "DMBIN_LOWER"; break;
 
763
                case DMBIN_MIDDLE: val = "DMBIN_MIDDLE"; break;
 
764
                case DMBIN_MANUAL: val = "DMBIN_MANUAL"; break;
 
765
                case DMBIN_ENVELOPE: val = "DMBIN_ENVELOPE"; break;
 
766
                case DMBIN_ENVMANUAL: val = "DMBIN_ENVMANUAL"; break;
 
767
                case DMBIN_AUTO: val = "DMBIN_AUTO"; break;
 
768
                case DMBIN_TRACTOR: val = "DMBIN_TRACTOR"; break;
 
769
                case DMBIN_SMALLFMT: val = "DMBIN_SMALLFMT"; break;
 
770
                case DMBIN_LARGEFMT: val = "DMBIN_LARGEFMT"; break;
 
771
                case DMBIN_LARGECAPACITY: val = "DMBIN_LARGECAPACITY"; break;
 
772
                case DMBIN_CASSETTE: val = "DMBIN_CASSETTE"; break;
 
773
                case DMBIN_FORMSOURCE: val = "DMBIN_FORMSOURCE"; break;
 
774
        }
 
775
        ndr_print_enum(ndr, name, "ENUM", val, r);
 
776
}
 
777
 
 
778
static enum ndr_err_code ndr_push_spoolss_DeviceModePrintQuality(struct ndr_push *ndr, int ndr_flags, enum spoolss_DeviceModePrintQuality r)
 
779
{
 
780
        NDR_CHECK(ndr_push_enum_uint16(ndr, NDR_SCALARS, r));
 
781
        return NDR_ERR_SUCCESS;
 
782
}
 
783
 
 
784
static enum ndr_err_code ndr_pull_spoolss_DeviceModePrintQuality(struct ndr_pull *ndr, int ndr_flags, enum spoolss_DeviceModePrintQuality *r)
 
785
{
 
786
        uint16_t v;
 
787
        NDR_CHECK(ndr_pull_enum_uint16(ndr, NDR_SCALARS, &v));
 
788
        *r = v;
 
789
        return NDR_ERR_SUCCESS;
 
790
}
 
791
 
 
792
_PUBLIC_ void ndr_print_spoolss_DeviceModePrintQuality(struct ndr_print *ndr, const char *name, enum spoolss_DeviceModePrintQuality r)
 
793
{
 
794
        const char *val = NULL;
 
795
 
 
796
        switch (r) {
 
797
                case DMRES_HIGH: val = "DMRES_HIGH"; break;
 
798
                case DMRES_MEDIUM: val = "DMRES_MEDIUM"; break;
 
799
                case DMRES_LOW: val = "DMRES_LOW"; break;
 
800
                case DMRES_DRAFT: val = "DMRES_DRAFT"; break;
 
801
        }
 
802
        ndr_print_enum(ndr, name, "ENUM", val, r);
 
803
}
 
804
 
 
805
static enum ndr_err_code ndr_push_spoolss_DeviceModeColor(struct ndr_push *ndr, int ndr_flags, enum spoolss_DeviceModeColor r)
 
806
{
 
807
        NDR_CHECK(ndr_push_enum_uint16(ndr, NDR_SCALARS, r));
 
808
        return NDR_ERR_SUCCESS;
 
809
}
 
810
 
 
811
static enum ndr_err_code ndr_pull_spoolss_DeviceModeColor(struct ndr_pull *ndr, int ndr_flags, enum spoolss_DeviceModeColor *r)
 
812
{
 
813
        uint16_t v;
 
814
        NDR_CHECK(ndr_pull_enum_uint16(ndr, NDR_SCALARS, &v));
 
815
        *r = v;
 
816
        return NDR_ERR_SUCCESS;
 
817
}
 
818
 
 
819
_PUBLIC_ void ndr_print_spoolss_DeviceModeColor(struct ndr_print *ndr, const char *name, enum spoolss_DeviceModeColor r)
 
820
{
 
821
        const char *val = NULL;
 
822
 
 
823
        switch (r) {
 
824
                case DMRES_MONOCHROME: val = "DMRES_MONOCHROME"; break;
 
825
                case DMRES_COLOR: val = "DMRES_COLOR"; break;
 
826
        }
 
827
        ndr_print_enum(ndr, name, "ENUM", val, r);
 
828
}
 
829
 
 
830
static enum ndr_err_code ndr_push_spoolss_DeviceModeDuplex(struct ndr_push *ndr, int ndr_flags, enum spoolss_DeviceModeDuplex r)
 
831
{
 
832
        NDR_CHECK(ndr_push_enum_uint16(ndr, NDR_SCALARS, r));
 
833
        return NDR_ERR_SUCCESS;
 
834
}
 
835
 
 
836
static enum ndr_err_code ndr_pull_spoolss_DeviceModeDuplex(struct ndr_pull *ndr, int ndr_flags, enum spoolss_DeviceModeDuplex *r)
 
837
{
 
838
        uint16_t v;
 
839
        NDR_CHECK(ndr_pull_enum_uint16(ndr, NDR_SCALARS, &v));
 
840
        *r = v;
 
841
        return NDR_ERR_SUCCESS;
 
842
}
 
843
 
 
844
_PUBLIC_ void ndr_print_spoolss_DeviceModeDuplex(struct ndr_print *ndr, const char *name, enum spoolss_DeviceModeDuplex r)
 
845
{
 
846
        const char *val = NULL;
 
847
 
 
848
        switch (r) {
 
849
                case DMDUP_SIMPLEX: val = "DMDUP_SIMPLEX"; break;
 
850
                case DMDUP_VERTICAL: val = "DMDUP_VERTICAL"; break;
 
851
                case DMDUP_HORIZONTAL: val = "DMDUP_HORIZONTAL"; break;
 
852
        }
 
853
        ndr_print_enum(ndr, name, "ENUM", val, r);
 
854
}
 
855
 
 
856
static enum ndr_err_code ndr_push_spoolss_DeviceModeTTOption(struct ndr_push *ndr, int ndr_flags, enum spoolss_DeviceModeTTOption r)
 
857
{
 
858
        NDR_CHECK(ndr_push_enum_uint16(ndr, NDR_SCALARS, r));
 
859
        return NDR_ERR_SUCCESS;
 
860
}
 
861
 
 
862
static enum ndr_err_code ndr_pull_spoolss_DeviceModeTTOption(struct ndr_pull *ndr, int ndr_flags, enum spoolss_DeviceModeTTOption *r)
 
863
{
 
864
        uint16_t v;
 
865
        NDR_CHECK(ndr_pull_enum_uint16(ndr, NDR_SCALARS, &v));
 
866
        *r = v;
 
867
        return NDR_ERR_SUCCESS;
 
868
}
 
869
 
 
870
_PUBLIC_ void ndr_print_spoolss_DeviceModeTTOption(struct ndr_print *ndr, const char *name, enum spoolss_DeviceModeTTOption r)
 
871
{
 
872
        const char *val = NULL;
 
873
 
 
874
        switch (r) {
 
875
                case DMTT_BITMAP: val = "DMTT_BITMAP"; break;
 
876
                case DMTT_DOWNLOAD: val = "DMTT_DOWNLOAD"; break;
 
877
                case DMTT_SUBDEV: val = "DMTT_SUBDEV"; break;
 
878
                case DMTT_DOWNLOAD_OUTLINE: val = "DMTT_DOWNLOAD_OUTLINE"; break;
 
879
        }
 
880
        ndr_print_enum(ndr, name, "ENUM", val, r);
 
881
}
 
882
 
 
883
static enum ndr_err_code ndr_push_spoolss_DeviceModeCollate(struct ndr_push *ndr, int ndr_flags, enum spoolss_DeviceModeCollate r)
 
884
{
 
885
        NDR_CHECK(ndr_push_enum_uint16(ndr, NDR_SCALARS, r));
 
886
        return NDR_ERR_SUCCESS;
 
887
}
 
888
 
 
889
static enum ndr_err_code ndr_pull_spoolss_DeviceModeCollate(struct ndr_pull *ndr, int ndr_flags, enum spoolss_DeviceModeCollate *r)
 
890
{
 
891
        uint16_t v;
 
892
        NDR_CHECK(ndr_pull_enum_uint16(ndr, NDR_SCALARS, &v));
 
893
        *r = v;
 
894
        return NDR_ERR_SUCCESS;
 
895
}
 
896
 
 
897
_PUBLIC_ void ndr_print_spoolss_DeviceModeCollate(struct ndr_print *ndr, const char *name, enum spoolss_DeviceModeCollate r)
 
898
{
 
899
        const char *val = NULL;
 
900
 
 
901
        switch (r) {
 
902
                case DMCOLLATE_FALSE: val = "DMCOLLATE_FALSE"; break;
 
903
                case DMCOLLATE_TRUE: val = "DMCOLLATE_TRUE"; break;
 
904
        }
 
905
        ndr_print_enum(ndr, name, "ENUM", val, r);
 
906
}
 
907
 
 
908
static enum ndr_err_code ndr_push_spoolss_DeviceModeNUp(struct ndr_push *ndr, int ndr_flags, enum spoolss_DeviceModeNUp r)
 
909
{
 
910
        NDR_CHECK(ndr_push_enum_uint32(ndr, NDR_SCALARS, r));
 
911
        return NDR_ERR_SUCCESS;
 
912
}
 
913
 
 
914
static enum ndr_err_code ndr_pull_spoolss_DeviceModeNUp(struct ndr_pull *ndr, int ndr_flags, enum spoolss_DeviceModeNUp *r)
 
915
{
 
916
        uint32_t v;
 
917
        NDR_CHECK(ndr_pull_enum_uint32(ndr, NDR_SCALARS, &v));
 
918
        *r = v;
 
919
        return NDR_ERR_SUCCESS;
 
920
}
 
921
 
 
922
_PUBLIC_ void ndr_print_spoolss_DeviceModeNUp(struct ndr_print *ndr, const char *name, enum spoolss_DeviceModeNUp r)
 
923
{
 
924
        const char *val = NULL;
 
925
 
 
926
        switch (r) {
 
927
                case DMNUP_SYSTEM: val = "DMNUP_SYSTEM"; break;
 
928
                case DMNUP_ONEUP: val = "DMNUP_ONEUP"; break;
 
929
        }
 
930
        ndr_print_enum(ndr, name, "ENUM", val, r);
 
931
}
 
932
 
 
933
static enum ndr_err_code ndr_push_spoolss_DeviceModeICMMethod(struct ndr_push *ndr, int ndr_flags, enum spoolss_DeviceModeICMMethod r)
 
934
{
 
935
        NDR_CHECK(ndr_push_enum_uint32(ndr, NDR_SCALARS, r));
 
936
        return NDR_ERR_SUCCESS;
 
937
}
 
938
 
 
939
static enum ndr_err_code ndr_pull_spoolss_DeviceModeICMMethod(struct ndr_pull *ndr, int ndr_flags, enum spoolss_DeviceModeICMMethod *r)
 
940
{
 
941
        uint32_t v;
 
942
        NDR_CHECK(ndr_pull_enum_uint32(ndr, NDR_SCALARS, &v));
 
943
        *r = v;
 
944
        return NDR_ERR_SUCCESS;
 
945
}
 
946
 
 
947
_PUBLIC_ void ndr_print_spoolss_DeviceModeICMMethod(struct ndr_print *ndr, const char *name, enum spoolss_DeviceModeICMMethod r)
 
948
{
 
949
        const char *val = NULL;
 
950
 
 
951
        switch (r) {
 
952
                case DMICMMETHOD_NONE: val = "DMICMMETHOD_NONE"; break;
 
953
                case DMICMMETHOD_SYSTEM: val = "DMICMMETHOD_SYSTEM"; break;
 
954
                case DMICMMETHOD_DRIVER: val = "DMICMMETHOD_DRIVER"; break;
 
955
                case DMICMMETHOD_DEVICE: val = "DMICMMETHOD_DEVICE"; break;
 
956
        }
 
957
        ndr_print_enum(ndr, name, "ENUM", val, r);
 
958
}
 
959
 
 
960
static enum ndr_err_code ndr_push_spoolss_DeviceModeICMIntent(struct ndr_push *ndr, int ndr_flags, enum spoolss_DeviceModeICMIntent r)
 
961
{
 
962
        NDR_CHECK(ndr_push_enum_uint32(ndr, NDR_SCALARS, r));
 
963
        return NDR_ERR_SUCCESS;
 
964
}
 
965
 
 
966
static enum ndr_err_code ndr_pull_spoolss_DeviceModeICMIntent(struct ndr_pull *ndr, int ndr_flags, enum spoolss_DeviceModeICMIntent *r)
 
967
{
 
968
        uint32_t v;
 
969
        NDR_CHECK(ndr_pull_enum_uint32(ndr, NDR_SCALARS, &v));
 
970
        *r = v;
 
971
        return NDR_ERR_SUCCESS;
 
972
}
 
973
 
 
974
_PUBLIC_ void ndr_print_spoolss_DeviceModeICMIntent(struct ndr_print *ndr, const char *name, enum spoolss_DeviceModeICMIntent r)
 
975
{
 
976
        const char *val = NULL;
 
977
 
 
978
        switch (r) {
 
979
                case DMICM_SATURATE: val = "DMICM_SATURATE"; break;
 
980
                case DMICM_CONTRAST: val = "DMICM_CONTRAST"; break;
 
981
                case DMICM_COLORIMETRIC: val = "DMICM_COLORIMETRIC"; break;
 
982
                case DMICM_ABS_COLORIMETRIC: val = "DMICM_ABS_COLORIMETRIC"; break;
 
983
        }
 
984
        ndr_print_enum(ndr, name, "ENUM", val, r);
 
985
}
 
986
 
 
987
static enum ndr_err_code ndr_push_spoolss_DeviceModeMediaType(struct ndr_push *ndr, int ndr_flags, enum spoolss_DeviceModeMediaType r)
 
988
{
 
989
        NDR_CHECK(ndr_push_enum_uint32(ndr, NDR_SCALARS, r));
 
990
        return NDR_ERR_SUCCESS;
 
991
}
 
992
 
 
993
static enum ndr_err_code ndr_pull_spoolss_DeviceModeMediaType(struct ndr_pull *ndr, int ndr_flags, enum spoolss_DeviceModeMediaType *r)
 
994
{
 
995
        uint32_t v;
 
996
        NDR_CHECK(ndr_pull_enum_uint32(ndr, NDR_SCALARS, &v));
 
997
        *r = v;
 
998
        return NDR_ERR_SUCCESS;
 
999
}
 
1000
 
 
1001
_PUBLIC_ void ndr_print_spoolss_DeviceModeMediaType(struct ndr_print *ndr, const char *name, enum spoolss_DeviceModeMediaType r)
 
1002
{
 
1003
        const char *val = NULL;
 
1004
 
 
1005
        switch (r) {
 
1006
                case DMMEDIA_STANDARD: val = "DMMEDIA_STANDARD"; break;
 
1007
                case DMMEDIA_TRANSPARENCY: val = "DMMEDIA_TRANSPARENCY"; break;
 
1008
                case DMMEDIA_GLOSSY: val = "DMMEDIA_GLOSSY"; break;
 
1009
        }
 
1010
        ndr_print_enum(ndr, name, "ENUM", val, r);
 
1011
}
 
1012
 
 
1013
static enum ndr_err_code ndr_push_spoolss_DeviceModeDitherType(struct ndr_push *ndr, int ndr_flags, enum spoolss_DeviceModeDitherType r)
 
1014
{
 
1015
        NDR_CHECK(ndr_push_enum_uint32(ndr, NDR_SCALARS, r));
 
1016
        return NDR_ERR_SUCCESS;
 
1017
}
 
1018
 
 
1019
static enum ndr_err_code ndr_pull_spoolss_DeviceModeDitherType(struct ndr_pull *ndr, int ndr_flags, enum spoolss_DeviceModeDitherType *r)
 
1020
{
 
1021
        uint32_t v;
 
1022
        NDR_CHECK(ndr_pull_enum_uint32(ndr, NDR_SCALARS, &v));
 
1023
        *r = v;
 
1024
        return NDR_ERR_SUCCESS;
 
1025
}
 
1026
 
 
1027
_PUBLIC_ void ndr_print_spoolss_DeviceModeDitherType(struct ndr_print *ndr, const char *name, enum spoolss_DeviceModeDitherType r)
 
1028
{
 
1029
        const char *val = NULL;
 
1030
 
 
1031
        switch (r) {
 
1032
                case DMDITHER_NONE: val = "DMDITHER_NONE"; break;
 
1033
                case DMDITHER_COARSE: val = "DMDITHER_COARSE"; break;
 
1034
                case DMDITHER_FINE: val = "DMDITHER_FINE"; break;
 
1035
                case DMDITHER_LINEART: val = "DMDITHER_LINEART"; break;
 
1036
                case DMDITHER_ERRORDIFFUSION: val = "DMDITHER_ERRORDIFFUSION"; break;
 
1037
                case DMDITHER_RESERVED6: val = "DMDITHER_RESERVED6"; break;
 
1038
                case DMDITHER_RESERVED7: val = "DMDITHER_RESERVED7"; break;
 
1039
                case DMDITHER_RESERVED8: val = "DMDITHER_RESERVED8"; break;
 
1040
                case DMDITHER_RESERVED9: val = "DMDITHER_RESERVED9"; break;
 
1041
                case DMDITHER_GRAYSCALE: val = "DMDITHER_GRAYSCALE"; break;
 
1042
        }
 
1043
        ndr_print_enum(ndr, name, "ENUM", val, r);
 
1044
}
 
1045
 
 
1046
_PUBLIC_ enum ndr_err_code ndr_push_spoolss_DeviceMode(struct ndr_push *ndr, int ndr_flags, const struct spoolss_DeviceMode *r)
 
1047
{
 
1048
        if (ndr_flags & NDR_SCALARS) {
 
1049
                NDR_CHECK(ndr_push_align(ndr, 4));
 
1050
                NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->devicename, MAXDEVICENAME, sizeof(uint16_t), CH_UTF16));
 
1051
                NDR_CHECK(ndr_push_spoolss_DeviceModeSpecVersion(ndr, NDR_SCALARS, r->specversion));
 
1052
                NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->driverversion));
 
1053
                NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->size));
 
1054
                NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->driverextra_data.length));
 
1055
                NDR_CHECK(ndr_push_spoolss_DeviceModeFields(ndr, NDR_SCALARS, r->fields));
 
1056
                NDR_CHECK(ndr_push_spoolss_DeviceModeOrientation(ndr, NDR_SCALARS, r->orientation));
 
1057
                NDR_CHECK(ndr_push_spoolss_DeviceModePaperSize(ndr, NDR_SCALARS, r->papersize));
 
1058
                NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->paperlength));
 
1059
                NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->paperwidth));
 
1060
                NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->scale));
 
1061
                NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->copies));
 
1062
                NDR_CHECK(ndr_push_spoolss_DeviceModeDefaultSource(ndr, NDR_SCALARS, r->defaultsource));
 
1063
                NDR_CHECK(ndr_push_spoolss_DeviceModePrintQuality(ndr, NDR_SCALARS, r->printquality));
 
1064
                NDR_CHECK(ndr_push_spoolss_DeviceModeColor(ndr, NDR_SCALARS, r->color));
 
1065
                NDR_CHECK(ndr_push_spoolss_DeviceModeDuplex(ndr, NDR_SCALARS, r->duplex));
 
1066
                NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->yresolution));
 
1067
                NDR_CHECK(ndr_push_spoolss_DeviceModeTTOption(ndr, NDR_SCALARS, r->ttoption));
 
1068
                NDR_CHECK(ndr_push_spoolss_DeviceModeCollate(ndr, NDR_SCALARS, r->collate));
 
1069
                NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->formname, MAXDEVICENAME, sizeof(uint16_t), CH_UTF16));
 
1070
                NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->logpixels));
 
1071
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->bitsperpel));
 
1072
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->pelswidth));
 
1073
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->pelsheight));
 
1074
                NDR_CHECK(ndr_push_spoolss_DeviceModeNUp(ndr, NDR_SCALARS, r->displayflags));
 
1075
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->displayfrequency));
 
1076
                NDR_CHECK(ndr_push_spoolss_DeviceModeICMMethod(ndr, NDR_SCALARS, r->icmmethod));
 
1077
                NDR_CHECK(ndr_push_spoolss_DeviceModeICMIntent(ndr, NDR_SCALARS, r->icmintent));
 
1078
                NDR_CHECK(ndr_push_spoolss_DeviceModeMediaType(ndr, NDR_SCALARS, r->mediatype));
 
1079
                NDR_CHECK(ndr_push_spoolss_DeviceModeDitherType(ndr, NDR_SCALARS, r->dithertype));
 
1080
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->reserved1));
 
1081
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->reserved2));
 
1082
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->panningwidth));
 
1083
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->panningheight));
 
1084
                {
 
1085
                        uint32_t _flags_save_DATA_BLOB = ndr->flags;
 
1086
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_REMAINING);
 
1087
                        {
 
1088
                                struct ndr_push *_ndr_driverextra_data;
 
1089
                                NDR_CHECK(ndr_push_subcontext_start(ndr, &_ndr_driverextra_data, 0, r->driverextra_data.length));
 
1090
                                NDR_CHECK(ndr_push_DATA_BLOB(_ndr_driverextra_data, NDR_SCALARS, r->driverextra_data));
 
1091
                                NDR_CHECK(ndr_push_subcontext_end(ndr, _ndr_driverextra_data, 0, r->driverextra_data.length));
 
1092
                        }
 
1093
                        ndr->flags = _flags_save_DATA_BLOB;
 
1094
                }
 
1095
                NDR_CHECK(ndr_push_trailer_align(ndr, 4));
 
1096
        }
 
1097
        if (ndr_flags & NDR_BUFFERS) {
 
1098
        }
 
1099
        return NDR_ERR_SUCCESS;
 
1100
}
 
1101
 
 
1102
_PUBLIC_ enum ndr_err_code ndr_pull_spoolss_DeviceMode(struct ndr_pull *ndr, int ndr_flags, struct spoolss_DeviceMode *r)
 
1103
{
 
1104
        if (ndr_flags & NDR_SCALARS) {
 
1105
                NDR_CHECK(ndr_pull_align(ndr, 4));
 
1106
                NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->devicename, MAXDEVICENAME, sizeof(uint16_t), CH_UTF16));
 
1107
                NDR_CHECK(ndr_pull_spoolss_DeviceModeSpecVersion(ndr, NDR_SCALARS, &r->specversion));
 
1108
                NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->driverversion));
 
1109
                NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->size));
 
1110
                NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->__driverextra_length));
 
1111
                NDR_CHECK(ndr_pull_spoolss_DeviceModeFields(ndr, NDR_SCALARS, &r->fields));
 
1112
                NDR_CHECK(ndr_pull_spoolss_DeviceModeOrientation(ndr, NDR_SCALARS, &r->orientation));
 
1113
                NDR_CHECK(ndr_pull_spoolss_DeviceModePaperSize(ndr, NDR_SCALARS, &r->papersize));
 
1114
                NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->paperlength));
 
1115
                NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->paperwidth));
 
1116
                NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->scale));
 
1117
                NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->copies));
 
1118
                NDR_CHECK(ndr_pull_spoolss_DeviceModeDefaultSource(ndr, NDR_SCALARS, &r->defaultsource));
 
1119
                NDR_CHECK(ndr_pull_spoolss_DeviceModePrintQuality(ndr, NDR_SCALARS, &r->printquality));
 
1120
                NDR_CHECK(ndr_pull_spoolss_DeviceModeColor(ndr, NDR_SCALARS, &r->color));
 
1121
                NDR_CHECK(ndr_pull_spoolss_DeviceModeDuplex(ndr, NDR_SCALARS, &r->duplex));
 
1122
                NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->yresolution));
 
1123
                NDR_CHECK(ndr_pull_spoolss_DeviceModeTTOption(ndr, NDR_SCALARS, &r->ttoption));
 
1124
                NDR_CHECK(ndr_pull_spoolss_DeviceModeCollate(ndr, NDR_SCALARS, &r->collate));
 
1125
                NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->formname, MAXDEVICENAME, sizeof(uint16_t), CH_UTF16));
 
1126
                NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->logpixels));
 
1127
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->bitsperpel));
 
1128
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->pelswidth));
 
1129
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->pelsheight));
 
1130
                NDR_CHECK(ndr_pull_spoolss_DeviceModeNUp(ndr, NDR_SCALARS, &r->displayflags));
 
1131
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->displayfrequency));
 
1132
                NDR_CHECK(ndr_pull_spoolss_DeviceModeICMMethod(ndr, NDR_SCALARS, &r->icmmethod));
 
1133
                NDR_CHECK(ndr_pull_spoolss_DeviceModeICMIntent(ndr, NDR_SCALARS, &r->icmintent));
 
1134
                NDR_CHECK(ndr_pull_spoolss_DeviceModeMediaType(ndr, NDR_SCALARS, &r->mediatype));
 
1135
                NDR_CHECK(ndr_pull_spoolss_DeviceModeDitherType(ndr, NDR_SCALARS, &r->dithertype));
 
1136
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->reserved1));
 
1137
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->reserved2));
 
1138
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->panningwidth));
 
1139
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->panningheight));
 
1140
                {
 
1141
                        uint32_t _flags_save_DATA_BLOB = ndr->flags;
 
1142
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_REMAINING);
 
1143
                        {
 
1144
                                struct ndr_pull *_ndr_driverextra_data;
 
1145
                                NDR_CHECK(ndr_pull_subcontext_start(ndr, &_ndr_driverextra_data, 0, r->__driverextra_length));
 
1146
                                NDR_CHECK(ndr_pull_DATA_BLOB(_ndr_driverextra_data, NDR_SCALARS, &r->driverextra_data));
 
1147
                                NDR_CHECK(ndr_pull_subcontext_end(ndr, _ndr_driverextra_data, 0, r->__driverextra_length));
 
1148
                        }
 
1149
                        ndr->flags = _flags_save_DATA_BLOB;
 
1150
                }
 
1151
                NDR_CHECK(ndr_pull_trailer_align(ndr, 4));
 
1152
        }
 
1153
        if (ndr_flags & NDR_BUFFERS) {
 
1154
        }
 
1155
        return NDR_ERR_SUCCESS;
 
1156
}
 
1157
 
 
1158
_PUBLIC_ void ndr_print_spoolss_DeviceMode(struct ndr_print *ndr, const char *name, const struct spoolss_DeviceMode *r)
 
1159
{
 
1160
        ndr_print_struct(ndr, name, "spoolss_DeviceMode");
 
1161
        ndr->depth++;
 
1162
        ndr_print_string(ndr, "devicename", r->devicename);
 
1163
        ndr_print_spoolss_DeviceModeSpecVersion(ndr, "specversion", r->specversion);
 
1164
        ndr_print_uint16(ndr, "driverversion", r->driverversion);
 
1165
        ndr_print_uint16(ndr, "size", r->size);
 
1166
        ndr_print_uint16(ndr, "__driverextra_length", (ndr->flags & LIBNDR_PRINT_SET_VALUES)?r->driverextra_data.length:r->__driverextra_length);
 
1167
        ndr_print_spoolss_DeviceModeFields(ndr, "fields", r->fields);
 
1168
        ndr_print_spoolss_DeviceModeOrientation(ndr, "orientation", r->orientation);
 
1169
        ndr_print_spoolss_DeviceModePaperSize(ndr, "papersize", r->papersize);
 
1170
        ndr_print_uint16(ndr, "paperlength", r->paperlength);
 
1171
        ndr_print_uint16(ndr, "paperwidth", r->paperwidth);
 
1172
        ndr_print_uint16(ndr, "scale", r->scale);
 
1173
        ndr_print_uint16(ndr, "copies", r->copies);
 
1174
        ndr_print_spoolss_DeviceModeDefaultSource(ndr, "defaultsource", r->defaultsource);
 
1175
        ndr_print_spoolss_DeviceModePrintQuality(ndr, "printquality", r->printquality);
 
1176
        ndr_print_spoolss_DeviceModeColor(ndr, "color", r->color);
 
1177
        ndr_print_spoolss_DeviceModeDuplex(ndr, "duplex", r->duplex);
 
1178
        ndr_print_uint16(ndr, "yresolution", r->yresolution);
 
1179
        ndr_print_spoolss_DeviceModeTTOption(ndr, "ttoption", r->ttoption);
 
1180
        ndr_print_spoolss_DeviceModeCollate(ndr, "collate", r->collate);
 
1181
        ndr_print_string(ndr, "formname", r->formname);
 
1182
        ndr_print_uint16(ndr, "logpixels", r->logpixels);
 
1183
        ndr_print_uint32(ndr, "bitsperpel", r->bitsperpel);
 
1184
        ndr_print_uint32(ndr, "pelswidth", r->pelswidth);
 
1185
        ndr_print_uint32(ndr, "pelsheight", r->pelsheight);
 
1186
        ndr_print_spoolss_DeviceModeNUp(ndr, "displayflags", r->displayflags);
 
1187
        ndr_print_uint32(ndr, "displayfrequency", r->displayfrequency);
 
1188
        ndr_print_spoolss_DeviceModeICMMethod(ndr, "icmmethod", r->icmmethod);
 
1189
        ndr_print_spoolss_DeviceModeICMIntent(ndr, "icmintent", r->icmintent);
 
1190
        ndr_print_spoolss_DeviceModeMediaType(ndr, "mediatype", r->mediatype);
 
1191
        ndr_print_spoolss_DeviceModeDitherType(ndr, "dithertype", r->dithertype);
 
1192
        ndr_print_uint32(ndr, "reserved1", r->reserved1);
 
1193
        ndr_print_uint32(ndr, "reserved2", r->reserved2);
 
1194
        ndr_print_uint32(ndr, "panningwidth", r->panningwidth);
 
1195
        ndr_print_uint32(ndr, "panningheight", r->panningheight);
 
1196
        ndr_print_DATA_BLOB(ndr, "driverextra_data", r->driverextra_data);
 
1197
        ndr->depth--;
 
1198
}
 
1199
 
 
1200
_PUBLIC_ size_t ndr_size_spoolss_DeviceMode(const struct spoolss_DeviceMode *r, struct smb_iconv_convenience *ic, int flags)
 
1201
{
 
1202
        return ndr_size_struct(r, flags, (ndr_push_flags_fn_t)ndr_push_spoolss_DeviceMode, ic);
 
1203
}
 
1204
 
 
1205
_PUBLIC_ enum ndr_err_code ndr_push_spoolss_EnumPrinterFlags(struct ndr_push *ndr, int ndr_flags, uint32_t r)
 
1206
{
 
1207
        NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r));
 
1208
        return NDR_ERR_SUCCESS;
 
1209
}
 
1210
 
 
1211
_PUBLIC_ enum ndr_err_code ndr_pull_spoolss_EnumPrinterFlags(struct ndr_pull *ndr, int ndr_flags, uint32_t *r)
 
1212
{
 
1213
        uint32_t v;
 
1214
        NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &v));
 
1215
        *r = v;
 
1216
        return NDR_ERR_SUCCESS;
 
1217
}
 
1218
 
 
1219
_PUBLIC_ void ndr_print_spoolss_EnumPrinterFlags(struct ndr_print *ndr, const char *name, uint32_t r)
 
1220
{
 
1221
        ndr_print_uint32(ndr, name, r);
 
1222
        ndr->depth++;
 
1223
        ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "PRINTER_ENUM_DEFAULT", PRINTER_ENUM_DEFAULT, r);
 
1224
        ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "PRINTER_ENUM_LOCAL", PRINTER_ENUM_LOCAL, r);
 
1225
        ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "PRINTER_ENUM_CONNECTIONS", PRINTER_ENUM_CONNECTIONS, r);
 
1226
        ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "PRINTER_ENUM_FAVORITE", PRINTER_ENUM_FAVORITE, r);
 
1227
        ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "PRINTER_ENUM_NAME", PRINTER_ENUM_NAME, r);
 
1228
        ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "PRINTER_ENUM_REMOTE", PRINTER_ENUM_REMOTE, r);
 
1229
        ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "PRINTER_ENUM_SHARED", PRINTER_ENUM_SHARED, r);
 
1230
        ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "PRINTER_ENUM_NETWORK", PRINTER_ENUM_NETWORK, r);
 
1231
        ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "PRINTER_ENUM_EXPAND", PRINTER_ENUM_EXPAND, r);
 
1232
        ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "PRINTER_ENUM_CONTAINER", PRINTER_ENUM_CONTAINER, r);
 
1233
        ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "PRINTER_ENUM_ICON1", PRINTER_ENUM_ICON1, r);
 
1234
        ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "PRINTER_ENUM_ICON2", PRINTER_ENUM_ICON2, r);
 
1235
        ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "PRINTER_ENUM_ICON3", PRINTER_ENUM_ICON3, r);
 
1236
        ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "PRINTER_ENUM_ICON4", PRINTER_ENUM_ICON4, r);
 
1237
        ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "PRINTER_ENUM_ICON5", PRINTER_ENUM_ICON5, r);
 
1238
        ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "PRINTER_ENUM_ICON6", PRINTER_ENUM_ICON6, r);
 
1239
        ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "PRINTER_ENUM_ICON7", PRINTER_ENUM_ICON7, r);
 
1240
        ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "PRINTER_ENUM_ICON8", PRINTER_ENUM_ICON8, r);
 
1241
        ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "PRINTER_ENUM_HIDE", PRINTER_ENUM_HIDE, r);
 
1242
        ndr->depth--;
 
1243
}
 
1244
 
 
1245
_PUBLIC_ enum ndr_err_code ndr_push_spoolss_PrinterAttributes(struct ndr_push *ndr, int ndr_flags, uint32_t r)
 
1246
{
 
1247
        NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r));
 
1248
        return NDR_ERR_SUCCESS;
 
1249
}
 
1250
 
 
1251
_PUBLIC_ enum ndr_err_code ndr_pull_spoolss_PrinterAttributes(struct ndr_pull *ndr, int ndr_flags, uint32_t *r)
 
1252
{
 
1253
        uint32_t v;
 
1254
        NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &v));
 
1255
        *r = v;
 
1256
        return NDR_ERR_SUCCESS;
 
1257
}
 
1258
 
 
1259
_PUBLIC_ void ndr_print_spoolss_PrinterAttributes(struct ndr_print *ndr, const char *name, uint32_t r)
 
1260
{
 
1261
        ndr_print_uint32(ndr, name, r);
 
1262
        ndr->depth++;
 
1263
        ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "PRINTER_ATTRIBUTE_QUEUED", PRINTER_ATTRIBUTE_QUEUED, r);
 
1264
        ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "PRINTER_ATTRIBUTE_DIRECT", PRINTER_ATTRIBUTE_DIRECT, r);
 
1265
        ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "PRINTER_ATTRIBUTE_DEFAULT", PRINTER_ATTRIBUTE_DEFAULT, r);
 
1266
        ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "PRINTER_ATTRIBUTE_SHARED", PRINTER_ATTRIBUTE_SHARED, r);
 
1267
        ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "PRINTER_ATTRIBUTE_NETWORK", PRINTER_ATTRIBUTE_NETWORK, r);
 
1268
        ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "PRINTER_ATTRIBUTE_HIDDEN", PRINTER_ATTRIBUTE_HIDDEN, r);
 
1269
        ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "PRINTER_ATTRIBUTE_LOCAL", PRINTER_ATTRIBUTE_LOCAL, r);
 
1270
        ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "PRINTER_ATTRIBUTE_ENABLE_DEVQ", PRINTER_ATTRIBUTE_ENABLE_DEVQ, r);
 
1271
        ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "PRINTER_ATTRIBUTE_KEEPPRINTEDJOBS", PRINTER_ATTRIBUTE_KEEPPRINTEDJOBS, r);
 
1272
        ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "PRINTER_ATTRIBUTE_DO_COMPLETE_FIRST", PRINTER_ATTRIBUTE_DO_COMPLETE_FIRST, r);
 
1273
        ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "PRINTER_ATTRIBUTE_WORK_OFFLINE", PRINTER_ATTRIBUTE_WORK_OFFLINE, r);
 
1274
        ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "PRINTER_ATTRIBUTE_ENABLE_BIDI", PRINTER_ATTRIBUTE_ENABLE_BIDI, r);
 
1275
        ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "PRINTER_ATTRIBUTE_RAW_ONLY", PRINTER_ATTRIBUTE_RAW_ONLY, r);
 
1276
        ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "PRINTER_ATTRIBUTE_PUBLISHED", PRINTER_ATTRIBUTE_PUBLISHED, r);
 
1277
        ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "PRINTER_ATTRIBUTE_FAX", PRINTER_ATTRIBUTE_FAX, r);
 
1278
        ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "PRINTER_ATTRIBUTE_TS", PRINTER_ATTRIBUTE_TS, r);
 
1279
        ndr->depth--;
 
1280
}
 
1281
 
 
1282
_PUBLIC_ enum ndr_err_code ndr_push_spoolss_PrinterInfo1(struct ndr_push *ndr, int ndr_flags, const struct spoolss_PrinterInfo1 *r)
 
1283
{
 
1284
        if (ndr_flags & NDR_SCALARS) {
 
1285
                NDR_CHECK(ndr_push_align(ndr, 5));
 
1286
                NDR_CHECK(ndr_push_spoolss_PrinterAttributes(ndr, NDR_SCALARS, r->flags));
 
1287
                {
 
1288
                        uint32_t _flags_save_string = ndr->flags;
 
1289
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
1290
                        NDR_CHECK(ndr_push_relative_ptr1(ndr, r->description));
 
1291
                        ndr->flags = _flags_save_string;
 
1292
                }
 
1293
                {
 
1294
                        uint32_t _flags_save_string = ndr->flags;
 
1295
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
1296
                        NDR_CHECK(ndr_push_relative_ptr1(ndr, r->name));
 
1297
                        ndr->flags = _flags_save_string;
 
1298
                }
 
1299
                {
 
1300
                        uint32_t _flags_save_string = ndr->flags;
 
1301
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
1302
                        NDR_CHECK(ndr_push_relative_ptr1(ndr, r->comment));
 
1303
                        ndr->flags = _flags_save_string;
 
1304
                }
 
1305
                NDR_CHECK(ndr_push_trailer_align(ndr, 5));
 
1306
        }
 
1307
        if (ndr_flags & NDR_BUFFERS) {
 
1308
                {
 
1309
                        uint32_t _flags_save_string = ndr->flags;
 
1310
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
1311
                        if (r->description) {
 
1312
                                NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->description));
 
1313
                                NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->description));
 
1314
                                NDR_CHECK(ndr_push_relative_ptr2_end(ndr, r->description));
 
1315
                        }
 
1316
                        ndr->flags = _flags_save_string;
 
1317
                }
 
1318
                {
 
1319
                        uint32_t _flags_save_string = ndr->flags;
 
1320
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
1321
                        if (r->name) {
 
1322
                                NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->name));
 
1323
                                NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->name));
 
1324
                                NDR_CHECK(ndr_push_relative_ptr2_end(ndr, r->name));
 
1325
                        }
 
1326
                        ndr->flags = _flags_save_string;
 
1327
                }
 
1328
                {
 
1329
                        uint32_t _flags_save_string = ndr->flags;
 
1330
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
1331
                        if (r->comment) {
 
1332
                                NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->comment));
 
1333
                                NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->comment));
 
1334
                                NDR_CHECK(ndr_push_relative_ptr2_end(ndr, r->comment));
 
1335
                        }
 
1336
                        ndr->flags = _flags_save_string;
 
1337
                }
 
1338
        }
 
1339
        return NDR_ERR_SUCCESS;
 
1340
}
 
1341
 
 
1342
_PUBLIC_ enum ndr_err_code ndr_pull_spoolss_PrinterInfo1(struct ndr_pull *ndr, int ndr_flags, struct spoolss_PrinterInfo1 *r)
 
1343
{
 
1344
        uint32_t _ptr_description;
 
1345
        TALLOC_CTX *_mem_save_description_0;
 
1346
        uint32_t _ptr_name;
 
1347
        TALLOC_CTX *_mem_save_name_0;
 
1348
        uint32_t _ptr_comment;
 
1349
        TALLOC_CTX *_mem_save_comment_0;
 
1350
        if (ndr_flags & NDR_SCALARS) {
 
1351
                NDR_CHECK(ndr_pull_align(ndr, 5));
 
1352
                NDR_CHECK(ndr_pull_spoolss_PrinterAttributes(ndr, NDR_SCALARS, &r->flags));
 
1353
                {
 
1354
                        uint32_t _flags_save_string = ndr->flags;
 
1355
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
1356
                        NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_description));
 
1357
                        if (_ptr_description) {
 
1358
                                NDR_PULL_ALLOC(ndr, r->description);
 
1359
                                NDR_CHECK(ndr_pull_relative_ptr1(ndr, r->description, _ptr_description));
 
1360
                        } else {
 
1361
                                r->description = NULL;
 
1362
                        }
 
1363
                        ndr->flags = _flags_save_string;
 
1364
                }
 
1365
                {
 
1366
                        uint32_t _flags_save_string = ndr->flags;
 
1367
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
1368
                        NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_name));
 
1369
                        if (_ptr_name) {
 
1370
                                NDR_PULL_ALLOC(ndr, r->name);
 
1371
                                NDR_CHECK(ndr_pull_relative_ptr1(ndr, r->name, _ptr_name));
 
1372
                        } else {
 
1373
                                r->name = NULL;
 
1374
                        }
 
1375
                        ndr->flags = _flags_save_string;
 
1376
                }
 
1377
                {
 
1378
                        uint32_t _flags_save_string = ndr->flags;
 
1379
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
1380
                        NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_comment));
 
1381
                        if (_ptr_comment) {
 
1382
                                NDR_PULL_ALLOC(ndr, r->comment);
 
1383
                                NDR_CHECK(ndr_pull_relative_ptr1(ndr, r->comment, _ptr_comment));
 
1384
                        } else {
 
1385
                                r->comment = NULL;
 
1386
                        }
 
1387
                        ndr->flags = _flags_save_string;
 
1388
                }
 
1389
                NDR_CHECK(ndr_pull_trailer_align(ndr, 5));
 
1390
        }
 
1391
        if (ndr_flags & NDR_BUFFERS) {
 
1392
                {
 
1393
                        uint32_t _flags_save_string = ndr->flags;
 
1394
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
1395
                        if (r->description) {
 
1396
                                uint32_t _relative_save_offset;
 
1397
                                _relative_save_offset = ndr->offset;
 
1398
                                NDR_CHECK(ndr_pull_relative_ptr2(ndr, r->description));
 
1399
                                _mem_save_description_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
1400
                                NDR_PULL_SET_MEM_CTX(ndr, r->description, 0);
 
1401
                                NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->description));
 
1402
                                NDR_PULL_SET_MEM_CTX(ndr, _mem_save_description_0, 0);
 
1403
                                ndr->offset = _relative_save_offset;
 
1404
                        }
 
1405
                        ndr->flags = _flags_save_string;
 
1406
                }
 
1407
                {
 
1408
                        uint32_t _flags_save_string = ndr->flags;
 
1409
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
1410
                        if (r->name) {
 
1411
                                uint32_t _relative_save_offset;
 
1412
                                _relative_save_offset = ndr->offset;
 
1413
                                NDR_CHECK(ndr_pull_relative_ptr2(ndr, r->name));
 
1414
                                _mem_save_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
1415
                                NDR_PULL_SET_MEM_CTX(ndr, r->name, 0);
 
1416
                                NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->name));
 
1417
                                NDR_PULL_SET_MEM_CTX(ndr, _mem_save_name_0, 0);
 
1418
                                ndr->offset = _relative_save_offset;
 
1419
                        }
 
1420
                        ndr->flags = _flags_save_string;
 
1421
                }
 
1422
                {
 
1423
                        uint32_t _flags_save_string = ndr->flags;
 
1424
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
1425
                        if (r->comment) {
 
1426
                                uint32_t _relative_save_offset;
 
1427
                                _relative_save_offset = ndr->offset;
 
1428
                                NDR_CHECK(ndr_pull_relative_ptr2(ndr, r->comment));
 
1429
                                _mem_save_comment_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
1430
                                NDR_PULL_SET_MEM_CTX(ndr, r->comment, 0);
 
1431
                                NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->comment));
 
1432
                                NDR_PULL_SET_MEM_CTX(ndr, _mem_save_comment_0, 0);
 
1433
                                ndr->offset = _relative_save_offset;
 
1434
                        }
 
1435
                        ndr->flags = _flags_save_string;
 
1436
                }
 
1437
        }
 
1438
        return NDR_ERR_SUCCESS;
 
1439
}
 
1440
 
 
1441
_PUBLIC_ void ndr_print_spoolss_PrinterInfo1(struct ndr_print *ndr, const char *name, const struct spoolss_PrinterInfo1 *r)
 
1442
{
 
1443
        ndr_print_struct(ndr, name, "spoolss_PrinterInfo1");
 
1444
        ndr->depth++;
 
1445
        ndr_print_spoolss_PrinterAttributes(ndr, "flags", r->flags);
 
1446
        ndr_print_ptr(ndr, "description", r->description);
 
1447
        ndr->depth++;
 
1448
        if (r->description) {
 
1449
                ndr_print_string(ndr, "description", r->description);
 
1450
        }
 
1451
        ndr->depth--;
 
1452
        ndr_print_ptr(ndr, "name", r->name);
 
1453
        ndr->depth++;
 
1454
        if (r->name) {
 
1455
                ndr_print_string(ndr, "name", r->name);
 
1456
        }
 
1457
        ndr->depth--;
 
1458
        ndr_print_ptr(ndr, "comment", r->comment);
 
1459
        ndr->depth++;
 
1460
        if (r->comment) {
 
1461
                ndr_print_string(ndr, "comment", r->comment);
 
1462
        }
 
1463
        ndr->depth--;
 
1464
        ndr->depth--;
 
1465
}
 
1466
 
 
1467
_PUBLIC_ size_t ndr_size_spoolss_PrinterInfo1(const struct spoolss_PrinterInfo1 *r, struct smb_iconv_convenience *ic, int flags)
 
1468
{
 
1469
        return ndr_size_struct(r, flags, (ndr_push_flags_fn_t)ndr_push_spoolss_PrinterInfo1, ic);
 
1470
}
 
1471
 
 
1472
_PUBLIC_ enum ndr_err_code ndr_pull_spoolss_PrinterInfo2(struct ndr_pull *ndr, int ndr_flags, struct spoolss_PrinterInfo2 *r)
 
1473
{
 
1474
        uint32_t _ptr_servername;
 
1475
        TALLOC_CTX *_mem_save_servername_0;
 
1476
        uint32_t _ptr_printername;
 
1477
        TALLOC_CTX *_mem_save_printername_0;
 
1478
        uint32_t _ptr_sharename;
 
1479
        TALLOC_CTX *_mem_save_sharename_0;
 
1480
        uint32_t _ptr_portname;
 
1481
        TALLOC_CTX *_mem_save_portname_0;
 
1482
        uint32_t _ptr_drivername;
 
1483
        TALLOC_CTX *_mem_save_drivername_0;
 
1484
        uint32_t _ptr_comment;
 
1485
        TALLOC_CTX *_mem_save_comment_0;
 
1486
        uint32_t _ptr_location;
 
1487
        TALLOC_CTX *_mem_save_location_0;
 
1488
        uint32_t _ptr_devmode;
 
1489
        TALLOC_CTX *_mem_save_devmode_0;
 
1490
        uint32_t _ptr_sepfile;
 
1491
        TALLOC_CTX *_mem_save_sepfile_0;
 
1492
        uint32_t _ptr_printprocessor;
 
1493
        TALLOC_CTX *_mem_save_printprocessor_0;
 
1494
        uint32_t _ptr_datatype;
 
1495
        TALLOC_CTX *_mem_save_datatype_0;
 
1496
        uint32_t _ptr_parameters;
 
1497
        TALLOC_CTX *_mem_save_parameters_0;
 
1498
        uint32_t _ptr_secdesc;
 
1499
        TALLOC_CTX *_mem_save_secdesc_0;
 
1500
        if (ndr_flags & NDR_SCALARS) {
 
1501
                NDR_CHECK(ndr_pull_align(ndr, 5));
 
1502
                {
 
1503
                        uint32_t _flags_save_string = ndr->flags;
 
1504
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
1505
                        NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_servername));
 
1506
                        if (_ptr_servername) {
 
1507
                                NDR_PULL_ALLOC(ndr, r->servername);
 
1508
                                NDR_CHECK(ndr_pull_relative_ptr1(ndr, r->servername, _ptr_servername));
 
1509
                        } else {
 
1510
                                r->servername = NULL;
 
1511
                        }
 
1512
                        ndr->flags = _flags_save_string;
 
1513
                }
 
1514
                {
 
1515
                        uint32_t _flags_save_string = ndr->flags;
 
1516
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
1517
                        NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_printername));
 
1518
                        if (_ptr_printername) {
 
1519
                                NDR_PULL_ALLOC(ndr, r->printername);
 
1520
                                NDR_CHECK(ndr_pull_relative_ptr1(ndr, r->printername, _ptr_printername));
 
1521
                        } else {
 
1522
                                r->printername = NULL;
 
1523
                        }
 
1524
                        ndr->flags = _flags_save_string;
 
1525
                }
 
1526
                {
 
1527
                        uint32_t _flags_save_string = ndr->flags;
 
1528
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
1529
                        NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_sharename));
 
1530
                        if (_ptr_sharename) {
 
1531
                                NDR_PULL_ALLOC(ndr, r->sharename);
 
1532
                                NDR_CHECK(ndr_pull_relative_ptr1(ndr, r->sharename, _ptr_sharename));
 
1533
                        } else {
 
1534
                                r->sharename = NULL;
 
1535
                        }
 
1536
                        ndr->flags = _flags_save_string;
 
1537
                }
 
1538
                {
 
1539
                        uint32_t _flags_save_string = ndr->flags;
 
1540
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
1541
                        NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_portname));
 
1542
                        if (_ptr_portname) {
 
1543
                                NDR_PULL_ALLOC(ndr, r->portname);
 
1544
                                NDR_CHECK(ndr_pull_relative_ptr1(ndr, r->portname, _ptr_portname));
 
1545
                        } else {
 
1546
                                r->portname = NULL;
 
1547
                        }
 
1548
                        ndr->flags = _flags_save_string;
 
1549
                }
 
1550
                {
 
1551
                        uint32_t _flags_save_string = ndr->flags;
 
1552
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
1553
                        NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_drivername));
 
1554
                        if (_ptr_drivername) {
 
1555
                                NDR_PULL_ALLOC(ndr, r->drivername);
 
1556
                                NDR_CHECK(ndr_pull_relative_ptr1(ndr, r->drivername, _ptr_drivername));
 
1557
                        } else {
 
1558
                                r->drivername = NULL;
 
1559
                        }
 
1560
                        ndr->flags = _flags_save_string;
 
1561
                }
 
1562
                {
 
1563
                        uint32_t _flags_save_string = ndr->flags;
 
1564
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
1565
                        NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_comment));
 
1566
                        if (_ptr_comment) {
 
1567
                                NDR_PULL_ALLOC(ndr, r->comment);
 
1568
                                NDR_CHECK(ndr_pull_relative_ptr1(ndr, r->comment, _ptr_comment));
 
1569
                        } else {
 
1570
                                r->comment = NULL;
 
1571
                        }
 
1572
                        ndr->flags = _flags_save_string;
 
1573
                }
 
1574
                {
 
1575
                        uint32_t _flags_save_string = ndr->flags;
 
1576
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
1577
                        NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_location));
 
1578
                        if (_ptr_location) {
 
1579
                                NDR_PULL_ALLOC(ndr, r->location);
 
1580
                                NDR_CHECK(ndr_pull_relative_ptr1(ndr, r->location, _ptr_location));
 
1581
                        } else {
 
1582
                                r->location = NULL;
 
1583
                        }
 
1584
                        ndr->flags = _flags_save_string;
 
1585
                }
 
1586
                {
 
1587
                        uint32_t _flags_save_spoolss_DeviceMode = ndr->flags;
 
1588
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_ALIGN4);
 
1589
                        NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_devmode));
 
1590
                        if (_ptr_devmode) {
 
1591
                                NDR_PULL_ALLOC(ndr, r->devmode);
 
1592
                                NDR_CHECK(ndr_pull_relative_ptr1(ndr, r->devmode, _ptr_devmode));
 
1593
                        } else {
 
1594
                                r->devmode = NULL;
 
1595
                        }
 
1596
                        ndr->flags = _flags_save_spoolss_DeviceMode;
 
1597
                }
 
1598
                {
 
1599
                        uint32_t _flags_save_string = ndr->flags;
 
1600
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
1601
                        NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_sepfile));
 
1602
                        if (_ptr_sepfile) {
 
1603
                                NDR_PULL_ALLOC(ndr, r->sepfile);
 
1604
                                NDR_CHECK(ndr_pull_relative_ptr1(ndr, r->sepfile, _ptr_sepfile));
 
1605
                        } else {
 
1606
                                r->sepfile = NULL;
 
1607
                        }
 
1608
                        ndr->flags = _flags_save_string;
 
1609
                }
 
1610
                {
 
1611
                        uint32_t _flags_save_string = ndr->flags;
 
1612
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
1613
                        NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_printprocessor));
 
1614
                        if (_ptr_printprocessor) {
 
1615
                                NDR_PULL_ALLOC(ndr, r->printprocessor);
 
1616
                                NDR_CHECK(ndr_pull_relative_ptr1(ndr, r->printprocessor, _ptr_printprocessor));
 
1617
                        } else {
 
1618
                                r->printprocessor = NULL;
 
1619
                        }
 
1620
                        ndr->flags = _flags_save_string;
 
1621
                }
 
1622
                {
 
1623
                        uint32_t _flags_save_string = ndr->flags;
 
1624
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
1625
                        NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_datatype));
 
1626
                        if (_ptr_datatype) {
 
1627
                                NDR_PULL_ALLOC(ndr, r->datatype);
 
1628
                                NDR_CHECK(ndr_pull_relative_ptr1(ndr, r->datatype, _ptr_datatype));
 
1629
                        } else {
 
1630
                                r->datatype = NULL;
 
1631
                        }
 
1632
                        ndr->flags = _flags_save_string;
 
1633
                }
 
1634
                {
 
1635
                        uint32_t _flags_save_string = ndr->flags;
 
1636
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
1637
                        NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_parameters));
 
1638
                        if (_ptr_parameters) {
 
1639
                                NDR_PULL_ALLOC(ndr, r->parameters);
 
1640
                                NDR_CHECK(ndr_pull_relative_ptr1(ndr, r->parameters, _ptr_parameters));
 
1641
                        } else {
 
1642
                                r->parameters = NULL;
 
1643
                        }
 
1644
                        ndr->flags = _flags_save_string;
 
1645
                }
 
1646
                {
 
1647
                        uint32_t _flags_save_spoolss_security_descriptor = ndr->flags;
 
1648
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_ALIGN4);
 
1649
                        NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_secdesc));
 
1650
                        if (_ptr_secdesc) {
 
1651
                                NDR_PULL_ALLOC(ndr, r->secdesc);
 
1652
                                NDR_CHECK(ndr_pull_relative_ptr1(ndr, r->secdesc, _ptr_secdesc));
 
1653
                        } else {
 
1654
                                r->secdesc = NULL;
 
1655
                        }
 
1656
                        ndr->flags = _flags_save_spoolss_security_descriptor;
 
1657
                }
 
1658
                NDR_CHECK(ndr_pull_spoolss_PrinterAttributes(ndr, NDR_SCALARS, &r->attributes));
 
1659
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->priority));
 
1660
                if (r->priority > 99) {
 
1661
                        return ndr_pull_error(ndr, NDR_ERR_RANGE, "value out of range");
 
1662
                }
 
1663
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->defaultpriority));
 
1664
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->starttime));
 
1665
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->untiltime));
 
1666
                NDR_CHECK(ndr_pull_spoolss_PrinterStatus(ndr, NDR_SCALARS, &r->status));
 
1667
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->cjobs));
 
1668
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->averageppm));
 
1669
                NDR_CHECK(ndr_pull_trailer_align(ndr, 5));
 
1670
        }
 
1671
        if (ndr_flags & NDR_BUFFERS) {
 
1672
                {
 
1673
                        uint32_t _flags_save_string = ndr->flags;
 
1674
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
1675
                        if (r->servername) {
 
1676
                                uint32_t _relative_save_offset;
 
1677
                                _relative_save_offset = ndr->offset;
 
1678
                                NDR_CHECK(ndr_pull_relative_ptr2(ndr, r->servername));
 
1679
                                _mem_save_servername_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
1680
                                NDR_PULL_SET_MEM_CTX(ndr, r->servername, 0);
 
1681
                                NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->servername));
 
1682
                                NDR_PULL_SET_MEM_CTX(ndr, _mem_save_servername_0, 0);
 
1683
                                ndr->offset = _relative_save_offset;
 
1684
                        }
 
1685
                        ndr->flags = _flags_save_string;
 
1686
                }
 
1687
                {
 
1688
                        uint32_t _flags_save_string = ndr->flags;
 
1689
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
1690
                        if (r->printername) {
 
1691
                                uint32_t _relative_save_offset;
 
1692
                                _relative_save_offset = ndr->offset;
 
1693
                                NDR_CHECK(ndr_pull_relative_ptr2(ndr, r->printername));
 
1694
                                _mem_save_printername_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
1695
                                NDR_PULL_SET_MEM_CTX(ndr, r->printername, 0);
 
1696
                                NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->printername));
 
1697
                                NDR_PULL_SET_MEM_CTX(ndr, _mem_save_printername_0, 0);
 
1698
                                ndr->offset = _relative_save_offset;
 
1699
                        }
 
1700
                        ndr->flags = _flags_save_string;
 
1701
                }
 
1702
                {
 
1703
                        uint32_t _flags_save_string = ndr->flags;
 
1704
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
1705
                        if (r->sharename) {
 
1706
                                uint32_t _relative_save_offset;
 
1707
                                _relative_save_offset = ndr->offset;
 
1708
                                NDR_CHECK(ndr_pull_relative_ptr2(ndr, r->sharename));
 
1709
                                _mem_save_sharename_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
1710
                                NDR_PULL_SET_MEM_CTX(ndr, r->sharename, 0);
 
1711
                                NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->sharename));
 
1712
                                NDR_PULL_SET_MEM_CTX(ndr, _mem_save_sharename_0, 0);
 
1713
                                ndr->offset = _relative_save_offset;
 
1714
                        }
 
1715
                        ndr->flags = _flags_save_string;
 
1716
                }
 
1717
                {
 
1718
                        uint32_t _flags_save_string = ndr->flags;
 
1719
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
1720
                        if (r->portname) {
 
1721
                                uint32_t _relative_save_offset;
 
1722
                                _relative_save_offset = ndr->offset;
 
1723
                                NDR_CHECK(ndr_pull_relative_ptr2(ndr, r->portname));
 
1724
                                _mem_save_portname_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
1725
                                NDR_PULL_SET_MEM_CTX(ndr, r->portname, 0);
 
1726
                                NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->portname));
 
1727
                                NDR_PULL_SET_MEM_CTX(ndr, _mem_save_portname_0, 0);
 
1728
                                ndr->offset = _relative_save_offset;
 
1729
                        }
 
1730
                        ndr->flags = _flags_save_string;
 
1731
                }
 
1732
                {
 
1733
                        uint32_t _flags_save_string = ndr->flags;
 
1734
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
1735
                        if (r->drivername) {
 
1736
                                uint32_t _relative_save_offset;
 
1737
                                _relative_save_offset = ndr->offset;
 
1738
                                NDR_CHECK(ndr_pull_relative_ptr2(ndr, r->drivername));
 
1739
                                _mem_save_drivername_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
1740
                                NDR_PULL_SET_MEM_CTX(ndr, r->drivername, 0);
 
1741
                                NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->drivername));
 
1742
                                NDR_PULL_SET_MEM_CTX(ndr, _mem_save_drivername_0, 0);
 
1743
                                ndr->offset = _relative_save_offset;
 
1744
                        }
 
1745
                        ndr->flags = _flags_save_string;
 
1746
                }
 
1747
                {
 
1748
                        uint32_t _flags_save_string = ndr->flags;
 
1749
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
1750
                        if (r->comment) {
 
1751
                                uint32_t _relative_save_offset;
 
1752
                                _relative_save_offset = ndr->offset;
 
1753
                                NDR_CHECK(ndr_pull_relative_ptr2(ndr, r->comment));
 
1754
                                _mem_save_comment_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
1755
                                NDR_PULL_SET_MEM_CTX(ndr, r->comment, 0);
 
1756
                                NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->comment));
 
1757
                                NDR_PULL_SET_MEM_CTX(ndr, _mem_save_comment_0, 0);
 
1758
                                ndr->offset = _relative_save_offset;
 
1759
                        }
 
1760
                        ndr->flags = _flags_save_string;
 
1761
                }
 
1762
                {
 
1763
                        uint32_t _flags_save_string = ndr->flags;
 
1764
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
1765
                        if (r->location) {
 
1766
                                uint32_t _relative_save_offset;
 
1767
                                _relative_save_offset = ndr->offset;
 
1768
                                NDR_CHECK(ndr_pull_relative_ptr2(ndr, r->location));
 
1769
                                _mem_save_location_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
1770
                                NDR_PULL_SET_MEM_CTX(ndr, r->location, 0);
 
1771
                                NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->location));
 
1772
                                NDR_PULL_SET_MEM_CTX(ndr, _mem_save_location_0, 0);
 
1773
                                ndr->offset = _relative_save_offset;
 
1774
                        }
 
1775
                        ndr->flags = _flags_save_string;
 
1776
                }
 
1777
                {
 
1778
                        uint32_t _flags_save_spoolss_DeviceMode = ndr->flags;
 
1779
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_ALIGN4);
 
1780
                        if (r->devmode) {
 
1781
                                uint32_t _relative_save_offset;
 
1782
                                _relative_save_offset = ndr->offset;
 
1783
                                NDR_CHECK(ndr_pull_relative_ptr2(ndr, r->devmode));
 
1784
                                _mem_save_devmode_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
1785
                                NDR_PULL_SET_MEM_CTX(ndr, r->devmode, 0);
 
1786
                                {
 
1787
                                        struct ndr_pull *_ndr_devmode;
 
1788
                                        NDR_CHECK(ndr_pull_subcontext_start(ndr, &_ndr_devmode, 0, -1));
 
1789
                                        NDR_CHECK(ndr_pull_spoolss_DeviceMode(_ndr_devmode, NDR_SCALARS, r->devmode));
 
1790
                                        NDR_CHECK(ndr_pull_subcontext_end(ndr, _ndr_devmode, 0, -1));
 
1791
                                }
 
1792
                                NDR_PULL_SET_MEM_CTX(ndr, _mem_save_devmode_0, 0);
 
1793
                                ndr->offset = _relative_save_offset;
 
1794
                        }
 
1795
                        ndr->flags = _flags_save_spoolss_DeviceMode;
 
1796
                }
 
1797
                {
 
1798
                        uint32_t _flags_save_string = ndr->flags;
 
1799
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
1800
                        if (r->sepfile) {
 
1801
                                uint32_t _relative_save_offset;
 
1802
                                _relative_save_offset = ndr->offset;
 
1803
                                NDR_CHECK(ndr_pull_relative_ptr2(ndr, r->sepfile));
 
1804
                                _mem_save_sepfile_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
1805
                                NDR_PULL_SET_MEM_CTX(ndr, r->sepfile, 0);
 
1806
                                NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->sepfile));
 
1807
                                NDR_PULL_SET_MEM_CTX(ndr, _mem_save_sepfile_0, 0);
 
1808
                                ndr->offset = _relative_save_offset;
 
1809
                        }
 
1810
                        ndr->flags = _flags_save_string;
 
1811
                }
 
1812
                {
 
1813
                        uint32_t _flags_save_string = ndr->flags;
 
1814
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
1815
                        if (r->printprocessor) {
 
1816
                                uint32_t _relative_save_offset;
 
1817
                                _relative_save_offset = ndr->offset;
 
1818
                                NDR_CHECK(ndr_pull_relative_ptr2(ndr, r->printprocessor));
 
1819
                                _mem_save_printprocessor_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
1820
                                NDR_PULL_SET_MEM_CTX(ndr, r->printprocessor, 0);
 
1821
                                NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->printprocessor));
 
1822
                                NDR_PULL_SET_MEM_CTX(ndr, _mem_save_printprocessor_0, 0);
 
1823
                                ndr->offset = _relative_save_offset;
 
1824
                        }
 
1825
                        ndr->flags = _flags_save_string;
 
1826
                }
 
1827
                {
 
1828
                        uint32_t _flags_save_string = ndr->flags;
 
1829
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
1830
                        if (r->datatype) {
 
1831
                                uint32_t _relative_save_offset;
 
1832
                                _relative_save_offset = ndr->offset;
 
1833
                                NDR_CHECK(ndr_pull_relative_ptr2(ndr, r->datatype));
 
1834
                                _mem_save_datatype_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
1835
                                NDR_PULL_SET_MEM_CTX(ndr, r->datatype, 0);
 
1836
                                NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->datatype));
 
1837
                                NDR_PULL_SET_MEM_CTX(ndr, _mem_save_datatype_0, 0);
 
1838
                                ndr->offset = _relative_save_offset;
 
1839
                        }
 
1840
                        ndr->flags = _flags_save_string;
 
1841
                }
 
1842
                {
 
1843
                        uint32_t _flags_save_string = ndr->flags;
 
1844
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
1845
                        if (r->parameters) {
 
1846
                                uint32_t _relative_save_offset;
 
1847
                                _relative_save_offset = ndr->offset;
 
1848
                                NDR_CHECK(ndr_pull_relative_ptr2(ndr, r->parameters));
 
1849
                                _mem_save_parameters_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
1850
                                NDR_PULL_SET_MEM_CTX(ndr, r->parameters, 0);
 
1851
                                NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->parameters));
 
1852
                                NDR_PULL_SET_MEM_CTX(ndr, _mem_save_parameters_0, 0);
 
1853
                                ndr->offset = _relative_save_offset;
 
1854
                        }
 
1855
                        ndr->flags = _flags_save_string;
 
1856
                }
 
1857
                {
 
1858
                        uint32_t _flags_save_spoolss_security_descriptor = ndr->flags;
 
1859
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_ALIGN4);
 
1860
                        if (r->secdesc) {
 
1861
                                uint32_t _relative_save_offset;
 
1862
                                _relative_save_offset = ndr->offset;
 
1863
                                NDR_CHECK(ndr_pull_relative_ptr2(ndr, r->secdesc));
 
1864
                                _mem_save_secdesc_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
1865
                                NDR_PULL_SET_MEM_CTX(ndr, r->secdesc, 0);
 
1866
                                {
 
1867
                                        struct ndr_pull *_ndr_secdesc;
 
1868
                                        NDR_CHECK(ndr_pull_subcontext_start(ndr, &_ndr_secdesc, 0, -1));
 
1869
                                        NDR_CHECK(ndr_pull_spoolss_security_descriptor(_ndr_secdesc, NDR_SCALARS|NDR_BUFFERS, r->secdesc));
 
1870
                                        NDR_CHECK(ndr_pull_subcontext_end(ndr, _ndr_secdesc, 0, -1));
 
1871
                                }
 
1872
                                NDR_PULL_SET_MEM_CTX(ndr, _mem_save_secdesc_0, 0);
 
1873
                                ndr->offset = _relative_save_offset;
 
1874
                        }
 
1875
                        ndr->flags = _flags_save_spoolss_security_descriptor;
 
1876
                }
 
1877
        }
 
1878
        return NDR_ERR_SUCCESS;
 
1879
}
 
1880
 
 
1881
_PUBLIC_ void ndr_print_spoolss_PrinterInfo2(struct ndr_print *ndr, const char *name, const struct spoolss_PrinterInfo2 *r)
 
1882
{
 
1883
        ndr_print_struct(ndr, name, "spoolss_PrinterInfo2");
 
1884
        ndr->depth++;
 
1885
        ndr_print_ptr(ndr, "servername", r->servername);
 
1886
        ndr->depth++;
 
1887
        if (r->servername) {
 
1888
                ndr_print_string(ndr, "servername", r->servername);
 
1889
        }
 
1890
        ndr->depth--;
 
1891
        ndr_print_ptr(ndr, "printername", r->printername);
 
1892
        ndr->depth++;
 
1893
        if (r->printername) {
 
1894
                ndr_print_string(ndr, "printername", r->printername);
 
1895
        }
 
1896
        ndr->depth--;
 
1897
        ndr_print_ptr(ndr, "sharename", r->sharename);
 
1898
        ndr->depth++;
 
1899
        if (r->sharename) {
 
1900
                ndr_print_string(ndr, "sharename", r->sharename);
 
1901
        }
 
1902
        ndr->depth--;
 
1903
        ndr_print_ptr(ndr, "portname", r->portname);
 
1904
        ndr->depth++;
 
1905
        if (r->portname) {
 
1906
                ndr_print_string(ndr, "portname", r->portname);
 
1907
        }
 
1908
        ndr->depth--;
 
1909
        ndr_print_ptr(ndr, "drivername", r->drivername);
 
1910
        ndr->depth++;
 
1911
        if (r->drivername) {
 
1912
                ndr_print_string(ndr, "drivername", r->drivername);
 
1913
        }
 
1914
        ndr->depth--;
 
1915
        ndr_print_ptr(ndr, "comment", r->comment);
 
1916
        ndr->depth++;
 
1917
        if (r->comment) {
 
1918
                ndr_print_string(ndr, "comment", r->comment);
 
1919
        }
 
1920
        ndr->depth--;
 
1921
        ndr_print_ptr(ndr, "location", r->location);
 
1922
        ndr->depth++;
 
1923
        if (r->location) {
 
1924
                ndr_print_string(ndr, "location", r->location);
 
1925
        }
 
1926
        ndr->depth--;
 
1927
        ndr_print_ptr(ndr, "devmode", r->devmode);
 
1928
        ndr->depth++;
 
1929
        if (r->devmode) {
 
1930
                ndr_print_spoolss_DeviceMode(ndr, "devmode", r->devmode);
 
1931
        }
 
1932
        ndr->depth--;
 
1933
        ndr_print_ptr(ndr, "sepfile", r->sepfile);
 
1934
        ndr->depth++;
 
1935
        if (r->sepfile) {
 
1936
                ndr_print_string(ndr, "sepfile", r->sepfile);
 
1937
        }
 
1938
        ndr->depth--;
 
1939
        ndr_print_ptr(ndr, "printprocessor", r->printprocessor);
 
1940
        ndr->depth++;
 
1941
        if (r->printprocessor) {
 
1942
                ndr_print_string(ndr, "printprocessor", r->printprocessor);
 
1943
        }
 
1944
        ndr->depth--;
 
1945
        ndr_print_ptr(ndr, "datatype", r->datatype);
 
1946
        ndr->depth++;
 
1947
        if (r->datatype) {
 
1948
                ndr_print_string(ndr, "datatype", r->datatype);
 
1949
        }
 
1950
        ndr->depth--;
 
1951
        ndr_print_ptr(ndr, "parameters", r->parameters);
 
1952
        ndr->depth++;
 
1953
        if (r->parameters) {
 
1954
                ndr_print_string(ndr, "parameters", r->parameters);
 
1955
        }
 
1956
        ndr->depth--;
 
1957
        ndr_print_ptr(ndr, "secdesc", r->secdesc);
 
1958
        ndr->depth++;
 
1959
        if (r->secdesc) {
 
1960
                ndr_print_spoolss_security_descriptor(ndr, "secdesc", r->secdesc);
 
1961
        }
 
1962
        ndr->depth--;
 
1963
        ndr_print_spoolss_PrinterAttributes(ndr, "attributes", r->attributes);
 
1964
        ndr_print_uint32(ndr, "priority", r->priority);
 
1965
        ndr_print_uint32(ndr, "defaultpriority", r->defaultpriority);
 
1966
        ndr_print_uint32(ndr, "starttime", r->starttime);
 
1967
        ndr_print_uint32(ndr, "untiltime", r->untiltime);
 
1968
        ndr_print_spoolss_PrinterStatus(ndr, "status", r->status);
 
1969
        ndr_print_uint32(ndr, "cjobs", r->cjobs);
 
1970
        ndr_print_uint32(ndr, "averageppm", r->averageppm);
 
1971
        ndr->depth--;
 
1972
}
 
1973
 
 
1974
_PUBLIC_ size_t ndr_size_spoolss_PrinterInfo2(const struct spoolss_PrinterInfo2 *r, struct smb_iconv_convenience *ic, int flags)
 
1975
{
 
1976
        return ndr_size_struct(r, flags, (ndr_push_flags_fn_t)ndr_push_spoolss_PrinterInfo2, ic);
 
1977
}
 
1978
 
 
1979
_PUBLIC_ enum ndr_err_code ndr_push_spoolss_PrinterInfo3(struct ndr_push *ndr, int ndr_flags, const struct spoolss_PrinterInfo3 *r)
 
1980
{
 
1981
        if (ndr_flags & NDR_SCALARS) {
 
1982
                NDR_CHECK(ndr_push_align(ndr, 5));
 
1983
                {
 
1984
                        uint32_t _flags_save_spoolss_security_descriptor = ndr->flags;
 
1985
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_ALIGN4);
 
1986
                        NDR_CHECK(ndr_push_relative_ptr1(ndr, r->secdesc));
 
1987
                        ndr->flags = _flags_save_spoolss_security_descriptor;
 
1988
                }
 
1989
                NDR_CHECK(ndr_push_trailer_align(ndr, 5));
 
1990
        }
 
1991
        if (ndr_flags & NDR_BUFFERS) {
 
1992
                {
 
1993
                        uint32_t _flags_save_spoolss_security_descriptor = ndr->flags;
 
1994
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_ALIGN4);
 
1995
                        if (r->secdesc) {
 
1996
                                NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->secdesc));
 
1997
                                {
 
1998
                                        struct ndr_push *_ndr_secdesc;
 
1999
                                        NDR_CHECK(ndr_push_subcontext_start(ndr, &_ndr_secdesc, 0, -1));
 
2000
                                        NDR_CHECK(ndr_push_spoolss_security_descriptor(_ndr_secdesc, NDR_SCALARS|NDR_BUFFERS, r->secdesc));
 
2001
                                        NDR_CHECK(ndr_push_subcontext_end(ndr, _ndr_secdesc, 0, -1));
 
2002
                                }
 
2003
                                NDR_CHECK(ndr_push_relative_ptr2_end(ndr, r->secdesc));
 
2004
                        }
 
2005
                        ndr->flags = _flags_save_spoolss_security_descriptor;
 
2006
                }
 
2007
        }
 
2008
        return NDR_ERR_SUCCESS;
 
2009
}
 
2010
 
 
2011
_PUBLIC_ enum ndr_err_code ndr_pull_spoolss_PrinterInfo3(struct ndr_pull *ndr, int ndr_flags, struct spoolss_PrinterInfo3 *r)
 
2012
{
 
2013
        uint32_t _ptr_secdesc;
 
2014
        TALLOC_CTX *_mem_save_secdesc_0;
 
2015
        if (ndr_flags & NDR_SCALARS) {
 
2016
                NDR_CHECK(ndr_pull_align(ndr, 5));
 
2017
                {
 
2018
                        uint32_t _flags_save_spoolss_security_descriptor = ndr->flags;
 
2019
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_ALIGN4);
 
2020
                        NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_secdesc));
 
2021
                        if (_ptr_secdesc) {
 
2022
                                NDR_PULL_ALLOC(ndr, r->secdesc);
 
2023
                                NDR_CHECK(ndr_pull_relative_ptr1(ndr, r->secdesc, _ptr_secdesc));
 
2024
                        } else {
 
2025
                                r->secdesc = NULL;
 
2026
                        }
 
2027
                        ndr->flags = _flags_save_spoolss_security_descriptor;
 
2028
                }
 
2029
                NDR_CHECK(ndr_pull_trailer_align(ndr, 5));
 
2030
        }
 
2031
        if (ndr_flags & NDR_BUFFERS) {
 
2032
                {
 
2033
                        uint32_t _flags_save_spoolss_security_descriptor = ndr->flags;
 
2034
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_ALIGN4);
 
2035
                        if (r->secdesc) {
 
2036
                                uint32_t _relative_save_offset;
 
2037
                                _relative_save_offset = ndr->offset;
 
2038
                                NDR_CHECK(ndr_pull_relative_ptr2(ndr, r->secdesc));
 
2039
                                _mem_save_secdesc_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
2040
                                NDR_PULL_SET_MEM_CTX(ndr, r->secdesc, 0);
 
2041
                                {
 
2042
                                        struct ndr_pull *_ndr_secdesc;
 
2043
                                        NDR_CHECK(ndr_pull_subcontext_start(ndr, &_ndr_secdesc, 0, -1));
 
2044
                                        NDR_CHECK(ndr_pull_spoolss_security_descriptor(_ndr_secdesc, NDR_SCALARS|NDR_BUFFERS, r->secdesc));
 
2045
                                        NDR_CHECK(ndr_pull_subcontext_end(ndr, _ndr_secdesc, 0, -1));
 
2046
                                }
 
2047
                                NDR_PULL_SET_MEM_CTX(ndr, _mem_save_secdesc_0, 0);
 
2048
                                ndr->offset = _relative_save_offset;
 
2049
                        }
 
2050
                        ndr->flags = _flags_save_spoolss_security_descriptor;
 
2051
                }
 
2052
        }
 
2053
        return NDR_ERR_SUCCESS;
 
2054
}
 
2055
 
 
2056
_PUBLIC_ void ndr_print_spoolss_PrinterInfo3(struct ndr_print *ndr, const char *name, const struct spoolss_PrinterInfo3 *r)
 
2057
{
 
2058
        ndr_print_struct(ndr, name, "spoolss_PrinterInfo3");
 
2059
        ndr->depth++;
 
2060
        ndr_print_ptr(ndr, "secdesc", r->secdesc);
 
2061
        ndr->depth++;
 
2062
        if (r->secdesc) {
 
2063
                ndr_print_spoolss_security_descriptor(ndr, "secdesc", r->secdesc);
 
2064
        }
 
2065
        ndr->depth--;
 
2066
        ndr->depth--;
 
2067
}
 
2068
 
 
2069
_PUBLIC_ size_t ndr_size_spoolss_PrinterInfo3(const struct spoolss_PrinterInfo3 *r, struct smb_iconv_convenience *ic, int flags)
 
2070
{
 
2071
        return ndr_size_struct(r, flags, (ndr_push_flags_fn_t)ndr_push_spoolss_PrinterInfo3, ic);
 
2072
}
 
2073
 
 
2074
_PUBLIC_ enum ndr_err_code ndr_push_spoolss_PrinterInfo4(struct ndr_push *ndr, int ndr_flags, const struct spoolss_PrinterInfo4 *r)
 
2075
{
 
2076
        if (ndr_flags & NDR_SCALARS) {
 
2077
                NDR_CHECK(ndr_push_align(ndr, 5));
 
2078
                {
 
2079
                        uint32_t _flags_save_string = ndr->flags;
 
2080
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
2081
                        NDR_CHECK(ndr_push_relative_ptr1(ndr, r->printername));
 
2082
                        ndr->flags = _flags_save_string;
 
2083
                }
 
2084
                {
 
2085
                        uint32_t _flags_save_string = ndr->flags;
 
2086
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
2087
                        NDR_CHECK(ndr_push_relative_ptr1(ndr, r->servername));
 
2088
                        ndr->flags = _flags_save_string;
 
2089
                }
 
2090
                NDR_CHECK(ndr_push_spoolss_PrinterAttributes(ndr, NDR_SCALARS, r->attributes));
 
2091
                NDR_CHECK(ndr_push_trailer_align(ndr, 5));
 
2092
        }
 
2093
        if (ndr_flags & NDR_BUFFERS) {
 
2094
                {
 
2095
                        uint32_t _flags_save_string = ndr->flags;
 
2096
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
2097
                        if (r->printername) {
 
2098
                                NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->printername));
 
2099
                                NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->printername));
 
2100
                                NDR_CHECK(ndr_push_relative_ptr2_end(ndr, r->printername));
 
2101
                        }
 
2102
                        ndr->flags = _flags_save_string;
 
2103
                }
 
2104
                {
 
2105
                        uint32_t _flags_save_string = ndr->flags;
 
2106
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
2107
                        if (r->servername) {
 
2108
                                NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->servername));
 
2109
                                NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->servername));
 
2110
                                NDR_CHECK(ndr_push_relative_ptr2_end(ndr, r->servername));
 
2111
                        }
 
2112
                        ndr->flags = _flags_save_string;
 
2113
                }
 
2114
        }
 
2115
        return NDR_ERR_SUCCESS;
 
2116
}
 
2117
 
 
2118
_PUBLIC_ enum ndr_err_code ndr_pull_spoolss_PrinterInfo4(struct ndr_pull *ndr, int ndr_flags, struct spoolss_PrinterInfo4 *r)
 
2119
{
 
2120
        uint32_t _ptr_printername;
 
2121
        TALLOC_CTX *_mem_save_printername_0;
 
2122
        uint32_t _ptr_servername;
 
2123
        TALLOC_CTX *_mem_save_servername_0;
 
2124
        if (ndr_flags & NDR_SCALARS) {
 
2125
                NDR_CHECK(ndr_pull_align(ndr, 5));
 
2126
                {
 
2127
                        uint32_t _flags_save_string = ndr->flags;
 
2128
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
2129
                        NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_printername));
 
2130
                        if (_ptr_printername) {
 
2131
                                NDR_PULL_ALLOC(ndr, r->printername);
 
2132
                                NDR_CHECK(ndr_pull_relative_ptr1(ndr, r->printername, _ptr_printername));
 
2133
                        } else {
 
2134
                                r->printername = NULL;
 
2135
                        }
 
2136
                        ndr->flags = _flags_save_string;
 
2137
                }
 
2138
                {
 
2139
                        uint32_t _flags_save_string = ndr->flags;
 
2140
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
2141
                        NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_servername));
 
2142
                        if (_ptr_servername) {
 
2143
                                NDR_PULL_ALLOC(ndr, r->servername);
 
2144
                                NDR_CHECK(ndr_pull_relative_ptr1(ndr, r->servername, _ptr_servername));
 
2145
                        } else {
 
2146
                                r->servername = NULL;
 
2147
                        }
 
2148
                        ndr->flags = _flags_save_string;
 
2149
                }
 
2150
                NDR_CHECK(ndr_pull_spoolss_PrinterAttributes(ndr, NDR_SCALARS, &r->attributes));
 
2151
                NDR_CHECK(ndr_pull_trailer_align(ndr, 5));
 
2152
        }
 
2153
        if (ndr_flags & NDR_BUFFERS) {
 
2154
                {
 
2155
                        uint32_t _flags_save_string = ndr->flags;
 
2156
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
2157
                        if (r->printername) {
 
2158
                                uint32_t _relative_save_offset;
 
2159
                                _relative_save_offset = ndr->offset;
 
2160
                                NDR_CHECK(ndr_pull_relative_ptr2(ndr, r->printername));
 
2161
                                _mem_save_printername_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
2162
                                NDR_PULL_SET_MEM_CTX(ndr, r->printername, 0);
 
2163
                                NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->printername));
 
2164
                                NDR_PULL_SET_MEM_CTX(ndr, _mem_save_printername_0, 0);
 
2165
                                ndr->offset = _relative_save_offset;
 
2166
                        }
 
2167
                        ndr->flags = _flags_save_string;
 
2168
                }
 
2169
                {
 
2170
                        uint32_t _flags_save_string = ndr->flags;
 
2171
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
2172
                        if (r->servername) {
 
2173
                                uint32_t _relative_save_offset;
 
2174
                                _relative_save_offset = ndr->offset;
 
2175
                                NDR_CHECK(ndr_pull_relative_ptr2(ndr, r->servername));
 
2176
                                _mem_save_servername_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
2177
                                NDR_PULL_SET_MEM_CTX(ndr, r->servername, 0);
 
2178
                                NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->servername));
 
2179
                                NDR_PULL_SET_MEM_CTX(ndr, _mem_save_servername_0, 0);
 
2180
                                ndr->offset = _relative_save_offset;
 
2181
                        }
 
2182
                        ndr->flags = _flags_save_string;
 
2183
                }
 
2184
        }
 
2185
        return NDR_ERR_SUCCESS;
 
2186
}
 
2187
 
 
2188
_PUBLIC_ void ndr_print_spoolss_PrinterInfo4(struct ndr_print *ndr, const char *name, const struct spoolss_PrinterInfo4 *r)
 
2189
{
 
2190
        ndr_print_struct(ndr, name, "spoolss_PrinterInfo4");
 
2191
        ndr->depth++;
 
2192
        ndr_print_ptr(ndr, "printername", r->printername);
 
2193
        ndr->depth++;
 
2194
        if (r->printername) {
 
2195
                ndr_print_string(ndr, "printername", r->printername);
 
2196
        }
 
2197
        ndr->depth--;
 
2198
        ndr_print_ptr(ndr, "servername", r->servername);
 
2199
        ndr->depth++;
 
2200
        if (r->servername) {
 
2201
                ndr_print_string(ndr, "servername", r->servername);
 
2202
        }
 
2203
        ndr->depth--;
 
2204
        ndr_print_spoolss_PrinterAttributes(ndr, "attributes", r->attributes);
 
2205
        ndr->depth--;
 
2206
}
 
2207
 
 
2208
_PUBLIC_ size_t ndr_size_spoolss_PrinterInfo4(const struct spoolss_PrinterInfo4 *r, struct smb_iconv_convenience *ic, int flags)
 
2209
{
 
2210
        return ndr_size_struct(r, flags, (ndr_push_flags_fn_t)ndr_push_spoolss_PrinterInfo4, ic);
 
2211
}
 
2212
 
 
2213
_PUBLIC_ enum ndr_err_code ndr_push_spoolss_PrinterInfo5(struct ndr_push *ndr, int ndr_flags, const struct spoolss_PrinterInfo5 *r)
 
2214
{
 
2215
        if (ndr_flags & NDR_SCALARS) {
 
2216
                NDR_CHECK(ndr_push_align(ndr, 5));
 
2217
                {
 
2218
                        uint32_t _flags_save_string = ndr->flags;
 
2219
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
2220
                        NDR_CHECK(ndr_push_relative_ptr1(ndr, r->printername));
 
2221
                        ndr->flags = _flags_save_string;
 
2222
                }
 
2223
                {
 
2224
                        uint32_t _flags_save_string = ndr->flags;
 
2225
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
2226
                        NDR_CHECK(ndr_push_relative_ptr1(ndr, r->portname));
 
2227
                        ndr->flags = _flags_save_string;
 
2228
                }
 
2229
                NDR_CHECK(ndr_push_spoolss_PrinterAttributes(ndr, NDR_SCALARS, r->attributes));
 
2230
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->device_not_selected_timeout));
 
2231
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->transmission_retry_timeout));
 
2232
                NDR_CHECK(ndr_push_trailer_align(ndr, 5));
 
2233
        }
 
2234
        if (ndr_flags & NDR_BUFFERS) {
 
2235
                {
 
2236
                        uint32_t _flags_save_string = ndr->flags;
 
2237
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
2238
                        if (r->printername) {
 
2239
                                NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->printername));
 
2240
                                NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->printername));
 
2241
                                NDR_CHECK(ndr_push_relative_ptr2_end(ndr, r->printername));
 
2242
                        }
 
2243
                        ndr->flags = _flags_save_string;
 
2244
                }
 
2245
                {
 
2246
                        uint32_t _flags_save_string = ndr->flags;
 
2247
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
2248
                        if (r->portname) {
 
2249
                                NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->portname));
 
2250
                                NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->portname));
 
2251
                                NDR_CHECK(ndr_push_relative_ptr2_end(ndr, r->portname));
 
2252
                        }
 
2253
                        ndr->flags = _flags_save_string;
 
2254
                }
 
2255
        }
 
2256
        return NDR_ERR_SUCCESS;
 
2257
}
 
2258
 
 
2259
_PUBLIC_ enum ndr_err_code ndr_pull_spoolss_PrinterInfo5(struct ndr_pull *ndr, int ndr_flags, struct spoolss_PrinterInfo5 *r)
 
2260
{
 
2261
        uint32_t _ptr_printername;
 
2262
        TALLOC_CTX *_mem_save_printername_0;
 
2263
        uint32_t _ptr_portname;
 
2264
        TALLOC_CTX *_mem_save_portname_0;
 
2265
        if (ndr_flags & NDR_SCALARS) {
 
2266
                NDR_CHECK(ndr_pull_align(ndr, 5));
 
2267
                {
 
2268
                        uint32_t _flags_save_string = ndr->flags;
 
2269
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
2270
                        NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_printername));
 
2271
                        if (_ptr_printername) {
 
2272
                                NDR_PULL_ALLOC(ndr, r->printername);
 
2273
                                NDR_CHECK(ndr_pull_relative_ptr1(ndr, r->printername, _ptr_printername));
 
2274
                        } else {
 
2275
                                r->printername = NULL;
 
2276
                        }
 
2277
                        ndr->flags = _flags_save_string;
 
2278
                }
 
2279
                {
 
2280
                        uint32_t _flags_save_string = ndr->flags;
 
2281
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
2282
                        NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_portname));
 
2283
                        if (_ptr_portname) {
 
2284
                                NDR_PULL_ALLOC(ndr, r->portname);
 
2285
                                NDR_CHECK(ndr_pull_relative_ptr1(ndr, r->portname, _ptr_portname));
 
2286
                        } else {
 
2287
                                r->portname = NULL;
 
2288
                        }
 
2289
                        ndr->flags = _flags_save_string;
 
2290
                }
 
2291
                NDR_CHECK(ndr_pull_spoolss_PrinterAttributes(ndr, NDR_SCALARS, &r->attributes));
 
2292
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->device_not_selected_timeout));
 
2293
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->transmission_retry_timeout));
 
2294
                NDR_CHECK(ndr_pull_trailer_align(ndr, 5));
 
2295
        }
 
2296
        if (ndr_flags & NDR_BUFFERS) {
 
2297
                {
 
2298
                        uint32_t _flags_save_string = ndr->flags;
 
2299
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
2300
                        if (r->printername) {
 
2301
                                uint32_t _relative_save_offset;
 
2302
                                _relative_save_offset = ndr->offset;
 
2303
                                NDR_CHECK(ndr_pull_relative_ptr2(ndr, r->printername));
 
2304
                                _mem_save_printername_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
2305
                                NDR_PULL_SET_MEM_CTX(ndr, r->printername, 0);
 
2306
                                NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->printername));
 
2307
                                NDR_PULL_SET_MEM_CTX(ndr, _mem_save_printername_0, 0);
 
2308
                                ndr->offset = _relative_save_offset;
 
2309
                        }
 
2310
                        ndr->flags = _flags_save_string;
 
2311
                }
 
2312
                {
 
2313
                        uint32_t _flags_save_string = ndr->flags;
 
2314
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
2315
                        if (r->portname) {
 
2316
                                uint32_t _relative_save_offset;
 
2317
                                _relative_save_offset = ndr->offset;
 
2318
                                NDR_CHECK(ndr_pull_relative_ptr2(ndr, r->portname));
 
2319
                                _mem_save_portname_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
2320
                                NDR_PULL_SET_MEM_CTX(ndr, r->portname, 0);
 
2321
                                NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->portname));
 
2322
                                NDR_PULL_SET_MEM_CTX(ndr, _mem_save_portname_0, 0);
 
2323
                                ndr->offset = _relative_save_offset;
 
2324
                        }
 
2325
                        ndr->flags = _flags_save_string;
 
2326
                }
 
2327
        }
 
2328
        return NDR_ERR_SUCCESS;
 
2329
}
 
2330
 
 
2331
_PUBLIC_ void ndr_print_spoolss_PrinterInfo5(struct ndr_print *ndr, const char *name, const struct spoolss_PrinterInfo5 *r)
 
2332
{
 
2333
        ndr_print_struct(ndr, name, "spoolss_PrinterInfo5");
 
2334
        ndr->depth++;
 
2335
        ndr_print_ptr(ndr, "printername", r->printername);
 
2336
        ndr->depth++;
 
2337
        if (r->printername) {
 
2338
                ndr_print_string(ndr, "printername", r->printername);
 
2339
        }
 
2340
        ndr->depth--;
 
2341
        ndr_print_ptr(ndr, "portname", r->portname);
 
2342
        ndr->depth++;
 
2343
        if (r->portname) {
 
2344
                ndr_print_string(ndr, "portname", r->portname);
 
2345
        }
 
2346
        ndr->depth--;
 
2347
        ndr_print_spoolss_PrinterAttributes(ndr, "attributes", r->attributes);
 
2348
        ndr_print_uint32(ndr, "device_not_selected_timeout", r->device_not_selected_timeout);
 
2349
        ndr_print_uint32(ndr, "transmission_retry_timeout", r->transmission_retry_timeout);
 
2350
        ndr->depth--;
 
2351
}
 
2352
 
 
2353
_PUBLIC_ size_t ndr_size_spoolss_PrinterInfo5(const struct spoolss_PrinterInfo5 *r, struct smb_iconv_convenience *ic, int flags)
 
2354
{
 
2355
        return ndr_size_struct(r, flags, (ndr_push_flags_fn_t)ndr_push_spoolss_PrinterInfo5, ic);
 
2356
}
 
2357
 
 
2358
_PUBLIC_ enum ndr_err_code ndr_push_spoolss_PrinterInfo6(struct ndr_push *ndr, int ndr_flags, const struct spoolss_PrinterInfo6 *r)
 
2359
{
 
2360
        if (ndr_flags & NDR_SCALARS) {
 
2361
                NDR_CHECK(ndr_push_align(ndr, 4));
 
2362
                NDR_CHECK(ndr_push_spoolss_PrinterStatus(ndr, NDR_SCALARS, r->status));
 
2363
                NDR_CHECK(ndr_push_trailer_align(ndr, 4));
 
2364
        }
 
2365
        if (ndr_flags & NDR_BUFFERS) {
 
2366
        }
 
2367
        return NDR_ERR_SUCCESS;
 
2368
}
 
2369
 
 
2370
_PUBLIC_ enum ndr_err_code ndr_pull_spoolss_PrinterInfo6(struct ndr_pull *ndr, int ndr_flags, struct spoolss_PrinterInfo6 *r)
 
2371
{
 
2372
        if (ndr_flags & NDR_SCALARS) {
 
2373
                NDR_CHECK(ndr_pull_align(ndr, 4));
 
2374
                NDR_CHECK(ndr_pull_spoolss_PrinterStatus(ndr, NDR_SCALARS, &r->status));
 
2375
                NDR_CHECK(ndr_pull_trailer_align(ndr, 4));
 
2376
        }
 
2377
        if (ndr_flags & NDR_BUFFERS) {
 
2378
        }
 
2379
        return NDR_ERR_SUCCESS;
 
2380
}
 
2381
 
 
2382
_PUBLIC_ void ndr_print_spoolss_PrinterInfo6(struct ndr_print *ndr, const char *name, const struct spoolss_PrinterInfo6 *r)
 
2383
{
 
2384
        ndr_print_struct(ndr, name, "spoolss_PrinterInfo6");
 
2385
        ndr->depth++;
 
2386
        ndr_print_spoolss_PrinterStatus(ndr, "status", r->status);
 
2387
        ndr->depth--;
 
2388
}
 
2389
 
 
2390
_PUBLIC_ size_t ndr_size_spoolss_PrinterInfo6(const struct spoolss_PrinterInfo6 *r, struct smb_iconv_convenience *ic, int flags)
 
2391
{
 
2392
        return ndr_size_struct(r, flags, (ndr_push_flags_fn_t)ndr_push_spoolss_PrinterInfo6, ic);
 
2393
}
 
2394
 
 
2395
static enum ndr_err_code ndr_push_spoolss_DsPrintAction(struct ndr_push *ndr, int ndr_flags, uint32_t r)
 
2396
{
 
2397
        NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r));
 
2398
        return NDR_ERR_SUCCESS;
 
2399
}
 
2400
 
 
2401
static enum ndr_err_code ndr_pull_spoolss_DsPrintAction(struct ndr_pull *ndr, int ndr_flags, uint32_t *r)
 
2402
{
 
2403
        uint32_t v;
 
2404
        NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &v));
 
2405
        *r = v;
 
2406
        return NDR_ERR_SUCCESS;
 
2407
}
 
2408
 
 
2409
_PUBLIC_ void ndr_print_spoolss_DsPrintAction(struct ndr_print *ndr, const char *name, uint32_t r)
 
2410
{
 
2411
        ndr_print_uint32(ndr, name, r);
 
2412
        ndr->depth++;
 
2413
        ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "DSPRINT_PUBLISH", DSPRINT_PUBLISH, r);
 
2414
        ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "DSPRINT_UPDATE", DSPRINT_UPDATE, r);
 
2415
        ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "DSPRINT_UNPUBLISH", DSPRINT_UNPUBLISH, r);
 
2416
        ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "DSPRINT_REPUBLISH", DSPRINT_REPUBLISH, r);
 
2417
        ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "DSPRINT_PENDING", DSPRINT_PENDING, r);
 
2418
        ndr->depth--;
 
2419
}
 
2420
 
 
2421
_PUBLIC_ enum ndr_err_code ndr_push_spoolss_PrinterInfo7(struct ndr_push *ndr, int ndr_flags, const struct spoolss_PrinterInfo7 *r)
 
2422
{
 
2423
        if (ndr_flags & NDR_SCALARS) {
 
2424
                NDR_CHECK(ndr_push_align(ndr, 5));
 
2425
                {
 
2426
                        uint32_t _flags_save_string = ndr->flags;
 
2427
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
2428
                        NDR_CHECK(ndr_push_relative_ptr1(ndr, r->guid));
 
2429
                        ndr->flags = _flags_save_string;
 
2430
                }
 
2431
                NDR_CHECK(ndr_push_spoolss_DsPrintAction(ndr, NDR_SCALARS, r->action));
 
2432
                NDR_CHECK(ndr_push_trailer_align(ndr, 5));
 
2433
        }
 
2434
        if (ndr_flags & NDR_BUFFERS) {
 
2435
                {
 
2436
                        uint32_t _flags_save_string = ndr->flags;
 
2437
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
2438
                        if (r->guid) {
 
2439
                                NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->guid));
 
2440
                                NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->guid));
 
2441
                                NDR_CHECK(ndr_push_relative_ptr2_end(ndr, r->guid));
 
2442
                        }
 
2443
                        ndr->flags = _flags_save_string;
 
2444
                }
 
2445
        }
 
2446
        return NDR_ERR_SUCCESS;
 
2447
}
 
2448
 
 
2449
_PUBLIC_ enum ndr_err_code ndr_pull_spoolss_PrinterInfo7(struct ndr_pull *ndr, int ndr_flags, struct spoolss_PrinterInfo7 *r)
 
2450
{
 
2451
        uint32_t _ptr_guid;
 
2452
        TALLOC_CTX *_mem_save_guid_0;
 
2453
        if (ndr_flags & NDR_SCALARS) {
 
2454
                NDR_CHECK(ndr_pull_align(ndr, 5));
 
2455
                {
 
2456
                        uint32_t _flags_save_string = ndr->flags;
 
2457
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
2458
                        NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_guid));
 
2459
                        if (_ptr_guid) {
 
2460
                                NDR_PULL_ALLOC(ndr, r->guid);
 
2461
                                NDR_CHECK(ndr_pull_relative_ptr1(ndr, r->guid, _ptr_guid));
 
2462
                        } else {
 
2463
                                r->guid = NULL;
 
2464
                        }
 
2465
                        ndr->flags = _flags_save_string;
 
2466
                }
 
2467
                NDR_CHECK(ndr_pull_spoolss_DsPrintAction(ndr, NDR_SCALARS, &r->action));
 
2468
                NDR_CHECK(ndr_pull_trailer_align(ndr, 5));
 
2469
        }
 
2470
        if (ndr_flags & NDR_BUFFERS) {
 
2471
                {
 
2472
                        uint32_t _flags_save_string = ndr->flags;
 
2473
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
2474
                        if (r->guid) {
 
2475
                                uint32_t _relative_save_offset;
 
2476
                                _relative_save_offset = ndr->offset;
 
2477
                                NDR_CHECK(ndr_pull_relative_ptr2(ndr, r->guid));
 
2478
                                _mem_save_guid_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
2479
                                NDR_PULL_SET_MEM_CTX(ndr, r->guid, 0);
 
2480
                                NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->guid));
 
2481
                                NDR_PULL_SET_MEM_CTX(ndr, _mem_save_guid_0, 0);
 
2482
                                ndr->offset = _relative_save_offset;
 
2483
                        }
 
2484
                        ndr->flags = _flags_save_string;
 
2485
                }
 
2486
        }
 
2487
        return NDR_ERR_SUCCESS;
 
2488
}
 
2489
 
 
2490
_PUBLIC_ void ndr_print_spoolss_PrinterInfo7(struct ndr_print *ndr, const char *name, const struct spoolss_PrinterInfo7 *r)
 
2491
{
 
2492
        ndr_print_struct(ndr, name, "spoolss_PrinterInfo7");
 
2493
        ndr->depth++;
 
2494
        ndr_print_ptr(ndr, "guid", r->guid);
 
2495
        ndr->depth++;
 
2496
        if (r->guid) {
 
2497
                ndr_print_string(ndr, "guid", r->guid);
 
2498
        }
 
2499
        ndr->depth--;
 
2500
        ndr_print_spoolss_DsPrintAction(ndr, "action", r->action);
 
2501
        ndr->depth--;
 
2502
}
 
2503
 
 
2504
_PUBLIC_ size_t ndr_size_spoolss_PrinterInfo7(const struct spoolss_PrinterInfo7 *r, struct smb_iconv_convenience *ic, int flags)
 
2505
{
 
2506
        return ndr_size_struct(r, flags, (ndr_push_flags_fn_t)ndr_push_spoolss_PrinterInfo7, ic);
 
2507
}
 
2508
 
 
2509
static enum ndr_err_code ndr_push_spoolss_DeviceModeInfo(struct ndr_push *ndr, int ndr_flags, const struct spoolss_DeviceModeInfo *r)
 
2510
{
 
2511
        if (ndr_flags & NDR_SCALARS) {
 
2512
                NDR_CHECK(ndr_push_align(ndr, 5));
 
2513
                {
 
2514
                        uint32_t _flags_save_spoolss_DeviceMode = ndr->flags;
 
2515
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_ALIGN4);
 
2516
                        NDR_CHECK(ndr_push_relative_ptr1(ndr, r->devmode));
 
2517
                        ndr->flags = _flags_save_spoolss_DeviceMode;
 
2518
                }
 
2519
                NDR_CHECK(ndr_push_trailer_align(ndr, 5));
 
2520
        }
 
2521
        if (ndr_flags & NDR_BUFFERS) {
 
2522
                {
 
2523
                        uint32_t _flags_save_spoolss_DeviceMode = ndr->flags;
 
2524
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_ALIGN4);
 
2525
                        if (r->devmode) {
 
2526
                                NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->devmode));
 
2527
                                {
 
2528
                                        struct ndr_push *_ndr_devmode;
 
2529
                                        NDR_CHECK(ndr_push_subcontext_start(ndr, &_ndr_devmode, 0, -1));
 
2530
                                        NDR_CHECK(ndr_push_spoolss_DeviceMode(_ndr_devmode, NDR_SCALARS, r->devmode));
 
2531
                                        NDR_CHECK(ndr_push_subcontext_end(ndr, _ndr_devmode, 0, -1));
 
2532
                                }
 
2533
                                NDR_CHECK(ndr_push_relative_ptr2_end(ndr, r->devmode));
 
2534
                        }
 
2535
                        ndr->flags = _flags_save_spoolss_DeviceMode;
 
2536
                }
 
2537
        }
 
2538
        return NDR_ERR_SUCCESS;
 
2539
}
 
2540
 
 
2541
static enum ndr_err_code ndr_pull_spoolss_DeviceModeInfo(struct ndr_pull *ndr, int ndr_flags, struct spoolss_DeviceModeInfo *r)
 
2542
{
 
2543
        uint32_t _ptr_devmode;
 
2544
        TALLOC_CTX *_mem_save_devmode_0;
 
2545
        if (ndr_flags & NDR_SCALARS) {
 
2546
                NDR_CHECK(ndr_pull_align(ndr, 5));
 
2547
                {
 
2548
                        uint32_t _flags_save_spoolss_DeviceMode = ndr->flags;
 
2549
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_ALIGN4);
 
2550
                        NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_devmode));
 
2551
                        if (_ptr_devmode) {
 
2552
                                NDR_PULL_ALLOC(ndr, r->devmode);
 
2553
                                NDR_CHECK(ndr_pull_relative_ptr1(ndr, r->devmode, _ptr_devmode));
 
2554
                        } else {
 
2555
                                r->devmode = NULL;
 
2556
                        }
 
2557
                        ndr->flags = _flags_save_spoolss_DeviceMode;
 
2558
                }
 
2559
                NDR_CHECK(ndr_pull_trailer_align(ndr, 5));
 
2560
        }
 
2561
        if (ndr_flags & NDR_BUFFERS) {
 
2562
                {
 
2563
                        uint32_t _flags_save_spoolss_DeviceMode = ndr->flags;
 
2564
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_ALIGN4);
 
2565
                        if (r->devmode) {
 
2566
                                uint32_t _relative_save_offset;
 
2567
                                _relative_save_offset = ndr->offset;
 
2568
                                NDR_CHECK(ndr_pull_relative_ptr2(ndr, r->devmode));
 
2569
                                _mem_save_devmode_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
2570
                                NDR_PULL_SET_MEM_CTX(ndr, r->devmode, 0);
 
2571
                                {
 
2572
                                        struct ndr_pull *_ndr_devmode;
 
2573
                                        NDR_CHECK(ndr_pull_subcontext_start(ndr, &_ndr_devmode, 0, -1));
 
2574
                                        NDR_CHECK(ndr_pull_spoolss_DeviceMode(_ndr_devmode, NDR_SCALARS, r->devmode));
 
2575
                                        NDR_CHECK(ndr_pull_subcontext_end(ndr, _ndr_devmode, 0, -1));
 
2576
                                }
 
2577
                                NDR_PULL_SET_MEM_CTX(ndr, _mem_save_devmode_0, 0);
 
2578
                                ndr->offset = _relative_save_offset;
 
2579
                        }
 
2580
                        ndr->flags = _flags_save_spoolss_DeviceMode;
 
2581
                }
 
2582
        }
 
2583
        return NDR_ERR_SUCCESS;
 
2584
}
 
2585
 
 
2586
_PUBLIC_ void ndr_print_spoolss_DeviceModeInfo(struct ndr_print *ndr, const char *name, const struct spoolss_DeviceModeInfo *r)
 
2587
{
 
2588
        ndr_print_struct(ndr, name, "spoolss_DeviceModeInfo");
 
2589
        ndr->depth++;
 
2590
        ndr_print_ptr(ndr, "devmode", r->devmode);
 
2591
        ndr->depth++;
 
2592
        if (r->devmode) {
 
2593
                ndr_print_spoolss_DeviceMode(ndr, "devmode", r->devmode);
 
2594
        }
 
2595
        ndr->depth--;
 
2596
        ndr->depth--;
 
2597
}
 
2598
 
 
2599
_PUBLIC_ enum ndr_err_code ndr_push_spoolss_PrinterInfo(struct ndr_push *ndr, int ndr_flags, const union spoolss_PrinterInfo *r)
 
2600
{
 
2601
        uint32_t _save_relative_base_offset = ndr_push_get_relative_base_offset(ndr);
 
2602
        {
 
2603
                uint32_t _flags_save_UNION = ndr->flags;
 
2604
                ndr_set_flags(&ndr->flags, LIBNDR_FLAG_RELATIVE_REVERSE);
 
2605
                if (ndr_flags & NDR_SCALARS) {
 
2606
                        int level = ndr_push_get_switch_value(ndr, r);
 
2607
                        NDR_CHECK(ndr_push_union_align(ndr, 5));
 
2608
                        switch (level) {
 
2609
                                case 0: {
 
2610
                                        NDR_CHECK(ndr_push_align(ndr, 5));
 
2611
                                        NDR_CHECK(ndr_push_setup_relative_base_offset1(ndr, r, ndr->offset));
 
2612
                                        NDR_CHECK(ndr_push_spoolss_PrinterInfo0(ndr, NDR_SCALARS, &r->info0));
 
2613
                                break; }
 
2614
 
 
2615
                                case 1: {
 
2616
                                        NDR_CHECK(ndr_push_align(ndr, 5));
 
2617
                                        NDR_CHECK(ndr_push_setup_relative_base_offset1(ndr, r, ndr->offset));
 
2618
                                        NDR_CHECK(ndr_push_spoolss_PrinterInfo1(ndr, NDR_SCALARS, &r->info1));
 
2619
                                break; }
 
2620
 
 
2621
                                case 2: {
 
2622
                                        NDR_CHECK(ndr_push_align(ndr, 5));
 
2623
                                        NDR_CHECK(ndr_push_setup_relative_base_offset1(ndr, r, ndr->offset));
 
2624
                                        NDR_CHECK(ndr_push_spoolss_PrinterInfo2(ndr, NDR_SCALARS, &r->info2));
 
2625
                                break; }
 
2626
 
 
2627
                                case 3: {
 
2628
                                        NDR_CHECK(ndr_push_align(ndr, 5));
 
2629
                                        NDR_CHECK(ndr_push_setup_relative_base_offset1(ndr, r, ndr->offset));
 
2630
                                        NDR_CHECK(ndr_push_spoolss_PrinterInfo3(ndr, NDR_SCALARS, &r->info3));
 
2631
                                break; }
 
2632
 
 
2633
                                case 4: {
 
2634
                                        NDR_CHECK(ndr_push_align(ndr, 5));
 
2635
                                        NDR_CHECK(ndr_push_setup_relative_base_offset1(ndr, r, ndr->offset));
 
2636
                                        NDR_CHECK(ndr_push_spoolss_PrinterInfo4(ndr, NDR_SCALARS, &r->info4));
 
2637
                                break; }
 
2638
 
 
2639
                                case 5: {
 
2640
                                        NDR_CHECK(ndr_push_align(ndr, 5));
 
2641
                                        NDR_CHECK(ndr_push_setup_relative_base_offset1(ndr, r, ndr->offset));
 
2642
                                        NDR_CHECK(ndr_push_spoolss_PrinterInfo5(ndr, NDR_SCALARS, &r->info5));
 
2643
                                break; }
 
2644
 
 
2645
                                case 6: {
 
2646
                                        NDR_CHECK(ndr_push_align(ndr, 4));
 
2647
                                        NDR_CHECK(ndr_push_setup_relative_base_offset1(ndr, r, ndr->offset));
 
2648
                                        NDR_CHECK(ndr_push_spoolss_PrinterInfo6(ndr, NDR_SCALARS, &r->info6));
 
2649
                                break; }
 
2650
 
 
2651
                                case 7: {
 
2652
                                        NDR_CHECK(ndr_push_align(ndr, 5));
 
2653
                                        NDR_CHECK(ndr_push_setup_relative_base_offset1(ndr, r, ndr->offset));
 
2654
                                        NDR_CHECK(ndr_push_spoolss_PrinterInfo7(ndr, NDR_SCALARS, &r->info7));
 
2655
                                break; }
 
2656
 
 
2657
                                case 8: {
 
2658
                                        NDR_CHECK(ndr_push_align(ndr, 5));
 
2659
                                        NDR_CHECK(ndr_push_setup_relative_base_offset1(ndr, r, ndr->offset));
 
2660
                                        NDR_CHECK(ndr_push_spoolss_DeviceModeInfo(ndr, NDR_SCALARS, &r->info8));
 
2661
                                break; }
 
2662
 
 
2663
                                case 9: {
 
2664
                                        NDR_CHECK(ndr_push_align(ndr, 5));
 
2665
                                        NDR_CHECK(ndr_push_setup_relative_base_offset1(ndr, r, ndr->offset));
 
2666
                                        NDR_CHECK(ndr_push_spoolss_DeviceModeInfo(ndr, NDR_SCALARS, &r->info9));
 
2667
                                break; }
 
2668
 
 
2669
                                default: {
 
2670
                                break; }
 
2671
 
 
2672
                        }
 
2673
                }
 
2674
                if (ndr_flags & NDR_BUFFERS) {
 
2675
                        int level = ndr_push_get_switch_value(ndr, r);
 
2676
                        NDR_CHECK(ndr_push_setup_relative_base_offset2(ndr, r));
 
2677
                        switch (level) {
 
2678
                                case 0:
 
2679
                                        NDR_CHECK(ndr_push_spoolss_PrinterInfo0(ndr, NDR_BUFFERS, &r->info0));
 
2680
                                break;
 
2681
 
 
2682
                                case 1:
 
2683
                                        NDR_CHECK(ndr_push_spoolss_PrinterInfo1(ndr, NDR_BUFFERS, &r->info1));
 
2684
                                break;
 
2685
 
 
2686
                                case 2:
 
2687
                                        NDR_CHECK(ndr_push_spoolss_PrinterInfo2(ndr, NDR_BUFFERS, &r->info2));
 
2688
                                break;
 
2689
 
 
2690
                                case 3:
 
2691
                                        NDR_CHECK(ndr_push_spoolss_PrinterInfo3(ndr, NDR_BUFFERS, &r->info3));
 
2692
                                break;
 
2693
 
 
2694
                                case 4:
 
2695
                                        NDR_CHECK(ndr_push_spoolss_PrinterInfo4(ndr, NDR_BUFFERS, &r->info4));
 
2696
                                break;
 
2697
 
 
2698
                                case 5:
 
2699
                                        NDR_CHECK(ndr_push_spoolss_PrinterInfo5(ndr, NDR_BUFFERS, &r->info5));
 
2700
                                break;
 
2701
 
 
2702
                                case 6:
 
2703
                                break;
 
2704
 
 
2705
                                case 7:
 
2706
                                        NDR_CHECK(ndr_push_spoolss_PrinterInfo7(ndr, NDR_BUFFERS, &r->info7));
 
2707
                                break;
 
2708
 
 
2709
                                case 8:
 
2710
                                        NDR_CHECK(ndr_push_spoolss_DeviceModeInfo(ndr, NDR_BUFFERS, &r->info8));
 
2711
                                break;
 
2712
 
 
2713
                                case 9:
 
2714
                                        NDR_CHECK(ndr_push_spoolss_DeviceModeInfo(ndr, NDR_BUFFERS, &r->info9));
 
2715
                                break;
 
2716
 
 
2717
                                default:
 
2718
                                break;
 
2719
 
 
2720
                        }
 
2721
                }
 
2722
                ndr->flags = _flags_save_UNION;
 
2723
        }
 
2724
        ndr_push_restore_relative_base_offset(ndr, _save_relative_base_offset);
 
2725
        return NDR_ERR_SUCCESS;
 
2726
}
 
2727
 
 
2728
_PUBLIC_ enum ndr_err_code ndr_pull_spoolss_PrinterInfo(struct ndr_pull *ndr, int ndr_flags, union spoolss_PrinterInfo *r)
 
2729
{
 
2730
        uint32_t _save_relative_base_offset = ndr_pull_get_relative_base_offset(ndr);
 
2731
        int level;
 
2732
        {
 
2733
                uint32_t _flags_save_UNION = ndr->flags;
 
2734
                ndr_set_flags(&ndr->flags, LIBNDR_FLAG_RELATIVE_REVERSE);
 
2735
                level = ndr_pull_get_switch_value(ndr, r);
 
2736
                if (ndr_flags & NDR_SCALARS) {
 
2737
                        NDR_CHECK(ndr_pull_union_align(ndr, 5));
 
2738
                        switch (level) {
 
2739
                                case 0: {
 
2740
                                        NDR_CHECK(ndr_pull_align(ndr, 5));
 
2741
                                        NDR_CHECK(ndr_pull_setup_relative_base_offset1(ndr, r, ndr->offset));
 
2742
                                        NDR_CHECK(ndr_pull_spoolss_PrinterInfo0(ndr, NDR_SCALARS, &r->info0));
 
2743
                                break; }
 
2744
 
 
2745
                                case 1: {
 
2746
                                        NDR_CHECK(ndr_pull_align(ndr, 5));
 
2747
                                        NDR_CHECK(ndr_pull_setup_relative_base_offset1(ndr, r, ndr->offset));
 
2748
                                        NDR_CHECK(ndr_pull_spoolss_PrinterInfo1(ndr, NDR_SCALARS, &r->info1));
 
2749
                                break; }
 
2750
 
 
2751
                                case 2: {
 
2752
                                        NDR_CHECK(ndr_pull_align(ndr, 5));
 
2753
                                        NDR_CHECK(ndr_pull_setup_relative_base_offset1(ndr, r, ndr->offset));
 
2754
                                        NDR_CHECK(ndr_pull_spoolss_PrinterInfo2(ndr, NDR_SCALARS, &r->info2));
 
2755
                                break; }
 
2756
 
 
2757
                                case 3: {
 
2758
                                        NDR_CHECK(ndr_pull_align(ndr, 5));
 
2759
                                        NDR_CHECK(ndr_pull_setup_relative_base_offset1(ndr, r, ndr->offset));
 
2760
                                        NDR_CHECK(ndr_pull_spoolss_PrinterInfo3(ndr, NDR_SCALARS, &r->info3));
 
2761
                                break; }
 
2762
 
 
2763
                                case 4: {
 
2764
                                        NDR_CHECK(ndr_pull_align(ndr, 5));
 
2765
                                        NDR_CHECK(ndr_pull_setup_relative_base_offset1(ndr, r, ndr->offset));
 
2766
                                        NDR_CHECK(ndr_pull_spoolss_PrinterInfo4(ndr, NDR_SCALARS, &r->info4));
 
2767
                                break; }
 
2768
 
 
2769
                                case 5: {
 
2770
                                        NDR_CHECK(ndr_pull_align(ndr, 5));
 
2771
                                        NDR_CHECK(ndr_pull_setup_relative_base_offset1(ndr, r, ndr->offset));
 
2772
                                        NDR_CHECK(ndr_pull_spoolss_PrinterInfo5(ndr, NDR_SCALARS, &r->info5));
 
2773
                                break; }
 
2774
 
 
2775
                                case 6: {
 
2776
                                        NDR_CHECK(ndr_pull_align(ndr, 4));
 
2777
                                        NDR_CHECK(ndr_pull_setup_relative_base_offset1(ndr, r, ndr->offset));
 
2778
                                        NDR_CHECK(ndr_pull_spoolss_PrinterInfo6(ndr, NDR_SCALARS, &r->info6));
 
2779
                                break; }
 
2780
 
 
2781
                                case 7: {
 
2782
                                        NDR_CHECK(ndr_pull_align(ndr, 5));
 
2783
                                        NDR_CHECK(ndr_pull_setup_relative_base_offset1(ndr, r, ndr->offset));
 
2784
                                        NDR_CHECK(ndr_pull_spoolss_PrinterInfo7(ndr, NDR_SCALARS, &r->info7));
 
2785
                                break; }
 
2786
 
 
2787
                                case 8: {
 
2788
                                        NDR_CHECK(ndr_pull_align(ndr, 5));
 
2789
                                        NDR_CHECK(ndr_pull_setup_relative_base_offset1(ndr, r, ndr->offset));
 
2790
                                        NDR_CHECK(ndr_pull_spoolss_DeviceModeInfo(ndr, NDR_SCALARS, &r->info8));
 
2791
                                break; }
 
2792
 
 
2793
                                case 9: {
 
2794
                                        NDR_CHECK(ndr_pull_align(ndr, 5));
 
2795
                                        NDR_CHECK(ndr_pull_setup_relative_base_offset1(ndr, r, ndr->offset));
 
2796
                                        NDR_CHECK(ndr_pull_spoolss_DeviceModeInfo(ndr, NDR_SCALARS, &r->info9));
 
2797
                                break; }
 
2798
 
 
2799
                                default: {
 
2800
                                break; }
 
2801
 
 
2802
                        }
 
2803
                }
 
2804
                if (ndr_flags & NDR_BUFFERS) {
 
2805
                        NDR_CHECK(ndr_pull_setup_relative_base_offset2(ndr, r));
 
2806
                        switch (level) {
 
2807
                                case 0:
 
2808
                                        NDR_CHECK(ndr_pull_spoolss_PrinterInfo0(ndr, NDR_BUFFERS, &r->info0));
 
2809
                                break;
 
2810
 
 
2811
                                case 1:
 
2812
                                        NDR_CHECK(ndr_pull_spoolss_PrinterInfo1(ndr, NDR_BUFFERS, &r->info1));
 
2813
                                break;
 
2814
 
 
2815
                                case 2:
 
2816
                                        NDR_CHECK(ndr_pull_spoolss_PrinterInfo2(ndr, NDR_BUFFERS, &r->info2));
 
2817
                                break;
 
2818
 
 
2819
                                case 3:
 
2820
                                        NDR_CHECK(ndr_pull_spoolss_PrinterInfo3(ndr, NDR_BUFFERS, &r->info3));
 
2821
                                break;
 
2822
 
 
2823
                                case 4:
 
2824
                                        NDR_CHECK(ndr_pull_spoolss_PrinterInfo4(ndr, NDR_BUFFERS, &r->info4));
 
2825
                                break;
 
2826
 
 
2827
                                case 5:
 
2828
                                        NDR_CHECK(ndr_pull_spoolss_PrinterInfo5(ndr, NDR_BUFFERS, &r->info5));
 
2829
                                break;
 
2830
 
 
2831
                                case 6:
 
2832
                                break;
 
2833
 
 
2834
                                case 7:
 
2835
                                        NDR_CHECK(ndr_pull_spoolss_PrinterInfo7(ndr, NDR_BUFFERS, &r->info7));
 
2836
                                break;
 
2837
 
 
2838
                                case 8:
 
2839
                                        NDR_CHECK(ndr_pull_spoolss_DeviceModeInfo(ndr, NDR_BUFFERS, &r->info8));
 
2840
                                break;
 
2841
 
 
2842
                                case 9:
 
2843
                                        NDR_CHECK(ndr_pull_spoolss_DeviceModeInfo(ndr, NDR_BUFFERS, &r->info9));
 
2844
                                break;
 
2845
 
 
2846
                                default:
 
2847
                                break;
 
2848
 
 
2849
                        }
 
2850
                }
 
2851
                ndr->flags = _flags_save_UNION;
 
2852
        }
 
2853
        ndr_pull_restore_relative_base_offset(ndr, _save_relative_base_offset);
 
2854
        return NDR_ERR_SUCCESS;
 
2855
}
 
2856
 
 
2857
_PUBLIC_ void ndr_print_spoolss_PrinterInfo(struct ndr_print *ndr, const char *name, const union spoolss_PrinterInfo *r)
 
2858
{
 
2859
        int level;
 
2860
        {
 
2861
                uint32_t _flags_save_UNION = ndr->flags;
 
2862
                ndr_set_flags(&ndr->flags, LIBNDR_FLAG_RELATIVE_REVERSE);
 
2863
                level = ndr_print_get_switch_value(ndr, r);
 
2864
                ndr_print_union(ndr, name, level, "spoolss_PrinterInfo");
 
2865
                switch (level) {
 
2866
                        case 0:
 
2867
                                ndr_print_spoolss_PrinterInfo0(ndr, "info0", &r->info0);
 
2868
                        break;
 
2869
 
 
2870
                        case 1:
 
2871
                                ndr_print_spoolss_PrinterInfo1(ndr, "info1", &r->info1);
 
2872
                        break;
 
2873
 
 
2874
                        case 2:
 
2875
                                ndr_print_spoolss_PrinterInfo2(ndr, "info2", &r->info2);
 
2876
                        break;
 
2877
 
 
2878
                        case 3:
 
2879
                                ndr_print_spoolss_PrinterInfo3(ndr, "info3", &r->info3);
 
2880
                        break;
 
2881
 
 
2882
                        case 4:
 
2883
                                ndr_print_spoolss_PrinterInfo4(ndr, "info4", &r->info4);
 
2884
                        break;
 
2885
 
 
2886
                        case 5:
 
2887
                                ndr_print_spoolss_PrinterInfo5(ndr, "info5", &r->info5);
 
2888
                        break;
 
2889
 
 
2890
                        case 6:
 
2891
                                ndr_print_spoolss_PrinterInfo6(ndr, "info6", &r->info6);
 
2892
                        break;
 
2893
 
 
2894
                        case 7:
 
2895
                                ndr_print_spoolss_PrinterInfo7(ndr, "info7", &r->info7);
 
2896
                        break;
 
2897
 
 
2898
                        case 8:
 
2899
                                ndr_print_spoolss_DeviceModeInfo(ndr, "info8", &r->info8);
 
2900
                        break;
 
2901
 
 
2902
                        case 9:
 
2903
                                ndr_print_spoolss_DeviceModeInfo(ndr, "info9", &r->info9);
 
2904
                        break;
 
2905
 
 
2906
                        default:
 
2907
                        break;
 
2908
 
 
2909
                }
 
2910
                ndr->flags = _flags_save_UNION;
 
2911
        }
 
2912
}
 
2913
 
 
2914
_PUBLIC_ size_t ndr_size_spoolss_PrinterInfo(const union spoolss_PrinterInfo *r, uint32_t level, struct smb_iconv_convenience *ic, int flags)
 
2915
{
 
2916
        flags |= LIBNDR_FLAG_RELATIVE_REVERSE;
 
2917
        return ndr_size_union(r, flags, level, (ndr_push_flags_fn_t)ndr_push_spoolss_PrinterInfo, ic);
 
2918
}
 
2919
 
 
2920
static enum ndr_err_code ndr_push_spoolss_DevmodeContainer(struct ndr_push *ndr, int ndr_flags, const struct spoolss_DevmodeContainer *r)
 
2921
{
 
2922
        if (ndr_flags & NDR_SCALARS) {
 
2923
                NDR_CHECK(ndr_push_align(ndr, 5));
 
2924
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, _ndr_size_spoolss_DeviceMode(r->devmode, ndr->iconv_convenience, ndr->flags)));
 
2925
                NDR_CHECK(ndr_push_unique_ptr(ndr, r->devmode));
 
2926
                NDR_CHECK(ndr_push_trailer_align(ndr, 5));
 
2927
        }
 
2928
        if (ndr_flags & NDR_BUFFERS) {
 
2929
                if (r->devmode) {
 
2930
                        {
 
2931
                                struct ndr_push *_ndr_devmode;
 
2932
                                NDR_CHECK(ndr_push_subcontext_start(ndr, &_ndr_devmode, 4, _ndr_size_spoolss_DeviceMode(r->devmode, ndr->iconv_convenience, ndr->flags)));
 
2933
                                NDR_CHECK(ndr_push_spoolss_DeviceMode(_ndr_devmode, NDR_SCALARS, r->devmode));
 
2934
                                NDR_CHECK(ndr_push_subcontext_end(ndr, _ndr_devmode, 4, _ndr_size_spoolss_DeviceMode(r->devmode, ndr->iconv_convenience, ndr->flags)));
 
2935
                        }
 
2936
                }
 
2937
        }
 
2938
        return NDR_ERR_SUCCESS;
 
2939
}
 
2940
 
 
2941
static enum ndr_err_code ndr_pull_spoolss_DevmodeContainer(struct ndr_pull *ndr, int ndr_flags, struct spoolss_DevmodeContainer *r)
 
2942
{
 
2943
        uint32_t _ptr_devmode;
 
2944
        TALLOC_CTX *_mem_save_devmode_0;
 
2945
        if (ndr_flags & NDR_SCALARS) {
 
2946
                NDR_CHECK(ndr_pull_align(ndr, 5));
 
2947
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->_ndr_size));
 
2948
                NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_devmode));
 
2949
                if (_ptr_devmode) {
 
2950
                        NDR_PULL_ALLOC(ndr, r->devmode);
 
2951
                } else {
 
2952
                        r->devmode = NULL;
 
2953
                }
 
2954
                NDR_CHECK(ndr_pull_trailer_align(ndr, 5));
 
2955
        }
 
2956
        if (ndr_flags & NDR_BUFFERS) {
 
2957
                if (r->devmode) {
 
2958
                        _mem_save_devmode_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
2959
                        NDR_PULL_SET_MEM_CTX(ndr, r->devmode, 0);
 
2960
                        {
 
2961
                                struct ndr_pull *_ndr_devmode;
 
2962
                                NDR_CHECK(ndr_pull_subcontext_start(ndr, &_ndr_devmode, 4, r->_ndr_size));
 
2963
                                NDR_CHECK(ndr_pull_spoolss_DeviceMode(_ndr_devmode, NDR_SCALARS, r->devmode));
 
2964
                                NDR_CHECK(ndr_pull_subcontext_end(ndr, _ndr_devmode, 4, r->_ndr_size));
 
2965
                        }
 
2966
                        NDR_PULL_SET_MEM_CTX(ndr, _mem_save_devmode_0, 0);
 
2967
                }
 
2968
        }
 
2969
        return NDR_ERR_SUCCESS;
 
2970
}
 
2971
 
 
2972
_PUBLIC_ void ndr_print_spoolss_DevmodeContainer(struct ndr_print *ndr, const char *name, const struct spoolss_DevmodeContainer *r)
 
2973
{
 
2974
        ndr_print_struct(ndr, name, "spoolss_DevmodeContainer");
 
2975
        ndr->depth++;
 
2976
        ndr_print_uint32(ndr, "_ndr_size", (ndr->flags & LIBNDR_PRINT_SET_VALUES)?_ndr_size_spoolss_DeviceMode(r->devmode, ndr->iconv_convenience, ndr->flags):r->_ndr_size);
 
2977
        ndr_print_ptr(ndr, "devmode", r->devmode);
 
2978
        ndr->depth++;
 
2979
        if (r->devmode) {
 
2980
                ndr_print_spoolss_DeviceMode(ndr, "devmode", r->devmode);
 
2981
        }
 
2982
        ndr->depth--;
 
2983
        ndr->depth--;
 
2984
}
 
2985
 
 
2986
_PUBLIC_ enum ndr_err_code ndr_push_spoolss_JobInfo1(struct ndr_push *ndr, int ndr_flags, const struct spoolss_JobInfo1 *r)
 
2987
{
 
2988
        if (ndr_flags & NDR_SCALARS) {
 
2989
                NDR_CHECK(ndr_push_align(ndr, 5));
 
2990
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->job_id));
 
2991
                {
 
2992
                        uint32_t _flags_save_string = ndr->flags;
 
2993
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
2994
                        NDR_CHECK(ndr_push_relative_ptr1(ndr, r->printer_name));
 
2995
                        ndr->flags = _flags_save_string;
 
2996
                }
 
2997
                {
 
2998
                        uint32_t _flags_save_string = ndr->flags;
 
2999
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
3000
                        NDR_CHECK(ndr_push_relative_ptr1(ndr, r->server_name));
 
3001
                        ndr->flags = _flags_save_string;
 
3002
                }
 
3003
                {
 
3004
                        uint32_t _flags_save_string = ndr->flags;
 
3005
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
3006
                        NDR_CHECK(ndr_push_relative_ptr1(ndr, r->user_name));
 
3007
                        ndr->flags = _flags_save_string;
 
3008
                }
 
3009
                {
 
3010
                        uint32_t _flags_save_string = ndr->flags;
 
3011
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
3012
                        NDR_CHECK(ndr_push_relative_ptr1(ndr, r->document_name));
 
3013
                        ndr->flags = _flags_save_string;
 
3014
                }
 
3015
                {
 
3016
                        uint32_t _flags_save_string = ndr->flags;
 
3017
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
3018
                        NDR_CHECK(ndr_push_relative_ptr1(ndr, r->data_type));
 
3019
                        ndr->flags = _flags_save_string;
 
3020
                }
 
3021
                {
 
3022
                        uint32_t _flags_save_string = ndr->flags;
 
3023
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
3024
                        NDR_CHECK(ndr_push_relative_ptr1(ndr, r->text_status));
 
3025
                        ndr->flags = _flags_save_string;
 
3026
                }
 
3027
                NDR_CHECK(ndr_push_spoolss_JobStatus(ndr, NDR_SCALARS, r->status));
 
3028
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->priority));
 
3029
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->position));
 
3030
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->total_pages));
 
3031
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->pages_printed));
 
3032
                NDR_CHECK(ndr_push_spoolss_Time(ndr, NDR_SCALARS, &r->submitted));
 
3033
                NDR_CHECK(ndr_push_trailer_align(ndr, 5));
 
3034
        }
 
3035
        if (ndr_flags & NDR_BUFFERS) {
 
3036
                {
 
3037
                        uint32_t _flags_save_string = ndr->flags;
 
3038
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
3039
                        if (r->printer_name) {
 
3040
                                NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->printer_name));
 
3041
                                NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->printer_name));
 
3042
                                NDR_CHECK(ndr_push_relative_ptr2_end(ndr, r->printer_name));
 
3043
                        }
 
3044
                        ndr->flags = _flags_save_string;
 
3045
                }
 
3046
                {
 
3047
                        uint32_t _flags_save_string = ndr->flags;
 
3048
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
3049
                        if (r->server_name) {
 
3050
                                NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->server_name));
 
3051
                                NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->server_name));
 
3052
                                NDR_CHECK(ndr_push_relative_ptr2_end(ndr, r->server_name));
 
3053
                        }
 
3054
                        ndr->flags = _flags_save_string;
 
3055
                }
 
3056
                {
 
3057
                        uint32_t _flags_save_string = ndr->flags;
 
3058
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
3059
                        if (r->user_name) {
 
3060
                                NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->user_name));
 
3061
                                NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->user_name));
 
3062
                                NDR_CHECK(ndr_push_relative_ptr2_end(ndr, r->user_name));
 
3063
                        }
 
3064
                        ndr->flags = _flags_save_string;
 
3065
                }
 
3066
                {
 
3067
                        uint32_t _flags_save_string = ndr->flags;
 
3068
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
3069
                        if (r->document_name) {
 
3070
                                NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->document_name));
 
3071
                                NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->document_name));
 
3072
                                NDR_CHECK(ndr_push_relative_ptr2_end(ndr, r->document_name));
 
3073
                        }
 
3074
                        ndr->flags = _flags_save_string;
 
3075
                }
 
3076
                {
 
3077
                        uint32_t _flags_save_string = ndr->flags;
 
3078
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
3079
                        if (r->data_type) {
 
3080
                                NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->data_type));
 
3081
                                NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->data_type));
 
3082
                                NDR_CHECK(ndr_push_relative_ptr2_end(ndr, r->data_type));
 
3083
                        }
 
3084
                        ndr->flags = _flags_save_string;
 
3085
                }
 
3086
                {
 
3087
                        uint32_t _flags_save_string = ndr->flags;
 
3088
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
3089
                        if (r->text_status) {
 
3090
                                NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->text_status));
 
3091
                                NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->text_status));
 
3092
                                NDR_CHECK(ndr_push_relative_ptr2_end(ndr, r->text_status));
 
3093
                        }
 
3094
                        ndr->flags = _flags_save_string;
 
3095
                }
 
3096
        }
 
3097
        return NDR_ERR_SUCCESS;
 
3098
}
 
3099
 
 
3100
_PUBLIC_ enum ndr_err_code ndr_pull_spoolss_JobInfo1(struct ndr_pull *ndr, int ndr_flags, struct spoolss_JobInfo1 *r)
 
3101
{
 
3102
        uint32_t _ptr_printer_name;
 
3103
        TALLOC_CTX *_mem_save_printer_name_0;
 
3104
        uint32_t _ptr_server_name;
 
3105
        TALLOC_CTX *_mem_save_server_name_0;
 
3106
        uint32_t _ptr_user_name;
 
3107
        TALLOC_CTX *_mem_save_user_name_0;
 
3108
        uint32_t _ptr_document_name;
 
3109
        TALLOC_CTX *_mem_save_document_name_0;
 
3110
        uint32_t _ptr_data_type;
 
3111
        TALLOC_CTX *_mem_save_data_type_0;
 
3112
        uint32_t _ptr_text_status;
 
3113
        TALLOC_CTX *_mem_save_text_status_0;
 
3114
        if (ndr_flags & NDR_SCALARS) {
 
3115
                NDR_CHECK(ndr_pull_align(ndr, 5));
 
3116
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->job_id));
 
3117
                {
 
3118
                        uint32_t _flags_save_string = ndr->flags;
 
3119
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
3120
                        NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_printer_name));
 
3121
                        if (_ptr_printer_name) {
 
3122
                                NDR_PULL_ALLOC(ndr, r->printer_name);
 
3123
                                NDR_CHECK(ndr_pull_relative_ptr1(ndr, r->printer_name, _ptr_printer_name));
 
3124
                        } else {
 
3125
                                r->printer_name = NULL;
 
3126
                        }
 
3127
                        ndr->flags = _flags_save_string;
 
3128
                }
 
3129
                {
 
3130
                        uint32_t _flags_save_string = ndr->flags;
 
3131
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
3132
                        NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_server_name));
 
3133
                        if (_ptr_server_name) {
 
3134
                                NDR_PULL_ALLOC(ndr, r->server_name);
 
3135
                                NDR_CHECK(ndr_pull_relative_ptr1(ndr, r->server_name, _ptr_server_name));
 
3136
                        } else {
 
3137
                                r->server_name = NULL;
 
3138
                        }
 
3139
                        ndr->flags = _flags_save_string;
 
3140
                }
 
3141
                {
 
3142
                        uint32_t _flags_save_string = ndr->flags;
 
3143
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
3144
                        NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_user_name));
 
3145
                        if (_ptr_user_name) {
 
3146
                                NDR_PULL_ALLOC(ndr, r->user_name);
 
3147
                                NDR_CHECK(ndr_pull_relative_ptr1(ndr, r->user_name, _ptr_user_name));
 
3148
                        } else {
 
3149
                                r->user_name = NULL;
 
3150
                        }
 
3151
                        ndr->flags = _flags_save_string;
 
3152
                }
 
3153
                {
 
3154
                        uint32_t _flags_save_string = ndr->flags;
 
3155
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
3156
                        NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_document_name));
 
3157
                        if (_ptr_document_name) {
 
3158
                                NDR_PULL_ALLOC(ndr, r->document_name);
 
3159
                                NDR_CHECK(ndr_pull_relative_ptr1(ndr, r->document_name, _ptr_document_name));
 
3160
                        } else {
 
3161
                                r->document_name = NULL;
 
3162
                        }
 
3163
                        ndr->flags = _flags_save_string;
 
3164
                }
 
3165
                {
 
3166
                        uint32_t _flags_save_string = ndr->flags;
 
3167
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
3168
                        NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_data_type));
 
3169
                        if (_ptr_data_type) {
 
3170
                                NDR_PULL_ALLOC(ndr, r->data_type);
 
3171
                                NDR_CHECK(ndr_pull_relative_ptr1(ndr, r->data_type, _ptr_data_type));
 
3172
                        } else {
 
3173
                                r->data_type = NULL;
 
3174
                        }
 
3175
                        ndr->flags = _flags_save_string;
 
3176
                }
 
3177
                {
 
3178
                        uint32_t _flags_save_string = ndr->flags;
 
3179
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
3180
                        NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_text_status));
 
3181
                        if (_ptr_text_status) {
 
3182
                                NDR_PULL_ALLOC(ndr, r->text_status);
 
3183
                                NDR_CHECK(ndr_pull_relative_ptr1(ndr, r->text_status, _ptr_text_status));
 
3184
                        } else {
 
3185
                                r->text_status = NULL;
 
3186
                        }
 
3187
                        ndr->flags = _flags_save_string;
 
3188
                }
 
3189
                NDR_CHECK(ndr_pull_spoolss_JobStatus(ndr, NDR_SCALARS, &r->status));
 
3190
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->priority));
 
3191
                if (r->priority > 99) {
 
3192
                        return ndr_pull_error(ndr, NDR_ERR_RANGE, "value out of range");
 
3193
                }
 
3194
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->position));
 
3195
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->total_pages));
 
3196
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->pages_printed));
 
3197
                NDR_CHECK(ndr_pull_spoolss_Time(ndr, NDR_SCALARS, &r->submitted));
 
3198
                NDR_CHECK(ndr_pull_trailer_align(ndr, 5));
 
3199
        }
 
3200
        if (ndr_flags & NDR_BUFFERS) {
 
3201
                {
 
3202
                        uint32_t _flags_save_string = ndr->flags;
 
3203
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
3204
                        if (r->printer_name) {
 
3205
                                uint32_t _relative_save_offset;
 
3206
                                _relative_save_offset = ndr->offset;
 
3207
                                NDR_CHECK(ndr_pull_relative_ptr2(ndr, r->printer_name));
 
3208
                                _mem_save_printer_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
3209
                                NDR_PULL_SET_MEM_CTX(ndr, r->printer_name, 0);
 
3210
                                NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->printer_name));
 
3211
                                NDR_PULL_SET_MEM_CTX(ndr, _mem_save_printer_name_0, 0);
 
3212
                                ndr->offset = _relative_save_offset;
 
3213
                        }
 
3214
                        ndr->flags = _flags_save_string;
 
3215
                }
 
3216
                {
 
3217
                        uint32_t _flags_save_string = ndr->flags;
 
3218
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
3219
                        if (r->server_name) {
 
3220
                                uint32_t _relative_save_offset;
 
3221
                                _relative_save_offset = ndr->offset;
 
3222
                                NDR_CHECK(ndr_pull_relative_ptr2(ndr, r->server_name));
 
3223
                                _mem_save_server_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
3224
                                NDR_PULL_SET_MEM_CTX(ndr, r->server_name, 0);
 
3225
                                NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->server_name));
 
3226
                                NDR_PULL_SET_MEM_CTX(ndr, _mem_save_server_name_0, 0);
 
3227
                                ndr->offset = _relative_save_offset;
 
3228
                        }
 
3229
                        ndr->flags = _flags_save_string;
 
3230
                }
 
3231
                {
 
3232
                        uint32_t _flags_save_string = ndr->flags;
 
3233
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
3234
                        if (r->user_name) {
 
3235
                                uint32_t _relative_save_offset;
 
3236
                                _relative_save_offset = ndr->offset;
 
3237
                                NDR_CHECK(ndr_pull_relative_ptr2(ndr, r->user_name));
 
3238
                                _mem_save_user_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
3239
                                NDR_PULL_SET_MEM_CTX(ndr, r->user_name, 0);
 
3240
                                NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->user_name));
 
3241
                                NDR_PULL_SET_MEM_CTX(ndr, _mem_save_user_name_0, 0);
 
3242
                                ndr->offset = _relative_save_offset;
 
3243
                        }
 
3244
                        ndr->flags = _flags_save_string;
 
3245
                }
 
3246
                {
 
3247
                        uint32_t _flags_save_string = ndr->flags;
 
3248
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
3249
                        if (r->document_name) {
 
3250
                                uint32_t _relative_save_offset;
 
3251
                                _relative_save_offset = ndr->offset;
 
3252
                                NDR_CHECK(ndr_pull_relative_ptr2(ndr, r->document_name));
 
3253
                                _mem_save_document_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
3254
                                NDR_PULL_SET_MEM_CTX(ndr, r->document_name, 0);
 
3255
                                NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->document_name));
 
3256
                                NDR_PULL_SET_MEM_CTX(ndr, _mem_save_document_name_0, 0);
 
3257
                                ndr->offset = _relative_save_offset;
 
3258
                        }
 
3259
                        ndr->flags = _flags_save_string;
 
3260
                }
 
3261
                {
 
3262
                        uint32_t _flags_save_string = ndr->flags;
 
3263
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
3264
                        if (r->data_type) {
 
3265
                                uint32_t _relative_save_offset;
 
3266
                                _relative_save_offset = ndr->offset;
 
3267
                                NDR_CHECK(ndr_pull_relative_ptr2(ndr, r->data_type));
 
3268
                                _mem_save_data_type_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
3269
                                NDR_PULL_SET_MEM_CTX(ndr, r->data_type, 0);
 
3270
                                NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->data_type));
 
3271
                                NDR_PULL_SET_MEM_CTX(ndr, _mem_save_data_type_0, 0);
 
3272
                                ndr->offset = _relative_save_offset;
 
3273
                        }
 
3274
                        ndr->flags = _flags_save_string;
 
3275
                }
 
3276
                {
 
3277
                        uint32_t _flags_save_string = ndr->flags;
 
3278
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
3279
                        if (r->text_status) {
 
3280
                                uint32_t _relative_save_offset;
 
3281
                                _relative_save_offset = ndr->offset;
 
3282
                                NDR_CHECK(ndr_pull_relative_ptr2(ndr, r->text_status));
 
3283
                                _mem_save_text_status_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
3284
                                NDR_PULL_SET_MEM_CTX(ndr, r->text_status, 0);
 
3285
                                NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->text_status));
 
3286
                                NDR_PULL_SET_MEM_CTX(ndr, _mem_save_text_status_0, 0);
 
3287
                                ndr->offset = _relative_save_offset;
 
3288
                        }
 
3289
                        ndr->flags = _flags_save_string;
 
3290
                }
 
3291
        }
 
3292
        return NDR_ERR_SUCCESS;
 
3293
}
 
3294
 
 
3295
_PUBLIC_ void ndr_print_spoolss_JobInfo1(struct ndr_print *ndr, const char *name, const struct spoolss_JobInfo1 *r)
 
3296
{
 
3297
        ndr_print_struct(ndr, name, "spoolss_JobInfo1");
 
3298
        ndr->depth++;
 
3299
        ndr_print_uint32(ndr, "job_id", r->job_id);
 
3300
        ndr_print_ptr(ndr, "printer_name", r->printer_name);
 
3301
        ndr->depth++;
 
3302
        if (r->printer_name) {
 
3303
                ndr_print_string(ndr, "printer_name", r->printer_name);
 
3304
        }
 
3305
        ndr->depth--;
 
3306
        ndr_print_ptr(ndr, "server_name", r->server_name);
 
3307
        ndr->depth++;
 
3308
        if (r->server_name) {
 
3309
                ndr_print_string(ndr, "server_name", r->server_name);
 
3310
        }
 
3311
        ndr->depth--;
 
3312
        ndr_print_ptr(ndr, "user_name", r->user_name);
 
3313
        ndr->depth++;
 
3314
        if (r->user_name) {
 
3315
                ndr_print_string(ndr, "user_name", r->user_name);
 
3316
        }
 
3317
        ndr->depth--;
 
3318
        ndr_print_ptr(ndr, "document_name", r->document_name);
 
3319
        ndr->depth++;
 
3320
        if (r->document_name) {
 
3321
                ndr_print_string(ndr, "document_name", r->document_name);
 
3322
        }
 
3323
        ndr->depth--;
 
3324
        ndr_print_ptr(ndr, "data_type", r->data_type);
 
3325
        ndr->depth++;
 
3326
        if (r->data_type) {
 
3327
                ndr_print_string(ndr, "data_type", r->data_type);
 
3328
        }
 
3329
        ndr->depth--;
 
3330
        ndr_print_ptr(ndr, "text_status", r->text_status);
 
3331
        ndr->depth++;
 
3332
        if (r->text_status) {
 
3333
                ndr_print_string(ndr, "text_status", r->text_status);
 
3334
        }
 
3335
        ndr->depth--;
 
3336
        ndr_print_spoolss_JobStatus(ndr, "status", r->status);
 
3337
        ndr_print_uint32(ndr, "priority", r->priority);
 
3338
        ndr_print_uint32(ndr, "position", r->position);
 
3339
        ndr_print_uint32(ndr, "total_pages", r->total_pages);
 
3340
        ndr_print_uint32(ndr, "pages_printed", r->pages_printed);
 
3341
        ndr_print_spoolss_Time(ndr, "submitted", &r->submitted);
 
3342
        ndr->depth--;
 
3343
}
 
3344
 
 
3345
_PUBLIC_ size_t ndr_size_spoolss_JobInfo1(const struct spoolss_JobInfo1 *r, struct smb_iconv_convenience *ic, int flags)
 
3346
{
 
3347
        return ndr_size_struct(r, flags, (ndr_push_flags_fn_t)ndr_push_spoolss_JobInfo1, ic);
 
3348
}
 
3349
 
 
3350
_PUBLIC_ enum ndr_err_code ndr_push_spoolss_JobInfo2(struct ndr_push *ndr, int ndr_flags, const struct spoolss_JobInfo2 *r)
 
3351
{
 
3352
        if (ndr_flags & NDR_SCALARS) {
 
3353
                NDR_CHECK(ndr_push_align(ndr, 5));
 
3354
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->job_id));
 
3355
                {
 
3356
                        uint32_t _flags_save_string = ndr->flags;
 
3357
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
3358
                        NDR_CHECK(ndr_push_relative_ptr1(ndr, r->printer_name));
 
3359
                        ndr->flags = _flags_save_string;
 
3360
                }
 
3361
                {
 
3362
                        uint32_t _flags_save_string = ndr->flags;
 
3363
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
3364
                        NDR_CHECK(ndr_push_relative_ptr1(ndr, r->server_name));
 
3365
                        ndr->flags = _flags_save_string;
 
3366
                }
 
3367
                {
 
3368
                        uint32_t _flags_save_string = ndr->flags;
 
3369
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
3370
                        NDR_CHECK(ndr_push_relative_ptr1(ndr, r->user_name));
 
3371
                        ndr->flags = _flags_save_string;
 
3372
                }
 
3373
                {
 
3374
                        uint32_t _flags_save_string = ndr->flags;
 
3375
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
3376
                        NDR_CHECK(ndr_push_relative_ptr1(ndr, r->document_name));
 
3377
                        ndr->flags = _flags_save_string;
 
3378
                }
 
3379
                {
 
3380
                        uint32_t _flags_save_string = ndr->flags;
 
3381
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
3382
                        NDR_CHECK(ndr_push_relative_ptr1(ndr, r->notify_name));
 
3383
                        ndr->flags = _flags_save_string;
 
3384
                }
 
3385
                {
 
3386
                        uint32_t _flags_save_string = ndr->flags;
 
3387
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
3388
                        NDR_CHECK(ndr_push_relative_ptr1(ndr, r->data_type));
 
3389
                        ndr->flags = _flags_save_string;
 
3390
                }
 
3391
                {
 
3392
                        uint32_t _flags_save_string = ndr->flags;
 
3393
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
3394
                        NDR_CHECK(ndr_push_relative_ptr1(ndr, r->print_processor));
 
3395
                        ndr->flags = _flags_save_string;
 
3396
                }
 
3397
                {
 
3398
                        uint32_t _flags_save_string = ndr->flags;
 
3399
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
3400
                        NDR_CHECK(ndr_push_relative_ptr1(ndr, r->parameters));
 
3401
                        ndr->flags = _flags_save_string;
 
3402
                }
 
3403
                {
 
3404
                        uint32_t _flags_save_string = ndr->flags;
 
3405
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
3406
                        NDR_CHECK(ndr_push_relative_ptr1(ndr, r->driver_name));
 
3407
                        ndr->flags = _flags_save_string;
 
3408
                }
 
3409
                {
 
3410
                        uint32_t _flags_save_spoolss_DeviceMode = ndr->flags;
 
3411
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_ALIGN4);
 
3412
                        NDR_CHECK(ndr_push_relative_ptr1(ndr, r->devmode));
 
3413
                        ndr->flags = _flags_save_spoolss_DeviceMode;
 
3414
                }
 
3415
                {
 
3416
                        uint32_t _flags_save_string = ndr->flags;
 
3417
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
3418
                        NDR_CHECK(ndr_push_relative_ptr1(ndr, r->text_status));
 
3419
                        ndr->flags = _flags_save_string;
 
3420
                }
 
3421
                {
 
3422
                        uint32_t _flags_save_spoolss_security_descriptor = ndr->flags;
 
3423
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_ALIGN4);
 
3424
                        NDR_CHECK(ndr_push_relative_ptr1(ndr, r->secdesc));
 
3425
                        ndr->flags = _flags_save_spoolss_security_descriptor;
 
3426
                }
 
3427
                NDR_CHECK(ndr_push_spoolss_JobStatus(ndr, NDR_SCALARS, r->status));
 
3428
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->priority));
 
3429
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->position));
 
3430
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->start_time));
 
3431
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->until_time));
 
3432
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->total_pages));
 
3433
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->size));
 
3434
                NDR_CHECK(ndr_push_spoolss_Time(ndr, NDR_SCALARS, &r->submitted));
 
3435
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->time));
 
3436
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->pages_printed));
 
3437
                NDR_CHECK(ndr_push_trailer_align(ndr, 5));
 
3438
        }
 
3439
        if (ndr_flags & NDR_BUFFERS) {
 
3440
                {
 
3441
                        uint32_t _flags_save_string = ndr->flags;
 
3442
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
3443
                        if (r->printer_name) {
 
3444
                                NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->printer_name));
 
3445
                                NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->printer_name));
 
3446
                                NDR_CHECK(ndr_push_relative_ptr2_end(ndr, r->printer_name));
 
3447
                        }
 
3448
                        ndr->flags = _flags_save_string;
 
3449
                }
 
3450
                {
 
3451
                        uint32_t _flags_save_string = ndr->flags;
 
3452
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
3453
                        if (r->server_name) {
 
3454
                                NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->server_name));
 
3455
                                NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->server_name));
 
3456
                                NDR_CHECK(ndr_push_relative_ptr2_end(ndr, r->server_name));
 
3457
                        }
 
3458
                        ndr->flags = _flags_save_string;
 
3459
                }
 
3460
                {
 
3461
                        uint32_t _flags_save_string = ndr->flags;
 
3462
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
3463
                        if (r->user_name) {
 
3464
                                NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->user_name));
 
3465
                                NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->user_name));
 
3466
                                NDR_CHECK(ndr_push_relative_ptr2_end(ndr, r->user_name));
 
3467
                        }
 
3468
                        ndr->flags = _flags_save_string;
 
3469
                }
 
3470
                {
 
3471
                        uint32_t _flags_save_string = ndr->flags;
 
3472
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
3473
                        if (r->document_name) {
 
3474
                                NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->document_name));
 
3475
                                NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->document_name));
 
3476
                                NDR_CHECK(ndr_push_relative_ptr2_end(ndr, r->document_name));
 
3477
                        }
 
3478
                        ndr->flags = _flags_save_string;
 
3479
                }
 
3480
                {
 
3481
                        uint32_t _flags_save_string = ndr->flags;
 
3482
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
3483
                        if (r->notify_name) {
 
3484
                                NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->notify_name));
 
3485
                                NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->notify_name));
 
3486
                                NDR_CHECK(ndr_push_relative_ptr2_end(ndr, r->notify_name));
 
3487
                        }
 
3488
                        ndr->flags = _flags_save_string;
 
3489
                }
 
3490
                {
 
3491
                        uint32_t _flags_save_string = ndr->flags;
 
3492
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
3493
                        if (r->data_type) {
 
3494
                                NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->data_type));
 
3495
                                NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->data_type));
 
3496
                                NDR_CHECK(ndr_push_relative_ptr2_end(ndr, r->data_type));
 
3497
                        }
 
3498
                        ndr->flags = _flags_save_string;
 
3499
                }
 
3500
                {
 
3501
                        uint32_t _flags_save_string = ndr->flags;
 
3502
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
3503
                        if (r->print_processor) {
 
3504
                                NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->print_processor));
 
3505
                                NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->print_processor));
 
3506
                                NDR_CHECK(ndr_push_relative_ptr2_end(ndr, r->print_processor));
 
3507
                        }
 
3508
                        ndr->flags = _flags_save_string;
 
3509
                }
 
3510
                {
 
3511
                        uint32_t _flags_save_string = ndr->flags;
 
3512
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
3513
                        if (r->parameters) {
 
3514
                                NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->parameters));
 
3515
                                NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->parameters));
 
3516
                                NDR_CHECK(ndr_push_relative_ptr2_end(ndr, r->parameters));
 
3517
                        }
 
3518
                        ndr->flags = _flags_save_string;
 
3519
                }
 
3520
                {
 
3521
                        uint32_t _flags_save_string = ndr->flags;
 
3522
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
3523
                        if (r->driver_name) {
 
3524
                                NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->driver_name));
 
3525
                                NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->driver_name));
 
3526
                                NDR_CHECK(ndr_push_relative_ptr2_end(ndr, r->driver_name));
 
3527
                        }
 
3528
                        ndr->flags = _flags_save_string;
 
3529
                }
 
3530
                {
 
3531
                        uint32_t _flags_save_spoolss_DeviceMode = ndr->flags;
 
3532
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_ALIGN4);
 
3533
                        if (r->devmode) {
 
3534
                                NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->devmode));
 
3535
                                {
 
3536
                                        struct ndr_push *_ndr_devmode;
 
3537
                                        NDR_CHECK(ndr_push_subcontext_start(ndr, &_ndr_devmode, 0, -1));
 
3538
                                        NDR_CHECK(ndr_push_spoolss_DeviceMode(_ndr_devmode, NDR_SCALARS, r->devmode));
 
3539
                                        NDR_CHECK(ndr_push_subcontext_end(ndr, _ndr_devmode, 0, -1));
 
3540
                                }
 
3541
                                NDR_CHECK(ndr_push_relative_ptr2_end(ndr, r->devmode));
 
3542
                        }
 
3543
                        ndr->flags = _flags_save_spoolss_DeviceMode;
 
3544
                }
 
3545
                {
 
3546
                        uint32_t _flags_save_string = ndr->flags;
 
3547
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
3548
                        if (r->text_status) {
 
3549
                                NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->text_status));
 
3550
                                NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->text_status));
 
3551
                                NDR_CHECK(ndr_push_relative_ptr2_end(ndr, r->text_status));
 
3552
                        }
 
3553
                        ndr->flags = _flags_save_string;
 
3554
                }
 
3555
                {
 
3556
                        uint32_t _flags_save_spoolss_security_descriptor = ndr->flags;
 
3557
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_ALIGN4);
 
3558
                        if (r->secdesc) {
 
3559
                                NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->secdesc));
 
3560
                                {
 
3561
                                        struct ndr_push *_ndr_secdesc;
 
3562
                                        NDR_CHECK(ndr_push_subcontext_start(ndr, &_ndr_secdesc, 0, -1));
 
3563
                                        NDR_CHECK(ndr_push_spoolss_security_descriptor(_ndr_secdesc, NDR_SCALARS|NDR_BUFFERS, r->secdesc));
 
3564
                                        NDR_CHECK(ndr_push_subcontext_end(ndr, _ndr_secdesc, 0, -1));
 
3565
                                }
 
3566
                                NDR_CHECK(ndr_push_relative_ptr2_end(ndr, r->secdesc));
 
3567
                        }
 
3568
                        ndr->flags = _flags_save_spoolss_security_descriptor;
 
3569
                }
 
3570
        }
 
3571
        return NDR_ERR_SUCCESS;
 
3572
}
 
3573
 
 
3574
_PUBLIC_ enum ndr_err_code ndr_pull_spoolss_JobInfo2(struct ndr_pull *ndr, int ndr_flags, struct spoolss_JobInfo2 *r)
 
3575
{
 
3576
        uint32_t _ptr_printer_name;
 
3577
        TALLOC_CTX *_mem_save_printer_name_0;
 
3578
        uint32_t _ptr_server_name;
 
3579
        TALLOC_CTX *_mem_save_server_name_0;
 
3580
        uint32_t _ptr_user_name;
 
3581
        TALLOC_CTX *_mem_save_user_name_0;
 
3582
        uint32_t _ptr_document_name;
 
3583
        TALLOC_CTX *_mem_save_document_name_0;
 
3584
        uint32_t _ptr_notify_name;
 
3585
        TALLOC_CTX *_mem_save_notify_name_0;
 
3586
        uint32_t _ptr_data_type;
 
3587
        TALLOC_CTX *_mem_save_data_type_0;
 
3588
        uint32_t _ptr_print_processor;
 
3589
        TALLOC_CTX *_mem_save_print_processor_0;
 
3590
        uint32_t _ptr_parameters;
 
3591
        TALLOC_CTX *_mem_save_parameters_0;
 
3592
        uint32_t _ptr_driver_name;
 
3593
        TALLOC_CTX *_mem_save_driver_name_0;
 
3594
        uint32_t _ptr_devmode;
 
3595
        TALLOC_CTX *_mem_save_devmode_0;
 
3596
        uint32_t _ptr_text_status;
 
3597
        TALLOC_CTX *_mem_save_text_status_0;
 
3598
        uint32_t _ptr_secdesc;
 
3599
        TALLOC_CTX *_mem_save_secdesc_0;
 
3600
        if (ndr_flags & NDR_SCALARS) {
 
3601
                NDR_CHECK(ndr_pull_align(ndr, 5));
 
3602
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->job_id));
 
3603
                {
 
3604
                        uint32_t _flags_save_string = ndr->flags;
 
3605
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
3606
                        NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_printer_name));
 
3607
                        if (_ptr_printer_name) {
 
3608
                                NDR_PULL_ALLOC(ndr, r->printer_name);
 
3609
                                NDR_CHECK(ndr_pull_relative_ptr1(ndr, r->printer_name, _ptr_printer_name));
 
3610
                        } else {
 
3611
                                r->printer_name = NULL;
 
3612
                        }
 
3613
                        ndr->flags = _flags_save_string;
 
3614
                }
 
3615
                {
 
3616
                        uint32_t _flags_save_string = ndr->flags;
 
3617
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
3618
                        NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_server_name));
 
3619
                        if (_ptr_server_name) {
 
3620
                                NDR_PULL_ALLOC(ndr, r->server_name);
 
3621
                                NDR_CHECK(ndr_pull_relative_ptr1(ndr, r->server_name, _ptr_server_name));
 
3622
                        } else {
 
3623
                                r->server_name = NULL;
 
3624
                        }
 
3625
                        ndr->flags = _flags_save_string;
 
3626
                }
 
3627
                {
 
3628
                        uint32_t _flags_save_string = ndr->flags;
 
3629
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
3630
                        NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_user_name));
 
3631
                        if (_ptr_user_name) {
 
3632
                                NDR_PULL_ALLOC(ndr, r->user_name);
 
3633
                                NDR_CHECK(ndr_pull_relative_ptr1(ndr, r->user_name, _ptr_user_name));
 
3634
                        } else {
 
3635
                                r->user_name = NULL;
 
3636
                        }
 
3637
                        ndr->flags = _flags_save_string;
 
3638
                }
 
3639
                {
 
3640
                        uint32_t _flags_save_string = ndr->flags;
 
3641
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
3642
                        NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_document_name));
 
3643
                        if (_ptr_document_name) {
 
3644
                                NDR_PULL_ALLOC(ndr, r->document_name);
 
3645
                                NDR_CHECK(ndr_pull_relative_ptr1(ndr, r->document_name, _ptr_document_name));
 
3646
                        } else {
 
3647
                                r->document_name = NULL;
 
3648
                        }
 
3649
                        ndr->flags = _flags_save_string;
 
3650
                }
 
3651
                {
 
3652
                        uint32_t _flags_save_string = ndr->flags;
 
3653
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
3654
                        NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_notify_name));
 
3655
                        if (_ptr_notify_name) {
 
3656
                                NDR_PULL_ALLOC(ndr, r->notify_name);
 
3657
                                NDR_CHECK(ndr_pull_relative_ptr1(ndr, r->notify_name, _ptr_notify_name));
 
3658
                        } else {
 
3659
                                r->notify_name = NULL;
 
3660
                        }
 
3661
                        ndr->flags = _flags_save_string;
 
3662
                }
 
3663
                {
 
3664
                        uint32_t _flags_save_string = ndr->flags;
 
3665
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
3666
                        NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_data_type));
 
3667
                        if (_ptr_data_type) {
 
3668
                                NDR_PULL_ALLOC(ndr, r->data_type);
 
3669
                                NDR_CHECK(ndr_pull_relative_ptr1(ndr, r->data_type, _ptr_data_type));
 
3670
                        } else {
 
3671
                                r->data_type = NULL;
 
3672
                        }
 
3673
                        ndr->flags = _flags_save_string;
 
3674
                }
 
3675
                {
 
3676
                        uint32_t _flags_save_string = ndr->flags;
 
3677
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
3678
                        NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_print_processor));
 
3679
                        if (_ptr_print_processor) {
 
3680
                                NDR_PULL_ALLOC(ndr, r->print_processor);
 
3681
                                NDR_CHECK(ndr_pull_relative_ptr1(ndr, r->print_processor, _ptr_print_processor));
 
3682
                        } else {
 
3683
                                r->print_processor = NULL;
 
3684
                        }
 
3685
                        ndr->flags = _flags_save_string;
 
3686
                }
 
3687
                {
 
3688
                        uint32_t _flags_save_string = ndr->flags;
 
3689
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
3690
                        NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_parameters));
 
3691
                        if (_ptr_parameters) {
 
3692
                                NDR_PULL_ALLOC(ndr, r->parameters);
 
3693
                                NDR_CHECK(ndr_pull_relative_ptr1(ndr, r->parameters, _ptr_parameters));
 
3694
                        } else {
 
3695
                                r->parameters = NULL;
 
3696
                        }
 
3697
                        ndr->flags = _flags_save_string;
 
3698
                }
 
3699
                {
 
3700
                        uint32_t _flags_save_string = ndr->flags;
 
3701
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
3702
                        NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_driver_name));
 
3703
                        if (_ptr_driver_name) {
 
3704
                                NDR_PULL_ALLOC(ndr, r->driver_name);
 
3705
                                NDR_CHECK(ndr_pull_relative_ptr1(ndr, r->driver_name, _ptr_driver_name));
 
3706
                        } else {
 
3707
                                r->driver_name = NULL;
 
3708
                        }
 
3709
                        ndr->flags = _flags_save_string;
 
3710
                }
 
3711
                {
 
3712
                        uint32_t _flags_save_spoolss_DeviceMode = ndr->flags;
 
3713
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_ALIGN4);
 
3714
                        NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_devmode));
 
3715
                        if (_ptr_devmode) {
 
3716
                                NDR_PULL_ALLOC(ndr, r->devmode);
 
3717
                                NDR_CHECK(ndr_pull_relative_ptr1(ndr, r->devmode, _ptr_devmode));
 
3718
                        } else {
 
3719
                                r->devmode = NULL;
 
3720
                        }
 
3721
                        ndr->flags = _flags_save_spoolss_DeviceMode;
 
3722
                }
 
3723
                {
 
3724
                        uint32_t _flags_save_string = ndr->flags;
 
3725
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
3726
                        NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_text_status));
 
3727
                        if (_ptr_text_status) {
 
3728
                                NDR_PULL_ALLOC(ndr, r->text_status);
 
3729
                                NDR_CHECK(ndr_pull_relative_ptr1(ndr, r->text_status, _ptr_text_status));
 
3730
                        } else {
 
3731
                                r->text_status = NULL;
 
3732
                        }
 
3733
                        ndr->flags = _flags_save_string;
 
3734
                }
 
3735
                {
 
3736
                        uint32_t _flags_save_spoolss_security_descriptor = ndr->flags;
 
3737
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_ALIGN4);
 
3738
                        NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_secdesc));
 
3739
                        if (_ptr_secdesc) {
 
3740
                                NDR_PULL_ALLOC(ndr, r->secdesc);
 
3741
                                NDR_CHECK(ndr_pull_relative_ptr1(ndr, r->secdesc, _ptr_secdesc));
 
3742
                        } else {
 
3743
                                r->secdesc = NULL;
 
3744
                        }
 
3745
                        ndr->flags = _flags_save_spoolss_security_descriptor;
 
3746
                }
 
3747
                NDR_CHECK(ndr_pull_spoolss_JobStatus(ndr, NDR_SCALARS, &r->status));
 
3748
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->priority));
 
3749
                if (r->priority > 99) {
 
3750
                        return ndr_pull_error(ndr, NDR_ERR_RANGE, "value out of range");
 
3751
                }
 
3752
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->position));
 
3753
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->start_time));
 
3754
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->until_time));
 
3755
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->total_pages));
 
3756
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->size));
 
3757
                NDR_CHECK(ndr_pull_spoolss_Time(ndr, NDR_SCALARS, &r->submitted));
 
3758
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->time));
 
3759
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->pages_printed));
 
3760
                NDR_CHECK(ndr_pull_trailer_align(ndr, 5));
 
3761
        }
 
3762
        if (ndr_flags & NDR_BUFFERS) {
 
3763
                {
 
3764
                        uint32_t _flags_save_string = ndr->flags;
 
3765
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
3766
                        if (r->printer_name) {
 
3767
                                uint32_t _relative_save_offset;
 
3768
                                _relative_save_offset = ndr->offset;
 
3769
                                NDR_CHECK(ndr_pull_relative_ptr2(ndr, r->printer_name));
 
3770
                                _mem_save_printer_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
3771
                                NDR_PULL_SET_MEM_CTX(ndr, r->printer_name, 0);
 
3772
                                NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->printer_name));
 
3773
                                NDR_PULL_SET_MEM_CTX(ndr, _mem_save_printer_name_0, 0);
 
3774
                                ndr->offset = _relative_save_offset;
 
3775
                        }
 
3776
                        ndr->flags = _flags_save_string;
 
3777
                }
 
3778
                {
 
3779
                        uint32_t _flags_save_string = ndr->flags;
 
3780
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
3781
                        if (r->server_name) {
 
3782
                                uint32_t _relative_save_offset;
 
3783
                                _relative_save_offset = ndr->offset;
 
3784
                                NDR_CHECK(ndr_pull_relative_ptr2(ndr, r->server_name));
 
3785
                                _mem_save_server_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
3786
                                NDR_PULL_SET_MEM_CTX(ndr, r->server_name, 0);
 
3787
                                NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->server_name));
 
3788
                                NDR_PULL_SET_MEM_CTX(ndr, _mem_save_server_name_0, 0);
 
3789
                                ndr->offset = _relative_save_offset;
 
3790
                        }
 
3791
                        ndr->flags = _flags_save_string;
 
3792
                }
 
3793
                {
 
3794
                        uint32_t _flags_save_string = ndr->flags;
 
3795
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
3796
                        if (r->user_name) {
 
3797
                                uint32_t _relative_save_offset;
 
3798
                                _relative_save_offset = ndr->offset;
 
3799
                                NDR_CHECK(ndr_pull_relative_ptr2(ndr, r->user_name));
 
3800
                                _mem_save_user_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
3801
                                NDR_PULL_SET_MEM_CTX(ndr, r->user_name, 0);
 
3802
                                NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->user_name));
 
3803
                                NDR_PULL_SET_MEM_CTX(ndr, _mem_save_user_name_0, 0);
 
3804
                                ndr->offset = _relative_save_offset;
 
3805
                        }
 
3806
                        ndr->flags = _flags_save_string;
 
3807
                }
 
3808
                {
 
3809
                        uint32_t _flags_save_string = ndr->flags;
 
3810
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
3811
                        if (r->document_name) {
 
3812
                                uint32_t _relative_save_offset;
 
3813
                                _relative_save_offset = ndr->offset;
 
3814
                                NDR_CHECK(ndr_pull_relative_ptr2(ndr, r->document_name));
 
3815
                                _mem_save_document_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
3816
                                NDR_PULL_SET_MEM_CTX(ndr, r->document_name, 0);
 
3817
                                NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->document_name));
 
3818
                                NDR_PULL_SET_MEM_CTX(ndr, _mem_save_document_name_0, 0);
 
3819
                                ndr->offset = _relative_save_offset;
 
3820
                        }
 
3821
                        ndr->flags = _flags_save_string;
 
3822
                }
 
3823
                {
 
3824
                        uint32_t _flags_save_string = ndr->flags;
 
3825
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
3826
                        if (r->notify_name) {
 
3827
                                uint32_t _relative_save_offset;
 
3828
                                _relative_save_offset = ndr->offset;
 
3829
                                NDR_CHECK(ndr_pull_relative_ptr2(ndr, r->notify_name));
 
3830
                                _mem_save_notify_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
3831
                                NDR_PULL_SET_MEM_CTX(ndr, r->notify_name, 0);
 
3832
                                NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->notify_name));
 
3833
                                NDR_PULL_SET_MEM_CTX(ndr, _mem_save_notify_name_0, 0);
 
3834
                                ndr->offset = _relative_save_offset;
 
3835
                        }
 
3836
                        ndr->flags = _flags_save_string;
 
3837
                }
 
3838
                {
 
3839
                        uint32_t _flags_save_string = ndr->flags;
 
3840
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
3841
                        if (r->data_type) {
 
3842
                                uint32_t _relative_save_offset;
 
3843
                                _relative_save_offset = ndr->offset;
 
3844
                                NDR_CHECK(ndr_pull_relative_ptr2(ndr, r->data_type));
 
3845
                                _mem_save_data_type_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
3846
                                NDR_PULL_SET_MEM_CTX(ndr, r->data_type, 0);
 
3847
                                NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->data_type));
 
3848
                                NDR_PULL_SET_MEM_CTX(ndr, _mem_save_data_type_0, 0);
 
3849
                                ndr->offset = _relative_save_offset;
 
3850
                        }
 
3851
                        ndr->flags = _flags_save_string;
 
3852
                }
 
3853
                {
 
3854
                        uint32_t _flags_save_string = ndr->flags;
 
3855
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
3856
                        if (r->print_processor) {
 
3857
                                uint32_t _relative_save_offset;
 
3858
                                _relative_save_offset = ndr->offset;
 
3859
                                NDR_CHECK(ndr_pull_relative_ptr2(ndr, r->print_processor));
 
3860
                                _mem_save_print_processor_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
3861
                                NDR_PULL_SET_MEM_CTX(ndr, r->print_processor, 0);
 
3862
                                NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->print_processor));
 
3863
                                NDR_PULL_SET_MEM_CTX(ndr, _mem_save_print_processor_0, 0);
 
3864
                                ndr->offset = _relative_save_offset;
 
3865
                        }
 
3866
                        ndr->flags = _flags_save_string;
 
3867
                }
 
3868
                {
 
3869
                        uint32_t _flags_save_string = ndr->flags;
 
3870
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
3871
                        if (r->parameters) {
 
3872
                                uint32_t _relative_save_offset;
 
3873
                                _relative_save_offset = ndr->offset;
 
3874
                                NDR_CHECK(ndr_pull_relative_ptr2(ndr, r->parameters));
 
3875
                                _mem_save_parameters_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
3876
                                NDR_PULL_SET_MEM_CTX(ndr, r->parameters, 0);
 
3877
                                NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->parameters));
 
3878
                                NDR_PULL_SET_MEM_CTX(ndr, _mem_save_parameters_0, 0);
 
3879
                                ndr->offset = _relative_save_offset;
 
3880
                        }
 
3881
                        ndr->flags = _flags_save_string;
 
3882
                }
 
3883
                {
 
3884
                        uint32_t _flags_save_string = ndr->flags;
 
3885
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
3886
                        if (r->driver_name) {
 
3887
                                uint32_t _relative_save_offset;
 
3888
                                _relative_save_offset = ndr->offset;
 
3889
                                NDR_CHECK(ndr_pull_relative_ptr2(ndr, r->driver_name));
 
3890
                                _mem_save_driver_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
3891
                                NDR_PULL_SET_MEM_CTX(ndr, r->driver_name, 0);
 
3892
                                NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->driver_name));
 
3893
                                NDR_PULL_SET_MEM_CTX(ndr, _mem_save_driver_name_0, 0);
 
3894
                                ndr->offset = _relative_save_offset;
 
3895
                        }
 
3896
                        ndr->flags = _flags_save_string;
 
3897
                }
 
3898
                {
 
3899
                        uint32_t _flags_save_spoolss_DeviceMode = ndr->flags;
 
3900
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_ALIGN4);
 
3901
                        if (r->devmode) {
 
3902
                                uint32_t _relative_save_offset;
 
3903
                                _relative_save_offset = ndr->offset;
 
3904
                                NDR_CHECK(ndr_pull_relative_ptr2(ndr, r->devmode));
 
3905
                                _mem_save_devmode_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
3906
                                NDR_PULL_SET_MEM_CTX(ndr, r->devmode, 0);
 
3907
                                {
 
3908
                                        struct ndr_pull *_ndr_devmode;
 
3909
                                        NDR_CHECK(ndr_pull_subcontext_start(ndr, &_ndr_devmode, 0, -1));
 
3910
                                        NDR_CHECK(ndr_pull_spoolss_DeviceMode(_ndr_devmode, NDR_SCALARS, r->devmode));
 
3911
                                        NDR_CHECK(ndr_pull_subcontext_end(ndr, _ndr_devmode, 0, -1));
 
3912
                                }
 
3913
                                NDR_PULL_SET_MEM_CTX(ndr, _mem_save_devmode_0, 0);
 
3914
                                ndr->offset = _relative_save_offset;
 
3915
                        }
 
3916
                        ndr->flags = _flags_save_spoolss_DeviceMode;
 
3917
                }
 
3918
                {
 
3919
                        uint32_t _flags_save_string = ndr->flags;
 
3920
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
3921
                        if (r->text_status) {
 
3922
                                uint32_t _relative_save_offset;
 
3923
                                _relative_save_offset = ndr->offset;
 
3924
                                NDR_CHECK(ndr_pull_relative_ptr2(ndr, r->text_status));
 
3925
                                _mem_save_text_status_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
3926
                                NDR_PULL_SET_MEM_CTX(ndr, r->text_status, 0);
 
3927
                                NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->text_status));
 
3928
                                NDR_PULL_SET_MEM_CTX(ndr, _mem_save_text_status_0, 0);
 
3929
                                ndr->offset = _relative_save_offset;
 
3930
                        }
 
3931
                        ndr->flags = _flags_save_string;
 
3932
                }
 
3933
                {
 
3934
                        uint32_t _flags_save_spoolss_security_descriptor = ndr->flags;
 
3935
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_ALIGN4);
 
3936
                        if (r->secdesc) {
 
3937
                                uint32_t _relative_save_offset;
 
3938
                                _relative_save_offset = ndr->offset;
 
3939
                                NDR_CHECK(ndr_pull_relative_ptr2(ndr, r->secdesc));
 
3940
                                _mem_save_secdesc_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
3941
                                NDR_PULL_SET_MEM_CTX(ndr, r->secdesc, 0);
 
3942
                                {
 
3943
                                        struct ndr_pull *_ndr_secdesc;
 
3944
                                        NDR_CHECK(ndr_pull_subcontext_start(ndr, &_ndr_secdesc, 0, -1));
 
3945
                                        NDR_CHECK(ndr_pull_spoolss_security_descriptor(_ndr_secdesc, NDR_SCALARS|NDR_BUFFERS, r->secdesc));
 
3946
                                        NDR_CHECK(ndr_pull_subcontext_end(ndr, _ndr_secdesc, 0, -1));
 
3947
                                }
 
3948
                                NDR_PULL_SET_MEM_CTX(ndr, _mem_save_secdesc_0, 0);
 
3949
                                ndr->offset = _relative_save_offset;
 
3950
                        }
 
3951
                        ndr->flags = _flags_save_spoolss_security_descriptor;
 
3952
                }
 
3953
        }
 
3954
        return NDR_ERR_SUCCESS;
 
3955
}
 
3956
 
 
3957
_PUBLIC_ void ndr_print_spoolss_JobInfo2(struct ndr_print *ndr, const char *name, const struct spoolss_JobInfo2 *r)
 
3958
{
 
3959
        ndr_print_struct(ndr, name, "spoolss_JobInfo2");
 
3960
        ndr->depth++;
 
3961
        ndr_print_uint32(ndr, "job_id", r->job_id);
 
3962
        ndr_print_ptr(ndr, "printer_name", r->printer_name);
 
3963
        ndr->depth++;
 
3964
        if (r->printer_name) {
 
3965
                ndr_print_string(ndr, "printer_name", r->printer_name);
 
3966
        }
 
3967
        ndr->depth--;
 
3968
        ndr_print_ptr(ndr, "server_name", r->server_name);
 
3969
        ndr->depth++;
 
3970
        if (r->server_name) {
 
3971
                ndr_print_string(ndr, "server_name", r->server_name);
 
3972
        }
 
3973
        ndr->depth--;
 
3974
        ndr_print_ptr(ndr, "user_name", r->user_name);
 
3975
        ndr->depth++;
 
3976
        if (r->user_name) {
 
3977
                ndr_print_string(ndr, "user_name", r->user_name);
 
3978
        }
 
3979
        ndr->depth--;
 
3980
        ndr_print_ptr(ndr, "document_name", r->document_name);
 
3981
        ndr->depth++;
 
3982
        if (r->document_name) {
 
3983
                ndr_print_string(ndr, "document_name", r->document_name);
 
3984
        }
 
3985
        ndr->depth--;
 
3986
        ndr_print_ptr(ndr, "notify_name", r->notify_name);
 
3987
        ndr->depth++;
 
3988
        if (r->notify_name) {
 
3989
                ndr_print_string(ndr, "notify_name", r->notify_name);
 
3990
        }
 
3991
        ndr->depth--;
 
3992
        ndr_print_ptr(ndr, "data_type", r->data_type);
 
3993
        ndr->depth++;
 
3994
        if (r->data_type) {
 
3995
                ndr_print_string(ndr, "data_type", r->data_type);
 
3996
        }
 
3997
        ndr->depth--;
 
3998
        ndr_print_ptr(ndr, "print_processor", r->print_processor);
 
3999
        ndr->depth++;
 
4000
        if (r->print_processor) {
 
4001
                ndr_print_string(ndr, "print_processor", r->print_processor);
 
4002
        }
 
4003
        ndr->depth--;
 
4004
        ndr_print_ptr(ndr, "parameters", r->parameters);
 
4005
        ndr->depth++;
 
4006
        if (r->parameters) {
 
4007
                ndr_print_string(ndr, "parameters", r->parameters);
 
4008
        }
 
4009
        ndr->depth--;
 
4010
        ndr_print_ptr(ndr, "driver_name", r->driver_name);
 
4011
        ndr->depth++;
 
4012
        if (r->driver_name) {
 
4013
                ndr_print_string(ndr, "driver_name", r->driver_name);
 
4014
        }
 
4015
        ndr->depth--;
 
4016
        ndr_print_ptr(ndr, "devmode", r->devmode);
 
4017
        ndr->depth++;
 
4018
        if (r->devmode) {
 
4019
                ndr_print_spoolss_DeviceMode(ndr, "devmode", r->devmode);
 
4020
        }
 
4021
        ndr->depth--;
 
4022
        ndr_print_ptr(ndr, "text_status", r->text_status);
 
4023
        ndr->depth++;
 
4024
        if (r->text_status) {
 
4025
                ndr_print_string(ndr, "text_status", r->text_status);
 
4026
        }
 
4027
        ndr->depth--;
 
4028
        ndr_print_ptr(ndr, "secdesc", r->secdesc);
 
4029
        ndr->depth++;
 
4030
        if (r->secdesc) {
 
4031
                ndr_print_spoolss_security_descriptor(ndr, "secdesc", r->secdesc);
 
4032
        }
 
4033
        ndr->depth--;
 
4034
        ndr_print_spoolss_JobStatus(ndr, "status", r->status);
 
4035
        ndr_print_uint32(ndr, "priority", r->priority);
 
4036
        ndr_print_uint32(ndr, "position", r->position);
 
4037
        ndr_print_uint32(ndr, "start_time", r->start_time);
 
4038
        ndr_print_uint32(ndr, "until_time", r->until_time);
 
4039
        ndr_print_uint32(ndr, "total_pages", r->total_pages);
 
4040
        ndr_print_uint32(ndr, "size", r->size);
 
4041
        ndr_print_spoolss_Time(ndr, "submitted", &r->submitted);
 
4042
        ndr_print_uint32(ndr, "time", r->time);
 
4043
        ndr_print_uint32(ndr, "pages_printed", r->pages_printed);
 
4044
        ndr->depth--;
 
4045
}
 
4046
 
 
4047
_PUBLIC_ size_t ndr_size_spoolss_JobInfo2(const struct spoolss_JobInfo2 *r, struct smb_iconv_convenience *ic, int flags)
 
4048
{
 
4049
        return ndr_size_struct(r, flags, (ndr_push_flags_fn_t)ndr_push_spoolss_JobInfo2, ic);
 
4050
}
 
4051
 
 
4052
_PUBLIC_ enum ndr_err_code ndr_push_spoolss_JobInfo3(struct ndr_push *ndr, int ndr_flags, const struct spoolss_JobInfo3 *r)
 
4053
{
 
4054
        if (ndr_flags & NDR_SCALARS) {
 
4055
                NDR_CHECK(ndr_push_align(ndr, 4));
 
4056
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->job_id));
 
4057
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->next_job_id));
 
4058
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->reserved));
 
4059
                NDR_CHECK(ndr_push_trailer_align(ndr, 4));
 
4060
        }
 
4061
        if (ndr_flags & NDR_BUFFERS) {
 
4062
        }
 
4063
        return NDR_ERR_SUCCESS;
 
4064
}
 
4065
 
 
4066
_PUBLIC_ enum ndr_err_code ndr_pull_spoolss_JobInfo3(struct ndr_pull *ndr, int ndr_flags, struct spoolss_JobInfo3 *r)
 
4067
{
 
4068
        if (ndr_flags & NDR_SCALARS) {
 
4069
                NDR_CHECK(ndr_pull_align(ndr, 4));
 
4070
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->job_id));
 
4071
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->next_job_id));
 
4072
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->reserved));
 
4073
                NDR_CHECK(ndr_pull_trailer_align(ndr, 4));
 
4074
        }
 
4075
        if (ndr_flags & NDR_BUFFERS) {
 
4076
        }
 
4077
        return NDR_ERR_SUCCESS;
 
4078
}
 
4079
 
 
4080
_PUBLIC_ void ndr_print_spoolss_JobInfo3(struct ndr_print *ndr, const char *name, const struct spoolss_JobInfo3 *r)
 
4081
{
 
4082
        ndr_print_struct(ndr, name, "spoolss_JobInfo3");
 
4083
        ndr->depth++;
 
4084
        ndr_print_uint32(ndr, "job_id", r->job_id);
 
4085
        ndr_print_uint32(ndr, "next_job_id", r->next_job_id);
 
4086
        ndr_print_uint32(ndr, "reserved", r->reserved);
 
4087
        ndr->depth--;
 
4088
}
 
4089
 
 
4090
_PUBLIC_ size_t ndr_size_spoolss_JobInfo3(const struct spoolss_JobInfo3 *r, struct smb_iconv_convenience *ic, int flags)
 
4091
{
 
4092
        return ndr_size_struct(r, flags, (ndr_push_flags_fn_t)ndr_push_spoolss_JobInfo3, ic);
 
4093
}
 
4094
 
 
4095
_PUBLIC_ enum ndr_err_code ndr_push_spoolss_JobInfo4(struct ndr_push *ndr, int ndr_flags, const struct spoolss_JobInfo4 *r)
 
4096
{
 
4097
        if (ndr_flags & NDR_SCALARS) {
 
4098
                NDR_CHECK(ndr_push_align(ndr, 5));
 
4099
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->job_id));
 
4100
                {
 
4101
                        uint32_t _flags_save_string = ndr->flags;
 
4102
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
4103
                        NDR_CHECK(ndr_push_relative_ptr1(ndr, r->printer_name));
 
4104
                        ndr->flags = _flags_save_string;
 
4105
                }
 
4106
                {
 
4107
                        uint32_t _flags_save_string = ndr->flags;
 
4108
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
4109
                        NDR_CHECK(ndr_push_relative_ptr1(ndr, r->server_name));
 
4110
                        ndr->flags = _flags_save_string;
 
4111
                }
 
4112
                {
 
4113
                        uint32_t _flags_save_string = ndr->flags;
 
4114
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
4115
                        NDR_CHECK(ndr_push_relative_ptr1(ndr, r->user_name));
 
4116
                        ndr->flags = _flags_save_string;
 
4117
                }
 
4118
                {
 
4119
                        uint32_t _flags_save_string = ndr->flags;
 
4120
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
4121
                        NDR_CHECK(ndr_push_relative_ptr1(ndr, r->document_name));
 
4122
                        ndr->flags = _flags_save_string;
 
4123
                }
 
4124
                {
 
4125
                        uint32_t _flags_save_string = ndr->flags;
 
4126
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
4127
                        NDR_CHECK(ndr_push_relative_ptr1(ndr, r->notify_name));
 
4128
                        ndr->flags = _flags_save_string;
 
4129
                }
 
4130
                {
 
4131
                        uint32_t _flags_save_string = ndr->flags;
 
4132
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
4133
                        NDR_CHECK(ndr_push_relative_ptr1(ndr, r->data_type));
 
4134
                        ndr->flags = _flags_save_string;
 
4135
                }
 
4136
                {
 
4137
                        uint32_t _flags_save_string = ndr->flags;
 
4138
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
4139
                        NDR_CHECK(ndr_push_relative_ptr1(ndr, r->print_processor));
 
4140
                        ndr->flags = _flags_save_string;
 
4141
                }
 
4142
                {
 
4143
                        uint32_t _flags_save_string = ndr->flags;
 
4144
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
4145
                        NDR_CHECK(ndr_push_relative_ptr1(ndr, r->parameters));
 
4146
                        ndr->flags = _flags_save_string;
 
4147
                }
 
4148
                {
 
4149
                        uint32_t _flags_save_string = ndr->flags;
 
4150
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
4151
                        NDR_CHECK(ndr_push_relative_ptr1(ndr, r->driver_name));
 
4152
                        ndr->flags = _flags_save_string;
 
4153
                }
 
4154
                {
 
4155
                        uint32_t _flags_save_spoolss_DeviceMode = ndr->flags;
 
4156
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_ALIGN4);
 
4157
                        NDR_CHECK(ndr_push_relative_ptr1(ndr, r->devmode));
 
4158
                        ndr->flags = _flags_save_spoolss_DeviceMode;
 
4159
                }
 
4160
                {
 
4161
                        uint32_t _flags_save_string = ndr->flags;
 
4162
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
4163
                        NDR_CHECK(ndr_push_relative_ptr1(ndr, r->text_status));
 
4164
                        ndr->flags = _flags_save_string;
 
4165
                }
 
4166
                {
 
4167
                        uint32_t _flags_save_spoolss_security_descriptor = ndr->flags;
 
4168
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_ALIGN4);
 
4169
                        NDR_CHECK(ndr_push_relative_ptr1(ndr, r->secdesc));
 
4170
                        ndr->flags = _flags_save_spoolss_security_descriptor;
 
4171
                }
 
4172
                NDR_CHECK(ndr_push_spoolss_JobStatus(ndr, NDR_SCALARS, r->status));
 
4173
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->priority));
 
4174
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->position));
 
4175
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->start_time));
 
4176
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->until_time));
 
4177
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->total_pages));
 
4178
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->size));
 
4179
                NDR_CHECK(ndr_push_spoolss_Time(ndr, NDR_SCALARS, &r->submitted));
 
4180
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->time));
 
4181
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->pages_printed));
 
4182
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->size_high));
 
4183
                NDR_CHECK(ndr_push_trailer_align(ndr, 5));
 
4184
        }
 
4185
        if (ndr_flags & NDR_BUFFERS) {
 
4186
                {
 
4187
                        uint32_t _flags_save_string = ndr->flags;
 
4188
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
4189
                        if (r->printer_name) {
 
4190
                                NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->printer_name));
 
4191
                                NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->printer_name));
 
4192
                                NDR_CHECK(ndr_push_relative_ptr2_end(ndr, r->printer_name));
 
4193
                        }
 
4194
                        ndr->flags = _flags_save_string;
 
4195
                }
 
4196
                {
 
4197
                        uint32_t _flags_save_string = ndr->flags;
 
4198
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
4199
                        if (r->server_name) {
 
4200
                                NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->server_name));
 
4201
                                NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->server_name));
 
4202
                                NDR_CHECK(ndr_push_relative_ptr2_end(ndr, r->server_name));
 
4203
                        }
 
4204
                        ndr->flags = _flags_save_string;
 
4205
                }
 
4206
                {
 
4207
                        uint32_t _flags_save_string = ndr->flags;
 
4208
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
4209
                        if (r->user_name) {
 
4210
                                NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->user_name));
 
4211
                                NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->user_name));
 
4212
                                NDR_CHECK(ndr_push_relative_ptr2_end(ndr, r->user_name));
 
4213
                        }
 
4214
                        ndr->flags = _flags_save_string;
 
4215
                }
 
4216
                {
 
4217
                        uint32_t _flags_save_string = ndr->flags;
 
4218
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
4219
                        if (r->document_name) {
 
4220
                                NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->document_name));
 
4221
                                NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->document_name));
 
4222
                                NDR_CHECK(ndr_push_relative_ptr2_end(ndr, r->document_name));
 
4223
                        }
 
4224
                        ndr->flags = _flags_save_string;
 
4225
                }
 
4226
                {
 
4227
                        uint32_t _flags_save_string = ndr->flags;
 
4228
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
4229
                        if (r->notify_name) {
 
4230
                                NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->notify_name));
 
4231
                                NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->notify_name));
 
4232
                                NDR_CHECK(ndr_push_relative_ptr2_end(ndr, r->notify_name));
 
4233
                        }
 
4234
                        ndr->flags = _flags_save_string;
 
4235
                }
 
4236
                {
 
4237
                        uint32_t _flags_save_string = ndr->flags;
 
4238
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
4239
                        if (r->data_type) {
 
4240
                                NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->data_type));
 
4241
                                NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->data_type));
 
4242
                                NDR_CHECK(ndr_push_relative_ptr2_end(ndr, r->data_type));
 
4243
                        }
 
4244
                        ndr->flags = _flags_save_string;
 
4245
                }
 
4246
                {
 
4247
                        uint32_t _flags_save_string = ndr->flags;
 
4248
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
4249
                        if (r->print_processor) {
 
4250
                                NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->print_processor));
 
4251
                                NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->print_processor));
 
4252
                                NDR_CHECK(ndr_push_relative_ptr2_end(ndr, r->print_processor));
 
4253
                        }
 
4254
                        ndr->flags = _flags_save_string;
 
4255
                }
 
4256
                {
 
4257
                        uint32_t _flags_save_string = ndr->flags;
 
4258
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
4259
                        if (r->parameters) {
 
4260
                                NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->parameters));
 
4261
                                NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->parameters));
 
4262
                                NDR_CHECK(ndr_push_relative_ptr2_end(ndr, r->parameters));
 
4263
                        }
 
4264
                        ndr->flags = _flags_save_string;
 
4265
                }
 
4266
                {
 
4267
                        uint32_t _flags_save_string = ndr->flags;
 
4268
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
4269
                        if (r->driver_name) {
 
4270
                                NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->driver_name));
 
4271
                                NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->driver_name));
 
4272
                                NDR_CHECK(ndr_push_relative_ptr2_end(ndr, r->driver_name));
 
4273
                        }
 
4274
                        ndr->flags = _flags_save_string;
 
4275
                }
 
4276
                {
 
4277
                        uint32_t _flags_save_spoolss_DeviceMode = ndr->flags;
 
4278
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_ALIGN4);
 
4279
                        if (r->devmode) {
 
4280
                                NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->devmode));
 
4281
                                {
 
4282
                                        struct ndr_push *_ndr_devmode;
 
4283
                                        NDR_CHECK(ndr_push_subcontext_start(ndr, &_ndr_devmode, 0, -1));
 
4284
                                        NDR_CHECK(ndr_push_spoolss_DeviceMode(_ndr_devmode, NDR_SCALARS, r->devmode));
 
4285
                                        NDR_CHECK(ndr_push_subcontext_end(ndr, _ndr_devmode, 0, -1));
 
4286
                                }
 
4287
                                NDR_CHECK(ndr_push_relative_ptr2_end(ndr, r->devmode));
 
4288
                        }
 
4289
                        ndr->flags = _flags_save_spoolss_DeviceMode;
 
4290
                }
 
4291
                {
 
4292
                        uint32_t _flags_save_string = ndr->flags;
 
4293
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
4294
                        if (r->text_status) {
 
4295
                                NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->text_status));
 
4296
                                NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->text_status));
 
4297
                                NDR_CHECK(ndr_push_relative_ptr2_end(ndr, r->text_status));
 
4298
                        }
 
4299
                        ndr->flags = _flags_save_string;
 
4300
                }
 
4301
                {
 
4302
                        uint32_t _flags_save_spoolss_security_descriptor = ndr->flags;
 
4303
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_ALIGN4);
 
4304
                        if (r->secdesc) {
 
4305
                                NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->secdesc));
 
4306
                                {
 
4307
                                        struct ndr_push *_ndr_secdesc;
 
4308
                                        NDR_CHECK(ndr_push_subcontext_start(ndr, &_ndr_secdesc, 0, -1));
 
4309
                                        NDR_CHECK(ndr_push_spoolss_security_descriptor(_ndr_secdesc, NDR_SCALARS|NDR_BUFFERS, r->secdesc));
 
4310
                                        NDR_CHECK(ndr_push_subcontext_end(ndr, _ndr_secdesc, 0, -1));
 
4311
                                }
 
4312
                                NDR_CHECK(ndr_push_relative_ptr2_end(ndr, r->secdesc));
 
4313
                        }
 
4314
                        ndr->flags = _flags_save_spoolss_security_descriptor;
 
4315
                }
 
4316
        }
 
4317
        return NDR_ERR_SUCCESS;
 
4318
}
 
4319
 
 
4320
_PUBLIC_ enum ndr_err_code ndr_pull_spoolss_JobInfo4(struct ndr_pull *ndr, int ndr_flags, struct spoolss_JobInfo4 *r)
 
4321
{
 
4322
        uint32_t _ptr_printer_name;
 
4323
        TALLOC_CTX *_mem_save_printer_name_0;
 
4324
        uint32_t _ptr_server_name;
 
4325
        TALLOC_CTX *_mem_save_server_name_0;
 
4326
        uint32_t _ptr_user_name;
 
4327
        TALLOC_CTX *_mem_save_user_name_0;
 
4328
        uint32_t _ptr_document_name;
 
4329
        TALLOC_CTX *_mem_save_document_name_0;
 
4330
        uint32_t _ptr_notify_name;
 
4331
        TALLOC_CTX *_mem_save_notify_name_0;
 
4332
        uint32_t _ptr_data_type;
 
4333
        TALLOC_CTX *_mem_save_data_type_0;
 
4334
        uint32_t _ptr_print_processor;
 
4335
        TALLOC_CTX *_mem_save_print_processor_0;
 
4336
        uint32_t _ptr_parameters;
 
4337
        TALLOC_CTX *_mem_save_parameters_0;
 
4338
        uint32_t _ptr_driver_name;
 
4339
        TALLOC_CTX *_mem_save_driver_name_0;
 
4340
        uint32_t _ptr_devmode;
 
4341
        TALLOC_CTX *_mem_save_devmode_0;
 
4342
        uint32_t _ptr_text_status;
 
4343
        TALLOC_CTX *_mem_save_text_status_0;
 
4344
        uint32_t _ptr_secdesc;
 
4345
        TALLOC_CTX *_mem_save_secdesc_0;
 
4346
        if (ndr_flags & NDR_SCALARS) {
 
4347
                NDR_CHECK(ndr_pull_align(ndr, 5));
 
4348
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->job_id));
 
4349
                {
 
4350
                        uint32_t _flags_save_string = ndr->flags;
 
4351
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
4352
                        NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_printer_name));
 
4353
                        if (_ptr_printer_name) {
 
4354
                                NDR_PULL_ALLOC(ndr, r->printer_name);
 
4355
                                NDR_CHECK(ndr_pull_relative_ptr1(ndr, r->printer_name, _ptr_printer_name));
 
4356
                        } else {
 
4357
                                r->printer_name = NULL;
 
4358
                        }
 
4359
                        ndr->flags = _flags_save_string;
 
4360
                }
 
4361
                {
 
4362
                        uint32_t _flags_save_string = ndr->flags;
 
4363
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
4364
                        NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_server_name));
 
4365
                        if (_ptr_server_name) {
 
4366
                                NDR_PULL_ALLOC(ndr, r->server_name);
 
4367
                                NDR_CHECK(ndr_pull_relative_ptr1(ndr, r->server_name, _ptr_server_name));
 
4368
                        } else {
 
4369
                                r->server_name = NULL;
 
4370
                        }
 
4371
                        ndr->flags = _flags_save_string;
 
4372
                }
 
4373
                {
 
4374
                        uint32_t _flags_save_string = ndr->flags;
 
4375
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
4376
                        NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_user_name));
 
4377
                        if (_ptr_user_name) {
 
4378
                                NDR_PULL_ALLOC(ndr, r->user_name);
 
4379
                                NDR_CHECK(ndr_pull_relative_ptr1(ndr, r->user_name, _ptr_user_name));
 
4380
                        } else {
 
4381
                                r->user_name = NULL;
 
4382
                        }
 
4383
                        ndr->flags = _flags_save_string;
 
4384
                }
 
4385
                {
 
4386
                        uint32_t _flags_save_string = ndr->flags;
 
4387
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
4388
                        NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_document_name));
 
4389
                        if (_ptr_document_name) {
 
4390
                                NDR_PULL_ALLOC(ndr, r->document_name);
 
4391
                                NDR_CHECK(ndr_pull_relative_ptr1(ndr, r->document_name, _ptr_document_name));
 
4392
                        } else {
 
4393
                                r->document_name = NULL;
 
4394
                        }
 
4395
                        ndr->flags = _flags_save_string;
 
4396
                }
 
4397
                {
 
4398
                        uint32_t _flags_save_string = ndr->flags;
 
4399
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
4400
                        NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_notify_name));
 
4401
                        if (_ptr_notify_name) {
 
4402
                                NDR_PULL_ALLOC(ndr, r->notify_name);
 
4403
                                NDR_CHECK(ndr_pull_relative_ptr1(ndr, r->notify_name, _ptr_notify_name));
 
4404
                        } else {
 
4405
                                r->notify_name = NULL;
 
4406
                        }
 
4407
                        ndr->flags = _flags_save_string;
 
4408
                }
 
4409
                {
 
4410
                        uint32_t _flags_save_string = ndr->flags;
 
4411
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
4412
                        NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_data_type));
 
4413
                        if (_ptr_data_type) {
 
4414
                                NDR_PULL_ALLOC(ndr, r->data_type);
 
4415
                                NDR_CHECK(ndr_pull_relative_ptr1(ndr, r->data_type, _ptr_data_type));
 
4416
                        } else {
 
4417
                                r->data_type = NULL;
 
4418
                        }
 
4419
                        ndr->flags = _flags_save_string;
 
4420
                }
 
4421
                {
 
4422
                        uint32_t _flags_save_string = ndr->flags;
 
4423
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
4424
                        NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_print_processor));
 
4425
                        if (_ptr_print_processor) {
 
4426
                                NDR_PULL_ALLOC(ndr, r->print_processor);
 
4427
                                NDR_CHECK(ndr_pull_relative_ptr1(ndr, r->print_processor, _ptr_print_processor));
 
4428
                        } else {
 
4429
                                r->print_processor = NULL;
 
4430
                        }
 
4431
                        ndr->flags = _flags_save_string;
 
4432
                }
 
4433
                {
 
4434
                        uint32_t _flags_save_string = ndr->flags;
 
4435
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
4436
                        NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_parameters));
 
4437
                        if (_ptr_parameters) {
 
4438
                                NDR_PULL_ALLOC(ndr, r->parameters);
 
4439
                                NDR_CHECK(ndr_pull_relative_ptr1(ndr, r->parameters, _ptr_parameters));
 
4440
                        } else {
 
4441
                                r->parameters = NULL;
 
4442
                        }
 
4443
                        ndr->flags = _flags_save_string;
 
4444
                }
 
4445
                {
 
4446
                        uint32_t _flags_save_string = ndr->flags;
 
4447
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
4448
                        NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_driver_name));
 
4449
                        if (_ptr_driver_name) {
 
4450
                                NDR_PULL_ALLOC(ndr, r->driver_name);
 
4451
                                NDR_CHECK(ndr_pull_relative_ptr1(ndr, r->driver_name, _ptr_driver_name));
 
4452
                        } else {
 
4453
                                r->driver_name = NULL;
 
4454
                        }
 
4455
                        ndr->flags = _flags_save_string;
 
4456
                }
 
4457
                {
 
4458
                        uint32_t _flags_save_spoolss_DeviceMode = ndr->flags;
 
4459
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_ALIGN4);
 
4460
                        NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_devmode));
 
4461
                        if (_ptr_devmode) {
 
4462
                                NDR_PULL_ALLOC(ndr, r->devmode);
 
4463
                                NDR_CHECK(ndr_pull_relative_ptr1(ndr, r->devmode, _ptr_devmode));
 
4464
                        } else {
 
4465
                                r->devmode = NULL;
 
4466
                        }
 
4467
                        ndr->flags = _flags_save_spoolss_DeviceMode;
 
4468
                }
 
4469
                {
 
4470
                        uint32_t _flags_save_string = ndr->flags;
 
4471
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
4472
                        NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_text_status));
 
4473
                        if (_ptr_text_status) {
 
4474
                                NDR_PULL_ALLOC(ndr, r->text_status);
 
4475
                                NDR_CHECK(ndr_pull_relative_ptr1(ndr, r->text_status, _ptr_text_status));
 
4476
                        } else {
 
4477
                                r->text_status = NULL;
 
4478
                        }
 
4479
                        ndr->flags = _flags_save_string;
 
4480
                }
 
4481
                {
 
4482
                        uint32_t _flags_save_spoolss_security_descriptor = ndr->flags;
 
4483
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_ALIGN4);
 
4484
                        NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_secdesc));
 
4485
                        if (_ptr_secdesc) {
 
4486
                                NDR_PULL_ALLOC(ndr, r->secdesc);
 
4487
                                NDR_CHECK(ndr_pull_relative_ptr1(ndr, r->secdesc, _ptr_secdesc));
 
4488
                        } else {
 
4489
                                r->secdesc = NULL;
 
4490
                        }
 
4491
                        ndr->flags = _flags_save_spoolss_security_descriptor;
 
4492
                }
 
4493
                NDR_CHECK(ndr_pull_spoolss_JobStatus(ndr, NDR_SCALARS, &r->status));
 
4494
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->priority));
 
4495
                if (r->priority > 99) {
 
4496
                        return ndr_pull_error(ndr, NDR_ERR_RANGE, "value out of range");
 
4497
                }
 
4498
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->position));
 
4499
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->start_time));
 
4500
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->until_time));
 
4501
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->total_pages));
 
4502
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->size));
 
4503
                NDR_CHECK(ndr_pull_spoolss_Time(ndr, NDR_SCALARS, &r->submitted));
 
4504
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->time));
 
4505
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->pages_printed));
 
4506
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->size_high));
 
4507
                NDR_CHECK(ndr_pull_trailer_align(ndr, 5));
 
4508
        }
 
4509
        if (ndr_flags & NDR_BUFFERS) {
 
4510
                {
 
4511
                        uint32_t _flags_save_string = ndr->flags;
 
4512
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
4513
                        if (r->printer_name) {
 
4514
                                uint32_t _relative_save_offset;
 
4515
                                _relative_save_offset = ndr->offset;
 
4516
                                NDR_CHECK(ndr_pull_relative_ptr2(ndr, r->printer_name));
 
4517
                                _mem_save_printer_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
4518
                                NDR_PULL_SET_MEM_CTX(ndr, r->printer_name, 0);
 
4519
                                NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->printer_name));
 
4520
                                NDR_PULL_SET_MEM_CTX(ndr, _mem_save_printer_name_0, 0);
 
4521
                                ndr->offset = _relative_save_offset;
 
4522
                        }
 
4523
                        ndr->flags = _flags_save_string;
 
4524
                }
 
4525
                {
 
4526
                        uint32_t _flags_save_string = ndr->flags;
 
4527
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
4528
                        if (r->server_name) {
 
4529
                                uint32_t _relative_save_offset;
 
4530
                                _relative_save_offset = ndr->offset;
 
4531
                                NDR_CHECK(ndr_pull_relative_ptr2(ndr, r->server_name));
 
4532
                                _mem_save_server_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
4533
                                NDR_PULL_SET_MEM_CTX(ndr, r->server_name, 0);
 
4534
                                NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->server_name));
 
4535
                                NDR_PULL_SET_MEM_CTX(ndr, _mem_save_server_name_0, 0);
 
4536
                                ndr->offset = _relative_save_offset;
 
4537
                        }
 
4538
                        ndr->flags = _flags_save_string;
 
4539
                }
 
4540
                {
 
4541
                        uint32_t _flags_save_string = ndr->flags;
 
4542
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
4543
                        if (r->user_name) {
 
4544
                                uint32_t _relative_save_offset;
 
4545
                                _relative_save_offset = ndr->offset;
 
4546
                                NDR_CHECK(ndr_pull_relative_ptr2(ndr, r->user_name));
 
4547
                                _mem_save_user_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
4548
                                NDR_PULL_SET_MEM_CTX(ndr, r->user_name, 0);
 
4549
                                NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->user_name));
 
4550
                                NDR_PULL_SET_MEM_CTX(ndr, _mem_save_user_name_0, 0);
 
4551
                                ndr->offset = _relative_save_offset;
 
4552
                        }
 
4553
                        ndr->flags = _flags_save_string;
 
4554
                }
 
4555
                {
 
4556
                        uint32_t _flags_save_string = ndr->flags;
 
4557
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
4558
                        if (r->document_name) {
 
4559
                                uint32_t _relative_save_offset;
 
4560
                                _relative_save_offset = ndr->offset;
 
4561
                                NDR_CHECK(ndr_pull_relative_ptr2(ndr, r->document_name));
 
4562
                                _mem_save_document_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
4563
                                NDR_PULL_SET_MEM_CTX(ndr, r->document_name, 0);
 
4564
                                NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->document_name));
 
4565
                                NDR_PULL_SET_MEM_CTX(ndr, _mem_save_document_name_0, 0);
 
4566
                                ndr->offset = _relative_save_offset;
 
4567
                        }
 
4568
                        ndr->flags = _flags_save_string;
 
4569
                }
 
4570
                {
 
4571
                        uint32_t _flags_save_string = ndr->flags;
 
4572
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
4573
                        if (r->notify_name) {
 
4574
                                uint32_t _relative_save_offset;
 
4575
                                _relative_save_offset = ndr->offset;
 
4576
                                NDR_CHECK(ndr_pull_relative_ptr2(ndr, r->notify_name));
 
4577
                                _mem_save_notify_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
4578
                                NDR_PULL_SET_MEM_CTX(ndr, r->notify_name, 0);
 
4579
                                NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->notify_name));
 
4580
                                NDR_PULL_SET_MEM_CTX(ndr, _mem_save_notify_name_0, 0);
 
4581
                                ndr->offset = _relative_save_offset;
 
4582
                        }
 
4583
                        ndr->flags = _flags_save_string;
 
4584
                }
 
4585
                {
 
4586
                        uint32_t _flags_save_string = ndr->flags;
 
4587
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
4588
                        if (r->data_type) {
 
4589
                                uint32_t _relative_save_offset;
 
4590
                                _relative_save_offset = ndr->offset;
 
4591
                                NDR_CHECK(ndr_pull_relative_ptr2(ndr, r->data_type));
 
4592
                                _mem_save_data_type_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
4593
                                NDR_PULL_SET_MEM_CTX(ndr, r->data_type, 0);
 
4594
                                NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->data_type));
 
4595
                                NDR_PULL_SET_MEM_CTX(ndr, _mem_save_data_type_0, 0);
 
4596
                                ndr->offset = _relative_save_offset;
 
4597
                        }
 
4598
                        ndr->flags = _flags_save_string;
 
4599
                }
 
4600
                {
 
4601
                        uint32_t _flags_save_string = ndr->flags;
 
4602
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
4603
                        if (r->print_processor) {
 
4604
                                uint32_t _relative_save_offset;
 
4605
                                _relative_save_offset = ndr->offset;
 
4606
                                NDR_CHECK(ndr_pull_relative_ptr2(ndr, r->print_processor));
 
4607
                                _mem_save_print_processor_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
4608
                                NDR_PULL_SET_MEM_CTX(ndr, r->print_processor, 0);
 
4609
                                NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->print_processor));
 
4610
                                NDR_PULL_SET_MEM_CTX(ndr, _mem_save_print_processor_0, 0);
 
4611
                                ndr->offset = _relative_save_offset;
 
4612
                        }
 
4613
                        ndr->flags = _flags_save_string;
 
4614
                }
 
4615
                {
 
4616
                        uint32_t _flags_save_string = ndr->flags;
 
4617
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
4618
                        if (r->parameters) {
 
4619
                                uint32_t _relative_save_offset;
 
4620
                                _relative_save_offset = ndr->offset;
 
4621
                                NDR_CHECK(ndr_pull_relative_ptr2(ndr, r->parameters));
 
4622
                                _mem_save_parameters_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
4623
                                NDR_PULL_SET_MEM_CTX(ndr, r->parameters, 0);
 
4624
                                NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->parameters));
 
4625
                                NDR_PULL_SET_MEM_CTX(ndr, _mem_save_parameters_0, 0);
 
4626
                                ndr->offset = _relative_save_offset;
 
4627
                        }
 
4628
                        ndr->flags = _flags_save_string;
 
4629
                }
 
4630
                {
 
4631
                        uint32_t _flags_save_string = ndr->flags;
 
4632
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
4633
                        if (r->driver_name) {
 
4634
                                uint32_t _relative_save_offset;
 
4635
                                _relative_save_offset = ndr->offset;
 
4636
                                NDR_CHECK(ndr_pull_relative_ptr2(ndr, r->driver_name));
 
4637
                                _mem_save_driver_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
4638
                                NDR_PULL_SET_MEM_CTX(ndr, r->driver_name, 0);
 
4639
                                NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->driver_name));
 
4640
                                NDR_PULL_SET_MEM_CTX(ndr, _mem_save_driver_name_0, 0);
 
4641
                                ndr->offset = _relative_save_offset;
 
4642
                        }
 
4643
                        ndr->flags = _flags_save_string;
 
4644
                }
 
4645
                {
 
4646
                        uint32_t _flags_save_spoolss_DeviceMode = ndr->flags;
 
4647
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_ALIGN4);
 
4648
                        if (r->devmode) {
 
4649
                                uint32_t _relative_save_offset;
 
4650
                                _relative_save_offset = ndr->offset;
 
4651
                                NDR_CHECK(ndr_pull_relative_ptr2(ndr, r->devmode));
 
4652
                                _mem_save_devmode_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
4653
                                NDR_PULL_SET_MEM_CTX(ndr, r->devmode, 0);
 
4654
                                {
 
4655
                                        struct ndr_pull *_ndr_devmode;
 
4656
                                        NDR_CHECK(ndr_pull_subcontext_start(ndr, &_ndr_devmode, 0, -1));
 
4657
                                        NDR_CHECK(ndr_pull_spoolss_DeviceMode(_ndr_devmode, NDR_SCALARS, r->devmode));
 
4658
                                        NDR_CHECK(ndr_pull_subcontext_end(ndr, _ndr_devmode, 0, -1));
 
4659
                                }
 
4660
                                NDR_PULL_SET_MEM_CTX(ndr, _mem_save_devmode_0, 0);
 
4661
                                ndr->offset = _relative_save_offset;
 
4662
                        }
 
4663
                        ndr->flags = _flags_save_spoolss_DeviceMode;
 
4664
                }
 
4665
                {
 
4666
                        uint32_t _flags_save_string = ndr->flags;
 
4667
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
4668
                        if (r->text_status) {
 
4669
                                uint32_t _relative_save_offset;
 
4670
                                _relative_save_offset = ndr->offset;
 
4671
                                NDR_CHECK(ndr_pull_relative_ptr2(ndr, r->text_status));
 
4672
                                _mem_save_text_status_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
4673
                                NDR_PULL_SET_MEM_CTX(ndr, r->text_status, 0);
 
4674
                                NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->text_status));
 
4675
                                NDR_PULL_SET_MEM_CTX(ndr, _mem_save_text_status_0, 0);
 
4676
                                ndr->offset = _relative_save_offset;
 
4677
                        }
 
4678
                        ndr->flags = _flags_save_string;
 
4679
                }
 
4680
                {
 
4681
                        uint32_t _flags_save_spoolss_security_descriptor = ndr->flags;
 
4682
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_ALIGN4);
 
4683
                        if (r->secdesc) {
 
4684
                                uint32_t _relative_save_offset;
 
4685
                                _relative_save_offset = ndr->offset;
 
4686
                                NDR_CHECK(ndr_pull_relative_ptr2(ndr, r->secdesc));
 
4687
                                _mem_save_secdesc_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
4688
                                NDR_PULL_SET_MEM_CTX(ndr, r->secdesc, 0);
 
4689
                                {
 
4690
                                        struct ndr_pull *_ndr_secdesc;
 
4691
                                        NDR_CHECK(ndr_pull_subcontext_start(ndr, &_ndr_secdesc, 0, -1));
 
4692
                                        NDR_CHECK(ndr_pull_spoolss_security_descriptor(_ndr_secdesc, NDR_SCALARS|NDR_BUFFERS, r->secdesc));
 
4693
                                        NDR_CHECK(ndr_pull_subcontext_end(ndr, _ndr_secdesc, 0, -1));
 
4694
                                }
 
4695
                                NDR_PULL_SET_MEM_CTX(ndr, _mem_save_secdesc_0, 0);
 
4696
                                ndr->offset = _relative_save_offset;
 
4697
                        }
 
4698
                        ndr->flags = _flags_save_spoolss_security_descriptor;
 
4699
                }
 
4700
        }
 
4701
        return NDR_ERR_SUCCESS;
 
4702
}
 
4703
 
 
4704
_PUBLIC_ void ndr_print_spoolss_JobInfo4(struct ndr_print *ndr, const char *name, const struct spoolss_JobInfo4 *r)
 
4705
{
 
4706
        ndr_print_struct(ndr, name, "spoolss_JobInfo4");
 
4707
        ndr->depth++;
 
4708
        ndr_print_uint32(ndr, "job_id", r->job_id);
 
4709
        ndr_print_ptr(ndr, "printer_name", r->printer_name);
 
4710
        ndr->depth++;
 
4711
        if (r->printer_name) {
 
4712
                ndr_print_string(ndr, "printer_name", r->printer_name);
 
4713
        }
 
4714
        ndr->depth--;
 
4715
        ndr_print_ptr(ndr, "server_name", r->server_name);
 
4716
        ndr->depth++;
 
4717
        if (r->server_name) {
 
4718
                ndr_print_string(ndr, "server_name", r->server_name);
 
4719
        }
 
4720
        ndr->depth--;
 
4721
        ndr_print_ptr(ndr, "user_name", r->user_name);
 
4722
        ndr->depth++;
 
4723
        if (r->user_name) {
 
4724
                ndr_print_string(ndr, "user_name", r->user_name);
 
4725
        }
 
4726
        ndr->depth--;
 
4727
        ndr_print_ptr(ndr, "document_name", r->document_name);
 
4728
        ndr->depth++;
 
4729
        if (r->document_name) {
 
4730
                ndr_print_string(ndr, "document_name", r->document_name);
 
4731
        }
 
4732
        ndr->depth--;
 
4733
        ndr_print_ptr(ndr, "notify_name", r->notify_name);
 
4734
        ndr->depth++;
 
4735
        if (r->notify_name) {
 
4736
                ndr_print_string(ndr, "notify_name", r->notify_name);
 
4737
        }
 
4738
        ndr->depth--;
 
4739
        ndr_print_ptr(ndr, "data_type", r->data_type);
 
4740
        ndr->depth++;
 
4741
        if (r->data_type) {
 
4742
                ndr_print_string(ndr, "data_type", r->data_type);
 
4743
        }
 
4744
        ndr->depth--;
 
4745
        ndr_print_ptr(ndr, "print_processor", r->print_processor);
 
4746
        ndr->depth++;
 
4747
        if (r->print_processor) {
 
4748
                ndr_print_string(ndr, "print_processor", r->print_processor);
 
4749
        }
 
4750
        ndr->depth--;
 
4751
        ndr_print_ptr(ndr, "parameters", r->parameters);
 
4752
        ndr->depth++;
 
4753
        if (r->parameters) {
 
4754
                ndr_print_string(ndr, "parameters", r->parameters);
 
4755
        }
 
4756
        ndr->depth--;
 
4757
        ndr_print_ptr(ndr, "driver_name", r->driver_name);
 
4758
        ndr->depth++;
 
4759
        if (r->driver_name) {
 
4760
                ndr_print_string(ndr, "driver_name", r->driver_name);
 
4761
        }
 
4762
        ndr->depth--;
 
4763
        ndr_print_ptr(ndr, "devmode", r->devmode);
 
4764
        ndr->depth++;
 
4765
        if (r->devmode) {
 
4766
                ndr_print_spoolss_DeviceMode(ndr, "devmode", r->devmode);
 
4767
        }
 
4768
        ndr->depth--;
 
4769
        ndr_print_ptr(ndr, "text_status", r->text_status);
 
4770
        ndr->depth++;
 
4771
        if (r->text_status) {
 
4772
                ndr_print_string(ndr, "text_status", r->text_status);
 
4773
        }
 
4774
        ndr->depth--;
 
4775
        ndr_print_ptr(ndr, "secdesc", r->secdesc);
 
4776
        ndr->depth++;
 
4777
        if (r->secdesc) {
 
4778
                ndr_print_spoolss_security_descriptor(ndr, "secdesc", r->secdesc);
 
4779
        }
 
4780
        ndr->depth--;
 
4781
        ndr_print_spoolss_JobStatus(ndr, "status", r->status);
 
4782
        ndr_print_uint32(ndr, "priority", r->priority);
 
4783
        ndr_print_uint32(ndr, "position", r->position);
 
4784
        ndr_print_uint32(ndr, "start_time", r->start_time);
 
4785
        ndr_print_uint32(ndr, "until_time", r->until_time);
 
4786
        ndr_print_uint32(ndr, "total_pages", r->total_pages);
 
4787
        ndr_print_uint32(ndr, "size", r->size);
 
4788
        ndr_print_spoolss_Time(ndr, "submitted", &r->submitted);
 
4789
        ndr_print_uint32(ndr, "time", r->time);
 
4790
        ndr_print_uint32(ndr, "pages_printed", r->pages_printed);
 
4791
        ndr_print_uint32(ndr, "size_high", r->size_high);
 
4792
        ndr->depth--;
 
4793
}
 
4794
 
 
4795
_PUBLIC_ size_t ndr_size_spoolss_JobInfo4(const struct spoolss_JobInfo4 *r, struct smb_iconv_convenience *ic, int flags)
 
4796
{
 
4797
        return ndr_size_struct(r, flags, (ndr_push_flags_fn_t)ndr_push_spoolss_JobInfo4, ic);
 
4798
}
 
4799
 
 
4800
_PUBLIC_ enum ndr_err_code ndr_push_spoolss_JobInfo(struct ndr_push *ndr, int ndr_flags, const union spoolss_JobInfo *r)
 
4801
{
 
4802
        uint32_t _save_relative_base_offset = ndr_push_get_relative_base_offset(ndr);
 
4803
        {
 
4804
                uint32_t _flags_save_UNION = ndr->flags;
 
4805
                ndr_set_flags(&ndr->flags, LIBNDR_FLAG_RELATIVE_REVERSE);
 
4806
                if (ndr_flags & NDR_SCALARS) {
 
4807
                        int level = ndr_push_get_switch_value(ndr, r);
 
4808
                        NDR_CHECK(ndr_push_union_align(ndr, 5));
 
4809
                        switch (level) {
 
4810
                                case 1: {
 
4811
                                        NDR_CHECK(ndr_push_align(ndr, 5));
 
4812
                                        NDR_CHECK(ndr_push_setup_relative_base_offset1(ndr, r, ndr->offset));
 
4813
                                        NDR_CHECK(ndr_push_spoolss_JobInfo1(ndr, NDR_SCALARS, &r->info1));
 
4814
                                break; }
 
4815
 
 
4816
                                case 2: {
 
4817
                                        NDR_CHECK(ndr_push_align(ndr, 5));
 
4818
                                        NDR_CHECK(ndr_push_setup_relative_base_offset1(ndr, r, ndr->offset));
 
4819
                                        NDR_CHECK(ndr_push_spoolss_JobInfo2(ndr, NDR_SCALARS, &r->info2));
 
4820
                                break; }
 
4821
 
 
4822
                                case 3: {
 
4823
                                        NDR_CHECK(ndr_push_align(ndr, 4));
 
4824
                                        NDR_CHECK(ndr_push_setup_relative_base_offset1(ndr, r, ndr->offset));
 
4825
                                        NDR_CHECK(ndr_push_spoolss_JobInfo3(ndr, NDR_SCALARS, &r->info3));
 
4826
                                break; }
 
4827
 
 
4828
                                case 4: {
 
4829
                                        NDR_CHECK(ndr_push_align(ndr, 5));
 
4830
                                        NDR_CHECK(ndr_push_setup_relative_base_offset1(ndr, r, ndr->offset));
 
4831
                                        NDR_CHECK(ndr_push_spoolss_JobInfo4(ndr, NDR_SCALARS, &r->info4));
 
4832
                                break; }
 
4833
 
 
4834
                                default: {
 
4835
                                break; }
 
4836
 
 
4837
                        }
 
4838
                }
 
4839
                if (ndr_flags & NDR_BUFFERS) {
 
4840
                        int level = ndr_push_get_switch_value(ndr, r);
 
4841
                        NDR_CHECK(ndr_push_setup_relative_base_offset2(ndr, r));
 
4842
                        switch (level) {
 
4843
                                case 1:
 
4844
                                        NDR_CHECK(ndr_push_spoolss_JobInfo1(ndr, NDR_BUFFERS, &r->info1));
 
4845
                                break;
 
4846
 
 
4847
                                case 2:
 
4848
                                        NDR_CHECK(ndr_push_spoolss_JobInfo2(ndr, NDR_BUFFERS, &r->info2));
 
4849
                                break;
 
4850
 
 
4851
                                case 3:
 
4852
                                break;
 
4853
 
 
4854
                                case 4:
 
4855
                                        NDR_CHECK(ndr_push_spoolss_JobInfo4(ndr, NDR_BUFFERS, &r->info4));
 
4856
                                break;
 
4857
 
 
4858
                                default:
 
4859
                                break;
 
4860
 
 
4861
                        }
 
4862
                }
 
4863
                ndr->flags = _flags_save_UNION;
 
4864
        }
 
4865
        ndr_push_restore_relative_base_offset(ndr, _save_relative_base_offset);
 
4866
        return NDR_ERR_SUCCESS;
 
4867
}
 
4868
 
 
4869
_PUBLIC_ enum ndr_err_code ndr_pull_spoolss_JobInfo(struct ndr_pull *ndr, int ndr_flags, union spoolss_JobInfo *r)
 
4870
{
 
4871
        uint32_t _save_relative_base_offset = ndr_pull_get_relative_base_offset(ndr);
 
4872
        int level;
 
4873
        {
 
4874
                uint32_t _flags_save_UNION = ndr->flags;
 
4875
                ndr_set_flags(&ndr->flags, LIBNDR_FLAG_RELATIVE_REVERSE);
 
4876
                level = ndr_pull_get_switch_value(ndr, r);
 
4877
                if (ndr_flags & NDR_SCALARS) {
 
4878
                        NDR_CHECK(ndr_pull_union_align(ndr, 5));
 
4879
                        switch (level) {
 
4880
                                case 1: {
 
4881
                                        NDR_CHECK(ndr_pull_align(ndr, 5));
 
4882
                                        NDR_CHECK(ndr_pull_setup_relative_base_offset1(ndr, r, ndr->offset));
 
4883
                                        NDR_CHECK(ndr_pull_spoolss_JobInfo1(ndr, NDR_SCALARS, &r->info1));
 
4884
                                break; }
 
4885
 
 
4886
                                case 2: {
 
4887
                                        NDR_CHECK(ndr_pull_align(ndr, 5));
 
4888
                                        NDR_CHECK(ndr_pull_setup_relative_base_offset1(ndr, r, ndr->offset));
 
4889
                                        NDR_CHECK(ndr_pull_spoolss_JobInfo2(ndr, NDR_SCALARS, &r->info2));
 
4890
                                break; }
 
4891
 
 
4892
                                case 3: {
 
4893
                                        NDR_CHECK(ndr_pull_align(ndr, 4));
 
4894
                                        NDR_CHECK(ndr_pull_setup_relative_base_offset1(ndr, r, ndr->offset));
 
4895
                                        NDR_CHECK(ndr_pull_spoolss_JobInfo3(ndr, NDR_SCALARS, &r->info3));
 
4896
                                break; }
 
4897
 
 
4898
                                case 4: {
 
4899
                                        NDR_CHECK(ndr_pull_align(ndr, 5));
 
4900
                                        NDR_CHECK(ndr_pull_setup_relative_base_offset1(ndr, r, ndr->offset));
 
4901
                                        NDR_CHECK(ndr_pull_spoolss_JobInfo4(ndr, NDR_SCALARS, &r->info4));
 
4902
                                break; }
 
4903
 
 
4904
                                default: {
 
4905
                                break; }
 
4906
 
 
4907
                        }
 
4908
                }
 
4909
                if (ndr_flags & NDR_BUFFERS) {
 
4910
                        NDR_CHECK(ndr_pull_setup_relative_base_offset2(ndr, r));
 
4911
                        switch (level) {
 
4912
                                case 1:
 
4913
                                        NDR_CHECK(ndr_pull_spoolss_JobInfo1(ndr, NDR_BUFFERS, &r->info1));
 
4914
                                break;
 
4915
 
 
4916
                                case 2:
 
4917
                                        NDR_CHECK(ndr_pull_spoolss_JobInfo2(ndr, NDR_BUFFERS, &r->info2));
 
4918
                                break;
 
4919
 
 
4920
                                case 3:
 
4921
                                break;
 
4922
 
 
4923
                                case 4:
 
4924
                                        NDR_CHECK(ndr_pull_spoolss_JobInfo4(ndr, NDR_BUFFERS, &r->info4));
 
4925
                                break;
 
4926
 
 
4927
                                default:
 
4928
                                break;
 
4929
 
 
4930
                        }
 
4931
                }
 
4932
                ndr->flags = _flags_save_UNION;
 
4933
        }
 
4934
        ndr_pull_restore_relative_base_offset(ndr, _save_relative_base_offset);
 
4935
        return NDR_ERR_SUCCESS;
 
4936
}
 
4937
 
 
4938
_PUBLIC_ void ndr_print_spoolss_JobInfo(struct ndr_print *ndr, const char *name, const union spoolss_JobInfo *r)
 
4939
{
 
4940
        int level;
 
4941
        {
 
4942
                uint32_t _flags_save_UNION = ndr->flags;
 
4943
                ndr_set_flags(&ndr->flags, LIBNDR_FLAG_RELATIVE_REVERSE);
 
4944
                level = ndr_print_get_switch_value(ndr, r);
 
4945
                ndr_print_union(ndr, name, level, "spoolss_JobInfo");
 
4946
                switch (level) {
 
4947
                        case 1:
 
4948
                                ndr_print_spoolss_JobInfo1(ndr, "info1", &r->info1);
 
4949
                        break;
 
4950
 
 
4951
                        case 2:
 
4952
                                ndr_print_spoolss_JobInfo2(ndr, "info2", &r->info2);
 
4953
                        break;
 
4954
 
 
4955
                        case 3:
 
4956
                                ndr_print_spoolss_JobInfo3(ndr, "info3", &r->info3);
 
4957
                        break;
 
4958
 
 
4959
                        case 4:
 
4960
                                ndr_print_spoolss_JobInfo4(ndr, "info4", &r->info4);
 
4961
                        break;
 
4962
 
 
4963
                        default:
 
4964
                        break;
 
4965
 
 
4966
                }
 
4967
                ndr->flags = _flags_save_UNION;
 
4968
        }
 
4969
}
 
4970
 
 
4971
_PUBLIC_ size_t ndr_size_spoolss_JobInfo(const union spoolss_JobInfo *r, uint32_t level, struct smb_iconv_convenience *ic, int flags)
 
4972
{
 
4973
        flags |= LIBNDR_FLAG_RELATIVE_REVERSE;
 
4974
        return ndr_size_union(r, flags, level, (ndr_push_flags_fn_t)ndr_push_spoolss_JobInfo, ic);
 
4975
}
 
4976
 
 
4977
static enum ndr_err_code ndr_push_spoolss_SetJobInfo1(struct ndr_push *ndr, int ndr_flags, const struct spoolss_SetJobInfo1 *r)
 
4978
{
 
4979
        if (ndr_flags & NDR_SCALARS) {
 
4980
                NDR_CHECK(ndr_push_align(ndr, 5));
 
4981
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->job_id));
 
4982
                NDR_CHECK(ndr_push_unique_ptr(ndr, r->printer_name));
 
4983
                NDR_CHECK(ndr_push_unique_ptr(ndr, r->server_name));
 
4984
                NDR_CHECK(ndr_push_unique_ptr(ndr, r->user_name));
 
4985
                NDR_CHECK(ndr_push_unique_ptr(ndr, r->document_name));
 
4986
                NDR_CHECK(ndr_push_unique_ptr(ndr, r->data_type));
 
4987
                NDR_CHECK(ndr_push_unique_ptr(ndr, r->text_status));
 
4988
                NDR_CHECK(ndr_push_spoolss_JobStatus(ndr, NDR_SCALARS, r->status));
 
4989
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->priority));
 
4990
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->position));
 
4991
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->total_pages));
 
4992
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->pages_printed));
 
4993
                NDR_CHECK(ndr_push_spoolss_Time(ndr, NDR_SCALARS, &r->submitted));
 
4994
                NDR_CHECK(ndr_push_trailer_align(ndr, 5));
 
4995
        }
 
4996
        if (ndr_flags & NDR_BUFFERS) {
 
4997
                if (r->printer_name) {
 
4998
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->printer_name, CH_UTF16)));
 
4999
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0));
 
5000
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->printer_name, CH_UTF16)));
 
5001
                        NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->printer_name, ndr_charset_length(r->printer_name, CH_UTF16), sizeof(uint16_t), CH_UTF16));
 
5002
                }
 
5003
                if (r->server_name) {
 
5004
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->server_name, CH_UTF16)));
 
5005
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0));
 
5006
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->server_name, CH_UTF16)));
 
5007
                        NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->server_name, ndr_charset_length(r->server_name, CH_UTF16), sizeof(uint16_t), CH_UTF16));
 
5008
                }
 
5009
                if (r->user_name) {
 
5010
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->user_name, CH_UTF16)));
 
5011
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0));
 
5012
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->user_name, CH_UTF16)));
 
5013
                        NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->user_name, ndr_charset_length(r->user_name, CH_UTF16), sizeof(uint16_t), CH_UTF16));
 
5014
                }
 
5015
                if (r->document_name) {
 
5016
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->document_name, CH_UTF16)));
 
5017
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0));
 
5018
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->document_name, CH_UTF16)));
 
5019
                        NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->document_name, ndr_charset_length(r->document_name, CH_UTF16), sizeof(uint16_t), CH_UTF16));
 
5020
                }
 
5021
                if (r->data_type) {
 
5022
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->data_type, CH_UTF16)));
 
5023
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0));
 
5024
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->data_type, CH_UTF16)));
 
5025
                        NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->data_type, ndr_charset_length(r->data_type, CH_UTF16), sizeof(uint16_t), CH_UTF16));
 
5026
                }
 
5027
                if (r->text_status) {
 
5028
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->text_status, CH_UTF16)));
 
5029
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0));
 
5030
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->text_status, CH_UTF16)));
 
5031
                        NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->text_status, ndr_charset_length(r->text_status, CH_UTF16), sizeof(uint16_t), CH_UTF16));
 
5032
                }
 
5033
        }
 
5034
        return NDR_ERR_SUCCESS;
 
5035
}
 
5036
 
 
5037
static enum ndr_err_code ndr_pull_spoolss_SetJobInfo1(struct ndr_pull *ndr, int ndr_flags, struct spoolss_SetJobInfo1 *r)
 
5038
{
 
5039
        uint32_t _ptr_printer_name;
 
5040
        TALLOC_CTX *_mem_save_printer_name_0;
 
5041
        uint32_t _ptr_server_name;
 
5042
        TALLOC_CTX *_mem_save_server_name_0;
 
5043
        uint32_t _ptr_user_name;
 
5044
        TALLOC_CTX *_mem_save_user_name_0;
 
5045
        uint32_t _ptr_document_name;
 
5046
        TALLOC_CTX *_mem_save_document_name_0;
 
5047
        uint32_t _ptr_data_type;
 
5048
        TALLOC_CTX *_mem_save_data_type_0;
 
5049
        uint32_t _ptr_text_status;
 
5050
        TALLOC_CTX *_mem_save_text_status_0;
 
5051
        if (ndr_flags & NDR_SCALARS) {
 
5052
                NDR_CHECK(ndr_pull_align(ndr, 5));
 
5053
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->job_id));
 
5054
                NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_printer_name));
 
5055
                if (_ptr_printer_name) {
 
5056
                        NDR_PULL_ALLOC(ndr, r->printer_name);
 
5057
                } else {
 
5058
                        r->printer_name = NULL;
 
5059
                }
 
5060
                NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_server_name));
 
5061
                if (_ptr_server_name) {
 
5062
                        NDR_PULL_ALLOC(ndr, r->server_name);
 
5063
                } else {
 
5064
                        r->server_name = NULL;
 
5065
                }
 
5066
                NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_user_name));
 
5067
                if (_ptr_user_name) {
 
5068
                        NDR_PULL_ALLOC(ndr, r->user_name);
 
5069
                } else {
 
5070
                        r->user_name = NULL;
 
5071
                }
 
5072
                NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_document_name));
 
5073
                if (_ptr_document_name) {
 
5074
                        NDR_PULL_ALLOC(ndr, r->document_name);
 
5075
                } else {
 
5076
                        r->document_name = NULL;
 
5077
                }
 
5078
                NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_data_type));
 
5079
                if (_ptr_data_type) {
 
5080
                        NDR_PULL_ALLOC(ndr, r->data_type);
 
5081
                } else {
 
5082
                        r->data_type = NULL;
 
5083
                }
 
5084
                NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_text_status));
 
5085
                if (_ptr_text_status) {
 
5086
                        NDR_PULL_ALLOC(ndr, r->text_status);
 
5087
                } else {
 
5088
                        r->text_status = NULL;
 
5089
                }
 
5090
                NDR_CHECK(ndr_pull_spoolss_JobStatus(ndr, NDR_SCALARS, &r->status));
 
5091
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->priority));
 
5092
                if (r->priority > 99) {
 
5093
                        return ndr_pull_error(ndr, NDR_ERR_RANGE, "value out of range");
 
5094
                }
 
5095
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->position));
 
5096
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->total_pages));
 
5097
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->pages_printed));
 
5098
                NDR_CHECK(ndr_pull_spoolss_Time(ndr, NDR_SCALARS, &r->submitted));
 
5099
                NDR_CHECK(ndr_pull_trailer_align(ndr, 5));
 
5100
        }
 
5101
        if (ndr_flags & NDR_BUFFERS) {
 
5102
                if (r->printer_name) {
 
5103
                        _mem_save_printer_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
5104
                        NDR_PULL_SET_MEM_CTX(ndr, r->printer_name, 0);
 
5105
                        NDR_CHECK(ndr_pull_array_size(ndr, &r->printer_name));
 
5106
                        NDR_CHECK(ndr_pull_array_length(ndr, &r->printer_name));
 
5107
                        if (ndr_get_array_length(ndr, &r->printer_name) > ndr_get_array_size(ndr, &r->printer_name)) {
 
5108
                                return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->printer_name), ndr_get_array_length(ndr, &r->printer_name));
 
5109
                        }
 
5110
                        NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->printer_name), sizeof(uint16_t)));
 
5111
                        NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->printer_name, ndr_get_array_length(ndr, &r->printer_name), sizeof(uint16_t), CH_UTF16));
 
5112
                        NDR_PULL_SET_MEM_CTX(ndr, _mem_save_printer_name_0, 0);
 
5113
                }
 
5114
                if (r->server_name) {
 
5115
                        _mem_save_server_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
5116
                        NDR_PULL_SET_MEM_CTX(ndr, r->server_name, 0);
 
5117
                        NDR_CHECK(ndr_pull_array_size(ndr, &r->server_name));
 
5118
                        NDR_CHECK(ndr_pull_array_length(ndr, &r->server_name));
 
5119
                        if (ndr_get_array_length(ndr, &r->server_name) > ndr_get_array_size(ndr, &r->server_name)) {
 
5120
                                return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->server_name), ndr_get_array_length(ndr, &r->server_name));
 
5121
                        }
 
5122
                        NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->server_name), sizeof(uint16_t)));
 
5123
                        NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->server_name, ndr_get_array_length(ndr, &r->server_name), sizeof(uint16_t), CH_UTF16));
 
5124
                        NDR_PULL_SET_MEM_CTX(ndr, _mem_save_server_name_0, 0);
 
5125
                }
 
5126
                if (r->user_name) {
 
5127
                        _mem_save_user_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
5128
                        NDR_PULL_SET_MEM_CTX(ndr, r->user_name, 0);
 
5129
                        NDR_CHECK(ndr_pull_array_size(ndr, &r->user_name));
 
5130
                        NDR_CHECK(ndr_pull_array_length(ndr, &r->user_name));
 
5131
                        if (ndr_get_array_length(ndr, &r->user_name) > ndr_get_array_size(ndr, &r->user_name)) {
 
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->user_name), ndr_get_array_length(ndr, &r->user_name));
 
5133
                        }
 
5134
                        NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->user_name), sizeof(uint16_t)));
 
5135
                        NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->user_name, ndr_get_array_length(ndr, &r->user_name), sizeof(uint16_t), CH_UTF16));
 
5136
                        NDR_PULL_SET_MEM_CTX(ndr, _mem_save_user_name_0, 0);
 
5137
                }
 
5138
                if (r->document_name) {
 
5139
                        _mem_save_document_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
5140
                        NDR_PULL_SET_MEM_CTX(ndr, r->document_name, 0);
 
5141
                        NDR_CHECK(ndr_pull_array_size(ndr, &r->document_name));
 
5142
                        NDR_CHECK(ndr_pull_array_length(ndr, &r->document_name));
 
5143
                        if (ndr_get_array_length(ndr, &r->document_name) > ndr_get_array_size(ndr, &r->document_name)) {
 
5144
                                return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->document_name), ndr_get_array_length(ndr, &r->document_name));
 
5145
                        }
 
5146
                        NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->document_name), sizeof(uint16_t)));
 
5147
                        NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->document_name, ndr_get_array_length(ndr, &r->document_name), sizeof(uint16_t), CH_UTF16));
 
5148
                        NDR_PULL_SET_MEM_CTX(ndr, _mem_save_document_name_0, 0);
 
5149
                }
 
5150
                if (r->data_type) {
 
5151
                        _mem_save_data_type_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
5152
                        NDR_PULL_SET_MEM_CTX(ndr, r->data_type, 0);
 
5153
                        NDR_CHECK(ndr_pull_array_size(ndr, &r->data_type));
 
5154
                        NDR_CHECK(ndr_pull_array_length(ndr, &r->data_type));
 
5155
                        if (ndr_get_array_length(ndr, &r->data_type) > ndr_get_array_size(ndr, &r->data_type)) {
 
5156
                                return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->data_type), ndr_get_array_length(ndr, &r->data_type));
 
5157
                        }
 
5158
                        NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->data_type), sizeof(uint16_t)));
 
5159
                        NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->data_type, ndr_get_array_length(ndr, &r->data_type), sizeof(uint16_t), CH_UTF16));
 
5160
                        NDR_PULL_SET_MEM_CTX(ndr, _mem_save_data_type_0, 0);
 
5161
                }
 
5162
                if (r->text_status) {
 
5163
                        _mem_save_text_status_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
5164
                        NDR_PULL_SET_MEM_CTX(ndr, r->text_status, 0);
 
5165
                        NDR_CHECK(ndr_pull_array_size(ndr, &r->text_status));
 
5166
                        NDR_CHECK(ndr_pull_array_length(ndr, &r->text_status));
 
5167
                        if (ndr_get_array_length(ndr, &r->text_status) > ndr_get_array_size(ndr, &r->text_status)) {
 
5168
                                return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->text_status), ndr_get_array_length(ndr, &r->text_status));
 
5169
                        }
 
5170
                        NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->text_status), sizeof(uint16_t)));
 
5171
                        NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->text_status, ndr_get_array_length(ndr, &r->text_status), sizeof(uint16_t), CH_UTF16));
 
5172
                        NDR_PULL_SET_MEM_CTX(ndr, _mem_save_text_status_0, 0);
 
5173
                }
 
5174
        }
 
5175
        return NDR_ERR_SUCCESS;
 
5176
}
 
5177
 
 
5178
_PUBLIC_ void ndr_print_spoolss_SetJobInfo1(struct ndr_print *ndr, const char *name, const struct spoolss_SetJobInfo1 *r)
 
5179
{
 
5180
        ndr_print_struct(ndr, name, "spoolss_SetJobInfo1");
 
5181
        ndr->depth++;
 
5182
        ndr_print_uint32(ndr, "job_id", r->job_id);
 
5183
        ndr_print_ptr(ndr, "printer_name", r->printer_name);
 
5184
        ndr->depth++;
 
5185
        if (r->printer_name) {
 
5186
                ndr_print_string(ndr, "printer_name", r->printer_name);
 
5187
        }
 
5188
        ndr->depth--;
 
5189
        ndr_print_ptr(ndr, "server_name", r->server_name);
 
5190
        ndr->depth++;
 
5191
        if (r->server_name) {
 
5192
                ndr_print_string(ndr, "server_name", r->server_name);
 
5193
        }
 
5194
        ndr->depth--;
 
5195
        ndr_print_ptr(ndr, "user_name", r->user_name);
 
5196
        ndr->depth++;
 
5197
        if (r->user_name) {
 
5198
                ndr_print_string(ndr, "user_name", r->user_name);
 
5199
        }
 
5200
        ndr->depth--;
 
5201
        ndr_print_ptr(ndr, "document_name", r->document_name);
 
5202
        ndr->depth++;
 
5203
        if (r->document_name) {
 
5204
                ndr_print_string(ndr, "document_name", r->document_name);
 
5205
        }
 
5206
        ndr->depth--;
 
5207
        ndr_print_ptr(ndr, "data_type", r->data_type);
 
5208
        ndr->depth++;
 
5209
        if (r->data_type) {
 
5210
                ndr_print_string(ndr, "data_type", r->data_type);
 
5211
        }
 
5212
        ndr->depth--;
 
5213
        ndr_print_ptr(ndr, "text_status", r->text_status);
 
5214
        ndr->depth++;
 
5215
        if (r->text_status) {
 
5216
                ndr_print_string(ndr, "text_status", r->text_status);
 
5217
        }
 
5218
        ndr->depth--;
 
5219
        ndr_print_spoolss_JobStatus(ndr, "status", r->status);
 
5220
        ndr_print_uint32(ndr, "priority", r->priority);
 
5221
        ndr_print_uint32(ndr, "position", r->position);
 
5222
        ndr_print_uint32(ndr, "total_pages", r->total_pages);
 
5223
        ndr_print_uint32(ndr, "pages_printed", r->pages_printed);
 
5224
        ndr_print_spoolss_Time(ndr, "submitted", &r->submitted);
 
5225
        ndr->depth--;
 
5226
}
 
5227
 
 
5228
static enum ndr_err_code ndr_push_spoolss_SetJobInfo2(struct ndr_push *ndr, int ndr_flags, const struct spoolss_SetJobInfo2 *r)
 
5229
{
 
5230
        if (ndr_flags & NDR_SCALARS) {
 
5231
                NDR_CHECK(ndr_push_align(ndr, 5));
 
5232
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->job_id));
 
5233
                NDR_CHECK(ndr_push_unique_ptr(ndr, r->printer_name));
 
5234
                NDR_CHECK(ndr_push_unique_ptr(ndr, r->server_name));
 
5235
                NDR_CHECK(ndr_push_unique_ptr(ndr, r->user_name));
 
5236
                NDR_CHECK(ndr_push_unique_ptr(ndr, r->document_name));
 
5237
                NDR_CHECK(ndr_push_unique_ptr(ndr, r->notify_name));
 
5238
                NDR_CHECK(ndr_push_unique_ptr(ndr, r->data_type));
 
5239
                NDR_CHECK(ndr_push_unique_ptr(ndr, r->print_processor));
 
5240
                NDR_CHECK(ndr_push_unique_ptr(ndr, r->parameters));
 
5241
                NDR_CHECK(ndr_push_unique_ptr(ndr, r->driver_name));
 
5242
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->_devmode_ptr));
 
5243
                NDR_CHECK(ndr_push_unique_ptr(ndr, r->text_status));
 
5244
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->_secdesc_ptr));
 
5245
                NDR_CHECK(ndr_push_spoolss_JobStatus(ndr, NDR_SCALARS, r->status));
 
5246
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->priority));
 
5247
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->position));
 
5248
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->start_time));
 
5249
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->until_time));
 
5250
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->total_pages));
 
5251
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->size));
 
5252
                NDR_CHECK(ndr_push_spoolss_Time(ndr, NDR_SCALARS, &r->submitted));
 
5253
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->time));
 
5254
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->pages_printed));
 
5255
                NDR_CHECK(ndr_push_trailer_align(ndr, 5));
 
5256
        }
 
5257
        if (ndr_flags & NDR_BUFFERS) {
 
5258
                if (r->printer_name) {
 
5259
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->printer_name, CH_UTF16)));
 
5260
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0));
 
5261
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->printer_name, CH_UTF16)));
 
5262
                        NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->printer_name, ndr_charset_length(r->printer_name, CH_UTF16), sizeof(uint16_t), CH_UTF16));
 
5263
                }
 
5264
                if (r->server_name) {
 
5265
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->server_name, CH_UTF16)));
 
5266
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0));
 
5267
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->server_name, CH_UTF16)));
 
5268
                        NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->server_name, ndr_charset_length(r->server_name, CH_UTF16), sizeof(uint16_t), CH_UTF16));
 
5269
                }
 
5270
                if (r->user_name) {
 
5271
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->user_name, CH_UTF16)));
 
5272
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0));
 
5273
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->user_name, CH_UTF16)));
 
5274
                        NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->user_name, ndr_charset_length(r->user_name, CH_UTF16), sizeof(uint16_t), CH_UTF16));
 
5275
                }
 
5276
                if (r->document_name) {
 
5277
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->document_name, CH_UTF16)));
 
5278
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0));
 
5279
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->document_name, CH_UTF16)));
 
5280
                        NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->document_name, ndr_charset_length(r->document_name, CH_UTF16), sizeof(uint16_t), CH_UTF16));
 
5281
                }
 
5282
                if (r->notify_name) {
 
5283
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->notify_name, CH_UTF16)));
 
5284
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0));
 
5285
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->notify_name, CH_UTF16)));
 
5286
                        NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->notify_name, ndr_charset_length(r->notify_name, CH_UTF16), sizeof(uint16_t), CH_UTF16));
 
5287
                }
 
5288
                if (r->data_type) {
 
5289
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->data_type, CH_UTF16)));
 
5290
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0));
 
5291
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->data_type, CH_UTF16)));
 
5292
                        NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->data_type, ndr_charset_length(r->data_type, CH_UTF16), sizeof(uint16_t), CH_UTF16));
 
5293
                }
 
5294
                if (r->print_processor) {
 
5295
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->print_processor, CH_UTF16)));
 
5296
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0));
 
5297
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->print_processor, CH_UTF16)));
 
5298
                        NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->print_processor, ndr_charset_length(r->print_processor, CH_UTF16), sizeof(uint16_t), CH_UTF16));
 
5299
                }
 
5300
                if (r->parameters) {
 
5301
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->parameters, CH_UTF16)));
 
5302
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0));
 
5303
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->parameters, CH_UTF16)));
 
5304
                        NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->parameters, ndr_charset_length(r->parameters, CH_UTF16), sizeof(uint16_t), CH_UTF16));
 
5305
                }
 
5306
                if (r->driver_name) {
 
5307
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->driver_name, CH_UTF16)));
 
5308
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0));
 
5309
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->driver_name, CH_UTF16)));
 
5310
                        NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->driver_name, ndr_charset_length(r->driver_name, CH_UTF16), sizeof(uint16_t), CH_UTF16));
 
5311
                }
 
5312
                if (r->text_status) {
 
5313
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->text_status, CH_UTF16)));
 
5314
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0));
 
5315
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->text_status, CH_UTF16)));
 
5316
                        NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->text_status, ndr_charset_length(r->text_status, CH_UTF16), sizeof(uint16_t), CH_UTF16));
 
5317
                }
 
5318
        }
 
5319
        return NDR_ERR_SUCCESS;
 
5320
}
 
5321
 
 
5322
static enum ndr_err_code ndr_pull_spoolss_SetJobInfo2(struct ndr_pull *ndr, int ndr_flags, struct spoolss_SetJobInfo2 *r)
 
5323
{
 
5324
        uint32_t _ptr_printer_name;
 
5325
        TALLOC_CTX *_mem_save_printer_name_0;
 
5326
        uint32_t _ptr_server_name;
 
5327
        TALLOC_CTX *_mem_save_server_name_0;
 
5328
        uint32_t _ptr_user_name;
 
5329
        TALLOC_CTX *_mem_save_user_name_0;
 
5330
        uint32_t _ptr_document_name;
 
5331
        TALLOC_CTX *_mem_save_document_name_0;
 
5332
        uint32_t _ptr_notify_name;
 
5333
        TALLOC_CTX *_mem_save_notify_name_0;
 
5334
        uint32_t _ptr_data_type;
 
5335
        TALLOC_CTX *_mem_save_data_type_0;
 
5336
        uint32_t _ptr_print_processor;
 
5337
        TALLOC_CTX *_mem_save_print_processor_0;
 
5338
        uint32_t _ptr_parameters;
 
5339
        TALLOC_CTX *_mem_save_parameters_0;
 
5340
        uint32_t _ptr_driver_name;
 
5341
        TALLOC_CTX *_mem_save_driver_name_0;
 
5342
        uint32_t _ptr_text_status;
 
5343
        TALLOC_CTX *_mem_save_text_status_0;
 
5344
        if (ndr_flags & NDR_SCALARS) {
 
5345
                NDR_CHECK(ndr_pull_align(ndr, 5));
 
5346
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->job_id));
 
5347
                NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_printer_name));
 
5348
                if (_ptr_printer_name) {
 
5349
                        NDR_PULL_ALLOC(ndr, r->printer_name);
 
5350
                } else {
 
5351
                        r->printer_name = NULL;
 
5352
                }
 
5353
                NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_server_name));
 
5354
                if (_ptr_server_name) {
 
5355
                        NDR_PULL_ALLOC(ndr, r->server_name);
 
5356
                } else {
 
5357
                        r->server_name = NULL;
 
5358
                }
 
5359
                NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_user_name));
 
5360
                if (_ptr_user_name) {
 
5361
                        NDR_PULL_ALLOC(ndr, r->user_name);
 
5362
                } else {
 
5363
                        r->user_name = NULL;
 
5364
                }
 
5365
                NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_document_name));
 
5366
                if (_ptr_document_name) {
 
5367
                        NDR_PULL_ALLOC(ndr, r->document_name);
 
5368
                } else {
 
5369
                        r->document_name = NULL;
 
5370
                }
 
5371
                NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_notify_name));
 
5372
                if (_ptr_notify_name) {
 
5373
                        NDR_PULL_ALLOC(ndr, r->notify_name);
 
5374
                } else {
 
5375
                        r->notify_name = NULL;
 
5376
                }
 
5377
                NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_data_type));
 
5378
                if (_ptr_data_type) {
 
5379
                        NDR_PULL_ALLOC(ndr, r->data_type);
 
5380
                } else {
 
5381
                        r->data_type = NULL;
 
5382
                }
 
5383
                NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_print_processor));
 
5384
                if (_ptr_print_processor) {
 
5385
                        NDR_PULL_ALLOC(ndr, r->print_processor);
 
5386
                } else {
 
5387
                        r->print_processor = NULL;
 
5388
                }
 
5389
                NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_parameters));
 
5390
                if (_ptr_parameters) {
 
5391
                        NDR_PULL_ALLOC(ndr, r->parameters);
 
5392
                } else {
 
5393
                        r->parameters = NULL;
 
5394
                }
 
5395
                NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_driver_name));
 
5396
                if (_ptr_driver_name) {
 
5397
                        NDR_PULL_ALLOC(ndr, r->driver_name);
 
5398
                } else {
 
5399
                        r->driver_name = NULL;
 
5400
                }
 
5401
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->_devmode_ptr));
 
5402
                NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_text_status));
 
5403
                if (_ptr_text_status) {
 
5404
                        NDR_PULL_ALLOC(ndr, r->text_status);
 
5405
                } else {
 
5406
                        r->text_status = NULL;
 
5407
                }
 
5408
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->_secdesc_ptr));
 
5409
                NDR_CHECK(ndr_pull_spoolss_JobStatus(ndr, NDR_SCALARS, &r->status));
 
5410
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->priority));
 
5411
                if (r->priority > 99) {
 
5412
                        return ndr_pull_error(ndr, NDR_ERR_RANGE, "value out of range");
 
5413
                }
 
5414
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->position));
 
5415
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->start_time));
 
5416
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->until_time));
 
5417
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->total_pages));
 
5418
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->size));
 
5419
                NDR_CHECK(ndr_pull_spoolss_Time(ndr, NDR_SCALARS, &r->submitted));
 
5420
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->time));
 
5421
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->pages_printed));
 
5422
                NDR_CHECK(ndr_pull_trailer_align(ndr, 5));
 
5423
        }
 
5424
        if (ndr_flags & NDR_BUFFERS) {
 
5425
                if (r->printer_name) {
 
5426
                        _mem_save_printer_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
5427
                        NDR_PULL_SET_MEM_CTX(ndr, r->printer_name, 0);
 
5428
                        NDR_CHECK(ndr_pull_array_size(ndr, &r->printer_name));
 
5429
                        NDR_CHECK(ndr_pull_array_length(ndr, &r->printer_name));
 
5430
                        if (ndr_get_array_length(ndr, &r->printer_name) > ndr_get_array_size(ndr, &r->printer_name)) {
 
5431
                                return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->printer_name), ndr_get_array_length(ndr, &r->printer_name));
 
5432
                        }
 
5433
                        NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->printer_name), sizeof(uint16_t)));
 
5434
                        NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->printer_name, ndr_get_array_length(ndr, &r->printer_name), sizeof(uint16_t), CH_UTF16));
 
5435
                        NDR_PULL_SET_MEM_CTX(ndr, _mem_save_printer_name_0, 0);
 
5436
                }
 
5437
                if (r->server_name) {
 
5438
                        _mem_save_server_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
5439
                        NDR_PULL_SET_MEM_CTX(ndr, r->server_name, 0);
 
5440
                        NDR_CHECK(ndr_pull_array_size(ndr, &r->server_name));
 
5441
                        NDR_CHECK(ndr_pull_array_length(ndr, &r->server_name));
 
5442
                        if (ndr_get_array_length(ndr, &r->server_name) > ndr_get_array_size(ndr, &r->server_name)) {
 
5443
                                return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->server_name), ndr_get_array_length(ndr, &r->server_name));
 
5444
                        }
 
5445
                        NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->server_name), sizeof(uint16_t)));
 
5446
                        NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->server_name, ndr_get_array_length(ndr, &r->server_name), sizeof(uint16_t), CH_UTF16));
 
5447
                        NDR_PULL_SET_MEM_CTX(ndr, _mem_save_server_name_0, 0);
 
5448
                }
 
5449
                if (r->user_name) {
 
5450
                        _mem_save_user_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
5451
                        NDR_PULL_SET_MEM_CTX(ndr, r->user_name, 0);
 
5452
                        NDR_CHECK(ndr_pull_array_size(ndr, &r->user_name));
 
5453
                        NDR_CHECK(ndr_pull_array_length(ndr, &r->user_name));
 
5454
                        if (ndr_get_array_length(ndr, &r->user_name) > ndr_get_array_size(ndr, &r->user_name)) {
 
5455
                                return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->user_name), ndr_get_array_length(ndr, &r->user_name));
 
5456
                        }
 
5457
                        NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->user_name), sizeof(uint16_t)));
 
5458
                        NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->user_name, ndr_get_array_length(ndr, &r->user_name), sizeof(uint16_t), CH_UTF16));
 
5459
                        NDR_PULL_SET_MEM_CTX(ndr, _mem_save_user_name_0, 0);
 
5460
                }
 
5461
                if (r->document_name) {
 
5462
                        _mem_save_document_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
5463
                        NDR_PULL_SET_MEM_CTX(ndr, r->document_name, 0);
 
5464
                        NDR_CHECK(ndr_pull_array_size(ndr, &r->document_name));
 
5465
                        NDR_CHECK(ndr_pull_array_length(ndr, &r->document_name));
 
5466
                        if (ndr_get_array_length(ndr, &r->document_name) > ndr_get_array_size(ndr, &r->document_name)) {
 
5467
                                return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->document_name), ndr_get_array_length(ndr, &r->document_name));
 
5468
                        }
 
5469
                        NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->document_name), sizeof(uint16_t)));
 
5470
                        NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->document_name, ndr_get_array_length(ndr, &r->document_name), sizeof(uint16_t), CH_UTF16));
 
5471
                        NDR_PULL_SET_MEM_CTX(ndr, _mem_save_document_name_0, 0);
 
5472
                }
 
5473
                if (r->notify_name) {
 
5474
                        _mem_save_notify_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
5475
                        NDR_PULL_SET_MEM_CTX(ndr, r->notify_name, 0);
 
5476
                        NDR_CHECK(ndr_pull_array_size(ndr, &r->notify_name));
 
5477
                        NDR_CHECK(ndr_pull_array_length(ndr, &r->notify_name));
 
5478
                        if (ndr_get_array_length(ndr, &r->notify_name) > ndr_get_array_size(ndr, &r->notify_name)) {
 
5479
                                return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->notify_name), ndr_get_array_length(ndr, &r->notify_name));
 
5480
                        }
 
5481
                        NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->notify_name), sizeof(uint16_t)));
 
5482
                        NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->notify_name, ndr_get_array_length(ndr, &r->notify_name), sizeof(uint16_t), CH_UTF16));
 
5483
                        NDR_PULL_SET_MEM_CTX(ndr, _mem_save_notify_name_0, 0);
 
5484
                }
 
5485
                if (r->data_type) {
 
5486
                        _mem_save_data_type_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
5487
                        NDR_PULL_SET_MEM_CTX(ndr, r->data_type, 0);
 
5488
                        NDR_CHECK(ndr_pull_array_size(ndr, &r->data_type));
 
5489
                        NDR_CHECK(ndr_pull_array_length(ndr, &r->data_type));
 
5490
                        if (ndr_get_array_length(ndr, &r->data_type) > ndr_get_array_size(ndr, &r->data_type)) {
 
5491
                                return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->data_type), ndr_get_array_length(ndr, &r->data_type));
 
5492
                        }
 
5493
                        NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->data_type), sizeof(uint16_t)));
 
5494
                        NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->data_type, ndr_get_array_length(ndr, &r->data_type), sizeof(uint16_t), CH_UTF16));
 
5495
                        NDR_PULL_SET_MEM_CTX(ndr, _mem_save_data_type_0, 0);
 
5496
                }
 
5497
                if (r->print_processor) {
 
5498
                        _mem_save_print_processor_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
5499
                        NDR_PULL_SET_MEM_CTX(ndr, r->print_processor, 0);
 
5500
                        NDR_CHECK(ndr_pull_array_size(ndr, &r->print_processor));
 
5501
                        NDR_CHECK(ndr_pull_array_length(ndr, &r->print_processor));
 
5502
                        if (ndr_get_array_length(ndr, &r->print_processor) > ndr_get_array_size(ndr, &r->print_processor)) {
 
5503
                                return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->print_processor), ndr_get_array_length(ndr, &r->print_processor));
 
5504
                        }
 
5505
                        NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->print_processor), sizeof(uint16_t)));
 
5506
                        NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->print_processor, ndr_get_array_length(ndr, &r->print_processor), sizeof(uint16_t), CH_UTF16));
 
5507
                        NDR_PULL_SET_MEM_CTX(ndr, _mem_save_print_processor_0, 0);
 
5508
                }
 
5509
                if (r->parameters) {
 
5510
                        _mem_save_parameters_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
5511
                        NDR_PULL_SET_MEM_CTX(ndr, r->parameters, 0);
 
5512
                        NDR_CHECK(ndr_pull_array_size(ndr, &r->parameters));
 
5513
                        NDR_CHECK(ndr_pull_array_length(ndr, &r->parameters));
 
5514
                        if (ndr_get_array_length(ndr, &r->parameters) > ndr_get_array_size(ndr, &r->parameters)) {
 
5515
                                return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->parameters), ndr_get_array_length(ndr, &r->parameters));
 
5516
                        }
 
5517
                        NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->parameters), sizeof(uint16_t)));
 
5518
                        NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->parameters, ndr_get_array_length(ndr, &r->parameters), sizeof(uint16_t), CH_UTF16));
 
5519
                        NDR_PULL_SET_MEM_CTX(ndr, _mem_save_parameters_0, 0);
 
5520
                }
 
5521
                if (r->driver_name) {
 
5522
                        _mem_save_driver_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
5523
                        NDR_PULL_SET_MEM_CTX(ndr, r->driver_name, 0);
 
5524
                        NDR_CHECK(ndr_pull_array_size(ndr, &r->driver_name));
 
5525
                        NDR_CHECK(ndr_pull_array_length(ndr, &r->driver_name));
 
5526
                        if (ndr_get_array_length(ndr, &r->driver_name) > ndr_get_array_size(ndr, &r->driver_name)) {
 
5527
                                return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->driver_name), ndr_get_array_length(ndr, &r->driver_name));
 
5528
                        }
 
5529
                        NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->driver_name), sizeof(uint16_t)));
 
5530
                        NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->driver_name, ndr_get_array_length(ndr, &r->driver_name), sizeof(uint16_t), CH_UTF16));
 
5531
                        NDR_PULL_SET_MEM_CTX(ndr, _mem_save_driver_name_0, 0);
 
5532
                }
 
5533
                if (r->text_status) {
 
5534
                        _mem_save_text_status_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
5535
                        NDR_PULL_SET_MEM_CTX(ndr, r->text_status, 0);
 
5536
                        NDR_CHECK(ndr_pull_array_size(ndr, &r->text_status));
 
5537
                        NDR_CHECK(ndr_pull_array_length(ndr, &r->text_status));
 
5538
                        if (ndr_get_array_length(ndr, &r->text_status) > ndr_get_array_size(ndr, &r->text_status)) {
 
5539
                                return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->text_status), ndr_get_array_length(ndr, &r->text_status));
 
5540
                        }
 
5541
                        NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->text_status), sizeof(uint16_t)));
 
5542
                        NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->text_status, ndr_get_array_length(ndr, &r->text_status), sizeof(uint16_t), CH_UTF16));
 
5543
                        NDR_PULL_SET_MEM_CTX(ndr, _mem_save_text_status_0, 0);
 
5544
                }
 
5545
        }
 
5546
        return NDR_ERR_SUCCESS;
 
5547
}
 
5548
 
 
5549
_PUBLIC_ void ndr_print_spoolss_SetJobInfo2(struct ndr_print *ndr, const char *name, const struct spoolss_SetJobInfo2 *r)
 
5550
{
 
5551
        ndr_print_struct(ndr, name, "spoolss_SetJobInfo2");
 
5552
        ndr->depth++;
 
5553
        ndr_print_uint32(ndr, "job_id", r->job_id);
 
5554
        ndr_print_ptr(ndr, "printer_name", r->printer_name);
 
5555
        ndr->depth++;
 
5556
        if (r->printer_name) {
 
5557
                ndr_print_string(ndr, "printer_name", r->printer_name);
 
5558
        }
 
5559
        ndr->depth--;
 
5560
        ndr_print_ptr(ndr, "server_name", r->server_name);
 
5561
        ndr->depth++;
 
5562
        if (r->server_name) {
 
5563
                ndr_print_string(ndr, "server_name", r->server_name);
 
5564
        }
 
5565
        ndr->depth--;
 
5566
        ndr_print_ptr(ndr, "user_name", r->user_name);
 
5567
        ndr->depth++;
 
5568
        if (r->user_name) {
 
5569
                ndr_print_string(ndr, "user_name", r->user_name);
 
5570
        }
 
5571
        ndr->depth--;
 
5572
        ndr_print_ptr(ndr, "document_name", r->document_name);
 
5573
        ndr->depth++;
 
5574
        if (r->document_name) {
 
5575
                ndr_print_string(ndr, "document_name", r->document_name);
 
5576
        }
 
5577
        ndr->depth--;
 
5578
        ndr_print_ptr(ndr, "notify_name", r->notify_name);
 
5579
        ndr->depth++;
 
5580
        if (r->notify_name) {
 
5581
                ndr_print_string(ndr, "notify_name", r->notify_name);
 
5582
        }
 
5583
        ndr->depth--;
 
5584
        ndr_print_ptr(ndr, "data_type", r->data_type);
 
5585
        ndr->depth++;
 
5586
        if (r->data_type) {
 
5587
                ndr_print_string(ndr, "data_type", r->data_type);
 
5588
        }
 
5589
        ndr->depth--;
 
5590
        ndr_print_ptr(ndr, "print_processor", r->print_processor);
 
5591
        ndr->depth++;
 
5592
        if (r->print_processor) {
 
5593
                ndr_print_string(ndr, "print_processor", r->print_processor);
 
5594
        }
 
5595
        ndr->depth--;
 
5596
        ndr_print_ptr(ndr, "parameters", r->parameters);
 
5597
        ndr->depth++;
 
5598
        if (r->parameters) {
 
5599
                ndr_print_string(ndr, "parameters", r->parameters);
 
5600
        }
 
5601
        ndr->depth--;
 
5602
        ndr_print_ptr(ndr, "driver_name", r->driver_name);
 
5603
        ndr->depth++;
 
5604
        if (r->driver_name) {
 
5605
                ndr_print_string(ndr, "driver_name", r->driver_name);
 
5606
        }
 
5607
        ndr->depth--;
 
5608
        ndr_print_uint32(ndr, "_devmode_ptr", r->_devmode_ptr);
 
5609
        ndr_print_ptr(ndr, "text_status", r->text_status);
 
5610
        ndr->depth++;
 
5611
        if (r->text_status) {
 
5612
                ndr_print_string(ndr, "text_status", r->text_status);
 
5613
        }
 
5614
        ndr->depth--;
 
5615
        ndr_print_uint32(ndr, "_secdesc_ptr", r->_secdesc_ptr);
 
5616
        ndr_print_spoolss_JobStatus(ndr, "status", r->status);
 
5617
        ndr_print_uint32(ndr, "priority", r->priority);
 
5618
        ndr_print_uint32(ndr, "position", r->position);
 
5619
        ndr_print_uint32(ndr, "start_time", r->start_time);
 
5620
        ndr_print_uint32(ndr, "until_time", r->until_time);
 
5621
        ndr_print_uint32(ndr, "total_pages", r->total_pages);
 
5622
        ndr_print_uint32(ndr, "size", r->size);
 
5623
        ndr_print_spoolss_Time(ndr, "submitted", &r->submitted);
 
5624
        ndr_print_uint32(ndr, "time", r->time);
 
5625
        ndr_print_uint32(ndr, "pages_printed", r->pages_printed);
 
5626
        ndr->depth--;
 
5627
}
 
5628
 
 
5629
static enum ndr_err_code ndr_push_spoolss_SetJobInfo4(struct ndr_push *ndr, int ndr_flags, const struct spoolss_SetJobInfo4 *r)
 
5630
{
 
5631
        if (ndr_flags & NDR_SCALARS) {
 
5632
                NDR_CHECK(ndr_push_align(ndr, 5));
 
5633
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->job_id));
 
5634
                NDR_CHECK(ndr_push_unique_ptr(ndr, r->printer_name));
 
5635
                NDR_CHECK(ndr_push_unique_ptr(ndr, r->server_name));
 
5636
                NDR_CHECK(ndr_push_unique_ptr(ndr, r->user_name));
 
5637
                NDR_CHECK(ndr_push_unique_ptr(ndr, r->document_name));
 
5638
                NDR_CHECK(ndr_push_unique_ptr(ndr, r->notify_name));
 
5639
                NDR_CHECK(ndr_push_unique_ptr(ndr, r->data_type));
 
5640
                NDR_CHECK(ndr_push_unique_ptr(ndr, r->print_processor));
 
5641
                NDR_CHECK(ndr_push_unique_ptr(ndr, r->parameters));
 
5642
                NDR_CHECK(ndr_push_unique_ptr(ndr, r->driver_name));
 
5643
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->_devmode_ptr));
 
5644
                NDR_CHECK(ndr_push_unique_ptr(ndr, r->text_status));
 
5645
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->_secdesc_ptr));
 
5646
                NDR_CHECK(ndr_push_spoolss_JobStatus(ndr, NDR_SCALARS, r->status));
 
5647
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->priority));
 
5648
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->position));
 
5649
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->start_time));
 
5650
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->until_time));
 
5651
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->total_pages));
 
5652
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->size));
 
5653
                NDR_CHECK(ndr_push_spoolss_Time(ndr, NDR_SCALARS, &r->submitted));
 
5654
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->time));
 
5655
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->pages_printed));
 
5656
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->size_high));
 
5657
                NDR_CHECK(ndr_push_trailer_align(ndr, 5));
 
5658
        }
 
5659
        if (ndr_flags & NDR_BUFFERS) {
 
5660
                if (r->printer_name) {
 
5661
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->printer_name, CH_UTF16)));
 
5662
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0));
 
5663
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->printer_name, CH_UTF16)));
 
5664
                        NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->printer_name, ndr_charset_length(r->printer_name, CH_UTF16), sizeof(uint16_t), CH_UTF16));
 
5665
                }
 
5666
                if (r->server_name) {
 
5667
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->server_name, CH_UTF16)));
 
5668
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0));
 
5669
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->server_name, CH_UTF16)));
 
5670
                        NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->server_name, ndr_charset_length(r->server_name, CH_UTF16), sizeof(uint16_t), CH_UTF16));
 
5671
                }
 
5672
                if (r->user_name) {
 
5673
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->user_name, CH_UTF16)));
 
5674
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0));
 
5675
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->user_name, CH_UTF16)));
 
5676
                        NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->user_name, ndr_charset_length(r->user_name, CH_UTF16), sizeof(uint16_t), CH_UTF16));
 
5677
                }
 
5678
                if (r->document_name) {
 
5679
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->document_name, CH_UTF16)));
 
5680
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0));
 
5681
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->document_name, CH_UTF16)));
 
5682
                        NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->document_name, ndr_charset_length(r->document_name, CH_UTF16), sizeof(uint16_t), CH_UTF16));
 
5683
                }
 
5684
                if (r->notify_name) {
 
5685
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->notify_name, CH_UTF16)));
 
5686
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0));
 
5687
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->notify_name, CH_UTF16)));
 
5688
                        NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->notify_name, ndr_charset_length(r->notify_name, CH_UTF16), sizeof(uint16_t), CH_UTF16));
 
5689
                }
 
5690
                if (r->data_type) {
 
5691
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->data_type, CH_UTF16)));
 
5692
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0));
 
5693
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->data_type, CH_UTF16)));
 
5694
                        NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->data_type, ndr_charset_length(r->data_type, CH_UTF16), sizeof(uint16_t), CH_UTF16));
 
5695
                }
 
5696
                if (r->print_processor) {
 
5697
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->print_processor, CH_UTF16)));
 
5698
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0));
 
5699
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->print_processor, CH_UTF16)));
 
5700
                        NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->print_processor, ndr_charset_length(r->print_processor, CH_UTF16), sizeof(uint16_t), CH_UTF16));
 
5701
                }
 
5702
                if (r->parameters) {
 
5703
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->parameters, CH_UTF16)));
 
5704
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0));
 
5705
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->parameters, CH_UTF16)));
 
5706
                        NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->parameters, ndr_charset_length(r->parameters, CH_UTF16), sizeof(uint16_t), CH_UTF16));
 
5707
                }
 
5708
                if (r->driver_name) {
 
5709
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->driver_name, CH_UTF16)));
 
5710
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0));
 
5711
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->driver_name, CH_UTF16)));
 
5712
                        NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->driver_name, ndr_charset_length(r->driver_name, CH_UTF16), sizeof(uint16_t), CH_UTF16));
 
5713
                }
 
5714
                if (r->text_status) {
 
5715
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->text_status, CH_UTF16)));
 
5716
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0));
 
5717
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->text_status, CH_UTF16)));
 
5718
                        NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->text_status, ndr_charset_length(r->text_status, CH_UTF16), sizeof(uint16_t), CH_UTF16));
 
5719
                }
 
5720
        }
 
5721
        return NDR_ERR_SUCCESS;
 
5722
}
 
5723
 
 
5724
static enum ndr_err_code ndr_pull_spoolss_SetJobInfo4(struct ndr_pull *ndr, int ndr_flags, struct spoolss_SetJobInfo4 *r)
 
5725
{
 
5726
        uint32_t _ptr_printer_name;
 
5727
        TALLOC_CTX *_mem_save_printer_name_0;
 
5728
        uint32_t _ptr_server_name;
 
5729
        TALLOC_CTX *_mem_save_server_name_0;
 
5730
        uint32_t _ptr_user_name;
 
5731
        TALLOC_CTX *_mem_save_user_name_0;
 
5732
        uint32_t _ptr_document_name;
 
5733
        TALLOC_CTX *_mem_save_document_name_0;
 
5734
        uint32_t _ptr_notify_name;
 
5735
        TALLOC_CTX *_mem_save_notify_name_0;
 
5736
        uint32_t _ptr_data_type;
 
5737
        TALLOC_CTX *_mem_save_data_type_0;
 
5738
        uint32_t _ptr_print_processor;
 
5739
        TALLOC_CTX *_mem_save_print_processor_0;
 
5740
        uint32_t _ptr_parameters;
 
5741
        TALLOC_CTX *_mem_save_parameters_0;
 
5742
        uint32_t _ptr_driver_name;
 
5743
        TALLOC_CTX *_mem_save_driver_name_0;
 
5744
        uint32_t _ptr_text_status;
 
5745
        TALLOC_CTX *_mem_save_text_status_0;
 
5746
        if (ndr_flags & NDR_SCALARS) {
 
5747
                NDR_CHECK(ndr_pull_align(ndr, 5));
 
5748
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->job_id));
 
5749
                NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_printer_name));
 
5750
                if (_ptr_printer_name) {
 
5751
                        NDR_PULL_ALLOC(ndr, r->printer_name);
 
5752
                } else {
 
5753
                        r->printer_name = NULL;
 
5754
                }
 
5755
                NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_server_name));
 
5756
                if (_ptr_server_name) {
 
5757
                        NDR_PULL_ALLOC(ndr, r->server_name);
 
5758
                } else {
 
5759
                        r->server_name = NULL;
 
5760
                }
 
5761
                NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_user_name));
 
5762
                if (_ptr_user_name) {
 
5763
                        NDR_PULL_ALLOC(ndr, r->user_name);
 
5764
                } else {
 
5765
                        r->user_name = NULL;
 
5766
                }
 
5767
                NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_document_name));
 
5768
                if (_ptr_document_name) {
 
5769
                        NDR_PULL_ALLOC(ndr, r->document_name);
 
5770
                } else {
 
5771
                        r->document_name = NULL;
 
5772
                }
 
5773
                NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_notify_name));
 
5774
                if (_ptr_notify_name) {
 
5775
                        NDR_PULL_ALLOC(ndr, r->notify_name);
 
5776
                } else {
 
5777
                        r->notify_name = NULL;
 
5778
                }
 
5779
                NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_data_type));
 
5780
                if (_ptr_data_type) {
 
5781
                        NDR_PULL_ALLOC(ndr, r->data_type);
 
5782
                } else {
 
5783
                        r->data_type = NULL;
 
5784
                }
 
5785
                NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_print_processor));
 
5786
                if (_ptr_print_processor) {
 
5787
                        NDR_PULL_ALLOC(ndr, r->print_processor);
 
5788
                } else {
 
5789
                        r->print_processor = NULL;
 
5790
                }
 
5791
                NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_parameters));
 
5792
                if (_ptr_parameters) {
 
5793
                        NDR_PULL_ALLOC(ndr, r->parameters);
 
5794
                } else {
 
5795
                        r->parameters = NULL;
 
5796
                }
 
5797
                NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_driver_name));
 
5798
                if (_ptr_driver_name) {
 
5799
                        NDR_PULL_ALLOC(ndr, r->driver_name);
 
5800
                } else {
 
5801
                        r->driver_name = NULL;
 
5802
                }
 
5803
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->_devmode_ptr));
 
5804
                NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_text_status));
 
5805
                if (_ptr_text_status) {
 
5806
                        NDR_PULL_ALLOC(ndr, r->text_status);
 
5807
                } else {
 
5808
                        r->text_status = NULL;
 
5809
                }
 
5810
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->_secdesc_ptr));
 
5811
                NDR_CHECK(ndr_pull_spoolss_JobStatus(ndr, NDR_SCALARS, &r->status));
 
5812
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->priority));
 
5813
                if (r->priority > 99) {
 
5814
                        return ndr_pull_error(ndr, NDR_ERR_RANGE, "value out of range");
 
5815
                }
 
5816
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->position));
 
5817
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->start_time));
 
5818
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->until_time));
 
5819
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->total_pages));
 
5820
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->size));
 
5821
                NDR_CHECK(ndr_pull_spoolss_Time(ndr, NDR_SCALARS, &r->submitted));
 
5822
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->time));
 
5823
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->pages_printed));
 
5824
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->size_high));
 
5825
                NDR_CHECK(ndr_pull_trailer_align(ndr, 5));
 
5826
        }
 
5827
        if (ndr_flags & NDR_BUFFERS) {
 
5828
                if (r->printer_name) {
 
5829
                        _mem_save_printer_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
5830
                        NDR_PULL_SET_MEM_CTX(ndr, r->printer_name, 0);
 
5831
                        NDR_CHECK(ndr_pull_array_size(ndr, &r->printer_name));
 
5832
                        NDR_CHECK(ndr_pull_array_length(ndr, &r->printer_name));
 
5833
                        if (ndr_get_array_length(ndr, &r->printer_name) > ndr_get_array_size(ndr, &r->printer_name)) {
 
5834
                                return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->printer_name), ndr_get_array_length(ndr, &r->printer_name));
 
5835
                        }
 
5836
                        NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->printer_name), sizeof(uint16_t)));
 
5837
                        NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->printer_name, ndr_get_array_length(ndr, &r->printer_name), sizeof(uint16_t), CH_UTF16));
 
5838
                        NDR_PULL_SET_MEM_CTX(ndr, _mem_save_printer_name_0, 0);
 
5839
                }
 
5840
                if (r->server_name) {
 
5841
                        _mem_save_server_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
5842
                        NDR_PULL_SET_MEM_CTX(ndr, r->server_name, 0);
 
5843
                        NDR_CHECK(ndr_pull_array_size(ndr, &r->server_name));
 
5844
                        NDR_CHECK(ndr_pull_array_length(ndr, &r->server_name));
 
5845
                        if (ndr_get_array_length(ndr, &r->server_name) > ndr_get_array_size(ndr, &r->server_name)) {
 
5846
                                return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->server_name), ndr_get_array_length(ndr, &r->server_name));
 
5847
                        }
 
5848
                        NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->server_name), sizeof(uint16_t)));
 
5849
                        NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->server_name, ndr_get_array_length(ndr, &r->server_name), sizeof(uint16_t), CH_UTF16));
 
5850
                        NDR_PULL_SET_MEM_CTX(ndr, _mem_save_server_name_0, 0);
 
5851
                }
 
5852
                if (r->user_name) {
 
5853
                        _mem_save_user_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
5854
                        NDR_PULL_SET_MEM_CTX(ndr, r->user_name, 0);
 
5855
                        NDR_CHECK(ndr_pull_array_size(ndr, &r->user_name));
 
5856
                        NDR_CHECK(ndr_pull_array_length(ndr, &r->user_name));
 
5857
                        if (ndr_get_array_length(ndr, &r->user_name) > ndr_get_array_size(ndr, &r->user_name)) {
 
5858
                                return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->user_name), ndr_get_array_length(ndr, &r->user_name));
 
5859
                        }
 
5860
                        NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->user_name), sizeof(uint16_t)));
 
5861
                        NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->user_name, ndr_get_array_length(ndr, &r->user_name), sizeof(uint16_t), CH_UTF16));
 
5862
                        NDR_PULL_SET_MEM_CTX(ndr, _mem_save_user_name_0, 0);
 
5863
                }
 
5864
                if (r->document_name) {
 
5865
                        _mem_save_document_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
5866
                        NDR_PULL_SET_MEM_CTX(ndr, r->document_name, 0);
 
5867
                        NDR_CHECK(ndr_pull_array_size(ndr, &r->document_name));
 
5868
                        NDR_CHECK(ndr_pull_array_length(ndr, &r->document_name));
 
5869
                        if (ndr_get_array_length(ndr, &r->document_name) > ndr_get_array_size(ndr, &r->document_name)) {
 
5870
                                return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->document_name), ndr_get_array_length(ndr, &r->document_name));
 
5871
                        }
 
5872
                        NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->document_name), sizeof(uint16_t)));
 
5873
                        NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->document_name, ndr_get_array_length(ndr, &r->document_name), sizeof(uint16_t), CH_UTF16));
 
5874
                        NDR_PULL_SET_MEM_CTX(ndr, _mem_save_document_name_0, 0);
 
5875
                }
 
5876
                if (r->notify_name) {
 
5877
                        _mem_save_notify_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
5878
                        NDR_PULL_SET_MEM_CTX(ndr, r->notify_name, 0);
 
5879
                        NDR_CHECK(ndr_pull_array_size(ndr, &r->notify_name));
 
5880
                        NDR_CHECK(ndr_pull_array_length(ndr, &r->notify_name));
 
5881
                        if (ndr_get_array_length(ndr, &r->notify_name) > ndr_get_array_size(ndr, &r->notify_name)) {
 
5882
                                return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->notify_name), ndr_get_array_length(ndr, &r->notify_name));
 
5883
                        }
 
5884
                        NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->notify_name), sizeof(uint16_t)));
 
5885
                        NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->notify_name, ndr_get_array_length(ndr, &r->notify_name), sizeof(uint16_t), CH_UTF16));
 
5886
                        NDR_PULL_SET_MEM_CTX(ndr, _mem_save_notify_name_0, 0);
 
5887
                }
 
5888
                if (r->data_type) {
 
5889
                        _mem_save_data_type_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
5890
                        NDR_PULL_SET_MEM_CTX(ndr, r->data_type, 0);
 
5891
                        NDR_CHECK(ndr_pull_array_size(ndr, &r->data_type));
 
5892
                        NDR_CHECK(ndr_pull_array_length(ndr, &r->data_type));
 
5893
                        if (ndr_get_array_length(ndr, &r->data_type) > ndr_get_array_size(ndr, &r->data_type)) {
 
5894
                                return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->data_type), ndr_get_array_length(ndr, &r->data_type));
 
5895
                        }
 
5896
                        NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->data_type), sizeof(uint16_t)));
 
5897
                        NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->data_type, ndr_get_array_length(ndr, &r->data_type), sizeof(uint16_t), CH_UTF16));
 
5898
                        NDR_PULL_SET_MEM_CTX(ndr, _mem_save_data_type_0, 0);
 
5899
                }
 
5900
                if (r->print_processor) {
 
5901
                        _mem_save_print_processor_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
5902
                        NDR_PULL_SET_MEM_CTX(ndr, r->print_processor, 0);
 
5903
                        NDR_CHECK(ndr_pull_array_size(ndr, &r->print_processor));
 
5904
                        NDR_CHECK(ndr_pull_array_length(ndr, &r->print_processor));
 
5905
                        if (ndr_get_array_length(ndr, &r->print_processor) > ndr_get_array_size(ndr, &r->print_processor)) {
 
5906
                                return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->print_processor), ndr_get_array_length(ndr, &r->print_processor));
 
5907
                        }
 
5908
                        NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->print_processor), sizeof(uint16_t)));
 
5909
                        NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->print_processor, ndr_get_array_length(ndr, &r->print_processor), sizeof(uint16_t), CH_UTF16));
 
5910
                        NDR_PULL_SET_MEM_CTX(ndr, _mem_save_print_processor_0, 0);
 
5911
                }
 
5912
                if (r->parameters) {
 
5913
                        _mem_save_parameters_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
5914
                        NDR_PULL_SET_MEM_CTX(ndr, r->parameters, 0);
 
5915
                        NDR_CHECK(ndr_pull_array_size(ndr, &r->parameters));
 
5916
                        NDR_CHECK(ndr_pull_array_length(ndr, &r->parameters));
 
5917
                        if (ndr_get_array_length(ndr, &r->parameters) > ndr_get_array_size(ndr, &r->parameters)) {
 
5918
                                return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->parameters), ndr_get_array_length(ndr, &r->parameters));
 
5919
                        }
 
5920
                        NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->parameters), sizeof(uint16_t)));
 
5921
                        NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->parameters, ndr_get_array_length(ndr, &r->parameters), sizeof(uint16_t), CH_UTF16));
 
5922
                        NDR_PULL_SET_MEM_CTX(ndr, _mem_save_parameters_0, 0);
 
5923
                }
 
5924
                if (r->driver_name) {
 
5925
                        _mem_save_driver_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
5926
                        NDR_PULL_SET_MEM_CTX(ndr, r->driver_name, 0);
 
5927
                        NDR_CHECK(ndr_pull_array_size(ndr, &r->driver_name));
 
5928
                        NDR_CHECK(ndr_pull_array_length(ndr, &r->driver_name));
 
5929
                        if (ndr_get_array_length(ndr, &r->driver_name) > ndr_get_array_size(ndr, &r->driver_name)) {
 
5930
                                return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->driver_name), ndr_get_array_length(ndr, &r->driver_name));
 
5931
                        }
 
5932
                        NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->driver_name), sizeof(uint16_t)));
 
5933
                        NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->driver_name, ndr_get_array_length(ndr, &r->driver_name), sizeof(uint16_t), CH_UTF16));
 
5934
                        NDR_PULL_SET_MEM_CTX(ndr, _mem_save_driver_name_0, 0);
 
5935
                }
 
5936
                if (r->text_status) {
 
5937
                        _mem_save_text_status_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
5938
                        NDR_PULL_SET_MEM_CTX(ndr, r->text_status, 0);
 
5939
                        NDR_CHECK(ndr_pull_array_size(ndr, &r->text_status));
 
5940
                        NDR_CHECK(ndr_pull_array_length(ndr, &r->text_status));
 
5941
                        if (ndr_get_array_length(ndr, &r->text_status) > ndr_get_array_size(ndr, &r->text_status)) {
 
5942
                                return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->text_status), ndr_get_array_length(ndr, &r->text_status));
 
5943
                        }
 
5944
                        NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->text_status), sizeof(uint16_t)));
 
5945
                        NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->text_status, ndr_get_array_length(ndr, &r->text_status), sizeof(uint16_t), CH_UTF16));
 
5946
                        NDR_PULL_SET_MEM_CTX(ndr, _mem_save_text_status_0, 0);
 
5947
                }
 
5948
        }
 
5949
        return NDR_ERR_SUCCESS;
 
5950
}
 
5951
 
 
5952
_PUBLIC_ void ndr_print_spoolss_SetJobInfo4(struct ndr_print *ndr, const char *name, const struct spoolss_SetJobInfo4 *r)
 
5953
{
 
5954
        ndr_print_struct(ndr, name, "spoolss_SetJobInfo4");
 
5955
        ndr->depth++;
 
5956
        ndr_print_uint32(ndr, "job_id", r->job_id);
 
5957
        ndr_print_ptr(ndr, "printer_name", r->printer_name);
 
5958
        ndr->depth++;
 
5959
        if (r->printer_name) {
 
5960
                ndr_print_string(ndr, "printer_name", r->printer_name);
 
5961
        }
 
5962
        ndr->depth--;
 
5963
        ndr_print_ptr(ndr, "server_name", r->server_name);
 
5964
        ndr->depth++;
 
5965
        if (r->server_name) {
 
5966
                ndr_print_string(ndr, "server_name", r->server_name);
 
5967
        }
 
5968
        ndr->depth--;
 
5969
        ndr_print_ptr(ndr, "user_name", r->user_name);
 
5970
        ndr->depth++;
 
5971
        if (r->user_name) {
 
5972
                ndr_print_string(ndr, "user_name", r->user_name);
 
5973
        }
 
5974
        ndr->depth--;
 
5975
        ndr_print_ptr(ndr, "document_name", r->document_name);
 
5976
        ndr->depth++;
 
5977
        if (r->document_name) {
 
5978
                ndr_print_string(ndr, "document_name", r->document_name);
 
5979
        }
 
5980
        ndr->depth--;
 
5981
        ndr_print_ptr(ndr, "notify_name", r->notify_name);
 
5982
        ndr->depth++;
 
5983
        if (r->notify_name) {
 
5984
                ndr_print_string(ndr, "notify_name", r->notify_name);
 
5985
        }
 
5986
        ndr->depth--;
 
5987
        ndr_print_ptr(ndr, "data_type", r->data_type);
 
5988
        ndr->depth++;
 
5989
        if (r->data_type) {
 
5990
                ndr_print_string(ndr, "data_type", r->data_type);
 
5991
        }
 
5992
        ndr->depth--;
 
5993
        ndr_print_ptr(ndr, "print_processor", r->print_processor);
 
5994
        ndr->depth++;
 
5995
        if (r->print_processor) {
 
5996
                ndr_print_string(ndr, "print_processor", r->print_processor);
 
5997
        }
 
5998
        ndr->depth--;
 
5999
        ndr_print_ptr(ndr, "parameters", r->parameters);
 
6000
        ndr->depth++;
 
6001
        if (r->parameters) {
 
6002
                ndr_print_string(ndr, "parameters", r->parameters);
 
6003
        }
 
6004
        ndr->depth--;
 
6005
        ndr_print_ptr(ndr, "driver_name", r->driver_name);
 
6006
        ndr->depth++;
 
6007
        if (r->driver_name) {
 
6008
                ndr_print_string(ndr, "driver_name", r->driver_name);
 
6009
        }
 
6010
        ndr->depth--;
 
6011
        ndr_print_uint32(ndr, "_devmode_ptr", r->_devmode_ptr);
 
6012
        ndr_print_ptr(ndr, "text_status", r->text_status);
 
6013
        ndr->depth++;
 
6014
        if (r->text_status) {
 
6015
                ndr_print_string(ndr, "text_status", r->text_status);
 
6016
        }
 
6017
        ndr->depth--;
 
6018
        ndr_print_uint32(ndr, "_secdesc_ptr", r->_secdesc_ptr);
 
6019
        ndr_print_spoolss_JobStatus(ndr, "status", r->status);
 
6020
        ndr_print_uint32(ndr, "priority", r->priority);
 
6021
        ndr_print_uint32(ndr, "position", r->position);
 
6022
        ndr_print_uint32(ndr, "start_time", r->start_time);
 
6023
        ndr_print_uint32(ndr, "until_time", r->until_time);
 
6024
        ndr_print_uint32(ndr, "total_pages", r->total_pages);
 
6025
        ndr_print_uint32(ndr, "size", r->size);
 
6026
        ndr_print_spoolss_Time(ndr, "submitted", &r->submitted);
 
6027
        ndr_print_uint32(ndr, "time", r->time);
 
6028
        ndr_print_uint32(ndr, "pages_printed", r->pages_printed);
 
6029
        ndr_print_uint32(ndr, "size_high", r->size_high);
 
6030
        ndr->depth--;
 
6031
}
 
6032
 
 
6033
_PUBLIC_ enum ndr_err_code ndr_push_spoolss_SetJobInfo(struct ndr_push *ndr, int ndr_flags, const union spoolss_SetJobInfo *r)
 
6034
{
 
6035
        if (ndr_flags & NDR_SCALARS) {
 
6036
                int level = ndr_push_get_switch_value(ndr, r);
 
6037
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, level));
 
6038
                NDR_CHECK(ndr_push_union_align(ndr, 5));
 
6039
                switch (level) {
 
6040
                        case 1: {
 
6041
                                NDR_CHECK(ndr_push_unique_ptr(ndr, r->info1));
 
6042
                        break; }
 
6043
 
 
6044
                        case 2: {
 
6045
                                NDR_CHECK(ndr_push_unique_ptr(ndr, r->info2));
 
6046
                        break; }
 
6047
 
 
6048
                        case 3: {
 
6049
                                NDR_CHECK(ndr_push_unique_ptr(ndr, r->info3));
 
6050
                        break; }
 
6051
 
 
6052
                        case 4: {
 
6053
                                NDR_CHECK(ndr_push_unique_ptr(ndr, r->info4));
 
6054
                        break; }
 
6055
 
 
6056
                        default: {
 
6057
                        break; }
 
6058
 
 
6059
                }
 
6060
        }
 
6061
        if (ndr_flags & NDR_BUFFERS) {
 
6062
                int level = ndr_push_get_switch_value(ndr, r);
 
6063
                switch (level) {
 
6064
                        case 1:
 
6065
                                if (r->info1) {
 
6066
                                        NDR_CHECK(ndr_push_spoolss_SetJobInfo1(ndr, NDR_SCALARS|NDR_BUFFERS, r->info1));
 
6067
                                }
 
6068
                        break;
 
6069
 
 
6070
                        case 2:
 
6071
                                if (r->info2) {
 
6072
                                        NDR_CHECK(ndr_push_spoolss_SetJobInfo2(ndr, NDR_SCALARS|NDR_BUFFERS, r->info2));
 
6073
                                }
 
6074
                        break;
 
6075
 
 
6076
                        case 3:
 
6077
                                if (r->info3) {
 
6078
                                        NDR_CHECK(ndr_push_spoolss_JobInfo3(ndr, NDR_SCALARS, r->info3));
 
6079
                                }
 
6080
                        break;
 
6081
 
 
6082
                        case 4:
 
6083
                                if (r->info4) {
 
6084
                                        NDR_CHECK(ndr_push_spoolss_SetJobInfo4(ndr, NDR_SCALARS|NDR_BUFFERS, r->info4));
 
6085
                                }
 
6086
                        break;
 
6087
 
 
6088
                        default:
 
6089
                        break;
 
6090
 
 
6091
                }
 
6092
        }
 
6093
        return NDR_ERR_SUCCESS;
 
6094
}
 
6095
 
 
6096
_PUBLIC_ enum ndr_err_code ndr_pull_spoolss_SetJobInfo(struct ndr_pull *ndr, int ndr_flags, union spoolss_SetJobInfo *r)
 
6097
{
 
6098
        int level;
 
6099
        uint32_t _level;
 
6100
        TALLOC_CTX *_mem_save_info1_0;
 
6101
        TALLOC_CTX *_mem_save_info2_0;
 
6102
        TALLOC_CTX *_mem_save_info3_0;
 
6103
        TALLOC_CTX *_mem_save_info4_0;
 
6104
        level = ndr_pull_get_switch_value(ndr, r);
 
6105
        if (ndr_flags & NDR_SCALARS) {
 
6106
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &_level));
 
6107
                if (_level != level) {
 
6108
                        return ndr_pull_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u for r at %s", _level, __location__);
 
6109
                }
 
6110
                NDR_CHECK(ndr_pull_union_align(ndr, 5));
 
6111
                switch (level) {
 
6112
                        case 1: {
 
6113
                                uint32_t _ptr_info1;
 
6114
                                NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_info1));
 
6115
                                if (_ptr_info1) {
 
6116
                                        NDR_PULL_ALLOC(ndr, r->info1);
 
6117
                                } else {
 
6118
                                        r->info1 = NULL;
 
6119
                                }
 
6120
                        break; }
 
6121
 
 
6122
                        case 2: {
 
6123
                                uint32_t _ptr_info2;
 
6124
                                NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_info2));
 
6125
                                if (_ptr_info2) {
 
6126
                                        NDR_PULL_ALLOC(ndr, r->info2);
 
6127
                                } else {
 
6128
                                        r->info2 = NULL;
 
6129
                                }
 
6130
                        break; }
 
6131
 
 
6132
                        case 3: {
 
6133
                                uint32_t _ptr_info3;
 
6134
                                NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_info3));
 
6135
                                if (_ptr_info3) {
 
6136
                                        NDR_PULL_ALLOC(ndr, r->info3);
 
6137
                                } else {
 
6138
                                        r->info3 = NULL;
 
6139
                                }
 
6140
                        break; }
 
6141
 
 
6142
                        case 4: {
 
6143
                                uint32_t _ptr_info4;
 
6144
                                NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_info4));
 
6145
                                if (_ptr_info4) {
 
6146
                                        NDR_PULL_ALLOC(ndr, r->info4);
 
6147
                                } else {
 
6148
                                        r->info4 = NULL;
 
6149
                                }
 
6150
                        break; }
 
6151
 
 
6152
                        default: {
 
6153
                        break; }
 
6154
 
 
6155
                }
 
6156
        }
 
6157
        if (ndr_flags & NDR_BUFFERS) {
 
6158
                switch (level) {
 
6159
                        case 1:
 
6160
                                if (r->info1) {
 
6161
                                        _mem_save_info1_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
6162
                                        NDR_PULL_SET_MEM_CTX(ndr, r->info1, 0);
 
6163
                                        NDR_CHECK(ndr_pull_spoolss_SetJobInfo1(ndr, NDR_SCALARS|NDR_BUFFERS, r->info1));
 
6164
                                        NDR_PULL_SET_MEM_CTX(ndr, _mem_save_info1_0, 0);
 
6165
                                }
 
6166
                        break;
 
6167
 
 
6168
                        case 2:
 
6169
                                if (r->info2) {
 
6170
                                        _mem_save_info2_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
6171
                                        NDR_PULL_SET_MEM_CTX(ndr, r->info2, 0);
 
6172
                                        NDR_CHECK(ndr_pull_spoolss_SetJobInfo2(ndr, NDR_SCALARS|NDR_BUFFERS, r->info2));
 
6173
                                        NDR_PULL_SET_MEM_CTX(ndr, _mem_save_info2_0, 0);
 
6174
                                }
 
6175
                        break;
 
6176
 
 
6177
                        case 3:
 
6178
                                if (r->info3) {
 
6179
                                        _mem_save_info3_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
6180
                                        NDR_PULL_SET_MEM_CTX(ndr, r->info3, 0);
 
6181
                                        NDR_CHECK(ndr_pull_spoolss_JobInfo3(ndr, NDR_SCALARS, r->info3));
 
6182
                                        NDR_PULL_SET_MEM_CTX(ndr, _mem_save_info3_0, 0);
 
6183
                                }
 
6184
                        break;
 
6185
 
 
6186
                        case 4:
 
6187
                                if (r->info4) {
 
6188
                                        _mem_save_info4_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
6189
                                        NDR_PULL_SET_MEM_CTX(ndr, r->info4, 0);
 
6190
                                        NDR_CHECK(ndr_pull_spoolss_SetJobInfo4(ndr, NDR_SCALARS|NDR_BUFFERS, r->info4));
 
6191
                                        NDR_PULL_SET_MEM_CTX(ndr, _mem_save_info4_0, 0);
 
6192
                                }
 
6193
                        break;
 
6194
 
 
6195
                        default:
 
6196
                        break;
 
6197
 
 
6198
                }
 
6199
        }
 
6200
        return NDR_ERR_SUCCESS;
 
6201
}
 
6202
 
 
6203
_PUBLIC_ void ndr_print_spoolss_SetJobInfo(struct ndr_print *ndr, const char *name, const union spoolss_SetJobInfo *r)
 
6204
{
 
6205
        int level;
 
6206
        level = ndr_print_get_switch_value(ndr, r);
 
6207
        ndr_print_union(ndr, name, level, "spoolss_SetJobInfo");
 
6208
        switch (level) {
 
6209
                case 1:
 
6210
                        ndr_print_ptr(ndr, "info1", r->info1);
 
6211
                        ndr->depth++;
 
6212
                        if (r->info1) {
 
6213
                                ndr_print_spoolss_SetJobInfo1(ndr, "info1", r->info1);
 
6214
                        }
 
6215
                        ndr->depth--;
 
6216
                break;
 
6217
 
 
6218
                case 2:
 
6219
                        ndr_print_ptr(ndr, "info2", r->info2);
 
6220
                        ndr->depth++;
 
6221
                        if (r->info2) {
 
6222
                                ndr_print_spoolss_SetJobInfo2(ndr, "info2", r->info2);
 
6223
                        }
 
6224
                        ndr->depth--;
 
6225
                break;
 
6226
 
 
6227
                case 3:
 
6228
                        ndr_print_ptr(ndr, "info3", r->info3);
 
6229
                        ndr->depth++;
 
6230
                        if (r->info3) {
 
6231
                                ndr_print_spoolss_JobInfo3(ndr, "info3", r->info3);
 
6232
                        }
 
6233
                        ndr->depth--;
 
6234
                break;
 
6235
 
 
6236
                case 4:
 
6237
                        ndr_print_ptr(ndr, "info4", r->info4);
 
6238
                        ndr->depth++;
 
6239
                        if (r->info4) {
 
6240
                                ndr_print_spoolss_SetJobInfo4(ndr, "info4", r->info4);
 
6241
                        }
 
6242
                        ndr->depth--;
 
6243
                break;
 
6244
 
 
6245
                default:
 
6246
                break;
 
6247
 
 
6248
        }
 
6249
}
 
6250
 
 
6251
static enum ndr_err_code ndr_push_spoolss_JobInfoContainer(struct ndr_push *ndr, int ndr_flags, const struct spoolss_JobInfoContainer *r)
 
6252
{
 
6253
        if (ndr_flags & NDR_SCALARS) {
 
6254
                NDR_CHECK(ndr_push_align(ndr, 5));
 
6255
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->level));
 
6256
                NDR_CHECK(ndr_push_set_switch_value(ndr, &r->info, r->level));
 
6257
                NDR_CHECK(ndr_push_spoolss_SetJobInfo(ndr, NDR_SCALARS, &r->info));
 
6258
                NDR_CHECK(ndr_push_trailer_align(ndr, 5));
 
6259
        }
 
6260
        if (ndr_flags & NDR_BUFFERS) {
 
6261
                NDR_CHECK(ndr_push_spoolss_SetJobInfo(ndr, NDR_BUFFERS, &r->info));
 
6262
        }
 
6263
        return NDR_ERR_SUCCESS;
 
6264
}
 
6265
 
 
6266
static enum ndr_err_code ndr_pull_spoolss_JobInfoContainer(struct ndr_pull *ndr, int ndr_flags, struct spoolss_JobInfoContainer *r)
 
6267
{
 
6268
        if (ndr_flags & NDR_SCALARS) {
 
6269
                NDR_CHECK(ndr_pull_align(ndr, 5));
 
6270
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->level));
 
6271
                NDR_CHECK(ndr_pull_set_switch_value(ndr, &r->info, r->level));
 
6272
                NDR_CHECK(ndr_pull_spoolss_SetJobInfo(ndr, NDR_SCALARS, &r->info));
 
6273
                NDR_CHECK(ndr_pull_trailer_align(ndr, 5));
 
6274
        }
 
6275
        if (ndr_flags & NDR_BUFFERS) {
 
6276
                NDR_CHECK(ndr_pull_spoolss_SetJobInfo(ndr, NDR_BUFFERS, &r->info));
 
6277
        }
 
6278
        return NDR_ERR_SUCCESS;
 
6279
}
 
6280
 
 
6281
_PUBLIC_ void ndr_print_spoolss_JobInfoContainer(struct ndr_print *ndr, const char *name, const struct spoolss_JobInfoContainer *r)
 
6282
{
 
6283
        ndr_print_struct(ndr, name, "spoolss_JobInfoContainer");
 
6284
        ndr->depth++;
 
6285
        ndr_print_uint32(ndr, "level", r->level);
 
6286
        ndr_print_set_switch_value(ndr, &r->info, r->level);
 
6287
        ndr_print_spoolss_SetJobInfo(ndr, "info", &r->info);
 
6288
        ndr->depth--;
 
6289
}
 
6290
 
 
6291
static enum ndr_err_code ndr_push_spoolss_JobControl(struct ndr_push *ndr, int ndr_flags, enum spoolss_JobControl r)
 
6292
{
 
6293
        NDR_CHECK(ndr_push_enum_uint32(ndr, NDR_SCALARS, r));
 
6294
        return NDR_ERR_SUCCESS;
 
6295
}
 
6296
 
 
6297
static enum ndr_err_code ndr_pull_spoolss_JobControl(struct ndr_pull *ndr, int ndr_flags, enum spoolss_JobControl *r)
 
6298
{
 
6299
        uint32_t v;
 
6300
        NDR_CHECK(ndr_pull_enum_uint32(ndr, NDR_SCALARS, &v));
 
6301
        *r = v;
 
6302
        return NDR_ERR_SUCCESS;
 
6303
}
 
6304
 
 
6305
_PUBLIC_ void ndr_print_spoolss_JobControl(struct ndr_print *ndr, const char *name, enum spoolss_JobControl r)
 
6306
{
 
6307
        const char *val = NULL;
 
6308
 
 
6309
        switch (r) {
 
6310
                case SPOOLSS_JOB_CONTROL_PAUSE: val = "SPOOLSS_JOB_CONTROL_PAUSE"; break;
 
6311
                case SPOOLSS_JOB_CONTROL_RESUME: val = "SPOOLSS_JOB_CONTROL_RESUME"; break;
 
6312
                case SPOOLSS_JOB_CONTROL_CANCEL: val = "SPOOLSS_JOB_CONTROL_CANCEL"; break;
 
6313
                case SPOOLSS_JOB_CONTROL_RESTART: val = "SPOOLSS_JOB_CONTROL_RESTART"; break;
 
6314
                case SPOOLSS_JOB_CONTROL_DELETE: val = "SPOOLSS_JOB_CONTROL_DELETE"; break;
 
6315
                case SPOOLSS_JOB_CONTROL_SEND_TO_PRINTER: val = "SPOOLSS_JOB_CONTROL_SEND_TO_PRINTER"; break;
 
6316
                case SPOOLSS_JOB_CONTROL_LAST_PAGE_EJECTED: val = "SPOOLSS_JOB_CONTROL_LAST_PAGE_EJECTED"; break;
 
6317
                case SPOOLSS_JOB_CONTROL_RETAIN: val = "SPOOLSS_JOB_CONTROL_RETAIN"; break;
 
6318
                case SPOOLSS_JOB_CONTROL_RELEASE: val = "SPOOLSS_JOB_CONTROL_RELEASE"; break;
 
6319
        }
 
6320
        ndr_print_enum(ndr, name, "ENUM", val, r);
 
6321
}
 
6322
 
 
6323
static enum ndr_err_code ndr_push_spoolss_PrinterControl(struct ndr_push *ndr, int ndr_flags, enum spoolss_PrinterControl r)
 
6324
{
 
6325
        NDR_CHECK(ndr_push_enum_uint32(ndr, NDR_SCALARS, r));
 
6326
        return NDR_ERR_SUCCESS;
 
6327
}
 
6328
 
 
6329
static enum ndr_err_code ndr_pull_spoolss_PrinterControl(struct ndr_pull *ndr, int ndr_flags, enum spoolss_PrinterControl *r)
 
6330
{
 
6331
        uint32_t v;
 
6332
        NDR_CHECK(ndr_pull_enum_uint32(ndr, NDR_SCALARS, &v));
 
6333
        *r = v;
 
6334
        return NDR_ERR_SUCCESS;
 
6335
}
 
6336
 
 
6337
_PUBLIC_ void ndr_print_spoolss_PrinterControl(struct ndr_print *ndr, const char *name, enum spoolss_PrinterControl r)
 
6338
{
 
6339
        const char *val = NULL;
 
6340
 
 
6341
        switch (r) {
 
6342
                case SPOOLSS_PRINTER_CONTROL_UNPAUSE: val = "SPOOLSS_PRINTER_CONTROL_UNPAUSE"; break;
 
6343
                case SPOOLSS_PRINTER_CONTROL_PAUSE: val = "SPOOLSS_PRINTER_CONTROL_PAUSE"; break;
 
6344
                case SPOOLSS_PRINTER_CONTROL_RESUME: val = "SPOOLSS_PRINTER_CONTROL_RESUME"; break;
 
6345
                case SPOOLSS_PRINTER_CONTROL_PURGE: val = "SPOOLSS_PRINTER_CONTROL_PURGE"; break;
 
6346
                case SPOOLSS_PRINTER_CONTROL_SET_STATUS: val = "SPOOLSS_PRINTER_CONTROL_SET_STATUS"; break;
 
6347
        }
 
6348
        ndr_print_enum(ndr, name, "ENUM", val, r);
 
6349
}
 
6350
 
 
6351
static enum ndr_err_code ndr_push_spoolss_SetPrinterInfo0(struct ndr_push *ndr, int ndr_flags, const struct spoolss_SetPrinterInfo0 *r)
 
6352
{
 
6353
        if (ndr_flags & NDR_SCALARS) {
 
6354
                NDR_CHECK(ndr_push_align(ndr, 5));
 
6355
                NDR_CHECK(ndr_push_unique_ptr(ndr, r->servername));
 
6356
                NDR_CHECK(ndr_push_unique_ptr(ndr, r->printername));
 
6357
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->cjobs));
 
6358
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->total_jobs));
 
6359
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->total_bytes));
 
6360
                NDR_CHECK(ndr_push_spoolss_Time(ndr, NDR_SCALARS, &r->time));
 
6361
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->global_counter));
 
6362
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->total_pages));
 
6363
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->version));
 
6364
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->free_build));
 
6365
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->spooling));
 
6366
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->max_spooling));
 
6367
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->session_counter));
 
6368
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->num_error_out_of_paper));
 
6369
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->num_error_not_ready));
 
6370
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->job_error));
 
6371
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->number_of_processors));
 
6372
                NDR_CHECK(ndr_push_spoolss_ProcessorType(ndr, NDR_SCALARS, r->processor_type));
 
6373
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->high_part_total_bytes));
 
6374
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->change_id));
 
6375
                NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->last_error));
 
6376
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->status));
 
6377
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->enumerate_network_printers));
 
6378
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->c_setprinter));
 
6379
                NDR_CHECK(ndr_push_spoolss_ProcessorArchitecture(ndr, NDR_SCALARS, r->processor_architecture));
 
6380
                NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->processor_level));
 
6381
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->ref_ic));
 
6382
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->reserved2));
 
6383
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->reserved3));
 
6384
                NDR_CHECK(ndr_push_trailer_align(ndr, 5));
 
6385
        }
 
6386
        if (ndr_flags & NDR_BUFFERS) {
 
6387
                if (r->servername) {
 
6388
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->servername, CH_UTF16)));
 
6389
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0));
 
6390
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->servername, CH_UTF16)));
 
6391
                        NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->servername, ndr_charset_length(r->servername, CH_UTF16), sizeof(uint16_t), CH_UTF16));
 
6392
                }
 
6393
                if (r->printername) {
 
6394
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->printername, CH_UTF16)));
 
6395
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0));
 
6396
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->printername, CH_UTF16)));
 
6397
                        NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->printername, ndr_charset_length(r->printername, CH_UTF16), sizeof(uint16_t), CH_UTF16));
 
6398
                }
 
6399
        }
 
6400
        return NDR_ERR_SUCCESS;
 
6401
}
 
6402
 
 
6403
static enum ndr_err_code ndr_pull_spoolss_SetPrinterInfo0(struct ndr_pull *ndr, int ndr_flags, struct spoolss_SetPrinterInfo0 *r)
 
6404
{
 
6405
        uint32_t _ptr_servername;
 
6406
        TALLOC_CTX *_mem_save_servername_0;
 
6407
        uint32_t _ptr_printername;
 
6408
        TALLOC_CTX *_mem_save_printername_0;
 
6409
        if (ndr_flags & NDR_SCALARS) {
 
6410
                NDR_CHECK(ndr_pull_align(ndr, 5));
 
6411
                NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_servername));
 
6412
                if (_ptr_servername) {
 
6413
                        NDR_PULL_ALLOC(ndr, r->servername);
 
6414
                } else {
 
6415
                        r->servername = NULL;
 
6416
                }
 
6417
                NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_printername));
 
6418
                if (_ptr_printername) {
 
6419
                        NDR_PULL_ALLOC(ndr, r->printername);
 
6420
                } else {
 
6421
                        r->printername = NULL;
 
6422
                }
 
6423
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->cjobs));
 
6424
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->total_jobs));
 
6425
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->total_bytes));
 
6426
                NDR_CHECK(ndr_pull_spoolss_Time(ndr, NDR_SCALARS, &r->time));
 
6427
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->global_counter));
 
6428
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->total_pages));
 
6429
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->version));
 
6430
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->free_build));
 
6431
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->spooling));
 
6432
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->max_spooling));
 
6433
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->session_counter));
 
6434
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->num_error_out_of_paper));
 
6435
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->num_error_not_ready));
 
6436
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->job_error));
 
6437
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->number_of_processors));
 
6438
                NDR_CHECK(ndr_pull_spoolss_ProcessorType(ndr, NDR_SCALARS, &r->processor_type));
 
6439
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->high_part_total_bytes));
 
6440
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->change_id));
 
6441
                NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->last_error));
 
6442
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->status));
 
6443
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->enumerate_network_printers));
 
6444
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->c_setprinter));
 
6445
                NDR_CHECK(ndr_pull_spoolss_ProcessorArchitecture(ndr, NDR_SCALARS, &r->processor_architecture));
 
6446
                NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->processor_level));
 
6447
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->ref_ic));
 
6448
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->reserved2));
 
6449
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->reserved3));
 
6450
                NDR_CHECK(ndr_pull_trailer_align(ndr, 5));
 
6451
        }
 
6452
        if (ndr_flags & NDR_BUFFERS) {
 
6453
                if (r->servername) {
 
6454
                        _mem_save_servername_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
6455
                        NDR_PULL_SET_MEM_CTX(ndr, r->servername, 0);
 
6456
                        NDR_CHECK(ndr_pull_array_size(ndr, &r->servername));
 
6457
                        NDR_CHECK(ndr_pull_array_length(ndr, &r->servername));
 
6458
                        if (ndr_get_array_length(ndr, &r->servername) > ndr_get_array_size(ndr, &r->servername)) {
 
6459
                                return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->servername), ndr_get_array_length(ndr, &r->servername));
 
6460
                        }
 
6461
                        NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->servername), sizeof(uint16_t)));
 
6462
                        NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->servername, ndr_get_array_length(ndr, &r->servername), sizeof(uint16_t), CH_UTF16));
 
6463
                        NDR_PULL_SET_MEM_CTX(ndr, _mem_save_servername_0, 0);
 
6464
                }
 
6465
                if (r->printername) {
 
6466
                        _mem_save_printername_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
6467
                        NDR_PULL_SET_MEM_CTX(ndr, r->printername, 0);
 
6468
                        NDR_CHECK(ndr_pull_array_size(ndr, &r->printername));
 
6469
                        NDR_CHECK(ndr_pull_array_length(ndr, &r->printername));
 
6470
                        if (ndr_get_array_length(ndr, &r->printername) > ndr_get_array_size(ndr, &r->printername)) {
 
6471
                                return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->printername), ndr_get_array_length(ndr, &r->printername));
 
6472
                        }
 
6473
                        NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->printername), sizeof(uint16_t)));
 
6474
                        NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->printername, ndr_get_array_length(ndr, &r->printername), sizeof(uint16_t), CH_UTF16));
 
6475
                        NDR_PULL_SET_MEM_CTX(ndr, _mem_save_printername_0, 0);
 
6476
                }
 
6477
        }
 
6478
        return NDR_ERR_SUCCESS;
 
6479
}
 
6480
 
 
6481
_PUBLIC_ void ndr_print_spoolss_SetPrinterInfo0(struct ndr_print *ndr, const char *name, const struct spoolss_SetPrinterInfo0 *r)
 
6482
{
 
6483
        ndr_print_struct(ndr, name, "spoolss_SetPrinterInfo0");
 
6484
        ndr->depth++;
 
6485
        ndr_print_ptr(ndr, "servername", r->servername);
 
6486
        ndr->depth++;
 
6487
        if (r->servername) {
 
6488
                ndr_print_string(ndr, "servername", r->servername);
 
6489
        }
 
6490
        ndr->depth--;
 
6491
        ndr_print_ptr(ndr, "printername", r->printername);
 
6492
        ndr->depth++;
 
6493
        if (r->printername) {
 
6494
                ndr_print_string(ndr, "printername", r->printername);
 
6495
        }
 
6496
        ndr->depth--;
 
6497
        ndr_print_uint32(ndr, "cjobs", r->cjobs);
 
6498
        ndr_print_uint32(ndr, "total_jobs", r->total_jobs);
 
6499
        ndr_print_uint32(ndr, "total_bytes", r->total_bytes);
 
6500
        ndr_print_spoolss_Time(ndr, "time", &r->time);
 
6501
        ndr_print_uint32(ndr, "global_counter", r->global_counter);
 
6502
        ndr_print_uint32(ndr, "total_pages", r->total_pages);
 
6503
        ndr_print_uint32(ndr, "version", r->version);
 
6504
        ndr_print_uint32(ndr, "free_build", r->free_build);
 
6505
        ndr_print_uint32(ndr, "spooling", r->spooling);
 
6506
        ndr_print_uint32(ndr, "max_spooling", r->max_spooling);
 
6507
        ndr_print_uint32(ndr, "session_counter", r->session_counter);
 
6508
        ndr_print_uint32(ndr, "num_error_out_of_paper", r->num_error_out_of_paper);
 
6509
        ndr_print_uint32(ndr, "num_error_not_ready", r->num_error_not_ready);
 
6510
        ndr_print_uint32(ndr, "job_error", r->job_error);
 
6511
        ndr_print_uint32(ndr, "number_of_processors", r->number_of_processors);
 
6512
        ndr_print_spoolss_ProcessorType(ndr, "processor_type", r->processor_type);
 
6513
        ndr_print_uint32(ndr, "high_part_total_bytes", r->high_part_total_bytes);
 
6514
        ndr_print_uint32(ndr, "change_id", r->change_id);
 
6515
        ndr_print_WERROR(ndr, "last_error", r->last_error);
 
6516
        ndr_print_uint32(ndr, "status", r->status);
 
6517
        ndr_print_uint32(ndr, "enumerate_network_printers", r->enumerate_network_printers);
 
6518
        ndr_print_uint32(ndr, "c_setprinter", r->c_setprinter);
 
6519
        ndr_print_spoolss_ProcessorArchitecture(ndr, "processor_architecture", r->processor_architecture);
 
6520
        ndr_print_uint16(ndr, "processor_level", r->processor_level);
 
6521
        ndr_print_uint32(ndr, "ref_ic", r->ref_ic);
 
6522
        ndr_print_uint32(ndr, "reserved2", r->reserved2);
 
6523
        ndr_print_uint32(ndr, "reserved3", r->reserved3);
 
6524
        ndr->depth--;
 
6525
}
 
6526
 
 
6527
static enum ndr_err_code ndr_push_spoolss_SetPrinterInfo1(struct ndr_push *ndr, int ndr_flags, const struct spoolss_SetPrinterInfo1 *r)
 
6528
{
 
6529
        if (ndr_flags & NDR_SCALARS) {
 
6530
                NDR_CHECK(ndr_push_align(ndr, 5));
 
6531
                NDR_CHECK(ndr_push_spoolss_PrinterAttributes(ndr, NDR_SCALARS, r->flags));
 
6532
                NDR_CHECK(ndr_push_unique_ptr(ndr, r->description));
 
6533
                NDR_CHECK(ndr_push_unique_ptr(ndr, r->name));
 
6534
                NDR_CHECK(ndr_push_unique_ptr(ndr, r->comment));
 
6535
                NDR_CHECK(ndr_push_trailer_align(ndr, 5));
 
6536
        }
 
6537
        if (ndr_flags & NDR_BUFFERS) {
 
6538
                if (r->description) {
 
6539
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->description, CH_UTF16)));
 
6540
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0));
 
6541
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->description, CH_UTF16)));
 
6542
                        NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->description, ndr_charset_length(r->description, CH_UTF16), sizeof(uint16_t), CH_UTF16));
 
6543
                }
 
6544
                if (r->name) {
 
6545
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->name, CH_UTF16)));
 
6546
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0));
 
6547
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->name, CH_UTF16)));
 
6548
                        NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->name, ndr_charset_length(r->name, CH_UTF16), sizeof(uint16_t), CH_UTF16));
 
6549
                }
 
6550
                if (r->comment) {
 
6551
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->comment, CH_UTF16)));
 
6552
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0));
 
6553
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->comment, CH_UTF16)));
 
6554
                        NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->comment, ndr_charset_length(r->comment, CH_UTF16), sizeof(uint16_t), CH_UTF16));
 
6555
                }
 
6556
        }
 
6557
        return NDR_ERR_SUCCESS;
 
6558
}
 
6559
 
 
6560
static enum ndr_err_code ndr_pull_spoolss_SetPrinterInfo1(struct ndr_pull *ndr, int ndr_flags, struct spoolss_SetPrinterInfo1 *r)
 
6561
{
 
6562
        uint32_t _ptr_description;
 
6563
        TALLOC_CTX *_mem_save_description_0;
 
6564
        uint32_t _ptr_name;
 
6565
        TALLOC_CTX *_mem_save_name_0;
 
6566
        uint32_t _ptr_comment;
 
6567
        TALLOC_CTX *_mem_save_comment_0;
 
6568
        if (ndr_flags & NDR_SCALARS) {
 
6569
                NDR_CHECK(ndr_pull_align(ndr, 5));
 
6570
                NDR_CHECK(ndr_pull_spoolss_PrinterAttributes(ndr, NDR_SCALARS, &r->flags));
 
6571
                NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_description));
 
6572
                if (_ptr_description) {
 
6573
                        NDR_PULL_ALLOC(ndr, r->description);
 
6574
                } else {
 
6575
                        r->description = NULL;
 
6576
                }
 
6577
                NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_name));
 
6578
                if (_ptr_name) {
 
6579
                        NDR_PULL_ALLOC(ndr, r->name);
 
6580
                } else {
 
6581
                        r->name = NULL;
 
6582
                }
 
6583
                NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_comment));
 
6584
                if (_ptr_comment) {
 
6585
                        NDR_PULL_ALLOC(ndr, r->comment);
 
6586
                } else {
 
6587
                        r->comment = NULL;
 
6588
                }
 
6589
                NDR_CHECK(ndr_pull_trailer_align(ndr, 5));
 
6590
        }
 
6591
        if (ndr_flags & NDR_BUFFERS) {
 
6592
                if (r->description) {
 
6593
                        _mem_save_description_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
6594
                        NDR_PULL_SET_MEM_CTX(ndr, r->description, 0);
 
6595
                        NDR_CHECK(ndr_pull_array_size(ndr, &r->description));
 
6596
                        NDR_CHECK(ndr_pull_array_length(ndr, &r->description));
 
6597
                        if (ndr_get_array_length(ndr, &r->description) > ndr_get_array_size(ndr, &r->description)) {
 
6598
                                return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->description), ndr_get_array_length(ndr, &r->description));
 
6599
                        }
 
6600
                        NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->description), sizeof(uint16_t)));
 
6601
                        NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->description, ndr_get_array_length(ndr, &r->description), sizeof(uint16_t), CH_UTF16));
 
6602
                        NDR_PULL_SET_MEM_CTX(ndr, _mem_save_description_0, 0);
 
6603
                }
 
6604
                if (r->name) {
 
6605
                        _mem_save_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
6606
                        NDR_PULL_SET_MEM_CTX(ndr, r->name, 0);
 
6607
                        NDR_CHECK(ndr_pull_array_size(ndr, &r->name));
 
6608
                        NDR_CHECK(ndr_pull_array_length(ndr, &r->name));
 
6609
                        if (ndr_get_array_length(ndr, &r->name) > ndr_get_array_size(ndr, &r->name)) {
 
6610
                                return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->name), ndr_get_array_length(ndr, &r->name));
 
6611
                        }
 
6612
                        NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->name), sizeof(uint16_t)));
 
6613
                        NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->name, ndr_get_array_length(ndr, &r->name), sizeof(uint16_t), CH_UTF16));
 
6614
                        NDR_PULL_SET_MEM_CTX(ndr, _mem_save_name_0, 0);
 
6615
                }
 
6616
                if (r->comment) {
 
6617
                        _mem_save_comment_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
6618
                        NDR_PULL_SET_MEM_CTX(ndr, r->comment, 0);
 
6619
                        NDR_CHECK(ndr_pull_array_size(ndr, &r->comment));
 
6620
                        NDR_CHECK(ndr_pull_array_length(ndr, &r->comment));
 
6621
                        if (ndr_get_array_length(ndr, &r->comment) > ndr_get_array_size(ndr, &r->comment)) {
 
6622
                                return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->comment), ndr_get_array_length(ndr, &r->comment));
 
6623
                        }
 
6624
                        NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->comment), sizeof(uint16_t)));
 
6625
                        NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->comment, ndr_get_array_length(ndr, &r->comment), sizeof(uint16_t), CH_UTF16));
 
6626
                        NDR_PULL_SET_MEM_CTX(ndr, _mem_save_comment_0, 0);
 
6627
                }
 
6628
        }
 
6629
        return NDR_ERR_SUCCESS;
 
6630
}
 
6631
 
 
6632
_PUBLIC_ void ndr_print_spoolss_SetPrinterInfo1(struct ndr_print *ndr, const char *name, const struct spoolss_SetPrinterInfo1 *r)
 
6633
{
 
6634
        ndr_print_struct(ndr, name, "spoolss_SetPrinterInfo1");
 
6635
        ndr->depth++;
 
6636
        ndr_print_spoolss_PrinterAttributes(ndr, "flags", r->flags);
 
6637
        ndr_print_ptr(ndr, "description", r->description);
 
6638
        ndr->depth++;
 
6639
        if (r->description) {
 
6640
                ndr_print_string(ndr, "description", r->description);
 
6641
        }
 
6642
        ndr->depth--;
 
6643
        ndr_print_ptr(ndr, "name", r->name);
 
6644
        ndr->depth++;
 
6645
        if (r->name) {
 
6646
                ndr_print_string(ndr, "name", r->name);
 
6647
        }
 
6648
        ndr->depth--;
 
6649
        ndr_print_ptr(ndr, "comment", r->comment);
 
6650
        ndr->depth++;
 
6651
        if (r->comment) {
 
6652
                ndr_print_string(ndr, "comment", r->comment);
 
6653
        }
 
6654
        ndr->depth--;
 
6655
        ndr->depth--;
 
6656
}
 
6657
 
 
6658
static enum ndr_err_code ndr_push_spoolss_SetPrinterInfo2(struct ndr_push *ndr, int ndr_flags, const struct spoolss_SetPrinterInfo2 *r)
 
6659
{
 
6660
        if (ndr_flags & NDR_SCALARS) {
 
6661
                NDR_CHECK(ndr_push_align(ndr, 5));
 
6662
                NDR_CHECK(ndr_push_unique_ptr(ndr, r->servername));
 
6663
                NDR_CHECK(ndr_push_unique_ptr(ndr, r->printername));
 
6664
                NDR_CHECK(ndr_push_unique_ptr(ndr, r->sharename));
 
6665
                NDR_CHECK(ndr_push_unique_ptr(ndr, r->portname));
 
6666
                NDR_CHECK(ndr_push_unique_ptr(ndr, r->drivername));
 
6667
                NDR_CHECK(ndr_push_unique_ptr(ndr, r->comment));
 
6668
                NDR_CHECK(ndr_push_unique_ptr(ndr, r->location));
 
6669
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->devmode_ptr));
 
6670
                NDR_CHECK(ndr_push_unique_ptr(ndr, r->sepfile));
 
6671
                NDR_CHECK(ndr_push_unique_ptr(ndr, r->printprocessor));
 
6672
                NDR_CHECK(ndr_push_unique_ptr(ndr, r->datatype));
 
6673
                NDR_CHECK(ndr_push_unique_ptr(ndr, r->parameters));
 
6674
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->secdesc_ptr));
 
6675
                NDR_CHECK(ndr_push_spoolss_PrinterAttributes(ndr, NDR_SCALARS, r->attributes));
 
6676
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->priority));
 
6677
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->defaultpriority));
 
6678
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->starttime));
 
6679
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->untiltime));
 
6680
                NDR_CHECK(ndr_push_spoolss_PrinterStatus(ndr, NDR_SCALARS, r->status));
 
6681
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->cjobs));
 
6682
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->averageppm));
 
6683
                NDR_CHECK(ndr_push_trailer_align(ndr, 5));
 
6684
        }
 
6685
        if (ndr_flags & NDR_BUFFERS) {
 
6686
                if (r->servername) {
 
6687
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->servername, CH_UTF16)));
 
6688
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0));
 
6689
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->servername, CH_UTF16)));
 
6690
                        NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->servername, ndr_charset_length(r->servername, CH_UTF16), sizeof(uint16_t), CH_UTF16));
 
6691
                }
 
6692
                if (r->printername) {
 
6693
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->printername, CH_UTF16)));
 
6694
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0));
 
6695
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->printername, CH_UTF16)));
 
6696
                        NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->printername, ndr_charset_length(r->printername, CH_UTF16), sizeof(uint16_t), CH_UTF16));
 
6697
                }
 
6698
                if (r->sharename) {
 
6699
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->sharename, CH_UTF16)));
 
6700
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0));
 
6701
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->sharename, CH_UTF16)));
 
6702
                        NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->sharename, ndr_charset_length(r->sharename, CH_UTF16), sizeof(uint16_t), CH_UTF16));
 
6703
                }
 
6704
                if (r->portname) {
 
6705
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->portname, CH_UTF16)));
 
6706
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0));
 
6707
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->portname, CH_UTF16)));
 
6708
                        NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->portname, ndr_charset_length(r->portname, CH_UTF16), sizeof(uint16_t), CH_UTF16));
 
6709
                }
 
6710
                if (r->drivername) {
 
6711
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->drivername, CH_UTF16)));
 
6712
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0));
 
6713
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->drivername, CH_UTF16)));
 
6714
                        NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->drivername, ndr_charset_length(r->drivername, CH_UTF16), sizeof(uint16_t), CH_UTF16));
 
6715
                }
 
6716
                if (r->comment) {
 
6717
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->comment, CH_UTF16)));
 
6718
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0));
 
6719
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->comment, CH_UTF16)));
 
6720
                        NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->comment, ndr_charset_length(r->comment, CH_UTF16), sizeof(uint16_t), CH_UTF16));
 
6721
                }
 
6722
                if (r->location) {
 
6723
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->location, CH_UTF16)));
 
6724
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0));
 
6725
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->location, CH_UTF16)));
 
6726
                        NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->location, ndr_charset_length(r->location, CH_UTF16), sizeof(uint16_t), CH_UTF16));
 
6727
                }
 
6728
                if (r->sepfile) {
 
6729
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->sepfile, CH_UTF16)));
 
6730
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0));
 
6731
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->sepfile, CH_UTF16)));
 
6732
                        NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->sepfile, ndr_charset_length(r->sepfile, CH_UTF16), sizeof(uint16_t), CH_UTF16));
 
6733
                }
 
6734
                if (r->printprocessor) {
 
6735
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->printprocessor, CH_UTF16)));
 
6736
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0));
 
6737
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->printprocessor, CH_UTF16)));
 
6738
                        NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->printprocessor, ndr_charset_length(r->printprocessor, CH_UTF16), sizeof(uint16_t), CH_UTF16));
 
6739
                }
 
6740
                if (r->datatype) {
 
6741
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->datatype, CH_UTF16)));
 
6742
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0));
 
6743
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->datatype, CH_UTF16)));
 
6744
                        NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->datatype, ndr_charset_length(r->datatype, CH_UTF16), sizeof(uint16_t), CH_UTF16));
 
6745
                }
 
6746
                if (r->parameters) {
 
6747
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->parameters, CH_UTF16)));
 
6748
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0));
 
6749
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->parameters, CH_UTF16)));
 
6750
                        NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->parameters, ndr_charset_length(r->parameters, CH_UTF16), sizeof(uint16_t), CH_UTF16));
 
6751
                }
 
6752
        }
 
6753
        return NDR_ERR_SUCCESS;
 
6754
}
 
6755
 
 
6756
static enum ndr_err_code ndr_pull_spoolss_SetPrinterInfo2(struct ndr_pull *ndr, int ndr_flags, struct spoolss_SetPrinterInfo2 *r)
 
6757
{
 
6758
        uint32_t _ptr_servername;
 
6759
        TALLOC_CTX *_mem_save_servername_0;
 
6760
        uint32_t _ptr_printername;
 
6761
        TALLOC_CTX *_mem_save_printername_0;
 
6762
        uint32_t _ptr_sharename;
 
6763
        TALLOC_CTX *_mem_save_sharename_0;
 
6764
        uint32_t _ptr_portname;
 
6765
        TALLOC_CTX *_mem_save_portname_0;
 
6766
        uint32_t _ptr_drivername;
 
6767
        TALLOC_CTX *_mem_save_drivername_0;
 
6768
        uint32_t _ptr_comment;
 
6769
        TALLOC_CTX *_mem_save_comment_0;
 
6770
        uint32_t _ptr_location;
 
6771
        TALLOC_CTX *_mem_save_location_0;
 
6772
        uint32_t _ptr_sepfile;
 
6773
        TALLOC_CTX *_mem_save_sepfile_0;
 
6774
        uint32_t _ptr_printprocessor;
 
6775
        TALLOC_CTX *_mem_save_printprocessor_0;
 
6776
        uint32_t _ptr_datatype;
 
6777
        TALLOC_CTX *_mem_save_datatype_0;
 
6778
        uint32_t _ptr_parameters;
 
6779
        TALLOC_CTX *_mem_save_parameters_0;
 
6780
        if (ndr_flags & NDR_SCALARS) {
 
6781
                NDR_CHECK(ndr_pull_align(ndr, 5));
 
6782
                NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_servername));
 
6783
                if (_ptr_servername) {
 
6784
                        NDR_PULL_ALLOC(ndr, r->servername);
 
6785
                } else {
 
6786
                        r->servername = NULL;
 
6787
                }
 
6788
                NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_printername));
 
6789
                if (_ptr_printername) {
 
6790
                        NDR_PULL_ALLOC(ndr, r->printername);
 
6791
                } else {
 
6792
                        r->printername = NULL;
 
6793
                }
 
6794
                NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_sharename));
 
6795
                if (_ptr_sharename) {
 
6796
                        NDR_PULL_ALLOC(ndr, r->sharename);
 
6797
                } else {
 
6798
                        r->sharename = NULL;
 
6799
                }
 
6800
                NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_portname));
 
6801
                if (_ptr_portname) {
 
6802
                        NDR_PULL_ALLOC(ndr, r->portname);
 
6803
                } else {
 
6804
                        r->portname = NULL;
 
6805
                }
 
6806
                NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_drivername));
 
6807
                if (_ptr_drivername) {
 
6808
                        NDR_PULL_ALLOC(ndr, r->drivername);
 
6809
                } else {
 
6810
                        r->drivername = NULL;
 
6811
                }
 
6812
                NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_comment));
 
6813
                if (_ptr_comment) {
 
6814
                        NDR_PULL_ALLOC(ndr, r->comment);
 
6815
                } else {
 
6816
                        r->comment = NULL;
 
6817
                }
 
6818
                NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_location));
 
6819
                if (_ptr_location) {
 
6820
                        NDR_PULL_ALLOC(ndr, r->location);
 
6821
                } else {
 
6822
                        r->location = NULL;
 
6823
                }
 
6824
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->devmode_ptr));
 
6825
                NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_sepfile));
 
6826
                if (_ptr_sepfile) {
 
6827
                        NDR_PULL_ALLOC(ndr, r->sepfile);
 
6828
                } else {
 
6829
                        r->sepfile = NULL;
 
6830
                }
 
6831
                NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_printprocessor));
 
6832
                if (_ptr_printprocessor) {
 
6833
                        NDR_PULL_ALLOC(ndr, r->printprocessor);
 
6834
                } else {
 
6835
                        r->printprocessor = NULL;
 
6836
                }
 
6837
                NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_datatype));
 
6838
                if (_ptr_datatype) {
 
6839
                        NDR_PULL_ALLOC(ndr, r->datatype);
 
6840
                } else {
 
6841
                        r->datatype = NULL;
 
6842
                }
 
6843
                NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_parameters));
 
6844
                if (_ptr_parameters) {
 
6845
                        NDR_PULL_ALLOC(ndr, r->parameters);
 
6846
                } else {
 
6847
                        r->parameters = NULL;
 
6848
                }
 
6849
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->secdesc_ptr));
 
6850
                NDR_CHECK(ndr_pull_spoolss_PrinterAttributes(ndr, NDR_SCALARS, &r->attributes));
 
6851
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->priority));
 
6852
                if (r->priority > 99) {
 
6853
                        return ndr_pull_error(ndr, NDR_ERR_RANGE, "value out of range");
 
6854
                }
 
6855
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->defaultpriority));
 
6856
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->starttime));
 
6857
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->untiltime));
 
6858
                NDR_CHECK(ndr_pull_spoolss_PrinterStatus(ndr, NDR_SCALARS, &r->status));
 
6859
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->cjobs));
 
6860
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->averageppm));
 
6861
                NDR_CHECK(ndr_pull_trailer_align(ndr, 5));
 
6862
        }
 
6863
        if (ndr_flags & NDR_BUFFERS) {
 
6864
                if (r->servername) {
 
6865
                        _mem_save_servername_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
6866
                        NDR_PULL_SET_MEM_CTX(ndr, r->servername, 0);
 
6867
                        NDR_CHECK(ndr_pull_array_size(ndr, &r->servername));
 
6868
                        NDR_CHECK(ndr_pull_array_length(ndr, &r->servername));
 
6869
                        if (ndr_get_array_length(ndr, &r->servername) > ndr_get_array_size(ndr, &r->servername)) {
 
6870
                                return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->servername), ndr_get_array_length(ndr, &r->servername));
 
6871
                        }
 
6872
                        NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->servername), sizeof(uint16_t)));
 
6873
                        NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->servername, ndr_get_array_length(ndr, &r->servername), sizeof(uint16_t), CH_UTF16));
 
6874
                        NDR_PULL_SET_MEM_CTX(ndr, _mem_save_servername_0, 0);
 
6875
                }
 
6876
                if (r->printername) {
 
6877
                        _mem_save_printername_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
6878
                        NDR_PULL_SET_MEM_CTX(ndr, r->printername, 0);
 
6879
                        NDR_CHECK(ndr_pull_array_size(ndr, &r->printername));
 
6880
                        NDR_CHECK(ndr_pull_array_length(ndr, &r->printername));
 
6881
                        if (ndr_get_array_length(ndr, &r->printername) > ndr_get_array_size(ndr, &r->printername)) {
 
6882
                                return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->printername), ndr_get_array_length(ndr, &r->printername));
 
6883
                        }
 
6884
                        NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->printername), sizeof(uint16_t)));
 
6885
                        NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->printername, ndr_get_array_length(ndr, &r->printername), sizeof(uint16_t), CH_UTF16));
 
6886
                        NDR_PULL_SET_MEM_CTX(ndr, _mem_save_printername_0, 0);
 
6887
                }
 
6888
                if (r->sharename) {
 
6889
                        _mem_save_sharename_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
6890
                        NDR_PULL_SET_MEM_CTX(ndr, r->sharename, 0);
 
6891
                        NDR_CHECK(ndr_pull_array_size(ndr, &r->sharename));
 
6892
                        NDR_CHECK(ndr_pull_array_length(ndr, &r->sharename));
 
6893
                        if (ndr_get_array_length(ndr, &r->sharename) > ndr_get_array_size(ndr, &r->sharename)) {
 
6894
                                return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->sharename), ndr_get_array_length(ndr, &r->sharename));
 
6895
                        }
 
6896
                        NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->sharename), sizeof(uint16_t)));
 
6897
                        NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->sharename, ndr_get_array_length(ndr, &r->sharename), sizeof(uint16_t), CH_UTF16));
 
6898
                        NDR_PULL_SET_MEM_CTX(ndr, _mem_save_sharename_0, 0);
 
6899
                }
 
6900
                if (r->portname) {
 
6901
                        _mem_save_portname_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
6902
                        NDR_PULL_SET_MEM_CTX(ndr, r->portname, 0);
 
6903
                        NDR_CHECK(ndr_pull_array_size(ndr, &r->portname));
 
6904
                        NDR_CHECK(ndr_pull_array_length(ndr, &r->portname));
 
6905
                        if (ndr_get_array_length(ndr, &r->portname) > ndr_get_array_size(ndr, &r->portname)) {
 
6906
                                return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->portname), ndr_get_array_length(ndr, &r->portname));
 
6907
                        }
 
6908
                        NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->portname), sizeof(uint16_t)));
 
6909
                        NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->portname, ndr_get_array_length(ndr, &r->portname), sizeof(uint16_t), CH_UTF16));
 
6910
                        NDR_PULL_SET_MEM_CTX(ndr, _mem_save_portname_0, 0);
 
6911
                }
 
6912
                if (r->drivername) {
 
6913
                        _mem_save_drivername_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
6914
                        NDR_PULL_SET_MEM_CTX(ndr, r->drivername, 0);
 
6915
                        NDR_CHECK(ndr_pull_array_size(ndr, &r->drivername));
 
6916
                        NDR_CHECK(ndr_pull_array_length(ndr, &r->drivername));
 
6917
                        if (ndr_get_array_length(ndr, &r->drivername) > ndr_get_array_size(ndr, &r->drivername)) {
 
6918
                                return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->drivername), ndr_get_array_length(ndr, &r->drivername));
 
6919
                        }
 
6920
                        NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->drivername), sizeof(uint16_t)));
 
6921
                        NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->drivername, ndr_get_array_length(ndr, &r->drivername), sizeof(uint16_t), CH_UTF16));
 
6922
                        NDR_PULL_SET_MEM_CTX(ndr, _mem_save_drivername_0, 0);
 
6923
                }
 
6924
                if (r->comment) {
 
6925
                        _mem_save_comment_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
6926
                        NDR_PULL_SET_MEM_CTX(ndr, r->comment, 0);
 
6927
                        NDR_CHECK(ndr_pull_array_size(ndr, &r->comment));
 
6928
                        NDR_CHECK(ndr_pull_array_length(ndr, &r->comment));
 
6929
                        if (ndr_get_array_length(ndr, &r->comment) > ndr_get_array_size(ndr, &r->comment)) {
 
6930
                                return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->comment), ndr_get_array_length(ndr, &r->comment));
 
6931
                        }
 
6932
                        NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->comment), sizeof(uint16_t)));
 
6933
                        NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->comment, ndr_get_array_length(ndr, &r->comment), sizeof(uint16_t), CH_UTF16));
 
6934
                        NDR_PULL_SET_MEM_CTX(ndr, _mem_save_comment_0, 0);
 
6935
                }
 
6936
                if (r->location) {
 
6937
                        _mem_save_location_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
6938
                        NDR_PULL_SET_MEM_CTX(ndr, r->location, 0);
 
6939
                        NDR_CHECK(ndr_pull_array_size(ndr, &r->location));
 
6940
                        NDR_CHECK(ndr_pull_array_length(ndr, &r->location));
 
6941
                        if (ndr_get_array_length(ndr, &r->location) > ndr_get_array_size(ndr, &r->location)) {
 
6942
                                return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->location), ndr_get_array_length(ndr, &r->location));
 
6943
                        }
 
6944
                        NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->location), sizeof(uint16_t)));
 
6945
                        NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->location, ndr_get_array_length(ndr, &r->location), sizeof(uint16_t), CH_UTF16));
 
6946
                        NDR_PULL_SET_MEM_CTX(ndr, _mem_save_location_0, 0);
 
6947
                }
 
6948
                if (r->sepfile) {
 
6949
                        _mem_save_sepfile_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
6950
                        NDR_PULL_SET_MEM_CTX(ndr, r->sepfile, 0);
 
6951
                        NDR_CHECK(ndr_pull_array_size(ndr, &r->sepfile));
 
6952
                        NDR_CHECK(ndr_pull_array_length(ndr, &r->sepfile));
 
6953
                        if (ndr_get_array_length(ndr, &r->sepfile) > ndr_get_array_size(ndr, &r->sepfile)) {
 
6954
                                return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->sepfile), ndr_get_array_length(ndr, &r->sepfile));
 
6955
                        }
 
6956
                        NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->sepfile), sizeof(uint16_t)));
 
6957
                        NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->sepfile, ndr_get_array_length(ndr, &r->sepfile), sizeof(uint16_t), CH_UTF16));
 
6958
                        NDR_PULL_SET_MEM_CTX(ndr, _mem_save_sepfile_0, 0);
 
6959
                }
 
6960
                if (r->printprocessor) {
 
6961
                        _mem_save_printprocessor_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
6962
                        NDR_PULL_SET_MEM_CTX(ndr, r->printprocessor, 0);
 
6963
                        NDR_CHECK(ndr_pull_array_size(ndr, &r->printprocessor));
 
6964
                        NDR_CHECK(ndr_pull_array_length(ndr, &r->printprocessor));
 
6965
                        if (ndr_get_array_length(ndr, &r->printprocessor) > ndr_get_array_size(ndr, &r->printprocessor)) {
 
6966
                                return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->printprocessor), ndr_get_array_length(ndr, &r->printprocessor));
 
6967
                        }
 
6968
                        NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->printprocessor), sizeof(uint16_t)));
 
6969
                        NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->printprocessor, ndr_get_array_length(ndr, &r->printprocessor), sizeof(uint16_t), CH_UTF16));
 
6970
                        NDR_PULL_SET_MEM_CTX(ndr, _mem_save_printprocessor_0, 0);
 
6971
                }
 
6972
                if (r->datatype) {
 
6973
                        _mem_save_datatype_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
6974
                        NDR_PULL_SET_MEM_CTX(ndr, r->datatype, 0);
 
6975
                        NDR_CHECK(ndr_pull_array_size(ndr, &r->datatype));
 
6976
                        NDR_CHECK(ndr_pull_array_length(ndr, &r->datatype));
 
6977
                        if (ndr_get_array_length(ndr, &r->datatype) > ndr_get_array_size(ndr, &r->datatype)) {
 
6978
                                return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->datatype), ndr_get_array_length(ndr, &r->datatype));
 
6979
                        }
 
6980
                        NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->datatype), sizeof(uint16_t)));
 
6981
                        NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->datatype, ndr_get_array_length(ndr, &r->datatype), sizeof(uint16_t), CH_UTF16));
 
6982
                        NDR_PULL_SET_MEM_CTX(ndr, _mem_save_datatype_0, 0);
 
6983
                }
 
6984
                if (r->parameters) {
 
6985
                        _mem_save_parameters_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
6986
                        NDR_PULL_SET_MEM_CTX(ndr, r->parameters, 0);
 
6987
                        NDR_CHECK(ndr_pull_array_size(ndr, &r->parameters));
 
6988
                        NDR_CHECK(ndr_pull_array_length(ndr, &r->parameters));
 
6989
                        if (ndr_get_array_length(ndr, &r->parameters) > ndr_get_array_size(ndr, &r->parameters)) {
 
6990
                                return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->parameters), ndr_get_array_length(ndr, &r->parameters));
 
6991
                        }
 
6992
                        NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->parameters), sizeof(uint16_t)));
 
6993
                        NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->parameters, ndr_get_array_length(ndr, &r->parameters), sizeof(uint16_t), CH_UTF16));
 
6994
                        NDR_PULL_SET_MEM_CTX(ndr, _mem_save_parameters_0, 0);
 
6995
                }
 
6996
        }
 
6997
        return NDR_ERR_SUCCESS;
 
6998
}
 
6999
 
 
7000
_PUBLIC_ void ndr_print_spoolss_SetPrinterInfo2(struct ndr_print *ndr, const char *name, const struct spoolss_SetPrinterInfo2 *r)
 
7001
{
 
7002
        ndr_print_struct(ndr, name, "spoolss_SetPrinterInfo2");
 
7003
        ndr->depth++;
 
7004
        ndr_print_ptr(ndr, "servername", r->servername);
 
7005
        ndr->depth++;
 
7006
        if (r->servername) {
 
7007
                ndr_print_string(ndr, "servername", r->servername);
 
7008
        }
 
7009
        ndr->depth--;
 
7010
        ndr_print_ptr(ndr, "printername", r->printername);
 
7011
        ndr->depth++;
 
7012
        if (r->printername) {
 
7013
                ndr_print_string(ndr, "printername", r->printername);
 
7014
        }
 
7015
        ndr->depth--;
 
7016
        ndr_print_ptr(ndr, "sharename", r->sharename);
 
7017
        ndr->depth++;
 
7018
        if (r->sharename) {
 
7019
                ndr_print_string(ndr, "sharename", r->sharename);
 
7020
        }
 
7021
        ndr->depth--;
 
7022
        ndr_print_ptr(ndr, "portname", r->portname);
 
7023
        ndr->depth++;
 
7024
        if (r->portname) {
 
7025
                ndr_print_string(ndr, "portname", r->portname);
 
7026
        }
 
7027
        ndr->depth--;
 
7028
        ndr_print_ptr(ndr, "drivername", r->drivername);
 
7029
        ndr->depth++;
 
7030
        if (r->drivername) {
 
7031
                ndr_print_string(ndr, "drivername", r->drivername);
 
7032
        }
 
7033
        ndr->depth--;
 
7034
        ndr_print_ptr(ndr, "comment", r->comment);
 
7035
        ndr->depth++;
 
7036
        if (r->comment) {
 
7037
                ndr_print_string(ndr, "comment", r->comment);
 
7038
        }
 
7039
        ndr->depth--;
 
7040
        ndr_print_ptr(ndr, "location", r->location);
 
7041
        ndr->depth++;
 
7042
        if (r->location) {
 
7043
                ndr_print_string(ndr, "location", r->location);
 
7044
        }
 
7045
        ndr->depth--;
 
7046
        ndr_print_uint32(ndr, "devmode_ptr", r->devmode_ptr);
 
7047
        ndr_print_ptr(ndr, "sepfile", r->sepfile);
 
7048
        ndr->depth++;
 
7049
        if (r->sepfile) {
 
7050
                ndr_print_string(ndr, "sepfile", r->sepfile);
 
7051
        }
 
7052
        ndr->depth--;
 
7053
        ndr_print_ptr(ndr, "printprocessor", r->printprocessor);
 
7054
        ndr->depth++;
 
7055
        if (r->printprocessor) {
 
7056
                ndr_print_string(ndr, "printprocessor", r->printprocessor);
 
7057
        }
 
7058
        ndr->depth--;
 
7059
        ndr_print_ptr(ndr, "datatype", r->datatype);
 
7060
        ndr->depth++;
 
7061
        if (r->datatype) {
 
7062
                ndr_print_string(ndr, "datatype", r->datatype);
 
7063
        }
 
7064
        ndr->depth--;
 
7065
        ndr_print_ptr(ndr, "parameters", r->parameters);
 
7066
        ndr->depth++;
 
7067
        if (r->parameters) {
 
7068
                ndr_print_string(ndr, "parameters", r->parameters);
 
7069
        }
 
7070
        ndr->depth--;
 
7071
        ndr_print_uint32(ndr, "secdesc_ptr", r->secdesc_ptr);
 
7072
        ndr_print_spoolss_PrinterAttributes(ndr, "attributes", r->attributes);
 
7073
        ndr_print_uint32(ndr, "priority", r->priority);
 
7074
        ndr_print_uint32(ndr, "defaultpriority", r->defaultpriority);
 
7075
        ndr_print_uint32(ndr, "starttime", r->starttime);
 
7076
        ndr_print_uint32(ndr, "untiltime", r->untiltime);
 
7077
        ndr_print_spoolss_PrinterStatus(ndr, "status", r->status);
 
7078
        ndr_print_uint32(ndr, "cjobs", r->cjobs);
 
7079
        ndr_print_uint32(ndr, "averageppm", r->averageppm);
 
7080
        ndr->depth--;
 
7081
}
 
7082
 
 
7083
static enum ndr_err_code ndr_push_spoolss_SetPrinterInfo3(struct ndr_push *ndr, int ndr_flags, const struct spoolss_SetPrinterInfo3 *r)
 
7084
{
 
7085
        if (ndr_flags & NDR_SCALARS) {
 
7086
                NDR_CHECK(ndr_push_align(ndr, 4));
 
7087
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->sec_desc_ptr));
 
7088
                NDR_CHECK(ndr_push_trailer_align(ndr, 4));
 
7089
        }
 
7090
        if (ndr_flags & NDR_BUFFERS) {
 
7091
        }
 
7092
        return NDR_ERR_SUCCESS;
 
7093
}
 
7094
 
 
7095
static enum ndr_err_code ndr_pull_spoolss_SetPrinterInfo3(struct ndr_pull *ndr, int ndr_flags, struct spoolss_SetPrinterInfo3 *r)
 
7096
{
 
7097
        if (ndr_flags & NDR_SCALARS) {
 
7098
                NDR_CHECK(ndr_pull_align(ndr, 4));
 
7099
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->sec_desc_ptr));
 
7100
                NDR_CHECK(ndr_pull_trailer_align(ndr, 4));
 
7101
        }
 
7102
        if (ndr_flags & NDR_BUFFERS) {
 
7103
        }
 
7104
        return NDR_ERR_SUCCESS;
 
7105
}
 
7106
 
 
7107
_PUBLIC_ void ndr_print_spoolss_SetPrinterInfo3(struct ndr_print *ndr, const char *name, const struct spoolss_SetPrinterInfo3 *r)
 
7108
{
 
7109
        ndr_print_struct(ndr, name, "spoolss_SetPrinterInfo3");
 
7110
        ndr->depth++;
 
7111
        ndr_print_uint32(ndr, "sec_desc_ptr", r->sec_desc_ptr);
 
7112
        ndr->depth--;
 
7113
}
 
7114
 
 
7115
static enum ndr_err_code ndr_push_spoolss_SetPrinterInfo4(struct ndr_push *ndr, int ndr_flags, const struct spoolss_SetPrinterInfo4 *r)
 
7116
{
 
7117
        if (ndr_flags & NDR_SCALARS) {
 
7118
                NDR_CHECK(ndr_push_align(ndr, 5));
 
7119
                NDR_CHECK(ndr_push_unique_ptr(ndr, r->printername));
 
7120
                NDR_CHECK(ndr_push_unique_ptr(ndr, r->servername));
 
7121
                NDR_CHECK(ndr_push_spoolss_PrinterAttributes(ndr, NDR_SCALARS, r->attributes));
 
7122
                NDR_CHECK(ndr_push_trailer_align(ndr, 5));
 
7123
        }
 
7124
        if (ndr_flags & NDR_BUFFERS) {
 
7125
                if (r->printername) {
 
7126
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->printername, CH_UTF16)));
 
7127
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0));
 
7128
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->printername, CH_UTF16)));
 
7129
                        NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->printername, ndr_charset_length(r->printername, CH_UTF16), sizeof(uint16_t), CH_UTF16));
 
7130
                }
 
7131
                if (r->servername) {
 
7132
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->servername, CH_UTF16)));
 
7133
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0));
 
7134
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->servername, CH_UTF16)));
 
7135
                        NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->servername, ndr_charset_length(r->servername, CH_UTF16), sizeof(uint16_t), CH_UTF16));
 
7136
                }
 
7137
        }
 
7138
        return NDR_ERR_SUCCESS;
 
7139
}
 
7140
 
 
7141
static enum ndr_err_code ndr_pull_spoolss_SetPrinterInfo4(struct ndr_pull *ndr, int ndr_flags, struct spoolss_SetPrinterInfo4 *r)
 
7142
{
 
7143
        uint32_t _ptr_printername;
 
7144
        TALLOC_CTX *_mem_save_printername_0;
 
7145
        uint32_t _ptr_servername;
 
7146
        TALLOC_CTX *_mem_save_servername_0;
 
7147
        if (ndr_flags & NDR_SCALARS) {
 
7148
                NDR_CHECK(ndr_pull_align(ndr, 5));
 
7149
                NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_printername));
 
7150
                if (_ptr_printername) {
 
7151
                        NDR_PULL_ALLOC(ndr, r->printername);
 
7152
                } else {
 
7153
                        r->printername = NULL;
 
7154
                }
 
7155
                NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_servername));
 
7156
                if (_ptr_servername) {
 
7157
                        NDR_PULL_ALLOC(ndr, r->servername);
 
7158
                } else {
 
7159
                        r->servername = NULL;
 
7160
                }
 
7161
                NDR_CHECK(ndr_pull_spoolss_PrinterAttributes(ndr, NDR_SCALARS, &r->attributes));
 
7162
                NDR_CHECK(ndr_pull_trailer_align(ndr, 5));
 
7163
        }
 
7164
        if (ndr_flags & NDR_BUFFERS) {
 
7165
                if (r->printername) {
 
7166
                        _mem_save_printername_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
7167
                        NDR_PULL_SET_MEM_CTX(ndr, r->printername, 0);
 
7168
                        NDR_CHECK(ndr_pull_array_size(ndr, &r->printername));
 
7169
                        NDR_CHECK(ndr_pull_array_length(ndr, &r->printername));
 
7170
                        if (ndr_get_array_length(ndr, &r->printername) > ndr_get_array_size(ndr, &r->printername)) {
 
7171
                                return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->printername), ndr_get_array_length(ndr, &r->printername));
 
7172
                        }
 
7173
                        NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->printername), sizeof(uint16_t)));
 
7174
                        NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->printername, ndr_get_array_length(ndr, &r->printername), sizeof(uint16_t), CH_UTF16));
 
7175
                        NDR_PULL_SET_MEM_CTX(ndr, _mem_save_printername_0, 0);
 
7176
                }
 
7177
                if (r->servername) {
 
7178
                        _mem_save_servername_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
7179
                        NDR_PULL_SET_MEM_CTX(ndr, r->servername, 0);
 
7180
                        NDR_CHECK(ndr_pull_array_size(ndr, &r->servername));
 
7181
                        NDR_CHECK(ndr_pull_array_length(ndr, &r->servername));
 
7182
                        if (ndr_get_array_length(ndr, &r->servername) > ndr_get_array_size(ndr, &r->servername)) {
 
7183
                                return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->servername), ndr_get_array_length(ndr, &r->servername));
 
7184
                        }
 
7185
                        NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->servername), sizeof(uint16_t)));
 
7186
                        NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->servername, ndr_get_array_length(ndr, &r->servername), sizeof(uint16_t), CH_UTF16));
 
7187
                        NDR_PULL_SET_MEM_CTX(ndr, _mem_save_servername_0, 0);
 
7188
                }
 
7189
        }
 
7190
        return NDR_ERR_SUCCESS;
 
7191
}
 
7192
 
 
7193
_PUBLIC_ void ndr_print_spoolss_SetPrinterInfo4(struct ndr_print *ndr, const char *name, const struct spoolss_SetPrinterInfo4 *r)
 
7194
{
 
7195
        ndr_print_struct(ndr, name, "spoolss_SetPrinterInfo4");
 
7196
        ndr->depth++;
 
7197
        ndr_print_ptr(ndr, "printername", r->printername);
 
7198
        ndr->depth++;
 
7199
        if (r->printername) {
 
7200
                ndr_print_string(ndr, "printername", r->printername);
 
7201
        }
 
7202
        ndr->depth--;
 
7203
        ndr_print_ptr(ndr, "servername", r->servername);
 
7204
        ndr->depth++;
 
7205
        if (r->servername) {
 
7206
                ndr_print_string(ndr, "servername", r->servername);
 
7207
        }
 
7208
        ndr->depth--;
 
7209
        ndr_print_spoolss_PrinterAttributes(ndr, "attributes", r->attributes);
 
7210
        ndr->depth--;
 
7211
}
 
7212
 
 
7213
static enum ndr_err_code ndr_push_spoolss_SetPrinterInfo5(struct ndr_push *ndr, int ndr_flags, const struct spoolss_SetPrinterInfo5 *r)
 
7214
{
 
7215
        if (ndr_flags & NDR_SCALARS) {
 
7216
                NDR_CHECK(ndr_push_align(ndr, 5));
 
7217
                NDR_CHECK(ndr_push_unique_ptr(ndr, r->printername));
 
7218
                NDR_CHECK(ndr_push_unique_ptr(ndr, r->portname));
 
7219
                NDR_CHECK(ndr_push_spoolss_PrinterAttributes(ndr, NDR_SCALARS, r->attributes));
 
7220
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->device_not_selected_timeout));
 
7221
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->transmission_retry_timeout));
 
7222
                NDR_CHECK(ndr_push_trailer_align(ndr, 5));
 
7223
        }
 
7224
        if (ndr_flags & NDR_BUFFERS) {
 
7225
                if (r->printername) {
 
7226
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->printername, CH_UTF16)));
 
7227
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0));
 
7228
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->printername, CH_UTF16)));
 
7229
                        NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->printername, ndr_charset_length(r->printername, CH_UTF16), sizeof(uint16_t), CH_UTF16));
 
7230
                }
 
7231
                if (r->portname) {
 
7232
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->portname, CH_UTF16)));
 
7233
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0));
 
7234
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->portname, CH_UTF16)));
 
7235
                        NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->portname, ndr_charset_length(r->portname, CH_UTF16), sizeof(uint16_t), CH_UTF16));
 
7236
                }
 
7237
        }
 
7238
        return NDR_ERR_SUCCESS;
 
7239
}
 
7240
 
 
7241
static enum ndr_err_code ndr_pull_spoolss_SetPrinterInfo5(struct ndr_pull *ndr, int ndr_flags, struct spoolss_SetPrinterInfo5 *r)
 
7242
{
 
7243
        uint32_t _ptr_printername;
 
7244
        TALLOC_CTX *_mem_save_printername_0;
 
7245
        uint32_t _ptr_portname;
 
7246
        TALLOC_CTX *_mem_save_portname_0;
 
7247
        if (ndr_flags & NDR_SCALARS) {
 
7248
                NDR_CHECK(ndr_pull_align(ndr, 5));
 
7249
                NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_printername));
 
7250
                if (_ptr_printername) {
 
7251
                        NDR_PULL_ALLOC(ndr, r->printername);
 
7252
                } else {
 
7253
                        r->printername = NULL;
 
7254
                }
 
7255
                NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_portname));
 
7256
                if (_ptr_portname) {
 
7257
                        NDR_PULL_ALLOC(ndr, r->portname);
 
7258
                } else {
 
7259
                        r->portname = NULL;
 
7260
                }
 
7261
                NDR_CHECK(ndr_pull_spoolss_PrinterAttributes(ndr, NDR_SCALARS, &r->attributes));
 
7262
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->device_not_selected_timeout));
 
7263
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->transmission_retry_timeout));
 
7264
                NDR_CHECK(ndr_pull_trailer_align(ndr, 5));
 
7265
        }
 
7266
        if (ndr_flags & NDR_BUFFERS) {
 
7267
                if (r->printername) {
 
7268
                        _mem_save_printername_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
7269
                        NDR_PULL_SET_MEM_CTX(ndr, r->printername, 0);
 
7270
                        NDR_CHECK(ndr_pull_array_size(ndr, &r->printername));
 
7271
                        NDR_CHECK(ndr_pull_array_length(ndr, &r->printername));
 
7272
                        if (ndr_get_array_length(ndr, &r->printername) > ndr_get_array_size(ndr, &r->printername)) {
 
7273
                                return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->printername), ndr_get_array_length(ndr, &r->printername));
 
7274
                        }
 
7275
                        NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->printername), sizeof(uint16_t)));
 
7276
                        NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->printername, ndr_get_array_length(ndr, &r->printername), sizeof(uint16_t), CH_UTF16));
 
7277
                        NDR_PULL_SET_MEM_CTX(ndr, _mem_save_printername_0, 0);
 
7278
                }
 
7279
                if (r->portname) {
 
7280
                        _mem_save_portname_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
7281
                        NDR_PULL_SET_MEM_CTX(ndr, r->portname, 0);
 
7282
                        NDR_CHECK(ndr_pull_array_size(ndr, &r->portname));
 
7283
                        NDR_CHECK(ndr_pull_array_length(ndr, &r->portname));
 
7284
                        if (ndr_get_array_length(ndr, &r->portname) > ndr_get_array_size(ndr, &r->portname)) {
 
7285
                                return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->portname), ndr_get_array_length(ndr, &r->portname));
 
7286
                        }
 
7287
                        NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->portname), sizeof(uint16_t)));
 
7288
                        NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->portname, ndr_get_array_length(ndr, &r->portname), sizeof(uint16_t), CH_UTF16));
 
7289
                        NDR_PULL_SET_MEM_CTX(ndr, _mem_save_portname_0, 0);
 
7290
                }
 
7291
        }
 
7292
        return NDR_ERR_SUCCESS;
 
7293
}
 
7294
 
 
7295
_PUBLIC_ void ndr_print_spoolss_SetPrinterInfo5(struct ndr_print *ndr, const char *name, const struct spoolss_SetPrinterInfo5 *r)
 
7296
{
 
7297
        ndr_print_struct(ndr, name, "spoolss_SetPrinterInfo5");
 
7298
        ndr->depth++;
 
7299
        ndr_print_ptr(ndr, "printername", r->printername);
 
7300
        ndr->depth++;
 
7301
        if (r->printername) {
 
7302
                ndr_print_string(ndr, "printername", r->printername);
 
7303
        }
 
7304
        ndr->depth--;
 
7305
        ndr_print_ptr(ndr, "portname", r->portname);
 
7306
        ndr->depth++;
 
7307
        if (r->portname) {
 
7308
                ndr_print_string(ndr, "portname", r->portname);
 
7309
        }
 
7310
        ndr->depth--;
 
7311
        ndr_print_spoolss_PrinterAttributes(ndr, "attributes", r->attributes);
 
7312
        ndr_print_uint32(ndr, "device_not_selected_timeout", r->device_not_selected_timeout);
 
7313
        ndr_print_uint32(ndr, "transmission_retry_timeout", r->transmission_retry_timeout);
 
7314
        ndr->depth--;
 
7315
}
 
7316
 
 
7317
static enum ndr_err_code ndr_push_spoolss_SetPrinterInfo6(struct ndr_push *ndr, int ndr_flags, const struct spoolss_SetPrinterInfo6 *r)
 
7318
{
 
7319
        if (ndr_flags & NDR_SCALARS) {
 
7320
                NDR_CHECK(ndr_push_align(ndr, 4));
 
7321
                NDR_CHECK(ndr_push_spoolss_PrinterStatus(ndr, NDR_SCALARS, r->status));
 
7322
                NDR_CHECK(ndr_push_trailer_align(ndr, 4));
 
7323
        }
 
7324
        if (ndr_flags & NDR_BUFFERS) {
 
7325
        }
 
7326
        return NDR_ERR_SUCCESS;
 
7327
}
 
7328
 
 
7329
static enum ndr_err_code ndr_pull_spoolss_SetPrinterInfo6(struct ndr_pull *ndr, int ndr_flags, struct spoolss_SetPrinterInfo6 *r)
 
7330
{
 
7331
        if (ndr_flags & NDR_SCALARS) {
 
7332
                NDR_CHECK(ndr_pull_align(ndr, 4));
 
7333
                NDR_CHECK(ndr_pull_spoolss_PrinterStatus(ndr, NDR_SCALARS, &r->status));
 
7334
                NDR_CHECK(ndr_pull_trailer_align(ndr, 4));
 
7335
        }
 
7336
        if (ndr_flags & NDR_BUFFERS) {
 
7337
        }
 
7338
        return NDR_ERR_SUCCESS;
 
7339
}
 
7340
 
 
7341
_PUBLIC_ void ndr_print_spoolss_SetPrinterInfo6(struct ndr_print *ndr, const char *name, const struct spoolss_SetPrinterInfo6 *r)
 
7342
{
 
7343
        ndr_print_struct(ndr, name, "spoolss_SetPrinterInfo6");
 
7344
        ndr->depth++;
 
7345
        ndr_print_spoolss_PrinterStatus(ndr, "status", r->status);
 
7346
        ndr->depth--;
 
7347
}
 
7348
 
 
7349
static enum ndr_err_code ndr_push_spoolss_SetPrinterInfo7(struct ndr_push *ndr, int ndr_flags, const struct spoolss_SetPrinterInfo7 *r)
 
7350
{
 
7351
        if (ndr_flags & NDR_SCALARS) {
 
7352
                NDR_CHECK(ndr_push_align(ndr, 5));
 
7353
                NDR_CHECK(ndr_push_unique_ptr(ndr, r->guid));
 
7354
                NDR_CHECK(ndr_push_spoolss_DsPrintAction(ndr, NDR_SCALARS, r->action));
 
7355
                NDR_CHECK(ndr_push_trailer_align(ndr, 5));
 
7356
        }
 
7357
        if (ndr_flags & NDR_BUFFERS) {
 
7358
                if (r->guid) {
 
7359
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->guid, CH_UTF16)));
 
7360
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0));
 
7361
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->guid, CH_UTF16)));
 
7362
                        NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->guid, ndr_charset_length(r->guid, CH_UTF16), sizeof(uint16_t), CH_UTF16));
 
7363
                }
 
7364
        }
 
7365
        return NDR_ERR_SUCCESS;
 
7366
}
 
7367
 
 
7368
static enum ndr_err_code ndr_pull_spoolss_SetPrinterInfo7(struct ndr_pull *ndr, int ndr_flags, struct spoolss_SetPrinterInfo7 *r)
 
7369
{
 
7370
        uint32_t _ptr_guid;
 
7371
        TALLOC_CTX *_mem_save_guid_0;
 
7372
        if (ndr_flags & NDR_SCALARS) {
 
7373
                NDR_CHECK(ndr_pull_align(ndr, 5));
 
7374
                NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_guid));
 
7375
                if (_ptr_guid) {
 
7376
                        NDR_PULL_ALLOC(ndr, r->guid);
 
7377
                } else {
 
7378
                        r->guid = NULL;
 
7379
                }
 
7380
                NDR_CHECK(ndr_pull_spoolss_DsPrintAction(ndr, NDR_SCALARS, &r->action));
 
7381
                NDR_CHECK(ndr_pull_trailer_align(ndr, 5));
 
7382
        }
 
7383
        if (ndr_flags & NDR_BUFFERS) {
 
7384
                if (r->guid) {
 
7385
                        _mem_save_guid_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
7386
                        NDR_PULL_SET_MEM_CTX(ndr, r->guid, 0);
 
7387
                        NDR_CHECK(ndr_pull_array_size(ndr, &r->guid));
 
7388
                        NDR_CHECK(ndr_pull_array_length(ndr, &r->guid));
 
7389
                        if (ndr_get_array_length(ndr, &r->guid) > ndr_get_array_size(ndr, &r->guid)) {
 
7390
                                return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->guid), ndr_get_array_length(ndr, &r->guid));
 
7391
                        }
 
7392
                        NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->guid), sizeof(uint16_t)));
 
7393
                        NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->guid, ndr_get_array_length(ndr, &r->guid), sizeof(uint16_t), CH_UTF16));
 
7394
                        NDR_PULL_SET_MEM_CTX(ndr, _mem_save_guid_0, 0);
 
7395
                }
 
7396
        }
 
7397
        return NDR_ERR_SUCCESS;
 
7398
}
 
7399
 
 
7400
_PUBLIC_ void ndr_print_spoolss_SetPrinterInfo7(struct ndr_print *ndr, const char *name, const struct spoolss_SetPrinterInfo7 *r)
 
7401
{
 
7402
        ndr_print_struct(ndr, name, "spoolss_SetPrinterInfo7");
 
7403
        ndr->depth++;
 
7404
        ndr_print_ptr(ndr, "guid", r->guid);
 
7405
        ndr->depth++;
 
7406
        if (r->guid) {
 
7407
                ndr_print_string(ndr, "guid", r->guid);
 
7408
        }
 
7409
        ndr->depth--;
 
7410
        ndr_print_spoolss_DsPrintAction(ndr, "action", r->action);
 
7411
        ndr->depth--;
 
7412
}
 
7413
 
 
7414
static enum ndr_err_code ndr_push_spoolss_SetPrinterInfo8(struct ndr_push *ndr, int ndr_flags, const struct spoolss_SetPrinterInfo8 *r)
 
7415
{
 
7416
        if (ndr_flags & NDR_SCALARS) {
 
7417
                NDR_CHECK(ndr_push_align(ndr, 4));
 
7418
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->devmode_ptr));
 
7419
                NDR_CHECK(ndr_push_trailer_align(ndr, 4));
 
7420
        }
 
7421
        if (ndr_flags & NDR_BUFFERS) {
 
7422
        }
 
7423
        return NDR_ERR_SUCCESS;
 
7424
}
 
7425
 
 
7426
static enum ndr_err_code ndr_pull_spoolss_SetPrinterInfo8(struct ndr_pull *ndr, int ndr_flags, struct spoolss_SetPrinterInfo8 *r)
 
7427
{
 
7428
        if (ndr_flags & NDR_SCALARS) {
 
7429
                NDR_CHECK(ndr_pull_align(ndr, 4));
 
7430
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->devmode_ptr));
 
7431
                NDR_CHECK(ndr_pull_trailer_align(ndr, 4));
 
7432
        }
 
7433
        if (ndr_flags & NDR_BUFFERS) {
 
7434
        }
 
7435
        return NDR_ERR_SUCCESS;
 
7436
}
 
7437
 
 
7438
_PUBLIC_ void ndr_print_spoolss_SetPrinterInfo8(struct ndr_print *ndr, const char *name, const struct spoolss_SetPrinterInfo8 *r)
 
7439
{
 
7440
        ndr_print_struct(ndr, name, "spoolss_SetPrinterInfo8");
 
7441
        ndr->depth++;
 
7442
        ndr_print_uint32(ndr, "devmode_ptr", r->devmode_ptr);
 
7443
        ndr->depth--;
 
7444
}
 
7445
 
 
7446
static enum ndr_err_code ndr_push_spoolss_SetPrinterInfo9(struct ndr_push *ndr, int ndr_flags, const struct spoolss_SetPrinterInfo9 *r)
 
7447
{
 
7448
        if (ndr_flags & NDR_SCALARS) {
 
7449
                NDR_CHECK(ndr_push_align(ndr, 4));
 
7450
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->devmode_ptr));
 
7451
                NDR_CHECK(ndr_push_trailer_align(ndr, 4));
 
7452
        }
 
7453
        if (ndr_flags & NDR_BUFFERS) {
 
7454
        }
 
7455
        return NDR_ERR_SUCCESS;
 
7456
}
 
7457
 
 
7458
static enum ndr_err_code ndr_pull_spoolss_SetPrinterInfo9(struct ndr_pull *ndr, int ndr_flags, struct spoolss_SetPrinterInfo9 *r)
 
7459
{
 
7460
        if (ndr_flags & NDR_SCALARS) {
 
7461
                NDR_CHECK(ndr_pull_align(ndr, 4));
 
7462
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->devmode_ptr));
 
7463
                NDR_CHECK(ndr_pull_trailer_align(ndr, 4));
 
7464
        }
 
7465
        if (ndr_flags & NDR_BUFFERS) {
 
7466
        }
 
7467
        return NDR_ERR_SUCCESS;
 
7468
}
 
7469
 
 
7470
_PUBLIC_ void ndr_print_spoolss_SetPrinterInfo9(struct ndr_print *ndr, const char *name, const struct spoolss_SetPrinterInfo9 *r)
 
7471
{
 
7472
        ndr_print_struct(ndr, name, "spoolss_SetPrinterInfo9");
 
7473
        ndr->depth++;
 
7474
        ndr_print_uint32(ndr, "devmode_ptr", r->devmode_ptr);
 
7475
        ndr->depth--;
 
7476
}
 
7477
 
 
7478
static enum ndr_err_code ndr_push_spoolss_SetPrinterInfo(struct ndr_push *ndr, int ndr_flags, const union spoolss_SetPrinterInfo *r)
 
7479
{
 
7480
        if (ndr_flags & NDR_SCALARS) {
 
7481
                int level = ndr_push_get_switch_value(ndr, r);
 
7482
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, level));
 
7483
                NDR_CHECK(ndr_push_union_align(ndr, 5));
 
7484
                switch (level) {
 
7485
                        case 0: {
 
7486
                                NDR_CHECK(ndr_push_unique_ptr(ndr, r->info0));
 
7487
                        break; }
 
7488
 
 
7489
                        case 1: {
 
7490
                                NDR_CHECK(ndr_push_unique_ptr(ndr, r->info1));
 
7491
                        break; }
 
7492
 
 
7493
                        case 2: {
 
7494
                                NDR_CHECK(ndr_push_unique_ptr(ndr, r->info2));
 
7495
                        break; }
 
7496
 
 
7497
                        case 3: {
 
7498
                                NDR_CHECK(ndr_push_unique_ptr(ndr, r->info3));
 
7499
                        break; }
 
7500
 
 
7501
                        case 4: {
 
7502
                                NDR_CHECK(ndr_push_unique_ptr(ndr, r->info4));
 
7503
                        break; }
 
7504
 
 
7505
                        case 5: {
 
7506
                                NDR_CHECK(ndr_push_unique_ptr(ndr, r->info5));
 
7507
                        break; }
 
7508
 
 
7509
                        case 6: {
 
7510
                                NDR_CHECK(ndr_push_unique_ptr(ndr, r->info6));
 
7511
                        break; }
 
7512
 
 
7513
                        case 7: {
 
7514
                                NDR_CHECK(ndr_push_unique_ptr(ndr, r->info7));
 
7515
                        break; }
 
7516
 
 
7517
                        case 8: {
 
7518
                                NDR_CHECK(ndr_push_unique_ptr(ndr, r->info8));
 
7519
                        break; }
 
7520
 
 
7521
                        case 9: {
 
7522
                                NDR_CHECK(ndr_push_unique_ptr(ndr, r->info9));
 
7523
                        break; }
 
7524
 
 
7525
                        default: {
 
7526
                        break; }
 
7527
 
 
7528
                }
 
7529
        }
 
7530
        if (ndr_flags & NDR_BUFFERS) {
 
7531
                int level = ndr_push_get_switch_value(ndr, r);
 
7532
                switch (level) {
 
7533
                        case 0:
 
7534
                                if (r->info0) {
 
7535
                                        NDR_CHECK(ndr_push_spoolss_SetPrinterInfo0(ndr, NDR_SCALARS|NDR_BUFFERS, r->info0));
 
7536
                                }
 
7537
                        break;
 
7538
 
 
7539
                        case 1:
 
7540
                                if (r->info1) {
 
7541
                                        NDR_CHECK(ndr_push_spoolss_SetPrinterInfo1(ndr, NDR_SCALARS|NDR_BUFFERS, r->info1));
 
7542
                                }
 
7543
                        break;
 
7544
 
 
7545
                        case 2:
 
7546
                                if (r->info2) {
 
7547
                                        NDR_CHECK(ndr_push_spoolss_SetPrinterInfo2(ndr, NDR_SCALARS|NDR_BUFFERS, r->info2));
 
7548
                                }
 
7549
                        break;
 
7550
 
 
7551
                        case 3:
 
7552
                                if (r->info3) {
 
7553
                                        NDR_CHECK(ndr_push_spoolss_SetPrinterInfo3(ndr, NDR_SCALARS, r->info3));
 
7554
                                }
 
7555
                        break;
 
7556
 
 
7557
                        case 4:
 
7558
                                if (r->info4) {
 
7559
                                        NDR_CHECK(ndr_push_spoolss_SetPrinterInfo4(ndr, NDR_SCALARS|NDR_BUFFERS, r->info4));
 
7560
                                }
 
7561
                        break;
 
7562
 
 
7563
                        case 5:
 
7564
                                if (r->info5) {
 
7565
                                        NDR_CHECK(ndr_push_spoolss_SetPrinterInfo5(ndr, NDR_SCALARS|NDR_BUFFERS, r->info5));
 
7566
                                }
 
7567
                        break;
 
7568
 
 
7569
                        case 6:
 
7570
                                if (r->info6) {
 
7571
                                        NDR_CHECK(ndr_push_spoolss_SetPrinterInfo6(ndr, NDR_SCALARS, r->info6));
 
7572
                                }
 
7573
                        break;
 
7574
 
 
7575
                        case 7:
 
7576
                                if (r->info7) {
 
7577
                                        NDR_CHECK(ndr_push_spoolss_SetPrinterInfo7(ndr, NDR_SCALARS|NDR_BUFFERS, r->info7));
 
7578
                                }
 
7579
                        break;
 
7580
 
 
7581
                        case 8:
 
7582
                                if (r->info8) {
 
7583
                                        NDR_CHECK(ndr_push_spoolss_SetPrinterInfo8(ndr, NDR_SCALARS, r->info8));
 
7584
                                }
 
7585
                        break;
 
7586
 
 
7587
                        case 9:
 
7588
                                if (r->info9) {
 
7589
                                        NDR_CHECK(ndr_push_spoolss_SetPrinterInfo9(ndr, NDR_SCALARS, r->info9));
 
7590
                                }
 
7591
                        break;
 
7592
 
 
7593
                        default:
 
7594
                        break;
 
7595
 
 
7596
                }
 
7597
        }
 
7598
        return NDR_ERR_SUCCESS;
 
7599
}
 
7600
 
 
7601
static enum ndr_err_code ndr_pull_spoolss_SetPrinterInfo(struct ndr_pull *ndr, int ndr_flags, union spoolss_SetPrinterInfo *r)
 
7602
{
 
7603
        int level;
 
7604
        uint32_t _level;
 
7605
        TALLOC_CTX *_mem_save_info0_0;
 
7606
        TALLOC_CTX *_mem_save_info1_0;
 
7607
        TALLOC_CTX *_mem_save_info2_0;
 
7608
        TALLOC_CTX *_mem_save_info3_0;
 
7609
        TALLOC_CTX *_mem_save_info4_0;
 
7610
        TALLOC_CTX *_mem_save_info5_0;
 
7611
        TALLOC_CTX *_mem_save_info6_0;
 
7612
        TALLOC_CTX *_mem_save_info7_0;
 
7613
        TALLOC_CTX *_mem_save_info8_0;
 
7614
        TALLOC_CTX *_mem_save_info9_0;
 
7615
        level = ndr_pull_get_switch_value(ndr, r);
 
7616
        if (ndr_flags & NDR_SCALARS) {
 
7617
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &_level));
 
7618
                if (_level != level) {
 
7619
                        return ndr_pull_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u for r at %s", _level, __location__);
 
7620
                }
 
7621
                NDR_CHECK(ndr_pull_union_align(ndr, 5));
 
7622
                switch (level) {
 
7623
                        case 0: {
 
7624
                                uint32_t _ptr_info0;
 
7625
                                NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_info0));
 
7626
                                if (_ptr_info0) {
 
7627
                                        NDR_PULL_ALLOC(ndr, r->info0);
 
7628
                                } else {
 
7629
                                        r->info0 = NULL;
 
7630
                                }
 
7631
                        break; }
 
7632
 
 
7633
                        case 1: {
 
7634
                                uint32_t _ptr_info1;
 
7635
                                NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_info1));
 
7636
                                if (_ptr_info1) {
 
7637
                                        NDR_PULL_ALLOC(ndr, r->info1);
 
7638
                                } else {
 
7639
                                        r->info1 = NULL;
 
7640
                                }
 
7641
                        break; }
 
7642
 
 
7643
                        case 2: {
 
7644
                                uint32_t _ptr_info2;
 
7645
                                NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_info2));
 
7646
                                if (_ptr_info2) {
 
7647
                                        NDR_PULL_ALLOC(ndr, r->info2);
 
7648
                                } else {
 
7649
                                        r->info2 = NULL;
 
7650
                                }
 
7651
                        break; }
 
7652
 
 
7653
                        case 3: {
 
7654
                                uint32_t _ptr_info3;
 
7655
                                NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_info3));
 
7656
                                if (_ptr_info3) {
 
7657
                                        NDR_PULL_ALLOC(ndr, r->info3);
 
7658
                                } else {
 
7659
                                        r->info3 = NULL;
 
7660
                                }
 
7661
                        break; }
 
7662
 
 
7663
                        case 4: {
 
7664
                                uint32_t _ptr_info4;
 
7665
                                NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_info4));
 
7666
                                if (_ptr_info4) {
 
7667
                                        NDR_PULL_ALLOC(ndr, r->info4);
 
7668
                                } else {
 
7669
                                        r->info4 = NULL;
 
7670
                                }
 
7671
                        break; }
 
7672
 
 
7673
                        case 5: {
 
7674
                                uint32_t _ptr_info5;
 
7675
                                NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_info5));
 
7676
                                if (_ptr_info5) {
 
7677
                                        NDR_PULL_ALLOC(ndr, r->info5);
 
7678
                                } else {
 
7679
                                        r->info5 = NULL;
 
7680
                                }
 
7681
                        break; }
 
7682
 
 
7683
                        case 6: {
 
7684
                                uint32_t _ptr_info6;
 
7685
                                NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_info6));
 
7686
                                if (_ptr_info6) {
 
7687
                                        NDR_PULL_ALLOC(ndr, r->info6);
 
7688
                                } else {
 
7689
                                        r->info6 = NULL;
 
7690
                                }
 
7691
                        break; }
 
7692
 
 
7693
                        case 7: {
 
7694
                                uint32_t _ptr_info7;
 
7695
                                NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_info7));
 
7696
                                if (_ptr_info7) {
 
7697
                                        NDR_PULL_ALLOC(ndr, r->info7);
 
7698
                                } else {
 
7699
                                        r->info7 = NULL;
 
7700
                                }
 
7701
                        break; }
 
7702
 
 
7703
                        case 8: {
 
7704
                                uint32_t _ptr_info8;
 
7705
                                NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_info8));
 
7706
                                if (_ptr_info8) {
 
7707
                                        NDR_PULL_ALLOC(ndr, r->info8);
 
7708
                                } else {
 
7709
                                        r->info8 = NULL;
 
7710
                                }
 
7711
                        break; }
 
7712
 
 
7713
                        case 9: {
 
7714
                                uint32_t _ptr_info9;
 
7715
                                NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_info9));
 
7716
                                if (_ptr_info9) {
 
7717
                                        NDR_PULL_ALLOC(ndr, r->info9);
 
7718
                                } else {
 
7719
                                        r->info9 = NULL;
 
7720
                                }
 
7721
                        break; }
 
7722
 
 
7723
                        default: {
 
7724
                        break; }
 
7725
 
 
7726
                }
 
7727
        }
 
7728
        if (ndr_flags & NDR_BUFFERS) {
 
7729
                switch (level) {
 
7730
                        case 0:
 
7731
                                if (r->info0) {
 
7732
                                        _mem_save_info0_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
7733
                                        NDR_PULL_SET_MEM_CTX(ndr, r->info0, 0);
 
7734
                                        NDR_CHECK(ndr_pull_spoolss_SetPrinterInfo0(ndr, NDR_SCALARS|NDR_BUFFERS, r->info0));
 
7735
                                        NDR_PULL_SET_MEM_CTX(ndr, _mem_save_info0_0, 0);
 
7736
                                }
 
7737
                        break;
 
7738
 
 
7739
                        case 1:
 
7740
                                if (r->info1) {
 
7741
                                        _mem_save_info1_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
7742
                                        NDR_PULL_SET_MEM_CTX(ndr, r->info1, 0);
 
7743
                                        NDR_CHECK(ndr_pull_spoolss_SetPrinterInfo1(ndr, NDR_SCALARS|NDR_BUFFERS, r->info1));
 
7744
                                        NDR_PULL_SET_MEM_CTX(ndr, _mem_save_info1_0, 0);
 
7745
                                }
 
7746
                        break;
 
7747
 
 
7748
                        case 2:
 
7749
                                if (r->info2) {
 
7750
                                        _mem_save_info2_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
7751
                                        NDR_PULL_SET_MEM_CTX(ndr, r->info2, 0);
 
7752
                                        NDR_CHECK(ndr_pull_spoolss_SetPrinterInfo2(ndr, NDR_SCALARS|NDR_BUFFERS, r->info2));
 
7753
                                        NDR_PULL_SET_MEM_CTX(ndr, _mem_save_info2_0, 0);
 
7754
                                }
 
7755
                        break;
 
7756
 
 
7757
                        case 3:
 
7758
                                if (r->info3) {
 
7759
                                        _mem_save_info3_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
7760
                                        NDR_PULL_SET_MEM_CTX(ndr, r->info3, 0);
 
7761
                                        NDR_CHECK(ndr_pull_spoolss_SetPrinterInfo3(ndr, NDR_SCALARS, r->info3));
 
7762
                                        NDR_PULL_SET_MEM_CTX(ndr, _mem_save_info3_0, 0);
 
7763
                                }
 
7764
                        break;
 
7765
 
 
7766
                        case 4:
 
7767
                                if (r->info4) {
 
7768
                                        _mem_save_info4_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
7769
                                        NDR_PULL_SET_MEM_CTX(ndr, r->info4, 0);
 
7770
                                        NDR_CHECK(ndr_pull_spoolss_SetPrinterInfo4(ndr, NDR_SCALARS|NDR_BUFFERS, r->info4));
 
7771
                                        NDR_PULL_SET_MEM_CTX(ndr, _mem_save_info4_0, 0);
 
7772
                                }
 
7773
                        break;
 
7774
 
 
7775
                        case 5:
 
7776
                                if (r->info5) {
 
7777
                                        _mem_save_info5_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
7778
                                        NDR_PULL_SET_MEM_CTX(ndr, r->info5, 0);
 
7779
                                        NDR_CHECK(ndr_pull_spoolss_SetPrinterInfo5(ndr, NDR_SCALARS|NDR_BUFFERS, r->info5));
 
7780
                                        NDR_PULL_SET_MEM_CTX(ndr, _mem_save_info5_0, 0);
 
7781
                                }
 
7782
                        break;
 
7783
 
 
7784
                        case 6:
 
7785
                                if (r->info6) {
 
7786
                                        _mem_save_info6_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
7787
                                        NDR_PULL_SET_MEM_CTX(ndr, r->info6, 0);
 
7788
                                        NDR_CHECK(ndr_pull_spoolss_SetPrinterInfo6(ndr, NDR_SCALARS, r->info6));
 
7789
                                        NDR_PULL_SET_MEM_CTX(ndr, _mem_save_info6_0, 0);
 
7790
                                }
 
7791
                        break;
 
7792
 
 
7793
                        case 7:
 
7794
                                if (r->info7) {
 
7795
                                        _mem_save_info7_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
7796
                                        NDR_PULL_SET_MEM_CTX(ndr, r->info7, 0);
 
7797
                                        NDR_CHECK(ndr_pull_spoolss_SetPrinterInfo7(ndr, NDR_SCALARS|NDR_BUFFERS, r->info7));
 
7798
                                        NDR_PULL_SET_MEM_CTX(ndr, _mem_save_info7_0, 0);
 
7799
                                }
 
7800
                        break;
 
7801
 
 
7802
                        case 8:
 
7803
                                if (r->info8) {
 
7804
                                        _mem_save_info8_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
7805
                                        NDR_PULL_SET_MEM_CTX(ndr, r->info8, 0);
 
7806
                                        NDR_CHECK(ndr_pull_spoolss_SetPrinterInfo8(ndr, NDR_SCALARS, r->info8));
 
7807
                                        NDR_PULL_SET_MEM_CTX(ndr, _mem_save_info8_0, 0);
 
7808
                                }
 
7809
                        break;
 
7810
 
 
7811
                        case 9:
 
7812
                                if (r->info9) {
 
7813
                                        _mem_save_info9_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
7814
                                        NDR_PULL_SET_MEM_CTX(ndr, r->info9, 0);
 
7815
                                        NDR_CHECK(ndr_pull_spoolss_SetPrinterInfo9(ndr, NDR_SCALARS, r->info9));
 
7816
                                        NDR_PULL_SET_MEM_CTX(ndr, _mem_save_info9_0, 0);
 
7817
                                }
 
7818
                        break;
 
7819
 
 
7820
                        default:
 
7821
                        break;
 
7822
 
 
7823
                }
 
7824
        }
 
7825
        return NDR_ERR_SUCCESS;
 
7826
}
 
7827
 
 
7828
_PUBLIC_ void ndr_print_spoolss_SetPrinterInfo(struct ndr_print *ndr, const char *name, const union spoolss_SetPrinterInfo *r)
 
7829
{
 
7830
        int level;
 
7831
        level = ndr_print_get_switch_value(ndr, r);
 
7832
        ndr_print_union(ndr, name, level, "spoolss_SetPrinterInfo");
 
7833
        switch (level) {
 
7834
                case 0:
 
7835
                        ndr_print_ptr(ndr, "info0", r->info0);
 
7836
                        ndr->depth++;
 
7837
                        if (r->info0) {
 
7838
                                ndr_print_spoolss_SetPrinterInfo0(ndr, "info0", r->info0);
 
7839
                        }
 
7840
                        ndr->depth--;
 
7841
                break;
 
7842
 
 
7843
                case 1:
 
7844
                        ndr_print_ptr(ndr, "info1", r->info1);
 
7845
                        ndr->depth++;
 
7846
                        if (r->info1) {
 
7847
                                ndr_print_spoolss_SetPrinterInfo1(ndr, "info1", r->info1);
 
7848
                        }
 
7849
                        ndr->depth--;
 
7850
                break;
 
7851
 
 
7852
                case 2:
 
7853
                        ndr_print_ptr(ndr, "info2", r->info2);
 
7854
                        ndr->depth++;
 
7855
                        if (r->info2) {
 
7856
                                ndr_print_spoolss_SetPrinterInfo2(ndr, "info2", r->info2);
 
7857
                        }
 
7858
                        ndr->depth--;
 
7859
                break;
 
7860
 
 
7861
                case 3:
 
7862
                        ndr_print_ptr(ndr, "info3", r->info3);
 
7863
                        ndr->depth++;
 
7864
                        if (r->info3) {
 
7865
                                ndr_print_spoolss_SetPrinterInfo3(ndr, "info3", r->info3);
 
7866
                        }
 
7867
                        ndr->depth--;
 
7868
                break;
 
7869
 
 
7870
                case 4:
 
7871
                        ndr_print_ptr(ndr, "info4", r->info4);
 
7872
                        ndr->depth++;
 
7873
                        if (r->info4) {
 
7874
                                ndr_print_spoolss_SetPrinterInfo4(ndr, "info4", r->info4);
 
7875
                        }
 
7876
                        ndr->depth--;
 
7877
                break;
 
7878
 
 
7879
                case 5:
 
7880
                        ndr_print_ptr(ndr, "info5", r->info5);
 
7881
                        ndr->depth++;
 
7882
                        if (r->info5) {
 
7883
                                ndr_print_spoolss_SetPrinterInfo5(ndr, "info5", r->info5);
 
7884
                        }
 
7885
                        ndr->depth--;
 
7886
                break;
 
7887
 
 
7888
                case 6:
 
7889
                        ndr_print_ptr(ndr, "info6", r->info6);
 
7890
                        ndr->depth++;
 
7891
                        if (r->info6) {
 
7892
                                ndr_print_spoolss_SetPrinterInfo6(ndr, "info6", r->info6);
 
7893
                        }
 
7894
                        ndr->depth--;
 
7895
                break;
 
7896
 
 
7897
                case 7:
 
7898
                        ndr_print_ptr(ndr, "info7", r->info7);
 
7899
                        ndr->depth++;
 
7900
                        if (r->info7) {
 
7901
                                ndr_print_spoolss_SetPrinterInfo7(ndr, "info7", r->info7);
 
7902
                        }
 
7903
                        ndr->depth--;
 
7904
                break;
 
7905
 
 
7906
                case 8:
 
7907
                        ndr_print_ptr(ndr, "info8", r->info8);
 
7908
                        ndr->depth++;
 
7909
                        if (r->info8) {
 
7910
                                ndr_print_spoolss_SetPrinterInfo8(ndr, "info8", r->info8);
 
7911
                        }
 
7912
                        ndr->depth--;
 
7913
                break;
 
7914
 
 
7915
                case 9:
 
7916
                        ndr_print_ptr(ndr, "info9", r->info9);
 
7917
                        ndr->depth++;
 
7918
                        if (r->info9) {
 
7919
                                ndr_print_spoolss_SetPrinterInfo9(ndr, "info9", r->info9);
 
7920
                        }
 
7921
                        ndr->depth--;
 
7922
                break;
 
7923
 
 
7924
                default:
 
7925
                break;
 
7926
 
 
7927
        }
 
7928
}
 
7929
 
 
7930
static enum ndr_err_code ndr_push_spoolss_SetPrinterInfoCtr(struct ndr_push *ndr, int ndr_flags, const struct spoolss_SetPrinterInfoCtr *r)
 
7931
{
 
7932
        if (ndr_flags & NDR_SCALARS) {
 
7933
                NDR_CHECK(ndr_push_align(ndr, 5));
 
7934
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->level));
 
7935
                NDR_CHECK(ndr_push_set_switch_value(ndr, &r->info, r->level));
 
7936
                NDR_CHECK(ndr_push_spoolss_SetPrinterInfo(ndr, NDR_SCALARS, &r->info));
 
7937
                NDR_CHECK(ndr_push_trailer_align(ndr, 5));
 
7938
        }
 
7939
        if (ndr_flags & NDR_BUFFERS) {
 
7940
                NDR_CHECK(ndr_push_spoolss_SetPrinterInfo(ndr, NDR_BUFFERS, &r->info));
 
7941
        }
 
7942
        return NDR_ERR_SUCCESS;
 
7943
}
 
7944
 
 
7945
static enum ndr_err_code ndr_pull_spoolss_SetPrinterInfoCtr(struct ndr_pull *ndr, int ndr_flags, struct spoolss_SetPrinterInfoCtr *r)
 
7946
{
 
7947
        if (ndr_flags & NDR_SCALARS) {
 
7948
                NDR_CHECK(ndr_pull_align(ndr, 5));
 
7949
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->level));
 
7950
                NDR_CHECK(ndr_pull_set_switch_value(ndr, &r->info, r->level));
 
7951
                NDR_CHECK(ndr_pull_spoolss_SetPrinterInfo(ndr, NDR_SCALARS, &r->info));
 
7952
                NDR_CHECK(ndr_pull_trailer_align(ndr, 5));
 
7953
        }
 
7954
        if (ndr_flags & NDR_BUFFERS) {
 
7955
                NDR_CHECK(ndr_pull_spoolss_SetPrinterInfo(ndr, NDR_BUFFERS, &r->info));
 
7956
        }
 
7957
        return NDR_ERR_SUCCESS;
 
7958
}
 
7959
 
 
7960
_PUBLIC_ void ndr_print_spoolss_SetPrinterInfoCtr(struct ndr_print *ndr, const char *name, const struct spoolss_SetPrinterInfoCtr *r)
 
7961
{
 
7962
        ndr_print_struct(ndr, name, "spoolss_SetPrinterInfoCtr");
 
7963
        ndr->depth++;
 
7964
        ndr_print_uint32(ndr, "level", r->level);
 
7965
        ndr_print_set_switch_value(ndr, &r->info, r->level);
 
7966
        ndr_print_spoolss_SetPrinterInfo(ndr, "info", &r->info);
 
7967
        ndr->depth--;
 
7968
}
 
7969
 
 
7970
_PUBLIC_ enum ndr_err_code ndr_push_spoolss_StringArray(struct ndr_push *ndr, int ndr_flags, const struct spoolss_StringArray *r)
 
7971
{
 
7972
        if (ndr_flags & NDR_SCALARS) {
 
7973
                NDR_CHECK(ndr_push_align(ndr, 4));
 
7974
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, (ndr_size_spoolss_StringArray(r, ndr->iconv_convenience, ndr->flags) - 4) / 2));
 
7975
                {
 
7976
                        uint32_t _flags_save_string_array = ndr->flags;
 
7977
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
7978
                        NDR_CHECK(ndr_push_string_array(ndr, NDR_SCALARS, r->string));
 
7979
                        ndr->flags = _flags_save_string_array;
 
7980
                }
 
7981
                NDR_CHECK(ndr_push_trailer_align(ndr, 4));
 
7982
        }
 
7983
        if (ndr_flags & NDR_BUFFERS) {
 
7984
        }
 
7985
        return NDR_ERR_SUCCESS;
 
7986
}
 
7987
 
 
7988
_PUBLIC_ enum ndr_err_code ndr_pull_spoolss_StringArray(struct ndr_pull *ndr, int ndr_flags, struct spoolss_StringArray *r)
 
7989
{
 
7990
        if (ndr_flags & NDR_SCALARS) {
 
7991
                NDR_CHECK(ndr_pull_align(ndr, 4));
 
7992
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->_ndr_size));
 
7993
                {
 
7994
                        uint32_t _flags_save_string_array = ndr->flags;
 
7995
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
7996
                        NDR_CHECK(ndr_pull_string_array(ndr, NDR_SCALARS, &r->string));
 
7997
                        ndr->flags = _flags_save_string_array;
 
7998
                }
 
7999
                NDR_CHECK(ndr_pull_trailer_align(ndr, 4));
 
8000
        }
 
8001
        if (ndr_flags & NDR_BUFFERS) {
 
8002
        }
 
8003
        return NDR_ERR_SUCCESS;
 
8004
}
 
8005
 
 
8006
_PUBLIC_ void ndr_print_spoolss_StringArray(struct ndr_print *ndr, const char *name, const struct spoolss_StringArray *r)
 
8007
{
 
8008
        ndr_print_struct(ndr, name, "spoolss_StringArray");
 
8009
        ndr->depth++;
 
8010
        ndr_print_uint32(ndr, "_ndr_size", (ndr->flags & LIBNDR_PRINT_SET_VALUES)?(ndr_size_spoolss_StringArray(r, ndr->iconv_convenience, ndr->flags) - 4) / 2:r->_ndr_size);
 
8011
        ndr_print_string_array(ndr, "string", r->string);
 
8012
        ndr->depth--;
 
8013
}
 
8014
 
 
8015
static enum ndr_err_code ndr_push_spoolss_AddDriverInfo1(struct ndr_push *ndr, int ndr_flags, const struct spoolss_AddDriverInfo1 *r)
 
8016
{
 
8017
        if (ndr_flags & NDR_SCALARS) {
 
8018
                NDR_CHECK(ndr_push_align(ndr, 5));
 
8019
                NDR_CHECK(ndr_push_unique_ptr(ndr, r->driver_name));
 
8020
                NDR_CHECK(ndr_push_trailer_align(ndr, 5));
 
8021
        }
 
8022
        if (ndr_flags & NDR_BUFFERS) {
 
8023
                if (r->driver_name) {
 
8024
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->driver_name, CH_UTF16)));
 
8025
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0));
 
8026
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->driver_name, CH_UTF16)));
 
8027
                        NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->driver_name, ndr_charset_length(r->driver_name, CH_UTF16), sizeof(uint16_t), CH_UTF16));
 
8028
                }
 
8029
        }
 
8030
        return NDR_ERR_SUCCESS;
 
8031
}
 
8032
 
 
8033
static enum ndr_err_code ndr_pull_spoolss_AddDriverInfo1(struct ndr_pull *ndr, int ndr_flags, struct spoolss_AddDriverInfo1 *r)
 
8034
{
 
8035
        uint32_t _ptr_driver_name;
 
8036
        TALLOC_CTX *_mem_save_driver_name_0;
 
8037
        if (ndr_flags & NDR_SCALARS) {
 
8038
                NDR_CHECK(ndr_pull_align(ndr, 5));
 
8039
                NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_driver_name));
 
8040
                if (_ptr_driver_name) {
 
8041
                        NDR_PULL_ALLOC(ndr, r->driver_name);
 
8042
                } else {
 
8043
                        r->driver_name = NULL;
 
8044
                }
 
8045
                NDR_CHECK(ndr_pull_trailer_align(ndr, 5));
 
8046
        }
 
8047
        if (ndr_flags & NDR_BUFFERS) {
 
8048
                if (r->driver_name) {
 
8049
                        _mem_save_driver_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
8050
                        NDR_PULL_SET_MEM_CTX(ndr, r->driver_name, 0);
 
8051
                        NDR_CHECK(ndr_pull_array_size(ndr, &r->driver_name));
 
8052
                        NDR_CHECK(ndr_pull_array_length(ndr, &r->driver_name));
 
8053
                        if (ndr_get_array_length(ndr, &r->driver_name) > ndr_get_array_size(ndr, &r->driver_name)) {
 
8054
                                return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->driver_name), ndr_get_array_length(ndr, &r->driver_name));
 
8055
                        }
 
8056
                        NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->driver_name), sizeof(uint16_t)));
 
8057
                        NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->driver_name, ndr_get_array_length(ndr, &r->driver_name), sizeof(uint16_t), CH_UTF16));
 
8058
                        NDR_PULL_SET_MEM_CTX(ndr, _mem_save_driver_name_0, 0);
 
8059
                }
 
8060
        }
 
8061
        return NDR_ERR_SUCCESS;
 
8062
}
 
8063
 
 
8064
_PUBLIC_ void ndr_print_spoolss_AddDriverInfo1(struct ndr_print *ndr, const char *name, const struct spoolss_AddDriverInfo1 *r)
 
8065
{
 
8066
        ndr_print_struct(ndr, name, "spoolss_AddDriverInfo1");
 
8067
        ndr->depth++;
 
8068
        ndr_print_ptr(ndr, "driver_name", r->driver_name);
 
8069
        ndr->depth++;
 
8070
        if (r->driver_name) {
 
8071
                ndr_print_string(ndr, "driver_name", r->driver_name);
 
8072
        }
 
8073
        ndr->depth--;
 
8074
        ndr->depth--;
 
8075
}
 
8076
 
 
8077
_PUBLIC_ enum ndr_err_code ndr_push_spoolss_DriverOSVersion(struct ndr_push *ndr, int ndr_flags, enum spoolss_DriverOSVersion r)
 
8078
{
 
8079
        NDR_CHECK(ndr_push_enum_uint32(ndr, NDR_SCALARS, r));
 
8080
        return NDR_ERR_SUCCESS;
 
8081
}
 
8082
 
 
8083
_PUBLIC_ enum ndr_err_code ndr_pull_spoolss_DriverOSVersion(struct ndr_pull *ndr, int ndr_flags, enum spoolss_DriverOSVersion *r)
 
8084
{
 
8085
        uint32_t v;
 
8086
        NDR_CHECK(ndr_pull_enum_uint32(ndr, NDR_SCALARS, &v));
 
8087
        *r = v;
 
8088
        return NDR_ERR_SUCCESS;
 
8089
}
 
8090
 
 
8091
_PUBLIC_ void ndr_print_spoolss_DriverOSVersion(struct ndr_print *ndr, const char *name, enum spoolss_DriverOSVersion r)
 
8092
{
 
8093
        const char *val = NULL;
 
8094
 
 
8095
        switch (r) {
 
8096
                case SPOOLSS_DRIVER_VERSION_9X: val = "SPOOLSS_DRIVER_VERSION_9X"; break;
 
8097
                case SPOOLSS_DRIVER_VERSION_NT35: val = "SPOOLSS_DRIVER_VERSION_NT35"; break;
 
8098
                case SPOOLSS_DRIVER_VERSION_NT4: val = "SPOOLSS_DRIVER_VERSION_NT4"; break;
 
8099
                case SPOOLSS_DRIVER_VERSION_200X: val = "SPOOLSS_DRIVER_VERSION_200X"; break;
 
8100
        }
 
8101
        ndr_print_enum(ndr, name, "ENUM", val, r);
 
8102
}
 
8103
 
 
8104
static enum ndr_err_code ndr_push_spoolss_AddDriverInfo2(struct ndr_push *ndr, int ndr_flags, const struct spoolss_AddDriverInfo2 *r)
 
8105
{
 
8106
        if (ndr_flags & NDR_SCALARS) {
 
8107
                NDR_CHECK(ndr_push_align(ndr, 5));
 
8108
                NDR_CHECK(ndr_push_spoolss_DriverOSVersion(ndr, NDR_SCALARS, r->version));
 
8109
                NDR_CHECK(ndr_push_unique_ptr(ndr, r->driver_name));
 
8110
                NDR_CHECK(ndr_push_unique_ptr(ndr, r->architecture));
 
8111
                NDR_CHECK(ndr_push_unique_ptr(ndr, r->driver_path));
 
8112
                NDR_CHECK(ndr_push_unique_ptr(ndr, r->data_file));
 
8113
                NDR_CHECK(ndr_push_unique_ptr(ndr, r->config_file));
 
8114
                NDR_CHECK(ndr_push_trailer_align(ndr, 5));
 
8115
        }
 
8116
        if (ndr_flags & NDR_BUFFERS) {
 
8117
                if (r->driver_name) {
 
8118
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->driver_name, CH_UTF16)));
 
8119
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0));
 
8120
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->driver_name, CH_UTF16)));
 
8121
                        NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->driver_name, ndr_charset_length(r->driver_name, CH_UTF16), sizeof(uint16_t), CH_UTF16));
 
8122
                }
 
8123
                if (r->architecture) {
 
8124
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->architecture, CH_UTF16)));
 
8125
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0));
 
8126
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->architecture, CH_UTF16)));
 
8127
                        NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->architecture, ndr_charset_length(r->architecture, CH_UTF16), sizeof(uint16_t), CH_UTF16));
 
8128
                }
 
8129
                if (r->driver_path) {
 
8130
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->driver_path, CH_UTF16)));
 
8131
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0));
 
8132
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->driver_path, CH_UTF16)));
 
8133
                        NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->driver_path, ndr_charset_length(r->driver_path, CH_UTF16), sizeof(uint16_t), CH_UTF16));
 
8134
                }
 
8135
                if (r->data_file) {
 
8136
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->data_file, CH_UTF16)));
 
8137
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0));
 
8138
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->data_file, CH_UTF16)));
 
8139
                        NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->data_file, ndr_charset_length(r->data_file, CH_UTF16), sizeof(uint16_t), CH_UTF16));
 
8140
                }
 
8141
                if (r->config_file) {
 
8142
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->config_file, CH_UTF16)));
 
8143
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0));
 
8144
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->config_file, CH_UTF16)));
 
8145
                        NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->config_file, ndr_charset_length(r->config_file, CH_UTF16), sizeof(uint16_t), CH_UTF16));
 
8146
                }
 
8147
        }
 
8148
        return NDR_ERR_SUCCESS;
 
8149
}
 
8150
 
 
8151
static enum ndr_err_code ndr_pull_spoolss_AddDriverInfo2(struct ndr_pull *ndr, int ndr_flags, struct spoolss_AddDriverInfo2 *r)
 
8152
{
 
8153
        uint32_t _ptr_driver_name;
 
8154
        TALLOC_CTX *_mem_save_driver_name_0;
 
8155
        uint32_t _ptr_architecture;
 
8156
        TALLOC_CTX *_mem_save_architecture_0;
 
8157
        uint32_t _ptr_driver_path;
 
8158
        TALLOC_CTX *_mem_save_driver_path_0;
 
8159
        uint32_t _ptr_data_file;
 
8160
        TALLOC_CTX *_mem_save_data_file_0;
 
8161
        uint32_t _ptr_config_file;
 
8162
        TALLOC_CTX *_mem_save_config_file_0;
 
8163
        if (ndr_flags & NDR_SCALARS) {
 
8164
                NDR_CHECK(ndr_pull_align(ndr, 5));
 
8165
                NDR_CHECK(ndr_pull_spoolss_DriverOSVersion(ndr, NDR_SCALARS, &r->version));
 
8166
                NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_driver_name));
 
8167
                if (_ptr_driver_name) {
 
8168
                        NDR_PULL_ALLOC(ndr, r->driver_name);
 
8169
                } else {
 
8170
                        r->driver_name = NULL;
 
8171
                }
 
8172
                NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_architecture));
 
8173
                if (_ptr_architecture) {
 
8174
                        NDR_PULL_ALLOC(ndr, r->architecture);
 
8175
                } else {
 
8176
                        r->architecture = NULL;
 
8177
                }
 
8178
                NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_driver_path));
 
8179
                if (_ptr_driver_path) {
 
8180
                        NDR_PULL_ALLOC(ndr, r->driver_path);
 
8181
                } else {
 
8182
                        r->driver_path = NULL;
 
8183
                }
 
8184
                NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_data_file));
 
8185
                if (_ptr_data_file) {
 
8186
                        NDR_PULL_ALLOC(ndr, r->data_file);
 
8187
                } else {
 
8188
                        r->data_file = NULL;
 
8189
                }
 
8190
                NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_config_file));
 
8191
                if (_ptr_config_file) {
 
8192
                        NDR_PULL_ALLOC(ndr, r->config_file);
 
8193
                } else {
 
8194
                        r->config_file = NULL;
 
8195
                }
 
8196
                NDR_CHECK(ndr_pull_trailer_align(ndr, 5));
 
8197
        }
 
8198
        if (ndr_flags & NDR_BUFFERS) {
 
8199
                if (r->driver_name) {
 
8200
                        _mem_save_driver_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
8201
                        NDR_PULL_SET_MEM_CTX(ndr, r->driver_name, 0);
 
8202
                        NDR_CHECK(ndr_pull_array_size(ndr, &r->driver_name));
 
8203
                        NDR_CHECK(ndr_pull_array_length(ndr, &r->driver_name));
 
8204
                        if (ndr_get_array_length(ndr, &r->driver_name) > ndr_get_array_size(ndr, &r->driver_name)) {
 
8205
                                return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->driver_name), ndr_get_array_length(ndr, &r->driver_name));
 
8206
                        }
 
8207
                        NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->driver_name), sizeof(uint16_t)));
 
8208
                        NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->driver_name, ndr_get_array_length(ndr, &r->driver_name), sizeof(uint16_t), CH_UTF16));
 
8209
                        NDR_PULL_SET_MEM_CTX(ndr, _mem_save_driver_name_0, 0);
 
8210
                }
 
8211
                if (r->architecture) {
 
8212
                        _mem_save_architecture_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
8213
                        NDR_PULL_SET_MEM_CTX(ndr, r->architecture, 0);
 
8214
                        NDR_CHECK(ndr_pull_array_size(ndr, &r->architecture));
 
8215
                        NDR_CHECK(ndr_pull_array_length(ndr, &r->architecture));
 
8216
                        if (ndr_get_array_length(ndr, &r->architecture) > ndr_get_array_size(ndr, &r->architecture)) {
 
8217
                                return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->architecture), ndr_get_array_length(ndr, &r->architecture));
 
8218
                        }
 
8219
                        NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->architecture), sizeof(uint16_t)));
 
8220
                        NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->architecture, ndr_get_array_length(ndr, &r->architecture), sizeof(uint16_t), CH_UTF16));
 
8221
                        NDR_PULL_SET_MEM_CTX(ndr, _mem_save_architecture_0, 0);
 
8222
                }
 
8223
                if (r->driver_path) {
 
8224
                        _mem_save_driver_path_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
8225
                        NDR_PULL_SET_MEM_CTX(ndr, r->driver_path, 0);
 
8226
                        NDR_CHECK(ndr_pull_array_size(ndr, &r->driver_path));
 
8227
                        NDR_CHECK(ndr_pull_array_length(ndr, &r->driver_path));
 
8228
                        if (ndr_get_array_length(ndr, &r->driver_path) > ndr_get_array_size(ndr, &r->driver_path)) {
 
8229
                                return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->driver_path), ndr_get_array_length(ndr, &r->driver_path));
 
8230
                        }
 
8231
                        NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->driver_path), sizeof(uint16_t)));
 
8232
                        NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->driver_path, ndr_get_array_length(ndr, &r->driver_path), sizeof(uint16_t), CH_UTF16));
 
8233
                        NDR_PULL_SET_MEM_CTX(ndr, _mem_save_driver_path_0, 0);
 
8234
                }
 
8235
                if (r->data_file) {
 
8236
                        _mem_save_data_file_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
8237
                        NDR_PULL_SET_MEM_CTX(ndr, r->data_file, 0);
 
8238
                        NDR_CHECK(ndr_pull_array_size(ndr, &r->data_file));
 
8239
                        NDR_CHECK(ndr_pull_array_length(ndr, &r->data_file));
 
8240
                        if (ndr_get_array_length(ndr, &r->data_file) > ndr_get_array_size(ndr, &r->data_file)) {
 
8241
                                return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->data_file), ndr_get_array_length(ndr, &r->data_file));
 
8242
                        }
 
8243
                        NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->data_file), sizeof(uint16_t)));
 
8244
                        NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->data_file, ndr_get_array_length(ndr, &r->data_file), sizeof(uint16_t), CH_UTF16));
 
8245
                        NDR_PULL_SET_MEM_CTX(ndr, _mem_save_data_file_0, 0);
 
8246
                }
 
8247
                if (r->config_file) {
 
8248
                        _mem_save_config_file_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
8249
                        NDR_PULL_SET_MEM_CTX(ndr, r->config_file, 0);
 
8250
                        NDR_CHECK(ndr_pull_array_size(ndr, &r->config_file));
 
8251
                        NDR_CHECK(ndr_pull_array_length(ndr, &r->config_file));
 
8252
                        if (ndr_get_array_length(ndr, &r->config_file) > ndr_get_array_size(ndr, &r->config_file)) {
 
8253
                                return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->config_file), ndr_get_array_length(ndr, &r->config_file));
 
8254
                        }
 
8255
                        NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->config_file), sizeof(uint16_t)));
 
8256
                        NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->config_file, ndr_get_array_length(ndr, &r->config_file), sizeof(uint16_t), CH_UTF16));
 
8257
                        NDR_PULL_SET_MEM_CTX(ndr, _mem_save_config_file_0, 0);
 
8258
                }
 
8259
        }
 
8260
        return NDR_ERR_SUCCESS;
 
8261
}
 
8262
 
 
8263
_PUBLIC_ void ndr_print_spoolss_AddDriverInfo2(struct ndr_print *ndr, const char *name, const struct spoolss_AddDriverInfo2 *r)
 
8264
{
 
8265
        ndr_print_struct(ndr, name, "spoolss_AddDriverInfo2");
 
8266
        ndr->depth++;
 
8267
        ndr_print_spoolss_DriverOSVersion(ndr, "version", r->version);
 
8268
        ndr_print_ptr(ndr, "driver_name", r->driver_name);
 
8269
        ndr->depth++;
 
8270
        if (r->driver_name) {
 
8271
                ndr_print_string(ndr, "driver_name", r->driver_name);
 
8272
        }
 
8273
        ndr->depth--;
 
8274
        ndr_print_ptr(ndr, "architecture", r->architecture);
 
8275
        ndr->depth++;
 
8276
        if (r->architecture) {
 
8277
                ndr_print_string(ndr, "architecture", r->architecture);
 
8278
        }
 
8279
        ndr->depth--;
 
8280
        ndr_print_ptr(ndr, "driver_path", r->driver_path);
 
8281
        ndr->depth++;
 
8282
        if (r->driver_path) {
 
8283
                ndr_print_string(ndr, "driver_path", r->driver_path);
 
8284
        }
 
8285
        ndr->depth--;
 
8286
        ndr_print_ptr(ndr, "data_file", r->data_file);
 
8287
        ndr->depth++;
 
8288
        if (r->data_file) {
 
8289
                ndr_print_string(ndr, "data_file", r->data_file);
 
8290
        }
 
8291
        ndr->depth--;
 
8292
        ndr_print_ptr(ndr, "config_file", r->config_file);
 
8293
        ndr->depth++;
 
8294
        if (r->config_file) {
 
8295
                ndr_print_string(ndr, "config_file", r->config_file);
 
8296
        }
 
8297
        ndr->depth--;
 
8298
        ndr->depth--;
 
8299
}
 
8300
 
 
8301
static enum ndr_err_code ndr_push_spoolss_AddDriverInfo3(struct ndr_push *ndr, int ndr_flags, const struct spoolss_AddDriverInfo3 *r)
 
8302
{
 
8303
        if (ndr_flags & NDR_SCALARS) {
 
8304
                NDR_CHECK(ndr_push_align(ndr, 5));
 
8305
                NDR_CHECK(ndr_push_spoolss_DriverOSVersion(ndr, NDR_SCALARS, r->version));
 
8306
                NDR_CHECK(ndr_push_unique_ptr(ndr, r->driver_name));
 
8307
                NDR_CHECK(ndr_push_unique_ptr(ndr, r->architecture));
 
8308
                NDR_CHECK(ndr_push_unique_ptr(ndr, r->driver_path));
 
8309
                NDR_CHECK(ndr_push_unique_ptr(ndr, r->data_file));
 
8310
                NDR_CHECK(ndr_push_unique_ptr(ndr, r->config_file));
 
8311
                NDR_CHECK(ndr_push_unique_ptr(ndr, r->help_file));
 
8312
                NDR_CHECK(ndr_push_unique_ptr(ndr, r->monitor_name));
 
8313
                NDR_CHECK(ndr_push_unique_ptr(ndr, r->default_datatype));
 
8314
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ((ndr_size_spoolss_StringArray(r->dependent_files, ndr->iconv_convenience, ndr->flags) - 4) / 2)));
 
8315
                NDR_CHECK(ndr_push_unique_ptr(ndr, r->dependent_files));
 
8316
                NDR_CHECK(ndr_push_trailer_align(ndr, 5));
 
8317
        }
 
8318
        if (ndr_flags & NDR_BUFFERS) {
 
8319
                if (r->driver_name) {
 
8320
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->driver_name, CH_UTF16)));
 
8321
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0));
 
8322
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->driver_name, CH_UTF16)));
 
8323
                        NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->driver_name, ndr_charset_length(r->driver_name, CH_UTF16), sizeof(uint16_t), CH_UTF16));
 
8324
                }
 
8325
                if (r->architecture) {
 
8326
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->architecture, CH_UTF16)));
 
8327
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0));
 
8328
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->architecture, CH_UTF16)));
 
8329
                        NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->architecture, ndr_charset_length(r->architecture, CH_UTF16), sizeof(uint16_t), CH_UTF16));
 
8330
                }
 
8331
                if (r->driver_path) {
 
8332
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->driver_path, CH_UTF16)));
 
8333
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0));
 
8334
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->driver_path, CH_UTF16)));
 
8335
                        NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->driver_path, ndr_charset_length(r->driver_path, CH_UTF16), sizeof(uint16_t), CH_UTF16));
 
8336
                }
 
8337
                if (r->data_file) {
 
8338
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->data_file, CH_UTF16)));
 
8339
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0));
 
8340
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->data_file, CH_UTF16)));
 
8341
                        NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->data_file, ndr_charset_length(r->data_file, CH_UTF16), sizeof(uint16_t), CH_UTF16));
 
8342
                }
 
8343
                if (r->config_file) {
 
8344
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->config_file, CH_UTF16)));
 
8345
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0));
 
8346
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->config_file, CH_UTF16)));
 
8347
                        NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->config_file, ndr_charset_length(r->config_file, CH_UTF16), sizeof(uint16_t), CH_UTF16));
 
8348
                }
 
8349
                if (r->help_file) {
 
8350
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->help_file, CH_UTF16)));
 
8351
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0));
 
8352
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->help_file, CH_UTF16)));
 
8353
                        NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->help_file, ndr_charset_length(r->help_file, CH_UTF16), sizeof(uint16_t), CH_UTF16));
 
8354
                }
 
8355
                if (r->monitor_name) {
 
8356
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->monitor_name, CH_UTF16)));
 
8357
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0));
 
8358
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->monitor_name, CH_UTF16)));
 
8359
                        NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->monitor_name, ndr_charset_length(r->monitor_name, CH_UTF16), sizeof(uint16_t), CH_UTF16));
 
8360
                }
 
8361
                if (r->default_datatype) {
 
8362
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->default_datatype, CH_UTF16)));
 
8363
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0));
 
8364
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->default_datatype, CH_UTF16)));
 
8365
                        NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->default_datatype, ndr_charset_length(r->default_datatype, CH_UTF16), sizeof(uint16_t), CH_UTF16));
 
8366
                }
 
8367
                if (r->dependent_files) {
 
8368
                        NDR_CHECK(ndr_push_spoolss_StringArray(ndr, NDR_SCALARS, r->dependent_files));
 
8369
                }
 
8370
        }
 
8371
        return NDR_ERR_SUCCESS;
 
8372
}
 
8373
 
 
8374
static enum ndr_err_code ndr_pull_spoolss_AddDriverInfo3(struct ndr_pull *ndr, int ndr_flags, struct spoolss_AddDriverInfo3 *r)
 
8375
{
 
8376
        uint32_t _ptr_driver_name;
 
8377
        TALLOC_CTX *_mem_save_driver_name_0;
 
8378
        uint32_t _ptr_architecture;
 
8379
        TALLOC_CTX *_mem_save_architecture_0;
 
8380
        uint32_t _ptr_driver_path;
 
8381
        TALLOC_CTX *_mem_save_driver_path_0;
 
8382
        uint32_t _ptr_data_file;
 
8383
        TALLOC_CTX *_mem_save_data_file_0;
 
8384
        uint32_t _ptr_config_file;
 
8385
        TALLOC_CTX *_mem_save_config_file_0;
 
8386
        uint32_t _ptr_help_file;
 
8387
        TALLOC_CTX *_mem_save_help_file_0;
 
8388
        uint32_t _ptr_monitor_name;
 
8389
        TALLOC_CTX *_mem_save_monitor_name_0;
 
8390
        uint32_t _ptr_default_datatype;
 
8391
        TALLOC_CTX *_mem_save_default_datatype_0;
 
8392
        uint32_t _ptr_dependent_files;
 
8393
        TALLOC_CTX *_mem_save_dependent_files_0;
 
8394
        if (ndr_flags & NDR_SCALARS) {
 
8395
                NDR_CHECK(ndr_pull_align(ndr, 5));
 
8396
                NDR_CHECK(ndr_pull_spoolss_DriverOSVersion(ndr, NDR_SCALARS, &r->version));
 
8397
                NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_driver_name));
 
8398
                if (_ptr_driver_name) {
 
8399
                        NDR_PULL_ALLOC(ndr, r->driver_name);
 
8400
                } else {
 
8401
                        r->driver_name = NULL;
 
8402
                }
 
8403
                NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_architecture));
 
8404
                if (_ptr_architecture) {
 
8405
                        NDR_PULL_ALLOC(ndr, r->architecture);
 
8406
                } else {
 
8407
                        r->architecture = NULL;
 
8408
                }
 
8409
                NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_driver_path));
 
8410
                if (_ptr_driver_path) {
 
8411
                        NDR_PULL_ALLOC(ndr, r->driver_path);
 
8412
                } else {
 
8413
                        r->driver_path = NULL;
 
8414
                }
 
8415
                NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_data_file));
 
8416
                if (_ptr_data_file) {
 
8417
                        NDR_PULL_ALLOC(ndr, r->data_file);
 
8418
                } else {
 
8419
                        r->data_file = NULL;
 
8420
                }
 
8421
                NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_config_file));
 
8422
                if (_ptr_config_file) {
 
8423
                        NDR_PULL_ALLOC(ndr, r->config_file);
 
8424
                } else {
 
8425
                        r->config_file = NULL;
 
8426
                }
 
8427
                NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_help_file));
 
8428
                if (_ptr_help_file) {
 
8429
                        NDR_PULL_ALLOC(ndr, r->help_file);
 
8430
                } else {
 
8431
                        r->help_file = NULL;
 
8432
                }
 
8433
                NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_monitor_name));
 
8434
                if (_ptr_monitor_name) {
 
8435
                        NDR_PULL_ALLOC(ndr, r->monitor_name);
 
8436
                } else {
 
8437
                        r->monitor_name = NULL;
 
8438
                }
 
8439
                NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_default_datatype));
 
8440
                if (_ptr_default_datatype) {
 
8441
                        NDR_PULL_ALLOC(ndr, r->default_datatype);
 
8442
                } else {
 
8443
                        r->default_datatype = NULL;
 
8444
                }
 
8445
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->_ndr_size_dependent_files));
 
8446
                NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_dependent_files));
 
8447
                if (_ptr_dependent_files) {
 
8448
                        NDR_PULL_ALLOC(ndr, r->dependent_files);
 
8449
                } else {
 
8450
                        r->dependent_files = NULL;
 
8451
                }
 
8452
                NDR_CHECK(ndr_pull_trailer_align(ndr, 5));
 
8453
        }
 
8454
        if (ndr_flags & NDR_BUFFERS) {
 
8455
                if (r->driver_name) {
 
8456
                        _mem_save_driver_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
8457
                        NDR_PULL_SET_MEM_CTX(ndr, r->driver_name, 0);
 
8458
                        NDR_CHECK(ndr_pull_array_size(ndr, &r->driver_name));
 
8459
                        NDR_CHECK(ndr_pull_array_length(ndr, &r->driver_name));
 
8460
                        if (ndr_get_array_length(ndr, &r->driver_name) > ndr_get_array_size(ndr, &r->driver_name)) {
 
8461
                                return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->driver_name), ndr_get_array_length(ndr, &r->driver_name));
 
8462
                        }
 
8463
                        NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->driver_name), sizeof(uint16_t)));
 
8464
                        NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->driver_name, ndr_get_array_length(ndr, &r->driver_name), sizeof(uint16_t), CH_UTF16));
 
8465
                        NDR_PULL_SET_MEM_CTX(ndr, _mem_save_driver_name_0, 0);
 
8466
                }
 
8467
                if (r->architecture) {
 
8468
                        _mem_save_architecture_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
8469
                        NDR_PULL_SET_MEM_CTX(ndr, r->architecture, 0);
 
8470
                        NDR_CHECK(ndr_pull_array_size(ndr, &r->architecture));
 
8471
                        NDR_CHECK(ndr_pull_array_length(ndr, &r->architecture));
 
8472
                        if (ndr_get_array_length(ndr, &r->architecture) > ndr_get_array_size(ndr, &r->architecture)) {
 
8473
                                return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->architecture), ndr_get_array_length(ndr, &r->architecture));
 
8474
                        }
 
8475
                        NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->architecture), sizeof(uint16_t)));
 
8476
                        NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->architecture, ndr_get_array_length(ndr, &r->architecture), sizeof(uint16_t), CH_UTF16));
 
8477
                        NDR_PULL_SET_MEM_CTX(ndr, _mem_save_architecture_0, 0);
 
8478
                }
 
8479
                if (r->driver_path) {
 
8480
                        _mem_save_driver_path_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
8481
                        NDR_PULL_SET_MEM_CTX(ndr, r->driver_path, 0);
 
8482
                        NDR_CHECK(ndr_pull_array_size(ndr, &r->driver_path));
 
8483
                        NDR_CHECK(ndr_pull_array_length(ndr, &r->driver_path));
 
8484
                        if (ndr_get_array_length(ndr, &r->driver_path) > ndr_get_array_size(ndr, &r->driver_path)) {
 
8485
                                return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->driver_path), ndr_get_array_length(ndr, &r->driver_path));
 
8486
                        }
 
8487
                        NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->driver_path), sizeof(uint16_t)));
 
8488
                        NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->driver_path, ndr_get_array_length(ndr, &r->driver_path), sizeof(uint16_t), CH_UTF16));
 
8489
                        NDR_PULL_SET_MEM_CTX(ndr, _mem_save_driver_path_0, 0);
 
8490
                }
 
8491
                if (r->data_file) {
 
8492
                        _mem_save_data_file_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
8493
                        NDR_PULL_SET_MEM_CTX(ndr, r->data_file, 0);
 
8494
                        NDR_CHECK(ndr_pull_array_size(ndr, &r->data_file));
 
8495
                        NDR_CHECK(ndr_pull_array_length(ndr, &r->data_file));
 
8496
                        if (ndr_get_array_length(ndr, &r->data_file) > ndr_get_array_size(ndr, &r->data_file)) {
 
8497
                                return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->data_file), ndr_get_array_length(ndr, &r->data_file));
 
8498
                        }
 
8499
                        NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->data_file), sizeof(uint16_t)));
 
8500
                        NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->data_file, ndr_get_array_length(ndr, &r->data_file), sizeof(uint16_t), CH_UTF16));
 
8501
                        NDR_PULL_SET_MEM_CTX(ndr, _mem_save_data_file_0, 0);
 
8502
                }
 
8503
                if (r->config_file) {
 
8504
                        _mem_save_config_file_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
8505
                        NDR_PULL_SET_MEM_CTX(ndr, r->config_file, 0);
 
8506
                        NDR_CHECK(ndr_pull_array_size(ndr, &r->config_file));
 
8507
                        NDR_CHECK(ndr_pull_array_length(ndr, &r->config_file));
 
8508
                        if (ndr_get_array_length(ndr, &r->config_file) > ndr_get_array_size(ndr, &r->config_file)) {
 
8509
                                return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->config_file), ndr_get_array_length(ndr, &r->config_file));
 
8510
                        }
 
8511
                        NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->config_file), sizeof(uint16_t)));
 
8512
                        NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->config_file, ndr_get_array_length(ndr, &r->config_file), sizeof(uint16_t), CH_UTF16));
 
8513
                        NDR_PULL_SET_MEM_CTX(ndr, _mem_save_config_file_0, 0);
 
8514
                }
 
8515
                if (r->help_file) {
 
8516
                        _mem_save_help_file_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
8517
                        NDR_PULL_SET_MEM_CTX(ndr, r->help_file, 0);
 
8518
                        NDR_CHECK(ndr_pull_array_size(ndr, &r->help_file));
 
8519
                        NDR_CHECK(ndr_pull_array_length(ndr, &r->help_file));
 
8520
                        if (ndr_get_array_length(ndr, &r->help_file) > ndr_get_array_size(ndr, &r->help_file)) {
 
8521
                                return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->help_file), ndr_get_array_length(ndr, &r->help_file));
 
8522
                        }
 
8523
                        NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->help_file), sizeof(uint16_t)));
 
8524
                        NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->help_file, ndr_get_array_length(ndr, &r->help_file), sizeof(uint16_t), CH_UTF16));
 
8525
                        NDR_PULL_SET_MEM_CTX(ndr, _mem_save_help_file_0, 0);
 
8526
                }
 
8527
                if (r->monitor_name) {
 
8528
                        _mem_save_monitor_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
8529
                        NDR_PULL_SET_MEM_CTX(ndr, r->monitor_name, 0);
 
8530
                        NDR_CHECK(ndr_pull_array_size(ndr, &r->monitor_name));
 
8531
                        NDR_CHECK(ndr_pull_array_length(ndr, &r->monitor_name));
 
8532
                        if (ndr_get_array_length(ndr, &r->monitor_name) > ndr_get_array_size(ndr, &r->monitor_name)) {
 
8533
                                return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->monitor_name), ndr_get_array_length(ndr, &r->monitor_name));
 
8534
                        }
 
8535
                        NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->monitor_name), sizeof(uint16_t)));
 
8536
                        NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->monitor_name, ndr_get_array_length(ndr, &r->monitor_name), sizeof(uint16_t), CH_UTF16));
 
8537
                        NDR_PULL_SET_MEM_CTX(ndr, _mem_save_monitor_name_0, 0);
 
8538
                }
 
8539
                if (r->default_datatype) {
 
8540
                        _mem_save_default_datatype_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
8541
                        NDR_PULL_SET_MEM_CTX(ndr, r->default_datatype, 0);
 
8542
                        NDR_CHECK(ndr_pull_array_size(ndr, &r->default_datatype));
 
8543
                        NDR_CHECK(ndr_pull_array_length(ndr, &r->default_datatype));
 
8544
                        if (ndr_get_array_length(ndr, &r->default_datatype) > ndr_get_array_size(ndr, &r->default_datatype)) {
 
8545
                                return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->default_datatype), ndr_get_array_length(ndr, &r->default_datatype));
 
8546
                        }
 
8547
                        NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->default_datatype), sizeof(uint16_t)));
 
8548
                        NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->default_datatype, ndr_get_array_length(ndr, &r->default_datatype), sizeof(uint16_t), CH_UTF16));
 
8549
                        NDR_PULL_SET_MEM_CTX(ndr, _mem_save_default_datatype_0, 0);
 
8550
                }
 
8551
                if (r->dependent_files) {
 
8552
                        _mem_save_dependent_files_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
8553
                        NDR_PULL_SET_MEM_CTX(ndr, r->dependent_files, 0);
 
8554
                        NDR_CHECK(ndr_pull_spoolss_StringArray(ndr, NDR_SCALARS, r->dependent_files));
 
8555
                        NDR_PULL_SET_MEM_CTX(ndr, _mem_save_dependent_files_0, 0);
 
8556
                }
 
8557
        }
 
8558
        return NDR_ERR_SUCCESS;
 
8559
}
 
8560
 
 
8561
_PUBLIC_ void ndr_print_spoolss_AddDriverInfo3(struct ndr_print *ndr, const char *name, const struct spoolss_AddDriverInfo3 *r)
 
8562
{
 
8563
        ndr_print_struct(ndr, name, "spoolss_AddDriverInfo3");
 
8564
        ndr->depth++;
 
8565
        ndr_print_spoolss_DriverOSVersion(ndr, "version", r->version);
 
8566
        ndr_print_ptr(ndr, "driver_name", r->driver_name);
 
8567
        ndr->depth++;
 
8568
        if (r->driver_name) {
 
8569
                ndr_print_string(ndr, "driver_name", r->driver_name);
 
8570
        }
 
8571
        ndr->depth--;
 
8572
        ndr_print_ptr(ndr, "architecture", r->architecture);
 
8573
        ndr->depth++;
 
8574
        if (r->architecture) {
 
8575
                ndr_print_string(ndr, "architecture", r->architecture);
 
8576
        }
 
8577
        ndr->depth--;
 
8578
        ndr_print_ptr(ndr, "driver_path", r->driver_path);
 
8579
        ndr->depth++;
 
8580
        if (r->driver_path) {
 
8581
                ndr_print_string(ndr, "driver_path", r->driver_path);
 
8582
        }
 
8583
        ndr->depth--;
 
8584
        ndr_print_ptr(ndr, "data_file", r->data_file);
 
8585
        ndr->depth++;
 
8586
        if (r->data_file) {
 
8587
                ndr_print_string(ndr, "data_file", r->data_file);
 
8588
        }
 
8589
        ndr->depth--;
 
8590
        ndr_print_ptr(ndr, "config_file", r->config_file);
 
8591
        ndr->depth++;
 
8592
        if (r->config_file) {
 
8593
                ndr_print_string(ndr, "config_file", r->config_file);
 
8594
        }
 
8595
        ndr->depth--;
 
8596
        ndr_print_ptr(ndr, "help_file", r->help_file);
 
8597
        ndr->depth++;
 
8598
        if (r->help_file) {
 
8599
                ndr_print_string(ndr, "help_file", r->help_file);
 
8600
        }
 
8601
        ndr->depth--;
 
8602
        ndr_print_ptr(ndr, "monitor_name", r->monitor_name);
 
8603
        ndr->depth++;
 
8604
        if (r->monitor_name) {
 
8605
                ndr_print_string(ndr, "monitor_name", r->monitor_name);
 
8606
        }
 
8607
        ndr->depth--;
 
8608
        ndr_print_ptr(ndr, "default_datatype", r->default_datatype);
 
8609
        ndr->depth++;
 
8610
        if (r->default_datatype) {
 
8611
                ndr_print_string(ndr, "default_datatype", r->default_datatype);
 
8612
        }
 
8613
        ndr->depth--;
 
8614
        ndr_print_uint32(ndr, "_ndr_size_dependent_files", (ndr->flags & LIBNDR_PRINT_SET_VALUES)?((ndr_size_spoolss_StringArray(r->dependent_files, ndr->iconv_convenience, ndr->flags) - 4) / 2):r->_ndr_size_dependent_files);
 
8615
        ndr_print_ptr(ndr, "dependent_files", r->dependent_files);
 
8616
        ndr->depth++;
 
8617
        if (r->dependent_files) {
 
8618
                ndr_print_spoolss_StringArray(ndr, "dependent_files", r->dependent_files);
 
8619
        }
 
8620
        ndr->depth--;
 
8621
        ndr->depth--;
 
8622
}
 
8623
 
 
8624
static enum ndr_err_code ndr_push_spoolss_AddDriverInfo4(struct ndr_push *ndr, int ndr_flags, const struct spoolss_AddDriverInfo4 *r)
 
8625
{
 
8626
        if (ndr_flags & NDR_SCALARS) {
 
8627
                NDR_CHECK(ndr_push_align(ndr, 5));
 
8628
                NDR_CHECK(ndr_push_spoolss_DriverOSVersion(ndr, NDR_SCALARS, r->version));
 
8629
                NDR_CHECK(ndr_push_unique_ptr(ndr, r->driver_name));
 
8630
                NDR_CHECK(ndr_push_unique_ptr(ndr, r->architecture));
 
8631
                NDR_CHECK(ndr_push_unique_ptr(ndr, r->driver_path));
 
8632
                NDR_CHECK(ndr_push_unique_ptr(ndr, r->data_file));
 
8633
                NDR_CHECK(ndr_push_unique_ptr(ndr, r->config_file));
 
8634
                NDR_CHECK(ndr_push_unique_ptr(ndr, r->help_file));
 
8635
                NDR_CHECK(ndr_push_unique_ptr(ndr, r->monitor_name));
 
8636
                NDR_CHECK(ndr_push_unique_ptr(ndr, r->default_datatype));
 
8637
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ((ndr_size_spoolss_StringArray(r->dependent_files, ndr->iconv_convenience, ndr->flags) - 4) / 2)));
 
8638
                NDR_CHECK(ndr_push_unique_ptr(ndr, r->dependent_files));
 
8639
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ((ndr_size_spoolss_StringArray(r->previous_names, ndr->iconv_convenience, ndr->flags) - 4) / 2)));
 
8640
                NDR_CHECK(ndr_push_unique_ptr(ndr, r->previous_names));
 
8641
                NDR_CHECK(ndr_push_trailer_align(ndr, 5));
 
8642
        }
 
8643
        if (ndr_flags & NDR_BUFFERS) {
 
8644
                if (r->driver_name) {
 
8645
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->driver_name, CH_UTF16)));
 
8646
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0));
 
8647
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->driver_name, CH_UTF16)));
 
8648
                        NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->driver_name, ndr_charset_length(r->driver_name, CH_UTF16), sizeof(uint16_t), CH_UTF16));
 
8649
                }
 
8650
                if (r->architecture) {
 
8651
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->architecture, CH_UTF16)));
 
8652
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0));
 
8653
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->architecture, CH_UTF16)));
 
8654
                        NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->architecture, ndr_charset_length(r->architecture, CH_UTF16), sizeof(uint16_t), CH_UTF16));
 
8655
                }
 
8656
                if (r->driver_path) {
 
8657
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->driver_path, CH_UTF16)));
 
8658
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0));
 
8659
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->driver_path, CH_UTF16)));
 
8660
                        NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->driver_path, ndr_charset_length(r->driver_path, CH_UTF16), sizeof(uint16_t), CH_UTF16));
 
8661
                }
 
8662
                if (r->data_file) {
 
8663
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->data_file, CH_UTF16)));
 
8664
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0));
 
8665
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->data_file, CH_UTF16)));
 
8666
                        NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->data_file, ndr_charset_length(r->data_file, CH_UTF16), sizeof(uint16_t), CH_UTF16));
 
8667
                }
 
8668
                if (r->config_file) {
 
8669
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->config_file, CH_UTF16)));
 
8670
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0));
 
8671
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->config_file, CH_UTF16)));
 
8672
                        NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->config_file, ndr_charset_length(r->config_file, CH_UTF16), sizeof(uint16_t), CH_UTF16));
 
8673
                }
 
8674
                if (r->help_file) {
 
8675
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->help_file, CH_UTF16)));
 
8676
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0));
 
8677
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->help_file, CH_UTF16)));
 
8678
                        NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->help_file, ndr_charset_length(r->help_file, CH_UTF16), sizeof(uint16_t), CH_UTF16));
 
8679
                }
 
8680
                if (r->monitor_name) {
 
8681
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->monitor_name, CH_UTF16)));
 
8682
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0));
 
8683
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->monitor_name, CH_UTF16)));
 
8684
                        NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->monitor_name, ndr_charset_length(r->monitor_name, CH_UTF16), sizeof(uint16_t), CH_UTF16));
 
8685
                }
 
8686
                if (r->default_datatype) {
 
8687
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->default_datatype, CH_UTF16)));
 
8688
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0));
 
8689
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->default_datatype, CH_UTF16)));
 
8690
                        NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->default_datatype, ndr_charset_length(r->default_datatype, CH_UTF16), sizeof(uint16_t), CH_UTF16));
 
8691
                }
 
8692
                if (r->dependent_files) {
 
8693
                        NDR_CHECK(ndr_push_spoolss_StringArray(ndr, NDR_SCALARS, r->dependent_files));
 
8694
                }
 
8695
                if (r->previous_names) {
 
8696
                        NDR_CHECK(ndr_push_spoolss_StringArray(ndr, NDR_SCALARS, r->previous_names));
 
8697
                }
 
8698
        }
 
8699
        return NDR_ERR_SUCCESS;
 
8700
}
 
8701
 
 
8702
static enum ndr_err_code ndr_pull_spoolss_AddDriverInfo4(struct ndr_pull *ndr, int ndr_flags, struct spoolss_AddDriverInfo4 *r)
 
8703
{
 
8704
        uint32_t _ptr_driver_name;
 
8705
        TALLOC_CTX *_mem_save_driver_name_0;
 
8706
        uint32_t _ptr_architecture;
 
8707
        TALLOC_CTX *_mem_save_architecture_0;
 
8708
        uint32_t _ptr_driver_path;
 
8709
        TALLOC_CTX *_mem_save_driver_path_0;
 
8710
        uint32_t _ptr_data_file;
 
8711
        TALLOC_CTX *_mem_save_data_file_0;
 
8712
        uint32_t _ptr_config_file;
 
8713
        TALLOC_CTX *_mem_save_config_file_0;
 
8714
        uint32_t _ptr_help_file;
 
8715
        TALLOC_CTX *_mem_save_help_file_0;
 
8716
        uint32_t _ptr_monitor_name;
 
8717
        TALLOC_CTX *_mem_save_monitor_name_0;
 
8718
        uint32_t _ptr_default_datatype;
 
8719
        TALLOC_CTX *_mem_save_default_datatype_0;
 
8720
        uint32_t _ptr_dependent_files;
 
8721
        TALLOC_CTX *_mem_save_dependent_files_0;
 
8722
        uint32_t _ptr_previous_names;
 
8723
        TALLOC_CTX *_mem_save_previous_names_0;
 
8724
        if (ndr_flags & NDR_SCALARS) {
 
8725
                NDR_CHECK(ndr_pull_align(ndr, 5));
 
8726
                NDR_CHECK(ndr_pull_spoolss_DriverOSVersion(ndr, NDR_SCALARS, &r->version));
 
8727
                NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_driver_name));
 
8728
                if (_ptr_driver_name) {
 
8729
                        NDR_PULL_ALLOC(ndr, r->driver_name);
 
8730
                } else {
 
8731
                        r->driver_name = NULL;
 
8732
                }
 
8733
                NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_architecture));
 
8734
                if (_ptr_architecture) {
 
8735
                        NDR_PULL_ALLOC(ndr, r->architecture);
 
8736
                } else {
 
8737
                        r->architecture = NULL;
 
8738
                }
 
8739
                NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_driver_path));
 
8740
                if (_ptr_driver_path) {
 
8741
                        NDR_PULL_ALLOC(ndr, r->driver_path);
 
8742
                } else {
 
8743
                        r->driver_path = NULL;
 
8744
                }
 
8745
                NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_data_file));
 
8746
                if (_ptr_data_file) {
 
8747
                        NDR_PULL_ALLOC(ndr, r->data_file);
 
8748
                } else {
 
8749
                        r->data_file = NULL;
 
8750
                }
 
8751
                NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_config_file));
 
8752
                if (_ptr_config_file) {
 
8753
                        NDR_PULL_ALLOC(ndr, r->config_file);
 
8754
                } else {
 
8755
                        r->config_file = NULL;
 
8756
                }
 
8757
                NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_help_file));
 
8758
                if (_ptr_help_file) {
 
8759
                        NDR_PULL_ALLOC(ndr, r->help_file);
 
8760
                } else {
 
8761
                        r->help_file = NULL;
 
8762
                }
 
8763
                NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_monitor_name));
 
8764
                if (_ptr_monitor_name) {
 
8765
                        NDR_PULL_ALLOC(ndr, r->monitor_name);
 
8766
                } else {
 
8767
                        r->monitor_name = NULL;
 
8768
                }
 
8769
                NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_default_datatype));
 
8770
                if (_ptr_default_datatype) {
 
8771
                        NDR_PULL_ALLOC(ndr, r->default_datatype);
 
8772
                } else {
 
8773
                        r->default_datatype = NULL;
 
8774
                }
 
8775
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->_ndr_size_dependent_files));
 
8776
                NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_dependent_files));
 
8777
                if (_ptr_dependent_files) {
 
8778
                        NDR_PULL_ALLOC(ndr, r->dependent_files);
 
8779
                } else {
 
8780
                        r->dependent_files = NULL;
 
8781
                }
 
8782
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->_ndr_size_previous_names));
 
8783
                NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_previous_names));
 
8784
                if (_ptr_previous_names) {
 
8785
                        NDR_PULL_ALLOC(ndr, r->previous_names);
 
8786
                } else {
 
8787
                        r->previous_names = NULL;
 
8788
                }
 
8789
                NDR_CHECK(ndr_pull_trailer_align(ndr, 5));
 
8790
        }
 
8791
        if (ndr_flags & NDR_BUFFERS) {
 
8792
                if (r->driver_name) {
 
8793
                        _mem_save_driver_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
8794
                        NDR_PULL_SET_MEM_CTX(ndr, r->driver_name, 0);
 
8795
                        NDR_CHECK(ndr_pull_array_size(ndr, &r->driver_name));
 
8796
                        NDR_CHECK(ndr_pull_array_length(ndr, &r->driver_name));
 
8797
                        if (ndr_get_array_length(ndr, &r->driver_name) > ndr_get_array_size(ndr, &r->driver_name)) {
 
8798
                                return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->driver_name), ndr_get_array_length(ndr, &r->driver_name));
 
8799
                        }
 
8800
                        NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->driver_name), sizeof(uint16_t)));
 
8801
                        NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->driver_name, ndr_get_array_length(ndr, &r->driver_name), sizeof(uint16_t), CH_UTF16));
 
8802
                        NDR_PULL_SET_MEM_CTX(ndr, _mem_save_driver_name_0, 0);
 
8803
                }
 
8804
                if (r->architecture) {
 
8805
                        _mem_save_architecture_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
8806
                        NDR_PULL_SET_MEM_CTX(ndr, r->architecture, 0);
 
8807
                        NDR_CHECK(ndr_pull_array_size(ndr, &r->architecture));
 
8808
                        NDR_CHECK(ndr_pull_array_length(ndr, &r->architecture));
 
8809
                        if (ndr_get_array_length(ndr, &r->architecture) > ndr_get_array_size(ndr, &r->architecture)) {
 
8810
                                return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->architecture), ndr_get_array_length(ndr, &r->architecture));
 
8811
                        }
 
8812
                        NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->architecture), sizeof(uint16_t)));
 
8813
                        NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->architecture, ndr_get_array_length(ndr, &r->architecture), sizeof(uint16_t), CH_UTF16));
 
8814
                        NDR_PULL_SET_MEM_CTX(ndr, _mem_save_architecture_0, 0);
 
8815
                }
 
8816
                if (r->driver_path) {
 
8817
                        _mem_save_driver_path_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
8818
                        NDR_PULL_SET_MEM_CTX(ndr, r->driver_path, 0);
 
8819
                        NDR_CHECK(ndr_pull_array_size(ndr, &r->driver_path));
 
8820
                        NDR_CHECK(ndr_pull_array_length(ndr, &r->driver_path));
 
8821
                        if (ndr_get_array_length(ndr, &r->driver_path) > ndr_get_array_size(ndr, &r->driver_path)) {
 
8822
                                return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->driver_path), ndr_get_array_length(ndr, &r->driver_path));
 
8823
                        }
 
8824
                        NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->driver_path), sizeof(uint16_t)));
 
8825
                        NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->driver_path, ndr_get_array_length(ndr, &r->driver_path), sizeof(uint16_t), CH_UTF16));
 
8826
                        NDR_PULL_SET_MEM_CTX(ndr, _mem_save_driver_path_0, 0);
 
8827
                }
 
8828
                if (r->data_file) {
 
8829
                        _mem_save_data_file_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
8830
                        NDR_PULL_SET_MEM_CTX(ndr, r->data_file, 0);
 
8831
                        NDR_CHECK(ndr_pull_array_size(ndr, &r->data_file));
 
8832
                        NDR_CHECK(ndr_pull_array_length(ndr, &r->data_file));
 
8833
                        if (ndr_get_array_length(ndr, &r->data_file) > ndr_get_array_size(ndr, &r->data_file)) {
 
8834
                                return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->data_file), ndr_get_array_length(ndr, &r->data_file));
 
8835
                        }
 
8836
                        NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->data_file), sizeof(uint16_t)));
 
8837
                        NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->data_file, ndr_get_array_length(ndr, &r->data_file), sizeof(uint16_t), CH_UTF16));
 
8838
                        NDR_PULL_SET_MEM_CTX(ndr, _mem_save_data_file_0, 0);
 
8839
                }
 
8840
                if (r->config_file) {
 
8841
                        _mem_save_config_file_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
8842
                        NDR_PULL_SET_MEM_CTX(ndr, r->config_file, 0);
 
8843
                        NDR_CHECK(ndr_pull_array_size(ndr, &r->config_file));
 
8844
                        NDR_CHECK(ndr_pull_array_length(ndr, &r->config_file));
 
8845
                        if (ndr_get_array_length(ndr, &r->config_file) > ndr_get_array_size(ndr, &r->config_file)) {
 
8846
                                return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->config_file), ndr_get_array_length(ndr, &r->config_file));
 
8847
                        }
 
8848
                        NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->config_file), sizeof(uint16_t)));
 
8849
                        NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->config_file, ndr_get_array_length(ndr, &r->config_file), sizeof(uint16_t), CH_UTF16));
 
8850
                        NDR_PULL_SET_MEM_CTX(ndr, _mem_save_config_file_0, 0);
 
8851
                }
 
8852
                if (r->help_file) {
 
8853
                        _mem_save_help_file_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
8854
                        NDR_PULL_SET_MEM_CTX(ndr, r->help_file, 0);
 
8855
                        NDR_CHECK(ndr_pull_array_size(ndr, &r->help_file));
 
8856
                        NDR_CHECK(ndr_pull_array_length(ndr, &r->help_file));
 
8857
                        if (ndr_get_array_length(ndr, &r->help_file) > ndr_get_array_size(ndr, &r->help_file)) {
 
8858
                                return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->help_file), ndr_get_array_length(ndr, &r->help_file));
 
8859
                        }
 
8860
                        NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->help_file), sizeof(uint16_t)));
 
8861
                        NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->help_file, ndr_get_array_length(ndr, &r->help_file), sizeof(uint16_t), CH_UTF16));
 
8862
                        NDR_PULL_SET_MEM_CTX(ndr, _mem_save_help_file_0, 0);
 
8863
                }
 
8864
                if (r->monitor_name) {
 
8865
                        _mem_save_monitor_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
8866
                        NDR_PULL_SET_MEM_CTX(ndr, r->monitor_name, 0);
 
8867
                        NDR_CHECK(ndr_pull_array_size(ndr, &r->monitor_name));
 
8868
                        NDR_CHECK(ndr_pull_array_length(ndr, &r->monitor_name));
 
8869
                        if (ndr_get_array_length(ndr, &r->monitor_name) > ndr_get_array_size(ndr, &r->monitor_name)) {
 
8870
                                return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->monitor_name), ndr_get_array_length(ndr, &r->monitor_name));
 
8871
                        }
 
8872
                        NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->monitor_name), sizeof(uint16_t)));
 
8873
                        NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->monitor_name, ndr_get_array_length(ndr, &r->monitor_name), sizeof(uint16_t), CH_UTF16));
 
8874
                        NDR_PULL_SET_MEM_CTX(ndr, _mem_save_monitor_name_0, 0);
 
8875
                }
 
8876
                if (r->default_datatype) {
 
8877
                        _mem_save_default_datatype_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
8878
                        NDR_PULL_SET_MEM_CTX(ndr, r->default_datatype, 0);
 
8879
                        NDR_CHECK(ndr_pull_array_size(ndr, &r->default_datatype));
 
8880
                        NDR_CHECK(ndr_pull_array_length(ndr, &r->default_datatype));
 
8881
                        if (ndr_get_array_length(ndr, &r->default_datatype) > ndr_get_array_size(ndr, &r->default_datatype)) {
 
8882
                                return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->default_datatype), ndr_get_array_length(ndr, &r->default_datatype));
 
8883
                        }
 
8884
                        NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->default_datatype), sizeof(uint16_t)));
 
8885
                        NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->default_datatype, ndr_get_array_length(ndr, &r->default_datatype), sizeof(uint16_t), CH_UTF16));
 
8886
                        NDR_PULL_SET_MEM_CTX(ndr, _mem_save_default_datatype_0, 0);
 
8887
                }
 
8888
                if (r->dependent_files) {
 
8889
                        _mem_save_dependent_files_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
8890
                        NDR_PULL_SET_MEM_CTX(ndr, r->dependent_files, 0);
 
8891
                        NDR_CHECK(ndr_pull_spoolss_StringArray(ndr, NDR_SCALARS, r->dependent_files));
 
8892
                        NDR_PULL_SET_MEM_CTX(ndr, _mem_save_dependent_files_0, 0);
 
8893
                }
 
8894
                if (r->previous_names) {
 
8895
                        _mem_save_previous_names_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
8896
                        NDR_PULL_SET_MEM_CTX(ndr, r->previous_names, 0);
 
8897
                        NDR_CHECK(ndr_pull_spoolss_StringArray(ndr, NDR_SCALARS, r->previous_names));
 
8898
                        NDR_PULL_SET_MEM_CTX(ndr, _mem_save_previous_names_0, 0);
 
8899
                }
 
8900
        }
 
8901
        return NDR_ERR_SUCCESS;
 
8902
}
 
8903
 
 
8904
_PUBLIC_ void ndr_print_spoolss_AddDriverInfo4(struct ndr_print *ndr, const char *name, const struct spoolss_AddDriverInfo4 *r)
 
8905
{
 
8906
        ndr_print_struct(ndr, name, "spoolss_AddDriverInfo4");
 
8907
        ndr->depth++;
 
8908
        ndr_print_spoolss_DriverOSVersion(ndr, "version", r->version);
 
8909
        ndr_print_ptr(ndr, "driver_name", r->driver_name);
 
8910
        ndr->depth++;
 
8911
        if (r->driver_name) {
 
8912
                ndr_print_string(ndr, "driver_name", r->driver_name);
 
8913
        }
 
8914
        ndr->depth--;
 
8915
        ndr_print_ptr(ndr, "architecture", r->architecture);
 
8916
        ndr->depth++;
 
8917
        if (r->architecture) {
 
8918
                ndr_print_string(ndr, "architecture", r->architecture);
 
8919
        }
 
8920
        ndr->depth--;
 
8921
        ndr_print_ptr(ndr, "driver_path", r->driver_path);
 
8922
        ndr->depth++;
 
8923
        if (r->driver_path) {
 
8924
                ndr_print_string(ndr, "driver_path", r->driver_path);
 
8925
        }
 
8926
        ndr->depth--;
 
8927
        ndr_print_ptr(ndr, "data_file", r->data_file);
 
8928
        ndr->depth++;
 
8929
        if (r->data_file) {
 
8930
                ndr_print_string(ndr, "data_file", r->data_file);
 
8931
        }
 
8932
        ndr->depth--;
 
8933
        ndr_print_ptr(ndr, "config_file", r->config_file);
 
8934
        ndr->depth++;
 
8935
        if (r->config_file) {
 
8936
                ndr_print_string(ndr, "config_file", r->config_file);
 
8937
        }
 
8938
        ndr->depth--;
 
8939
        ndr_print_ptr(ndr, "help_file", r->help_file);
 
8940
        ndr->depth++;
 
8941
        if (r->help_file) {
 
8942
                ndr_print_string(ndr, "help_file", r->help_file);
 
8943
        }
 
8944
        ndr->depth--;
 
8945
        ndr_print_ptr(ndr, "monitor_name", r->monitor_name);
 
8946
        ndr->depth++;
 
8947
        if (r->monitor_name) {
 
8948
                ndr_print_string(ndr, "monitor_name", r->monitor_name);
 
8949
        }
 
8950
        ndr->depth--;
 
8951
        ndr_print_ptr(ndr, "default_datatype", r->default_datatype);
 
8952
        ndr->depth++;
 
8953
        if (r->default_datatype) {
 
8954
                ndr_print_string(ndr, "default_datatype", r->default_datatype);
 
8955
        }
 
8956
        ndr->depth--;
 
8957
        ndr_print_uint32(ndr, "_ndr_size_dependent_files", (ndr->flags & LIBNDR_PRINT_SET_VALUES)?((ndr_size_spoolss_StringArray(r->dependent_files, ndr->iconv_convenience, ndr->flags) - 4) / 2):r->_ndr_size_dependent_files);
 
8958
        ndr_print_ptr(ndr, "dependent_files", r->dependent_files);
 
8959
        ndr->depth++;
 
8960
        if (r->dependent_files) {
 
8961
                ndr_print_spoolss_StringArray(ndr, "dependent_files", r->dependent_files);
 
8962
        }
 
8963
        ndr->depth--;
 
8964
        ndr_print_uint32(ndr, "_ndr_size_previous_names", (ndr->flags & LIBNDR_PRINT_SET_VALUES)?((ndr_size_spoolss_StringArray(r->previous_names, ndr->iconv_convenience, ndr->flags) - 4) / 2):r->_ndr_size_previous_names);
 
8965
        ndr_print_ptr(ndr, "previous_names", r->previous_names);
 
8966
        ndr->depth++;
 
8967
        if (r->previous_names) {
 
8968
                ndr_print_spoolss_StringArray(ndr, "previous_names", r->previous_names);
 
8969
        }
 
8970
        ndr->depth--;
 
8971
        ndr->depth--;
 
8972
}
 
8973
 
 
8974
static enum ndr_err_code ndr_push_spoolss_DriverAttributes(struct ndr_push *ndr, int ndr_flags, uint32_t r)
 
8975
{
 
8976
        NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r));
 
8977
        return NDR_ERR_SUCCESS;
 
8978
}
 
8979
 
 
8980
static enum ndr_err_code ndr_pull_spoolss_DriverAttributes(struct ndr_pull *ndr, int ndr_flags, uint32_t *r)
 
8981
{
 
8982
        uint32_t v;
 
8983
        NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &v));
 
8984
        *r = v;
 
8985
        return NDR_ERR_SUCCESS;
 
8986
}
 
8987
 
 
8988
_PUBLIC_ void ndr_print_spoolss_DriverAttributes(struct ndr_print *ndr, const char *name, uint32_t r)
 
8989
{
 
8990
        ndr_print_uint32(ndr, name, r);
 
8991
        ndr->depth++;
 
8992
        ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "PRINTER_DRIVER_PACKAGE_AWARE", PRINTER_DRIVER_PACKAGE_AWARE, r);
 
8993
        ndr->depth--;
 
8994
}
 
8995
 
 
8996
static enum ndr_err_code ndr_push_spoolss_AddDriverInfo6(struct ndr_push *ndr, int ndr_flags, const struct spoolss_AddDriverInfo6 *r)
 
8997
{
 
8998
        if (ndr_flags & NDR_SCALARS) {
 
8999
                NDR_CHECK(ndr_push_align(ndr, 8));
 
9000
                NDR_CHECK(ndr_push_spoolss_DriverOSVersion(ndr, NDR_SCALARS, r->version));
 
9001
                NDR_CHECK(ndr_push_unique_ptr(ndr, r->driver_name));
 
9002
                NDR_CHECK(ndr_push_unique_ptr(ndr, r->architecture));
 
9003
                NDR_CHECK(ndr_push_unique_ptr(ndr, r->driver_path));
 
9004
                NDR_CHECK(ndr_push_unique_ptr(ndr, r->data_file));
 
9005
                NDR_CHECK(ndr_push_unique_ptr(ndr, r->config_file));
 
9006
                NDR_CHECK(ndr_push_unique_ptr(ndr, r->help_file));
 
9007
                NDR_CHECK(ndr_push_unique_ptr(ndr, r->monitor_name));
 
9008
                NDR_CHECK(ndr_push_unique_ptr(ndr, r->default_datatype));
 
9009
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ((ndr_size_spoolss_StringArray(r->dependent_files, ndr->iconv_convenience, ndr->flags) - 4) / 2)));
 
9010
                NDR_CHECK(ndr_push_unique_ptr(ndr, r->dependent_files));
 
9011
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ((ndr_size_spoolss_StringArray(r->previous_names, ndr->iconv_convenience, ndr->flags) - 4) / 2)));
 
9012
                NDR_CHECK(ndr_push_unique_ptr(ndr, r->previous_names));
 
9013
                NDR_CHECK(ndr_push_NTTIME(ndr, NDR_SCALARS, r->driver_date));
 
9014
                NDR_CHECK(ndr_push_hyper(ndr, NDR_SCALARS, r->driver_version));
 
9015
                NDR_CHECK(ndr_push_unique_ptr(ndr, r->manufacturer_name));
 
9016
                NDR_CHECK(ndr_push_unique_ptr(ndr, r->manufacturer_url));
 
9017
                NDR_CHECK(ndr_push_unique_ptr(ndr, r->hardware_id));
 
9018
                NDR_CHECK(ndr_push_unique_ptr(ndr, r->provider));
 
9019
                NDR_CHECK(ndr_push_trailer_align(ndr, 8));
 
9020
        }
 
9021
        if (ndr_flags & NDR_BUFFERS) {
 
9022
                if (r->driver_name) {
 
9023
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->driver_name, CH_UTF16)));
 
9024
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0));
 
9025
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->driver_name, CH_UTF16)));
 
9026
                        NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->driver_name, ndr_charset_length(r->driver_name, CH_UTF16), sizeof(uint16_t), CH_UTF16));
 
9027
                }
 
9028
                if (r->architecture) {
 
9029
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->architecture, CH_UTF16)));
 
9030
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0));
 
9031
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->architecture, CH_UTF16)));
 
9032
                        NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->architecture, ndr_charset_length(r->architecture, CH_UTF16), sizeof(uint16_t), CH_UTF16));
 
9033
                }
 
9034
                if (r->driver_path) {
 
9035
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->driver_path, CH_UTF16)));
 
9036
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0));
 
9037
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->driver_path, CH_UTF16)));
 
9038
                        NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->driver_path, ndr_charset_length(r->driver_path, CH_UTF16), sizeof(uint16_t), CH_UTF16));
 
9039
                }
 
9040
                if (r->data_file) {
 
9041
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->data_file, CH_UTF16)));
 
9042
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0));
 
9043
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->data_file, CH_UTF16)));
 
9044
                        NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->data_file, ndr_charset_length(r->data_file, CH_UTF16), sizeof(uint16_t), CH_UTF16));
 
9045
                }
 
9046
                if (r->config_file) {
 
9047
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->config_file, CH_UTF16)));
 
9048
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0));
 
9049
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->config_file, CH_UTF16)));
 
9050
                        NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->config_file, ndr_charset_length(r->config_file, CH_UTF16), sizeof(uint16_t), CH_UTF16));
 
9051
                }
 
9052
                if (r->help_file) {
 
9053
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->help_file, CH_UTF16)));
 
9054
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0));
 
9055
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->help_file, CH_UTF16)));
 
9056
                        NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->help_file, ndr_charset_length(r->help_file, CH_UTF16), sizeof(uint16_t), CH_UTF16));
 
9057
                }
 
9058
                if (r->monitor_name) {
 
9059
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->monitor_name, CH_UTF16)));
 
9060
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0));
 
9061
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->monitor_name, CH_UTF16)));
 
9062
                        NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->monitor_name, ndr_charset_length(r->monitor_name, CH_UTF16), sizeof(uint16_t), CH_UTF16));
 
9063
                }
 
9064
                if (r->default_datatype) {
 
9065
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->default_datatype, CH_UTF16)));
 
9066
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0));
 
9067
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->default_datatype, CH_UTF16)));
 
9068
                        NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->default_datatype, ndr_charset_length(r->default_datatype, CH_UTF16), sizeof(uint16_t), CH_UTF16));
 
9069
                }
 
9070
                if (r->dependent_files) {
 
9071
                        NDR_CHECK(ndr_push_spoolss_StringArray(ndr, NDR_SCALARS, r->dependent_files));
 
9072
                }
 
9073
                if (r->previous_names) {
 
9074
                        NDR_CHECK(ndr_push_spoolss_StringArray(ndr, NDR_SCALARS, r->previous_names));
 
9075
                }
 
9076
                if (r->manufacturer_name) {
 
9077
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->manufacturer_name, CH_UTF16)));
 
9078
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0));
 
9079
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->manufacturer_name, CH_UTF16)));
 
9080
                        NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->manufacturer_name, ndr_charset_length(r->manufacturer_name, CH_UTF16), sizeof(uint16_t), CH_UTF16));
 
9081
                }
 
9082
                if (r->manufacturer_url) {
 
9083
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->manufacturer_url, CH_UTF16)));
 
9084
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0));
 
9085
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->manufacturer_url, CH_UTF16)));
 
9086
                        NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->manufacturer_url, ndr_charset_length(r->manufacturer_url, CH_UTF16), sizeof(uint16_t), CH_UTF16));
 
9087
                }
 
9088
                if (r->hardware_id) {
 
9089
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->hardware_id, CH_UTF16)));
 
9090
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0));
 
9091
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->hardware_id, CH_UTF16)));
 
9092
                        NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->hardware_id, ndr_charset_length(r->hardware_id, CH_UTF16), sizeof(uint16_t), CH_UTF16));
 
9093
                }
 
9094
                if (r->provider) {
 
9095
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->provider, CH_UTF16)));
 
9096
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0));
 
9097
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->provider, CH_UTF16)));
 
9098
                        NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->provider, ndr_charset_length(r->provider, CH_UTF16), sizeof(uint16_t), CH_UTF16));
 
9099
                }
 
9100
        }
 
9101
        return NDR_ERR_SUCCESS;
 
9102
}
 
9103
 
 
9104
static enum ndr_err_code ndr_pull_spoolss_AddDriverInfo6(struct ndr_pull *ndr, int ndr_flags, struct spoolss_AddDriverInfo6 *r)
 
9105
{
 
9106
        uint32_t _ptr_driver_name;
 
9107
        TALLOC_CTX *_mem_save_driver_name_0;
 
9108
        uint32_t _ptr_architecture;
 
9109
        TALLOC_CTX *_mem_save_architecture_0;
 
9110
        uint32_t _ptr_driver_path;
 
9111
        TALLOC_CTX *_mem_save_driver_path_0;
 
9112
        uint32_t _ptr_data_file;
 
9113
        TALLOC_CTX *_mem_save_data_file_0;
 
9114
        uint32_t _ptr_config_file;
 
9115
        TALLOC_CTX *_mem_save_config_file_0;
 
9116
        uint32_t _ptr_help_file;
 
9117
        TALLOC_CTX *_mem_save_help_file_0;
 
9118
        uint32_t _ptr_monitor_name;
 
9119
        TALLOC_CTX *_mem_save_monitor_name_0;
 
9120
        uint32_t _ptr_default_datatype;
 
9121
        TALLOC_CTX *_mem_save_default_datatype_0;
 
9122
        uint32_t _ptr_dependent_files;
 
9123
        TALLOC_CTX *_mem_save_dependent_files_0;
 
9124
        uint32_t _ptr_previous_names;
 
9125
        TALLOC_CTX *_mem_save_previous_names_0;
 
9126
        uint32_t _ptr_manufacturer_name;
 
9127
        TALLOC_CTX *_mem_save_manufacturer_name_0;
 
9128
        uint32_t _ptr_manufacturer_url;
 
9129
        TALLOC_CTX *_mem_save_manufacturer_url_0;
 
9130
        uint32_t _ptr_hardware_id;
 
9131
        TALLOC_CTX *_mem_save_hardware_id_0;
 
9132
        uint32_t _ptr_provider;
 
9133
        TALLOC_CTX *_mem_save_provider_0;
 
9134
        if (ndr_flags & NDR_SCALARS) {
 
9135
                NDR_CHECK(ndr_pull_align(ndr, 8));
 
9136
                NDR_CHECK(ndr_pull_spoolss_DriverOSVersion(ndr, NDR_SCALARS, &r->version));
 
9137
                NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_driver_name));
 
9138
                if (_ptr_driver_name) {
 
9139
                        NDR_PULL_ALLOC(ndr, r->driver_name);
 
9140
                } else {
 
9141
                        r->driver_name = NULL;
 
9142
                }
 
9143
                NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_architecture));
 
9144
                if (_ptr_architecture) {
 
9145
                        NDR_PULL_ALLOC(ndr, r->architecture);
 
9146
                } else {
 
9147
                        r->architecture = NULL;
 
9148
                }
 
9149
                NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_driver_path));
 
9150
                if (_ptr_driver_path) {
 
9151
                        NDR_PULL_ALLOC(ndr, r->driver_path);
 
9152
                } else {
 
9153
                        r->driver_path = NULL;
 
9154
                }
 
9155
                NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_data_file));
 
9156
                if (_ptr_data_file) {
 
9157
                        NDR_PULL_ALLOC(ndr, r->data_file);
 
9158
                } else {
 
9159
                        r->data_file = NULL;
 
9160
                }
 
9161
                NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_config_file));
 
9162
                if (_ptr_config_file) {
 
9163
                        NDR_PULL_ALLOC(ndr, r->config_file);
 
9164
                } else {
 
9165
                        r->config_file = NULL;
 
9166
                }
 
9167
                NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_help_file));
 
9168
                if (_ptr_help_file) {
 
9169
                        NDR_PULL_ALLOC(ndr, r->help_file);
 
9170
                } else {
 
9171
                        r->help_file = NULL;
 
9172
                }
 
9173
                NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_monitor_name));
 
9174
                if (_ptr_monitor_name) {
 
9175
                        NDR_PULL_ALLOC(ndr, r->monitor_name);
 
9176
                } else {
 
9177
                        r->monitor_name = NULL;
 
9178
                }
 
9179
                NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_default_datatype));
 
9180
                if (_ptr_default_datatype) {
 
9181
                        NDR_PULL_ALLOC(ndr, r->default_datatype);
 
9182
                } else {
 
9183
                        r->default_datatype = NULL;
 
9184
                }
 
9185
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->_ndr_size_dependent_files));
 
9186
                NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_dependent_files));
 
9187
                if (_ptr_dependent_files) {
 
9188
                        NDR_PULL_ALLOC(ndr, r->dependent_files);
 
9189
                } else {
 
9190
                        r->dependent_files = NULL;
 
9191
                }
 
9192
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->_ndr_size_previous_names));
 
9193
                NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_previous_names));
 
9194
                if (_ptr_previous_names) {
 
9195
                        NDR_PULL_ALLOC(ndr, r->previous_names);
 
9196
                } else {
 
9197
                        r->previous_names = NULL;
 
9198
                }
 
9199
                NDR_CHECK(ndr_pull_NTTIME(ndr, NDR_SCALARS, &r->driver_date));
 
9200
                NDR_CHECK(ndr_pull_hyper(ndr, NDR_SCALARS, &r->driver_version));
 
9201
                NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_manufacturer_name));
 
9202
                if (_ptr_manufacturer_name) {
 
9203
                        NDR_PULL_ALLOC(ndr, r->manufacturer_name);
 
9204
                } else {
 
9205
                        r->manufacturer_name = NULL;
 
9206
                }
 
9207
                NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_manufacturer_url));
 
9208
                if (_ptr_manufacturer_url) {
 
9209
                        NDR_PULL_ALLOC(ndr, r->manufacturer_url);
 
9210
                } else {
 
9211
                        r->manufacturer_url = NULL;
 
9212
                }
 
9213
                NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_hardware_id));
 
9214
                if (_ptr_hardware_id) {
 
9215
                        NDR_PULL_ALLOC(ndr, r->hardware_id);
 
9216
                } else {
 
9217
                        r->hardware_id = NULL;
 
9218
                }
 
9219
                NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_provider));
 
9220
                if (_ptr_provider) {
 
9221
                        NDR_PULL_ALLOC(ndr, r->provider);
 
9222
                } else {
 
9223
                        r->provider = NULL;
 
9224
                }
 
9225
                NDR_CHECK(ndr_pull_trailer_align(ndr, 8));
 
9226
        }
 
9227
        if (ndr_flags & NDR_BUFFERS) {
 
9228
                if (r->driver_name) {
 
9229
                        _mem_save_driver_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
9230
                        NDR_PULL_SET_MEM_CTX(ndr, r->driver_name, 0);
 
9231
                        NDR_CHECK(ndr_pull_array_size(ndr, &r->driver_name));
 
9232
                        NDR_CHECK(ndr_pull_array_length(ndr, &r->driver_name));
 
9233
                        if (ndr_get_array_length(ndr, &r->driver_name) > ndr_get_array_size(ndr, &r->driver_name)) {
 
9234
                                return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->driver_name), ndr_get_array_length(ndr, &r->driver_name));
 
9235
                        }
 
9236
                        NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->driver_name), sizeof(uint16_t)));
 
9237
                        NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->driver_name, ndr_get_array_length(ndr, &r->driver_name), sizeof(uint16_t), CH_UTF16));
 
9238
                        NDR_PULL_SET_MEM_CTX(ndr, _mem_save_driver_name_0, 0);
 
9239
                }
 
9240
                if (r->architecture) {
 
9241
                        _mem_save_architecture_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
9242
                        NDR_PULL_SET_MEM_CTX(ndr, r->architecture, 0);
 
9243
                        NDR_CHECK(ndr_pull_array_size(ndr, &r->architecture));
 
9244
                        NDR_CHECK(ndr_pull_array_length(ndr, &r->architecture));
 
9245
                        if (ndr_get_array_length(ndr, &r->architecture) > ndr_get_array_size(ndr, &r->architecture)) {
 
9246
                                return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->architecture), ndr_get_array_length(ndr, &r->architecture));
 
9247
                        }
 
9248
                        NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->architecture), sizeof(uint16_t)));
 
9249
                        NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->architecture, ndr_get_array_length(ndr, &r->architecture), sizeof(uint16_t), CH_UTF16));
 
9250
                        NDR_PULL_SET_MEM_CTX(ndr, _mem_save_architecture_0, 0);
 
9251
                }
 
9252
                if (r->driver_path) {
 
9253
                        _mem_save_driver_path_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
9254
                        NDR_PULL_SET_MEM_CTX(ndr, r->driver_path, 0);
 
9255
                        NDR_CHECK(ndr_pull_array_size(ndr, &r->driver_path));
 
9256
                        NDR_CHECK(ndr_pull_array_length(ndr, &r->driver_path));
 
9257
                        if (ndr_get_array_length(ndr, &r->driver_path) > ndr_get_array_size(ndr, &r->driver_path)) {
 
9258
                                return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->driver_path), ndr_get_array_length(ndr, &r->driver_path));
 
9259
                        }
 
9260
                        NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->driver_path), sizeof(uint16_t)));
 
9261
                        NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->driver_path, ndr_get_array_length(ndr, &r->driver_path), sizeof(uint16_t), CH_UTF16));
 
9262
                        NDR_PULL_SET_MEM_CTX(ndr, _mem_save_driver_path_0, 0);
 
9263
                }
 
9264
                if (r->data_file) {
 
9265
                        _mem_save_data_file_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
9266
                        NDR_PULL_SET_MEM_CTX(ndr, r->data_file, 0);
 
9267
                        NDR_CHECK(ndr_pull_array_size(ndr, &r->data_file));
 
9268
                        NDR_CHECK(ndr_pull_array_length(ndr, &r->data_file));
 
9269
                        if (ndr_get_array_length(ndr, &r->data_file) > ndr_get_array_size(ndr, &r->data_file)) {
 
9270
                                return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->data_file), ndr_get_array_length(ndr, &r->data_file));
 
9271
                        }
 
9272
                        NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->data_file), sizeof(uint16_t)));
 
9273
                        NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->data_file, ndr_get_array_length(ndr, &r->data_file), sizeof(uint16_t), CH_UTF16));
 
9274
                        NDR_PULL_SET_MEM_CTX(ndr, _mem_save_data_file_0, 0);
 
9275
                }
 
9276
                if (r->config_file) {
 
9277
                        _mem_save_config_file_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
9278
                        NDR_PULL_SET_MEM_CTX(ndr, r->config_file, 0);
 
9279
                        NDR_CHECK(ndr_pull_array_size(ndr, &r->config_file));
 
9280
                        NDR_CHECK(ndr_pull_array_length(ndr, &r->config_file));
 
9281
                        if (ndr_get_array_length(ndr, &r->config_file) > ndr_get_array_size(ndr, &r->config_file)) {
 
9282
                                return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->config_file), ndr_get_array_length(ndr, &r->config_file));
 
9283
                        }
 
9284
                        NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->config_file), sizeof(uint16_t)));
 
9285
                        NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->config_file, ndr_get_array_length(ndr, &r->config_file), sizeof(uint16_t), CH_UTF16));
 
9286
                        NDR_PULL_SET_MEM_CTX(ndr, _mem_save_config_file_0, 0);
 
9287
                }
 
9288
                if (r->help_file) {
 
9289
                        _mem_save_help_file_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
9290
                        NDR_PULL_SET_MEM_CTX(ndr, r->help_file, 0);
 
9291
                        NDR_CHECK(ndr_pull_array_size(ndr, &r->help_file));
 
9292
                        NDR_CHECK(ndr_pull_array_length(ndr, &r->help_file));
 
9293
                        if (ndr_get_array_length(ndr, &r->help_file) > ndr_get_array_size(ndr, &r->help_file)) {
 
9294
                                return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->help_file), ndr_get_array_length(ndr, &r->help_file));
 
9295
                        }
 
9296
                        NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->help_file), sizeof(uint16_t)));
 
9297
                        NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->help_file, ndr_get_array_length(ndr, &r->help_file), sizeof(uint16_t), CH_UTF16));
 
9298
                        NDR_PULL_SET_MEM_CTX(ndr, _mem_save_help_file_0, 0);
 
9299
                }
 
9300
                if (r->monitor_name) {
 
9301
                        _mem_save_monitor_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
9302
                        NDR_PULL_SET_MEM_CTX(ndr, r->monitor_name, 0);
 
9303
                        NDR_CHECK(ndr_pull_array_size(ndr, &r->monitor_name));
 
9304
                        NDR_CHECK(ndr_pull_array_length(ndr, &r->monitor_name));
 
9305
                        if (ndr_get_array_length(ndr, &r->monitor_name) > ndr_get_array_size(ndr, &r->monitor_name)) {
 
9306
                                return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->monitor_name), ndr_get_array_length(ndr, &r->monitor_name));
 
9307
                        }
 
9308
                        NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->monitor_name), sizeof(uint16_t)));
 
9309
                        NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->monitor_name, ndr_get_array_length(ndr, &r->monitor_name), sizeof(uint16_t), CH_UTF16));
 
9310
                        NDR_PULL_SET_MEM_CTX(ndr, _mem_save_monitor_name_0, 0);
 
9311
                }
 
9312
                if (r->default_datatype) {
 
9313
                        _mem_save_default_datatype_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
9314
                        NDR_PULL_SET_MEM_CTX(ndr, r->default_datatype, 0);
 
9315
                        NDR_CHECK(ndr_pull_array_size(ndr, &r->default_datatype));
 
9316
                        NDR_CHECK(ndr_pull_array_length(ndr, &r->default_datatype));
 
9317
                        if (ndr_get_array_length(ndr, &r->default_datatype) > ndr_get_array_size(ndr, &r->default_datatype)) {
 
9318
                                return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->default_datatype), ndr_get_array_length(ndr, &r->default_datatype));
 
9319
                        }
 
9320
                        NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->default_datatype), sizeof(uint16_t)));
 
9321
                        NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->default_datatype, ndr_get_array_length(ndr, &r->default_datatype), sizeof(uint16_t), CH_UTF16));
 
9322
                        NDR_PULL_SET_MEM_CTX(ndr, _mem_save_default_datatype_0, 0);
 
9323
                }
 
9324
                if (r->dependent_files) {
 
9325
                        _mem_save_dependent_files_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
9326
                        NDR_PULL_SET_MEM_CTX(ndr, r->dependent_files, 0);
 
9327
                        NDR_CHECK(ndr_pull_spoolss_StringArray(ndr, NDR_SCALARS, r->dependent_files));
 
9328
                        NDR_PULL_SET_MEM_CTX(ndr, _mem_save_dependent_files_0, 0);
 
9329
                }
 
9330
                if (r->previous_names) {
 
9331
                        _mem_save_previous_names_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
9332
                        NDR_PULL_SET_MEM_CTX(ndr, r->previous_names, 0);
 
9333
                        NDR_CHECK(ndr_pull_spoolss_StringArray(ndr, NDR_SCALARS, r->previous_names));
 
9334
                        NDR_PULL_SET_MEM_CTX(ndr, _mem_save_previous_names_0, 0);
 
9335
                }
 
9336
                if (r->manufacturer_name) {
 
9337
                        _mem_save_manufacturer_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
9338
                        NDR_PULL_SET_MEM_CTX(ndr, r->manufacturer_name, 0);
 
9339
                        NDR_CHECK(ndr_pull_array_size(ndr, &r->manufacturer_name));
 
9340
                        NDR_CHECK(ndr_pull_array_length(ndr, &r->manufacturer_name));
 
9341
                        if (ndr_get_array_length(ndr, &r->manufacturer_name) > ndr_get_array_size(ndr, &r->manufacturer_name)) {
 
9342
                                return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->manufacturer_name), ndr_get_array_length(ndr, &r->manufacturer_name));
 
9343
                        }
 
9344
                        NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->manufacturer_name), sizeof(uint16_t)));
 
9345
                        NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->manufacturer_name, ndr_get_array_length(ndr, &r->manufacturer_name), sizeof(uint16_t), CH_UTF16));
 
9346
                        NDR_PULL_SET_MEM_CTX(ndr, _mem_save_manufacturer_name_0, 0);
 
9347
                }
 
9348
                if (r->manufacturer_url) {
 
9349
                        _mem_save_manufacturer_url_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
9350
                        NDR_PULL_SET_MEM_CTX(ndr, r->manufacturer_url, 0);
 
9351
                        NDR_CHECK(ndr_pull_array_size(ndr, &r->manufacturer_url));
 
9352
                        NDR_CHECK(ndr_pull_array_length(ndr, &r->manufacturer_url));
 
9353
                        if (ndr_get_array_length(ndr, &r->manufacturer_url) > ndr_get_array_size(ndr, &r->manufacturer_url)) {
 
9354
                                return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->manufacturer_url), ndr_get_array_length(ndr, &r->manufacturer_url));
 
9355
                        }
 
9356
                        NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->manufacturer_url), sizeof(uint16_t)));
 
9357
                        NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->manufacturer_url, ndr_get_array_length(ndr, &r->manufacturer_url), sizeof(uint16_t), CH_UTF16));
 
9358
                        NDR_PULL_SET_MEM_CTX(ndr, _mem_save_manufacturer_url_0, 0);
 
9359
                }
 
9360
                if (r->hardware_id) {
 
9361
                        _mem_save_hardware_id_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
9362
                        NDR_PULL_SET_MEM_CTX(ndr, r->hardware_id, 0);
 
9363
                        NDR_CHECK(ndr_pull_array_size(ndr, &r->hardware_id));
 
9364
                        NDR_CHECK(ndr_pull_array_length(ndr, &r->hardware_id));
 
9365
                        if (ndr_get_array_length(ndr, &r->hardware_id) > ndr_get_array_size(ndr, &r->hardware_id)) {
 
9366
                                return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->hardware_id), ndr_get_array_length(ndr, &r->hardware_id));
 
9367
                        }
 
9368
                        NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->hardware_id), sizeof(uint16_t)));
 
9369
                        NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->hardware_id, ndr_get_array_length(ndr, &r->hardware_id), sizeof(uint16_t), CH_UTF16));
 
9370
                        NDR_PULL_SET_MEM_CTX(ndr, _mem_save_hardware_id_0, 0);
 
9371
                }
 
9372
                if (r->provider) {
 
9373
                        _mem_save_provider_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
9374
                        NDR_PULL_SET_MEM_CTX(ndr, r->provider, 0);
 
9375
                        NDR_CHECK(ndr_pull_array_size(ndr, &r->provider));
 
9376
                        NDR_CHECK(ndr_pull_array_length(ndr, &r->provider));
 
9377
                        if (ndr_get_array_length(ndr, &r->provider) > ndr_get_array_size(ndr, &r->provider)) {
 
9378
                                return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->provider), ndr_get_array_length(ndr, &r->provider));
 
9379
                        }
 
9380
                        NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->provider), sizeof(uint16_t)));
 
9381
                        NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->provider, ndr_get_array_length(ndr, &r->provider), sizeof(uint16_t), CH_UTF16));
 
9382
                        NDR_PULL_SET_MEM_CTX(ndr, _mem_save_provider_0, 0);
 
9383
                }
 
9384
        }
 
9385
        return NDR_ERR_SUCCESS;
 
9386
}
 
9387
 
 
9388
_PUBLIC_ void ndr_print_spoolss_AddDriverInfo6(struct ndr_print *ndr, const char *name, const struct spoolss_AddDriverInfo6 *r)
 
9389
{
 
9390
        ndr_print_struct(ndr, name, "spoolss_AddDriverInfo6");
 
9391
        ndr->depth++;
 
9392
        ndr_print_spoolss_DriverOSVersion(ndr, "version", r->version);
 
9393
        ndr_print_ptr(ndr, "driver_name", r->driver_name);
 
9394
        ndr->depth++;
 
9395
        if (r->driver_name) {
 
9396
                ndr_print_string(ndr, "driver_name", r->driver_name);
 
9397
        }
 
9398
        ndr->depth--;
 
9399
        ndr_print_ptr(ndr, "architecture", r->architecture);
 
9400
        ndr->depth++;
 
9401
        if (r->architecture) {
 
9402
                ndr_print_string(ndr, "architecture", r->architecture);
 
9403
        }
 
9404
        ndr->depth--;
 
9405
        ndr_print_ptr(ndr, "driver_path", r->driver_path);
 
9406
        ndr->depth++;
 
9407
        if (r->driver_path) {
 
9408
                ndr_print_string(ndr, "driver_path", r->driver_path);
 
9409
        }
 
9410
        ndr->depth--;
 
9411
        ndr_print_ptr(ndr, "data_file", r->data_file);
 
9412
        ndr->depth++;
 
9413
        if (r->data_file) {
 
9414
                ndr_print_string(ndr, "data_file", r->data_file);
 
9415
        }
 
9416
        ndr->depth--;
 
9417
        ndr_print_ptr(ndr, "config_file", r->config_file);
 
9418
        ndr->depth++;
 
9419
        if (r->config_file) {
 
9420
                ndr_print_string(ndr, "config_file", r->config_file);
 
9421
        }
 
9422
        ndr->depth--;
 
9423
        ndr_print_ptr(ndr, "help_file", r->help_file);
 
9424
        ndr->depth++;
 
9425
        if (r->help_file) {
 
9426
                ndr_print_string(ndr, "help_file", r->help_file);
 
9427
        }
 
9428
        ndr->depth--;
 
9429
        ndr_print_ptr(ndr, "monitor_name", r->monitor_name);
 
9430
        ndr->depth++;
 
9431
        if (r->monitor_name) {
 
9432
                ndr_print_string(ndr, "monitor_name", r->monitor_name);
 
9433
        }
 
9434
        ndr->depth--;
 
9435
        ndr_print_ptr(ndr, "default_datatype", r->default_datatype);
 
9436
        ndr->depth++;
 
9437
        if (r->default_datatype) {
 
9438
                ndr_print_string(ndr, "default_datatype", r->default_datatype);
 
9439
        }
 
9440
        ndr->depth--;
 
9441
        ndr_print_uint32(ndr, "_ndr_size_dependent_files", (ndr->flags & LIBNDR_PRINT_SET_VALUES)?((ndr_size_spoolss_StringArray(r->dependent_files, ndr->iconv_convenience, ndr->flags) - 4) / 2):r->_ndr_size_dependent_files);
 
9442
        ndr_print_ptr(ndr, "dependent_files", r->dependent_files);
 
9443
        ndr->depth++;
 
9444
        if (r->dependent_files) {
 
9445
                ndr_print_spoolss_StringArray(ndr, "dependent_files", r->dependent_files);
 
9446
        }
 
9447
        ndr->depth--;
 
9448
        ndr_print_uint32(ndr, "_ndr_size_previous_names", (ndr->flags & LIBNDR_PRINT_SET_VALUES)?((ndr_size_spoolss_StringArray(r->previous_names, ndr->iconv_convenience, ndr->flags) - 4) / 2):r->_ndr_size_previous_names);
 
9449
        ndr_print_ptr(ndr, "previous_names", r->previous_names);
 
9450
        ndr->depth++;
 
9451
        if (r->previous_names) {
 
9452
                ndr_print_spoolss_StringArray(ndr, "previous_names", r->previous_names);
 
9453
        }
 
9454
        ndr->depth--;
 
9455
        ndr_print_NTTIME(ndr, "driver_date", r->driver_date);
 
9456
        ndr_print_hyper(ndr, "driver_version", r->driver_version);
 
9457
        ndr_print_ptr(ndr, "manufacturer_name", r->manufacturer_name);
 
9458
        ndr->depth++;
 
9459
        if (r->manufacturer_name) {
 
9460
                ndr_print_string(ndr, "manufacturer_name", r->manufacturer_name);
 
9461
        }
 
9462
        ndr->depth--;
 
9463
        ndr_print_ptr(ndr, "manufacturer_url", r->manufacturer_url);
 
9464
        ndr->depth++;
 
9465
        if (r->manufacturer_url) {
 
9466
                ndr_print_string(ndr, "manufacturer_url", r->manufacturer_url);
 
9467
        }
 
9468
        ndr->depth--;
 
9469
        ndr_print_ptr(ndr, "hardware_id", r->hardware_id);
 
9470
        ndr->depth++;
 
9471
        if (r->hardware_id) {
 
9472
                ndr_print_string(ndr, "hardware_id", r->hardware_id);
 
9473
        }
 
9474
        ndr->depth--;
 
9475
        ndr_print_ptr(ndr, "provider", r->provider);
 
9476
        ndr->depth++;
 
9477
        if (r->provider) {
 
9478
                ndr_print_string(ndr, "provider", r->provider);
 
9479
        }
 
9480
        ndr->depth--;
 
9481
        ndr->depth--;
 
9482
}
 
9483
 
 
9484
static enum ndr_err_code ndr_push_spoolss_AddDriverInfo8(struct ndr_push *ndr, int ndr_flags, const struct spoolss_AddDriverInfo8 *r)
 
9485
{
 
9486
        if (ndr_flags & NDR_SCALARS) {
 
9487
                NDR_CHECK(ndr_push_align(ndr, 8));
 
9488
                NDR_CHECK(ndr_push_spoolss_DriverOSVersion(ndr, NDR_SCALARS, r->version));
 
9489
                NDR_CHECK(ndr_push_unique_ptr(ndr, r->driver_name));
 
9490
                NDR_CHECK(ndr_push_unique_ptr(ndr, r->architecture));
 
9491
                NDR_CHECK(ndr_push_unique_ptr(ndr, r->driver_path));
 
9492
                NDR_CHECK(ndr_push_unique_ptr(ndr, r->data_file));
 
9493
                NDR_CHECK(ndr_push_unique_ptr(ndr, r->config_file));
 
9494
                NDR_CHECK(ndr_push_unique_ptr(ndr, r->help_file));
 
9495
                NDR_CHECK(ndr_push_unique_ptr(ndr, r->monitor_name));
 
9496
                NDR_CHECK(ndr_push_unique_ptr(ndr, r->default_datatype));
 
9497
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ((ndr_size_spoolss_StringArray(r->dependent_files, ndr->iconv_convenience, ndr->flags) - 4) / 2)));
 
9498
                NDR_CHECK(ndr_push_unique_ptr(ndr, r->dependent_files));
 
9499
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ((ndr_size_spoolss_StringArray(r->previous_names, ndr->iconv_convenience, ndr->flags) - 4) / 2)));
 
9500
                NDR_CHECK(ndr_push_unique_ptr(ndr, r->previous_names));
 
9501
                NDR_CHECK(ndr_push_NTTIME(ndr, NDR_SCALARS, r->driver_date));
 
9502
                NDR_CHECK(ndr_push_hyper(ndr, NDR_SCALARS, r->driver_version));
 
9503
                NDR_CHECK(ndr_push_unique_ptr(ndr, r->manufacturer_name));
 
9504
                NDR_CHECK(ndr_push_unique_ptr(ndr, r->manufacturer_url));
 
9505
                NDR_CHECK(ndr_push_unique_ptr(ndr, r->hardware_id));
 
9506
                NDR_CHECK(ndr_push_unique_ptr(ndr, r->provider));
 
9507
                NDR_CHECK(ndr_push_unique_ptr(ndr, r->print_processor));
 
9508
                NDR_CHECK(ndr_push_unique_ptr(ndr, r->vendor_setup));
 
9509
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ((ndr_size_spoolss_StringArray(r->color_profiles, ndr->iconv_convenience, ndr->flags) - 4) / 2)));
 
9510
                NDR_CHECK(ndr_push_unique_ptr(ndr, r->color_profiles));
 
9511
                NDR_CHECK(ndr_push_unique_ptr(ndr, r->inf_path));
 
9512
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->printer_driver_attributes));
 
9513
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ((ndr_size_spoolss_StringArray(r->core_driver_dependencies, ndr->iconv_convenience, ndr->flags) - 4) / 2)));
 
9514
                NDR_CHECK(ndr_push_unique_ptr(ndr, r->core_driver_dependencies));
 
9515
                NDR_CHECK(ndr_push_NTTIME(ndr, NDR_SCALARS, r->min_inbox_driver_ver_date));
 
9516
                NDR_CHECK(ndr_push_hyper(ndr, NDR_SCALARS, r->min_inbox_driver_ver_version));
 
9517
                NDR_CHECK(ndr_push_trailer_align(ndr, 8));
 
9518
        }
 
9519
        if (ndr_flags & NDR_BUFFERS) {
 
9520
                if (r->driver_name) {
 
9521
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->driver_name, CH_UTF16)));
 
9522
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0));
 
9523
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->driver_name, CH_UTF16)));
 
9524
                        NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->driver_name, ndr_charset_length(r->driver_name, CH_UTF16), sizeof(uint16_t), CH_UTF16));
 
9525
                }
 
9526
                if (r->architecture) {
 
9527
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->architecture, CH_UTF16)));
 
9528
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0));
 
9529
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->architecture, CH_UTF16)));
 
9530
                        NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->architecture, ndr_charset_length(r->architecture, CH_UTF16), sizeof(uint16_t), CH_UTF16));
 
9531
                }
 
9532
                if (r->driver_path) {
 
9533
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->driver_path, CH_UTF16)));
 
9534
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0));
 
9535
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->driver_path, CH_UTF16)));
 
9536
                        NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->driver_path, ndr_charset_length(r->driver_path, CH_UTF16), sizeof(uint16_t), CH_UTF16));
 
9537
                }
 
9538
                if (r->data_file) {
 
9539
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->data_file, CH_UTF16)));
 
9540
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0));
 
9541
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->data_file, CH_UTF16)));
 
9542
                        NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->data_file, ndr_charset_length(r->data_file, CH_UTF16), sizeof(uint16_t), CH_UTF16));
 
9543
                }
 
9544
                if (r->config_file) {
 
9545
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->config_file, CH_UTF16)));
 
9546
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0));
 
9547
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->config_file, CH_UTF16)));
 
9548
                        NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->config_file, ndr_charset_length(r->config_file, CH_UTF16), sizeof(uint16_t), CH_UTF16));
 
9549
                }
 
9550
                if (r->help_file) {
 
9551
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->help_file, CH_UTF16)));
 
9552
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0));
 
9553
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->help_file, CH_UTF16)));
 
9554
                        NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->help_file, ndr_charset_length(r->help_file, CH_UTF16), sizeof(uint16_t), CH_UTF16));
 
9555
                }
 
9556
                if (r->monitor_name) {
 
9557
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->monitor_name, CH_UTF16)));
 
9558
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0));
 
9559
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->monitor_name, CH_UTF16)));
 
9560
                        NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->monitor_name, ndr_charset_length(r->monitor_name, CH_UTF16), sizeof(uint16_t), CH_UTF16));
 
9561
                }
 
9562
                if (r->default_datatype) {
 
9563
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->default_datatype, CH_UTF16)));
 
9564
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0));
 
9565
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->default_datatype, CH_UTF16)));
 
9566
                        NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->default_datatype, ndr_charset_length(r->default_datatype, CH_UTF16), sizeof(uint16_t), CH_UTF16));
 
9567
                }
 
9568
                if (r->dependent_files) {
 
9569
                        NDR_CHECK(ndr_push_spoolss_StringArray(ndr, NDR_SCALARS, r->dependent_files));
 
9570
                }
 
9571
                if (r->previous_names) {
 
9572
                        NDR_CHECK(ndr_push_spoolss_StringArray(ndr, NDR_SCALARS, r->previous_names));
 
9573
                }
 
9574
                if (r->manufacturer_name) {
 
9575
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->manufacturer_name, CH_UTF16)));
 
9576
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0));
 
9577
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->manufacturer_name, CH_UTF16)));
 
9578
                        NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->manufacturer_name, ndr_charset_length(r->manufacturer_name, CH_UTF16), sizeof(uint16_t), CH_UTF16));
 
9579
                }
 
9580
                if (r->manufacturer_url) {
 
9581
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->manufacturer_url, CH_UTF16)));
 
9582
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0));
 
9583
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->manufacturer_url, CH_UTF16)));
 
9584
                        NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->manufacturer_url, ndr_charset_length(r->manufacturer_url, CH_UTF16), sizeof(uint16_t), CH_UTF16));
 
9585
                }
 
9586
                if (r->hardware_id) {
 
9587
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->hardware_id, CH_UTF16)));
 
9588
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0));
 
9589
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->hardware_id, CH_UTF16)));
 
9590
                        NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->hardware_id, ndr_charset_length(r->hardware_id, CH_UTF16), sizeof(uint16_t), CH_UTF16));
 
9591
                }
 
9592
                if (r->provider) {
 
9593
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->provider, CH_UTF16)));
 
9594
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0));
 
9595
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->provider, CH_UTF16)));
 
9596
                        NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->provider, ndr_charset_length(r->provider, CH_UTF16), sizeof(uint16_t), CH_UTF16));
 
9597
                }
 
9598
                if (r->print_processor) {
 
9599
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->print_processor, CH_UTF16)));
 
9600
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0));
 
9601
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->print_processor, CH_UTF16)));
 
9602
                        NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->print_processor, ndr_charset_length(r->print_processor, CH_UTF16), sizeof(uint16_t), CH_UTF16));
 
9603
                }
 
9604
                if (r->vendor_setup) {
 
9605
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->vendor_setup, CH_UTF16)));
 
9606
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0));
 
9607
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->vendor_setup, CH_UTF16)));
 
9608
                        NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->vendor_setup, ndr_charset_length(r->vendor_setup, CH_UTF16), sizeof(uint16_t), CH_UTF16));
 
9609
                }
 
9610
                if (r->color_profiles) {
 
9611
                        NDR_CHECK(ndr_push_spoolss_StringArray(ndr, NDR_SCALARS, r->color_profiles));
 
9612
                }
 
9613
                if (r->inf_path) {
 
9614
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->inf_path, CH_UTF16)));
 
9615
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0));
 
9616
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->inf_path, CH_UTF16)));
 
9617
                        NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->inf_path, ndr_charset_length(r->inf_path, CH_UTF16), sizeof(uint16_t), CH_UTF16));
 
9618
                }
 
9619
                if (r->core_driver_dependencies) {
 
9620
                        NDR_CHECK(ndr_push_spoolss_StringArray(ndr, NDR_SCALARS, r->core_driver_dependencies));
 
9621
                }
 
9622
        }
 
9623
        return NDR_ERR_SUCCESS;
 
9624
}
 
9625
 
 
9626
static enum ndr_err_code ndr_pull_spoolss_AddDriverInfo8(struct ndr_pull *ndr, int ndr_flags, struct spoolss_AddDriverInfo8 *r)
 
9627
{
 
9628
        uint32_t _ptr_driver_name;
 
9629
        TALLOC_CTX *_mem_save_driver_name_0;
 
9630
        uint32_t _ptr_architecture;
 
9631
        TALLOC_CTX *_mem_save_architecture_0;
 
9632
        uint32_t _ptr_driver_path;
 
9633
        TALLOC_CTX *_mem_save_driver_path_0;
 
9634
        uint32_t _ptr_data_file;
 
9635
        TALLOC_CTX *_mem_save_data_file_0;
 
9636
        uint32_t _ptr_config_file;
 
9637
        TALLOC_CTX *_mem_save_config_file_0;
 
9638
        uint32_t _ptr_help_file;
 
9639
        TALLOC_CTX *_mem_save_help_file_0;
 
9640
        uint32_t _ptr_monitor_name;
 
9641
        TALLOC_CTX *_mem_save_monitor_name_0;
 
9642
        uint32_t _ptr_default_datatype;
 
9643
        TALLOC_CTX *_mem_save_default_datatype_0;
 
9644
        uint32_t _ptr_dependent_files;
 
9645
        TALLOC_CTX *_mem_save_dependent_files_0;
 
9646
        uint32_t _ptr_previous_names;
 
9647
        TALLOC_CTX *_mem_save_previous_names_0;
 
9648
        uint32_t _ptr_manufacturer_name;
 
9649
        TALLOC_CTX *_mem_save_manufacturer_name_0;
 
9650
        uint32_t _ptr_manufacturer_url;
 
9651
        TALLOC_CTX *_mem_save_manufacturer_url_0;
 
9652
        uint32_t _ptr_hardware_id;
 
9653
        TALLOC_CTX *_mem_save_hardware_id_0;
 
9654
        uint32_t _ptr_provider;
 
9655
        TALLOC_CTX *_mem_save_provider_0;
 
9656
        uint32_t _ptr_print_processor;
 
9657
        TALLOC_CTX *_mem_save_print_processor_0;
 
9658
        uint32_t _ptr_vendor_setup;
 
9659
        TALLOC_CTX *_mem_save_vendor_setup_0;
 
9660
        uint32_t _ptr_color_profiles;
 
9661
        TALLOC_CTX *_mem_save_color_profiles_0;
 
9662
        uint32_t _ptr_inf_path;
 
9663
        TALLOC_CTX *_mem_save_inf_path_0;
 
9664
        uint32_t _ptr_core_driver_dependencies;
 
9665
        TALLOC_CTX *_mem_save_core_driver_dependencies_0;
 
9666
        if (ndr_flags & NDR_SCALARS) {
 
9667
                NDR_CHECK(ndr_pull_align(ndr, 8));
 
9668
                NDR_CHECK(ndr_pull_spoolss_DriverOSVersion(ndr, NDR_SCALARS, &r->version));
 
9669
                NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_driver_name));
 
9670
                if (_ptr_driver_name) {
 
9671
                        NDR_PULL_ALLOC(ndr, r->driver_name);
 
9672
                } else {
 
9673
                        r->driver_name = NULL;
 
9674
                }
 
9675
                NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_architecture));
 
9676
                if (_ptr_architecture) {
 
9677
                        NDR_PULL_ALLOC(ndr, r->architecture);
 
9678
                } else {
 
9679
                        r->architecture = NULL;
 
9680
                }
 
9681
                NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_driver_path));
 
9682
                if (_ptr_driver_path) {
 
9683
                        NDR_PULL_ALLOC(ndr, r->driver_path);
 
9684
                } else {
 
9685
                        r->driver_path = NULL;
 
9686
                }
 
9687
                NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_data_file));
 
9688
                if (_ptr_data_file) {
 
9689
                        NDR_PULL_ALLOC(ndr, r->data_file);
 
9690
                } else {
 
9691
                        r->data_file = NULL;
 
9692
                }
 
9693
                NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_config_file));
 
9694
                if (_ptr_config_file) {
 
9695
                        NDR_PULL_ALLOC(ndr, r->config_file);
 
9696
                } else {
 
9697
                        r->config_file = NULL;
 
9698
                }
 
9699
                NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_help_file));
 
9700
                if (_ptr_help_file) {
 
9701
                        NDR_PULL_ALLOC(ndr, r->help_file);
 
9702
                } else {
 
9703
                        r->help_file = NULL;
 
9704
                }
 
9705
                NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_monitor_name));
 
9706
                if (_ptr_monitor_name) {
 
9707
                        NDR_PULL_ALLOC(ndr, r->monitor_name);
 
9708
                } else {
 
9709
                        r->monitor_name = NULL;
 
9710
                }
 
9711
                NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_default_datatype));
 
9712
                if (_ptr_default_datatype) {
 
9713
                        NDR_PULL_ALLOC(ndr, r->default_datatype);
 
9714
                } else {
 
9715
                        r->default_datatype = NULL;
 
9716
                }
 
9717
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->_ndr_size_dependent_files));
 
9718
                NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_dependent_files));
 
9719
                if (_ptr_dependent_files) {
 
9720
                        NDR_PULL_ALLOC(ndr, r->dependent_files);
 
9721
                } else {
 
9722
                        r->dependent_files = NULL;
 
9723
                }
 
9724
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->_ndr_size_previous_names));
 
9725
                NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_previous_names));
 
9726
                if (_ptr_previous_names) {
 
9727
                        NDR_PULL_ALLOC(ndr, r->previous_names);
 
9728
                } else {
 
9729
                        r->previous_names = NULL;
 
9730
                }
 
9731
                NDR_CHECK(ndr_pull_NTTIME(ndr, NDR_SCALARS, &r->driver_date));
 
9732
                NDR_CHECK(ndr_pull_hyper(ndr, NDR_SCALARS, &r->driver_version));
 
9733
                NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_manufacturer_name));
 
9734
                if (_ptr_manufacturer_name) {
 
9735
                        NDR_PULL_ALLOC(ndr, r->manufacturer_name);
 
9736
                } else {
 
9737
                        r->manufacturer_name = NULL;
 
9738
                }
 
9739
                NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_manufacturer_url));
 
9740
                if (_ptr_manufacturer_url) {
 
9741
                        NDR_PULL_ALLOC(ndr, r->manufacturer_url);
 
9742
                } else {
 
9743
                        r->manufacturer_url = NULL;
 
9744
                }
 
9745
                NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_hardware_id));
 
9746
                if (_ptr_hardware_id) {
 
9747
                        NDR_PULL_ALLOC(ndr, r->hardware_id);
 
9748
                } else {
 
9749
                        r->hardware_id = NULL;
 
9750
                }
 
9751
                NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_provider));
 
9752
                if (_ptr_provider) {
 
9753
                        NDR_PULL_ALLOC(ndr, r->provider);
 
9754
                } else {
 
9755
                        r->provider = NULL;
 
9756
                }
 
9757
                NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_print_processor));
 
9758
                if (_ptr_print_processor) {
 
9759
                        NDR_PULL_ALLOC(ndr, r->print_processor);
 
9760
                } else {
 
9761
                        r->print_processor = NULL;
 
9762
                }
 
9763
                NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_vendor_setup));
 
9764
                if (_ptr_vendor_setup) {
 
9765
                        NDR_PULL_ALLOC(ndr, r->vendor_setup);
 
9766
                } else {
 
9767
                        r->vendor_setup = NULL;
 
9768
                }
 
9769
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->_ndr_size_color_profiles));
 
9770
                NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_color_profiles));
 
9771
                if (_ptr_color_profiles) {
 
9772
                        NDR_PULL_ALLOC(ndr, r->color_profiles);
 
9773
                } else {
 
9774
                        r->color_profiles = NULL;
 
9775
                }
 
9776
                NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_inf_path));
 
9777
                if (_ptr_inf_path) {
 
9778
                        NDR_PULL_ALLOC(ndr, r->inf_path);
 
9779
                } else {
 
9780
                        r->inf_path = NULL;
 
9781
                }
 
9782
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->printer_driver_attributes));
 
9783
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->_ndr_size_core_driver_dependencies));
 
9784
                NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_core_driver_dependencies));
 
9785
                if (_ptr_core_driver_dependencies) {
 
9786
                        NDR_PULL_ALLOC(ndr, r->core_driver_dependencies);
 
9787
                } else {
 
9788
                        r->core_driver_dependencies = NULL;
 
9789
                }
 
9790
                NDR_CHECK(ndr_pull_NTTIME(ndr, NDR_SCALARS, &r->min_inbox_driver_ver_date));
 
9791
                NDR_CHECK(ndr_pull_hyper(ndr, NDR_SCALARS, &r->min_inbox_driver_ver_version));
 
9792
                NDR_CHECK(ndr_pull_trailer_align(ndr, 8));
 
9793
        }
 
9794
        if (ndr_flags & NDR_BUFFERS) {
 
9795
                if (r->driver_name) {
 
9796
                        _mem_save_driver_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
9797
                        NDR_PULL_SET_MEM_CTX(ndr, r->driver_name, 0);
 
9798
                        NDR_CHECK(ndr_pull_array_size(ndr, &r->driver_name));
 
9799
                        NDR_CHECK(ndr_pull_array_length(ndr, &r->driver_name));
 
9800
                        if (ndr_get_array_length(ndr, &r->driver_name) > ndr_get_array_size(ndr, &r->driver_name)) {
 
9801
                                return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->driver_name), ndr_get_array_length(ndr, &r->driver_name));
 
9802
                        }
 
9803
                        NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->driver_name), sizeof(uint16_t)));
 
9804
                        NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->driver_name, ndr_get_array_length(ndr, &r->driver_name), sizeof(uint16_t), CH_UTF16));
 
9805
                        NDR_PULL_SET_MEM_CTX(ndr, _mem_save_driver_name_0, 0);
 
9806
                }
 
9807
                if (r->architecture) {
 
9808
                        _mem_save_architecture_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
9809
                        NDR_PULL_SET_MEM_CTX(ndr, r->architecture, 0);
 
9810
                        NDR_CHECK(ndr_pull_array_size(ndr, &r->architecture));
 
9811
                        NDR_CHECK(ndr_pull_array_length(ndr, &r->architecture));
 
9812
                        if (ndr_get_array_length(ndr, &r->architecture) > ndr_get_array_size(ndr, &r->architecture)) {
 
9813
                                return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->architecture), ndr_get_array_length(ndr, &r->architecture));
 
9814
                        }
 
9815
                        NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->architecture), sizeof(uint16_t)));
 
9816
                        NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->architecture, ndr_get_array_length(ndr, &r->architecture), sizeof(uint16_t), CH_UTF16));
 
9817
                        NDR_PULL_SET_MEM_CTX(ndr, _mem_save_architecture_0, 0);
 
9818
                }
 
9819
                if (r->driver_path) {
 
9820
                        _mem_save_driver_path_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
9821
                        NDR_PULL_SET_MEM_CTX(ndr, r->driver_path, 0);
 
9822
                        NDR_CHECK(ndr_pull_array_size(ndr, &r->driver_path));
 
9823
                        NDR_CHECK(ndr_pull_array_length(ndr, &r->driver_path));
 
9824
                        if (ndr_get_array_length(ndr, &r->driver_path) > ndr_get_array_size(ndr, &r->driver_path)) {
 
9825
                                return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->driver_path), ndr_get_array_length(ndr, &r->driver_path));
 
9826
                        }
 
9827
                        NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->driver_path), sizeof(uint16_t)));
 
9828
                        NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->driver_path, ndr_get_array_length(ndr, &r->driver_path), sizeof(uint16_t), CH_UTF16));
 
9829
                        NDR_PULL_SET_MEM_CTX(ndr, _mem_save_driver_path_0, 0);
 
9830
                }
 
9831
                if (r->data_file) {
 
9832
                        _mem_save_data_file_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
9833
                        NDR_PULL_SET_MEM_CTX(ndr, r->data_file, 0);
 
9834
                        NDR_CHECK(ndr_pull_array_size(ndr, &r->data_file));
 
9835
                        NDR_CHECK(ndr_pull_array_length(ndr, &r->data_file));
 
9836
                        if (ndr_get_array_length(ndr, &r->data_file) > ndr_get_array_size(ndr, &r->data_file)) {
 
9837
                                return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->data_file), ndr_get_array_length(ndr, &r->data_file));
 
9838
                        }
 
9839
                        NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->data_file), sizeof(uint16_t)));
 
9840
                        NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->data_file, ndr_get_array_length(ndr, &r->data_file), sizeof(uint16_t), CH_UTF16));
 
9841
                        NDR_PULL_SET_MEM_CTX(ndr, _mem_save_data_file_0, 0);
 
9842
                }
 
9843
                if (r->config_file) {
 
9844
                        _mem_save_config_file_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
9845
                        NDR_PULL_SET_MEM_CTX(ndr, r->config_file, 0);
 
9846
                        NDR_CHECK(ndr_pull_array_size(ndr, &r->config_file));
 
9847
                        NDR_CHECK(ndr_pull_array_length(ndr, &r->config_file));
 
9848
                        if (ndr_get_array_length(ndr, &r->config_file) > ndr_get_array_size(ndr, &r->config_file)) {
 
9849
                                return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->config_file), ndr_get_array_length(ndr, &r->config_file));
 
9850
                        }
 
9851
                        NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->config_file), sizeof(uint16_t)));
 
9852
                        NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->config_file, ndr_get_array_length(ndr, &r->config_file), sizeof(uint16_t), CH_UTF16));
 
9853
                        NDR_PULL_SET_MEM_CTX(ndr, _mem_save_config_file_0, 0);
 
9854
                }
 
9855
                if (r->help_file) {
 
9856
                        _mem_save_help_file_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
9857
                        NDR_PULL_SET_MEM_CTX(ndr, r->help_file, 0);
 
9858
                        NDR_CHECK(ndr_pull_array_size(ndr, &r->help_file));
 
9859
                        NDR_CHECK(ndr_pull_array_length(ndr, &r->help_file));
 
9860
                        if (ndr_get_array_length(ndr, &r->help_file) > ndr_get_array_size(ndr, &r->help_file)) {
 
9861
                                return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->help_file), ndr_get_array_length(ndr, &r->help_file));
 
9862
                        }
 
9863
                        NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->help_file), sizeof(uint16_t)));
 
9864
                        NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->help_file, ndr_get_array_length(ndr, &r->help_file), sizeof(uint16_t), CH_UTF16));
 
9865
                        NDR_PULL_SET_MEM_CTX(ndr, _mem_save_help_file_0, 0);
 
9866
                }
 
9867
                if (r->monitor_name) {
 
9868
                        _mem_save_monitor_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
9869
                        NDR_PULL_SET_MEM_CTX(ndr, r->monitor_name, 0);
 
9870
                        NDR_CHECK(ndr_pull_array_size(ndr, &r->monitor_name));
 
9871
                        NDR_CHECK(ndr_pull_array_length(ndr, &r->monitor_name));
 
9872
                        if (ndr_get_array_length(ndr, &r->monitor_name) > ndr_get_array_size(ndr, &r->monitor_name)) {
 
9873
                                return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->monitor_name), ndr_get_array_length(ndr, &r->monitor_name));
 
9874
                        }
 
9875
                        NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->monitor_name), sizeof(uint16_t)));
 
9876
                        NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->monitor_name, ndr_get_array_length(ndr, &r->monitor_name), sizeof(uint16_t), CH_UTF16));
 
9877
                        NDR_PULL_SET_MEM_CTX(ndr, _mem_save_monitor_name_0, 0);
 
9878
                }
 
9879
                if (r->default_datatype) {
 
9880
                        _mem_save_default_datatype_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
9881
                        NDR_PULL_SET_MEM_CTX(ndr, r->default_datatype, 0);
 
9882
                        NDR_CHECK(ndr_pull_array_size(ndr, &r->default_datatype));
 
9883
                        NDR_CHECK(ndr_pull_array_length(ndr, &r->default_datatype));
 
9884
                        if (ndr_get_array_length(ndr, &r->default_datatype) > ndr_get_array_size(ndr, &r->default_datatype)) {
 
9885
                                return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->default_datatype), ndr_get_array_length(ndr, &r->default_datatype));
 
9886
                        }
 
9887
                        NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->default_datatype), sizeof(uint16_t)));
 
9888
                        NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->default_datatype, ndr_get_array_length(ndr, &r->default_datatype), sizeof(uint16_t), CH_UTF16));
 
9889
                        NDR_PULL_SET_MEM_CTX(ndr, _mem_save_default_datatype_0, 0);
 
9890
                }
 
9891
                if (r->dependent_files) {
 
9892
                        _mem_save_dependent_files_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
9893
                        NDR_PULL_SET_MEM_CTX(ndr, r->dependent_files, 0);
 
9894
                        NDR_CHECK(ndr_pull_spoolss_StringArray(ndr, NDR_SCALARS, r->dependent_files));
 
9895
                        NDR_PULL_SET_MEM_CTX(ndr, _mem_save_dependent_files_0, 0);
 
9896
                }
 
9897
                if (r->previous_names) {
 
9898
                        _mem_save_previous_names_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
9899
                        NDR_PULL_SET_MEM_CTX(ndr, r->previous_names, 0);
 
9900
                        NDR_CHECK(ndr_pull_spoolss_StringArray(ndr, NDR_SCALARS, r->previous_names));
 
9901
                        NDR_PULL_SET_MEM_CTX(ndr, _mem_save_previous_names_0, 0);
 
9902
                }
 
9903
                if (r->manufacturer_name) {
 
9904
                        _mem_save_manufacturer_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
9905
                        NDR_PULL_SET_MEM_CTX(ndr, r->manufacturer_name, 0);
 
9906
                        NDR_CHECK(ndr_pull_array_size(ndr, &r->manufacturer_name));
 
9907
                        NDR_CHECK(ndr_pull_array_length(ndr, &r->manufacturer_name));
 
9908
                        if (ndr_get_array_length(ndr, &r->manufacturer_name) > ndr_get_array_size(ndr, &r->manufacturer_name)) {
 
9909
                                return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->manufacturer_name), ndr_get_array_length(ndr, &r->manufacturer_name));
 
9910
                        }
 
9911
                        NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->manufacturer_name), sizeof(uint16_t)));
 
9912
                        NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->manufacturer_name, ndr_get_array_length(ndr, &r->manufacturer_name), sizeof(uint16_t), CH_UTF16));
 
9913
                        NDR_PULL_SET_MEM_CTX(ndr, _mem_save_manufacturer_name_0, 0);
 
9914
                }
 
9915
                if (r->manufacturer_url) {
 
9916
                        _mem_save_manufacturer_url_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
9917
                        NDR_PULL_SET_MEM_CTX(ndr, r->manufacturer_url, 0);
 
9918
                        NDR_CHECK(ndr_pull_array_size(ndr, &r->manufacturer_url));
 
9919
                        NDR_CHECK(ndr_pull_array_length(ndr, &r->manufacturer_url));
 
9920
                        if (ndr_get_array_length(ndr, &r->manufacturer_url) > ndr_get_array_size(ndr, &r->manufacturer_url)) {
 
9921
                                return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->manufacturer_url), ndr_get_array_length(ndr, &r->manufacturer_url));
 
9922
                        }
 
9923
                        NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->manufacturer_url), sizeof(uint16_t)));
 
9924
                        NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->manufacturer_url, ndr_get_array_length(ndr, &r->manufacturer_url), sizeof(uint16_t), CH_UTF16));
 
9925
                        NDR_PULL_SET_MEM_CTX(ndr, _mem_save_manufacturer_url_0, 0);
 
9926
                }
 
9927
                if (r->hardware_id) {
 
9928
                        _mem_save_hardware_id_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
9929
                        NDR_PULL_SET_MEM_CTX(ndr, r->hardware_id, 0);
 
9930
                        NDR_CHECK(ndr_pull_array_size(ndr, &r->hardware_id));
 
9931
                        NDR_CHECK(ndr_pull_array_length(ndr, &r->hardware_id));
 
9932
                        if (ndr_get_array_length(ndr, &r->hardware_id) > ndr_get_array_size(ndr, &r->hardware_id)) {
 
9933
                                return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->hardware_id), ndr_get_array_length(ndr, &r->hardware_id));
 
9934
                        }
 
9935
                        NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->hardware_id), sizeof(uint16_t)));
 
9936
                        NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->hardware_id, ndr_get_array_length(ndr, &r->hardware_id), sizeof(uint16_t), CH_UTF16));
 
9937
                        NDR_PULL_SET_MEM_CTX(ndr, _mem_save_hardware_id_0, 0);
 
9938
                }
 
9939
                if (r->provider) {
 
9940
                        _mem_save_provider_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
9941
                        NDR_PULL_SET_MEM_CTX(ndr, r->provider, 0);
 
9942
                        NDR_CHECK(ndr_pull_array_size(ndr, &r->provider));
 
9943
                        NDR_CHECK(ndr_pull_array_length(ndr, &r->provider));
 
9944
                        if (ndr_get_array_length(ndr, &r->provider) > ndr_get_array_size(ndr, &r->provider)) {
 
9945
                                return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->provider), ndr_get_array_length(ndr, &r->provider));
 
9946
                        }
 
9947
                        NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->provider), sizeof(uint16_t)));
 
9948
                        NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->provider, ndr_get_array_length(ndr, &r->provider), sizeof(uint16_t), CH_UTF16));
 
9949
                        NDR_PULL_SET_MEM_CTX(ndr, _mem_save_provider_0, 0);
 
9950
                }
 
9951
                if (r->print_processor) {
 
9952
                        _mem_save_print_processor_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
9953
                        NDR_PULL_SET_MEM_CTX(ndr, r->print_processor, 0);
 
9954
                        NDR_CHECK(ndr_pull_array_size(ndr, &r->print_processor));
 
9955
                        NDR_CHECK(ndr_pull_array_length(ndr, &r->print_processor));
 
9956
                        if (ndr_get_array_length(ndr, &r->print_processor) > ndr_get_array_size(ndr, &r->print_processor)) {
 
9957
                                return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->print_processor), ndr_get_array_length(ndr, &r->print_processor));
 
9958
                        }
 
9959
                        NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->print_processor), sizeof(uint16_t)));
 
9960
                        NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->print_processor, ndr_get_array_length(ndr, &r->print_processor), sizeof(uint16_t), CH_UTF16));
 
9961
                        NDR_PULL_SET_MEM_CTX(ndr, _mem_save_print_processor_0, 0);
 
9962
                }
 
9963
                if (r->vendor_setup) {
 
9964
                        _mem_save_vendor_setup_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
9965
                        NDR_PULL_SET_MEM_CTX(ndr, r->vendor_setup, 0);
 
9966
                        NDR_CHECK(ndr_pull_array_size(ndr, &r->vendor_setup));
 
9967
                        NDR_CHECK(ndr_pull_array_length(ndr, &r->vendor_setup));
 
9968
                        if (ndr_get_array_length(ndr, &r->vendor_setup) > ndr_get_array_size(ndr, &r->vendor_setup)) {
 
9969
                                return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->vendor_setup), ndr_get_array_length(ndr, &r->vendor_setup));
 
9970
                        }
 
9971
                        NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->vendor_setup), sizeof(uint16_t)));
 
9972
                        NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->vendor_setup, ndr_get_array_length(ndr, &r->vendor_setup), sizeof(uint16_t), CH_UTF16));
 
9973
                        NDR_PULL_SET_MEM_CTX(ndr, _mem_save_vendor_setup_0, 0);
 
9974
                }
 
9975
                if (r->color_profiles) {
 
9976
                        _mem_save_color_profiles_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
9977
                        NDR_PULL_SET_MEM_CTX(ndr, r->color_profiles, 0);
 
9978
                        NDR_CHECK(ndr_pull_spoolss_StringArray(ndr, NDR_SCALARS, r->color_profiles));
 
9979
                        NDR_PULL_SET_MEM_CTX(ndr, _mem_save_color_profiles_0, 0);
 
9980
                }
 
9981
                if (r->inf_path) {
 
9982
                        _mem_save_inf_path_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
9983
                        NDR_PULL_SET_MEM_CTX(ndr, r->inf_path, 0);
 
9984
                        NDR_CHECK(ndr_pull_array_size(ndr, &r->inf_path));
 
9985
                        NDR_CHECK(ndr_pull_array_length(ndr, &r->inf_path));
 
9986
                        if (ndr_get_array_length(ndr, &r->inf_path) > ndr_get_array_size(ndr, &r->inf_path)) {
 
9987
                                return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->inf_path), ndr_get_array_length(ndr, &r->inf_path));
 
9988
                        }
 
9989
                        NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->inf_path), sizeof(uint16_t)));
 
9990
                        NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->inf_path, ndr_get_array_length(ndr, &r->inf_path), sizeof(uint16_t), CH_UTF16));
 
9991
                        NDR_PULL_SET_MEM_CTX(ndr, _mem_save_inf_path_0, 0);
 
9992
                }
 
9993
                if (r->core_driver_dependencies) {
 
9994
                        _mem_save_core_driver_dependencies_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
9995
                        NDR_PULL_SET_MEM_CTX(ndr, r->core_driver_dependencies, 0);
 
9996
                        NDR_CHECK(ndr_pull_spoolss_StringArray(ndr, NDR_SCALARS, r->core_driver_dependencies));
 
9997
                        NDR_PULL_SET_MEM_CTX(ndr, _mem_save_core_driver_dependencies_0, 0);
 
9998
                }
 
9999
        }
 
10000
        return NDR_ERR_SUCCESS;
 
10001
}
 
10002
 
 
10003
_PUBLIC_ void ndr_print_spoolss_AddDriverInfo8(struct ndr_print *ndr, const char *name, const struct spoolss_AddDriverInfo8 *r)
 
10004
{
 
10005
        ndr_print_struct(ndr, name, "spoolss_AddDriverInfo8");
 
10006
        ndr->depth++;
 
10007
        ndr_print_spoolss_DriverOSVersion(ndr, "version", r->version);
 
10008
        ndr_print_ptr(ndr, "driver_name", r->driver_name);
 
10009
        ndr->depth++;
 
10010
        if (r->driver_name) {
 
10011
                ndr_print_string(ndr, "driver_name", r->driver_name);
 
10012
        }
 
10013
        ndr->depth--;
 
10014
        ndr_print_ptr(ndr, "architecture", r->architecture);
 
10015
        ndr->depth++;
 
10016
        if (r->architecture) {
 
10017
                ndr_print_string(ndr, "architecture", r->architecture);
 
10018
        }
 
10019
        ndr->depth--;
 
10020
        ndr_print_ptr(ndr, "driver_path", r->driver_path);
 
10021
        ndr->depth++;
 
10022
        if (r->driver_path) {
 
10023
                ndr_print_string(ndr, "driver_path", r->driver_path);
 
10024
        }
 
10025
        ndr->depth--;
 
10026
        ndr_print_ptr(ndr, "data_file", r->data_file);
 
10027
        ndr->depth++;
 
10028
        if (r->data_file) {
 
10029
                ndr_print_string(ndr, "data_file", r->data_file);
 
10030
        }
 
10031
        ndr->depth--;
 
10032
        ndr_print_ptr(ndr, "config_file", r->config_file);
 
10033
        ndr->depth++;
 
10034
        if (r->config_file) {
 
10035
                ndr_print_string(ndr, "config_file", r->config_file);
 
10036
        }
 
10037
        ndr->depth--;
 
10038
        ndr_print_ptr(ndr, "help_file", r->help_file);
 
10039
        ndr->depth++;
 
10040
        if (r->help_file) {
 
10041
                ndr_print_string(ndr, "help_file", r->help_file);
 
10042
        }
 
10043
        ndr->depth--;
 
10044
        ndr_print_ptr(ndr, "monitor_name", r->monitor_name);
 
10045
        ndr->depth++;
 
10046
        if (r->monitor_name) {
 
10047
                ndr_print_string(ndr, "monitor_name", r->monitor_name);
 
10048
        }
 
10049
        ndr->depth--;
 
10050
        ndr_print_ptr(ndr, "default_datatype", r->default_datatype);
 
10051
        ndr->depth++;
 
10052
        if (r->default_datatype) {
 
10053
                ndr_print_string(ndr, "default_datatype", r->default_datatype);
 
10054
        }
 
10055
        ndr->depth--;
 
10056
        ndr_print_uint32(ndr, "_ndr_size_dependent_files", (ndr->flags & LIBNDR_PRINT_SET_VALUES)?((ndr_size_spoolss_StringArray(r->dependent_files, ndr->iconv_convenience, ndr->flags) - 4) / 2):r->_ndr_size_dependent_files);
 
10057
        ndr_print_ptr(ndr, "dependent_files", r->dependent_files);
 
10058
        ndr->depth++;
 
10059
        if (r->dependent_files) {
 
10060
                ndr_print_spoolss_StringArray(ndr, "dependent_files", r->dependent_files);
 
10061
        }
 
10062
        ndr->depth--;
 
10063
        ndr_print_uint32(ndr, "_ndr_size_previous_names", (ndr->flags & LIBNDR_PRINT_SET_VALUES)?((ndr_size_spoolss_StringArray(r->previous_names, ndr->iconv_convenience, ndr->flags) - 4) / 2):r->_ndr_size_previous_names);
 
10064
        ndr_print_ptr(ndr, "previous_names", r->previous_names);
 
10065
        ndr->depth++;
 
10066
        if (r->previous_names) {
 
10067
                ndr_print_spoolss_StringArray(ndr, "previous_names", r->previous_names);
 
10068
        }
 
10069
        ndr->depth--;
 
10070
        ndr_print_NTTIME(ndr, "driver_date", r->driver_date);
 
10071
        ndr_print_hyper(ndr, "driver_version", r->driver_version);
 
10072
        ndr_print_ptr(ndr, "manufacturer_name", r->manufacturer_name);
 
10073
        ndr->depth++;
 
10074
        if (r->manufacturer_name) {
 
10075
                ndr_print_string(ndr, "manufacturer_name", r->manufacturer_name);
 
10076
        }
 
10077
        ndr->depth--;
 
10078
        ndr_print_ptr(ndr, "manufacturer_url", r->manufacturer_url);
 
10079
        ndr->depth++;
 
10080
        if (r->manufacturer_url) {
 
10081
                ndr_print_string(ndr, "manufacturer_url", r->manufacturer_url);
 
10082
        }
 
10083
        ndr->depth--;
 
10084
        ndr_print_ptr(ndr, "hardware_id", r->hardware_id);
 
10085
        ndr->depth++;
 
10086
        if (r->hardware_id) {
 
10087
                ndr_print_string(ndr, "hardware_id", r->hardware_id);
 
10088
        }
 
10089
        ndr->depth--;
 
10090
        ndr_print_ptr(ndr, "provider", r->provider);
 
10091
        ndr->depth++;
 
10092
        if (r->provider) {
 
10093
                ndr_print_string(ndr, "provider", r->provider);
 
10094
        }
 
10095
        ndr->depth--;
 
10096
        ndr_print_ptr(ndr, "print_processor", r->print_processor);
 
10097
        ndr->depth++;
 
10098
        if (r->print_processor) {
 
10099
                ndr_print_string(ndr, "print_processor", r->print_processor);
 
10100
        }
 
10101
        ndr->depth--;
 
10102
        ndr_print_ptr(ndr, "vendor_setup", r->vendor_setup);
 
10103
        ndr->depth++;
 
10104
        if (r->vendor_setup) {
 
10105
                ndr_print_string(ndr, "vendor_setup", r->vendor_setup);
 
10106
        }
 
10107
        ndr->depth--;
 
10108
        ndr_print_uint32(ndr, "_ndr_size_color_profiles", (ndr->flags & LIBNDR_PRINT_SET_VALUES)?((ndr_size_spoolss_StringArray(r->color_profiles, ndr->iconv_convenience, ndr->flags) - 4) / 2):r->_ndr_size_color_profiles);
 
10109
        ndr_print_ptr(ndr, "color_profiles", r->color_profiles);
 
10110
        ndr->depth++;
 
10111
        if (r->color_profiles) {
 
10112
                ndr_print_spoolss_StringArray(ndr, "color_profiles", r->color_profiles);
 
10113
        }
 
10114
        ndr->depth--;
 
10115
        ndr_print_ptr(ndr, "inf_path", r->inf_path);
 
10116
        ndr->depth++;
 
10117
        if (r->inf_path) {
 
10118
                ndr_print_string(ndr, "inf_path", r->inf_path);
 
10119
        }
 
10120
        ndr->depth--;
 
10121
        ndr_print_uint32(ndr, "printer_driver_attributes", r->printer_driver_attributes);
 
10122
        ndr_print_uint32(ndr, "_ndr_size_core_driver_dependencies", (ndr->flags & LIBNDR_PRINT_SET_VALUES)?((ndr_size_spoolss_StringArray(r->core_driver_dependencies, ndr->iconv_convenience, ndr->flags) - 4) / 2):r->_ndr_size_core_driver_dependencies);
 
10123
        ndr_print_ptr(ndr, "core_driver_dependencies", r->core_driver_dependencies);
 
10124
        ndr->depth++;
 
10125
        if (r->core_driver_dependencies) {
 
10126
                ndr_print_spoolss_StringArray(ndr, "core_driver_dependencies", r->core_driver_dependencies);
 
10127
        }
 
10128
        ndr->depth--;
 
10129
        ndr_print_NTTIME(ndr, "min_inbox_driver_ver_date", r->min_inbox_driver_ver_date);
 
10130
        ndr_print_hyper(ndr, "min_inbox_driver_ver_version", r->min_inbox_driver_ver_version);
 
10131
        ndr->depth--;
 
10132
}
 
10133
 
 
10134
static enum ndr_err_code ndr_push_spoolss_AddDriverInfo(struct ndr_push *ndr, int ndr_flags, const union spoolss_AddDriverInfo *r)
 
10135
{
 
10136
        if (ndr_flags & NDR_SCALARS) {
 
10137
                int level = ndr_push_get_switch_value(ndr, r);
 
10138
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, level));
 
10139
                NDR_CHECK(ndr_push_union_align(ndr, 5));
 
10140
                switch (level) {
 
10141
                        case 1: {
 
10142
                                NDR_CHECK(ndr_push_unique_ptr(ndr, r->info1));
 
10143
                        break; }
 
10144
 
 
10145
                        case 2: {
 
10146
                                NDR_CHECK(ndr_push_unique_ptr(ndr, r->info2));
 
10147
                        break; }
 
10148
 
 
10149
                        case 3: {
 
10150
                                NDR_CHECK(ndr_push_unique_ptr(ndr, r->info3));
 
10151
                        break; }
 
10152
 
 
10153
                        case 4: {
 
10154
                                NDR_CHECK(ndr_push_unique_ptr(ndr, r->info4));
 
10155
                        break; }
 
10156
 
 
10157
                        case 6: {
 
10158
                                NDR_CHECK(ndr_push_unique_ptr(ndr, r->info6));
 
10159
                        break; }
 
10160
 
 
10161
                        case 8: {
 
10162
                                NDR_CHECK(ndr_push_unique_ptr(ndr, r->info8));
 
10163
                        break; }
 
10164
 
 
10165
                        default:
 
10166
                                return ndr_push_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u at %s", level, __location__);
 
10167
                }
 
10168
        }
 
10169
        if (ndr_flags & NDR_BUFFERS) {
 
10170
                int level = ndr_push_get_switch_value(ndr, r);
 
10171
                switch (level) {
 
10172
                        case 1:
 
10173
                                if (r->info1) {
 
10174
                                        NDR_CHECK(ndr_push_spoolss_AddDriverInfo1(ndr, NDR_SCALARS|NDR_BUFFERS, r->info1));
 
10175
                                }
 
10176
                        break;
 
10177
 
 
10178
                        case 2:
 
10179
                                if (r->info2) {
 
10180
                                        NDR_CHECK(ndr_push_spoolss_AddDriverInfo2(ndr, NDR_SCALARS|NDR_BUFFERS, r->info2));
 
10181
                                }
 
10182
                        break;
 
10183
 
 
10184
                        case 3:
 
10185
                                if (r->info3) {
 
10186
                                        NDR_CHECK(ndr_push_spoolss_AddDriverInfo3(ndr, NDR_SCALARS|NDR_BUFFERS, r->info3));
 
10187
                                }
 
10188
                        break;
 
10189
 
 
10190
                        case 4:
 
10191
                                if (r->info4) {
 
10192
                                        NDR_CHECK(ndr_push_spoolss_AddDriverInfo4(ndr, NDR_SCALARS|NDR_BUFFERS, r->info4));
 
10193
                                }
 
10194
                        break;
 
10195
 
 
10196
                        case 6:
 
10197
                                if (r->info6) {
 
10198
                                        NDR_CHECK(ndr_push_spoolss_AddDriverInfo6(ndr, NDR_SCALARS|NDR_BUFFERS, r->info6));
 
10199
                                }
 
10200
                        break;
 
10201
 
 
10202
                        case 8:
 
10203
                                if (r->info8) {
 
10204
                                        NDR_CHECK(ndr_push_spoolss_AddDriverInfo8(ndr, NDR_SCALARS|NDR_BUFFERS, r->info8));
 
10205
                                }
 
10206
                        break;
 
10207
 
 
10208
                        default:
 
10209
                                return ndr_push_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u at %s", level, __location__);
 
10210
                }
 
10211
        }
 
10212
        return NDR_ERR_SUCCESS;
 
10213
}
 
10214
 
 
10215
static enum ndr_err_code ndr_pull_spoolss_AddDriverInfo(struct ndr_pull *ndr, int ndr_flags, union spoolss_AddDriverInfo *r)
 
10216
{
 
10217
        int level;
 
10218
        uint32_t _level;
 
10219
        TALLOC_CTX *_mem_save_info1_0;
 
10220
        TALLOC_CTX *_mem_save_info2_0;
 
10221
        TALLOC_CTX *_mem_save_info3_0;
 
10222
        TALLOC_CTX *_mem_save_info4_0;
 
10223
        TALLOC_CTX *_mem_save_info6_0;
 
10224
        TALLOC_CTX *_mem_save_info8_0;
 
10225
        level = ndr_pull_get_switch_value(ndr, r);
 
10226
        if (ndr_flags & NDR_SCALARS) {
 
10227
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &_level));
 
10228
                if (_level != level) {
 
10229
                        return ndr_pull_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u for r at %s", _level, __location__);
 
10230
                }
 
10231
                NDR_CHECK(ndr_pull_union_align(ndr, 5));
 
10232
                switch (level) {
 
10233
                        case 1: {
 
10234
                                uint32_t _ptr_info1;
 
10235
                                NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_info1));
 
10236
                                if (_ptr_info1) {
 
10237
                                        NDR_PULL_ALLOC(ndr, r->info1);
 
10238
                                } else {
 
10239
                                        r->info1 = NULL;
 
10240
                                }
 
10241
                        break; }
 
10242
 
 
10243
                        case 2: {
 
10244
                                uint32_t _ptr_info2;
 
10245
                                NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_info2));
 
10246
                                if (_ptr_info2) {
 
10247
                                        NDR_PULL_ALLOC(ndr, r->info2);
 
10248
                                } else {
 
10249
                                        r->info2 = NULL;
 
10250
                                }
 
10251
                        break; }
 
10252
 
 
10253
                        case 3: {
 
10254
                                uint32_t _ptr_info3;
 
10255
                                NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_info3));
 
10256
                                if (_ptr_info3) {
 
10257
                                        NDR_PULL_ALLOC(ndr, r->info3);
 
10258
                                } else {
 
10259
                                        r->info3 = NULL;
 
10260
                                }
 
10261
                        break; }
 
10262
 
 
10263
                        case 4: {
 
10264
                                uint32_t _ptr_info4;
 
10265
                                NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_info4));
 
10266
                                if (_ptr_info4) {
 
10267
                                        NDR_PULL_ALLOC(ndr, r->info4);
 
10268
                                } else {
 
10269
                                        r->info4 = NULL;
 
10270
                                }
 
10271
                        break; }
 
10272
 
 
10273
                        case 6: {
 
10274
                                uint32_t _ptr_info6;
 
10275
                                NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_info6));
 
10276
                                if (_ptr_info6) {
 
10277
                                        NDR_PULL_ALLOC(ndr, r->info6);
 
10278
                                } else {
 
10279
                                        r->info6 = NULL;
 
10280
                                }
 
10281
                        break; }
 
10282
 
 
10283
                        case 8: {
 
10284
                                uint32_t _ptr_info8;
 
10285
                                NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_info8));
 
10286
                                if (_ptr_info8) {
 
10287
                                        NDR_PULL_ALLOC(ndr, r->info8);
 
10288
                                } else {
 
10289
                                        r->info8 = NULL;
 
10290
                                }
 
10291
                        break; }
 
10292
 
 
10293
                        default:
 
10294
                                return ndr_pull_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u at %s", level, __location__);
 
10295
                }
 
10296
        }
 
10297
        if (ndr_flags & NDR_BUFFERS) {
 
10298
                switch (level) {
 
10299
                        case 1:
 
10300
                                if (r->info1) {
 
10301
                                        _mem_save_info1_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
10302
                                        NDR_PULL_SET_MEM_CTX(ndr, r->info1, 0);
 
10303
                                        NDR_CHECK(ndr_pull_spoolss_AddDriverInfo1(ndr, NDR_SCALARS|NDR_BUFFERS, r->info1));
 
10304
                                        NDR_PULL_SET_MEM_CTX(ndr, _mem_save_info1_0, 0);
 
10305
                                }
 
10306
                        break;
 
10307
 
 
10308
                        case 2:
 
10309
                                if (r->info2) {
 
10310
                                        _mem_save_info2_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
10311
                                        NDR_PULL_SET_MEM_CTX(ndr, r->info2, 0);
 
10312
                                        NDR_CHECK(ndr_pull_spoolss_AddDriverInfo2(ndr, NDR_SCALARS|NDR_BUFFERS, r->info2));
 
10313
                                        NDR_PULL_SET_MEM_CTX(ndr, _mem_save_info2_0, 0);
 
10314
                                }
 
10315
                        break;
 
10316
 
 
10317
                        case 3:
 
10318
                                if (r->info3) {
 
10319
                                        _mem_save_info3_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
10320
                                        NDR_PULL_SET_MEM_CTX(ndr, r->info3, 0);
 
10321
                                        NDR_CHECK(ndr_pull_spoolss_AddDriverInfo3(ndr, NDR_SCALARS|NDR_BUFFERS, r->info3));
 
10322
                                        NDR_PULL_SET_MEM_CTX(ndr, _mem_save_info3_0, 0);
 
10323
                                }
 
10324
                        break;
 
10325
 
 
10326
                        case 4:
 
10327
                                if (r->info4) {
 
10328
                                        _mem_save_info4_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
10329
                                        NDR_PULL_SET_MEM_CTX(ndr, r->info4, 0);
 
10330
                                        NDR_CHECK(ndr_pull_spoolss_AddDriverInfo4(ndr, NDR_SCALARS|NDR_BUFFERS, r->info4));
 
10331
                                        NDR_PULL_SET_MEM_CTX(ndr, _mem_save_info4_0, 0);
 
10332
                                }
 
10333
                        break;
 
10334
 
 
10335
                        case 6:
 
10336
                                if (r->info6) {
 
10337
                                        _mem_save_info6_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
10338
                                        NDR_PULL_SET_MEM_CTX(ndr, r->info6, 0);
 
10339
                                        NDR_CHECK(ndr_pull_spoolss_AddDriverInfo6(ndr, NDR_SCALARS|NDR_BUFFERS, r->info6));
 
10340
                                        NDR_PULL_SET_MEM_CTX(ndr, _mem_save_info6_0, 0);
 
10341
                                }
 
10342
                        break;
 
10343
 
 
10344
                        case 8:
 
10345
                                if (r->info8) {
 
10346
                                        _mem_save_info8_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
10347
                                        NDR_PULL_SET_MEM_CTX(ndr, r->info8, 0);
 
10348
                                        NDR_CHECK(ndr_pull_spoolss_AddDriverInfo8(ndr, NDR_SCALARS|NDR_BUFFERS, r->info8));
 
10349
                                        NDR_PULL_SET_MEM_CTX(ndr, _mem_save_info8_0, 0);
 
10350
                                }
 
10351
                        break;
 
10352
 
 
10353
                        default:
 
10354
                                return ndr_pull_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u at %s", level, __location__);
 
10355
                }
 
10356
        }
 
10357
        return NDR_ERR_SUCCESS;
 
10358
}
 
10359
 
 
10360
_PUBLIC_ void ndr_print_spoolss_AddDriverInfo(struct ndr_print *ndr, const char *name, const union spoolss_AddDriverInfo *r)
 
10361
{
 
10362
        int level;
 
10363
        level = ndr_print_get_switch_value(ndr, r);
 
10364
        ndr_print_union(ndr, name, level, "spoolss_AddDriverInfo");
 
10365
        switch (level) {
 
10366
                case 1:
 
10367
                        ndr_print_ptr(ndr, "info1", r->info1);
 
10368
                        ndr->depth++;
 
10369
                        if (r->info1) {
 
10370
                                ndr_print_spoolss_AddDriverInfo1(ndr, "info1", r->info1);
 
10371
                        }
 
10372
                        ndr->depth--;
 
10373
                break;
 
10374
 
 
10375
                case 2:
 
10376
                        ndr_print_ptr(ndr, "info2", r->info2);
 
10377
                        ndr->depth++;
 
10378
                        if (r->info2) {
 
10379
                                ndr_print_spoolss_AddDriverInfo2(ndr, "info2", r->info2);
 
10380
                        }
 
10381
                        ndr->depth--;
 
10382
                break;
 
10383
 
 
10384
                case 3:
 
10385
                        ndr_print_ptr(ndr, "info3", r->info3);
 
10386
                        ndr->depth++;
 
10387
                        if (r->info3) {
 
10388
                                ndr_print_spoolss_AddDriverInfo3(ndr, "info3", r->info3);
 
10389
                        }
 
10390
                        ndr->depth--;
 
10391
                break;
 
10392
 
 
10393
                case 4:
 
10394
                        ndr_print_ptr(ndr, "info4", r->info4);
 
10395
                        ndr->depth++;
 
10396
                        if (r->info4) {
 
10397
                                ndr_print_spoolss_AddDriverInfo4(ndr, "info4", r->info4);
 
10398
                        }
 
10399
                        ndr->depth--;
 
10400
                break;
 
10401
 
 
10402
                case 6:
 
10403
                        ndr_print_ptr(ndr, "info6", r->info6);
 
10404
                        ndr->depth++;
 
10405
                        if (r->info6) {
 
10406
                                ndr_print_spoolss_AddDriverInfo6(ndr, "info6", r->info6);
 
10407
                        }
 
10408
                        ndr->depth--;
 
10409
                break;
 
10410
 
 
10411
                case 8:
 
10412
                        ndr_print_ptr(ndr, "info8", r->info8);
 
10413
                        ndr->depth++;
 
10414
                        if (r->info8) {
 
10415
                                ndr_print_spoolss_AddDriverInfo8(ndr, "info8", r->info8);
 
10416
                        }
 
10417
                        ndr->depth--;
 
10418
                break;
 
10419
 
 
10420
                default:
 
10421
                        ndr_print_bad_level(ndr, name, level);
 
10422
        }
 
10423
}
 
10424
 
 
10425
static enum ndr_err_code ndr_push_spoolss_AddDriverInfoCtr(struct ndr_push *ndr, int ndr_flags, const struct spoolss_AddDriverInfoCtr *r)
 
10426
{
 
10427
        if (ndr_flags & NDR_SCALARS) {
 
10428
                NDR_CHECK(ndr_push_align(ndr, 5));
 
10429
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->level));
 
10430
                NDR_CHECK(ndr_push_set_switch_value(ndr, &r->info, r->level));
 
10431
                NDR_CHECK(ndr_push_spoolss_AddDriverInfo(ndr, NDR_SCALARS, &r->info));
 
10432
                NDR_CHECK(ndr_push_trailer_align(ndr, 5));
 
10433
        }
 
10434
        if (ndr_flags & NDR_BUFFERS) {
 
10435
                NDR_CHECK(ndr_push_spoolss_AddDriverInfo(ndr, NDR_BUFFERS, &r->info));
 
10436
        }
 
10437
        return NDR_ERR_SUCCESS;
 
10438
}
 
10439
 
 
10440
static enum ndr_err_code ndr_pull_spoolss_AddDriverInfoCtr(struct ndr_pull *ndr, int ndr_flags, struct spoolss_AddDriverInfoCtr *r)
 
10441
{
 
10442
        if (ndr_flags & NDR_SCALARS) {
 
10443
                NDR_CHECK(ndr_pull_align(ndr, 5));
 
10444
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->level));
 
10445
                NDR_CHECK(ndr_pull_set_switch_value(ndr, &r->info, r->level));
 
10446
                NDR_CHECK(ndr_pull_spoolss_AddDriverInfo(ndr, NDR_SCALARS, &r->info));
 
10447
                NDR_CHECK(ndr_pull_trailer_align(ndr, 5));
 
10448
        }
 
10449
        if (ndr_flags & NDR_BUFFERS) {
 
10450
                NDR_CHECK(ndr_pull_spoolss_AddDriverInfo(ndr, NDR_BUFFERS, &r->info));
 
10451
        }
 
10452
        return NDR_ERR_SUCCESS;
 
10453
}
 
10454
 
 
10455
_PUBLIC_ void ndr_print_spoolss_AddDriverInfoCtr(struct ndr_print *ndr, const char *name, const struct spoolss_AddDriverInfoCtr *r)
 
10456
{
 
10457
        ndr_print_struct(ndr, name, "spoolss_AddDriverInfoCtr");
 
10458
        ndr->depth++;
 
10459
        ndr_print_uint32(ndr, "level", r->level);
 
10460
        ndr_print_set_switch_value(ndr, &r->info, r->level);
 
10461
        ndr_print_spoolss_AddDriverInfo(ndr, "info", &r->info);
 
10462
        ndr->depth--;
 
10463
}
 
10464
 
 
10465
_PUBLIC_ enum ndr_err_code ndr_push_spoolss_DriverInfo1(struct ndr_push *ndr, int ndr_flags, const struct spoolss_DriverInfo1 *r)
 
10466
{
 
10467
        if (ndr_flags & NDR_SCALARS) {
 
10468
                NDR_CHECK(ndr_push_align(ndr, 5));
 
10469
                {
 
10470
                        uint32_t _flags_save_string = ndr->flags;
 
10471
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
10472
                        NDR_CHECK(ndr_push_relative_ptr1(ndr, r->driver_name));
 
10473
                        ndr->flags = _flags_save_string;
 
10474
                }
 
10475
                NDR_CHECK(ndr_push_trailer_align(ndr, 5));
 
10476
        }
 
10477
        if (ndr_flags & NDR_BUFFERS) {
 
10478
                {
 
10479
                        uint32_t _flags_save_string = ndr->flags;
 
10480
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
10481
                        if (r->driver_name) {
 
10482
                                NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->driver_name));
 
10483
                                NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->driver_name));
 
10484
                                NDR_CHECK(ndr_push_relative_ptr2_end(ndr, r->driver_name));
 
10485
                        }
 
10486
                        ndr->flags = _flags_save_string;
 
10487
                }
 
10488
        }
 
10489
        return NDR_ERR_SUCCESS;
 
10490
}
 
10491
 
 
10492
_PUBLIC_ enum ndr_err_code ndr_pull_spoolss_DriverInfo1(struct ndr_pull *ndr, int ndr_flags, struct spoolss_DriverInfo1 *r)
 
10493
{
 
10494
        uint32_t _ptr_driver_name;
 
10495
        TALLOC_CTX *_mem_save_driver_name_0;
 
10496
        if (ndr_flags & NDR_SCALARS) {
 
10497
                NDR_CHECK(ndr_pull_align(ndr, 5));
 
10498
                {
 
10499
                        uint32_t _flags_save_string = ndr->flags;
 
10500
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
10501
                        NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_driver_name));
 
10502
                        if (_ptr_driver_name) {
 
10503
                                NDR_PULL_ALLOC(ndr, r->driver_name);
 
10504
                                NDR_CHECK(ndr_pull_relative_ptr1(ndr, r->driver_name, _ptr_driver_name));
 
10505
                        } else {
 
10506
                                r->driver_name = NULL;
 
10507
                        }
 
10508
                        ndr->flags = _flags_save_string;
 
10509
                }
 
10510
                NDR_CHECK(ndr_pull_trailer_align(ndr, 5));
 
10511
        }
 
10512
        if (ndr_flags & NDR_BUFFERS) {
 
10513
                {
 
10514
                        uint32_t _flags_save_string = ndr->flags;
 
10515
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
10516
                        if (r->driver_name) {
 
10517
                                uint32_t _relative_save_offset;
 
10518
                                _relative_save_offset = ndr->offset;
 
10519
                                NDR_CHECK(ndr_pull_relative_ptr2(ndr, r->driver_name));
 
10520
                                _mem_save_driver_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
10521
                                NDR_PULL_SET_MEM_CTX(ndr, r->driver_name, 0);
 
10522
                                NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->driver_name));
 
10523
                                NDR_PULL_SET_MEM_CTX(ndr, _mem_save_driver_name_0, 0);
 
10524
                                ndr->offset = _relative_save_offset;
 
10525
                        }
 
10526
                        ndr->flags = _flags_save_string;
 
10527
                }
 
10528
        }
 
10529
        return NDR_ERR_SUCCESS;
 
10530
}
 
10531
 
 
10532
_PUBLIC_ void ndr_print_spoolss_DriverInfo1(struct ndr_print *ndr, const char *name, const struct spoolss_DriverInfo1 *r)
 
10533
{
 
10534
        ndr_print_struct(ndr, name, "spoolss_DriverInfo1");
 
10535
        ndr->depth++;
 
10536
        ndr_print_ptr(ndr, "driver_name", r->driver_name);
 
10537
        ndr->depth++;
 
10538
        if (r->driver_name) {
 
10539
                ndr_print_string(ndr, "driver_name", r->driver_name);
 
10540
        }
 
10541
        ndr->depth--;
 
10542
        ndr->depth--;
 
10543
}
 
10544
 
 
10545
_PUBLIC_ size_t ndr_size_spoolss_DriverInfo1(const struct spoolss_DriverInfo1 *r, struct smb_iconv_convenience *ic, int flags)
 
10546
{
 
10547
        return ndr_size_struct(r, flags, (ndr_push_flags_fn_t)ndr_push_spoolss_DriverInfo1, ic);
 
10548
}
 
10549
 
 
10550
_PUBLIC_ enum ndr_err_code ndr_push_spoolss_DriverInfo2(struct ndr_push *ndr, int ndr_flags, const struct spoolss_DriverInfo2 *r)
 
10551
{
 
10552
        if (ndr_flags & NDR_SCALARS) {
 
10553
                NDR_CHECK(ndr_push_align(ndr, 5));
 
10554
                NDR_CHECK(ndr_push_spoolss_DriverOSVersion(ndr, NDR_SCALARS, r->version));
 
10555
                {
 
10556
                        uint32_t _flags_save_string = ndr->flags;
 
10557
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
10558
                        NDR_CHECK(ndr_push_relative_ptr1(ndr, r->driver_name));
 
10559
                        ndr->flags = _flags_save_string;
 
10560
                }
 
10561
                {
 
10562
                        uint32_t _flags_save_string = ndr->flags;
 
10563
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
10564
                        NDR_CHECK(ndr_push_relative_ptr1(ndr, r->architecture));
 
10565
                        ndr->flags = _flags_save_string;
 
10566
                }
 
10567
                {
 
10568
                        uint32_t _flags_save_string = ndr->flags;
 
10569
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
10570
                        NDR_CHECK(ndr_push_relative_ptr1(ndr, r->driver_path));
 
10571
                        ndr->flags = _flags_save_string;
 
10572
                }
 
10573
                {
 
10574
                        uint32_t _flags_save_string = ndr->flags;
 
10575
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
10576
                        NDR_CHECK(ndr_push_relative_ptr1(ndr, r->data_file));
 
10577
                        ndr->flags = _flags_save_string;
 
10578
                }
 
10579
                {
 
10580
                        uint32_t _flags_save_string = ndr->flags;
 
10581
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
10582
                        NDR_CHECK(ndr_push_relative_ptr1(ndr, r->config_file));
 
10583
                        ndr->flags = _flags_save_string;
 
10584
                }
 
10585
                NDR_CHECK(ndr_push_trailer_align(ndr, 5));
 
10586
        }
 
10587
        if (ndr_flags & NDR_BUFFERS) {
 
10588
                {
 
10589
                        uint32_t _flags_save_string = ndr->flags;
 
10590
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
10591
                        if (r->driver_name) {
 
10592
                                NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->driver_name));
 
10593
                                NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->driver_name));
 
10594
                                NDR_CHECK(ndr_push_relative_ptr2_end(ndr, r->driver_name));
 
10595
                        }
 
10596
                        ndr->flags = _flags_save_string;
 
10597
                }
 
10598
                {
 
10599
                        uint32_t _flags_save_string = ndr->flags;
 
10600
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
10601
                        if (r->architecture) {
 
10602
                                NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->architecture));
 
10603
                                NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->architecture));
 
10604
                                NDR_CHECK(ndr_push_relative_ptr2_end(ndr, r->architecture));
 
10605
                        }
 
10606
                        ndr->flags = _flags_save_string;
 
10607
                }
 
10608
                {
 
10609
                        uint32_t _flags_save_string = ndr->flags;
 
10610
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
10611
                        if (r->driver_path) {
 
10612
                                NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->driver_path));
 
10613
                                NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->driver_path));
 
10614
                                NDR_CHECK(ndr_push_relative_ptr2_end(ndr, r->driver_path));
 
10615
                        }
 
10616
                        ndr->flags = _flags_save_string;
 
10617
                }
 
10618
                {
 
10619
                        uint32_t _flags_save_string = ndr->flags;
 
10620
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
10621
                        if (r->data_file) {
 
10622
                                NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->data_file));
 
10623
                                NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->data_file));
 
10624
                                NDR_CHECK(ndr_push_relative_ptr2_end(ndr, r->data_file));
 
10625
                        }
 
10626
                        ndr->flags = _flags_save_string;
 
10627
                }
 
10628
                {
 
10629
                        uint32_t _flags_save_string = ndr->flags;
 
10630
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
10631
                        if (r->config_file) {
 
10632
                                NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->config_file));
 
10633
                                NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->config_file));
 
10634
                                NDR_CHECK(ndr_push_relative_ptr2_end(ndr, r->config_file));
 
10635
                        }
 
10636
                        ndr->flags = _flags_save_string;
 
10637
                }
 
10638
        }
 
10639
        return NDR_ERR_SUCCESS;
 
10640
}
 
10641
 
 
10642
_PUBLIC_ enum ndr_err_code ndr_pull_spoolss_DriverInfo2(struct ndr_pull *ndr, int ndr_flags, struct spoolss_DriverInfo2 *r)
 
10643
{
 
10644
        uint32_t _ptr_driver_name;
 
10645
        TALLOC_CTX *_mem_save_driver_name_0;
 
10646
        uint32_t _ptr_architecture;
 
10647
        TALLOC_CTX *_mem_save_architecture_0;
 
10648
        uint32_t _ptr_driver_path;
 
10649
        TALLOC_CTX *_mem_save_driver_path_0;
 
10650
        uint32_t _ptr_data_file;
 
10651
        TALLOC_CTX *_mem_save_data_file_0;
 
10652
        uint32_t _ptr_config_file;
 
10653
        TALLOC_CTX *_mem_save_config_file_0;
 
10654
        if (ndr_flags & NDR_SCALARS) {
 
10655
                NDR_CHECK(ndr_pull_align(ndr, 5));
 
10656
                NDR_CHECK(ndr_pull_spoolss_DriverOSVersion(ndr, NDR_SCALARS, &r->version));
 
10657
                {
 
10658
                        uint32_t _flags_save_string = ndr->flags;
 
10659
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
10660
                        NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_driver_name));
 
10661
                        if (_ptr_driver_name) {
 
10662
                                NDR_PULL_ALLOC(ndr, r->driver_name);
 
10663
                                NDR_CHECK(ndr_pull_relative_ptr1(ndr, r->driver_name, _ptr_driver_name));
 
10664
                        } else {
 
10665
                                r->driver_name = NULL;
 
10666
                        }
 
10667
                        ndr->flags = _flags_save_string;
 
10668
                }
 
10669
                {
 
10670
                        uint32_t _flags_save_string = ndr->flags;
 
10671
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
10672
                        NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_architecture));
 
10673
                        if (_ptr_architecture) {
 
10674
                                NDR_PULL_ALLOC(ndr, r->architecture);
 
10675
                                NDR_CHECK(ndr_pull_relative_ptr1(ndr, r->architecture, _ptr_architecture));
 
10676
                        } else {
 
10677
                                r->architecture = NULL;
 
10678
                        }
 
10679
                        ndr->flags = _flags_save_string;
 
10680
                }
 
10681
                {
 
10682
                        uint32_t _flags_save_string = ndr->flags;
 
10683
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
10684
                        NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_driver_path));
 
10685
                        if (_ptr_driver_path) {
 
10686
                                NDR_PULL_ALLOC(ndr, r->driver_path);
 
10687
                                NDR_CHECK(ndr_pull_relative_ptr1(ndr, r->driver_path, _ptr_driver_path));
 
10688
                        } else {
 
10689
                                r->driver_path = NULL;
 
10690
                        }
 
10691
                        ndr->flags = _flags_save_string;
 
10692
                }
 
10693
                {
 
10694
                        uint32_t _flags_save_string = ndr->flags;
 
10695
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
10696
                        NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_data_file));
 
10697
                        if (_ptr_data_file) {
 
10698
                                NDR_PULL_ALLOC(ndr, r->data_file);
 
10699
                                NDR_CHECK(ndr_pull_relative_ptr1(ndr, r->data_file, _ptr_data_file));
 
10700
                        } else {
 
10701
                                r->data_file = NULL;
 
10702
                        }
 
10703
                        ndr->flags = _flags_save_string;
 
10704
                }
 
10705
                {
 
10706
                        uint32_t _flags_save_string = ndr->flags;
 
10707
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
10708
                        NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_config_file));
 
10709
                        if (_ptr_config_file) {
 
10710
                                NDR_PULL_ALLOC(ndr, r->config_file);
 
10711
                                NDR_CHECK(ndr_pull_relative_ptr1(ndr, r->config_file, _ptr_config_file));
 
10712
                        } else {
 
10713
                                r->config_file = NULL;
 
10714
                        }
 
10715
                        ndr->flags = _flags_save_string;
 
10716
                }
 
10717
                NDR_CHECK(ndr_pull_trailer_align(ndr, 5));
 
10718
        }
 
10719
        if (ndr_flags & NDR_BUFFERS) {
 
10720
                {
 
10721
                        uint32_t _flags_save_string = ndr->flags;
 
10722
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
10723
                        if (r->driver_name) {
 
10724
                                uint32_t _relative_save_offset;
 
10725
                                _relative_save_offset = ndr->offset;
 
10726
                                NDR_CHECK(ndr_pull_relative_ptr2(ndr, r->driver_name));
 
10727
                                _mem_save_driver_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
10728
                                NDR_PULL_SET_MEM_CTX(ndr, r->driver_name, 0);
 
10729
                                NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->driver_name));
 
10730
                                NDR_PULL_SET_MEM_CTX(ndr, _mem_save_driver_name_0, 0);
 
10731
                                ndr->offset = _relative_save_offset;
 
10732
                        }
 
10733
                        ndr->flags = _flags_save_string;
 
10734
                }
 
10735
                {
 
10736
                        uint32_t _flags_save_string = ndr->flags;
 
10737
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
10738
                        if (r->architecture) {
 
10739
                                uint32_t _relative_save_offset;
 
10740
                                _relative_save_offset = ndr->offset;
 
10741
                                NDR_CHECK(ndr_pull_relative_ptr2(ndr, r->architecture));
 
10742
                                _mem_save_architecture_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
10743
                                NDR_PULL_SET_MEM_CTX(ndr, r->architecture, 0);
 
10744
                                NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->architecture));
 
10745
                                NDR_PULL_SET_MEM_CTX(ndr, _mem_save_architecture_0, 0);
 
10746
                                ndr->offset = _relative_save_offset;
 
10747
                        }
 
10748
                        ndr->flags = _flags_save_string;
 
10749
                }
 
10750
                {
 
10751
                        uint32_t _flags_save_string = ndr->flags;
 
10752
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
10753
                        if (r->driver_path) {
 
10754
                                uint32_t _relative_save_offset;
 
10755
                                _relative_save_offset = ndr->offset;
 
10756
                                NDR_CHECK(ndr_pull_relative_ptr2(ndr, r->driver_path));
 
10757
                                _mem_save_driver_path_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
10758
                                NDR_PULL_SET_MEM_CTX(ndr, r->driver_path, 0);
 
10759
                                NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->driver_path));
 
10760
                                NDR_PULL_SET_MEM_CTX(ndr, _mem_save_driver_path_0, 0);
 
10761
                                ndr->offset = _relative_save_offset;
 
10762
                        }
 
10763
                        ndr->flags = _flags_save_string;
 
10764
                }
 
10765
                {
 
10766
                        uint32_t _flags_save_string = ndr->flags;
 
10767
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
10768
                        if (r->data_file) {
 
10769
                                uint32_t _relative_save_offset;
 
10770
                                _relative_save_offset = ndr->offset;
 
10771
                                NDR_CHECK(ndr_pull_relative_ptr2(ndr, r->data_file));
 
10772
                                _mem_save_data_file_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
10773
                                NDR_PULL_SET_MEM_CTX(ndr, r->data_file, 0);
 
10774
                                NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->data_file));
 
10775
                                NDR_PULL_SET_MEM_CTX(ndr, _mem_save_data_file_0, 0);
 
10776
                                ndr->offset = _relative_save_offset;
 
10777
                        }
 
10778
                        ndr->flags = _flags_save_string;
 
10779
                }
 
10780
                {
 
10781
                        uint32_t _flags_save_string = ndr->flags;
 
10782
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
10783
                        if (r->config_file) {
 
10784
                                uint32_t _relative_save_offset;
 
10785
                                _relative_save_offset = ndr->offset;
 
10786
                                NDR_CHECK(ndr_pull_relative_ptr2(ndr, r->config_file));
 
10787
                                _mem_save_config_file_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
10788
                                NDR_PULL_SET_MEM_CTX(ndr, r->config_file, 0);
 
10789
                                NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->config_file));
 
10790
                                NDR_PULL_SET_MEM_CTX(ndr, _mem_save_config_file_0, 0);
 
10791
                                ndr->offset = _relative_save_offset;
 
10792
                        }
 
10793
                        ndr->flags = _flags_save_string;
 
10794
                }
 
10795
        }
 
10796
        return NDR_ERR_SUCCESS;
 
10797
}
 
10798
 
 
10799
_PUBLIC_ void ndr_print_spoolss_DriverInfo2(struct ndr_print *ndr, const char *name, const struct spoolss_DriverInfo2 *r)
 
10800
{
 
10801
        ndr_print_struct(ndr, name, "spoolss_DriverInfo2");
 
10802
        ndr->depth++;
 
10803
        ndr_print_spoolss_DriverOSVersion(ndr, "version", r->version);
 
10804
        ndr_print_ptr(ndr, "driver_name", r->driver_name);
 
10805
        ndr->depth++;
 
10806
        if (r->driver_name) {
 
10807
                ndr_print_string(ndr, "driver_name", r->driver_name);
 
10808
        }
 
10809
        ndr->depth--;
 
10810
        ndr_print_ptr(ndr, "architecture", r->architecture);
 
10811
        ndr->depth++;
 
10812
        if (r->architecture) {
 
10813
                ndr_print_string(ndr, "architecture", r->architecture);
 
10814
        }
 
10815
        ndr->depth--;
 
10816
        ndr_print_ptr(ndr, "driver_path", r->driver_path);
 
10817
        ndr->depth++;
 
10818
        if (r->driver_path) {
 
10819
                ndr_print_string(ndr, "driver_path", r->driver_path);
 
10820
        }
 
10821
        ndr->depth--;
 
10822
        ndr_print_ptr(ndr, "data_file", r->data_file);
 
10823
        ndr->depth++;
 
10824
        if (r->data_file) {
 
10825
                ndr_print_string(ndr, "data_file", r->data_file);
 
10826
        }
 
10827
        ndr->depth--;
 
10828
        ndr_print_ptr(ndr, "config_file", r->config_file);
 
10829
        ndr->depth++;
 
10830
        if (r->config_file) {
 
10831
                ndr_print_string(ndr, "config_file", r->config_file);
 
10832
        }
 
10833
        ndr->depth--;
 
10834
        ndr->depth--;
 
10835
}
 
10836
 
 
10837
_PUBLIC_ size_t ndr_size_spoolss_DriverInfo2(const struct spoolss_DriverInfo2 *r, struct smb_iconv_convenience *ic, int flags)
 
10838
{
 
10839
        return ndr_size_struct(r, flags, (ndr_push_flags_fn_t)ndr_push_spoolss_DriverInfo2, ic);
 
10840
}
 
10841
 
 
10842
_PUBLIC_ enum ndr_err_code ndr_push_spoolss_DriverInfo3(struct ndr_push *ndr, int ndr_flags, const struct spoolss_DriverInfo3 *r)
 
10843
{
 
10844
        if (ndr_flags & NDR_SCALARS) {
 
10845
                NDR_CHECK(ndr_push_align(ndr, 5));
 
10846
                NDR_CHECK(ndr_push_spoolss_DriverOSVersion(ndr, NDR_SCALARS, r->version));
 
10847
                {
 
10848
                        uint32_t _flags_save_string = ndr->flags;
 
10849
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
10850
                        NDR_CHECK(ndr_push_relative_ptr1(ndr, r->driver_name));
 
10851
                        ndr->flags = _flags_save_string;
 
10852
                }
 
10853
                {
 
10854
                        uint32_t _flags_save_string = ndr->flags;
 
10855
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
10856
                        NDR_CHECK(ndr_push_relative_ptr1(ndr, r->architecture));
 
10857
                        ndr->flags = _flags_save_string;
 
10858
                }
 
10859
                {
 
10860
                        uint32_t _flags_save_string = ndr->flags;
 
10861
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
10862
                        NDR_CHECK(ndr_push_relative_ptr1(ndr, r->driver_path));
 
10863
                        ndr->flags = _flags_save_string;
 
10864
                }
 
10865
                {
 
10866
                        uint32_t _flags_save_string = ndr->flags;
 
10867
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
10868
                        NDR_CHECK(ndr_push_relative_ptr1(ndr, r->data_file));
 
10869
                        ndr->flags = _flags_save_string;
 
10870
                }
 
10871
                {
 
10872
                        uint32_t _flags_save_string = ndr->flags;
 
10873
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
10874
                        NDR_CHECK(ndr_push_relative_ptr1(ndr, r->config_file));
 
10875
                        ndr->flags = _flags_save_string;
 
10876
                }
 
10877
                {
 
10878
                        uint32_t _flags_save_string = ndr->flags;
 
10879
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
10880
                        NDR_CHECK(ndr_push_relative_ptr1(ndr, r->help_file));
 
10881
                        ndr->flags = _flags_save_string;
 
10882
                }
 
10883
                {
 
10884
                        uint32_t _flags_save_string_array = ndr->flags;
 
10885
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
10886
                        NDR_CHECK(ndr_push_relative_ptr1(ndr, r->dependent_files));
 
10887
                        ndr->flags = _flags_save_string_array;
 
10888
                }
 
10889
                {
 
10890
                        uint32_t _flags_save_string = ndr->flags;
 
10891
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
10892
                        NDR_CHECK(ndr_push_relative_ptr1(ndr, r->monitor_name));
 
10893
                        ndr->flags = _flags_save_string;
 
10894
                }
 
10895
                {
 
10896
                        uint32_t _flags_save_string = ndr->flags;
 
10897
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
10898
                        NDR_CHECK(ndr_push_relative_ptr1(ndr, r->default_datatype));
 
10899
                        ndr->flags = _flags_save_string;
 
10900
                }
 
10901
                NDR_CHECK(ndr_push_trailer_align(ndr, 5));
 
10902
        }
 
10903
        if (ndr_flags & NDR_BUFFERS) {
 
10904
                {
 
10905
                        uint32_t _flags_save_string = ndr->flags;
 
10906
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
10907
                        if (r->driver_name) {
 
10908
                                NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->driver_name));
 
10909
                                NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->driver_name));
 
10910
                                NDR_CHECK(ndr_push_relative_ptr2_end(ndr, r->driver_name));
 
10911
                        }
 
10912
                        ndr->flags = _flags_save_string;
 
10913
                }
 
10914
                {
 
10915
                        uint32_t _flags_save_string = ndr->flags;
 
10916
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
10917
                        if (r->architecture) {
 
10918
                                NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->architecture));
 
10919
                                NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->architecture));
 
10920
                                NDR_CHECK(ndr_push_relative_ptr2_end(ndr, r->architecture));
 
10921
                        }
 
10922
                        ndr->flags = _flags_save_string;
 
10923
                }
 
10924
                {
 
10925
                        uint32_t _flags_save_string = ndr->flags;
 
10926
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
10927
                        if (r->driver_path) {
 
10928
                                NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->driver_path));
 
10929
                                NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->driver_path));
 
10930
                                NDR_CHECK(ndr_push_relative_ptr2_end(ndr, r->driver_path));
 
10931
                        }
 
10932
                        ndr->flags = _flags_save_string;
 
10933
                }
 
10934
                {
 
10935
                        uint32_t _flags_save_string = ndr->flags;
 
10936
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
10937
                        if (r->data_file) {
 
10938
                                NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->data_file));
 
10939
                                NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->data_file));
 
10940
                                NDR_CHECK(ndr_push_relative_ptr2_end(ndr, r->data_file));
 
10941
                        }
 
10942
                        ndr->flags = _flags_save_string;
 
10943
                }
 
10944
                {
 
10945
                        uint32_t _flags_save_string = ndr->flags;
 
10946
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
10947
                        if (r->config_file) {
 
10948
                                NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->config_file));
 
10949
                                NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->config_file));
 
10950
                                NDR_CHECK(ndr_push_relative_ptr2_end(ndr, r->config_file));
 
10951
                        }
 
10952
                        ndr->flags = _flags_save_string;
 
10953
                }
 
10954
                {
 
10955
                        uint32_t _flags_save_string = ndr->flags;
 
10956
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
10957
                        if (r->help_file) {
 
10958
                                NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->help_file));
 
10959
                                NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->help_file));
 
10960
                                NDR_CHECK(ndr_push_relative_ptr2_end(ndr, r->help_file));
 
10961
                        }
 
10962
                        ndr->flags = _flags_save_string;
 
10963
                }
 
10964
                {
 
10965
                        uint32_t _flags_save_string_array = ndr->flags;
 
10966
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
10967
                        if (r->dependent_files) {
 
10968
                                NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->dependent_files));
 
10969
                                NDR_CHECK(ndr_push_string_array(ndr, NDR_SCALARS, r->dependent_files));
 
10970
                                NDR_CHECK(ndr_push_relative_ptr2_end(ndr, r->dependent_files));
 
10971
                        }
 
10972
                        ndr->flags = _flags_save_string_array;
 
10973
                }
 
10974
                {
 
10975
                        uint32_t _flags_save_string = ndr->flags;
 
10976
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
10977
                        if (r->monitor_name) {
 
10978
                                NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->monitor_name));
 
10979
                                NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->monitor_name));
 
10980
                                NDR_CHECK(ndr_push_relative_ptr2_end(ndr, r->monitor_name));
 
10981
                        }
 
10982
                        ndr->flags = _flags_save_string;
 
10983
                }
 
10984
                {
 
10985
                        uint32_t _flags_save_string = ndr->flags;
 
10986
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
10987
                        if (r->default_datatype) {
 
10988
                                NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->default_datatype));
 
10989
                                NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->default_datatype));
 
10990
                                NDR_CHECK(ndr_push_relative_ptr2_end(ndr, r->default_datatype));
 
10991
                        }
 
10992
                        ndr->flags = _flags_save_string;
 
10993
                }
 
10994
        }
 
10995
        return NDR_ERR_SUCCESS;
 
10996
}
 
10997
 
 
10998
_PUBLIC_ enum ndr_err_code ndr_pull_spoolss_DriverInfo3(struct ndr_pull *ndr, int ndr_flags, struct spoolss_DriverInfo3 *r)
 
10999
{
 
11000
        uint32_t _ptr_driver_name;
 
11001
        TALLOC_CTX *_mem_save_driver_name_0;
 
11002
        uint32_t _ptr_architecture;
 
11003
        TALLOC_CTX *_mem_save_architecture_0;
 
11004
        uint32_t _ptr_driver_path;
 
11005
        TALLOC_CTX *_mem_save_driver_path_0;
 
11006
        uint32_t _ptr_data_file;
 
11007
        TALLOC_CTX *_mem_save_data_file_0;
 
11008
        uint32_t _ptr_config_file;
 
11009
        TALLOC_CTX *_mem_save_config_file_0;
 
11010
        uint32_t _ptr_help_file;
 
11011
        TALLOC_CTX *_mem_save_help_file_0;
 
11012
        uint32_t _ptr_dependent_files;
 
11013
        TALLOC_CTX *_mem_save_dependent_files_0;
 
11014
        uint32_t _ptr_monitor_name;
 
11015
        TALLOC_CTX *_mem_save_monitor_name_0;
 
11016
        uint32_t _ptr_default_datatype;
 
11017
        TALLOC_CTX *_mem_save_default_datatype_0;
 
11018
        if (ndr_flags & NDR_SCALARS) {
 
11019
                NDR_CHECK(ndr_pull_align(ndr, 5));
 
11020
                NDR_CHECK(ndr_pull_spoolss_DriverOSVersion(ndr, NDR_SCALARS, &r->version));
 
11021
                {
 
11022
                        uint32_t _flags_save_string = ndr->flags;
 
11023
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
11024
                        NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_driver_name));
 
11025
                        if (_ptr_driver_name) {
 
11026
                                NDR_PULL_ALLOC(ndr, r->driver_name);
 
11027
                                NDR_CHECK(ndr_pull_relative_ptr1(ndr, r->driver_name, _ptr_driver_name));
 
11028
                        } else {
 
11029
                                r->driver_name = NULL;
 
11030
                        }
 
11031
                        ndr->flags = _flags_save_string;
 
11032
                }
 
11033
                {
 
11034
                        uint32_t _flags_save_string = ndr->flags;
 
11035
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
11036
                        NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_architecture));
 
11037
                        if (_ptr_architecture) {
 
11038
                                NDR_PULL_ALLOC(ndr, r->architecture);
 
11039
                                NDR_CHECK(ndr_pull_relative_ptr1(ndr, r->architecture, _ptr_architecture));
 
11040
                        } else {
 
11041
                                r->architecture = NULL;
 
11042
                        }
 
11043
                        ndr->flags = _flags_save_string;
 
11044
                }
 
11045
                {
 
11046
                        uint32_t _flags_save_string = ndr->flags;
 
11047
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
11048
                        NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_driver_path));
 
11049
                        if (_ptr_driver_path) {
 
11050
                                NDR_PULL_ALLOC(ndr, r->driver_path);
 
11051
                                NDR_CHECK(ndr_pull_relative_ptr1(ndr, r->driver_path, _ptr_driver_path));
 
11052
                        } else {
 
11053
                                r->driver_path = NULL;
 
11054
                        }
 
11055
                        ndr->flags = _flags_save_string;
 
11056
                }
 
11057
                {
 
11058
                        uint32_t _flags_save_string = ndr->flags;
 
11059
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
11060
                        NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_data_file));
 
11061
                        if (_ptr_data_file) {
 
11062
                                NDR_PULL_ALLOC(ndr, r->data_file);
 
11063
                                NDR_CHECK(ndr_pull_relative_ptr1(ndr, r->data_file, _ptr_data_file));
 
11064
                        } else {
 
11065
                                r->data_file = NULL;
 
11066
                        }
 
11067
                        ndr->flags = _flags_save_string;
 
11068
                }
 
11069
                {
 
11070
                        uint32_t _flags_save_string = ndr->flags;
 
11071
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
11072
                        NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_config_file));
 
11073
                        if (_ptr_config_file) {
 
11074
                                NDR_PULL_ALLOC(ndr, r->config_file);
 
11075
                                NDR_CHECK(ndr_pull_relative_ptr1(ndr, r->config_file, _ptr_config_file));
 
11076
                        } else {
 
11077
                                r->config_file = NULL;
 
11078
                        }
 
11079
                        ndr->flags = _flags_save_string;
 
11080
                }
 
11081
                {
 
11082
                        uint32_t _flags_save_string = ndr->flags;
 
11083
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
11084
                        NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_help_file));
 
11085
                        if (_ptr_help_file) {
 
11086
                                NDR_PULL_ALLOC(ndr, r->help_file);
 
11087
                                NDR_CHECK(ndr_pull_relative_ptr1(ndr, r->help_file, _ptr_help_file));
 
11088
                        } else {
 
11089
                                r->help_file = NULL;
 
11090
                        }
 
11091
                        ndr->flags = _flags_save_string;
 
11092
                }
 
11093
                {
 
11094
                        uint32_t _flags_save_string_array = ndr->flags;
 
11095
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
11096
                        NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_dependent_files));
 
11097
                        if (_ptr_dependent_files) {
 
11098
                                NDR_PULL_ALLOC(ndr, r->dependent_files);
 
11099
                                NDR_CHECK(ndr_pull_relative_ptr1(ndr, r->dependent_files, _ptr_dependent_files));
 
11100
                        } else {
 
11101
                                r->dependent_files = NULL;
 
11102
                        }
 
11103
                        ndr->flags = _flags_save_string_array;
 
11104
                }
 
11105
                {
 
11106
                        uint32_t _flags_save_string = ndr->flags;
 
11107
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
11108
                        NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_monitor_name));
 
11109
                        if (_ptr_monitor_name) {
 
11110
                                NDR_PULL_ALLOC(ndr, r->monitor_name);
 
11111
                                NDR_CHECK(ndr_pull_relative_ptr1(ndr, r->monitor_name, _ptr_monitor_name));
 
11112
                        } else {
 
11113
                                r->monitor_name = NULL;
 
11114
                        }
 
11115
                        ndr->flags = _flags_save_string;
 
11116
                }
 
11117
                {
 
11118
                        uint32_t _flags_save_string = ndr->flags;
 
11119
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
11120
                        NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_default_datatype));
 
11121
                        if (_ptr_default_datatype) {
 
11122
                                NDR_PULL_ALLOC(ndr, r->default_datatype);
 
11123
                                NDR_CHECK(ndr_pull_relative_ptr1(ndr, r->default_datatype, _ptr_default_datatype));
 
11124
                        } else {
 
11125
                                r->default_datatype = NULL;
 
11126
                        }
 
11127
                        ndr->flags = _flags_save_string;
 
11128
                }
 
11129
                NDR_CHECK(ndr_pull_trailer_align(ndr, 5));
 
11130
        }
 
11131
        if (ndr_flags & NDR_BUFFERS) {
 
11132
                {
 
11133
                        uint32_t _flags_save_string = ndr->flags;
 
11134
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
11135
                        if (r->driver_name) {
 
11136
                                uint32_t _relative_save_offset;
 
11137
                                _relative_save_offset = ndr->offset;
 
11138
                                NDR_CHECK(ndr_pull_relative_ptr2(ndr, r->driver_name));
 
11139
                                _mem_save_driver_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
11140
                                NDR_PULL_SET_MEM_CTX(ndr, r->driver_name, 0);
 
11141
                                NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->driver_name));
 
11142
                                NDR_PULL_SET_MEM_CTX(ndr, _mem_save_driver_name_0, 0);
 
11143
                                ndr->offset = _relative_save_offset;
 
11144
                        }
 
11145
                        ndr->flags = _flags_save_string;
 
11146
                }
 
11147
                {
 
11148
                        uint32_t _flags_save_string = ndr->flags;
 
11149
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
11150
                        if (r->architecture) {
 
11151
                                uint32_t _relative_save_offset;
 
11152
                                _relative_save_offset = ndr->offset;
 
11153
                                NDR_CHECK(ndr_pull_relative_ptr2(ndr, r->architecture));
 
11154
                                _mem_save_architecture_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
11155
                                NDR_PULL_SET_MEM_CTX(ndr, r->architecture, 0);
 
11156
                                NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->architecture));
 
11157
                                NDR_PULL_SET_MEM_CTX(ndr, _mem_save_architecture_0, 0);
 
11158
                                ndr->offset = _relative_save_offset;
 
11159
                        }
 
11160
                        ndr->flags = _flags_save_string;
 
11161
                }
 
11162
                {
 
11163
                        uint32_t _flags_save_string = ndr->flags;
 
11164
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
11165
                        if (r->driver_path) {
 
11166
                                uint32_t _relative_save_offset;
 
11167
                                _relative_save_offset = ndr->offset;
 
11168
                                NDR_CHECK(ndr_pull_relative_ptr2(ndr, r->driver_path));
 
11169
                                _mem_save_driver_path_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
11170
                                NDR_PULL_SET_MEM_CTX(ndr, r->driver_path, 0);
 
11171
                                NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->driver_path));
 
11172
                                NDR_PULL_SET_MEM_CTX(ndr, _mem_save_driver_path_0, 0);
 
11173
                                ndr->offset = _relative_save_offset;
 
11174
                        }
 
11175
                        ndr->flags = _flags_save_string;
 
11176
                }
 
11177
                {
 
11178
                        uint32_t _flags_save_string = ndr->flags;
 
11179
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
11180
                        if (r->data_file) {
 
11181
                                uint32_t _relative_save_offset;
 
11182
                                _relative_save_offset = ndr->offset;
 
11183
                                NDR_CHECK(ndr_pull_relative_ptr2(ndr, r->data_file));
 
11184
                                _mem_save_data_file_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
11185
                                NDR_PULL_SET_MEM_CTX(ndr, r->data_file, 0);
 
11186
                                NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->data_file));
 
11187
                                NDR_PULL_SET_MEM_CTX(ndr, _mem_save_data_file_0, 0);
 
11188
                                ndr->offset = _relative_save_offset;
 
11189
                        }
 
11190
                        ndr->flags = _flags_save_string;
 
11191
                }
 
11192
                {
 
11193
                        uint32_t _flags_save_string = ndr->flags;
 
11194
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
11195
                        if (r->config_file) {
 
11196
                                uint32_t _relative_save_offset;
 
11197
                                _relative_save_offset = ndr->offset;
 
11198
                                NDR_CHECK(ndr_pull_relative_ptr2(ndr, r->config_file));
 
11199
                                _mem_save_config_file_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
11200
                                NDR_PULL_SET_MEM_CTX(ndr, r->config_file, 0);
 
11201
                                NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->config_file));
 
11202
                                NDR_PULL_SET_MEM_CTX(ndr, _mem_save_config_file_0, 0);
 
11203
                                ndr->offset = _relative_save_offset;
 
11204
                        }
 
11205
                        ndr->flags = _flags_save_string;
 
11206
                }
 
11207
                {
 
11208
                        uint32_t _flags_save_string = ndr->flags;
 
11209
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
11210
                        if (r->help_file) {
 
11211
                                uint32_t _relative_save_offset;
 
11212
                                _relative_save_offset = ndr->offset;
 
11213
                                NDR_CHECK(ndr_pull_relative_ptr2(ndr, r->help_file));
 
11214
                                _mem_save_help_file_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
11215
                                NDR_PULL_SET_MEM_CTX(ndr, r->help_file, 0);
 
11216
                                NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->help_file));
 
11217
                                NDR_PULL_SET_MEM_CTX(ndr, _mem_save_help_file_0, 0);
 
11218
                                ndr->offset = _relative_save_offset;
 
11219
                        }
 
11220
                        ndr->flags = _flags_save_string;
 
11221
                }
 
11222
                {
 
11223
                        uint32_t _flags_save_string_array = ndr->flags;
 
11224
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
11225
                        if (r->dependent_files) {
 
11226
                                uint32_t _relative_save_offset;
 
11227
                                _relative_save_offset = ndr->offset;
 
11228
                                NDR_CHECK(ndr_pull_relative_ptr2(ndr, r->dependent_files));
 
11229
                                _mem_save_dependent_files_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
11230
                                NDR_PULL_SET_MEM_CTX(ndr, r->dependent_files, 0);
 
11231
                                NDR_CHECK(ndr_pull_string_array(ndr, NDR_SCALARS, &r->dependent_files));
 
11232
                                NDR_PULL_SET_MEM_CTX(ndr, _mem_save_dependent_files_0, 0);
 
11233
                                ndr->offset = _relative_save_offset;
 
11234
                        }
 
11235
                        ndr->flags = _flags_save_string_array;
 
11236
                }
 
11237
                {
 
11238
                        uint32_t _flags_save_string = ndr->flags;
 
11239
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
11240
                        if (r->monitor_name) {
 
11241
                                uint32_t _relative_save_offset;
 
11242
                                _relative_save_offset = ndr->offset;
 
11243
                                NDR_CHECK(ndr_pull_relative_ptr2(ndr, r->monitor_name));
 
11244
                                _mem_save_monitor_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
11245
                                NDR_PULL_SET_MEM_CTX(ndr, r->monitor_name, 0);
 
11246
                                NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->monitor_name));
 
11247
                                NDR_PULL_SET_MEM_CTX(ndr, _mem_save_monitor_name_0, 0);
 
11248
                                ndr->offset = _relative_save_offset;
 
11249
                        }
 
11250
                        ndr->flags = _flags_save_string;
 
11251
                }
 
11252
                {
 
11253
                        uint32_t _flags_save_string = ndr->flags;
 
11254
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
11255
                        if (r->default_datatype) {
 
11256
                                uint32_t _relative_save_offset;
 
11257
                                _relative_save_offset = ndr->offset;
 
11258
                                NDR_CHECK(ndr_pull_relative_ptr2(ndr, r->default_datatype));
 
11259
                                _mem_save_default_datatype_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
11260
                                NDR_PULL_SET_MEM_CTX(ndr, r->default_datatype, 0);
 
11261
                                NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->default_datatype));
 
11262
                                NDR_PULL_SET_MEM_CTX(ndr, _mem_save_default_datatype_0, 0);
 
11263
                                ndr->offset = _relative_save_offset;
 
11264
                        }
 
11265
                        ndr->flags = _flags_save_string;
 
11266
                }
 
11267
        }
 
11268
        return NDR_ERR_SUCCESS;
 
11269
}
 
11270
 
 
11271
_PUBLIC_ void ndr_print_spoolss_DriverInfo3(struct ndr_print *ndr, const char *name, const struct spoolss_DriverInfo3 *r)
 
11272
{
 
11273
        ndr_print_struct(ndr, name, "spoolss_DriverInfo3");
 
11274
        ndr->depth++;
 
11275
        ndr_print_spoolss_DriverOSVersion(ndr, "version", r->version);
 
11276
        ndr_print_ptr(ndr, "driver_name", r->driver_name);
 
11277
        ndr->depth++;
 
11278
        if (r->driver_name) {
 
11279
                ndr_print_string(ndr, "driver_name", r->driver_name);
 
11280
        }
 
11281
        ndr->depth--;
 
11282
        ndr_print_ptr(ndr, "architecture", r->architecture);
 
11283
        ndr->depth++;
 
11284
        if (r->architecture) {
 
11285
                ndr_print_string(ndr, "architecture", r->architecture);
 
11286
        }
 
11287
        ndr->depth--;
 
11288
        ndr_print_ptr(ndr, "driver_path", r->driver_path);
 
11289
        ndr->depth++;
 
11290
        if (r->driver_path) {
 
11291
                ndr_print_string(ndr, "driver_path", r->driver_path);
 
11292
        }
 
11293
        ndr->depth--;
 
11294
        ndr_print_ptr(ndr, "data_file", r->data_file);
 
11295
        ndr->depth++;
 
11296
        if (r->data_file) {
 
11297
                ndr_print_string(ndr, "data_file", r->data_file);
 
11298
        }
 
11299
        ndr->depth--;
 
11300
        ndr_print_ptr(ndr, "config_file", r->config_file);
 
11301
        ndr->depth++;
 
11302
        if (r->config_file) {
 
11303
                ndr_print_string(ndr, "config_file", r->config_file);
 
11304
        }
 
11305
        ndr->depth--;
 
11306
        ndr_print_ptr(ndr, "help_file", r->help_file);
 
11307
        ndr->depth++;
 
11308
        if (r->help_file) {
 
11309
                ndr_print_string(ndr, "help_file", r->help_file);
 
11310
        }
 
11311
        ndr->depth--;
 
11312
        ndr_print_ptr(ndr, "dependent_files", r->dependent_files);
 
11313
        ndr->depth++;
 
11314
        if (r->dependent_files) {
 
11315
                ndr_print_string_array(ndr, "dependent_files", r->dependent_files);
 
11316
        }
 
11317
        ndr->depth--;
 
11318
        ndr_print_ptr(ndr, "monitor_name", r->monitor_name);
 
11319
        ndr->depth++;
 
11320
        if (r->monitor_name) {
 
11321
                ndr_print_string(ndr, "monitor_name", r->monitor_name);
 
11322
        }
 
11323
        ndr->depth--;
 
11324
        ndr_print_ptr(ndr, "default_datatype", r->default_datatype);
 
11325
        ndr->depth++;
 
11326
        if (r->default_datatype) {
 
11327
                ndr_print_string(ndr, "default_datatype", r->default_datatype);
 
11328
        }
 
11329
        ndr->depth--;
 
11330
        ndr->depth--;
 
11331
}
 
11332
 
 
11333
_PUBLIC_ size_t ndr_size_spoolss_DriverInfo3(const struct spoolss_DriverInfo3 *r, struct smb_iconv_convenience *ic, int flags)
 
11334
{
 
11335
        return ndr_size_struct(r, flags, (ndr_push_flags_fn_t)ndr_push_spoolss_DriverInfo3, ic);
 
11336
}
 
11337
 
 
11338
_PUBLIC_ enum ndr_err_code ndr_push_spoolss_DriverInfo4(struct ndr_push *ndr, int ndr_flags, const struct spoolss_DriverInfo4 *r)
 
11339
{
 
11340
        if (ndr_flags & NDR_SCALARS) {
 
11341
                NDR_CHECK(ndr_push_align(ndr, 5));
 
11342
                NDR_CHECK(ndr_push_spoolss_DriverOSVersion(ndr, NDR_SCALARS, r->version));
 
11343
                {
 
11344
                        uint32_t _flags_save_string = ndr->flags;
 
11345
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
11346
                        NDR_CHECK(ndr_push_relative_ptr1(ndr, r->driver_name));
 
11347
                        ndr->flags = _flags_save_string;
 
11348
                }
 
11349
                {
 
11350
                        uint32_t _flags_save_string = ndr->flags;
 
11351
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
11352
                        NDR_CHECK(ndr_push_relative_ptr1(ndr, r->architecture));
 
11353
                        ndr->flags = _flags_save_string;
 
11354
                }
 
11355
                {
 
11356
                        uint32_t _flags_save_string = ndr->flags;
 
11357
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
11358
                        NDR_CHECK(ndr_push_relative_ptr1(ndr, r->driver_path));
 
11359
                        ndr->flags = _flags_save_string;
 
11360
                }
 
11361
                {
 
11362
                        uint32_t _flags_save_string = ndr->flags;
 
11363
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
11364
                        NDR_CHECK(ndr_push_relative_ptr1(ndr, r->data_file));
 
11365
                        ndr->flags = _flags_save_string;
 
11366
                }
 
11367
                {
 
11368
                        uint32_t _flags_save_string = ndr->flags;
 
11369
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
11370
                        NDR_CHECK(ndr_push_relative_ptr1(ndr, r->config_file));
 
11371
                        ndr->flags = _flags_save_string;
 
11372
                }
 
11373
                {
 
11374
                        uint32_t _flags_save_string = ndr->flags;
 
11375
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
11376
                        NDR_CHECK(ndr_push_relative_ptr1(ndr, r->help_file));
 
11377
                        ndr->flags = _flags_save_string;
 
11378
                }
 
11379
                {
 
11380
                        uint32_t _flags_save_string_array = ndr->flags;
 
11381
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
11382
                        NDR_CHECK(ndr_push_relative_ptr1(ndr, r->dependent_files));
 
11383
                        ndr->flags = _flags_save_string_array;
 
11384
                }
 
11385
                {
 
11386
                        uint32_t _flags_save_string = ndr->flags;
 
11387
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
11388
                        NDR_CHECK(ndr_push_relative_ptr1(ndr, r->monitor_name));
 
11389
                        ndr->flags = _flags_save_string;
 
11390
                }
 
11391
                {
 
11392
                        uint32_t _flags_save_string = ndr->flags;
 
11393
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
11394
                        NDR_CHECK(ndr_push_relative_ptr1(ndr, r->default_datatype));
 
11395
                        ndr->flags = _flags_save_string;
 
11396
                }
 
11397
                {
 
11398
                        uint32_t _flags_save_string_array = ndr->flags;
 
11399
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
11400
                        NDR_CHECK(ndr_push_relative_ptr1(ndr, r->previous_names));
 
11401
                        ndr->flags = _flags_save_string_array;
 
11402
                }
 
11403
                NDR_CHECK(ndr_push_trailer_align(ndr, 5));
 
11404
        }
 
11405
        if (ndr_flags & NDR_BUFFERS) {
 
11406
                {
 
11407
                        uint32_t _flags_save_string = ndr->flags;
 
11408
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
11409
                        if (r->driver_name) {
 
11410
                                NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->driver_name));
 
11411
                                NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->driver_name));
 
11412
                                NDR_CHECK(ndr_push_relative_ptr2_end(ndr, r->driver_name));
 
11413
                        }
 
11414
                        ndr->flags = _flags_save_string;
 
11415
                }
 
11416
                {
 
11417
                        uint32_t _flags_save_string = ndr->flags;
 
11418
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
11419
                        if (r->architecture) {
 
11420
                                NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->architecture));
 
11421
                                NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->architecture));
 
11422
                                NDR_CHECK(ndr_push_relative_ptr2_end(ndr, r->architecture));
 
11423
                        }
 
11424
                        ndr->flags = _flags_save_string;
 
11425
                }
 
11426
                {
 
11427
                        uint32_t _flags_save_string = ndr->flags;
 
11428
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
11429
                        if (r->driver_path) {
 
11430
                                NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->driver_path));
 
11431
                                NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->driver_path));
 
11432
                                NDR_CHECK(ndr_push_relative_ptr2_end(ndr, r->driver_path));
 
11433
                        }
 
11434
                        ndr->flags = _flags_save_string;
 
11435
                }
 
11436
                {
 
11437
                        uint32_t _flags_save_string = ndr->flags;
 
11438
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
11439
                        if (r->data_file) {
 
11440
                                NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->data_file));
 
11441
                                NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->data_file));
 
11442
                                NDR_CHECK(ndr_push_relative_ptr2_end(ndr, r->data_file));
 
11443
                        }
 
11444
                        ndr->flags = _flags_save_string;
 
11445
                }
 
11446
                {
 
11447
                        uint32_t _flags_save_string = ndr->flags;
 
11448
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
11449
                        if (r->config_file) {
 
11450
                                NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->config_file));
 
11451
                                NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->config_file));
 
11452
                                NDR_CHECK(ndr_push_relative_ptr2_end(ndr, r->config_file));
 
11453
                        }
 
11454
                        ndr->flags = _flags_save_string;
 
11455
                }
 
11456
                {
 
11457
                        uint32_t _flags_save_string = ndr->flags;
 
11458
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
11459
                        if (r->help_file) {
 
11460
                                NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->help_file));
 
11461
                                NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->help_file));
 
11462
                                NDR_CHECK(ndr_push_relative_ptr2_end(ndr, r->help_file));
 
11463
                        }
 
11464
                        ndr->flags = _flags_save_string;
 
11465
                }
 
11466
                {
 
11467
                        uint32_t _flags_save_string_array = ndr->flags;
 
11468
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
11469
                        if (r->dependent_files) {
 
11470
                                NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->dependent_files));
 
11471
                                NDR_CHECK(ndr_push_string_array(ndr, NDR_SCALARS, r->dependent_files));
 
11472
                                NDR_CHECK(ndr_push_relative_ptr2_end(ndr, r->dependent_files));
 
11473
                        }
 
11474
                        ndr->flags = _flags_save_string_array;
 
11475
                }
 
11476
                {
 
11477
                        uint32_t _flags_save_string = ndr->flags;
 
11478
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
11479
                        if (r->monitor_name) {
 
11480
                                NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->monitor_name));
 
11481
                                NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->monitor_name));
 
11482
                                NDR_CHECK(ndr_push_relative_ptr2_end(ndr, r->monitor_name));
 
11483
                        }
 
11484
                        ndr->flags = _flags_save_string;
 
11485
                }
 
11486
                {
 
11487
                        uint32_t _flags_save_string = ndr->flags;
 
11488
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
11489
                        if (r->default_datatype) {
 
11490
                                NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->default_datatype));
 
11491
                                NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->default_datatype));
 
11492
                                NDR_CHECK(ndr_push_relative_ptr2_end(ndr, r->default_datatype));
 
11493
                        }
 
11494
                        ndr->flags = _flags_save_string;
 
11495
                }
 
11496
                {
 
11497
                        uint32_t _flags_save_string_array = ndr->flags;
 
11498
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
11499
                        if (r->previous_names) {
 
11500
                                NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->previous_names));
 
11501
                                NDR_CHECK(ndr_push_string_array(ndr, NDR_SCALARS, r->previous_names));
 
11502
                                NDR_CHECK(ndr_push_relative_ptr2_end(ndr, r->previous_names));
 
11503
                        }
 
11504
                        ndr->flags = _flags_save_string_array;
 
11505
                }
 
11506
        }
 
11507
        return NDR_ERR_SUCCESS;
 
11508
}
 
11509
 
 
11510
_PUBLIC_ enum ndr_err_code ndr_pull_spoolss_DriverInfo4(struct ndr_pull *ndr, int ndr_flags, struct spoolss_DriverInfo4 *r)
 
11511
{
 
11512
        uint32_t _ptr_driver_name;
 
11513
        TALLOC_CTX *_mem_save_driver_name_0;
 
11514
        uint32_t _ptr_architecture;
 
11515
        TALLOC_CTX *_mem_save_architecture_0;
 
11516
        uint32_t _ptr_driver_path;
 
11517
        TALLOC_CTX *_mem_save_driver_path_0;
 
11518
        uint32_t _ptr_data_file;
 
11519
        TALLOC_CTX *_mem_save_data_file_0;
 
11520
        uint32_t _ptr_config_file;
 
11521
        TALLOC_CTX *_mem_save_config_file_0;
 
11522
        uint32_t _ptr_help_file;
 
11523
        TALLOC_CTX *_mem_save_help_file_0;
 
11524
        uint32_t _ptr_dependent_files;
 
11525
        TALLOC_CTX *_mem_save_dependent_files_0;
 
11526
        uint32_t _ptr_monitor_name;
 
11527
        TALLOC_CTX *_mem_save_monitor_name_0;
 
11528
        uint32_t _ptr_default_datatype;
 
11529
        TALLOC_CTX *_mem_save_default_datatype_0;
 
11530
        uint32_t _ptr_previous_names;
 
11531
        TALLOC_CTX *_mem_save_previous_names_0;
 
11532
        if (ndr_flags & NDR_SCALARS) {
 
11533
                NDR_CHECK(ndr_pull_align(ndr, 5));
 
11534
                NDR_CHECK(ndr_pull_spoolss_DriverOSVersion(ndr, NDR_SCALARS, &r->version));
 
11535
                {
 
11536
                        uint32_t _flags_save_string = ndr->flags;
 
11537
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
11538
                        NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_driver_name));
 
11539
                        if (_ptr_driver_name) {
 
11540
                                NDR_PULL_ALLOC(ndr, r->driver_name);
 
11541
                                NDR_CHECK(ndr_pull_relative_ptr1(ndr, r->driver_name, _ptr_driver_name));
 
11542
                        } else {
 
11543
                                r->driver_name = NULL;
 
11544
                        }
 
11545
                        ndr->flags = _flags_save_string;
 
11546
                }
 
11547
                {
 
11548
                        uint32_t _flags_save_string = ndr->flags;
 
11549
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
11550
                        NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_architecture));
 
11551
                        if (_ptr_architecture) {
 
11552
                                NDR_PULL_ALLOC(ndr, r->architecture);
 
11553
                                NDR_CHECK(ndr_pull_relative_ptr1(ndr, r->architecture, _ptr_architecture));
 
11554
                        } else {
 
11555
                                r->architecture = NULL;
 
11556
                        }
 
11557
                        ndr->flags = _flags_save_string;
 
11558
                }
 
11559
                {
 
11560
                        uint32_t _flags_save_string = ndr->flags;
 
11561
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
11562
                        NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_driver_path));
 
11563
                        if (_ptr_driver_path) {
 
11564
                                NDR_PULL_ALLOC(ndr, r->driver_path);
 
11565
                                NDR_CHECK(ndr_pull_relative_ptr1(ndr, r->driver_path, _ptr_driver_path));
 
11566
                        } else {
 
11567
                                r->driver_path = NULL;
 
11568
                        }
 
11569
                        ndr->flags = _flags_save_string;
 
11570
                }
 
11571
                {
 
11572
                        uint32_t _flags_save_string = ndr->flags;
 
11573
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
11574
                        NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_data_file));
 
11575
                        if (_ptr_data_file) {
 
11576
                                NDR_PULL_ALLOC(ndr, r->data_file);
 
11577
                                NDR_CHECK(ndr_pull_relative_ptr1(ndr, r->data_file, _ptr_data_file));
 
11578
                        } else {
 
11579
                                r->data_file = NULL;
 
11580
                        }
 
11581
                        ndr->flags = _flags_save_string;
 
11582
                }
 
11583
                {
 
11584
                        uint32_t _flags_save_string = ndr->flags;
 
11585
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
11586
                        NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_config_file));
 
11587
                        if (_ptr_config_file) {
 
11588
                                NDR_PULL_ALLOC(ndr, r->config_file);
 
11589
                                NDR_CHECK(ndr_pull_relative_ptr1(ndr, r->config_file, _ptr_config_file));
 
11590
                        } else {
 
11591
                                r->config_file = NULL;
 
11592
                        }
 
11593
                        ndr->flags = _flags_save_string;
 
11594
                }
 
11595
                {
 
11596
                        uint32_t _flags_save_string = ndr->flags;
 
11597
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
11598
                        NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_help_file));
 
11599
                        if (_ptr_help_file) {
 
11600
                                NDR_PULL_ALLOC(ndr, r->help_file);
 
11601
                                NDR_CHECK(ndr_pull_relative_ptr1(ndr, r->help_file, _ptr_help_file));
 
11602
                        } else {
 
11603
                                r->help_file = NULL;
 
11604
                        }
 
11605
                        ndr->flags = _flags_save_string;
 
11606
                }
 
11607
                {
 
11608
                        uint32_t _flags_save_string_array = ndr->flags;
 
11609
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
11610
                        NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_dependent_files));
 
11611
                        if (_ptr_dependent_files) {
 
11612
                                NDR_PULL_ALLOC(ndr, r->dependent_files);
 
11613
                                NDR_CHECK(ndr_pull_relative_ptr1(ndr, r->dependent_files, _ptr_dependent_files));
 
11614
                        } else {
 
11615
                                r->dependent_files = NULL;
 
11616
                        }
 
11617
                        ndr->flags = _flags_save_string_array;
 
11618
                }
 
11619
                {
 
11620
                        uint32_t _flags_save_string = ndr->flags;
 
11621
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
11622
                        NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_monitor_name));
 
11623
                        if (_ptr_monitor_name) {
 
11624
                                NDR_PULL_ALLOC(ndr, r->monitor_name);
 
11625
                                NDR_CHECK(ndr_pull_relative_ptr1(ndr, r->monitor_name, _ptr_monitor_name));
 
11626
                        } else {
 
11627
                                r->monitor_name = NULL;
 
11628
                        }
 
11629
                        ndr->flags = _flags_save_string;
 
11630
                }
 
11631
                {
 
11632
                        uint32_t _flags_save_string = ndr->flags;
 
11633
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
11634
                        NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_default_datatype));
 
11635
                        if (_ptr_default_datatype) {
 
11636
                                NDR_PULL_ALLOC(ndr, r->default_datatype);
 
11637
                                NDR_CHECK(ndr_pull_relative_ptr1(ndr, r->default_datatype, _ptr_default_datatype));
 
11638
                        } else {
 
11639
                                r->default_datatype = NULL;
 
11640
                        }
 
11641
                        ndr->flags = _flags_save_string;
 
11642
                }
 
11643
                {
 
11644
                        uint32_t _flags_save_string_array = ndr->flags;
 
11645
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
11646
                        NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_previous_names));
 
11647
                        if (_ptr_previous_names) {
 
11648
                                NDR_PULL_ALLOC(ndr, r->previous_names);
 
11649
                                NDR_CHECK(ndr_pull_relative_ptr1(ndr, r->previous_names, _ptr_previous_names));
 
11650
                        } else {
 
11651
                                r->previous_names = NULL;
 
11652
                        }
 
11653
                        ndr->flags = _flags_save_string_array;
 
11654
                }
 
11655
                NDR_CHECK(ndr_pull_trailer_align(ndr, 5));
 
11656
        }
 
11657
        if (ndr_flags & NDR_BUFFERS) {
 
11658
                {
 
11659
                        uint32_t _flags_save_string = ndr->flags;
 
11660
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
11661
                        if (r->driver_name) {
 
11662
                                uint32_t _relative_save_offset;
 
11663
                                _relative_save_offset = ndr->offset;
 
11664
                                NDR_CHECK(ndr_pull_relative_ptr2(ndr, r->driver_name));
 
11665
                                _mem_save_driver_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
11666
                                NDR_PULL_SET_MEM_CTX(ndr, r->driver_name, 0);
 
11667
                                NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->driver_name));
 
11668
                                NDR_PULL_SET_MEM_CTX(ndr, _mem_save_driver_name_0, 0);
 
11669
                                ndr->offset = _relative_save_offset;
 
11670
                        }
 
11671
                        ndr->flags = _flags_save_string;
 
11672
                }
 
11673
                {
 
11674
                        uint32_t _flags_save_string = ndr->flags;
 
11675
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
11676
                        if (r->architecture) {
 
11677
                                uint32_t _relative_save_offset;
 
11678
                                _relative_save_offset = ndr->offset;
 
11679
                                NDR_CHECK(ndr_pull_relative_ptr2(ndr, r->architecture));
 
11680
                                _mem_save_architecture_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
11681
                                NDR_PULL_SET_MEM_CTX(ndr, r->architecture, 0);
 
11682
                                NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->architecture));
 
11683
                                NDR_PULL_SET_MEM_CTX(ndr, _mem_save_architecture_0, 0);
 
11684
                                ndr->offset = _relative_save_offset;
 
11685
                        }
 
11686
                        ndr->flags = _flags_save_string;
 
11687
                }
 
11688
                {
 
11689
                        uint32_t _flags_save_string = ndr->flags;
 
11690
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
11691
                        if (r->driver_path) {
 
11692
                                uint32_t _relative_save_offset;
 
11693
                                _relative_save_offset = ndr->offset;
 
11694
                                NDR_CHECK(ndr_pull_relative_ptr2(ndr, r->driver_path));
 
11695
                                _mem_save_driver_path_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
11696
                                NDR_PULL_SET_MEM_CTX(ndr, r->driver_path, 0);
 
11697
                                NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->driver_path));
 
11698
                                NDR_PULL_SET_MEM_CTX(ndr, _mem_save_driver_path_0, 0);
 
11699
                                ndr->offset = _relative_save_offset;
 
11700
                        }
 
11701
                        ndr->flags = _flags_save_string;
 
11702
                }
 
11703
                {
 
11704
                        uint32_t _flags_save_string = ndr->flags;
 
11705
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
11706
                        if (r->data_file) {
 
11707
                                uint32_t _relative_save_offset;
 
11708
                                _relative_save_offset = ndr->offset;
 
11709
                                NDR_CHECK(ndr_pull_relative_ptr2(ndr, r->data_file));
 
11710
                                _mem_save_data_file_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
11711
                                NDR_PULL_SET_MEM_CTX(ndr, r->data_file, 0);
 
11712
                                NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->data_file));
 
11713
                                NDR_PULL_SET_MEM_CTX(ndr, _mem_save_data_file_0, 0);
 
11714
                                ndr->offset = _relative_save_offset;
 
11715
                        }
 
11716
                        ndr->flags = _flags_save_string;
 
11717
                }
 
11718
                {
 
11719
                        uint32_t _flags_save_string = ndr->flags;
 
11720
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
11721
                        if (r->config_file) {
 
11722
                                uint32_t _relative_save_offset;
 
11723
                                _relative_save_offset = ndr->offset;
 
11724
                                NDR_CHECK(ndr_pull_relative_ptr2(ndr, r->config_file));
 
11725
                                _mem_save_config_file_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
11726
                                NDR_PULL_SET_MEM_CTX(ndr, r->config_file, 0);
 
11727
                                NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->config_file));
 
11728
                                NDR_PULL_SET_MEM_CTX(ndr, _mem_save_config_file_0, 0);
 
11729
                                ndr->offset = _relative_save_offset;
 
11730
                        }
 
11731
                        ndr->flags = _flags_save_string;
 
11732
                }
 
11733
                {
 
11734
                        uint32_t _flags_save_string = ndr->flags;
 
11735
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
11736
                        if (r->help_file) {
 
11737
                                uint32_t _relative_save_offset;
 
11738
                                _relative_save_offset = ndr->offset;
 
11739
                                NDR_CHECK(ndr_pull_relative_ptr2(ndr, r->help_file));
 
11740
                                _mem_save_help_file_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
11741
                                NDR_PULL_SET_MEM_CTX(ndr, r->help_file, 0);
 
11742
                                NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->help_file));
 
11743
                                NDR_PULL_SET_MEM_CTX(ndr, _mem_save_help_file_0, 0);
 
11744
                                ndr->offset = _relative_save_offset;
 
11745
                        }
 
11746
                        ndr->flags = _flags_save_string;
 
11747
                }
 
11748
                {
 
11749
                        uint32_t _flags_save_string_array = ndr->flags;
 
11750
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
11751
                        if (r->dependent_files) {
 
11752
                                uint32_t _relative_save_offset;
 
11753
                                _relative_save_offset = ndr->offset;
 
11754
                                NDR_CHECK(ndr_pull_relative_ptr2(ndr, r->dependent_files));
 
11755
                                _mem_save_dependent_files_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
11756
                                NDR_PULL_SET_MEM_CTX(ndr, r->dependent_files, 0);
 
11757
                                NDR_CHECK(ndr_pull_string_array(ndr, NDR_SCALARS, &r->dependent_files));
 
11758
                                NDR_PULL_SET_MEM_CTX(ndr, _mem_save_dependent_files_0, 0);
 
11759
                                ndr->offset = _relative_save_offset;
 
11760
                        }
 
11761
                        ndr->flags = _flags_save_string_array;
 
11762
                }
 
11763
                {
 
11764
                        uint32_t _flags_save_string = ndr->flags;
 
11765
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
11766
                        if (r->monitor_name) {
 
11767
                                uint32_t _relative_save_offset;
 
11768
                                _relative_save_offset = ndr->offset;
 
11769
                                NDR_CHECK(ndr_pull_relative_ptr2(ndr, r->monitor_name));
 
11770
                                _mem_save_monitor_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
11771
                                NDR_PULL_SET_MEM_CTX(ndr, r->monitor_name, 0);
 
11772
                                NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->monitor_name));
 
11773
                                NDR_PULL_SET_MEM_CTX(ndr, _mem_save_monitor_name_0, 0);
 
11774
                                ndr->offset = _relative_save_offset;
 
11775
                        }
 
11776
                        ndr->flags = _flags_save_string;
 
11777
                }
 
11778
                {
 
11779
                        uint32_t _flags_save_string = ndr->flags;
 
11780
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
11781
                        if (r->default_datatype) {
 
11782
                                uint32_t _relative_save_offset;
 
11783
                                _relative_save_offset = ndr->offset;
 
11784
                                NDR_CHECK(ndr_pull_relative_ptr2(ndr, r->default_datatype));
 
11785
                                _mem_save_default_datatype_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
11786
                                NDR_PULL_SET_MEM_CTX(ndr, r->default_datatype, 0);
 
11787
                                NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->default_datatype));
 
11788
                                NDR_PULL_SET_MEM_CTX(ndr, _mem_save_default_datatype_0, 0);
 
11789
                                ndr->offset = _relative_save_offset;
 
11790
                        }
 
11791
                        ndr->flags = _flags_save_string;
 
11792
                }
 
11793
                {
 
11794
                        uint32_t _flags_save_string_array = ndr->flags;
 
11795
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
11796
                        if (r->previous_names) {
 
11797
                                uint32_t _relative_save_offset;
 
11798
                                _relative_save_offset = ndr->offset;
 
11799
                                NDR_CHECK(ndr_pull_relative_ptr2(ndr, r->previous_names));
 
11800
                                _mem_save_previous_names_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
11801
                                NDR_PULL_SET_MEM_CTX(ndr, r->previous_names, 0);
 
11802
                                NDR_CHECK(ndr_pull_string_array(ndr, NDR_SCALARS, &r->previous_names));
 
11803
                                NDR_PULL_SET_MEM_CTX(ndr, _mem_save_previous_names_0, 0);
 
11804
                                ndr->offset = _relative_save_offset;
 
11805
                        }
 
11806
                        ndr->flags = _flags_save_string_array;
 
11807
                }
 
11808
        }
 
11809
        return NDR_ERR_SUCCESS;
 
11810
}
 
11811
 
 
11812
_PUBLIC_ void ndr_print_spoolss_DriverInfo4(struct ndr_print *ndr, const char *name, const struct spoolss_DriverInfo4 *r)
 
11813
{
 
11814
        ndr_print_struct(ndr, name, "spoolss_DriverInfo4");
 
11815
        ndr->depth++;
 
11816
        ndr_print_spoolss_DriverOSVersion(ndr, "version", r->version);
 
11817
        ndr_print_ptr(ndr, "driver_name", r->driver_name);
 
11818
        ndr->depth++;
 
11819
        if (r->driver_name) {
 
11820
                ndr_print_string(ndr, "driver_name", r->driver_name);
 
11821
        }
 
11822
        ndr->depth--;
 
11823
        ndr_print_ptr(ndr, "architecture", r->architecture);
 
11824
        ndr->depth++;
 
11825
        if (r->architecture) {
 
11826
                ndr_print_string(ndr, "architecture", r->architecture);
 
11827
        }
 
11828
        ndr->depth--;
 
11829
        ndr_print_ptr(ndr, "driver_path", r->driver_path);
 
11830
        ndr->depth++;
 
11831
        if (r->driver_path) {
 
11832
                ndr_print_string(ndr, "driver_path", r->driver_path);
 
11833
        }
 
11834
        ndr->depth--;
 
11835
        ndr_print_ptr(ndr, "data_file", r->data_file);
 
11836
        ndr->depth++;
 
11837
        if (r->data_file) {
 
11838
                ndr_print_string(ndr, "data_file", r->data_file);
 
11839
        }
 
11840
        ndr->depth--;
 
11841
        ndr_print_ptr(ndr, "config_file", r->config_file);
 
11842
        ndr->depth++;
 
11843
        if (r->config_file) {
 
11844
                ndr_print_string(ndr, "config_file", r->config_file);
 
11845
        }
 
11846
        ndr->depth--;
 
11847
        ndr_print_ptr(ndr, "help_file", r->help_file);
 
11848
        ndr->depth++;
 
11849
        if (r->help_file) {
 
11850
                ndr_print_string(ndr, "help_file", r->help_file);
 
11851
        }
 
11852
        ndr->depth--;
 
11853
        ndr_print_ptr(ndr, "dependent_files", r->dependent_files);
 
11854
        ndr->depth++;
 
11855
        if (r->dependent_files) {
 
11856
                ndr_print_string_array(ndr, "dependent_files", r->dependent_files);
 
11857
        }
 
11858
        ndr->depth--;
 
11859
        ndr_print_ptr(ndr, "monitor_name", r->monitor_name);
 
11860
        ndr->depth++;
 
11861
        if (r->monitor_name) {
 
11862
                ndr_print_string(ndr, "monitor_name", r->monitor_name);
 
11863
        }
 
11864
        ndr->depth--;
 
11865
        ndr_print_ptr(ndr, "default_datatype", r->default_datatype);
 
11866
        ndr->depth++;
 
11867
        if (r->default_datatype) {
 
11868
                ndr_print_string(ndr, "default_datatype", r->default_datatype);
 
11869
        }
 
11870
        ndr->depth--;
 
11871
        ndr_print_ptr(ndr, "previous_names", r->previous_names);
 
11872
        ndr->depth++;
 
11873
        if (r->previous_names) {
 
11874
                ndr_print_string_array(ndr, "previous_names", r->previous_names);
 
11875
        }
 
11876
        ndr->depth--;
 
11877
        ndr->depth--;
 
11878
}
 
11879
 
 
11880
_PUBLIC_ size_t ndr_size_spoolss_DriverInfo4(const struct spoolss_DriverInfo4 *r, struct smb_iconv_convenience *ic, int flags)
 
11881
{
 
11882
        return ndr_size_struct(r, flags, (ndr_push_flags_fn_t)ndr_push_spoolss_DriverInfo4, ic);
 
11883
}
 
11884
 
 
11885
_PUBLIC_ enum ndr_err_code ndr_push_spoolss_DriverInfo5(struct ndr_push *ndr, int ndr_flags, const struct spoolss_DriverInfo5 *r)
 
11886
{
 
11887
        if (ndr_flags & NDR_SCALARS) {
 
11888
                NDR_CHECK(ndr_push_align(ndr, 5));
 
11889
                NDR_CHECK(ndr_push_spoolss_DriverOSVersion(ndr, NDR_SCALARS, r->version));
 
11890
                {
 
11891
                        uint32_t _flags_save_string = ndr->flags;
 
11892
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
11893
                        NDR_CHECK(ndr_push_relative_ptr1(ndr, r->driver_name));
 
11894
                        ndr->flags = _flags_save_string;
 
11895
                }
 
11896
                {
 
11897
                        uint32_t _flags_save_string = ndr->flags;
 
11898
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
11899
                        NDR_CHECK(ndr_push_relative_ptr1(ndr, r->architecture));
 
11900
                        ndr->flags = _flags_save_string;
 
11901
                }
 
11902
                {
 
11903
                        uint32_t _flags_save_string = ndr->flags;
 
11904
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
11905
                        NDR_CHECK(ndr_push_relative_ptr1(ndr, r->driver_path));
 
11906
                        ndr->flags = _flags_save_string;
 
11907
                }
 
11908
                {
 
11909
                        uint32_t _flags_save_string = ndr->flags;
 
11910
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
11911
                        NDR_CHECK(ndr_push_relative_ptr1(ndr, r->data_file));
 
11912
                        ndr->flags = _flags_save_string;
 
11913
                }
 
11914
                {
 
11915
                        uint32_t _flags_save_string = ndr->flags;
 
11916
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
11917
                        NDR_CHECK(ndr_push_relative_ptr1(ndr, r->config_file));
 
11918
                        ndr->flags = _flags_save_string;
 
11919
                }
 
11920
                NDR_CHECK(ndr_push_spoolss_DriverAttributes(ndr, NDR_SCALARS, r->driver_attributes));
 
11921
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->config_version));
 
11922
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->driver_version));
 
11923
                NDR_CHECK(ndr_push_trailer_align(ndr, 5));
 
11924
        }
 
11925
        if (ndr_flags & NDR_BUFFERS) {
 
11926
                {
 
11927
                        uint32_t _flags_save_string = ndr->flags;
 
11928
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
11929
                        if (r->driver_name) {
 
11930
                                NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->driver_name));
 
11931
                                NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->driver_name));
 
11932
                                NDR_CHECK(ndr_push_relative_ptr2_end(ndr, r->driver_name));
 
11933
                        }
 
11934
                        ndr->flags = _flags_save_string;
 
11935
                }
 
11936
                {
 
11937
                        uint32_t _flags_save_string = ndr->flags;
 
11938
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
11939
                        if (r->architecture) {
 
11940
                                NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->architecture));
 
11941
                                NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->architecture));
 
11942
                                NDR_CHECK(ndr_push_relative_ptr2_end(ndr, r->architecture));
 
11943
                        }
 
11944
                        ndr->flags = _flags_save_string;
 
11945
                }
 
11946
                {
 
11947
                        uint32_t _flags_save_string = ndr->flags;
 
11948
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
11949
                        if (r->driver_path) {
 
11950
                                NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->driver_path));
 
11951
                                NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->driver_path));
 
11952
                                NDR_CHECK(ndr_push_relative_ptr2_end(ndr, r->driver_path));
 
11953
                        }
 
11954
                        ndr->flags = _flags_save_string;
 
11955
                }
 
11956
                {
 
11957
                        uint32_t _flags_save_string = ndr->flags;
 
11958
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
11959
                        if (r->data_file) {
 
11960
                                NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->data_file));
 
11961
                                NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->data_file));
 
11962
                                NDR_CHECK(ndr_push_relative_ptr2_end(ndr, r->data_file));
 
11963
                        }
 
11964
                        ndr->flags = _flags_save_string;
 
11965
                }
 
11966
                {
 
11967
                        uint32_t _flags_save_string = ndr->flags;
 
11968
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
11969
                        if (r->config_file) {
 
11970
                                NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->config_file));
 
11971
                                NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->config_file));
 
11972
                                NDR_CHECK(ndr_push_relative_ptr2_end(ndr, r->config_file));
 
11973
                        }
 
11974
                        ndr->flags = _flags_save_string;
 
11975
                }
 
11976
        }
 
11977
        return NDR_ERR_SUCCESS;
 
11978
}
 
11979
 
 
11980
_PUBLIC_ enum ndr_err_code ndr_pull_spoolss_DriverInfo5(struct ndr_pull *ndr, int ndr_flags, struct spoolss_DriverInfo5 *r)
 
11981
{
 
11982
        uint32_t _ptr_driver_name;
 
11983
        TALLOC_CTX *_mem_save_driver_name_0;
 
11984
        uint32_t _ptr_architecture;
 
11985
        TALLOC_CTX *_mem_save_architecture_0;
 
11986
        uint32_t _ptr_driver_path;
 
11987
        TALLOC_CTX *_mem_save_driver_path_0;
 
11988
        uint32_t _ptr_data_file;
 
11989
        TALLOC_CTX *_mem_save_data_file_0;
 
11990
        uint32_t _ptr_config_file;
 
11991
        TALLOC_CTX *_mem_save_config_file_0;
 
11992
        if (ndr_flags & NDR_SCALARS) {
 
11993
                NDR_CHECK(ndr_pull_align(ndr, 5));
 
11994
                NDR_CHECK(ndr_pull_spoolss_DriverOSVersion(ndr, NDR_SCALARS, &r->version));
 
11995
                {
 
11996
                        uint32_t _flags_save_string = ndr->flags;
 
11997
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
11998
                        NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_driver_name));
 
11999
                        if (_ptr_driver_name) {
 
12000
                                NDR_PULL_ALLOC(ndr, r->driver_name);
 
12001
                                NDR_CHECK(ndr_pull_relative_ptr1(ndr, r->driver_name, _ptr_driver_name));
 
12002
                        } else {
 
12003
                                r->driver_name = NULL;
 
12004
                        }
 
12005
                        ndr->flags = _flags_save_string;
 
12006
                }
 
12007
                {
 
12008
                        uint32_t _flags_save_string = ndr->flags;
 
12009
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
12010
                        NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_architecture));
 
12011
                        if (_ptr_architecture) {
 
12012
                                NDR_PULL_ALLOC(ndr, r->architecture);
 
12013
                                NDR_CHECK(ndr_pull_relative_ptr1(ndr, r->architecture, _ptr_architecture));
 
12014
                        } else {
 
12015
                                r->architecture = NULL;
 
12016
                        }
 
12017
                        ndr->flags = _flags_save_string;
 
12018
                }
 
12019
                {
 
12020
                        uint32_t _flags_save_string = ndr->flags;
 
12021
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
12022
                        NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_driver_path));
 
12023
                        if (_ptr_driver_path) {
 
12024
                                NDR_PULL_ALLOC(ndr, r->driver_path);
 
12025
                                NDR_CHECK(ndr_pull_relative_ptr1(ndr, r->driver_path, _ptr_driver_path));
 
12026
                        } else {
 
12027
                                r->driver_path = NULL;
 
12028
                        }
 
12029
                        ndr->flags = _flags_save_string;
 
12030
                }
 
12031
                {
 
12032
                        uint32_t _flags_save_string = ndr->flags;
 
12033
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
12034
                        NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_data_file));
 
12035
                        if (_ptr_data_file) {
 
12036
                                NDR_PULL_ALLOC(ndr, r->data_file);
 
12037
                                NDR_CHECK(ndr_pull_relative_ptr1(ndr, r->data_file, _ptr_data_file));
 
12038
                        } else {
 
12039
                                r->data_file = NULL;
 
12040
                        }
 
12041
                        ndr->flags = _flags_save_string;
 
12042
                }
 
12043
                {
 
12044
                        uint32_t _flags_save_string = ndr->flags;
 
12045
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
12046
                        NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_config_file));
 
12047
                        if (_ptr_config_file) {
 
12048
                                NDR_PULL_ALLOC(ndr, r->config_file);
 
12049
                                NDR_CHECK(ndr_pull_relative_ptr1(ndr, r->config_file, _ptr_config_file));
 
12050
                        } else {
 
12051
                                r->config_file = NULL;
 
12052
                        }
 
12053
                        ndr->flags = _flags_save_string;
 
12054
                }
 
12055
                NDR_CHECK(ndr_pull_spoolss_DriverAttributes(ndr, NDR_SCALARS, &r->driver_attributes));
 
12056
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->config_version));
 
12057
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->driver_version));
 
12058
                NDR_CHECK(ndr_pull_trailer_align(ndr, 5));
 
12059
        }
 
12060
        if (ndr_flags & NDR_BUFFERS) {
 
12061
                {
 
12062
                        uint32_t _flags_save_string = ndr->flags;
 
12063
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
12064
                        if (r->driver_name) {
 
12065
                                uint32_t _relative_save_offset;
 
12066
                                _relative_save_offset = ndr->offset;
 
12067
                                NDR_CHECK(ndr_pull_relative_ptr2(ndr, r->driver_name));
 
12068
                                _mem_save_driver_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
12069
                                NDR_PULL_SET_MEM_CTX(ndr, r->driver_name, 0);
 
12070
                                NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->driver_name));
 
12071
                                NDR_PULL_SET_MEM_CTX(ndr, _mem_save_driver_name_0, 0);
 
12072
                                ndr->offset = _relative_save_offset;
 
12073
                        }
 
12074
                        ndr->flags = _flags_save_string;
 
12075
                }
 
12076
                {
 
12077
                        uint32_t _flags_save_string = ndr->flags;
 
12078
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
12079
                        if (r->architecture) {
 
12080
                                uint32_t _relative_save_offset;
 
12081
                                _relative_save_offset = ndr->offset;
 
12082
                                NDR_CHECK(ndr_pull_relative_ptr2(ndr, r->architecture));
 
12083
                                _mem_save_architecture_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
12084
                                NDR_PULL_SET_MEM_CTX(ndr, r->architecture, 0);
 
12085
                                NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->architecture));
 
12086
                                NDR_PULL_SET_MEM_CTX(ndr, _mem_save_architecture_0, 0);
 
12087
                                ndr->offset = _relative_save_offset;
 
12088
                        }
 
12089
                        ndr->flags = _flags_save_string;
 
12090
                }
 
12091
                {
 
12092
                        uint32_t _flags_save_string = ndr->flags;
 
12093
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
12094
                        if (r->driver_path) {
 
12095
                                uint32_t _relative_save_offset;
 
12096
                                _relative_save_offset = ndr->offset;
 
12097
                                NDR_CHECK(ndr_pull_relative_ptr2(ndr, r->driver_path));
 
12098
                                _mem_save_driver_path_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
12099
                                NDR_PULL_SET_MEM_CTX(ndr, r->driver_path, 0);
 
12100
                                NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->driver_path));
 
12101
                                NDR_PULL_SET_MEM_CTX(ndr, _mem_save_driver_path_0, 0);
 
12102
                                ndr->offset = _relative_save_offset;
 
12103
                        }
 
12104
                        ndr->flags = _flags_save_string;
 
12105
                }
 
12106
                {
 
12107
                        uint32_t _flags_save_string = ndr->flags;
 
12108
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
12109
                        if (r->data_file) {
 
12110
                                uint32_t _relative_save_offset;
 
12111
                                _relative_save_offset = ndr->offset;
 
12112
                                NDR_CHECK(ndr_pull_relative_ptr2(ndr, r->data_file));
 
12113
                                _mem_save_data_file_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
12114
                                NDR_PULL_SET_MEM_CTX(ndr, r->data_file, 0);
 
12115
                                NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->data_file));
 
12116
                                NDR_PULL_SET_MEM_CTX(ndr, _mem_save_data_file_0, 0);
 
12117
                                ndr->offset = _relative_save_offset;
 
12118
                        }
 
12119
                        ndr->flags = _flags_save_string;
 
12120
                }
 
12121
                {
 
12122
                        uint32_t _flags_save_string = ndr->flags;
 
12123
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
12124
                        if (r->config_file) {
 
12125
                                uint32_t _relative_save_offset;
 
12126
                                _relative_save_offset = ndr->offset;
 
12127
                                NDR_CHECK(ndr_pull_relative_ptr2(ndr, r->config_file));
 
12128
                                _mem_save_config_file_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
12129
                                NDR_PULL_SET_MEM_CTX(ndr, r->config_file, 0);
 
12130
                                NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->config_file));
 
12131
                                NDR_PULL_SET_MEM_CTX(ndr, _mem_save_config_file_0, 0);
 
12132
                                ndr->offset = _relative_save_offset;
 
12133
                        }
 
12134
                        ndr->flags = _flags_save_string;
 
12135
                }
 
12136
        }
 
12137
        return NDR_ERR_SUCCESS;
 
12138
}
 
12139
 
 
12140
_PUBLIC_ void ndr_print_spoolss_DriverInfo5(struct ndr_print *ndr, const char *name, const struct spoolss_DriverInfo5 *r)
 
12141
{
 
12142
        ndr_print_struct(ndr, name, "spoolss_DriverInfo5");
 
12143
        ndr->depth++;
 
12144
        ndr_print_spoolss_DriverOSVersion(ndr, "version", r->version);
 
12145
        ndr_print_ptr(ndr, "driver_name", r->driver_name);
 
12146
        ndr->depth++;
 
12147
        if (r->driver_name) {
 
12148
                ndr_print_string(ndr, "driver_name", r->driver_name);
 
12149
        }
 
12150
        ndr->depth--;
 
12151
        ndr_print_ptr(ndr, "architecture", r->architecture);
 
12152
        ndr->depth++;
 
12153
        if (r->architecture) {
 
12154
                ndr_print_string(ndr, "architecture", r->architecture);
 
12155
        }
 
12156
        ndr->depth--;
 
12157
        ndr_print_ptr(ndr, "driver_path", r->driver_path);
 
12158
        ndr->depth++;
 
12159
        if (r->driver_path) {
 
12160
                ndr_print_string(ndr, "driver_path", r->driver_path);
 
12161
        }
 
12162
        ndr->depth--;
 
12163
        ndr_print_ptr(ndr, "data_file", r->data_file);
 
12164
        ndr->depth++;
 
12165
        if (r->data_file) {
 
12166
                ndr_print_string(ndr, "data_file", r->data_file);
 
12167
        }
 
12168
        ndr->depth--;
 
12169
        ndr_print_ptr(ndr, "config_file", r->config_file);
 
12170
        ndr->depth++;
 
12171
        if (r->config_file) {
 
12172
                ndr_print_string(ndr, "config_file", r->config_file);
 
12173
        }
 
12174
        ndr->depth--;
 
12175
        ndr_print_spoolss_DriverAttributes(ndr, "driver_attributes", r->driver_attributes);
 
12176
        ndr_print_uint32(ndr, "config_version", r->config_version);
 
12177
        ndr_print_uint32(ndr, "driver_version", r->driver_version);
 
12178
        ndr->depth--;
 
12179
}
 
12180
 
 
12181
_PUBLIC_ size_t ndr_size_spoolss_DriverInfo5(const struct spoolss_DriverInfo5 *r, struct smb_iconv_convenience *ic, int flags)
 
12182
{
 
12183
        return ndr_size_struct(r, flags, (ndr_push_flags_fn_t)ndr_push_spoolss_DriverInfo5, ic);
 
12184
}
 
12185
 
 
12186
_PUBLIC_ enum ndr_err_code ndr_push_spoolss_DriverInfo6(struct ndr_push *ndr, int ndr_flags, const struct spoolss_DriverInfo6 *r)
 
12187
{
 
12188
        if (ndr_flags & NDR_SCALARS) {
 
12189
                NDR_CHECK(ndr_push_align(ndr, 8));
 
12190
                NDR_CHECK(ndr_push_spoolss_DriverOSVersion(ndr, NDR_SCALARS, r->version));
 
12191
                {
 
12192
                        uint32_t _flags_save_string = ndr->flags;
 
12193
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
12194
                        NDR_CHECK(ndr_push_relative_ptr1(ndr, r->driver_name));
 
12195
                        ndr->flags = _flags_save_string;
 
12196
                }
 
12197
                {
 
12198
                        uint32_t _flags_save_string = ndr->flags;
 
12199
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
12200
                        NDR_CHECK(ndr_push_relative_ptr1(ndr, r->architecture));
 
12201
                        ndr->flags = _flags_save_string;
 
12202
                }
 
12203
                {
 
12204
                        uint32_t _flags_save_string = ndr->flags;
 
12205
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
12206
                        NDR_CHECK(ndr_push_relative_ptr1(ndr, r->driver_path));
 
12207
                        ndr->flags = _flags_save_string;
 
12208
                }
 
12209
                {
 
12210
                        uint32_t _flags_save_string = ndr->flags;
 
12211
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
12212
                        NDR_CHECK(ndr_push_relative_ptr1(ndr, r->data_file));
 
12213
                        ndr->flags = _flags_save_string;
 
12214
                }
 
12215
                {
 
12216
                        uint32_t _flags_save_string = ndr->flags;
 
12217
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
12218
                        NDR_CHECK(ndr_push_relative_ptr1(ndr, r->config_file));
 
12219
                        ndr->flags = _flags_save_string;
 
12220
                }
 
12221
                {
 
12222
                        uint32_t _flags_save_string = ndr->flags;
 
12223
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
12224
                        NDR_CHECK(ndr_push_relative_ptr1(ndr, r->help_file));
 
12225
                        ndr->flags = _flags_save_string;
 
12226
                }
 
12227
                {
 
12228
                        uint32_t _flags_save_string_array = ndr->flags;
 
12229
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
12230
                        NDR_CHECK(ndr_push_relative_ptr1(ndr, r->dependent_files));
 
12231
                        ndr->flags = _flags_save_string_array;
 
12232
                }
 
12233
                {
 
12234
                        uint32_t _flags_save_string = ndr->flags;
 
12235
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
12236
                        NDR_CHECK(ndr_push_relative_ptr1(ndr, r->monitor_name));
 
12237
                        ndr->flags = _flags_save_string;
 
12238
                }
 
12239
                {
 
12240
                        uint32_t _flags_save_string = ndr->flags;
 
12241
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
12242
                        NDR_CHECK(ndr_push_relative_ptr1(ndr, r->default_datatype));
 
12243
                        ndr->flags = _flags_save_string;
 
12244
                }
 
12245
                {
 
12246
                        uint32_t _flags_save_string_array = ndr->flags;
 
12247
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
12248
                        NDR_CHECK(ndr_push_relative_ptr1(ndr, r->previous_names));
 
12249
                        ndr->flags = _flags_save_string_array;
 
12250
                }
 
12251
                NDR_CHECK(ndr_push_NTTIME(ndr, NDR_SCALARS, r->driver_date));
 
12252
                NDR_CHECK(ndr_push_hyper(ndr, NDR_SCALARS, r->driver_version));
 
12253
                {
 
12254
                        uint32_t _flags_save_string = ndr->flags;
 
12255
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
12256
                        NDR_CHECK(ndr_push_relative_ptr1(ndr, r->manufacturer_name));
 
12257
                        ndr->flags = _flags_save_string;
 
12258
                }
 
12259
                {
 
12260
                        uint32_t _flags_save_string = ndr->flags;
 
12261
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
12262
                        NDR_CHECK(ndr_push_relative_ptr1(ndr, r->manufacturer_url));
 
12263
                        ndr->flags = _flags_save_string;
 
12264
                }
 
12265
                {
 
12266
                        uint32_t _flags_save_string = ndr->flags;
 
12267
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
12268
                        NDR_CHECK(ndr_push_relative_ptr1(ndr, r->hardware_id));
 
12269
                        ndr->flags = _flags_save_string;
 
12270
                }
 
12271
                {
 
12272
                        uint32_t _flags_save_string = ndr->flags;
 
12273
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
12274
                        NDR_CHECK(ndr_push_relative_ptr1(ndr, r->provider));
 
12275
                        ndr->flags = _flags_save_string;
 
12276
                }
 
12277
                NDR_CHECK(ndr_push_trailer_align(ndr, 8));
 
12278
        }
 
12279
        if (ndr_flags & NDR_BUFFERS) {
 
12280
                {
 
12281
                        uint32_t _flags_save_string = ndr->flags;
 
12282
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
12283
                        if (r->driver_name) {
 
12284
                                NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->driver_name));
 
12285
                                NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->driver_name));
 
12286
                                NDR_CHECK(ndr_push_relative_ptr2_end(ndr, r->driver_name));
 
12287
                        }
 
12288
                        ndr->flags = _flags_save_string;
 
12289
                }
 
12290
                {
 
12291
                        uint32_t _flags_save_string = ndr->flags;
 
12292
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
12293
                        if (r->architecture) {
 
12294
                                NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->architecture));
 
12295
                                NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->architecture));
 
12296
                                NDR_CHECK(ndr_push_relative_ptr2_end(ndr, r->architecture));
 
12297
                        }
 
12298
                        ndr->flags = _flags_save_string;
 
12299
                }
 
12300
                {
 
12301
                        uint32_t _flags_save_string = ndr->flags;
 
12302
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
12303
                        if (r->driver_path) {
 
12304
                                NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->driver_path));
 
12305
                                NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->driver_path));
 
12306
                                NDR_CHECK(ndr_push_relative_ptr2_end(ndr, r->driver_path));
 
12307
                        }
 
12308
                        ndr->flags = _flags_save_string;
 
12309
                }
 
12310
                {
 
12311
                        uint32_t _flags_save_string = ndr->flags;
 
12312
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
12313
                        if (r->data_file) {
 
12314
                                NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->data_file));
 
12315
                                NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->data_file));
 
12316
                                NDR_CHECK(ndr_push_relative_ptr2_end(ndr, r->data_file));
 
12317
                        }
 
12318
                        ndr->flags = _flags_save_string;
 
12319
                }
 
12320
                {
 
12321
                        uint32_t _flags_save_string = ndr->flags;
 
12322
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
12323
                        if (r->config_file) {
 
12324
                                NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->config_file));
 
12325
                                NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->config_file));
 
12326
                                NDR_CHECK(ndr_push_relative_ptr2_end(ndr, r->config_file));
 
12327
                        }
 
12328
                        ndr->flags = _flags_save_string;
 
12329
                }
 
12330
                {
 
12331
                        uint32_t _flags_save_string = ndr->flags;
 
12332
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
12333
                        if (r->help_file) {
 
12334
                                NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->help_file));
 
12335
                                NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->help_file));
 
12336
                                NDR_CHECK(ndr_push_relative_ptr2_end(ndr, r->help_file));
 
12337
                        }
 
12338
                        ndr->flags = _flags_save_string;
 
12339
                }
 
12340
                {
 
12341
                        uint32_t _flags_save_string_array = ndr->flags;
 
12342
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
12343
                        if (r->dependent_files) {
 
12344
                                NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->dependent_files));
 
12345
                                NDR_CHECK(ndr_push_string_array(ndr, NDR_SCALARS, r->dependent_files));
 
12346
                                NDR_CHECK(ndr_push_relative_ptr2_end(ndr, r->dependent_files));
 
12347
                        }
 
12348
                        ndr->flags = _flags_save_string_array;
 
12349
                }
 
12350
                {
 
12351
                        uint32_t _flags_save_string = ndr->flags;
 
12352
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
12353
                        if (r->monitor_name) {
 
12354
                                NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->monitor_name));
 
12355
                                NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->monitor_name));
 
12356
                                NDR_CHECK(ndr_push_relative_ptr2_end(ndr, r->monitor_name));
 
12357
                        }
 
12358
                        ndr->flags = _flags_save_string;
 
12359
                }
 
12360
                {
 
12361
                        uint32_t _flags_save_string = ndr->flags;
 
12362
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
12363
                        if (r->default_datatype) {
 
12364
                                NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->default_datatype));
 
12365
                                NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->default_datatype));
 
12366
                                NDR_CHECK(ndr_push_relative_ptr2_end(ndr, r->default_datatype));
 
12367
                        }
 
12368
                        ndr->flags = _flags_save_string;
 
12369
                }
 
12370
                {
 
12371
                        uint32_t _flags_save_string_array = ndr->flags;
 
12372
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
12373
                        if (r->previous_names) {
 
12374
                                NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->previous_names));
 
12375
                                NDR_CHECK(ndr_push_string_array(ndr, NDR_SCALARS, r->previous_names));
 
12376
                                NDR_CHECK(ndr_push_relative_ptr2_end(ndr, r->previous_names));
 
12377
                        }
 
12378
                        ndr->flags = _flags_save_string_array;
 
12379
                }
 
12380
                {
 
12381
                        uint32_t _flags_save_string = ndr->flags;
 
12382
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
12383
                        if (r->manufacturer_name) {
 
12384
                                NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->manufacturer_name));
 
12385
                                NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->manufacturer_name));
 
12386
                                NDR_CHECK(ndr_push_relative_ptr2_end(ndr, r->manufacturer_name));
 
12387
                        }
 
12388
                        ndr->flags = _flags_save_string;
 
12389
                }
 
12390
                {
 
12391
                        uint32_t _flags_save_string = ndr->flags;
 
12392
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
12393
                        if (r->manufacturer_url) {
 
12394
                                NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->manufacturer_url));
 
12395
                                NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->manufacturer_url));
 
12396
                                NDR_CHECK(ndr_push_relative_ptr2_end(ndr, r->manufacturer_url));
 
12397
                        }
 
12398
                        ndr->flags = _flags_save_string;
 
12399
                }
 
12400
                {
 
12401
                        uint32_t _flags_save_string = ndr->flags;
 
12402
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
12403
                        if (r->hardware_id) {
 
12404
                                NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->hardware_id));
 
12405
                                NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->hardware_id));
 
12406
                                NDR_CHECK(ndr_push_relative_ptr2_end(ndr, r->hardware_id));
 
12407
                        }
 
12408
                        ndr->flags = _flags_save_string;
 
12409
                }
 
12410
                {
 
12411
                        uint32_t _flags_save_string = ndr->flags;
 
12412
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
12413
                        if (r->provider) {
 
12414
                                NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->provider));
 
12415
                                NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->provider));
 
12416
                                NDR_CHECK(ndr_push_relative_ptr2_end(ndr, r->provider));
 
12417
                        }
 
12418
                        ndr->flags = _flags_save_string;
 
12419
                }
 
12420
        }
 
12421
        return NDR_ERR_SUCCESS;
 
12422
}
 
12423
 
 
12424
_PUBLIC_ enum ndr_err_code ndr_pull_spoolss_DriverInfo6(struct ndr_pull *ndr, int ndr_flags, struct spoolss_DriverInfo6 *r)
 
12425
{
 
12426
        uint32_t _ptr_driver_name;
 
12427
        TALLOC_CTX *_mem_save_driver_name_0;
 
12428
        uint32_t _ptr_architecture;
 
12429
        TALLOC_CTX *_mem_save_architecture_0;
 
12430
        uint32_t _ptr_driver_path;
 
12431
        TALLOC_CTX *_mem_save_driver_path_0;
 
12432
        uint32_t _ptr_data_file;
 
12433
        TALLOC_CTX *_mem_save_data_file_0;
 
12434
        uint32_t _ptr_config_file;
 
12435
        TALLOC_CTX *_mem_save_config_file_0;
 
12436
        uint32_t _ptr_help_file;
 
12437
        TALLOC_CTX *_mem_save_help_file_0;
 
12438
        uint32_t _ptr_dependent_files;
 
12439
        TALLOC_CTX *_mem_save_dependent_files_0;
 
12440
        uint32_t _ptr_monitor_name;
 
12441
        TALLOC_CTX *_mem_save_monitor_name_0;
 
12442
        uint32_t _ptr_default_datatype;
 
12443
        TALLOC_CTX *_mem_save_default_datatype_0;
 
12444
        uint32_t _ptr_previous_names;
 
12445
        TALLOC_CTX *_mem_save_previous_names_0;
 
12446
        uint32_t _ptr_manufacturer_name;
 
12447
        TALLOC_CTX *_mem_save_manufacturer_name_0;
 
12448
        uint32_t _ptr_manufacturer_url;
 
12449
        TALLOC_CTX *_mem_save_manufacturer_url_0;
 
12450
        uint32_t _ptr_hardware_id;
 
12451
        TALLOC_CTX *_mem_save_hardware_id_0;
 
12452
        uint32_t _ptr_provider;
 
12453
        TALLOC_CTX *_mem_save_provider_0;
 
12454
        if (ndr_flags & NDR_SCALARS) {
 
12455
                NDR_CHECK(ndr_pull_align(ndr, 8));
 
12456
                NDR_CHECK(ndr_pull_spoolss_DriverOSVersion(ndr, NDR_SCALARS, &r->version));
 
12457
                {
 
12458
                        uint32_t _flags_save_string = ndr->flags;
 
12459
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
12460
                        NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_driver_name));
 
12461
                        if (_ptr_driver_name) {
 
12462
                                NDR_PULL_ALLOC(ndr, r->driver_name);
 
12463
                                NDR_CHECK(ndr_pull_relative_ptr1(ndr, r->driver_name, _ptr_driver_name));
 
12464
                        } else {
 
12465
                                r->driver_name = NULL;
 
12466
                        }
 
12467
                        ndr->flags = _flags_save_string;
 
12468
                }
 
12469
                {
 
12470
                        uint32_t _flags_save_string = ndr->flags;
 
12471
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
12472
                        NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_architecture));
 
12473
                        if (_ptr_architecture) {
 
12474
                                NDR_PULL_ALLOC(ndr, r->architecture);
 
12475
                                NDR_CHECK(ndr_pull_relative_ptr1(ndr, r->architecture, _ptr_architecture));
 
12476
                        } else {
 
12477
                                r->architecture = NULL;
 
12478
                        }
 
12479
                        ndr->flags = _flags_save_string;
 
12480
                }
 
12481
                {
 
12482
                        uint32_t _flags_save_string = ndr->flags;
 
12483
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
12484
                        NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_driver_path));
 
12485
                        if (_ptr_driver_path) {
 
12486
                                NDR_PULL_ALLOC(ndr, r->driver_path);
 
12487
                                NDR_CHECK(ndr_pull_relative_ptr1(ndr, r->driver_path, _ptr_driver_path));
 
12488
                        } else {
 
12489
                                r->driver_path = NULL;
 
12490
                        }
 
12491
                        ndr->flags = _flags_save_string;
 
12492
                }
 
12493
                {
 
12494
                        uint32_t _flags_save_string = ndr->flags;
 
12495
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
12496
                        NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_data_file));
 
12497
                        if (_ptr_data_file) {
 
12498
                                NDR_PULL_ALLOC(ndr, r->data_file);
 
12499
                                NDR_CHECK(ndr_pull_relative_ptr1(ndr, r->data_file, _ptr_data_file));
 
12500
                        } else {
 
12501
                                r->data_file = NULL;
 
12502
                        }
 
12503
                        ndr->flags = _flags_save_string;
 
12504
                }
 
12505
                {
 
12506
                        uint32_t _flags_save_string = ndr->flags;
 
12507
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
12508
                        NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_config_file));
 
12509
                        if (_ptr_config_file) {
 
12510
                                NDR_PULL_ALLOC(ndr, r->config_file);
 
12511
                                NDR_CHECK(ndr_pull_relative_ptr1(ndr, r->config_file, _ptr_config_file));
 
12512
                        } else {
 
12513
                                r->config_file = NULL;
 
12514
                        }
 
12515
                        ndr->flags = _flags_save_string;
 
12516
                }
 
12517
                {
 
12518
                        uint32_t _flags_save_string = ndr->flags;
 
12519
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
12520
                        NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_help_file));
 
12521
                        if (_ptr_help_file) {
 
12522
                                NDR_PULL_ALLOC(ndr, r->help_file);
 
12523
                                NDR_CHECK(ndr_pull_relative_ptr1(ndr, r->help_file, _ptr_help_file));
 
12524
                        } else {
 
12525
                                r->help_file = NULL;
 
12526
                        }
 
12527
                        ndr->flags = _flags_save_string;
 
12528
                }
 
12529
                {
 
12530
                        uint32_t _flags_save_string_array = ndr->flags;
 
12531
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
12532
                        NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_dependent_files));
 
12533
                        if (_ptr_dependent_files) {
 
12534
                                NDR_PULL_ALLOC(ndr, r->dependent_files);
 
12535
                                NDR_CHECK(ndr_pull_relative_ptr1(ndr, r->dependent_files, _ptr_dependent_files));
 
12536
                        } else {
 
12537
                                r->dependent_files = NULL;
 
12538
                        }
 
12539
                        ndr->flags = _flags_save_string_array;
 
12540
                }
 
12541
                {
 
12542
                        uint32_t _flags_save_string = ndr->flags;
 
12543
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
12544
                        NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_monitor_name));
 
12545
                        if (_ptr_monitor_name) {
 
12546
                                NDR_PULL_ALLOC(ndr, r->monitor_name);
 
12547
                                NDR_CHECK(ndr_pull_relative_ptr1(ndr, r->monitor_name, _ptr_monitor_name));
 
12548
                        } else {
 
12549
                                r->monitor_name = NULL;
 
12550
                        }
 
12551
                        ndr->flags = _flags_save_string;
 
12552
                }
 
12553
                {
 
12554
                        uint32_t _flags_save_string = ndr->flags;
 
12555
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
12556
                        NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_default_datatype));
 
12557
                        if (_ptr_default_datatype) {
 
12558
                                NDR_PULL_ALLOC(ndr, r->default_datatype);
 
12559
                                NDR_CHECK(ndr_pull_relative_ptr1(ndr, r->default_datatype, _ptr_default_datatype));
 
12560
                        } else {
 
12561
                                r->default_datatype = NULL;
 
12562
                        }
 
12563
                        ndr->flags = _flags_save_string;
 
12564
                }
 
12565
                {
 
12566
                        uint32_t _flags_save_string_array = ndr->flags;
 
12567
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
12568
                        NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_previous_names));
 
12569
                        if (_ptr_previous_names) {
 
12570
                                NDR_PULL_ALLOC(ndr, r->previous_names);
 
12571
                                NDR_CHECK(ndr_pull_relative_ptr1(ndr, r->previous_names, _ptr_previous_names));
 
12572
                        } else {
 
12573
                                r->previous_names = NULL;
 
12574
                        }
 
12575
                        ndr->flags = _flags_save_string_array;
 
12576
                }
 
12577
                NDR_CHECK(ndr_pull_NTTIME(ndr, NDR_SCALARS, &r->driver_date));
 
12578
                NDR_CHECK(ndr_pull_hyper(ndr, NDR_SCALARS, &r->driver_version));
 
12579
                {
 
12580
                        uint32_t _flags_save_string = ndr->flags;
 
12581
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
12582
                        NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_manufacturer_name));
 
12583
                        if (_ptr_manufacturer_name) {
 
12584
                                NDR_PULL_ALLOC(ndr, r->manufacturer_name);
 
12585
                                NDR_CHECK(ndr_pull_relative_ptr1(ndr, r->manufacturer_name, _ptr_manufacturer_name));
 
12586
                        } else {
 
12587
                                r->manufacturer_name = NULL;
 
12588
                        }
 
12589
                        ndr->flags = _flags_save_string;
 
12590
                }
 
12591
                {
 
12592
                        uint32_t _flags_save_string = ndr->flags;
 
12593
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
12594
                        NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_manufacturer_url));
 
12595
                        if (_ptr_manufacturer_url) {
 
12596
                                NDR_PULL_ALLOC(ndr, r->manufacturer_url);
 
12597
                                NDR_CHECK(ndr_pull_relative_ptr1(ndr, r->manufacturer_url, _ptr_manufacturer_url));
 
12598
                        } else {
 
12599
                                r->manufacturer_url = NULL;
 
12600
                        }
 
12601
                        ndr->flags = _flags_save_string;
 
12602
                }
 
12603
                {
 
12604
                        uint32_t _flags_save_string = ndr->flags;
 
12605
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
12606
                        NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_hardware_id));
 
12607
                        if (_ptr_hardware_id) {
 
12608
                                NDR_PULL_ALLOC(ndr, r->hardware_id);
 
12609
                                NDR_CHECK(ndr_pull_relative_ptr1(ndr, r->hardware_id, _ptr_hardware_id));
 
12610
                        } else {
 
12611
                                r->hardware_id = NULL;
 
12612
                        }
 
12613
                        ndr->flags = _flags_save_string;
 
12614
                }
 
12615
                {
 
12616
                        uint32_t _flags_save_string = ndr->flags;
 
12617
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
12618
                        NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_provider));
 
12619
                        if (_ptr_provider) {
 
12620
                                NDR_PULL_ALLOC(ndr, r->provider);
 
12621
                                NDR_CHECK(ndr_pull_relative_ptr1(ndr, r->provider, _ptr_provider));
 
12622
                        } else {
 
12623
                                r->provider = NULL;
 
12624
                        }
 
12625
                        ndr->flags = _flags_save_string;
 
12626
                }
 
12627
                NDR_CHECK(ndr_pull_trailer_align(ndr, 8));
 
12628
        }
 
12629
        if (ndr_flags & NDR_BUFFERS) {
 
12630
                {
 
12631
                        uint32_t _flags_save_string = ndr->flags;
 
12632
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
12633
                        if (r->driver_name) {
 
12634
                                uint32_t _relative_save_offset;
 
12635
                                _relative_save_offset = ndr->offset;
 
12636
                                NDR_CHECK(ndr_pull_relative_ptr2(ndr, r->driver_name));
 
12637
                                _mem_save_driver_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
12638
                                NDR_PULL_SET_MEM_CTX(ndr, r->driver_name, 0);
 
12639
                                NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->driver_name));
 
12640
                                NDR_PULL_SET_MEM_CTX(ndr, _mem_save_driver_name_0, 0);
 
12641
                                ndr->offset = _relative_save_offset;
 
12642
                        }
 
12643
                        ndr->flags = _flags_save_string;
 
12644
                }
 
12645
                {
 
12646
                        uint32_t _flags_save_string = ndr->flags;
 
12647
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
12648
                        if (r->architecture) {
 
12649
                                uint32_t _relative_save_offset;
 
12650
                                _relative_save_offset = ndr->offset;
 
12651
                                NDR_CHECK(ndr_pull_relative_ptr2(ndr, r->architecture));
 
12652
                                _mem_save_architecture_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
12653
                                NDR_PULL_SET_MEM_CTX(ndr, r->architecture, 0);
 
12654
                                NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->architecture));
 
12655
                                NDR_PULL_SET_MEM_CTX(ndr, _mem_save_architecture_0, 0);
 
12656
                                ndr->offset = _relative_save_offset;
 
12657
                        }
 
12658
                        ndr->flags = _flags_save_string;
 
12659
                }
 
12660
                {
 
12661
                        uint32_t _flags_save_string = ndr->flags;
 
12662
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
12663
                        if (r->driver_path) {
 
12664
                                uint32_t _relative_save_offset;
 
12665
                                _relative_save_offset = ndr->offset;
 
12666
                                NDR_CHECK(ndr_pull_relative_ptr2(ndr, r->driver_path));
 
12667
                                _mem_save_driver_path_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
12668
                                NDR_PULL_SET_MEM_CTX(ndr, r->driver_path, 0);
 
12669
                                NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->driver_path));
 
12670
                                NDR_PULL_SET_MEM_CTX(ndr, _mem_save_driver_path_0, 0);
 
12671
                                ndr->offset = _relative_save_offset;
 
12672
                        }
 
12673
                        ndr->flags = _flags_save_string;
 
12674
                }
 
12675
                {
 
12676
                        uint32_t _flags_save_string = ndr->flags;
 
12677
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
12678
                        if (r->data_file) {
 
12679
                                uint32_t _relative_save_offset;
 
12680
                                _relative_save_offset = ndr->offset;
 
12681
                                NDR_CHECK(ndr_pull_relative_ptr2(ndr, r->data_file));
 
12682
                                _mem_save_data_file_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
12683
                                NDR_PULL_SET_MEM_CTX(ndr, r->data_file, 0);
 
12684
                                NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->data_file));
 
12685
                                NDR_PULL_SET_MEM_CTX(ndr, _mem_save_data_file_0, 0);
 
12686
                                ndr->offset = _relative_save_offset;
 
12687
                        }
 
12688
                        ndr->flags = _flags_save_string;
 
12689
                }
 
12690
                {
 
12691
                        uint32_t _flags_save_string = ndr->flags;
 
12692
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
12693
                        if (r->config_file) {
 
12694
                                uint32_t _relative_save_offset;
 
12695
                                _relative_save_offset = ndr->offset;
 
12696
                                NDR_CHECK(ndr_pull_relative_ptr2(ndr, r->config_file));
 
12697
                                _mem_save_config_file_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
12698
                                NDR_PULL_SET_MEM_CTX(ndr, r->config_file, 0);
 
12699
                                NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->config_file));
 
12700
                                NDR_PULL_SET_MEM_CTX(ndr, _mem_save_config_file_0, 0);
 
12701
                                ndr->offset = _relative_save_offset;
 
12702
                        }
 
12703
                        ndr->flags = _flags_save_string;
 
12704
                }
 
12705
                {
 
12706
                        uint32_t _flags_save_string = ndr->flags;
 
12707
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
12708
                        if (r->help_file) {
 
12709
                                uint32_t _relative_save_offset;
 
12710
                                _relative_save_offset = ndr->offset;
 
12711
                                NDR_CHECK(ndr_pull_relative_ptr2(ndr, r->help_file));
 
12712
                                _mem_save_help_file_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
12713
                                NDR_PULL_SET_MEM_CTX(ndr, r->help_file, 0);
 
12714
                                NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->help_file));
 
12715
                                NDR_PULL_SET_MEM_CTX(ndr, _mem_save_help_file_0, 0);
 
12716
                                ndr->offset = _relative_save_offset;
 
12717
                        }
 
12718
                        ndr->flags = _flags_save_string;
 
12719
                }
 
12720
                {
 
12721
                        uint32_t _flags_save_string_array = ndr->flags;
 
12722
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
12723
                        if (r->dependent_files) {
 
12724
                                uint32_t _relative_save_offset;
 
12725
                                _relative_save_offset = ndr->offset;
 
12726
                                NDR_CHECK(ndr_pull_relative_ptr2(ndr, r->dependent_files));
 
12727
                                _mem_save_dependent_files_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
12728
                                NDR_PULL_SET_MEM_CTX(ndr, r->dependent_files, 0);
 
12729
                                NDR_CHECK(ndr_pull_string_array(ndr, NDR_SCALARS, &r->dependent_files));
 
12730
                                NDR_PULL_SET_MEM_CTX(ndr, _mem_save_dependent_files_0, 0);
 
12731
                                ndr->offset = _relative_save_offset;
 
12732
                        }
 
12733
                        ndr->flags = _flags_save_string_array;
 
12734
                }
 
12735
                {
 
12736
                        uint32_t _flags_save_string = ndr->flags;
 
12737
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
12738
                        if (r->monitor_name) {
 
12739
                                uint32_t _relative_save_offset;
 
12740
                                _relative_save_offset = ndr->offset;
 
12741
                                NDR_CHECK(ndr_pull_relative_ptr2(ndr, r->monitor_name));
 
12742
                                _mem_save_monitor_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
12743
                                NDR_PULL_SET_MEM_CTX(ndr, r->monitor_name, 0);
 
12744
                                NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->monitor_name));
 
12745
                                NDR_PULL_SET_MEM_CTX(ndr, _mem_save_monitor_name_0, 0);
 
12746
                                ndr->offset = _relative_save_offset;
 
12747
                        }
 
12748
                        ndr->flags = _flags_save_string;
 
12749
                }
 
12750
                {
 
12751
                        uint32_t _flags_save_string = ndr->flags;
 
12752
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
12753
                        if (r->default_datatype) {
 
12754
                                uint32_t _relative_save_offset;
 
12755
                                _relative_save_offset = ndr->offset;
 
12756
                                NDR_CHECK(ndr_pull_relative_ptr2(ndr, r->default_datatype));
 
12757
                                _mem_save_default_datatype_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
12758
                                NDR_PULL_SET_MEM_CTX(ndr, r->default_datatype, 0);
 
12759
                                NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->default_datatype));
 
12760
                                NDR_PULL_SET_MEM_CTX(ndr, _mem_save_default_datatype_0, 0);
 
12761
                                ndr->offset = _relative_save_offset;
 
12762
                        }
 
12763
                        ndr->flags = _flags_save_string;
 
12764
                }
 
12765
                {
 
12766
                        uint32_t _flags_save_string_array = ndr->flags;
 
12767
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
12768
                        if (r->previous_names) {
 
12769
                                uint32_t _relative_save_offset;
 
12770
                                _relative_save_offset = ndr->offset;
 
12771
                                NDR_CHECK(ndr_pull_relative_ptr2(ndr, r->previous_names));
 
12772
                                _mem_save_previous_names_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
12773
                                NDR_PULL_SET_MEM_CTX(ndr, r->previous_names, 0);
 
12774
                                NDR_CHECK(ndr_pull_string_array(ndr, NDR_SCALARS, &r->previous_names));
 
12775
                                NDR_PULL_SET_MEM_CTX(ndr, _mem_save_previous_names_0, 0);
 
12776
                                ndr->offset = _relative_save_offset;
 
12777
                        }
 
12778
                        ndr->flags = _flags_save_string_array;
 
12779
                }
 
12780
                {
 
12781
                        uint32_t _flags_save_string = ndr->flags;
 
12782
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
12783
                        if (r->manufacturer_name) {
 
12784
                                uint32_t _relative_save_offset;
 
12785
                                _relative_save_offset = ndr->offset;
 
12786
                                NDR_CHECK(ndr_pull_relative_ptr2(ndr, r->manufacturer_name));
 
12787
                                _mem_save_manufacturer_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
12788
                                NDR_PULL_SET_MEM_CTX(ndr, r->manufacturer_name, 0);
 
12789
                                NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->manufacturer_name));
 
12790
                                NDR_PULL_SET_MEM_CTX(ndr, _mem_save_manufacturer_name_0, 0);
 
12791
                                ndr->offset = _relative_save_offset;
 
12792
                        }
 
12793
                        ndr->flags = _flags_save_string;
 
12794
                }
 
12795
                {
 
12796
                        uint32_t _flags_save_string = ndr->flags;
 
12797
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
12798
                        if (r->manufacturer_url) {
 
12799
                                uint32_t _relative_save_offset;
 
12800
                                _relative_save_offset = ndr->offset;
 
12801
                                NDR_CHECK(ndr_pull_relative_ptr2(ndr, r->manufacturer_url));
 
12802
                                _mem_save_manufacturer_url_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
12803
                                NDR_PULL_SET_MEM_CTX(ndr, r->manufacturer_url, 0);
 
12804
                                NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->manufacturer_url));
 
12805
                                NDR_PULL_SET_MEM_CTX(ndr, _mem_save_manufacturer_url_0, 0);
 
12806
                                ndr->offset = _relative_save_offset;
 
12807
                        }
 
12808
                        ndr->flags = _flags_save_string;
 
12809
                }
 
12810
                {
 
12811
                        uint32_t _flags_save_string = ndr->flags;
 
12812
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
12813
                        if (r->hardware_id) {
 
12814
                                uint32_t _relative_save_offset;
 
12815
                                _relative_save_offset = ndr->offset;
 
12816
                                NDR_CHECK(ndr_pull_relative_ptr2(ndr, r->hardware_id));
 
12817
                                _mem_save_hardware_id_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
12818
                                NDR_PULL_SET_MEM_CTX(ndr, r->hardware_id, 0);
 
12819
                                NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->hardware_id));
 
12820
                                NDR_PULL_SET_MEM_CTX(ndr, _mem_save_hardware_id_0, 0);
 
12821
                                ndr->offset = _relative_save_offset;
 
12822
                        }
 
12823
                        ndr->flags = _flags_save_string;
 
12824
                }
 
12825
                {
 
12826
                        uint32_t _flags_save_string = ndr->flags;
 
12827
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
12828
                        if (r->provider) {
 
12829
                                uint32_t _relative_save_offset;
 
12830
                                _relative_save_offset = ndr->offset;
 
12831
                                NDR_CHECK(ndr_pull_relative_ptr2(ndr, r->provider));
 
12832
                                _mem_save_provider_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
12833
                                NDR_PULL_SET_MEM_CTX(ndr, r->provider, 0);
 
12834
                                NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->provider));
 
12835
                                NDR_PULL_SET_MEM_CTX(ndr, _mem_save_provider_0, 0);
 
12836
                                ndr->offset = _relative_save_offset;
 
12837
                        }
 
12838
                        ndr->flags = _flags_save_string;
 
12839
                }
 
12840
        }
 
12841
        return NDR_ERR_SUCCESS;
 
12842
}
 
12843
 
 
12844
_PUBLIC_ void ndr_print_spoolss_DriverInfo6(struct ndr_print *ndr, const char *name, const struct spoolss_DriverInfo6 *r)
 
12845
{
 
12846
        ndr_print_struct(ndr, name, "spoolss_DriverInfo6");
 
12847
        ndr->depth++;
 
12848
        ndr_print_spoolss_DriverOSVersion(ndr, "version", r->version);
 
12849
        ndr_print_ptr(ndr, "driver_name", r->driver_name);
 
12850
        ndr->depth++;
 
12851
        if (r->driver_name) {
 
12852
                ndr_print_string(ndr, "driver_name", r->driver_name);
 
12853
        }
 
12854
        ndr->depth--;
 
12855
        ndr_print_ptr(ndr, "architecture", r->architecture);
 
12856
        ndr->depth++;
 
12857
        if (r->architecture) {
 
12858
                ndr_print_string(ndr, "architecture", r->architecture);
 
12859
        }
 
12860
        ndr->depth--;
 
12861
        ndr_print_ptr(ndr, "driver_path", r->driver_path);
 
12862
        ndr->depth++;
 
12863
        if (r->driver_path) {
 
12864
                ndr_print_string(ndr, "driver_path", r->driver_path);
 
12865
        }
 
12866
        ndr->depth--;
 
12867
        ndr_print_ptr(ndr, "data_file", r->data_file);
 
12868
        ndr->depth++;
 
12869
        if (r->data_file) {
 
12870
                ndr_print_string(ndr, "data_file", r->data_file);
 
12871
        }
 
12872
        ndr->depth--;
 
12873
        ndr_print_ptr(ndr, "config_file", r->config_file);
 
12874
        ndr->depth++;
 
12875
        if (r->config_file) {
 
12876
                ndr_print_string(ndr, "config_file", r->config_file);
 
12877
        }
 
12878
        ndr->depth--;
 
12879
        ndr_print_ptr(ndr, "help_file", r->help_file);
 
12880
        ndr->depth++;
 
12881
        if (r->help_file) {
 
12882
                ndr_print_string(ndr, "help_file", r->help_file);
 
12883
        }
 
12884
        ndr->depth--;
 
12885
        ndr_print_ptr(ndr, "dependent_files", r->dependent_files);
 
12886
        ndr->depth++;
 
12887
        if (r->dependent_files) {
 
12888
                ndr_print_string_array(ndr, "dependent_files", r->dependent_files);
 
12889
        }
 
12890
        ndr->depth--;
 
12891
        ndr_print_ptr(ndr, "monitor_name", r->monitor_name);
 
12892
        ndr->depth++;
 
12893
        if (r->monitor_name) {
 
12894
                ndr_print_string(ndr, "monitor_name", r->monitor_name);
 
12895
        }
 
12896
        ndr->depth--;
 
12897
        ndr_print_ptr(ndr, "default_datatype", r->default_datatype);
 
12898
        ndr->depth++;
 
12899
        if (r->default_datatype) {
 
12900
                ndr_print_string(ndr, "default_datatype", r->default_datatype);
 
12901
        }
 
12902
        ndr->depth--;
 
12903
        ndr_print_ptr(ndr, "previous_names", r->previous_names);
 
12904
        ndr->depth++;
 
12905
        if (r->previous_names) {
 
12906
                ndr_print_string_array(ndr, "previous_names", r->previous_names);
 
12907
        }
 
12908
        ndr->depth--;
 
12909
        ndr_print_NTTIME(ndr, "driver_date", r->driver_date);
 
12910
        ndr_print_hyper(ndr, "driver_version", r->driver_version);
 
12911
        ndr_print_ptr(ndr, "manufacturer_name", r->manufacturer_name);
 
12912
        ndr->depth++;
 
12913
        if (r->manufacturer_name) {
 
12914
                ndr_print_string(ndr, "manufacturer_name", r->manufacturer_name);
 
12915
        }
 
12916
        ndr->depth--;
 
12917
        ndr_print_ptr(ndr, "manufacturer_url", r->manufacturer_url);
 
12918
        ndr->depth++;
 
12919
        if (r->manufacturer_url) {
 
12920
                ndr_print_string(ndr, "manufacturer_url", r->manufacturer_url);
 
12921
        }
 
12922
        ndr->depth--;
 
12923
        ndr_print_ptr(ndr, "hardware_id", r->hardware_id);
 
12924
        ndr->depth++;
 
12925
        if (r->hardware_id) {
 
12926
                ndr_print_string(ndr, "hardware_id", r->hardware_id);
 
12927
        }
 
12928
        ndr->depth--;
 
12929
        ndr_print_ptr(ndr, "provider", r->provider);
 
12930
        ndr->depth++;
 
12931
        if (r->provider) {
 
12932
                ndr_print_string(ndr, "provider", r->provider);
 
12933
        }
 
12934
        ndr->depth--;
 
12935
        ndr->depth--;
 
12936
}
 
12937
 
 
12938
_PUBLIC_ size_t ndr_size_spoolss_DriverInfo6(const struct spoolss_DriverInfo6 *r, struct smb_iconv_convenience *ic, int flags)
 
12939
{
 
12940
        return ndr_size_struct(r, flags, (ndr_push_flags_fn_t)ndr_push_spoolss_DriverInfo6, ic);
 
12941
}
 
12942
 
 
12943
_PUBLIC_ enum ndr_err_code ndr_push_spoolss_DriverInfo7(struct ndr_push *ndr, int ndr_flags, const struct spoolss_DriverInfo7 *r)
 
12944
{
 
12945
        if (ndr_flags & NDR_SCALARS) {
 
12946
                NDR_CHECK(ndr_push_align(ndr, 5));
 
12947
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->size));
 
12948
                NDR_CHECK(ndr_push_spoolss_DriverOSVersion(ndr, NDR_SCALARS, r->version));
 
12949
                {
 
12950
                        uint32_t _flags_save_string = ndr->flags;
 
12951
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
12952
                        NDR_CHECK(ndr_push_relative_ptr1(ndr, r->driver_name));
 
12953
                        ndr->flags = _flags_save_string;
 
12954
                }
 
12955
                {
 
12956
                        uint32_t _flags_save_string = ndr->flags;
 
12957
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
12958
                        NDR_CHECK(ndr_push_relative_ptr1(ndr, r->inf_name));
 
12959
                        ndr->flags = _flags_save_string;
 
12960
                }
 
12961
                {
 
12962
                        uint32_t _flags_save_string = ndr->flags;
 
12963
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
12964
                        NDR_CHECK(ndr_push_relative_ptr1(ndr, r->install_source_root));
 
12965
                        ndr->flags = _flags_save_string;
 
12966
                }
 
12967
                NDR_CHECK(ndr_push_trailer_align(ndr, 5));
 
12968
        }
 
12969
        if (ndr_flags & NDR_BUFFERS) {
 
12970
                {
 
12971
                        uint32_t _flags_save_string = ndr->flags;
 
12972
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
12973
                        if (r->driver_name) {
 
12974
                                NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->driver_name));
 
12975
                                NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->driver_name));
 
12976
                                NDR_CHECK(ndr_push_relative_ptr2_end(ndr, r->driver_name));
 
12977
                        }
 
12978
                        ndr->flags = _flags_save_string;
 
12979
                }
 
12980
                {
 
12981
                        uint32_t _flags_save_string = ndr->flags;
 
12982
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
12983
                        if (r->inf_name) {
 
12984
                                NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->inf_name));
 
12985
                                NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->inf_name));
 
12986
                                NDR_CHECK(ndr_push_relative_ptr2_end(ndr, r->inf_name));
 
12987
                        }
 
12988
                        ndr->flags = _flags_save_string;
 
12989
                }
 
12990
                {
 
12991
                        uint32_t _flags_save_string = ndr->flags;
 
12992
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
12993
                        if (r->install_source_root) {
 
12994
                                NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->install_source_root));
 
12995
                                NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->install_source_root));
 
12996
                                NDR_CHECK(ndr_push_relative_ptr2_end(ndr, r->install_source_root));
 
12997
                        }
 
12998
                        ndr->flags = _flags_save_string;
 
12999
                }
 
13000
        }
 
13001
        return NDR_ERR_SUCCESS;
 
13002
}
 
13003
 
 
13004
_PUBLIC_ enum ndr_err_code ndr_pull_spoolss_DriverInfo7(struct ndr_pull *ndr, int ndr_flags, struct spoolss_DriverInfo7 *r)
 
13005
{
 
13006
        uint32_t _ptr_driver_name;
 
13007
        TALLOC_CTX *_mem_save_driver_name_0;
 
13008
        uint32_t _ptr_inf_name;
 
13009
        TALLOC_CTX *_mem_save_inf_name_0;
 
13010
        uint32_t _ptr_install_source_root;
 
13011
        TALLOC_CTX *_mem_save_install_source_root_0;
 
13012
        if (ndr_flags & NDR_SCALARS) {
 
13013
                NDR_CHECK(ndr_pull_align(ndr, 5));
 
13014
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->size));
 
13015
                NDR_CHECK(ndr_pull_spoolss_DriverOSVersion(ndr, NDR_SCALARS, &r->version));
 
13016
                {
 
13017
                        uint32_t _flags_save_string = ndr->flags;
 
13018
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
13019
                        NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_driver_name));
 
13020
                        if (_ptr_driver_name) {
 
13021
                                NDR_PULL_ALLOC(ndr, r->driver_name);
 
13022
                                NDR_CHECK(ndr_pull_relative_ptr1(ndr, r->driver_name, _ptr_driver_name));
 
13023
                        } else {
 
13024
                                r->driver_name = NULL;
 
13025
                        }
 
13026
                        ndr->flags = _flags_save_string;
 
13027
                }
 
13028
                {
 
13029
                        uint32_t _flags_save_string = ndr->flags;
 
13030
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
13031
                        NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_inf_name));
 
13032
                        if (_ptr_inf_name) {
 
13033
                                NDR_PULL_ALLOC(ndr, r->inf_name);
 
13034
                                NDR_CHECK(ndr_pull_relative_ptr1(ndr, r->inf_name, _ptr_inf_name));
 
13035
                        } else {
 
13036
                                r->inf_name = NULL;
 
13037
                        }
 
13038
                        ndr->flags = _flags_save_string;
 
13039
                }
 
13040
                {
 
13041
                        uint32_t _flags_save_string = ndr->flags;
 
13042
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
13043
                        NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_install_source_root));
 
13044
                        if (_ptr_install_source_root) {
 
13045
                                NDR_PULL_ALLOC(ndr, r->install_source_root);
 
13046
                                NDR_CHECK(ndr_pull_relative_ptr1(ndr, r->install_source_root, _ptr_install_source_root));
 
13047
                        } else {
 
13048
                                r->install_source_root = NULL;
 
13049
                        }
 
13050
                        ndr->flags = _flags_save_string;
 
13051
                }
 
13052
                NDR_CHECK(ndr_pull_trailer_align(ndr, 5));
 
13053
        }
 
13054
        if (ndr_flags & NDR_BUFFERS) {
 
13055
                {
 
13056
                        uint32_t _flags_save_string = ndr->flags;
 
13057
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
13058
                        if (r->driver_name) {
 
13059
                                uint32_t _relative_save_offset;
 
13060
                                _relative_save_offset = ndr->offset;
 
13061
                                NDR_CHECK(ndr_pull_relative_ptr2(ndr, r->driver_name));
 
13062
                                _mem_save_driver_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
13063
                                NDR_PULL_SET_MEM_CTX(ndr, r->driver_name, 0);
 
13064
                                NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->driver_name));
 
13065
                                NDR_PULL_SET_MEM_CTX(ndr, _mem_save_driver_name_0, 0);
 
13066
                                ndr->offset = _relative_save_offset;
 
13067
                        }
 
13068
                        ndr->flags = _flags_save_string;
 
13069
                }
 
13070
                {
 
13071
                        uint32_t _flags_save_string = ndr->flags;
 
13072
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
13073
                        if (r->inf_name) {
 
13074
                                uint32_t _relative_save_offset;
 
13075
                                _relative_save_offset = ndr->offset;
 
13076
                                NDR_CHECK(ndr_pull_relative_ptr2(ndr, r->inf_name));
 
13077
                                _mem_save_inf_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
13078
                                NDR_PULL_SET_MEM_CTX(ndr, r->inf_name, 0);
 
13079
                                NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->inf_name));
 
13080
                                NDR_PULL_SET_MEM_CTX(ndr, _mem_save_inf_name_0, 0);
 
13081
                                ndr->offset = _relative_save_offset;
 
13082
                        }
 
13083
                        ndr->flags = _flags_save_string;
 
13084
                }
 
13085
                {
 
13086
                        uint32_t _flags_save_string = ndr->flags;
 
13087
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
13088
                        if (r->install_source_root) {
 
13089
                                uint32_t _relative_save_offset;
 
13090
                                _relative_save_offset = ndr->offset;
 
13091
                                NDR_CHECK(ndr_pull_relative_ptr2(ndr, r->install_source_root));
 
13092
                                _mem_save_install_source_root_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
13093
                                NDR_PULL_SET_MEM_CTX(ndr, r->install_source_root, 0);
 
13094
                                NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->install_source_root));
 
13095
                                NDR_PULL_SET_MEM_CTX(ndr, _mem_save_install_source_root_0, 0);
 
13096
                                ndr->offset = _relative_save_offset;
 
13097
                        }
 
13098
                        ndr->flags = _flags_save_string;
 
13099
                }
 
13100
        }
 
13101
        return NDR_ERR_SUCCESS;
 
13102
}
 
13103
 
 
13104
_PUBLIC_ void ndr_print_spoolss_DriverInfo7(struct ndr_print *ndr, const char *name, const struct spoolss_DriverInfo7 *r)
 
13105
{
 
13106
        ndr_print_struct(ndr, name, "spoolss_DriverInfo7");
 
13107
        ndr->depth++;
 
13108
        ndr_print_uint32(ndr, "size", r->size);
 
13109
        ndr_print_spoolss_DriverOSVersion(ndr, "version", r->version);
 
13110
        ndr_print_ptr(ndr, "driver_name", r->driver_name);
 
13111
        ndr->depth++;
 
13112
        if (r->driver_name) {
 
13113
                ndr_print_string(ndr, "driver_name", r->driver_name);
 
13114
        }
 
13115
        ndr->depth--;
 
13116
        ndr_print_ptr(ndr, "inf_name", r->inf_name);
 
13117
        ndr->depth++;
 
13118
        if (r->inf_name) {
 
13119
                ndr_print_string(ndr, "inf_name", r->inf_name);
 
13120
        }
 
13121
        ndr->depth--;
 
13122
        ndr_print_ptr(ndr, "install_source_root", r->install_source_root);
 
13123
        ndr->depth++;
 
13124
        if (r->install_source_root) {
 
13125
                ndr_print_string(ndr, "install_source_root", r->install_source_root);
 
13126
        }
 
13127
        ndr->depth--;
 
13128
        ndr->depth--;
 
13129
}
 
13130
 
 
13131
_PUBLIC_ size_t ndr_size_spoolss_DriverInfo7(const struct spoolss_DriverInfo7 *r, struct smb_iconv_convenience *ic, int flags)
 
13132
{
 
13133
        return ndr_size_struct(r, flags, (ndr_push_flags_fn_t)ndr_push_spoolss_DriverInfo7, ic);
 
13134
}
 
13135
 
 
13136
_PUBLIC_ enum ndr_err_code ndr_push_spoolss_DriverInfo8(struct ndr_push *ndr, int ndr_flags, const struct spoolss_DriverInfo8 *r)
 
13137
{
 
13138
        if (ndr_flags & NDR_SCALARS) {
 
13139
                NDR_CHECK(ndr_push_align(ndr, 8));
 
13140
                NDR_CHECK(ndr_push_spoolss_DriverOSVersion(ndr, NDR_SCALARS, r->version));
 
13141
                {
 
13142
                        uint32_t _flags_save_string = ndr->flags;
 
13143
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
13144
                        NDR_CHECK(ndr_push_relative_ptr1(ndr, r->driver_name));
 
13145
                        ndr->flags = _flags_save_string;
 
13146
                }
 
13147
                {
 
13148
                        uint32_t _flags_save_string = ndr->flags;
 
13149
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
13150
                        NDR_CHECK(ndr_push_relative_ptr1(ndr, r->architecture));
 
13151
                        ndr->flags = _flags_save_string;
 
13152
                }
 
13153
                {
 
13154
                        uint32_t _flags_save_string = ndr->flags;
 
13155
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
13156
                        NDR_CHECK(ndr_push_relative_ptr1(ndr, r->driver_path));
 
13157
                        ndr->flags = _flags_save_string;
 
13158
                }
 
13159
                {
 
13160
                        uint32_t _flags_save_string = ndr->flags;
 
13161
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
13162
                        NDR_CHECK(ndr_push_relative_ptr1(ndr, r->data_file));
 
13163
                        ndr->flags = _flags_save_string;
 
13164
                }
 
13165
                {
 
13166
                        uint32_t _flags_save_string = ndr->flags;
 
13167
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
13168
                        NDR_CHECK(ndr_push_relative_ptr1(ndr, r->config_file));
 
13169
                        ndr->flags = _flags_save_string;
 
13170
                }
 
13171
                {
 
13172
                        uint32_t _flags_save_string = ndr->flags;
 
13173
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
13174
                        NDR_CHECK(ndr_push_relative_ptr1(ndr, r->help_file));
 
13175
                        ndr->flags = _flags_save_string;
 
13176
                }
 
13177
                {
 
13178
                        uint32_t _flags_save_string_array = ndr->flags;
 
13179
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
13180
                        NDR_CHECK(ndr_push_relative_ptr1(ndr, r->dependent_files));
 
13181
                        ndr->flags = _flags_save_string_array;
 
13182
                }
 
13183
                {
 
13184
                        uint32_t _flags_save_string = ndr->flags;
 
13185
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
13186
                        NDR_CHECK(ndr_push_relative_ptr1(ndr, r->monitor_name));
 
13187
                        ndr->flags = _flags_save_string;
 
13188
                }
 
13189
                {
 
13190
                        uint32_t _flags_save_string = ndr->flags;
 
13191
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
13192
                        NDR_CHECK(ndr_push_relative_ptr1(ndr, r->default_datatype));
 
13193
                        ndr->flags = _flags_save_string;
 
13194
                }
 
13195
                {
 
13196
                        uint32_t _flags_save_string_array = ndr->flags;
 
13197
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
13198
                        NDR_CHECK(ndr_push_relative_ptr1(ndr, r->previous_names));
 
13199
                        ndr->flags = _flags_save_string_array;
 
13200
                }
 
13201
                NDR_CHECK(ndr_push_NTTIME(ndr, NDR_SCALARS, r->driver_date));
 
13202
                NDR_CHECK(ndr_push_hyper(ndr, NDR_SCALARS, r->driver_version));
 
13203
                {
 
13204
                        uint32_t _flags_save_string = ndr->flags;
 
13205
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
13206
                        NDR_CHECK(ndr_push_relative_ptr1(ndr, r->manufacturer_name));
 
13207
                        ndr->flags = _flags_save_string;
 
13208
                }
 
13209
                {
 
13210
                        uint32_t _flags_save_string = ndr->flags;
 
13211
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
13212
                        NDR_CHECK(ndr_push_relative_ptr1(ndr, r->manufacturer_url));
 
13213
                        ndr->flags = _flags_save_string;
 
13214
                }
 
13215
                {
 
13216
                        uint32_t _flags_save_string = ndr->flags;
 
13217
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
13218
                        NDR_CHECK(ndr_push_relative_ptr1(ndr, r->hardware_id));
 
13219
                        ndr->flags = _flags_save_string;
 
13220
                }
 
13221
                {
 
13222
                        uint32_t _flags_save_string = ndr->flags;
 
13223
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
13224
                        NDR_CHECK(ndr_push_relative_ptr1(ndr, r->provider));
 
13225
                        ndr->flags = _flags_save_string;
 
13226
                }
 
13227
                {
 
13228
                        uint32_t _flags_save_string = ndr->flags;
 
13229
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
13230
                        NDR_CHECK(ndr_push_relative_ptr1(ndr, r->print_processor));
 
13231
                        ndr->flags = _flags_save_string;
 
13232
                }
 
13233
                {
 
13234
                        uint32_t _flags_save_string = ndr->flags;
 
13235
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
13236
                        NDR_CHECK(ndr_push_relative_ptr1(ndr, r->vendor_setup));
 
13237
                        ndr->flags = _flags_save_string;
 
13238
                }
 
13239
                {
 
13240
                        uint32_t _flags_save_string_array = ndr->flags;
 
13241
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
13242
                        NDR_CHECK(ndr_push_relative_ptr1(ndr, r->color_profiles));
 
13243
                        ndr->flags = _flags_save_string_array;
 
13244
                }
 
13245
                {
 
13246
                        uint32_t _flags_save_string = ndr->flags;
 
13247
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
13248
                        NDR_CHECK(ndr_push_relative_ptr1(ndr, r->inf_path));
 
13249
                        ndr->flags = _flags_save_string;
 
13250
                }
 
13251
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->printer_driver_attributes));
 
13252
                {
 
13253
                        uint32_t _flags_save_string_array = ndr->flags;
 
13254
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
13255
                        NDR_CHECK(ndr_push_relative_ptr1(ndr, r->core_driver_dependencies));
 
13256
                        ndr->flags = _flags_save_string_array;
 
13257
                }
 
13258
                NDR_CHECK(ndr_push_NTTIME(ndr, NDR_SCALARS, r->min_inbox_driver_ver_date));
 
13259
                NDR_CHECK(ndr_push_hyper(ndr, NDR_SCALARS, r->min_inbox_driver_ver_version));
 
13260
                NDR_CHECK(ndr_push_trailer_align(ndr, 8));
 
13261
        }
 
13262
        if (ndr_flags & NDR_BUFFERS) {
 
13263
                {
 
13264
                        uint32_t _flags_save_string = ndr->flags;
 
13265
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
13266
                        if (r->driver_name) {
 
13267
                                NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->driver_name));
 
13268
                                NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->driver_name));
 
13269
                                NDR_CHECK(ndr_push_relative_ptr2_end(ndr, r->driver_name));
 
13270
                        }
 
13271
                        ndr->flags = _flags_save_string;
 
13272
                }
 
13273
                {
 
13274
                        uint32_t _flags_save_string = ndr->flags;
 
13275
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
13276
                        if (r->architecture) {
 
13277
                                NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->architecture));
 
13278
                                NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->architecture));
 
13279
                                NDR_CHECK(ndr_push_relative_ptr2_end(ndr, r->architecture));
 
13280
                        }
 
13281
                        ndr->flags = _flags_save_string;
 
13282
                }
 
13283
                {
 
13284
                        uint32_t _flags_save_string = ndr->flags;
 
13285
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
13286
                        if (r->driver_path) {
 
13287
                                NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->driver_path));
 
13288
                                NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->driver_path));
 
13289
                                NDR_CHECK(ndr_push_relative_ptr2_end(ndr, r->driver_path));
 
13290
                        }
 
13291
                        ndr->flags = _flags_save_string;
 
13292
                }
 
13293
                {
 
13294
                        uint32_t _flags_save_string = ndr->flags;
 
13295
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
13296
                        if (r->data_file) {
 
13297
                                NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->data_file));
 
13298
                                NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->data_file));
 
13299
                                NDR_CHECK(ndr_push_relative_ptr2_end(ndr, r->data_file));
 
13300
                        }
 
13301
                        ndr->flags = _flags_save_string;
 
13302
                }
 
13303
                {
 
13304
                        uint32_t _flags_save_string = ndr->flags;
 
13305
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
13306
                        if (r->config_file) {
 
13307
                                NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->config_file));
 
13308
                                NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->config_file));
 
13309
                                NDR_CHECK(ndr_push_relative_ptr2_end(ndr, r->config_file));
 
13310
                        }
 
13311
                        ndr->flags = _flags_save_string;
 
13312
                }
 
13313
                {
 
13314
                        uint32_t _flags_save_string = ndr->flags;
 
13315
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
13316
                        if (r->help_file) {
 
13317
                                NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->help_file));
 
13318
                                NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->help_file));
 
13319
                                NDR_CHECK(ndr_push_relative_ptr2_end(ndr, r->help_file));
 
13320
                        }
 
13321
                        ndr->flags = _flags_save_string;
 
13322
                }
 
13323
                {
 
13324
                        uint32_t _flags_save_string_array = ndr->flags;
 
13325
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
13326
                        if (r->dependent_files) {
 
13327
                                NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->dependent_files));
 
13328
                                NDR_CHECK(ndr_push_string_array(ndr, NDR_SCALARS, r->dependent_files));
 
13329
                                NDR_CHECK(ndr_push_relative_ptr2_end(ndr, r->dependent_files));
 
13330
                        }
 
13331
                        ndr->flags = _flags_save_string_array;
 
13332
                }
 
13333
                {
 
13334
                        uint32_t _flags_save_string = ndr->flags;
 
13335
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
13336
                        if (r->monitor_name) {
 
13337
                                NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->monitor_name));
 
13338
                                NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->monitor_name));
 
13339
                                NDR_CHECK(ndr_push_relative_ptr2_end(ndr, r->monitor_name));
 
13340
                        }
 
13341
                        ndr->flags = _flags_save_string;
 
13342
                }
 
13343
                {
 
13344
                        uint32_t _flags_save_string = ndr->flags;
 
13345
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
13346
                        if (r->default_datatype) {
 
13347
                                NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->default_datatype));
 
13348
                                NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->default_datatype));
 
13349
                                NDR_CHECK(ndr_push_relative_ptr2_end(ndr, r->default_datatype));
 
13350
                        }
 
13351
                        ndr->flags = _flags_save_string;
 
13352
                }
 
13353
                {
 
13354
                        uint32_t _flags_save_string_array = ndr->flags;
 
13355
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
13356
                        if (r->previous_names) {
 
13357
                                NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->previous_names));
 
13358
                                NDR_CHECK(ndr_push_string_array(ndr, NDR_SCALARS, r->previous_names));
 
13359
                                NDR_CHECK(ndr_push_relative_ptr2_end(ndr, r->previous_names));
 
13360
                        }
 
13361
                        ndr->flags = _flags_save_string_array;
 
13362
                }
 
13363
                {
 
13364
                        uint32_t _flags_save_string = ndr->flags;
 
13365
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
13366
                        if (r->manufacturer_name) {
 
13367
                                NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->manufacturer_name));
 
13368
                                NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->manufacturer_name));
 
13369
                                NDR_CHECK(ndr_push_relative_ptr2_end(ndr, r->manufacturer_name));
 
13370
                        }
 
13371
                        ndr->flags = _flags_save_string;
 
13372
                }
 
13373
                {
 
13374
                        uint32_t _flags_save_string = ndr->flags;
 
13375
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
13376
                        if (r->manufacturer_url) {
 
13377
                                NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->manufacturer_url));
 
13378
                                NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->manufacturer_url));
 
13379
                                NDR_CHECK(ndr_push_relative_ptr2_end(ndr, r->manufacturer_url));
 
13380
                        }
 
13381
                        ndr->flags = _flags_save_string;
 
13382
                }
 
13383
                {
 
13384
                        uint32_t _flags_save_string = ndr->flags;
 
13385
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
13386
                        if (r->hardware_id) {
 
13387
                                NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->hardware_id));
 
13388
                                NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->hardware_id));
 
13389
                                NDR_CHECK(ndr_push_relative_ptr2_end(ndr, r->hardware_id));
 
13390
                        }
 
13391
                        ndr->flags = _flags_save_string;
 
13392
                }
 
13393
                {
 
13394
                        uint32_t _flags_save_string = ndr->flags;
 
13395
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
13396
                        if (r->provider) {
 
13397
                                NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->provider));
 
13398
                                NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->provider));
 
13399
                                NDR_CHECK(ndr_push_relative_ptr2_end(ndr, r->provider));
 
13400
                        }
 
13401
                        ndr->flags = _flags_save_string;
 
13402
                }
 
13403
                {
 
13404
                        uint32_t _flags_save_string = ndr->flags;
 
13405
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
13406
                        if (r->print_processor) {
 
13407
                                NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->print_processor));
 
13408
                                NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->print_processor));
 
13409
                                NDR_CHECK(ndr_push_relative_ptr2_end(ndr, r->print_processor));
 
13410
                        }
 
13411
                        ndr->flags = _flags_save_string;
 
13412
                }
 
13413
                {
 
13414
                        uint32_t _flags_save_string = ndr->flags;
 
13415
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
13416
                        if (r->vendor_setup) {
 
13417
                                NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->vendor_setup));
 
13418
                                NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->vendor_setup));
 
13419
                                NDR_CHECK(ndr_push_relative_ptr2_end(ndr, r->vendor_setup));
 
13420
                        }
 
13421
                        ndr->flags = _flags_save_string;
 
13422
                }
 
13423
                {
 
13424
                        uint32_t _flags_save_string_array = ndr->flags;
 
13425
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
13426
                        if (r->color_profiles) {
 
13427
                                NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->color_profiles));
 
13428
                                NDR_CHECK(ndr_push_string_array(ndr, NDR_SCALARS, r->color_profiles));
 
13429
                                NDR_CHECK(ndr_push_relative_ptr2_end(ndr, r->color_profiles));
 
13430
                        }
 
13431
                        ndr->flags = _flags_save_string_array;
 
13432
                }
 
13433
                {
 
13434
                        uint32_t _flags_save_string = ndr->flags;
 
13435
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
13436
                        if (r->inf_path) {
 
13437
                                NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->inf_path));
 
13438
                                NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->inf_path));
 
13439
                                NDR_CHECK(ndr_push_relative_ptr2_end(ndr, r->inf_path));
 
13440
                        }
 
13441
                        ndr->flags = _flags_save_string;
 
13442
                }
 
13443
                {
 
13444
                        uint32_t _flags_save_string_array = ndr->flags;
 
13445
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
13446
                        if (r->core_driver_dependencies) {
 
13447
                                NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->core_driver_dependencies));
 
13448
                                NDR_CHECK(ndr_push_string_array(ndr, NDR_SCALARS, r->core_driver_dependencies));
 
13449
                                NDR_CHECK(ndr_push_relative_ptr2_end(ndr, r->core_driver_dependencies));
 
13450
                        }
 
13451
                        ndr->flags = _flags_save_string_array;
 
13452
                }
 
13453
        }
 
13454
        return NDR_ERR_SUCCESS;
 
13455
}
 
13456
 
 
13457
_PUBLIC_ enum ndr_err_code ndr_pull_spoolss_DriverInfo8(struct ndr_pull *ndr, int ndr_flags, struct spoolss_DriverInfo8 *r)
 
13458
{
 
13459
        uint32_t _ptr_driver_name;
 
13460
        TALLOC_CTX *_mem_save_driver_name_0;
 
13461
        uint32_t _ptr_architecture;
 
13462
        TALLOC_CTX *_mem_save_architecture_0;
 
13463
        uint32_t _ptr_driver_path;
 
13464
        TALLOC_CTX *_mem_save_driver_path_0;
 
13465
        uint32_t _ptr_data_file;
 
13466
        TALLOC_CTX *_mem_save_data_file_0;
 
13467
        uint32_t _ptr_config_file;
 
13468
        TALLOC_CTX *_mem_save_config_file_0;
 
13469
        uint32_t _ptr_help_file;
 
13470
        TALLOC_CTX *_mem_save_help_file_0;
 
13471
        uint32_t _ptr_dependent_files;
 
13472
        TALLOC_CTX *_mem_save_dependent_files_0;
 
13473
        uint32_t _ptr_monitor_name;
 
13474
        TALLOC_CTX *_mem_save_monitor_name_0;
 
13475
        uint32_t _ptr_default_datatype;
 
13476
        TALLOC_CTX *_mem_save_default_datatype_0;
 
13477
        uint32_t _ptr_previous_names;
 
13478
        TALLOC_CTX *_mem_save_previous_names_0;
 
13479
        uint32_t _ptr_manufacturer_name;
 
13480
        TALLOC_CTX *_mem_save_manufacturer_name_0;
 
13481
        uint32_t _ptr_manufacturer_url;
 
13482
        TALLOC_CTX *_mem_save_manufacturer_url_0;
 
13483
        uint32_t _ptr_hardware_id;
 
13484
        TALLOC_CTX *_mem_save_hardware_id_0;
 
13485
        uint32_t _ptr_provider;
 
13486
        TALLOC_CTX *_mem_save_provider_0;
 
13487
        uint32_t _ptr_print_processor;
 
13488
        TALLOC_CTX *_mem_save_print_processor_0;
 
13489
        uint32_t _ptr_vendor_setup;
 
13490
        TALLOC_CTX *_mem_save_vendor_setup_0;
 
13491
        uint32_t _ptr_color_profiles;
 
13492
        TALLOC_CTX *_mem_save_color_profiles_0;
 
13493
        uint32_t _ptr_inf_path;
 
13494
        TALLOC_CTX *_mem_save_inf_path_0;
 
13495
        uint32_t _ptr_core_driver_dependencies;
 
13496
        TALLOC_CTX *_mem_save_core_driver_dependencies_0;
 
13497
        if (ndr_flags & NDR_SCALARS) {
 
13498
                NDR_CHECK(ndr_pull_align(ndr, 8));
 
13499
                NDR_CHECK(ndr_pull_spoolss_DriverOSVersion(ndr, NDR_SCALARS, &r->version));
 
13500
                {
 
13501
                        uint32_t _flags_save_string = ndr->flags;
 
13502
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
13503
                        NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_driver_name));
 
13504
                        if (_ptr_driver_name) {
 
13505
                                NDR_PULL_ALLOC(ndr, r->driver_name);
 
13506
                                NDR_CHECK(ndr_pull_relative_ptr1(ndr, r->driver_name, _ptr_driver_name));
 
13507
                        } else {
 
13508
                                r->driver_name = NULL;
 
13509
                        }
 
13510
                        ndr->flags = _flags_save_string;
 
13511
                }
 
13512
                {
 
13513
                        uint32_t _flags_save_string = ndr->flags;
 
13514
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
13515
                        NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_architecture));
 
13516
                        if (_ptr_architecture) {
 
13517
                                NDR_PULL_ALLOC(ndr, r->architecture);
 
13518
                                NDR_CHECK(ndr_pull_relative_ptr1(ndr, r->architecture, _ptr_architecture));
 
13519
                        } else {
 
13520
                                r->architecture = NULL;
 
13521
                        }
 
13522
                        ndr->flags = _flags_save_string;
 
13523
                }
 
13524
                {
 
13525
                        uint32_t _flags_save_string = ndr->flags;
 
13526
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
13527
                        NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_driver_path));
 
13528
                        if (_ptr_driver_path) {
 
13529
                                NDR_PULL_ALLOC(ndr, r->driver_path);
 
13530
                                NDR_CHECK(ndr_pull_relative_ptr1(ndr, r->driver_path, _ptr_driver_path));
 
13531
                        } else {
 
13532
                                r->driver_path = NULL;
 
13533
                        }
 
13534
                        ndr->flags = _flags_save_string;
 
13535
                }
 
13536
                {
 
13537
                        uint32_t _flags_save_string = ndr->flags;
 
13538
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
13539
                        NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_data_file));
 
13540
                        if (_ptr_data_file) {
 
13541
                                NDR_PULL_ALLOC(ndr, r->data_file);
 
13542
                                NDR_CHECK(ndr_pull_relative_ptr1(ndr, r->data_file, _ptr_data_file));
 
13543
                        } else {
 
13544
                                r->data_file = NULL;
 
13545
                        }
 
13546
                        ndr->flags = _flags_save_string;
 
13547
                }
 
13548
                {
 
13549
                        uint32_t _flags_save_string = ndr->flags;
 
13550
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
13551
                        NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_config_file));
 
13552
                        if (_ptr_config_file) {
 
13553
                                NDR_PULL_ALLOC(ndr, r->config_file);
 
13554
                                NDR_CHECK(ndr_pull_relative_ptr1(ndr, r->config_file, _ptr_config_file));
 
13555
                        } else {
 
13556
                                r->config_file = NULL;
 
13557
                        }
 
13558
                        ndr->flags = _flags_save_string;
 
13559
                }
 
13560
                {
 
13561
                        uint32_t _flags_save_string = ndr->flags;
 
13562
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
13563
                        NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_help_file));
 
13564
                        if (_ptr_help_file) {
 
13565
                                NDR_PULL_ALLOC(ndr, r->help_file);
 
13566
                                NDR_CHECK(ndr_pull_relative_ptr1(ndr, r->help_file, _ptr_help_file));
 
13567
                        } else {
 
13568
                                r->help_file = NULL;
 
13569
                        }
 
13570
                        ndr->flags = _flags_save_string;
 
13571
                }
 
13572
                {
 
13573
                        uint32_t _flags_save_string_array = ndr->flags;
 
13574
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
13575
                        NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_dependent_files));
 
13576
                        if (_ptr_dependent_files) {
 
13577
                                NDR_PULL_ALLOC(ndr, r->dependent_files);
 
13578
                                NDR_CHECK(ndr_pull_relative_ptr1(ndr, r->dependent_files, _ptr_dependent_files));
 
13579
                        } else {
 
13580
                                r->dependent_files = NULL;
 
13581
                        }
 
13582
                        ndr->flags = _flags_save_string_array;
 
13583
                }
 
13584
                {
 
13585
                        uint32_t _flags_save_string = ndr->flags;
 
13586
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
13587
                        NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_monitor_name));
 
13588
                        if (_ptr_monitor_name) {
 
13589
                                NDR_PULL_ALLOC(ndr, r->monitor_name);
 
13590
                                NDR_CHECK(ndr_pull_relative_ptr1(ndr, r->monitor_name, _ptr_monitor_name));
 
13591
                        } else {
 
13592
                                r->monitor_name = NULL;
 
13593
                        }
 
13594
                        ndr->flags = _flags_save_string;
 
13595
                }
 
13596
                {
 
13597
                        uint32_t _flags_save_string = ndr->flags;
 
13598
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
13599
                        NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_default_datatype));
 
13600
                        if (_ptr_default_datatype) {
 
13601
                                NDR_PULL_ALLOC(ndr, r->default_datatype);
 
13602
                                NDR_CHECK(ndr_pull_relative_ptr1(ndr, r->default_datatype, _ptr_default_datatype));
 
13603
                        } else {
 
13604
                                r->default_datatype = NULL;
 
13605
                        }
 
13606
                        ndr->flags = _flags_save_string;
 
13607
                }
 
13608
                {
 
13609
                        uint32_t _flags_save_string_array = ndr->flags;
 
13610
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
13611
                        NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_previous_names));
 
13612
                        if (_ptr_previous_names) {
 
13613
                                NDR_PULL_ALLOC(ndr, r->previous_names);
 
13614
                                NDR_CHECK(ndr_pull_relative_ptr1(ndr, r->previous_names, _ptr_previous_names));
 
13615
                        } else {
 
13616
                                r->previous_names = NULL;
 
13617
                        }
 
13618
                        ndr->flags = _flags_save_string_array;
 
13619
                }
 
13620
                NDR_CHECK(ndr_pull_NTTIME(ndr, NDR_SCALARS, &r->driver_date));
 
13621
                NDR_CHECK(ndr_pull_hyper(ndr, NDR_SCALARS, &r->driver_version));
 
13622
                {
 
13623
                        uint32_t _flags_save_string = ndr->flags;
 
13624
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
13625
                        NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_manufacturer_name));
 
13626
                        if (_ptr_manufacturer_name) {
 
13627
                                NDR_PULL_ALLOC(ndr, r->manufacturer_name);
 
13628
                                NDR_CHECK(ndr_pull_relative_ptr1(ndr, r->manufacturer_name, _ptr_manufacturer_name));
 
13629
                        } else {
 
13630
                                r->manufacturer_name = NULL;
 
13631
                        }
 
13632
                        ndr->flags = _flags_save_string;
 
13633
                }
 
13634
                {
 
13635
                        uint32_t _flags_save_string = ndr->flags;
 
13636
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
13637
                        NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_manufacturer_url));
 
13638
                        if (_ptr_manufacturer_url) {
 
13639
                                NDR_PULL_ALLOC(ndr, r->manufacturer_url);
 
13640
                                NDR_CHECK(ndr_pull_relative_ptr1(ndr, r->manufacturer_url, _ptr_manufacturer_url));
 
13641
                        } else {
 
13642
                                r->manufacturer_url = NULL;
 
13643
                        }
 
13644
                        ndr->flags = _flags_save_string;
 
13645
                }
 
13646
                {
 
13647
                        uint32_t _flags_save_string = ndr->flags;
 
13648
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
13649
                        NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_hardware_id));
 
13650
                        if (_ptr_hardware_id) {
 
13651
                                NDR_PULL_ALLOC(ndr, r->hardware_id);
 
13652
                                NDR_CHECK(ndr_pull_relative_ptr1(ndr, r->hardware_id, _ptr_hardware_id));
 
13653
                        } else {
 
13654
                                r->hardware_id = NULL;
 
13655
                        }
 
13656
                        ndr->flags = _flags_save_string;
 
13657
                }
 
13658
                {
 
13659
                        uint32_t _flags_save_string = ndr->flags;
 
13660
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
13661
                        NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_provider));
 
13662
                        if (_ptr_provider) {
 
13663
                                NDR_PULL_ALLOC(ndr, r->provider);
 
13664
                                NDR_CHECK(ndr_pull_relative_ptr1(ndr, r->provider, _ptr_provider));
 
13665
                        } else {
 
13666
                                r->provider = NULL;
 
13667
                        }
 
13668
                        ndr->flags = _flags_save_string;
 
13669
                }
 
13670
                {
 
13671
                        uint32_t _flags_save_string = ndr->flags;
 
13672
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
13673
                        NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_print_processor));
 
13674
                        if (_ptr_print_processor) {
 
13675
                                NDR_PULL_ALLOC(ndr, r->print_processor);
 
13676
                                NDR_CHECK(ndr_pull_relative_ptr1(ndr, r->print_processor, _ptr_print_processor));
 
13677
                        } else {
 
13678
                                r->print_processor = NULL;
 
13679
                        }
 
13680
                        ndr->flags = _flags_save_string;
 
13681
                }
 
13682
                {
 
13683
                        uint32_t _flags_save_string = ndr->flags;
 
13684
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
13685
                        NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_vendor_setup));
 
13686
                        if (_ptr_vendor_setup) {
 
13687
                                NDR_PULL_ALLOC(ndr, r->vendor_setup);
 
13688
                                NDR_CHECK(ndr_pull_relative_ptr1(ndr, r->vendor_setup, _ptr_vendor_setup));
 
13689
                        } else {
 
13690
                                r->vendor_setup = NULL;
 
13691
                        }
 
13692
                        ndr->flags = _flags_save_string;
 
13693
                }
 
13694
                {
 
13695
                        uint32_t _flags_save_string_array = ndr->flags;
 
13696
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
13697
                        NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_color_profiles));
 
13698
                        if (_ptr_color_profiles) {
 
13699
                                NDR_PULL_ALLOC(ndr, r->color_profiles);
 
13700
                                NDR_CHECK(ndr_pull_relative_ptr1(ndr, r->color_profiles, _ptr_color_profiles));
 
13701
                        } else {
 
13702
                                r->color_profiles = NULL;
 
13703
                        }
 
13704
                        ndr->flags = _flags_save_string_array;
 
13705
                }
 
13706
                {
 
13707
                        uint32_t _flags_save_string = ndr->flags;
 
13708
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
13709
                        NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_inf_path));
 
13710
                        if (_ptr_inf_path) {
 
13711
                                NDR_PULL_ALLOC(ndr, r->inf_path);
 
13712
                                NDR_CHECK(ndr_pull_relative_ptr1(ndr, r->inf_path, _ptr_inf_path));
 
13713
                        } else {
 
13714
                                r->inf_path = NULL;
 
13715
                        }
 
13716
                        ndr->flags = _flags_save_string;
 
13717
                }
 
13718
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->printer_driver_attributes));
 
13719
                {
 
13720
                        uint32_t _flags_save_string_array = ndr->flags;
 
13721
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
13722
                        NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_core_driver_dependencies));
 
13723
                        if (_ptr_core_driver_dependencies) {
 
13724
                                NDR_PULL_ALLOC(ndr, r->core_driver_dependencies);
 
13725
                                NDR_CHECK(ndr_pull_relative_ptr1(ndr, r->core_driver_dependencies, _ptr_core_driver_dependencies));
 
13726
                        } else {
 
13727
                                r->core_driver_dependencies = NULL;
 
13728
                        }
 
13729
                        ndr->flags = _flags_save_string_array;
 
13730
                }
 
13731
                NDR_CHECK(ndr_pull_NTTIME(ndr, NDR_SCALARS, &r->min_inbox_driver_ver_date));
 
13732
                NDR_CHECK(ndr_pull_hyper(ndr, NDR_SCALARS, &r->min_inbox_driver_ver_version));
 
13733
                NDR_CHECK(ndr_pull_trailer_align(ndr, 8));
 
13734
        }
 
13735
        if (ndr_flags & NDR_BUFFERS) {
 
13736
                {
 
13737
                        uint32_t _flags_save_string = ndr->flags;
 
13738
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
13739
                        if (r->driver_name) {
 
13740
                                uint32_t _relative_save_offset;
 
13741
                                _relative_save_offset = ndr->offset;
 
13742
                                NDR_CHECK(ndr_pull_relative_ptr2(ndr, r->driver_name));
 
13743
                                _mem_save_driver_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
13744
                                NDR_PULL_SET_MEM_CTX(ndr, r->driver_name, 0);
 
13745
                                NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->driver_name));
 
13746
                                NDR_PULL_SET_MEM_CTX(ndr, _mem_save_driver_name_0, 0);
 
13747
                                ndr->offset = _relative_save_offset;
 
13748
                        }
 
13749
                        ndr->flags = _flags_save_string;
 
13750
                }
 
13751
                {
 
13752
                        uint32_t _flags_save_string = ndr->flags;
 
13753
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
13754
                        if (r->architecture) {
 
13755
                                uint32_t _relative_save_offset;
 
13756
                                _relative_save_offset = ndr->offset;
 
13757
                                NDR_CHECK(ndr_pull_relative_ptr2(ndr, r->architecture));
 
13758
                                _mem_save_architecture_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
13759
                                NDR_PULL_SET_MEM_CTX(ndr, r->architecture, 0);
 
13760
                                NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->architecture));
 
13761
                                NDR_PULL_SET_MEM_CTX(ndr, _mem_save_architecture_0, 0);
 
13762
                                ndr->offset = _relative_save_offset;
 
13763
                        }
 
13764
                        ndr->flags = _flags_save_string;
 
13765
                }
 
13766
                {
 
13767
                        uint32_t _flags_save_string = ndr->flags;
 
13768
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
13769
                        if (r->driver_path) {
 
13770
                                uint32_t _relative_save_offset;
 
13771
                                _relative_save_offset = ndr->offset;
 
13772
                                NDR_CHECK(ndr_pull_relative_ptr2(ndr, r->driver_path));
 
13773
                                _mem_save_driver_path_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
13774
                                NDR_PULL_SET_MEM_CTX(ndr, r->driver_path, 0);
 
13775
                                NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->driver_path));
 
13776
                                NDR_PULL_SET_MEM_CTX(ndr, _mem_save_driver_path_0, 0);
 
13777
                                ndr->offset = _relative_save_offset;
 
13778
                        }
 
13779
                        ndr->flags = _flags_save_string;
 
13780
                }
 
13781
                {
 
13782
                        uint32_t _flags_save_string = ndr->flags;
 
13783
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
13784
                        if (r->data_file) {
 
13785
                                uint32_t _relative_save_offset;
 
13786
                                _relative_save_offset = ndr->offset;
 
13787
                                NDR_CHECK(ndr_pull_relative_ptr2(ndr, r->data_file));
 
13788
                                _mem_save_data_file_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
13789
                                NDR_PULL_SET_MEM_CTX(ndr, r->data_file, 0);
 
13790
                                NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->data_file));
 
13791
                                NDR_PULL_SET_MEM_CTX(ndr, _mem_save_data_file_0, 0);
 
13792
                                ndr->offset = _relative_save_offset;
 
13793
                        }
 
13794
                        ndr->flags = _flags_save_string;
 
13795
                }
 
13796
                {
 
13797
                        uint32_t _flags_save_string = ndr->flags;
 
13798
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
13799
                        if (r->config_file) {
 
13800
                                uint32_t _relative_save_offset;
 
13801
                                _relative_save_offset = ndr->offset;
 
13802
                                NDR_CHECK(ndr_pull_relative_ptr2(ndr, r->config_file));
 
13803
                                _mem_save_config_file_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
13804
                                NDR_PULL_SET_MEM_CTX(ndr, r->config_file, 0);
 
13805
                                NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->config_file));
 
13806
                                NDR_PULL_SET_MEM_CTX(ndr, _mem_save_config_file_0, 0);
 
13807
                                ndr->offset = _relative_save_offset;
 
13808
                        }
 
13809
                        ndr->flags = _flags_save_string;
 
13810
                }
 
13811
                {
 
13812
                        uint32_t _flags_save_string = ndr->flags;
 
13813
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
13814
                        if (r->help_file) {
 
13815
                                uint32_t _relative_save_offset;
 
13816
                                _relative_save_offset = ndr->offset;
 
13817
                                NDR_CHECK(ndr_pull_relative_ptr2(ndr, r->help_file));
 
13818
                                _mem_save_help_file_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
13819
                                NDR_PULL_SET_MEM_CTX(ndr, r->help_file, 0);
 
13820
                                NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->help_file));
 
13821
                                NDR_PULL_SET_MEM_CTX(ndr, _mem_save_help_file_0, 0);
 
13822
                                ndr->offset = _relative_save_offset;
 
13823
                        }
 
13824
                        ndr->flags = _flags_save_string;
 
13825
                }
 
13826
                {
 
13827
                        uint32_t _flags_save_string_array = ndr->flags;
 
13828
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
13829
                        if (r->dependent_files) {
 
13830
                                uint32_t _relative_save_offset;
 
13831
                                _relative_save_offset = ndr->offset;
 
13832
                                NDR_CHECK(ndr_pull_relative_ptr2(ndr, r->dependent_files));
 
13833
                                _mem_save_dependent_files_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
13834
                                NDR_PULL_SET_MEM_CTX(ndr, r->dependent_files, 0);
 
13835
                                NDR_CHECK(ndr_pull_string_array(ndr, NDR_SCALARS, &r->dependent_files));
 
13836
                                NDR_PULL_SET_MEM_CTX(ndr, _mem_save_dependent_files_0, 0);
 
13837
                                ndr->offset = _relative_save_offset;
 
13838
                        }
 
13839
                        ndr->flags = _flags_save_string_array;
 
13840
                }
 
13841
                {
 
13842
                        uint32_t _flags_save_string = ndr->flags;
 
13843
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
13844
                        if (r->monitor_name) {
 
13845
                                uint32_t _relative_save_offset;
 
13846
                                _relative_save_offset = ndr->offset;
 
13847
                                NDR_CHECK(ndr_pull_relative_ptr2(ndr, r->monitor_name));
 
13848
                                _mem_save_monitor_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
13849
                                NDR_PULL_SET_MEM_CTX(ndr, r->monitor_name, 0);
 
13850
                                NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->monitor_name));
 
13851
                                NDR_PULL_SET_MEM_CTX(ndr, _mem_save_monitor_name_0, 0);
 
13852
                                ndr->offset = _relative_save_offset;
 
13853
                        }
 
13854
                        ndr->flags = _flags_save_string;
 
13855
                }
 
13856
                {
 
13857
                        uint32_t _flags_save_string = ndr->flags;
 
13858
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
13859
                        if (r->default_datatype) {
 
13860
                                uint32_t _relative_save_offset;
 
13861
                                _relative_save_offset = ndr->offset;
 
13862
                                NDR_CHECK(ndr_pull_relative_ptr2(ndr, r->default_datatype));
 
13863
                                _mem_save_default_datatype_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
13864
                                NDR_PULL_SET_MEM_CTX(ndr, r->default_datatype, 0);
 
13865
                                NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->default_datatype));
 
13866
                                NDR_PULL_SET_MEM_CTX(ndr, _mem_save_default_datatype_0, 0);
 
13867
                                ndr->offset = _relative_save_offset;
 
13868
                        }
 
13869
                        ndr->flags = _flags_save_string;
 
13870
                }
 
13871
                {
 
13872
                        uint32_t _flags_save_string_array = ndr->flags;
 
13873
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
13874
                        if (r->previous_names) {
 
13875
                                uint32_t _relative_save_offset;
 
13876
                                _relative_save_offset = ndr->offset;
 
13877
                                NDR_CHECK(ndr_pull_relative_ptr2(ndr, r->previous_names));
 
13878
                                _mem_save_previous_names_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
13879
                                NDR_PULL_SET_MEM_CTX(ndr, r->previous_names, 0);
 
13880
                                NDR_CHECK(ndr_pull_string_array(ndr, NDR_SCALARS, &r->previous_names));
 
13881
                                NDR_PULL_SET_MEM_CTX(ndr, _mem_save_previous_names_0, 0);
 
13882
                                ndr->offset = _relative_save_offset;
 
13883
                        }
 
13884
                        ndr->flags = _flags_save_string_array;
 
13885
                }
 
13886
                {
 
13887
                        uint32_t _flags_save_string = ndr->flags;
 
13888
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
13889
                        if (r->manufacturer_name) {
 
13890
                                uint32_t _relative_save_offset;
 
13891
                                _relative_save_offset = ndr->offset;
 
13892
                                NDR_CHECK(ndr_pull_relative_ptr2(ndr, r->manufacturer_name));
 
13893
                                _mem_save_manufacturer_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
13894
                                NDR_PULL_SET_MEM_CTX(ndr, r->manufacturer_name, 0);
 
13895
                                NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->manufacturer_name));
 
13896
                                NDR_PULL_SET_MEM_CTX(ndr, _mem_save_manufacturer_name_0, 0);
 
13897
                                ndr->offset = _relative_save_offset;
 
13898
                        }
 
13899
                        ndr->flags = _flags_save_string;
 
13900
                }
 
13901
                {
 
13902
                        uint32_t _flags_save_string = ndr->flags;
 
13903
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
13904
                        if (r->manufacturer_url) {
 
13905
                                uint32_t _relative_save_offset;
 
13906
                                _relative_save_offset = ndr->offset;
 
13907
                                NDR_CHECK(ndr_pull_relative_ptr2(ndr, r->manufacturer_url));
 
13908
                                _mem_save_manufacturer_url_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
13909
                                NDR_PULL_SET_MEM_CTX(ndr, r->manufacturer_url, 0);
 
13910
                                NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->manufacturer_url));
 
13911
                                NDR_PULL_SET_MEM_CTX(ndr, _mem_save_manufacturer_url_0, 0);
 
13912
                                ndr->offset = _relative_save_offset;
 
13913
                        }
 
13914
                        ndr->flags = _flags_save_string;
 
13915
                }
 
13916
                {
 
13917
                        uint32_t _flags_save_string = ndr->flags;
 
13918
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
13919
                        if (r->hardware_id) {
 
13920
                                uint32_t _relative_save_offset;
 
13921
                                _relative_save_offset = ndr->offset;
 
13922
                                NDR_CHECK(ndr_pull_relative_ptr2(ndr, r->hardware_id));
 
13923
                                _mem_save_hardware_id_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
13924
                                NDR_PULL_SET_MEM_CTX(ndr, r->hardware_id, 0);
 
13925
                                NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->hardware_id));
 
13926
                                NDR_PULL_SET_MEM_CTX(ndr, _mem_save_hardware_id_0, 0);
 
13927
                                ndr->offset = _relative_save_offset;
 
13928
                        }
 
13929
                        ndr->flags = _flags_save_string;
 
13930
                }
 
13931
                {
 
13932
                        uint32_t _flags_save_string = ndr->flags;
 
13933
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
13934
                        if (r->provider) {
 
13935
                                uint32_t _relative_save_offset;
 
13936
                                _relative_save_offset = ndr->offset;
 
13937
                                NDR_CHECK(ndr_pull_relative_ptr2(ndr, r->provider));
 
13938
                                _mem_save_provider_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
13939
                                NDR_PULL_SET_MEM_CTX(ndr, r->provider, 0);
 
13940
                                NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->provider));
 
13941
                                NDR_PULL_SET_MEM_CTX(ndr, _mem_save_provider_0, 0);
 
13942
                                ndr->offset = _relative_save_offset;
 
13943
                        }
 
13944
                        ndr->flags = _flags_save_string;
 
13945
                }
 
13946
                {
 
13947
                        uint32_t _flags_save_string = ndr->flags;
 
13948
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
13949
                        if (r->print_processor) {
 
13950
                                uint32_t _relative_save_offset;
 
13951
                                _relative_save_offset = ndr->offset;
 
13952
                                NDR_CHECK(ndr_pull_relative_ptr2(ndr, r->print_processor));
 
13953
                                _mem_save_print_processor_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
13954
                                NDR_PULL_SET_MEM_CTX(ndr, r->print_processor, 0);
 
13955
                                NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->print_processor));
 
13956
                                NDR_PULL_SET_MEM_CTX(ndr, _mem_save_print_processor_0, 0);
 
13957
                                ndr->offset = _relative_save_offset;
 
13958
                        }
 
13959
                        ndr->flags = _flags_save_string;
 
13960
                }
 
13961
                {
 
13962
                        uint32_t _flags_save_string = ndr->flags;
 
13963
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
13964
                        if (r->vendor_setup) {
 
13965
                                uint32_t _relative_save_offset;
 
13966
                                _relative_save_offset = ndr->offset;
 
13967
                                NDR_CHECK(ndr_pull_relative_ptr2(ndr, r->vendor_setup));
 
13968
                                _mem_save_vendor_setup_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
13969
                                NDR_PULL_SET_MEM_CTX(ndr, r->vendor_setup, 0);
 
13970
                                NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->vendor_setup));
 
13971
                                NDR_PULL_SET_MEM_CTX(ndr, _mem_save_vendor_setup_0, 0);
 
13972
                                ndr->offset = _relative_save_offset;
 
13973
                        }
 
13974
                        ndr->flags = _flags_save_string;
 
13975
                }
 
13976
                {
 
13977
                        uint32_t _flags_save_string_array = ndr->flags;
 
13978
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
13979
                        if (r->color_profiles) {
 
13980
                                uint32_t _relative_save_offset;
 
13981
                                _relative_save_offset = ndr->offset;
 
13982
                                NDR_CHECK(ndr_pull_relative_ptr2(ndr, r->color_profiles));
 
13983
                                _mem_save_color_profiles_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
13984
                                NDR_PULL_SET_MEM_CTX(ndr, r->color_profiles, 0);
 
13985
                                NDR_CHECK(ndr_pull_string_array(ndr, NDR_SCALARS, &r->color_profiles));
 
13986
                                NDR_PULL_SET_MEM_CTX(ndr, _mem_save_color_profiles_0, 0);
 
13987
                                ndr->offset = _relative_save_offset;
 
13988
                        }
 
13989
                        ndr->flags = _flags_save_string_array;
 
13990
                }
 
13991
                {
 
13992
                        uint32_t _flags_save_string = ndr->flags;
 
13993
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
13994
                        if (r->inf_path) {
 
13995
                                uint32_t _relative_save_offset;
 
13996
                                _relative_save_offset = ndr->offset;
 
13997
                                NDR_CHECK(ndr_pull_relative_ptr2(ndr, r->inf_path));
 
13998
                                _mem_save_inf_path_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
13999
                                NDR_PULL_SET_MEM_CTX(ndr, r->inf_path, 0);
 
14000
                                NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->inf_path));
 
14001
                                NDR_PULL_SET_MEM_CTX(ndr, _mem_save_inf_path_0, 0);
 
14002
                                ndr->offset = _relative_save_offset;
 
14003
                        }
 
14004
                        ndr->flags = _flags_save_string;
 
14005
                }
 
14006
                {
 
14007
                        uint32_t _flags_save_string_array = ndr->flags;
 
14008
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
14009
                        if (r->core_driver_dependencies) {
 
14010
                                uint32_t _relative_save_offset;
 
14011
                                _relative_save_offset = ndr->offset;
 
14012
                                NDR_CHECK(ndr_pull_relative_ptr2(ndr, r->core_driver_dependencies));
 
14013
                                _mem_save_core_driver_dependencies_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
14014
                                NDR_PULL_SET_MEM_CTX(ndr, r->core_driver_dependencies, 0);
 
14015
                                NDR_CHECK(ndr_pull_string_array(ndr, NDR_SCALARS, &r->core_driver_dependencies));
 
14016
                                NDR_PULL_SET_MEM_CTX(ndr, _mem_save_core_driver_dependencies_0, 0);
 
14017
                                ndr->offset = _relative_save_offset;
 
14018
                        }
 
14019
                        ndr->flags = _flags_save_string_array;
 
14020
                }
 
14021
        }
 
14022
        return NDR_ERR_SUCCESS;
 
14023
}
 
14024
 
 
14025
_PUBLIC_ void ndr_print_spoolss_DriverInfo8(struct ndr_print *ndr, const char *name, const struct spoolss_DriverInfo8 *r)
 
14026
{
 
14027
        ndr_print_struct(ndr, name, "spoolss_DriverInfo8");
 
14028
        ndr->depth++;
 
14029
        ndr_print_spoolss_DriverOSVersion(ndr, "version", r->version);
 
14030
        ndr_print_ptr(ndr, "driver_name", r->driver_name);
 
14031
        ndr->depth++;
 
14032
        if (r->driver_name) {
 
14033
                ndr_print_string(ndr, "driver_name", r->driver_name);
 
14034
        }
 
14035
        ndr->depth--;
 
14036
        ndr_print_ptr(ndr, "architecture", r->architecture);
 
14037
        ndr->depth++;
 
14038
        if (r->architecture) {
 
14039
                ndr_print_string(ndr, "architecture", r->architecture);
 
14040
        }
 
14041
        ndr->depth--;
 
14042
        ndr_print_ptr(ndr, "driver_path", r->driver_path);
 
14043
        ndr->depth++;
 
14044
        if (r->driver_path) {
 
14045
                ndr_print_string(ndr, "driver_path", r->driver_path);
 
14046
        }
 
14047
        ndr->depth--;
 
14048
        ndr_print_ptr(ndr, "data_file", r->data_file);
 
14049
        ndr->depth++;
 
14050
        if (r->data_file) {
 
14051
                ndr_print_string(ndr, "data_file", r->data_file);
 
14052
        }
 
14053
        ndr->depth--;
 
14054
        ndr_print_ptr(ndr, "config_file", r->config_file);
 
14055
        ndr->depth++;
 
14056
        if (r->config_file) {
 
14057
                ndr_print_string(ndr, "config_file", r->config_file);
 
14058
        }
 
14059
        ndr->depth--;
 
14060
        ndr_print_ptr(ndr, "help_file", r->help_file);
 
14061
        ndr->depth++;
 
14062
        if (r->help_file) {
 
14063
                ndr_print_string(ndr, "help_file", r->help_file);
 
14064
        }
 
14065
        ndr->depth--;
 
14066
        ndr_print_ptr(ndr, "dependent_files", r->dependent_files);
 
14067
        ndr->depth++;
 
14068
        if (r->dependent_files) {
 
14069
                ndr_print_string_array(ndr, "dependent_files", r->dependent_files);
 
14070
        }
 
14071
        ndr->depth--;
 
14072
        ndr_print_ptr(ndr, "monitor_name", r->monitor_name);
 
14073
        ndr->depth++;
 
14074
        if (r->monitor_name) {
 
14075
                ndr_print_string(ndr, "monitor_name", r->monitor_name);
 
14076
        }
 
14077
        ndr->depth--;
 
14078
        ndr_print_ptr(ndr, "default_datatype", r->default_datatype);
 
14079
        ndr->depth++;
 
14080
        if (r->default_datatype) {
 
14081
                ndr_print_string(ndr, "default_datatype", r->default_datatype);
 
14082
        }
 
14083
        ndr->depth--;
 
14084
        ndr_print_ptr(ndr, "previous_names", r->previous_names);
 
14085
        ndr->depth++;
 
14086
        if (r->previous_names) {
 
14087
                ndr_print_string_array(ndr, "previous_names", r->previous_names);
 
14088
        }
 
14089
        ndr->depth--;
 
14090
        ndr_print_NTTIME(ndr, "driver_date", r->driver_date);
 
14091
        ndr_print_hyper(ndr, "driver_version", r->driver_version);
 
14092
        ndr_print_ptr(ndr, "manufacturer_name", r->manufacturer_name);
 
14093
        ndr->depth++;
 
14094
        if (r->manufacturer_name) {
 
14095
                ndr_print_string(ndr, "manufacturer_name", r->manufacturer_name);
 
14096
        }
 
14097
        ndr->depth--;
 
14098
        ndr_print_ptr(ndr, "manufacturer_url", r->manufacturer_url);
 
14099
        ndr->depth++;
 
14100
        if (r->manufacturer_url) {
 
14101
                ndr_print_string(ndr, "manufacturer_url", r->manufacturer_url);
 
14102
        }
 
14103
        ndr->depth--;
 
14104
        ndr_print_ptr(ndr, "hardware_id", r->hardware_id);
 
14105
        ndr->depth++;
 
14106
        if (r->hardware_id) {
 
14107
                ndr_print_string(ndr, "hardware_id", r->hardware_id);
 
14108
        }
 
14109
        ndr->depth--;
 
14110
        ndr_print_ptr(ndr, "provider", r->provider);
 
14111
        ndr->depth++;
 
14112
        if (r->provider) {
 
14113
                ndr_print_string(ndr, "provider", r->provider);
 
14114
        }
 
14115
        ndr->depth--;
 
14116
        ndr_print_ptr(ndr, "print_processor", r->print_processor);
 
14117
        ndr->depth++;
 
14118
        if (r->print_processor) {
 
14119
                ndr_print_string(ndr, "print_processor", r->print_processor);
 
14120
        }
 
14121
        ndr->depth--;
 
14122
        ndr_print_ptr(ndr, "vendor_setup", r->vendor_setup);
 
14123
        ndr->depth++;
 
14124
        if (r->vendor_setup) {
 
14125
                ndr_print_string(ndr, "vendor_setup", r->vendor_setup);
 
14126
        }
 
14127
        ndr->depth--;
 
14128
        ndr_print_ptr(ndr, "color_profiles", r->color_profiles);
 
14129
        ndr->depth++;
 
14130
        if (r->color_profiles) {
 
14131
                ndr_print_string_array(ndr, "color_profiles", r->color_profiles);
 
14132
        }
 
14133
        ndr->depth--;
 
14134
        ndr_print_ptr(ndr, "inf_path", r->inf_path);
 
14135
        ndr->depth++;
 
14136
        if (r->inf_path) {
 
14137
                ndr_print_string(ndr, "inf_path", r->inf_path);
 
14138
        }
 
14139
        ndr->depth--;
 
14140
        ndr_print_uint32(ndr, "printer_driver_attributes", r->printer_driver_attributes);
 
14141
        ndr_print_ptr(ndr, "core_driver_dependencies", r->core_driver_dependencies);
 
14142
        ndr->depth++;
 
14143
        if (r->core_driver_dependencies) {
 
14144
                ndr_print_string_array(ndr, "core_driver_dependencies", r->core_driver_dependencies);
 
14145
        }
 
14146
        ndr->depth--;
 
14147
        ndr_print_NTTIME(ndr, "min_inbox_driver_ver_date", r->min_inbox_driver_ver_date);
 
14148
        ndr_print_hyper(ndr, "min_inbox_driver_ver_version", r->min_inbox_driver_ver_version);
 
14149
        ndr->depth--;
 
14150
}
 
14151
 
 
14152
_PUBLIC_ size_t ndr_size_spoolss_DriverInfo8(const struct spoolss_DriverInfo8 *r, struct smb_iconv_convenience *ic, int flags)
 
14153
{
 
14154
        return ndr_size_struct(r, flags, (ndr_push_flags_fn_t)ndr_push_spoolss_DriverInfo8, ic);
 
14155
}
 
14156
 
 
14157
static enum ndr_err_code ndr_push_spoolss_DriverFileType(struct ndr_push *ndr, int ndr_flags, enum spoolss_DriverFileType r)
 
14158
{
 
14159
        NDR_CHECK(ndr_push_enum_uint32(ndr, NDR_SCALARS, r));
 
14160
        return NDR_ERR_SUCCESS;
 
14161
}
 
14162
 
 
14163
static enum ndr_err_code ndr_pull_spoolss_DriverFileType(struct ndr_pull *ndr, int ndr_flags, enum spoolss_DriverFileType *r)
 
14164
{
 
14165
        uint32_t v;
 
14166
        NDR_CHECK(ndr_pull_enum_uint32(ndr, NDR_SCALARS, &v));
 
14167
        *r = v;
 
14168
        return NDR_ERR_SUCCESS;
 
14169
}
 
14170
 
 
14171
_PUBLIC_ void ndr_print_spoolss_DriverFileType(struct ndr_print *ndr, const char *name, enum spoolss_DriverFileType r)
 
14172
{
 
14173
        const char *val = NULL;
 
14174
 
 
14175
        switch (r) {
 
14176
                case SPOOLSS_DRIVER_FILE_TYPE_RENDERING: val = "SPOOLSS_DRIVER_FILE_TYPE_RENDERING"; break;
 
14177
                case SPOOLSS_DRIVER_FILE_TYPE_CONFIGURATION: val = "SPOOLSS_DRIVER_FILE_TYPE_CONFIGURATION"; break;
 
14178
                case SPOOLSS_DRIVER_FILE_TYPE_DATA: val = "SPOOLSS_DRIVER_FILE_TYPE_DATA"; break;
 
14179
                case SPOOLSS_DRIVER_FILE_TYPE_HELP: val = "SPOOLSS_DRIVER_FILE_TYPE_HELP"; break;
 
14180
                case SPOOLSS_DRIVER_FILE_TYPE_OTHER: val = "SPOOLSS_DRIVER_FILE_TYPE_OTHER"; break;
 
14181
        }
 
14182
        ndr_print_enum(ndr, name, "ENUM", val, r);
 
14183
}
 
14184
 
 
14185
_PUBLIC_ enum ndr_err_code ndr_push_spoolss_DriverFileInfo(struct ndr_push *ndr, int ndr_flags, const struct spoolss_DriverFileInfo *r)
 
14186
{
 
14187
        if (ndr_flags & NDR_SCALARS) {
 
14188
                NDR_CHECK(ndr_push_align(ndr, 5));
 
14189
                {
 
14190
                        uint32_t _flags_save_string = ndr->flags;
 
14191
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
14192
                        NDR_CHECK(ndr_push_relative_ptr1(ndr, r->file_name));
 
14193
                        ndr->flags = _flags_save_string;
 
14194
                }
 
14195
                NDR_CHECK(ndr_push_spoolss_DriverFileType(ndr, NDR_SCALARS, r->file_type));
 
14196
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->file_version));
 
14197
                NDR_CHECK(ndr_push_trailer_align(ndr, 5));
 
14198
        }
 
14199
        if (ndr_flags & NDR_BUFFERS) {
 
14200
                {
 
14201
                        uint32_t _flags_save_string = ndr->flags;
 
14202
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
14203
                        if (r->file_name) {
 
14204
                                NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->file_name));
 
14205
                                NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->file_name));
 
14206
                                NDR_CHECK(ndr_push_relative_ptr2_end(ndr, r->file_name));
 
14207
                        }
 
14208
                        ndr->flags = _flags_save_string;
 
14209
                }
 
14210
        }
 
14211
        return NDR_ERR_SUCCESS;
 
14212
}
 
14213
 
 
14214
_PUBLIC_ enum ndr_err_code ndr_pull_spoolss_DriverFileInfo(struct ndr_pull *ndr, int ndr_flags, struct spoolss_DriverFileInfo *r)
 
14215
{
 
14216
        uint32_t _ptr_file_name;
 
14217
        TALLOC_CTX *_mem_save_file_name_0;
 
14218
        if (ndr_flags & NDR_SCALARS) {
 
14219
                NDR_CHECK(ndr_pull_align(ndr, 5));
 
14220
                {
 
14221
                        uint32_t _flags_save_string = ndr->flags;
 
14222
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
14223
                        NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_file_name));
 
14224
                        if (_ptr_file_name) {
 
14225
                                NDR_PULL_ALLOC(ndr, r->file_name);
 
14226
                                NDR_CHECK(ndr_pull_relative_ptr1(ndr, r->file_name, _ptr_file_name));
 
14227
                        } else {
 
14228
                                r->file_name = NULL;
 
14229
                        }
 
14230
                        ndr->flags = _flags_save_string;
 
14231
                }
 
14232
                NDR_CHECK(ndr_pull_spoolss_DriverFileType(ndr, NDR_SCALARS, &r->file_type));
 
14233
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->file_version));
 
14234
                NDR_CHECK(ndr_pull_trailer_align(ndr, 5));
 
14235
        }
 
14236
        if (ndr_flags & NDR_BUFFERS) {
 
14237
                {
 
14238
                        uint32_t _flags_save_string = ndr->flags;
 
14239
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
14240
                        if (r->file_name) {
 
14241
                                uint32_t _relative_save_offset;
 
14242
                                _relative_save_offset = ndr->offset;
 
14243
                                NDR_CHECK(ndr_pull_relative_ptr2(ndr, r->file_name));
 
14244
                                _mem_save_file_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
14245
                                NDR_PULL_SET_MEM_CTX(ndr, r->file_name, 0);
 
14246
                                NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->file_name));
 
14247
                                NDR_PULL_SET_MEM_CTX(ndr, _mem_save_file_name_0, 0);
 
14248
                                ndr->offset = _relative_save_offset;
 
14249
                        }
 
14250
                        ndr->flags = _flags_save_string;
 
14251
                }
 
14252
        }
 
14253
        return NDR_ERR_SUCCESS;
 
14254
}
 
14255
 
 
14256
_PUBLIC_ void ndr_print_spoolss_DriverFileInfo(struct ndr_print *ndr, const char *name, const struct spoolss_DriverFileInfo *r)
 
14257
{
 
14258
        ndr_print_struct(ndr, name, "spoolss_DriverFileInfo");
 
14259
        ndr->depth++;
 
14260
        ndr_print_ptr(ndr, "file_name", r->file_name);
 
14261
        ndr->depth++;
 
14262
        if (r->file_name) {
 
14263
                ndr_print_string(ndr, "file_name", r->file_name);
 
14264
        }
 
14265
        ndr->depth--;
 
14266
        ndr_print_spoolss_DriverFileType(ndr, "file_type", r->file_type);
 
14267
        ndr_print_uint32(ndr, "file_version", r->file_version);
 
14268
        ndr->depth--;
 
14269
}
 
14270
 
 
14271
_PUBLIC_ void ndr_print_spoolss_DriverInfo101(struct ndr_print *ndr, const char *name, const struct spoolss_DriverInfo101 *r)
 
14272
{
 
14273
        uint32_t cntr_file_info_1;
 
14274
        ndr_print_struct(ndr, name, "spoolss_DriverInfo101");
 
14275
        ndr->depth++;
 
14276
        ndr_print_spoolss_DriverOSVersion(ndr, "version", r->version);
 
14277
        ndr_print_ptr(ndr, "driver_name", r->driver_name);
 
14278
        ndr->depth++;
 
14279
        if (r->driver_name) {
 
14280
                ndr_print_string(ndr, "driver_name", r->driver_name);
 
14281
        }
 
14282
        ndr->depth--;
 
14283
        ndr_print_ptr(ndr, "architecture", r->architecture);
 
14284
        ndr->depth++;
 
14285
        if (r->architecture) {
 
14286
                ndr_print_string(ndr, "architecture", r->architecture);
 
14287
        }
 
14288
        ndr->depth--;
 
14289
        ndr_print_ptr(ndr, "file_info", r->file_info);
 
14290
        ndr->depth++;
 
14291
        if (r->file_info) {
 
14292
                ndr->print(ndr, "%s: ARRAY(%d)", "file_info", (int)r->file_count);
 
14293
                ndr->depth++;
 
14294
                for (cntr_file_info_1=0;cntr_file_info_1<r->file_count;cntr_file_info_1++) {
 
14295
                        char *idx_1=NULL;
 
14296
                        if (asprintf(&idx_1, "[%d]", cntr_file_info_1) != -1) {
 
14297
                                ndr_print_spoolss_DriverFileInfo(ndr, "file_info", &r->file_info[cntr_file_info_1]);
 
14298
                                free(idx_1);
 
14299
                        }
 
14300
                }
 
14301
                ndr->depth--;
 
14302
        }
 
14303
        ndr->depth--;
 
14304
        ndr_print_uint32(ndr, "file_count", r->file_count);
 
14305
        ndr_print_ptr(ndr, "monitor_name", r->monitor_name);
 
14306
        ndr->depth++;
 
14307
        if (r->monitor_name) {
 
14308
                ndr_print_string(ndr, "monitor_name", r->monitor_name);
 
14309
        }
 
14310
        ndr->depth--;
 
14311
        ndr_print_ptr(ndr, "default_datatype", r->default_datatype);
 
14312
        ndr->depth++;
 
14313
        if (r->default_datatype) {
 
14314
                ndr_print_string(ndr, "default_datatype", r->default_datatype);
 
14315
        }
 
14316
        ndr->depth--;
 
14317
        ndr_print_ptr(ndr, "previous_names", r->previous_names);
 
14318
        ndr->depth++;
 
14319
        if (r->previous_names) {
 
14320
                ndr_print_string_array(ndr, "previous_names", r->previous_names);
 
14321
        }
 
14322
        ndr->depth--;
 
14323
        ndr_print_NTTIME(ndr, "driver_date", r->driver_date);
 
14324
        ndr_print_hyper(ndr, "driver_version", r->driver_version);
 
14325
        ndr_print_ptr(ndr, "manufacturer_name", r->manufacturer_name);
 
14326
        ndr->depth++;
 
14327
        if (r->manufacturer_name) {
 
14328
                ndr_print_string(ndr, "manufacturer_name", r->manufacturer_name);
 
14329
        }
 
14330
        ndr->depth--;
 
14331
        ndr_print_ptr(ndr, "manufacturer_url", r->manufacturer_url);
 
14332
        ndr->depth++;
 
14333
        if (r->manufacturer_url) {
 
14334
                ndr_print_string(ndr, "manufacturer_url", r->manufacturer_url);
 
14335
        }
 
14336
        ndr->depth--;
 
14337
        ndr_print_ptr(ndr, "hardware_id", r->hardware_id);
 
14338
        ndr->depth++;
 
14339
        if (r->hardware_id) {
 
14340
                ndr_print_string(ndr, "hardware_id", r->hardware_id);
 
14341
        }
 
14342
        ndr->depth--;
 
14343
        ndr_print_ptr(ndr, "provider", r->provider);
 
14344
        ndr->depth++;
 
14345
        if (r->provider) {
 
14346
                ndr_print_string(ndr, "provider", r->provider);
 
14347
        }
 
14348
        ndr->depth--;
 
14349
        ndr->depth--;
 
14350
}
 
14351
 
 
14352
_PUBLIC_ size_t ndr_size_spoolss_DriverInfo101(const struct spoolss_DriverInfo101 *r, struct smb_iconv_convenience *ic, int flags)
 
14353
{
 
14354
        return ndr_size_struct(r, flags, (ndr_push_flags_fn_t)ndr_push_spoolss_DriverInfo101, ic);
 
14355
}
 
14356
 
 
14357
_PUBLIC_ enum ndr_err_code ndr_push_spoolss_DriverInfo(struct ndr_push *ndr, int ndr_flags, const union spoolss_DriverInfo *r)
 
14358
{
 
14359
        uint32_t _save_relative_base_offset = ndr_push_get_relative_base_offset(ndr);
 
14360
        {
 
14361
                uint32_t _flags_save_UNION = ndr->flags;
 
14362
                ndr_set_flags(&ndr->flags, LIBNDR_FLAG_RELATIVE_REVERSE);
 
14363
                if (ndr_flags & NDR_SCALARS) {
 
14364
                        int level = ndr_push_get_switch_value(ndr, r);
 
14365
                        NDR_CHECK(ndr_push_union_align(ndr, 8));
 
14366
                        switch (level) {
 
14367
                                case 1: {
 
14368
                                        NDR_CHECK(ndr_push_align(ndr, 5));
 
14369
                                        NDR_CHECK(ndr_push_setup_relative_base_offset1(ndr, r, ndr->offset));
 
14370
                                        NDR_CHECK(ndr_push_spoolss_DriverInfo1(ndr, NDR_SCALARS, &r->info1));
 
14371
                                break; }
 
14372
 
 
14373
                                case 2: {
 
14374
                                        NDR_CHECK(ndr_push_align(ndr, 5));
 
14375
                                        NDR_CHECK(ndr_push_setup_relative_base_offset1(ndr, r, ndr->offset));
 
14376
                                        NDR_CHECK(ndr_push_spoolss_DriverInfo2(ndr, NDR_SCALARS, &r->info2));
 
14377
                                break; }
 
14378
 
 
14379
                                case 3: {
 
14380
                                        NDR_CHECK(ndr_push_align(ndr, 5));
 
14381
                                        NDR_CHECK(ndr_push_setup_relative_base_offset1(ndr, r, ndr->offset));
 
14382
                                        NDR_CHECK(ndr_push_spoolss_DriverInfo3(ndr, NDR_SCALARS, &r->info3));
 
14383
                                break; }
 
14384
 
 
14385
                                case 4: {
 
14386
                                        NDR_CHECK(ndr_push_align(ndr, 5));
 
14387
                                        NDR_CHECK(ndr_push_setup_relative_base_offset1(ndr, r, ndr->offset));
 
14388
                                        NDR_CHECK(ndr_push_spoolss_DriverInfo4(ndr, NDR_SCALARS, &r->info4));
 
14389
                                break; }
 
14390
 
 
14391
                                case 5: {
 
14392
                                        NDR_CHECK(ndr_push_align(ndr, 5));
 
14393
                                        NDR_CHECK(ndr_push_setup_relative_base_offset1(ndr, r, ndr->offset));
 
14394
                                        NDR_CHECK(ndr_push_spoolss_DriverInfo5(ndr, NDR_SCALARS, &r->info5));
 
14395
                                break; }
 
14396
 
 
14397
                                case 6: {
 
14398
                                        NDR_CHECK(ndr_push_align(ndr, 8));
 
14399
                                        NDR_CHECK(ndr_push_setup_relative_base_offset1(ndr, r, ndr->offset));
 
14400
                                        NDR_CHECK(ndr_push_spoolss_DriverInfo6(ndr, NDR_SCALARS, &r->info6));
 
14401
                                break; }
 
14402
 
 
14403
                                case 7: {
 
14404
                                        NDR_CHECK(ndr_push_align(ndr, 5));
 
14405
                                        NDR_CHECK(ndr_push_setup_relative_base_offset1(ndr, r, ndr->offset));
 
14406
                                        NDR_CHECK(ndr_push_spoolss_DriverInfo7(ndr, NDR_SCALARS, &r->info7));
 
14407
                                break; }
 
14408
 
 
14409
                                case 8: {
 
14410
                                        NDR_CHECK(ndr_push_align(ndr, 8));
 
14411
                                        NDR_CHECK(ndr_push_setup_relative_base_offset1(ndr, r, ndr->offset));
 
14412
                                        NDR_CHECK(ndr_push_spoolss_DriverInfo8(ndr, NDR_SCALARS, &r->info8));
 
14413
                                break; }
 
14414
 
 
14415
                                case 101: {
 
14416
                                        NDR_CHECK(ndr_push_align(ndr, 8));
 
14417
                                        NDR_CHECK(ndr_push_setup_relative_base_offset1(ndr, r, ndr->offset));
 
14418
                                        NDR_CHECK(ndr_push_spoolss_DriverInfo101(ndr, NDR_SCALARS, &r->info101));
 
14419
                                break; }
 
14420
 
 
14421
                                default: {
 
14422
                                break; }
 
14423
 
 
14424
                        }
 
14425
                }
 
14426
                if (ndr_flags & NDR_BUFFERS) {
 
14427
                        int level = ndr_push_get_switch_value(ndr, r);
 
14428
                        NDR_CHECK(ndr_push_setup_relative_base_offset2(ndr, r));
 
14429
                        switch (level) {
 
14430
                                case 1:
 
14431
                                        NDR_CHECK(ndr_push_spoolss_DriverInfo1(ndr, NDR_BUFFERS, &r->info1));
 
14432
                                break;
 
14433
 
 
14434
                                case 2:
 
14435
                                        NDR_CHECK(ndr_push_spoolss_DriverInfo2(ndr, NDR_BUFFERS, &r->info2));
 
14436
                                break;
 
14437
 
 
14438
                                case 3:
 
14439
                                        NDR_CHECK(ndr_push_spoolss_DriverInfo3(ndr, NDR_BUFFERS, &r->info3));
 
14440
                                break;
 
14441
 
 
14442
                                case 4:
 
14443
                                        NDR_CHECK(ndr_push_spoolss_DriverInfo4(ndr, NDR_BUFFERS, &r->info4));
 
14444
                                break;
 
14445
 
 
14446
                                case 5:
 
14447
                                        NDR_CHECK(ndr_push_spoolss_DriverInfo5(ndr, NDR_BUFFERS, &r->info5));
 
14448
                                break;
 
14449
 
 
14450
                                case 6:
 
14451
                                        NDR_CHECK(ndr_push_spoolss_DriverInfo6(ndr, NDR_BUFFERS, &r->info6));
 
14452
                                break;
 
14453
 
 
14454
                                case 7:
 
14455
                                        NDR_CHECK(ndr_push_spoolss_DriverInfo7(ndr, NDR_BUFFERS, &r->info7));
 
14456
                                break;
 
14457
 
 
14458
                                case 8:
 
14459
                                        NDR_CHECK(ndr_push_spoolss_DriverInfo8(ndr, NDR_BUFFERS, &r->info8));
 
14460
                                break;
 
14461
 
 
14462
                                case 101:
 
14463
                                        NDR_CHECK(ndr_push_spoolss_DriverInfo101(ndr, NDR_BUFFERS, &r->info101));
 
14464
                                break;
 
14465
 
 
14466
                                default:
 
14467
                                break;
 
14468
 
 
14469
                        }
 
14470
                }
 
14471
                ndr->flags = _flags_save_UNION;
 
14472
        }
 
14473
        ndr_push_restore_relative_base_offset(ndr, _save_relative_base_offset);
 
14474
        return NDR_ERR_SUCCESS;
 
14475
}
 
14476
 
 
14477
_PUBLIC_ enum ndr_err_code ndr_pull_spoolss_DriverInfo(struct ndr_pull *ndr, int ndr_flags, union spoolss_DriverInfo *r)
 
14478
{
 
14479
        uint32_t _save_relative_base_offset = ndr_pull_get_relative_base_offset(ndr);
 
14480
        int level;
 
14481
        {
 
14482
                uint32_t _flags_save_UNION = ndr->flags;
 
14483
                ndr_set_flags(&ndr->flags, LIBNDR_FLAG_RELATIVE_REVERSE);
 
14484
                level = ndr_pull_get_switch_value(ndr, r);
 
14485
                if (ndr_flags & NDR_SCALARS) {
 
14486
                        NDR_CHECK(ndr_pull_union_align(ndr, 8));
 
14487
                        switch (level) {
 
14488
                                case 1: {
 
14489
                                        NDR_CHECK(ndr_pull_align(ndr, 5));
 
14490
                                        NDR_CHECK(ndr_pull_setup_relative_base_offset1(ndr, r, ndr->offset));
 
14491
                                        NDR_CHECK(ndr_pull_spoolss_DriverInfo1(ndr, NDR_SCALARS, &r->info1));
 
14492
                                break; }
 
14493
 
 
14494
                                case 2: {
 
14495
                                        NDR_CHECK(ndr_pull_align(ndr, 5));
 
14496
                                        NDR_CHECK(ndr_pull_setup_relative_base_offset1(ndr, r, ndr->offset));
 
14497
                                        NDR_CHECK(ndr_pull_spoolss_DriverInfo2(ndr, NDR_SCALARS, &r->info2));
 
14498
                                break; }
 
14499
 
 
14500
                                case 3: {
 
14501
                                        NDR_CHECK(ndr_pull_align(ndr, 5));
 
14502
                                        NDR_CHECK(ndr_pull_setup_relative_base_offset1(ndr, r, ndr->offset));
 
14503
                                        NDR_CHECK(ndr_pull_spoolss_DriverInfo3(ndr, NDR_SCALARS, &r->info3));
 
14504
                                break; }
 
14505
 
 
14506
                                case 4: {
 
14507
                                        NDR_CHECK(ndr_pull_align(ndr, 5));
 
14508
                                        NDR_CHECK(ndr_pull_setup_relative_base_offset1(ndr, r, ndr->offset));
 
14509
                                        NDR_CHECK(ndr_pull_spoolss_DriverInfo4(ndr, NDR_SCALARS, &r->info4));
 
14510
                                break; }
 
14511
 
 
14512
                                case 5: {
 
14513
                                        NDR_CHECK(ndr_pull_align(ndr, 5));
 
14514
                                        NDR_CHECK(ndr_pull_setup_relative_base_offset1(ndr, r, ndr->offset));
 
14515
                                        NDR_CHECK(ndr_pull_spoolss_DriverInfo5(ndr, NDR_SCALARS, &r->info5));
 
14516
                                break; }
 
14517
 
 
14518
                                case 6: {
 
14519
                                        NDR_CHECK(ndr_pull_align(ndr, 8));
 
14520
                                        NDR_CHECK(ndr_pull_setup_relative_base_offset1(ndr, r, ndr->offset));
 
14521
                                        NDR_CHECK(ndr_pull_spoolss_DriverInfo6(ndr, NDR_SCALARS, &r->info6));
 
14522
                                break; }
 
14523
 
 
14524
                                case 7: {
 
14525
                                        NDR_CHECK(ndr_pull_align(ndr, 5));
 
14526
                                        NDR_CHECK(ndr_pull_setup_relative_base_offset1(ndr, r, ndr->offset));
 
14527
                                        NDR_CHECK(ndr_pull_spoolss_DriverInfo7(ndr, NDR_SCALARS, &r->info7));
 
14528
                                break; }
 
14529
 
 
14530
                                case 8: {
 
14531
                                        NDR_CHECK(ndr_pull_align(ndr, 8));
 
14532
                                        NDR_CHECK(ndr_pull_setup_relative_base_offset1(ndr, r, ndr->offset));
 
14533
                                        NDR_CHECK(ndr_pull_spoolss_DriverInfo8(ndr, NDR_SCALARS, &r->info8));
 
14534
                                break; }
 
14535
 
 
14536
                                case 101: {
 
14537
                                        NDR_CHECK(ndr_pull_align(ndr, 8));
 
14538
                                        NDR_CHECK(ndr_pull_setup_relative_base_offset1(ndr, r, ndr->offset));
 
14539
                                        NDR_CHECK(ndr_pull_spoolss_DriverInfo101(ndr, NDR_SCALARS, &r->info101));
 
14540
                                break; }
 
14541
 
 
14542
                                default: {
 
14543
                                break; }
 
14544
 
 
14545
                        }
 
14546
                }
 
14547
                if (ndr_flags & NDR_BUFFERS) {
 
14548
                        NDR_CHECK(ndr_pull_setup_relative_base_offset2(ndr, r));
 
14549
                        switch (level) {
 
14550
                                case 1:
 
14551
                                        NDR_CHECK(ndr_pull_spoolss_DriverInfo1(ndr, NDR_BUFFERS, &r->info1));
 
14552
                                break;
 
14553
 
 
14554
                                case 2:
 
14555
                                        NDR_CHECK(ndr_pull_spoolss_DriverInfo2(ndr, NDR_BUFFERS, &r->info2));
 
14556
                                break;
 
14557
 
 
14558
                                case 3:
 
14559
                                        NDR_CHECK(ndr_pull_spoolss_DriverInfo3(ndr, NDR_BUFFERS, &r->info3));
 
14560
                                break;
 
14561
 
 
14562
                                case 4:
 
14563
                                        NDR_CHECK(ndr_pull_spoolss_DriverInfo4(ndr, NDR_BUFFERS, &r->info4));
 
14564
                                break;
 
14565
 
 
14566
                                case 5:
 
14567
                                        NDR_CHECK(ndr_pull_spoolss_DriverInfo5(ndr, NDR_BUFFERS, &r->info5));
 
14568
                                break;
 
14569
 
 
14570
                                case 6:
 
14571
                                        NDR_CHECK(ndr_pull_spoolss_DriverInfo6(ndr, NDR_BUFFERS, &r->info6));
 
14572
                                break;
 
14573
 
 
14574
                                case 7:
 
14575
                                        NDR_CHECK(ndr_pull_spoolss_DriverInfo7(ndr, NDR_BUFFERS, &r->info7));
 
14576
                                break;
 
14577
 
 
14578
                                case 8:
 
14579
                                        NDR_CHECK(ndr_pull_spoolss_DriverInfo8(ndr, NDR_BUFFERS, &r->info8));
 
14580
                                break;
 
14581
 
 
14582
                                case 101:
 
14583
                                        NDR_CHECK(ndr_pull_spoolss_DriverInfo101(ndr, NDR_BUFFERS, &r->info101));
 
14584
                                break;
 
14585
 
 
14586
                                default:
 
14587
                                break;
 
14588
 
 
14589
                        }
 
14590
                }
 
14591
                ndr->flags = _flags_save_UNION;
 
14592
        }
 
14593
        ndr_pull_restore_relative_base_offset(ndr, _save_relative_base_offset);
 
14594
        return NDR_ERR_SUCCESS;
 
14595
}
 
14596
 
 
14597
_PUBLIC_ void ndr_print_spoolss_DriverInfo(struct ndr_print *ndr, const char *name, const union spoolss_DriverInfo *r)
 
14598
{
 
14599
        int level;
 
14600
        {
 
14601
                uint32_t _flags_save_UNION = ndr->flags;
 
14602
                ndr_set_flags(&ndr->flags, LIBNDR_FLAG_RELATIVE_REVERSE);
 
14603
                level = ndr_print_get_switch_value(ndr, r);
 
14604
                ndr_print_union(ndr, name, level, "spoolss_DriverInfo");
 
14605
                switch (level) {
 
14606
                        case 1:
 
14607
                                ndr_print_spoolss_DriverInfo1(ndr, "info1", &r->info1);
 
14608
                        break;
 
14609
 
 
14610
                        case 2:
 
14611
                                ndr_print_spoolss_DriverInfo2(ndr, "info2", &r->info2);
 
14612
                        break;
 
14613
 
 
14614
                        case 3:
 
14615
                                ndr_print_spoolss_DriverInfo3(ndr, "info3", &r->info3);
 
14616
                        break;
 
14617
 
 
14618
                        case 4:
 
14619
                                ndr_print_spoolss_DriverInfo4(ndr, "info4", &r->info4);
 
14620
                        break;
 
14621
 
 
14622
                        case 5:
 
14623
                                ndr_print_spoolss_DriverInfo5(ndr, "info5", &r->info5);
 
14624
                        break;
 
14625
 
 
14626
                        case 6:
 
14627
                                ndr_print_spoolss_DriverInfo6(ndr, "info6", &r->info6);
 
14628
                        break;
 
14629
 
 
14630
                        case 7:
 
14631
                                ndr_print_spoolss_DriverInfo7(ndr, "info7", &r->info7);
 
14632
                        break;
 
14633
 
 
14634
                        case 8:
 
14635
                                ndr_print_spoolss_DriverInfo8(ndr, "info8", &r->info8);
 
14636
                        break;
 
14637
 
 
14638
                        case 101:
 
14639
                                ndr_print_spoolss_DriverInfo101(ndr, "info101", &r->info101);
 
14640
                        break;
 
14641
 
 
14642
                        default:
 
14643
                        break;
 
14644
 
 
14645
                }
 
14646
                ndr->flags = _flags_save_UNION;
 
14647
        }
 
14648
}
 
14649
 
 
14650
_PUBLIC_ size_t ndr_size_spoolss_DriverInfo(const union spoolss_DriverInfo *r, uint32_t level, struct smb_iconv_convenience *ic, int flags)
 
14651
{
 
14652
        flags |= LIBNDR_FLAG_RELATIVE_REVERSE;
 
14653
        return ndr_size_union(r, flags, level, (ndr_push_flags_fn_t)ndr_push_spoolss_DriverInfo, ic);
 
14654
}
 
14655
 
 
14656
_PUBLIC_ enum ndr_err_code ndr_push_spoolss_DriverDirectoryInfo1(struct ndr_push *ndr, int ndr_flags, const struct spoolss_DriverDirectoryInfo1 *r)
 
14657
{
 
14658
        if (ndr_flags & NDR_SCALARS) {
 
14659
                NDR_CHECK(ndr_push_align(ndr, 4));
 
14660
                {
 
14661
                        uint32_t _flags_save_string = ndr->flags;
 
14662
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
14663
                        NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->directory_name));
 
14664
                        ndr->flags = _flags_save_string;
 
14665
                }
 
14666
                NDR_CHECK(ndr_push_trailer_align(ndr, 4));
 
14667
        }
 
14668
        if (ndr_flags & NDR_BUFFERS) {
 
14669
        }
 
14670
        return NDR_ERR_SUCCESS;
 
14671
}
 
14672
 
 
14673
_PUBLIC_ enum ndr_err_code ndr_pull_spoolss_DriverDirectoryInfo1(struct ndr_pull *ndr, int ndr_flags, struct spoolss_DriverDirectoryInfo1 *r)
 
14674
{
 
14675
        if (ndr_flags & NDR_SCALARS) {
 
14676
                NDR_CHECK(ndr_pull_align(ndr, 4));
 
14677
                {
 
14678
                        uint32_t _flags_save_string = ndr->flags;
 
14679
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
14680
                        NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->directory_name));
 
14681
                        ndr->flags = _flags_save_string;
 
14682
                }
 
14683
                NDR_CHECK(ndr_pull_trailer_align(ndr, 4));
 
14684
        }
 
14685
        if (ndr_flags & NDR_BUFFERS) {
 
14686
        }
 
14687
        return NDR_ERR_SUCCESS;
 
14688
}
 
14689
 
 
14690
_PUBLIC_ void ndr_print_spoolss_DriverDirectoryInfo1(struct ndr_print *ndr, const char *name, const struct spoolss_DriverDirectoryInfo1 *r)
 
14691
{
 
14692
        ndr_print_struct(ndr, name, "spoolss_DriverDirectoryInfo1");
 
14693
        ndr->depth++;
 
14694
        ndr_print_string(ndr, "directory_name", r->directory_name);
 
14695
        ndr->depth--;
 
14696
}
 
14697
 
 
14698
_PUBLIC_ size_t ndr_size_spoolss_DriverDirectoryInfo1(const struct spoolss_DriverDirectoryInfo1 *r, struct smb_iconv_convenience *ic, int flags)
 
14699
{
 
14700
        return ndr_size_struct(r, flags, (ndr_push_flags_fn_t)ndr_push_spoolss_DriverDirectoryInfo1, ic);
 
14701
}
 
14702
 
 
14703
_PUBLIC_ enum ndr_err_code ndr_push_spoolss_DriverDirectoryInfo(struct ndr_push *ndr, int ndr_flags, const union spoolss_DriverDirectoryInfo *r)
 
14704
{
 
14705
        uint32_t _save_relative_base_offset = ndr_push_get_relative_base_offset(ndr);
 
14706
        {
 
14707
                uint32_t _flags_save_UNION = ndr->flags;
 
14708
                ndr_set_flags(&ndr->flags, LIBNDR_FLAG_RELATIVE_REVERSE);
 
14709
                if (ndr_flags & NDR_SCALARS) {
 
14710
                        int level = ndr_push_get_switch_value(ndr, r);
 
14711
                        NDR_CHECK(ndr_push_union_align(ndr, 4));
 
14712
                        switch (level) {
 
14713
                                case 1: {
 
14714
                                        NDR_CHECK(ndr_push_align(ndr, 4));
 
14715
                                        NDR_CHECK(ndr_push_setup_relative_base_offset1(ndr, r, ndr->offset));
 
14716
                                        NDR_CHECK(ndr_push_spoolss_DriverDirectoryInfo1(ndr, NDR_SCALARS, &r->info1));
 
14717
                                break; }
 
14718
 
 
14719
                                default: {
 
14720
                                        NDR_CHECK(ndr_push_align(ndr, 4));
 
14721
                                        NDR_CHECK(ndr_push_setup_relative_base_offset1(ndr, r, ndr->offset));
 
14722
                                        NDR_CHECK(ndr_push_spoolss_DriverDirectoryInfo1(ndr, NDR_SCALARS, &r->info1));
 
14723
                                break; }
 
14724
 
 
14725
                        }
 
14726
                }
 
14727
                if (ndr_flags & NDR_BUFFERS) {
 
14728
                        int level = ndr_push_get_switch_value(ndr, r);
 
14729
                        NDR_CHECK(ndr_push_setup_relative_base_offset2(ndr, r));
 
14730
                        switch (level) {
 
14731
                                case 1:
 
14732
                                break;
 
14733
 
 
14734
                                default:
 
14735
                                break;
 
14736
 
 
14737
                        }
 
14738
                }
 
14739
                ndr->flags = _flags_save_UNION;
 
14740
        }
 
14741
        ndr_push_restore_relative_base_offset(ndr, _save_relative_base_offset);
 
14742
        return NDR_ERR_SUCCESS;
 
14743
}
 
14744
 
 
14745
_PUBLIC_ enum ndr_err_code ndr_pull_spoolss_DriverDirectoryInfo(struct ndr_pull *ndr, int ndr_flags, union spoolss_DriverDirectoryInfo *r)
 
14746
{
 
14747
        uint32_t _save_relative_base_offset = ndr_pull_get_relative_base_offset(ndr);
 
14748
        int level;
 
14749
        {
 
14750
                uint32_t _flags_save_UNION = ndr->flags;
 
14751
                ndr_set_flags(&ndr->flags, LIBNDR_FLAG_RELATIVE_REVERSE);
 
14752
                level = ndr_pull_get_switch_value(ndr, r);
 
14753
                if (ndr_flags & NDR_SCALARS) {
 
14754
                        NDR_CHECK(ndr_pull_union_align(ndr, 4));
 
14755
                        switch (level) {
 
14756
                                case 1: {
 
14757
                                        NDR_CHECK(ndr_pull_align(ndr, 4));
 
14758
                                        NDR_CHECK(ndr_pull_setup_relative_base_offset1(ndr, r, ndr->offset));
 
14759
                                        NDR_CHECK(ndr_pull_spoolss_DriverDirectoryInfo1(ndr, NDR_SCALARS, &r->info1));
 
14760
                                break; }
 
14761
 
 
14762
                                default: {
 
14763
                                        NDR_CHECK(ndr_pull_align(ndr, 4));
 
14764
                                        NDR_CHECK(ndr_pull_setup_relative_base_offset1(ndr, r, ndr->offset));
 
14765
                                        NDR_CHECK(ndr_pull_spoolss_DriverDirectoryInfo1(ndr, NDR_SCALARS, &r->info1));
 
14766
                                break; }
 
14767
 
 
14768
                        }
 
14769
                }
 
14770
                if (ndr_flags & NDR_BUFFERS) {
 
14771
                        NDR_CHECK(ndr_pull_setup_relative_base_offset2(ndr, r));
 
14772
                        switch (level) {
 
14773
                                case 1:
 
14774
                                break;
 
14775
 
 
14776
                                default:
 
14777
                                break;
 
14778
 
 
14779
                        }
 
14780
                }
 
14781
                ndr->flags = _flags_save_UNION;
 
14782
        }
 
14783
        ndr_pull_restore_relative_base_offset(ndr, _save_relative_base_offset);
 
14784
        return NDR_ERR_SUCCESS;
 
14785
}
 
14786
 
 
14787
_PUBLIC_ void ndr_print_spoolss_DriverDirectoryInfo(struct ndr_print *ndr, const char *name, const union spoolss_DriverDirectoryInfo *r)
 
14788
{
 
14789
        int level;
 
14790
        {
 
14791
                uint32_t _flags_save_UNION = ndr->flags;
 
14792
                ndr_set_flags(&ndr->flags, LIBNDR_FLAG_RELATIVE_REVERSE);
 
14793
                level = ndr_print_get_switch_value(ndr, r);
 
14794
                ndr_print_union(ndr, name, level, "spoolss_DriverDirectoryInfo");
 
14795
                switch (level) {
 
14796
                        case 1:
 
14797
                                ndr_print_spoolss_DriverDirectoryInfo1(ndr, "info1", &r->info1);
 
14798
                        break;
 
14799
 
 
14800
                        default:
 
14801
                                ndr_print_spoolss_DriverDirectoryInfo1(ndr, "info1", &r->info1);
 
14802
                        break;
 
14803
 
 
14804
                }
 
14805
                ndr->flags = _flags_save_UNION;
 
14806
        }
 
14807
}
 
14808
 
 
14809
_PUBLIC_ size_t ndr_size_spoolss_DriverDirectoryInfo(const union spoolss_DriverDirectoryInfo *r, uint32_t level, struct smb_iconv_convenience *ic, int flags)
 
14810
{
 
14811
        flags |= LIBNDR_FLAG_RELATIVE_REVERSE;
 
14812
        return ndr_size_union(r, flags, level, (ndr_push_flags_fn_t)ndr_push_spoolss_DriverDirectoryInfo, ic);
 
14813
}
 
14814
 
 
14815
_PUBLIC_ enum ndr_err_code ndr_push_spoolss_PrintProcessorInfo1(struct ndr_push *ndr, int ndr_flags, const struct spoolss_PrintProcessorInfo1 *r)
 
14816
{
 
14817
        if (ndr_flags & NDR_SCALARS) {
 
14818
                NDR_CHECK(ndr_push_align(ndr, 5));
 
14819
                {
 
14820
                        uint32_t _flags_save_string = ndr->flags;
 
14821
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
14822
                        NDR_CHECK(ndr_push_relative_ptr1(ndr, r->print_processor_name));
 
14823
                        ndr->flags = _flags_save_string;
 
14824
                }
 
14825
                NDR_CHECK(ndr_push_trailer_align(ndr, 5));
 
14826
        }
 
14827
        if (ndr_flags & NDR_BUFFERS) {
 
14828
                {
 
14829
                        uint32_t _flags_save_string = ndr->flags;
 
14830
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
14831
                        if (r->print_processor_name) {
 
14832
                                NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->print_processor_name));
 
14833
                                NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->print_processor_name));
 
14834
                                NDR_CHECK(ndr_push_relative_ptr2_end(ndr, r->print_processor_name));
 
14835
                        }
 
14836
                        ndr->flags = _flags_save_string;
 
14837
                }
 
14838
        }
 
14839
        return NDR_ERR_SUCCESS;
 
14840
}
 
14841
 
 
14842
_PUBLIC_ enum ndr_err_code ndr_pull_spoolss_PrintProcessorInfo1(struct ndr_pull *ndr, int ndr_flags, struct spoolss_PrintProcessorInfo1 *r)
 
14843
{
 
14844
        uint32_t _ptr_print_processor_name;
 
14845
        TALLOC_CTX *_mem_save_print_processor_name_0;
 
14846
        if (ndr_flags & NDR_SCALARS) {
 
14847
                NDR_CHECK(ndr_pull_align(ndr, 5));
 
14848
                {
 
14849
                        uint32_t _flags_save_string = ndr->flags;
 
14850
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
14851
                        NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_print_processor_name));
 
14852
                        if (_ptr_print_processor_name) {
 
14853
                                NDR_PULL_ALLOC(ndr, r->print_processor_name);
 
14854
                                NDR_CHECK(ndr_pull_relative_ptr1(ndr, r->print_processor_name, _ptr_print_processor_name));
 
14855
                        } else {
 
14856
                                r->print_processor_name = NULL;
 
14857
                        }
 
14858
                        ndr->flags = _flags_save_string;
 
14859
                }
 
14860
                NDR_CHECK(ndr_pull_trailer_align(ndr, 5));
 
14861
        }
 
14862
        if (ndr_flags & NDR_BUFFERS) {
 
14863
                {
 
14864
                        uint32_t _flags_save_string = ndr->flags;
 
14865
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
14866
                        if (r->print_processor_name) {
 
14867
                                uint32_t _relative_save_offset;
 
14868
                                _relative_save_offset = ndr->offset;
 
14869
                                NDR_CHECK(ndr_pull_relative_ptr2(ndr, r->print_processor_name));
 
14870
                                _mem_save_print_processor_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
14871
                                NDR_PULL_SET_MEM_CTX(ndr, r->print_processor_name, 0);
 
14872
                                NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->print_processor_name));
 
14873
                                NDR_PULL_SET_MEM_CTX(ndr, _mem_save_print_processor_name_0, 0);
 
14874
                                ndr->offset = _relative_save_offset;
 
14875
                        }
 
14876
                        ndr->flags = _flags_save_string;
 
14877
                }
 
14878
        }
 
14879
        return NDR_ERR_SUCCESS;
 
14880
}
 
14881
 
 
14882
_PUBLIC_ void ndr_print_spoolss_PrintProcessorInfo1(struct ndr_print *ndr, const char *name, const struct spoolss_PrintProcessorInfo1 *r)
 
14883
{
 
14884
        ndr_print_struct(ndr, name, "spoolss_PrintProcessorInfo1");
 
14885
        ndr->depth++;
 
14886
        ndr_print_ptr(ndr, "print_processor_name", r->print_processor_name);
 
14887
        ndr->depth++;
 
14888
        if (r->print_processor_name) {
 
14889
                ndr_print_string(ndr, "print_processor_name", r->print_processor_name);
 
14890
        }
 
14891
        ndr->depth--;
 
14892
        ndr->depth--;
 
14893
}
 
14894
 
 
14895
_PUBLIC_ size_t ndr_size_spoolss_PrintProcessorInfo1(const struct spoolss_PrintProcessorInfo1 *r, struct smb_iconv_convenience *ic, int flags)
 
14896
{
 
14897
        return ndr_size_struct(r, flags, (ndr_push_flags_fn_t)ndr_push_spoolss_PrintProcessorInfo1, ic);
 
14898
}
 
14899
 
 
14900
_PUBLIC_ enum ndr_err_code ndr_push_spoolss_PrintProcessorInfo(struct ndr_push *ndr, int ndr_flags, const union spoolss_PrintProcessorInfo *r)
 
14901
{
 
14902
        uint32_t _save_relative_base_offset = ndr_push_get_relative_base_offset(ndr);
 
14903
        {
 
14904
                uint32_t _flags_save_UNION = ndr->flags;
 
14905
                ndr_set_flags(&ndr->flags, LIBNDR_FLAG_RELATIVE_REVERSE);
 
14906
                if (ndr_flags & NDR_SCALARS) {
 
14907
                        int level = ndr_push_get_switch_value(ndr, r);
 
14908
                        NDR_CHECK(ndr_push_union_align(ndr, 5));
 
14909
                        switch (level) {
 
14910
                                case 1: {
 
14911
                                        NDR_CHECK(ndr_push_align(ndr, 5));
 
14912
                                        NDR_CHECK(ndr_push_setup_relative_base_offset1(ndr, r, ndr->offset));
 
14913
                                        NDR_CHECK(ndr_push_spoolss_PrintProcessorInfo1(ndr, NDR_SCALARS, &r->info1));
 
14914
                                break; }
 
14915
 
 
14916
                                default: {
 
14917
                                break; }
 
14918
 
 
14919
                        }
 
14920
                }
 
14921
                if (ndr_flags & NDR_BUFFERS) {
 
14922
                        int level = ndr_push_get_switch_value(ndr, r);
 
14923
                        NDR_CHECK(ndr_push_setup_relative_base_offset2(ndr, r));
 
14924
                        switch (level) {
 
14925
                                case 1:
 
14926
                                        NDR_CHECK(ndr_push_spoolss_PrintProcessorInfo1(ndr, NDR_BUFFERS, &r->info1));
 
14927
                                break;
 
14928
 
 
14929
                                default:
 
14930
                                break;
 
14931
 
 
14932
                        }
 
14933
                }
 
14934
                ndr->flags = _flags_save_UNION;
 
14935
        }
 
14936
        ndr_push_restore_relative_base_offset(ndr, _save_relative_base_offset);
 
14937
        return NDR_ERR_SUCCESS;
 
14938
}
 
14939
 
 
14940
_PUBLIC_ enum ndr_err_code ndr_pull_spoolss_PrintProcessorInfo(struct ndr_pull *ndr, int ndr_flags, union spoolss_PrintProcessorInfo *r)
 
14941
{
 
14942
        uint32_t _save_relative_base_offset = ndr_pull_get_relative_base_offset(ndr);
 
14943
        int level;
 
14944
        {
 
14945
                uint32_t _flags_save_UNION = ndr->flags;
 
14946
                ndr_set_flags(&ndr->flags, LIBNDR_FLAG_RELATIVE_REVERSE);
 
14947
                level = ndr_pull_get_switch_value(ndr, r);
 
14948
                if (ndr_flags & NDR_SCALARS) {
 
14949
                        NDR_CHECK(ndr_pull_union_align(ndr, 5));
 
14950
                        switch (level) {
 
14951
                                case 1: {
 
14952
                                        NDR_CHECK(ndr_pull_align(ndr, 5));
 
14953
                                        NDR_CHECK(ndr_pull_setup_relative_base_offset1(ndr, r, ndr->offset));
 
14954
                                        NDR_CHECK(ndr_pull_spoolss_PrintProcessorInfo1(ndr, NDR_SCALARS, &r->info1));
 
14955
                                break; }
 
14956
 
 
14957
                                default: {
 
14958
                                break; }
 
14959
 
 
14960
                        }
 
14961
                }
 
14962
                if (ndr_flags & NDR_BUFFERS) {
 
14963
                        NDR_CHECK(ndr_pull_setup_relative_base_offset2(ndr, r));
 
14964
                        switch (level) {
 
14965
                                case 1:
 
14966
                                        NDR_CHECK(ndr_pull_spoolss_PrintProcessorInfo1(ndr, NDR_BUFFERS, &r->info1));
 
14967
                                break;
 
14968
 
 
14969
                                default:
 
14970
                                break;
 
14971
 
 
14972
                        }
 
14973
                }
 
14974
                ndr->flags = _flags_save_UNION;
 
14975
        }
 
14976
        ndr_pull_restore_relative_base_offset(ndr, _save_relative_base_offset);
 
14977
        return NDR_ERR_SUCCESS;
 
14978
}
 
14979
 
 
14980
_PUBLIC_ void ndr_print_spoolss_PrintProcessorInfo(struct ndr_print *ndr, const char *name, const union spoolss_PrintProcessorInfo *r)
 
14981
{
 
14982
        int level;
 
14983
        {
 
14984
                uint32_t _flags_save_UNION = ndr->flags;
 
14985
                ndr_set_flags(&ndr->flags, LIBNDR_FLAG_RELATIVE_REVERSE);
 
14986
                level = ndr_print_get_switch_value(ndr, r);
 
14987
                ndr_print_union(ndr, name, level, "spoolss_PrintProcessorInfo");
 
14988
                switch (level) {
 
14989
                        case 1:
 
14990
                                ndr_print_spoolss_PrintProcessorInfo1(ndr, "info1", &r->info1);
 
14991
                        break;
 
14992
 
 
14993
                        default:
 
14994
                        break;
 
14995
 
 
14996
                }
 
14997
                ndr->flags = _flags_save_UNION;
 
14998
        }
 
14999
}
 
15000
 
 
15001
_PUBLIC_ enum ndr_err_code ndr_push_spoolss_PrintProcessorDirectoryInfo1(struct ndr_push *ndr, int ndr_flags, const struct spoolss_PrintProcessorDirectoryInfo1 *r)
 
15002
{
 
15003
        if (ndr_flags & NDR_SCALARS) {
 
15004
                NDR_CHECK(ndr_push_align(ndr, 4));
 
15005
                {
 
15006
                        uint32_t _flags_save_string = ndr->flags;
 
15007
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
15008
                        NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->directory_name));
 
15009
                        ndr->flags = _flags_save_string;
 
15010
                }
 
15011
                NDR_CHECK(ndr_push_trailer_align(ndr, 4));
 
15012
        }
 
15013
        if (ndr_flags & NDR_BUFFERS) {
 
15014
        }
 
15015
        return NDR_ERR_SUCCESS;
 
15016
}
 
15017
 
 
15018
_PUBLIC_ enum ndr_err_code ndr_pull_spoolss_PrintProcessorDirectoryInfo1(struct ndr_pull *ndr, int ndr_flags, struct spoolss_PrintProcessorDirectoryInfo1 *r)
 
15019
{
 
15020
        if (ndr_flags & NDR_SCALARS) {
 
15021
                NDR_CHECK(ndr_pull_align(ndr, 4));
 
15022
                {
 
15023
                        uint32_t _flags_save_string = ndr->flags;
 
15024
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
15025
                        NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->directory_name));
 
15026
                        ndr->flags = _flags_save_string;
 
15027
                }
 
15028
                NDR_CHECK(ndr_pull_trailer_align(ndr, 4));
 
15029
        }
 
15030
        if (ndr_flags & NDR_BUFFERS) {
 
15031
        }
 
15032
        return NDR_ERR_SUCCESS;
 
15033
}
 
15034
 
 
15035
_PUBLIC_ void ndr_print_spoolss_PrintProcessorDirectoryInfo1(struct ndr_print *ndr, const char *name, const struct spoolss_PrintProcessorDirectoryInfo1 *r)
 
15036
{
 
15037
        ndr_print_struct(ndr, name, "spoolss_PrintProcessorDirectoryInfo1");
 
15038
        ndr->depth++;
 
15039
        ndr_print_string(ndr, "directory_name", r->directory_name);
 
15040
        ndr->depth--;
 
15041
}
 
15042
 
 
15043
_PUBLIC_ size_t ndr_size_spoolss_PrintProcessorDirectoryInfo1(const struct spoolss_PrintProcessorDirectoryInfo1 *r, struct smb_iconv_convenience *ic, int flags)
 
15044
{
 
15045
        return ndr_size_struct(r, flags, (ndr_push_flags_fn_t)ndr_push_spoolss_PrintProcessorDirectoryInfo1, ic);
 
15046
}
 
15047
 
 
15048
_PUBLIC_ enum ndr_err_code ndr_push_spoolss_PrintProcessorDirectoryInfo(struct ndr_push *ndr, int ndr_flags, const union spoolss_PrintProcessorDirectoryInfo *r)
 
15049
{
 
15050
        uint32_t _save_relative_base_offset = ndr_push_get_relative_base_offset(ndr);
 
15051
        {
 
15052
                uint32_t _flags_save_UNION = ndr->flags;
 
15053
                ndr_set_flags(&ndr->flags, LIBNDR_FLAG_RELATIVE_REVERSE);
 
15054
                if (ndr_flags & NDR_SCALARS) {
 
15055
                        int level = ndr_push_get_switch_value(ndr, r);
 
15056
                        NDR_CHECK(ndr_push_union_align(ndr, 4));
 
15057
                        switch (level) {
 
15058
                                case 1: {
 
15059
                                        NDR_CHECK(ndr_push_align(ndr, 4));
 
15060
                                        NDR_CHECK(ndr_push_setup_relative_base_offset1(ndr, r, ndr->offset));
 
15061
                                        NDR_CHECK(ndr_push_spoolss_PrintProcessorDirectoryInfo1(ndr, NDR_SCALARS, &r->info1));
 
15062
                                break; }
 
15063
 
 
15064
                                default: {
 
15065
                                        NDR_CHECK(ndr_push_align(ndr, 4));
 
15066
                                        NDR_CHECK(ndr_push_setup_relative_base_offset1(ndr, r, ndr->offset));
 
15067
                                        NDR_CHECK(ndr_push_spoolss_PrintProcessorDirectoryInfo1(ndr, NDR_SCALARS, &r->info1));
 
15068
                                break; }
 
15069
 
 
15070
                        }
 
15071
                }
 
15072
                if (ndr_flags & NDR_BUFFERS) {
 
15073
                        int level = ndr_push_get_switch_value(ndr, r);
 
15074
                        NDR_CHECK(ndr_push_setup_relative_base_offset2(ndr, r));
 
15075
                        switch (level) {
 
15076
                                case 1:
 
15077
                                break;
 
15078
 
 
15079
                                default:
 
15080
                                break;
 
15081
 
 
15082
                        }
 
15083
                }
 
15084
                ndr->flags = _flags_save_UNION;
 
15085
        }
 
15086
        ndr_push_restore_relative_base_offset(ndr, _save_relative_base_offset);
 
15087
        return NDR_ERR_SUCCESS;
 
15088
}
 
15089
 
 
15090
_PUBLIC_ enum ndr_err_code ndr_pull_spoolss_PrintProcessorDirectoryInfo(struct ndr_pull *ndr, int ndr_flags, union spoolss_PrintProcessorDirectoryInfo *r)
 
15091
{
 
15092
        uint32_t _save_relative_base_offset = ndr_pull_get_relative_base_offset(ndr);
 
15093
        int level;
 
15094
        {
 
15095
                uint32_t _flags_save_UNION = ndr->flags;
 
15096
                ndr_set_flags(&ndr->flags, LIBNDR_FLAG_RELATIVE_REVERSE);
 
15097
                level = ndr_pull_get_switch_value(ndr, r);
 
15098
                if (ndr_flags & NDR_SCALARS) {
 
15099
                        NDR_CHECK(ndr_pull_union_align(ndr, 4));
 
15100
                        switch (level) {
 
15101
                                case 1: {
 
15102
                                        NDR_CHECK(ndr_pull_align(ndr, 4));
 
15103
                                        NDR_CHECK(ndr_pull_setup_relative_base_offset1(ndr, r, ndr->offset));
 
15104
                                        NDR_CHECK(ndr_pull_spoolss_PrintProcessorDirectoryInfo1(ndr, NDR_SCALARS, &r->info1));
 
15105
                                break; }
 
15106
 
 
15107
                                default: {
 
15108
                                        NDR_CHECK(ndr_pull_align(ndr, 4));
 
15109
                                        NDR_CHECK(ndr_pull_setup_relative_base_offset1(ndr, r, ndr->offset));
 
15110
                                        NDR_CHECK(ndr_pull_spoolss_PrintProcessorDirectoryInfo1(ndr, NDR_SCALARS, &r->info1));
 
15111
                                break; }
 
15112
 
 
15113
                        }
 
15114
                }
 
15115
                if (ndr_flags & NDR_BUFFERS) {
 
15116
                        NDR_CHECK(ndr_pull_setup_relative_base_offset2(ndr, r));
 
15117
                        switch (level) {
 
15118
                                case 1:
 
15119
                                break;
 
15120
 
 
15121
                                default:
 
15122
                                break;
 
15123
 
 
15124
                        }
 
15125
                }
 
15126
                ndr->flags = _flags_save_UNION;
 
15127
        }
 
15128
        ndr_pull_restore_relative_base_offset(ndr, _save_relative_base_offset);
 
15129
        return NDR_ERR_SUCCESS;
 
15130
}
 
15131
 
 
15132
_PUBLIC_ void ndr_print_spoolss_PrintProcessorDirectoryInfo(struct ndr_print *ndr, const char *name, const union spoolss_PrintProcessorDirectoryInfo *r)
 
15133
{
 
15134
        int level;
 
15135
        {
 
15136
                uint32_t _flags_save_UNION = ndr->flags;
 
15137
                ndr_set_flags(&ndr->flags, LIBNDR_FLAG_RELATIVE_REVERSE);
 
15138
                level = ndr_print_get_switch_value(ndr, r);
 
15139
                ndr_print_union(ndr, name, level, "spoolss_PrintProcessorDirectoryInfo");
 
15140
                switch (level) {
 
15141
                        case 1:
 
15142
                                ndr_print_spoolss_PrintProcessorDirectoryInfo1(ndr, "info1", &r->info1);
 
15143
                        break;
 
15144
 
 
15145
                        default:
 
15146
                                ndr_print_spoolss_PrintProcessorDirectoryInfo1(ndr, "info1", &r->info1);
 
15147
                        break;
 
15148
 
 
15149
                }
 
15150
                ndr->flags = _flags_save_UNION;
 
15151
        }
 
15152
}
 
15153
 
 
15154
_PUBLIC_ size_t ndr_size_spoolss_PrintProcessorDirectoryInfo(const union spoolss_PrintProcessorDirectoryInfo *r, uint32_t level, struct smb_iconv_convenience *ic, int flags)
 
15155
{
 
15156
        flags |= LIBNDR_FLAG_RELATIVE_REVERSE;
 
15157
        return ndr_size_union(r, flags, level, (ndr_push_flags_fn_t)ndr_push_spoolss_PrintProcessorDirectoryInfo, ic);
 
15158
}
 
15159
 
 
15160
static enum ndr_err_code ndr_push_spoolss_DocumentInfo1(struct ndr_push *ndr, int ndr_flags, const struct spoolss_DocumentInfo1 *r)
 
15161
{
 
15162
        if (ndr_flags & NDR_SCALARS) {
 
15163
                NDR_CHECK(ndr_push_align(ndr, 5));
 
15164
                NDR_CHECK(ndr_push_unique_ptr(ndr, r->document_name));
 
15165
                NDR_CHECK(ndr_push_unique_ptr(ndr, r->output_file));
 
15166
                NDR_CHECK(ndr_push_unique_ptr(ndr, r->datatype));
 
15167
                NDR_CHECK(ndr_push_trailer_align(ndr, 5));
 
15168
        }
 
15169
        if (ndr_flags & NDR_BUFFERS) {
 
15170
                if (r->document_name) {
 
15171
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->document_name, CH_UTF16)));
 
15172
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0));
 
15173
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->document_name, CH_UTF16)));
 
15174
                        NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->document_name, ndr_charset_length(r->document_name, CH_UTF16), sizeof(uint16_t), CH_UTF16));
 
15175
                }
 
15176
                if (r->output_file) {
 
15177
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->output_file, CH_UTF16)));
 
15178
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0));
 
15179
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->output_file, CH_UTF16)));
 
15180
                        NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->output_file, ndr_charset_length(r->output_file, CH_UTF16), sizeof(uint16_t), CH_UTF16));
 
15181
                }
 
15182
                if (r->datatype) {
 
15183
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->datatype, CH_UTF16)));
 
15184
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0));
 
15185
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->datatype, CH_UTF16)));
 
15186
                        NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->datatype, ndr_charset_length(r->datatype, CH_UTF16), sizeof(uint16_t), CH_UTF16));
 
15187
                }
 
15188
        }
 
15189
        return NDR_ERR_SUCCESS;
 
15190
}
 
15191
 
 
15192
static enum ndr_err_code ndr_pull_spoolss_DocumentInfo1(struct ndr_pull *ndr, int ndr_flags, struct spoolss_DocumentInfo1 *r)
 
15193
{
 
15194
        uint32_t _ptr_document_name;
 
15195
        TALLOC_CTX *_mem_save_document_name_0;
 
15196
        uint32_t _ptr_output_file;
 
15197
        TALLOC_CTX *_mem_save_output_file_0;
 
15198
        uint32_t _ptr_datatype;
 
15199
        TALLOC_CTX *_mem_save_datatype_0;
 
15200
        if (ndr_flags & NDR_SCALARS) {
 
15201
                NDR_CHECK(ndr_pull_align(ndr, 5));
 
15202
                NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_document_name));
 
15203
                if (_ptr_document_name) {
 
15204
                        NDR_PULL_ALLOC(ndr, r->document_name);
 
15205
                } else {
 
15206
                        r->document_name = NULL;
 
15207
                }
 
15208
                NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_output_file));
 
15209
                if (_ptr_output_file) {
 
15210
                        NDR_PULL_ALLOC(ndr, r->output_file);
 
15211
                } else {
 
15212
                        r->output_file = NULL;
 
15213
                }
 
15214
                NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_datatype));
 
15215
                if (_ptr_datatype) {
 
15216
                        NDR_PULL_ALLOC(ndr, r->datatype);
 
15217
                } else {
 
15218
                        r->datatype = NULL;
 
15219
                }
 
15220
                NDR_CHECK(ndr_pull_trailer_align(ndr, 5));
 
15221
        }
 
15222
        if (ndr_flags & NDR_BUFFERS) {
 
15223
                if (r->document_name) {
 
15224
                        _mem_save_document_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
15225
                        NDR_PULL_SET_MEM_CTX(ndr, r->document_name, 0);
 
15226
                        NDR_CHECK(ndr_pull_array_size(ndr, &r->document_name));
 
15227
                        NDR_CHECK(ndr_pull_array_length(ndr, &r->document_name));
 
15228
                        if (ndr_get_array_length(ndr, &r->document_name) > ndr_get_array_size(ndr, &r->document_name)) {
 
15229
                                return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->document_name), ndr_get_array_length(ndr, &r->document_name));
 
15230
                        }
 
15231
                        NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->document_name), sizeof(uint16_t)));
 
15232
                        NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->document_name, ndr_get_array_length(ndr, &r->document_name), sizeof(uint16_t), CH_UTF16));
 
15233
                        NDR_PULL_SET_MEM_CTX(ndr, _mem_save_document_name_0, 0);
 
15234
                }
 
15235
                if (r->output_file) {
 
15236
                        _mem_save_output_file_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
15237
                        NDR_PULL_SET_MEM_CTX(ndr, r->output_file, 0);
 
15238
                        NDR_CHECK(ndr_pull_array_size(ndr, &r->output_file));
 
15239
                        NDR_CHECK(ndr_pull_array_length(ndr, &r->output_file));
 
15240
                        if (ndr_get_array_length(ndr, &r->output_file) > ndr_get_array_size(ndr, &r->output_file)) {
 
15241
                                return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->output_file), ndr_get_array_length(ndr, &r->output_file));
 
15242
                        }
 
15243
                        NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->output_file), sizeof(uint16_t)));
 
15244
                        NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->output_file, ndr_get_array_length(ndr, &r->output_file), sizeof(uint16_t), CH_UTF16));
 
15245
                        NDR_PULL_SET_MEM_CTX(ndr, _mem_save_output_file_0, 0);
 
15246
                }
 
15247
                if (r->datatype) {
 
15248
                        _mem_save_datatype_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
15249
                        NDR_PULL_SET_MEM_CTX(ndr, r->datatype, 0);
 
15250
                        NDR_CHECK(ndr_pull_array_size(ndr, &r->datatype));
 
15251
                        NDR_CHECK(ndr_pull_array_length(ndr, &r->datatype));
 
15252
                        if (ndr_get_array_length(ndr, &r->datatype) > ndr_get_array_size(ndr, &r->datatype)) {
 
15253
                                return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->datatype), ndr_get_array_length(ndr, &r->datatype));
 
15254
                        }
 
15255
                        NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->datatype), sizeof(uint16_t)));
 
15256
                        NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->datatype, ndr_get_array_length(ndr, &r->datatype), sizeof(uint16_t), CH_UTF16));
 
15257
                        NDR_PULL_SET_MEM_CTX(ndr, _mem_save_datatype_0, 0);
 
15258
                }
 
15259
        }
 
15260
        return NDR_ERR_SUCCESS;
 
15261
}
 
15262
 
 
15263
_PUBLIC_ void ndr_print_spoolss_DocumentInfo1(struct ndr_print *ndr, const char *name, const struct spoolss_DocumentInfo1 *r)
 
15264
{
 
15265
        ndr_print_struct(ndr, name, "spoolss_DocumentInfo1");
 
15266
        ndr->depth++;
 
15267
        ndr_print_ptr(ndr, "document_name", r->document_name);
 
15268
        ndr->depth++;
 
15269
        if (r->document_name) {
 
15270
                ndr_print_string(ndr, "document_name", r->document_name);
 
15271
        }
 
15272
        ndr->depth--;
 
15273
        ndr_print_ptr(ndr, "output_file", r->output_file);
 
15274
        ndr->depth++;
 
15275
        if (r->output_file) {
 
15276
                ndr_print_string(ndr, "output_file", r->output_file);
 
15277
        }
 
15278
        ndr->depth--;
 
15279
        ndr_print_ptr(ndr, "datatype", r->datatype);
 
15280
        ndr->depth++;
 
15281
        if (r->datatype) {
 
15282
                ndr_print_string(ndr, "datatype", r->datatype);
 
15283
        }
 
15284
        ndr->depth--;
 
15285
        ndr->depth--;
 
15286
}
 
15287
 
 
15288
static enum ndr_err_code ndr_push_spoolss_DocumentInfo(struct ndr_push *ndr, int ndr_flags, const union spoolss_DocumentInfo *r)
 
15289
{
 
15290
        if (ndr_flags & NDR_SCALARS) {
 
15291
                int level = ndr_push_get_switch_value(ndr, r);
 
15292
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, level));
 
15293
                NDR_CHECK(ndr_push_union_align(ndr, 5));
 
15294
                switch (level) {
 
15295
                        case 1: {
 
15296
                                NDR_CHECK(ndr_push_unique_ptr(ndr, r->info1));
 
15297
                        break; }
 
15298
 
 
15299
                        case 2: {
 
15300
                        break; }
 
15301
 
 
15302
                        case 3: {
 
15303
                        break; }
 
15304
 
 
15305
                        default: {
 
15306
                        break; }
 
15307
 
 
15308
                }
 
15309
        }
 
15310
        if (ndr_flags & NDR_BUFFERS) {
 
15311
                int level = ndr_push_get_switch_value(ndr, r);
 
15312
                switch (level) {
 
15313
                        case 1:
 
15314
                                if (r->info1) {
 
15315
                                        NDR_CHECK(ndr_push_spoolss_DocumentInfo1(ndr, NDR_SCALARS|NDR_BUFFERS, r->info1));
 
15316
                                }
 
15317
                        break;
 
15318
 
 
15319
                        case 2:
 
15320
                        break;
 
15321
 
 
15322
                        case 3:
 
15323
                        break;
 
15324
 
 
15325
                        default:
 
15326
                        break;
 
15327
 
 
15328
                }
 
15329
        }
 
15330
        return NDR_ERR_SUCCESS;
 
15331
}
 
15332
 
 
15333
static enum ndr_err_code ndr_pull_spoolss_DocumentInfo(struct ndr_pull *ndr, int ndr_flags, union spoolss_DocumentInfo *r)
 
15334
{
 
15335
        int level;
 
15336
        uint32_t _level;
 
15337
        TALLOC_CTX *_mem_save_info1_0;
 
15338
        level = ndr_pull_get_switch_value(ndr, r);
 
15339
        if (ndr_flags & NDR_SCALARS) {
 
15340
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &_level));
 
15341
                if (_level != level) {
 
15342
                        return ndr_pull_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u for r at %s", _level, __location__);
 
15343
                }
 
15344
                NDR_CHECK(ndr_pull_union_align(ndr, 5));
 
15345
                switch (level) {
 
15346
                        case 1: {
 
15347
                                uint32_t _ptr_info1;
 
15348
                                NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_info1));
 
15349
                                if (_ptr_info1) {
 
15350
                                        NDR_PULL_ALLOC(ndr, r->info1);
 
15351
                                } else {
 
15352
                                        r->info1 = NULL;
 
15353
                                }
 
15354
                        break; }
 
15355
 
 
15356
                        case 2: {
 
15357
                        break; }
 
15358
 
 
15359
                        case 3: {
 
15360
                        break; }
 
15361
 
 
15362
                        default: {
 
15363
                        break; }
 
15364
 
 
15365
                }
 
15366
        }
 
15367
        if (ndr_flags & NDR_BUFFERS) {
 
15368
                switch (level) {
 
15369
                        case 1:
 
15370
                                if (r->info1) {
 
15371
                                        _mem_save_info1_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
15372
                                        NDR_PULL_SET_MEM_CTX(ndr, r->info1, 0);
 
15373
                                        NDR_CHECK(ndr_pull_spoolss_DocumentInfo1(ndr, NDR_SCALARS|NDR_BUFFERS, r->info1));
 
15374
                                        NDR_PULL_SET_MEM_CTX(ndr, _mem_save_info1_0, 0);
 
15375
                                }
 
15376
                        break;
 
15377
 
 
15378
                        case 2:
 
15379
                        break;
 
15380
 
 
15381
                        case 3:
 
15382
                        break;
 
15383
 
 
15384
                        default:
 
15385
                        break;
 
15386
 
 
15387
                }
 
15388
        }
 
15389
        return NDR_ERR_SUCCESS;
 
15390
}
 
15391
 
 
15392
_PUBLIC_ void ndr_print_spoolss_DocumentInfo(struct ndr_print *ndr, const char *name, const union spoolss_DocumentInfo *r)
 
15393
{
 
15394
        int level;
 
15395
        level = ndr_print_get_switch_value(ndr, r);
 
15396
        ndr_print_union(ndr, name, level, "spoolss_DocumentInfo");
 
15397
        switch (level) {
 
15398
                case 1:
 
15399
                        ndr_print_ptr(ndr, "info1", r->info1);
 
15400
                        ndr->depth++;
 
15401
                        if (r->info1) {
 
15402
                                ndr_print_spoolss_DocumentInfo1(ndr, "info1", r->info1);
 
15403
                        }
 
15404
                        ndr->depth--;
 
15405
                break;
 
15406
 
 
15407
                case 2:
 
15408
                break;
 
15409
 
 
15410
                case 3:
 
15411
                break;
 
15412
 
 
15413
                default:
 
15414
                break;
 
15415
 
 
15416
        }
 
15417
}
 
15418
 
 
15419
_PUBLIC_ enum ndr_err_code ndr_push_spoolss_OSVersion(struct ndr_push *ndr, int ndr_flags, const struct spoolss_OSVersion *r)
 
15420
{
 
15421
        if (ndr_flags & NDR_SCALARS) {
 
15422
                NDR_CHECK(ndr_push_align(ndr, 4));
 
15423
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_size_spoolss_OSVersion(r, ndr->iconv_convenience, ndr->flags)));
 
15424
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->major));
 
15425
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->minor));
 
15426
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->build));
 
15427
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 2));
 
15428
                {
 
15429
                        uint32_t _flags_save_string = ndr->flags;
 
15430
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
15431
                        {
 
15432
                                struct ndr_push *_ndr_extra_string;
 
15433
                                NDR_CHECK(ndr_push_subcontext_start(ndr, &_ndr_extra_string, 0, 256));
 
15434
                                NDR_CHECK(ndr_push_string(_ndr_extra_string, NDR_SCALARS, r->extra_string));
 
15435
                                NDR_CHECK(ndr_push_subcontext_end(ndr, _ndr_extra_string, 0, 256));
 
15436
                        }
 
15437
                        ndr->flags = _flags_save_string;
 
15438
                }
 
15439
                NDR_CHECK(ndr_push_trailer_align(ndr, 4));
 
15440
        }
 
15441
        if (ndr_flags & NDR_BUFFERS) {
 
15442
        }
 
15443
        return NDR_ERR_SUCCESS;
 
15444
}
 
15445
 
 
15446
_PUBLIC_ enum ndr_err_code ndr_pull_spoolss_OSVersion(struct ndr_pull *ndr, int ndr_flags, struct spoolss_OSVersion *r)
 
15447
{
 
15448
        if (ndr_flags & NDR_SCALARS) {
 
15449
                NDR_CHECK(ndr_pull_align(ndr, 4));
 
15450
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->_ndr_size));
 
15451
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->major));
 
15452
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->minor));
 
15453
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->build));
 
15454
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->platform_id));
 
15455
                {
 
15456
                        uint32_t _flags_save_string = ndr->flags;
 
15457
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
15458
                        {
 
15459
                                struct ndr_pull *_ndr_extra_string;
 
15460
                                NDR_CHECK(ndr_pull_subcontext_start(ndr, &_ndr_extra_string, 0, 256));
 
15461
                                NDR_CHECK(ndr_pull_string(_ndr_extra_string, NDR_SCALARS, &r->extra_string));
 
15462
                                NDR_CHECK(ndr_pull_subcontext_end(ndr, _ndr_extra_string, 0, 256));
 
15463
                        }
 
15464
                        ndr->flags = _flags_save_string;
 
15465
                }
 
15466
                NDR_CHECK(ndr_pull_trailer_align(ndr, 4));
 
15467
        }
 
15468
        if (ndr_flags & NDR_BUFFERS) {
 
15469
        }
 
15470
        return NDR_ERR_SUCCESS;
 
15471
}
 
15472
 
 
15473
_PUBLIC_ void ndr_print_spoolss_OSVersion(struct ndr_print *ndr, const char *name, const struct spoolss_OSVersion *r)
 
15474
{
 
15475
        ndr_print_struct(ndr, name, "spoolss_OSVersion");
 
15476
        ndr->depth++;
 
15477
        ndr_print_uint32(ndr, "_ndr_size", (ndr->flags & LIBNDR_PRINT_SET_VALUES)?ndr_size_spoolss_OSVersion(r, ndr->iconv_convenience, ndr->flags):r->_ndr_size);
 
15478
        ndr_print_uint32(ndr, "major", r->major);
 
15479
        ndr_print_uint32(ndr, "minor", r->minor);
 
15480
        ndr_print_uint32(ndr, "build", r->build);
 
15481
        ndr_print_uint32(ndr, "platform_id", (ndr->flags & LIBNDR_PRINT_SET_VALUES)?2:r->platform_id);
 
15482
        ndr_print_string(ndr, "extra_string", r->extra_string);
 
15483
        ndr->depth--;
 
15484
}
 
15485
 
 
15486
_PUBLIC_ size_t ndr_size_spoolss_OSVersion(const struct spoolss_OSVersion *r, struct smb_iconv_convenience *ic, int flags)
 
15487
{
 
15488
        return ndr_size_struct(r, flags, (ndr_push_flags_fn_t)ndr_push_spoolss_OSVersion, ic);
 
15489
}
 
15490
 
 
15491
_PUBLIC_ enum ndr_err_code ndr_push_spoolss_OSVersionEx(struct ndr_push *ndr, int ndr_flags, const struct spoolss_OSVersionEx *r)
 
15492
{
 
15493
        if (ndr_flags & NDR_SCALARS) {
 
15494
                NDR_CHECK(ndr_push_align(ndr, 4));
 
15495
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_size_spoolss_OSVersionEx(r, ndr->iconv_convenience, ndr->flags)));
 
15496
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->major));
 
15497
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->minor));
 
15498
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->build));
 
15499
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 2));
 
15500
                {
 
15501
                        uint32_t _flags_save_string = ndr->flags;
 
15502
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
15503
                        {
 
15504
                                struct ndr_push *_ndr_extra_string;
 
15505
                                NDR_CHECK(ndr_push_subcontext_start(ndr, &_ndr_extra_string, 0, 256));
 
15506
                                NDR_CHECK(ndr_push_string(_ndr_extra_string, NDR_SCALARS, r->extra_string));
 
15507
                                NDR_CHECK(ndr_push_subcontext_end(ndr, _ndr_extra_string, 0, 256));
 
15508
                        }
 
15509
                        ndr->flags = _flags_save_string;
 
15510
                }
 
15511
                NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->service_pack_major));
 
15512
                NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->service_pack_minor));
 
15513
                NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->suite_mask));
 
15514
                NDR_CHECK(ndr_push_uint8(ndr, NDR_SCALARS, r->product_type));
 
15515
                NDR_CHECK(ndr_push_uint8(ndr, NDR_SCALARS, r->reserved));
 
15516
                NDR_CHECK(ndr_push_trailer_align(ndr, 4));
 
15517
        }
 
15518
        if (ndr_flags & NDR_BUFFERS) {
 
15519
        }
 
15520
        return NDR_ERR_SUCCESS;
 
15521
}
 
15522
 
 
15523
_PUBLIC_ enum ndr_err_code ndr_pull_spoolss_OSVersionEx(struct ndr_pull *ndr, int ndr_flags, struct spoolss_OSVersionEx *r)
 
15524
{
 
15525
        if (ndr_flags & NDR_SCALARS) {
 
15526
                NDR_CHECK(ndr_pull_align(ndr, 4));
 
15527
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->_ndr_size));
 
15528
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->major));
 
15529
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->minor));
 
15530
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->build));
 
15531
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->platform_id));
 
15532
                {
 
15533
                        uint32_t _flags_save_string = ndr->flags;
 
15534
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
15535
                        {
 
15536
                                struct ndr_pull *_ndr_extra_string;
 
15537
                                NDR_CHECK(ndr_pull_subcontext_start(ndr, &_ndr_extra_string, 0, 256));
 
15538
                                NDR_CHECK(ndr_pull_string(_ndr_extra_string, NDR_SCALARS, &r->extra_string));
 
15539
                                NDR_CHECK(ndr_pull_subcontext_end(ndr, _ndr_extra_string, 0, 256));
 
15540
                        }
 
15541
                        ndr->flags = _flags_save_string;
 
15542
                }
 
15543
                NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->service_pack_major));
 
15544
                NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->service_pack_minor));
 
15545
                NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->suite_mask));
 
15546
                NDR_CHECK(ndr_pull_uint8(ndr, NDR_SCALARS, &r->product_type));
 
15547
                NDR_CHECK(ndr_pull_uint8(ndr, NDR_SCALARS, &r->reserved));
 
15548
                NDR_CHECK(ndr_pull_trailer_align(ndr, 4));
 
15549
        }
 
15550
        if (ndr_flags & NDR_BUFFERS) {
 
15551
        }
 
15552
        return NDR_ERR_SUCCESS;
 
15553
}
 
15554
 
 
15555
_PUBLIC_ void ndr_print_spoolss_OSVersionEx(struct ndr_print *ndr, const char *name, const struct spoolss_OSVersionEx *r)
 
15556
{
 
15557
        ndr_print_struct(ndr, name, "spoolss_OSVersionEx");
 
15558
        ndr->depth++;
 
15559
        ndr_print_uint32(ndr, "_ndr_size", (ndr->flags & LIBNDR_PRINT_SET_VALUES)?ndr_size_spoolss_OSVersionEx(r, ndr->iconv_convenience, ndr->flags):r->_ndr_size);
 
15560
        ndr_print_uint32(ndr, "major", r->major);
 
15561
        ndr_print_uint32(ndr, "minor", r->minor);
 
15562
        ndr_print_uint32(ndr, "build", r->build);
 
15563
        ndr_print_uint32(ndr, "platform_id", (ndr->flags & LIBNDR_PRINT_SET_VALUES)?2:r->platform_id);
 
15564
        ndr_print_string(ndr, "extra_string", r->extra_string);
 
15565
        ndr_print_uint16(ndr, "service_pack_major", r->service_pack_major);
 
15566
        ndr_print_uint16(ndr, "service_pack_minor", r->service_pack_minor);
 
15567
        ndr_print_uint16(ndr, "suite_mask", r->suite_mask);
 
15568
        ndr_print_uint8(ndr, "product_type", r->product_type);
 
15569
        ndr_print_uint8(ndr, "reserved", r->reserved);
 
15570
        ndr->depth--;
 
15571
}
 
15572
 
 
15573
_PUBLIC_ size_t ndr_size_spoolss_OSVersionEx(const struct spoolss_OSVersionEx *r, struct smb_iconv_convenience *ic, int flags)
 
15574
{
 
15575
        return ndr_size_struct(r, flags, (ndr_push_flags_fn_t)ndr_push_spoolss_OSVersionEx, ic);
 
15576
}
 
15577
 
 
15578
_PUBLIC_ enum ndr_err_code ndr_push_spoolss_PrinterData(struct ndr_push *ndr, int ndr_flags, const union spoolss_PrinterData *r)
 
15579
{
 
15580
        if (ndr_flags & NDR_SCALARS) {
 
15581
                int level = ndr_push_get_switch_value(ndr, r);
 
15582
                NDR_CHECK(ndr_push_union_align(ndr, 4));
 
15583
                switch (level) {
 
15584
                        case REG_NONE: {
 
15585
                        break; }
 
15586
 
 
15587
                        case REG_SZ: {
 
15588
                                {
 
15589
                                        uint32_t _flags_save_string = ndr->flags;
 
15590
                                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
15591
                                        NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->string));
 
15592
                                        ndr->flags = _flags_save_string;
 
15593
                                }
 
15594
                        break; }
 
15595
 
 
15596
                        case REG_BINARY: {
 
15597
                                {
 
15598
                                        uint32_t _flags_save_DATA_BLOB = ndr->flags;
 
15599
                                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_REMAINING);
 
15600
                                        NDR_CHECK(ndr_push_DATA_BLOB(ndr, NDR_SCALARS, r->binary));
 
15601
                                        ndr->flags = _flags_save_DATA_BLOB;
 
15602
                                }
 
15603
                        break; }
 
15604
 
 
15605
                        case REG_DWORD: {
 
15606
                                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->value));
 
15607
                        break; }
 
15608
 
 
15609
                        case REG_MULTI_SZ: {
 
15610
                                {
 
15611
                                        uint32_t _flags_save_string_array = ndr->flags;
 
15612
                                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
15613
                                        NDR_CHECK(ndr_push_string_array(ndr, NDR_SCALARS, r->string_array));
 
15614
                                        ndr->flags = _flags_save_string_array;
 
15615
                                }
 
15616
                        break; }
 
15617
 
 
15618
                        default: {
 
15619
                                {
 
15620
                                        uint32_t _flags_save_DATA_BLOB = ndr->flags;
 
15621
                                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_REMAINING);
 
15622
                                        NDR_CHECK(ndr_push_DATA_BLOB(ndr, NDR_SCALARS, r->data));
 
15623
                                        ndr->flags = _flags_save_DATA_BLOB;
 
15624
                                }
 
15625
                        break; }
 
15626
 
 
15627
                }
 
15628
        }
 
15629
        if (ndr_flags & NDR_BUFFERS) {
 
15630
                int level = ndr_push_get_switch_value(ndr, r);
 
15631
                switch (level) {
 
15632
                        case REG_NONE:
 
15633
                        break;
 
15634
 
 
15635
                        case REG_SZ:
 
15636
                        break;
 
15637
 
 
15638
                        case REG_BINARY:
 
15639
                        break;
 
15640
 
 
15641
                        case REG_DWORD:
 
15642
                        break;
 
15643
 
 
15644
                        case REG_MULTI_SZ:
 
15645
                        break;
 
15646
 
 
15647
                        default:
 
15648
                        break;
 
15649
 
 
15650
                }
 
15651
        }
 
15652
        return NDR_ERR_SUCCESS;
 
15653
}
 
15654
 
 
15655
_PUBLIC_ enum ndr_err_code ndr_pull_spoolss_PrinterData(struct ndr_pull *ndr, int ndr_flags, union spoolss_PrinterData *r)
 
15656
{
 
15657
        int level;
 
15658
        level = ndr_pull_get_switch_value(ndr, r);
 
15659
        if (ndr_flags & NDR_SCALARS) {
 
15660
                NDR_CHECK(ndr_pull_union_align(ndr, 4));
 
15661
                switch (level) {
 
15662
                        case REG_NONE: {
 
15663
                        break; }
 
15664
 
 
15665
                        case REG_SZ: {
 
15666
                                {
 
15667
                                        uint32_t _flags_save_string = ndr->flags;
 
15668
                                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
15669
                                        NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->string));
 
15670
                                        ndr->flags = _flags_save_string;
 
15671
                                }
 
15672
                        break; }
 
15673
 
 
15674
                        case REG_BINARY: {
 
15675
                                {
 
15676
                                        uint32_t _flags_save_DATA_BLOB = ndr->flags;
 
15677
                                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_REMAINING);
 
15678
                                        NDR_CHECK(ndr_pull_DATA_BLOB(ndr, NDR_SCALARS, &r->binary));
 
15679
                                        ndr->flags = _flags_save_DATA_BLOB;
 
15680
                                }
 
15681
                        break; }
 
15682
 
 
15683
                        case REG_DWORD: {
 
15684
                                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->value));
 
15685
                        break; }
 
15686
 
 
15687
                        case REG_MULTI_SZ: {
 
15688
                                {
 
15689
                                        uint32_t _flags_save_string_array = ndr->flags;
 
15690
                                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
15691
                                        NDR_CHECK(ndr_pull_string_array(ndr, NDR_SCALARS, &r->string_array));
 
15692
                                        ndr->flags = _flags_save_string_array;
 
15693
                                }
 
15694
                        break; }
 
15695
 
 
15696
                        default: {
 
15697
                                {
 
15698
                                        uint32_t _flags_save_DATA_BLOB = ndr->flags;
 
15699
                                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_REMAINING);
 
15700
                                        NDR_CHECK(ndr_pull_DATA_BLOB(ndr, NDR_SCALARS, &r->data));
 
15701
                                        ndr->flags = _flags_save_DATA_BLOB;
 
15702
                                }
 
15703
                        break; }
 
15704
 
 
15705
                }
 
15706
        }
 
15707
        if (ndr_flags & NDR_BUFFERS) {
 
15708
                switch (level) {
 
15709
                        case REG_NONE:
 
15710
                        break;
 
15711
 
 
15712
                        case REG_SZ:
 
15713
                        break;
 
15714
 
 
15715
                        case REG_BINARY:
 
15716
                        break;
 
15717
 
 
15718
                        case REG_DWORD:
 
15719
                        break;
 
15720
 
 
15721
                        case REG_MULTI_SZ:
 
15722
                        break;
 
15723
 
 
15724
                        default:
 
15725
                        break;
 
15726
 
 
15727
                }
 
15728
        }
 
15729
        return NDR_ERR_SUCCESS;
 
15730
}
 
15731
 
 
15732
_PUBLIC_ void ndr_print_spoolss_PrinterData(struct ndr_print *ndr, const char *name, const union spoolss_PrinterData *r)
 
15733
{
 
15734
        int level;
 
15735
        level = ndr_print_get_switch_value(ndr, r);
 
15736
        ndr_print_union(ndr, name, level, "spoolss_PrinterData");
 
15737
        switch (level) {
 
15738
                case REG_NONE:
 
15739
                break;
 
15740
 
 
15741
                case REG_SZ:
 
15742
                        ndr_print_string(ndr, "string", r->string);
 
15743
                break;
 
15744
 
 
15745
                case REG_BINARY:
 
15746
                        ndr_print_DATA_BLOB(ndr, "binary", r->binary);
 
15747
                break;
 
15748
 
 
15749
                case REG_DWORD:
 
15750
                        ndr_print_uint32(ndr, "value", r->value);
 
15751
                break;
 
15752
 
 
15753
                case REG_MULTI_SZ:
 
15754
                        ndr_print_string_array(ndr, "string_array", r->string_array);
 
15755
                break;
 
15756
 
 
15757
                default:
 
15758
                        ndr_print_DATA_BLOB(ndr, "data", r->data);
 
15759
                break;
 
15760
 
 
15761
        }
 
15762
}
 
15763
 
 
15764
static enum ndr_err_code ndr_push_spoolss_FormFlags(struct ndr_push *ndr, int ndr_flags, enum spoolss_FormFlags r)
 
15765
{
 
15766
        NDR_CHECK(ndr_push_enum_uint32(ndr, NDR_SCALARS, r));
 
15767
        return NDR_ERR_SUCCESS;
 
15768
}
 
15769
 
 
15770
static enum ndr_err_code ndr_pull_spoolss_FormFlags(struct ndr_pull *ndr, int ndr_flags, enum spoolss_FormFlags *r)
 
15771
{
 
15772
        uint32_t v;
 
15773
        NDR_CHECK(ndr_pull_enum_uint32(ndr, NDR_SCALARS, &v));
 
15774
        *r = v;
 
15775
        return NDR_ERR_SUCCESS;
 
15776
}
 
15777
 
 
15778
_PUBLIC_ void ndr_print_spoolss_FormFlags(struct ndr_print *ndr, const char *name, enum spoolss_FormFlags r)
 
15779
{
 
15780
        const char *val = NULL;
 
15781
 
 
15782
        switch (r) {
 
15783
                case SPOOLSS_FORM_USER: val = "SPOOLSS_FORM_USER"; break;
 
15784
                case SPOOLSS_FORM_BUILTIN: val = "SPOOLSS_FORM_BUILTIN"; break;
 
15785
                case SPOOLSS_FORM_PRINTER: val = "SPOOLSS_FORM_PRINTER"; break;
 
15786
        }
 
15787
        ndr_print_enum(ndr, name, "ENUM", val, r);
 
15788
}
 
15789
 
 
15790
static enum ndr_err_code ndr_push_spoolss_FormSize(struct ndr_push *ndr, int ndr_flags, const struct spoolss_FormSize *r)
 
15791
{
 
15792
        if (ndr_flags & NDR_SCALARS) {
 
15793
                NDR_CHECK(ndr_push_align(ndr, 4));
 
15794
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->width));
 
15795
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->height));
 
15796
                NDR_CHECK(ndr_push_trailer_align(ndr, 4));
 
15797
        }
 
15798
        if (ndr_flags & NDR_BUFFERS) {
 
15799
        }
 
15800
        return NDR_ERR_SUCCESS;
 
15801
}
 
15802
 
 
15803
static enum ndr_err_code ndr_pull_spoolss_FormSize(struct ndr_pull *ndr, int ndr_flags, struct spoolss_FormSize *r)
 
15804
{
 
15805
        if (ndr_flags & NDR_SCALARS) {
 
15806
                NDR_CHECK(ndr_pull_align(ndr, 4));
 
15807
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->width));
 
15808
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->height));
 
15809
                NDR_CHECK(ndr_pull_trailer_align(ndr, 4));
 
15810
        }
 
15811
        if (ndr_flags & NDR_BUFFERS) {
 
15812
        }
 
15813
        return NDR_ERR_SUCCESS;
 
15814
}
 
15815
 
 
15816
_PUBLIC_ void ndr_print_spoolss_FormSize(struct ndr_print *ndr, const char *name, const struct spoolss_FormSize *r)
 
15817
{
 
15818
        ndr_print_struct(ndr, name, "spoolss_FormSize");
 
15819
        ndr->depth++;
 
15820
        ndr_print_uint32(ndr, "width", r->width);
 
15821
        ndr_print_uint32(ndr, "height", r->height);
 
15822
        ndr->depth--;
 
15823
}
 
15824
 
 
15825
static enum ndr_err_code ndr_push_spoolss_FormArea(struct ndr_push *ndr, int ndr_flags, const struct spoolss_FormArea *r)
 
15826
{
 
15827
        if (ndr_flags & NDR_SCALARS) {
 
15828
                NDR_CHECK(ndr_push_align(ndr, 4));
 
15829
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->left));
 
15830
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->top));
 
15831
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->right));
 
15832
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->bottom));
 
15833
                NDR_CHECK(ndr_push_trailer_align(ndr, 4));
 
15834
        }
 
15835
        if (ndr_flags & NDR_BUFFERS) {
 
15836
        }
 
15837
        return NDR_ERR_SUCCESS;
 
15838
}
 
15839
 
 
15840
static enum ndr_err_code ndr_pull_spoolss_FormArea(struct ndr_pull *ndr, int ndr_flags, struct spoolss_FormArea *r)
 
15841
{
 
15842
        if (ndr_flags & NDR_SCALARS) {
 
15843
                NDR_CHECK(ndr_pull_align(ndr, 4));
 
15844
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->left));
 
15845
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->top));
 
15846
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->right));
 
15847
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->bottom));
 
15848
                NDR_CHECK(ndr_pull_trailer_align(ndr, 4));
 
15849
        }
 
15850
        if (ndr_flags & NDR_BUFFERS) {
 
15851
        }
 
15852
        return NDR_ERR_SUCCESS;
 
15853
}
 
15854
 
 
15855
_PUBLIC_ void ndr_print_spoolss_FormArea(struct ndr_print *ndr, const char *name, const struct spoolss_FormArea *r)
 
15856
{
 
15857
        ndr_print_struct(ndr, name, "spoolss_FormArea");
 
15858
        ndr->depth++;
 
15859
        ndr_print_uint32(ndr, "left", r->left);
 
15860
        ndr_print_uint32(ndr, "top", r->top);
 
15861
        ndr_print_uint32(ndr, "right", r->right);
 
15862
        ndr_print_uint32(ndr, "bottom", r->bottom);
 
15863
        ndr->depth--;
 
15864
}
 
15865
 
 
15866
_PUBLIC_ enum ndr_err_code ndr_push_spoolss_FormInfo1(struct ndr_push *ndr, int ndr_flags, const struct spoolss_FormInfo1 *r)
 
15867
{
 
15868
        if (ndr_flags & NDR_SCALARS) {
 
15869
                NDR_CHECK(ndr_push_align(ndr, 5));
 
15870
                NDR_CHECK(ndr_push_spoolss_FormFlags(ndr, NDR_SCALARS, r->flags));
 
15871
                {
 
15872
                        uint32_t _flags_save_string = ndr->flags;
 
15873
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
15874
                        NDR_CHECK(ndr_push_relative_ptr1(ndr, r->form_name));
 
15875
                        ndr->flags = _flags_save_string;
 
15876
                }
 
15877
                NDR_CHECK(ndr_push_spoolss_FormSize(ndr, NDR_SCALARS, &r->size));
 
15878
                NDR_CHECK(ndr_push_spoolss_FormArea(ndr, NDR_SCALARS, &r->area));
 
15879
                NDR_CHECK(ndr_push_trailer_align(ndr, 5));
 
15880
        }
 
15881
        if (ndr_flags & NDR_BUFFERS) {
 
15882
                {
 
15883
                        uint32_t _flags_save_string = ndr->flags;
 
15884
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
15885
                        if (r->form_name) {
 
15886
                                NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->form_name));
 
15887
                                NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->form_name));
 
15888
                                NDR_CHECK(ndr_push_relative_ptr2_end(ndr, r->form_name));
 
15889
                        }
 
15890
                        ndr->flags = _flags_save_string;
 
15891
                }
 
15892
        }
 
15893
        return NDR_ERR_SUCCESS;
 
15894
}
 
15895
 
 
15896
_PUBLIC_ enum ndr_err_code ndr_pull_spoolss_FormInfo1(struct ndr_pull *ndr, int ndr_flags, struct spoolss_FormInfo1 *r)
 
15897
{
 
15898
        uint32_t _ptr_form_name;
 
15899
        TALLOC_CTX *_mem_save_form_name_0;
 
15900
        if (ndr_flags & NDR_SCALARS) {
 
15901
                NDR_CHECK(ndr_pull_align(ndr, 5));
 
15902
                NDR_CHECK(ndr_pull_spoolss_FormFlags(ndr, NDR_SCALARS, &r->flags));
 
15903
                {
 
15904
                        uint32_t _flags_save_string = ndr->flags;
 
15905
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
15906
                        NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_form_name));
 
15907
                        if (_ptr_form_name) {
 
15908
                                NDR_PULL_ALLOC(ndr, r->form_name);
 
15909
                                NDR_CHECK(ndr_pull_relative_ptr1(ndr, r->form_name, _ptr_form_name));
 
15910
                        } else {
 
15911
                                r->form_name = NULL;
 
15912
                        }
 
15913
                        ndr->flags = _flags_save_string;
 
15914
                }
 
15915
                NDR_CHECK(ndr_pull_spoolss_FormSize(ndr, NDR_SCALARS, &r->size));
 
15916
                NDR_CHECK(ndr_pull_spoolss_FormArea(ndr, NDR_SCALARS, &r->area));
 
15917
                NDR_CHECK(ndr_pull_trailer_align(ndr, 5));
 
15918
        }
 
15919
        if (ndr_flags & NDR_BUFFERS) {
 
15920
                {
 
15921
                        uint32_t _flags_save_string = ndr->flags;
 
15922
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
15923
                        if (r->form_name) {
 
15924
                                uint32_t _relative_save_offset;
 
15925
                                _relative_save_offset = ndr->offset;
 
15926
                                NDR_CHECK(ndr_pull_relative_ptr2(ndr, r->form_name));
 
15927
                                _mem_save_form_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
15928
                                NDR_PULL_SET_MEM_CTX(ndr, r->form_name, 0);
 
15929
                                NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->form_name));
 
15930
                                NDR_PULL_SET_MEM_CTX(ndr, _mem_save_form_name_0, 0);
 
15931
                                ndr->offset = _relative_save_offset;
 
15932
                        }
 
15933
                        ndr->flags = _flags_save_string;
 
15934
                }
 
15935
        }
 
15936
        return NDR_ERR_SUCCESS;
 
15937
}
 
15938
 
 
15939
_PUBLIC_ void ndr_print_spoolss_FormInfo1(struct ndr_print *ndr, const char *name, const struct spoolss_FormInfo1 *r)
 
15940
{
 
15941
        ndr_print_struct(ndr, name, "spoolss_FormInfo1");
 
15942
        ndr->depth++;
 
15943
        ndr_print_spoolss_FormFlags(ndr, "flags", r->flags);
 
15944
        ndr_print_ptr(ndr, "form_name", r->form_name);
 
15945
        ndr->depth++;
 
15946
        if (r->form_name) {
 
15947
                ndr_print_string(ndr, "form_name", r->form_name);
 
15948
        }
 
15949
        ndr->depth--;
 
15950
        ndr_print_spoolss_FormSize(ndr, "size", &r->size);
 
15951
        ndr_print_spoolss_FormArea(ndr, "area", &r->area);
 
15952
        ndr->depth--;
 
15953
}
 
15954
 
 
15955
_PUBLIC_ size_t ndr_size_spoolss_FormInfo1(const struct spoolss_FormInfo1 *r, struct smb_iconv_convenience *ic, int flags)
 
15956
{
 
15957
        return ndr_size_struct(r, flags, (ndr_push_flags_fn_t)ndr_push_spoolss_FormInfo1, ic);
 
15958
}
 
15959
 
 
15960
static enum ndr_err_code ndr_push_spoolss_FormStringType(struct ndr_push *ndr, int ndr_flags, uint32_t r)
 
15961
{
 
15962
        NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r));
 
15963
        return NDR_ERR_SUCCESS;
 
15964
}
 
15965
 
 
15966
static enum ndr_err_code ndr_pull_spoolss_FormStringType(struct ndr_pull *ndr, int ndr_flags, uint32_t *r)
 
15967
{
 
15968
        uint32_t v;
 
15969
        NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &v));
 
15970
        *r = v;
 
15971
        return NDR_ERR_SUCCESS;
 
15972
}
 
15973
 
 
15974
_PUBLIC_ void ndr_print_spoolss_FormStringType(struct ndr_print *ndr, const char *name, uint32_t r)
 
15975
{
 
15976
        ndr_print_uint32(ndr, name, r);
 
15977
        ndr->depth++;
 
15978
        ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SPOOLSS_FORM_STRING_TYPE_NONE", SPOOLSS_FORM_STRING_TYPE_NONE, r);
 
15979
        ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SPOOLSS_FORM_STRING_TYPE_MUI_DLL", SPOOLSS_FORM_STRING_TYPE_MUI_DLL, r);
 
15980
        ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SPOOLSS_FORM_STRING_TYPE_LANG_PAIR", SPOOLSS_FORM_STRING_TYPE_LANG_PAIR, r);
 
15981
        ndr->depth--;
 
15982
}
 
15983
 
 
15984
_PUBLIC_ enum ndr_err_code ndr_push_spoolss_FormInfo2(struct ndr_push *ndr, int ndr_flags, const struct spoolss_FormInfo2 *r)
 
15985
{
 
15986
        if (ndr_flags & NDR_SCALARS) {
 
15987
                NDR_CHECK(ndr_push_align(ndr, 5));
 
15988
                NDR_CHECK(ndr_push_spoolss_FormFlags(ndr, NDR_SCALARS, r->flags));
 
15989
                {
 
15990
                        uint32_t _flags_save_string = ndr->flags;
 
15991
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
15992
                        NDR_CHECK(ndr_push_relative_ptr1(ndr, r->form_name));
 
15993
                        ndr->flags = _flags_save_string;
 
15994
                }
 
15995
                NDR_CHECK(ndr_push_spoolss_FormSize(ndr, NDR_SCALARS, &r->size));
 
15996
                NDR_CHECK(ndr_push_spoolss_FormArea(ndr, NDR_SCALARS, &r->area));
 
15997
                {
 
15998
                        uint32_t _flags_save_string = ndr->flags;
 
15999
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_ASCII|LIBNDR_FLAG_STR_NULLTERM);
 
16000
                        NDR_CHECK(ndr_push_relative_ptr1(ndr, r->keyword));
 
16001
                        ndr->flags = _flags_save_string;
 
16002
                }
 
16003
                NDR_CHECK(ndr_push_spoolss_FormStringType(ndr, NDR_SCALARS, r->string_type));
 
16004
                {
 
16005
                        uint32_t _flags_save_string = ndr->flags;
 
16006
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
16007
                        NDR_CHECK(ndr_push_relative_ptr1(ndr, r->mui_dll));
 
16008
                        ndr->flags = _flags_save_string;
 
16009
                }
 
16010
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->ressource_id));
 
16011
                {
 
16012
                        uint32_t _flags_save_string = ndr->flags;
 
16013
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
16014
                        NDR_CHECK(ndr_push_relative_ptr1(ndr, r->display_name));
 
16015
                        ndr->flags = _flags_save_string;
 
16016
                }
 
16017
                NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->lang_id));
 
16018
                NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->unused));
 
16019
                NDR_CHECK(ndr_push_trailer_align(ndr, 5));
 
16020
        }
 
16021
        if (ndr_flags & NDR_BUFFERS) {
 
16022
                {
 
16023
                        uint32_t _flags_save_string = ndr->flags;
 
16024
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
16025
                        if (r->form_name) {
 
16026
                                NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->form_name));
 
16027
                                NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->form_name));
 
16028
                                NDR_CHECK(ndr_push_relative_ptr2_end(ndr, r->form_name));
 
16029
                        }
 
16030
                        ndr->flags = _flags_save_string;
 
16031
                }
 
16032
                {
 
16033
                        uint32_t _flags_save_string = ndr->flags;
 
16034
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_ASCII|LIBNDR_FLAG_STR_NULLTERM);
 
16035
                        if (r->keyword) {
 
16036
                                NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->keyword));
 
16037
                                NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->keyword));
 
16038
                                NDR_CHECK(ndr_push_relative_ptr2_end(ndr, r->keyword));
 
16039
                        }
 
16040
                        ndr->flags = _flags_save_string;
 
16041
                }
 
16042
                {
 
16043
                        uint32_t _flags_save_string = ndr->flags;
 
16044
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
16045
                        if (r->mui_dll) {
 
16046
                                NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->mui_dll));
 
16047
                                NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->mui_dll));
 
16048
                                NDR_CHECK(ndr_push_relative_ptr2_end(ndr, r->mui_dll));
 
16049
                        }
 
16050
                        ndr->flags = _flags_save_string;
 
16051
                }
 
16052
                {
 
16053
                        uint32_t _flags_save_string = ndr->flags;
 
16054
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
16055
                        if (r->display_name) {
 
16056
                                NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->display_name));
 
16057
                                NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->display_name));
 
16058
                                NDR_CHECK(ndr_push_relative_ptr2_end(ndr, r->display_name));
 
16059
                        }
 
16060
                        ndr->flags = _flags_save_string;
 
16061
                }
 
16062
        }
 
16063
        return NDR_ERR_SUCCESS;
 
16064
}
 
16065
 
 
16066
_PUBLIC_ enum ndr_err_code ndr_pull_spoolss_FormInfo2(struct ndr_pull *ndr, int ndr_flags, struct spoolss_FormInfo2 *r)
 
16067
{
 
16068
        uint32_t _ptr_form_name;
 
16069
        TALLOC_CTX *_mem_save_form_name_0;
 
16070
        uint32_t _ptr_keyword;
 
16071
        TALLOC_CTX *_mem_save_keyword_0;
 
16072
        uint32_t _ptr_mui_dll;
 
16073
        TALLOC_CTX *_mem_save_mui_dll_0;
 
16074
        uint32_t _ptr_display_name;
 
16075
        TALLOC_CTX *_mem_save_display_name_0;
 
16076
        if (ndr_flags & NDR_SCALARS) {
 
16077
                NDR_CHECK(ndr_pull_align(ndr, 5));
 
16078
                NDR_CHECK(ndr_pull_spoolss_FormFlags(ndr, NDR_SCALARS, &r->flags));
 
16079
                {
 
16080
                        uint32_t _flags_save_string = ndr->flags;
 
16081
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
16082
                        NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_form_name));
 
16083
                        if (_ptr_form_name) {
 
16084
                                NDR_PULL_ALLOC(ndr, r->form_name);
 
16085
                                NDR_CHECK(ndr_pull_relative_ptr1(ndr, r->form_name, _ptr_form_name));
 
16086
                        } else {
 
16087
                                r->form_name = NULL;
 
16088
                        }
 
16089
                        ndr->flags = _flags_save_string;
 
16090
                }
 
16091
                NDR_CHECK(ndr_pull_spoolss_FormSize(ndr, NDR_SCALARS, &r->size));
 
16092
                NDR_CHECK(ndr_pull_spoolss_FormArea(ndr, NDR_SCALARS, &r->area));
 
16093
                {
 
16094
                        uint32_t _flags_save_string = ndr->flags;
 
16095
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_ASCII|LIBNDR_FLAG_STR_NULLTERM);
 
16096
                        NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_keyword));
 
16097
                        if (_ptr_keyword) {
 
16098
                                NDR_PULL_ALLOC(ndr, r->keyword);
 
16099
                                NDR_CHECK(ndr_pull_relative_ptr1(ndr, r->keyword, _ptr_keyword));
 
16100
                        } else {
 
16101
                                r->keyword = NULL;
 
16102
                        }
 
16103
                        ndr->flags = _flags_save_string;
 
16104
                }
 
16105
                NDR_CHECK(ndr_pull_spoolss_FormStringType(ndr, NDR_SCALARS, &r->string_type));
 
16106
                {
 
16107
                        uint32_t _flags_save_string = ndr->flags;
 
16108
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
16109
                        NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_mui_dll));
 
16110
                        if (_ptr_mui_dll) {
 
16111
                                NDR_PULL_ALLOC(ndr, r->mui_dll);
 
16112
                                NDR_CHECK(ndr_pull_relative_ptr1(ndr, r->mui_dll, _ptr_mui_dll));
 
16113
                        } else {
 
16114
                                r->mui_dll = NULL;
 
16115
                        }
 
16116
                        ndr->flags = _flags_save_string;
 
16117
                }
 
16118
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->ressource_id));
 
16119
                {
 
16120
                        uint32_t _flags_save_string = ndr->flags;
 
16121
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
16122
                        NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_display_name));
 
16123
                        if (_ptr_display_name) {
 
16124
                                NDR_PULL_ALLOC(ndr, r->display_name);
 
16125
                                NDR_CHECK(ndr_pull_relative_ptr1(ndr, r->display_name, _ptr_display_name));
 
16126
                        } else {
 
16127
                                r->display_name = NULL;
 
16128
                        }
 
16129
                        ndr->flags = _flags_save_string;
 
16130
                }
 
16131
                NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->lang_id));
 
16132
                NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->unused));
 
16133
                NDR_CHECK(ndr_pull_trailer_align(ndr, 5));
 
16134
        }
 
16135
        if (ndr_flags & NDR_BUFFERS) {
 
16136
                {
 
16137
                        uint32_t _flags_save_string = ndr->flags;
 
16138
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
16139
                        if (r->form_name) {
 
16140
                                uint32_t _relative_save_offset;
 
16141
                                _relative_save_offset = ndr->offset;
 
16142
                                NDR_CHECK(ndr_pull_relative_ptr2(ndr, r->form_name));
 
16143
                                _mem_save_form_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
16144
                                NDR_PULL_SET_MEM_CTX(ndr, r->form_name, 0);
 
16145
                                NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->form_name));
 
16146
                                NDR_PULL_SET_MEM_CTX(ndr, _mem_save_form_name_0, 0);
 
16147
                                ndr->offset = _relative_save_offset;
 
16148
                        }
 
16149
                        ndr->flags = _flags_save_string;
 
16150
                }
 
16151
                {
 
16152
                        uint32_t _flags_save_string = ndr->flags;
 
16153
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_ASCII|LIBNDR_FLAG_STR_NULLTERM);
 
16154
                        if (r->keyword) {
 
16155
                                uint32_t _relative_save_offset;
 
16156
                                _relative_save_offset = ndr->offset;
 
16157
                                NDR_CHECK(ndr_pull_relative_ptr2(ndr, r->keyword));
 
16158
                                _mem_save_keyword_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
16159
                                NDR_PULL_SET_MEM_CTX(ndr, r->keyword, 0);
 
16160
                                NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->keyword));
 
16161
                                NDR_PULL_SET_MEM_CTX(ndr, _mem_save_keyword_0, 0);
 
16162
                                ndr->offset = _relative_save_offset;
 
16163
                        }
 
16164
                        ndr->flags = _flags_save_string;
 
16165
                }
 
16166
                {
 
16167
                        uint32_t _flags_save_string = ndr->flags;
 
16168
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
16169
                        if (r->mui_dll) {
 
16170
                                uint32_t _relative_save_offset;
 
16171
                                _relative_save_offset = ndr->offset;
 
16172
                                NDR_CHECK(ndr_pull_relative_ptr2(ndr, r->mui_dll));
 
16173
                                _mem_save_mui_dll_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
16174
                                NDR_PULL_SET_MEM_CTX(ndr, r->mui_dll, 0);
 
16175
                                NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->mui_dll));
 
16176
                                NDR_PULL_SET_MEM_CTX(ndr, _mem_save_mui_dll_0, 0);
 
16177
                                ndr->offset = _relative_save_offset;
 
16178
                        }
 
16179
                        ndr->flags = _flags_save_string;
 
16180
                }
 
16181
                {
 
16182
                        uint32_t _flags_save_string = ndr->flags;
 
16183
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
16184
                        if (r->display_name) {
 
16185
                                uint32_t _relative_save_offset;
 
16186
                                _relative_save_offset = ndr->offset;
 
16187
                                NDR_CHECK(ndr_pull_relative_ptr2(ndr, r->display_name));
 
16188
                                _mem_save_display_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
16189
                                NDR_PULL_SET_MEM_CTX(ndr, r->display_name, 0);
 
16190
                                NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->display_name));
 
16191
                                NDR_PULL_SET_MEM_CTX(ndr, _mem_save_display_name_0, 0);
 
16192
                                ndr->offset = _relative_save_offset;
 
16193
                        }
 
16194
                        ndr->flags = _flags_save_string;
 
16195
                }
 
16196
        }
 
16197
        return NDR_ERR_SUCCESS;
 
16198
}
 
16199
 
 
16200
_PUBLIC_ void ndr_print_spoolss_FormInfo2(struct ndr_print *ndr, const char *name, const struct spoolss_FormInfo2 *r)
 
16201
{
 
16202
        ndr_print_struct(ndr, name, "spoolss_FormInfo2");
 
16203
        ndr->depth++;
 
16204
        ndr_print_spoolss_FormFlags(ndr, "flags", r->flags);
 
16205
        ndr_print_ptr(ndr, "form_name", r->form_name);
 
16206
        ndr->depth++;
 
16207
        if (r->form_name) {
 
16208
                ndr_print_string(ndr, "form_name", r->form_name);
 
16209
        }
 
16210
        ndr->depth--;
 
16211
        ndr_print_spoolss_FormSize(ndr, "size", &r->size);
 
16212
        ndr_print_spoolss_FormArea(ndr, "area", &r->area);
 
16213
        ndr_print_ptr(ndr, "keyword", r->keyword);
 
16214
        ndr->depth++;
 
16215
        if (r->keyword) {
 
16216
                ndr_print_string(ndr, "keyword", r->keyword);
 
16217
        }
 
16218
        ndr->depth--;
 
16219
        ndr_print_spoolss_FormStringType(ndr, "string_type", r->string_type);
 
16220
        ndr_print_ptr(ndr, "mui_dll", r->mui_dll);
 
16221
        ndr->depth++;
 
16222
        if (r->mui_dll) {
 
16223
                ndr_print_string(ndr, "mui_dll", r->mui_dll);
 
16224
        }
 
16225
        ndr->depth--;
 
16226
        ndr_print_uint32(ndr, "ressource_id", r->ressource_id);
 
16227
        ndr_print_ptr(ndr, "display_name", r->display_name);
 
16228
        ndr->depth++;
 
16229
        if (r->display_name) {
 
16230
                ndr_print_string(ndr, "display_name", r->display_name);
 
16231
        }
 
16232
        ndr->depth--;
 
16233
        ndr_print_uint16(ndr, "lang_id", r->lang_id);
 
16234
        ndr_print_uint16(ndr, "unused", r->unused);
 
16235
        ndr->depth--;
 
16236
}
 
16237
 
 
16238
_PUBLIC_ size_t ndr_size_spoolss_FormInfo2(const struct spoolss_FormInfo2 *r, struct smb_iconv_convenience *ic, int flags)
 
16239
{
 
16240
        return ndr_size_struct(r, flags, (ndr_push_flags_fn_t)ndr_push_spoolss_FormInfo2, ic);
 
16241
}
 
16242
 
 
16243
_PUBLIC_ enum ndr_err_code ndr_push_spoolss_FormInfo(struct ndr_push *ndr, int ndr_flags, const union spoolss_FormInfo *r)
 
16244
{
 
16245
        uint32_t _save_relative_base_offset = ndr_push_get_relative_base_offset(ndr);
 
16246
        {
 
16247
                uint32_t _flags_save_UNION = ndr->flags;
 
16248
                ndr_set_flags(&ndr->flags, LIBNDR_FLAG_RELATIVE_REVERSE);
 
16249
                if (ndr_flags & NDR_SCALARS) {
 
16250
                        int level = ndr_push_get_switch_value(ndr, r);
 
16251
                        NDR_CHECK(ndr_push_union_align(ndr, 5));
 
16252
                        switch (level) {
 
16253
                                case 1: {
 
16254
                                        NDR_CHECK(ndr_push_align(ndr, 5));
 
16255
                                        NDR_CHECK(ndr_push_setup_relative_base_offset1(ndr, r, ndr->offset));
 
16256
                                        NDR_CHECK(ndr_push_spoolss_FormInfo1(ndr, NDR_SCALARS, &r->info1));
 
16257
                                break; }
 
16258
 
 
16259
                                case 2: {
 
16260
                                        NDR_CHECK(ndr_push_align(ndr, 5));
 
16261
                                        NDR_CHECK(ndr_push_setup_relative_base_offset1(ndr, r, ndr->offset));
 
16262
                                        NDR_CHECK(ndr_push_spoolss_FormInfo2(ndr, NDR_SCALARS, &r->info2));
 
16263
                                break; }
 
16264
 
 
16265
                                default: {
 
16266
                                break; }
 
16267
 
 
16268
                        }
 
16269
                }
 
16270
                if (ndr_flags & NDR_BUFFERS) {
 
16271
                        int level = ndr_push_get_switch_value(ndr, r);
 
16272
                        NDR_CHECK(ndr_push_setup_relative_base_offset2(ndr, r));
 
16273
                        switch (level) {
 
16274
                                case 1:
 
16275
                                        NDR_CHECK(ndr_push_spoolss_FormInfo1(ndr, NDR_BUFFERS, &r->info1));
 
16276
                                break;
 
16277
 
 
16278
                                case 2:
 
16279
                                        NDR_CHECK(ndr_push_spoolss_FormInfo2(ndr, NDR_BUFFERS, &r->info2));
 
16280
                                break;
 
16281
 
 
16282
                                default:
 
16283
                                break;
 
16284
 
 
16285
                        }
 
16286
                }
 
16287
                ndr->flags = _flags_save_UNION;
 
16288
        }
 
16289
        ndr_push_restore_relative_base_offset(ndr, _save_relative_base_offset);
 
16290
        return NDR_ERR_SUCCESS;
 
16291
}
 
16292
 
 
16293
_PUBLIC_ enum ndr_err_code ndr_pull_spoolss_FormInfo(struct ndr_pull *ndr, int ndr_flags, union spoolss_FormInfo *r)
 
16294
{
 
16295
        uint32_t _save_relative_base_offset = ndr_pull_get_relative_base_offset(ndr);
 
16296
        int level;
 
16297
        {
 
16298
                uint32_t _flags_save_UNION = ndr->flags;
 
16299
                ndr_set_flags(&ndr->flags, LIBNDR_FLAG_RELATIVE_REVERSE);
 
16300
                level = ndr_pull_get_switch_value(ndr, r);
 
16301
                if (ndr_flags & NDR_SCALARS) {
 
16302
                        NDR_CHECK(ndr_pull_union_align(ndr, 5));
 
16303
                        switch (level) {
 
16304
                                case 1: {
 
16305
                                        NDR_CHECK(ndr_pull_align(ndr, 5));
 
16306
                                        NDR_CHECK(ndr_pull_setup_relative_base_offset1(ndr, r, ndr->offset));
 
16307
                                        NDR_CHECK(ndr_pull_spoolss_FormInfo1(ndr, NDR_SCALARS, &r->info1));
 
16308
                                break; }
 
16309
 
 
16310
                                case 2: {
 
16311
                                        NDR_CHECK(ndr_pull_align(ndr, 5));
 
16312
                                        NDR_CHECK(ndr_pull_setup_relative_base_offset1(ndr, r, ndr->offset));
 
16313
                                        NDR_CHECK(ndr_pull_spoolss_FormInfo2(ndr, NDR_SCALARS, &r->info2));
 
16314
                                break; }
 
16315
 
 
16316
                                default: {
 
16317
                                break; }
 
16318
 
 
16319
                        }
 
16320
                }
 
16321
                if (ndr_flags & NDR_BUFFERS) {
 
16322
                        NDR_CHECK(ndr_pull_setup_relative_base_offset2(ndr, r));
 
16323
                        switch (level) {
 
16324
                                case 1:
 
16325
                                        NDR_CHECK(ndr_pull_spoolss_FormInfo1(ndr, NDR_BUFFERS, &r->info1));
 
16326
                                break;
 
16327
 
 
16328
                                case 2:
 
16329
                                        NDR_CHECK(ndr_pull_spoolss_FormInfo2(ndr, NDR_BUFFERS, &r->info2));
 
16330
                                break;
 
16331
 
 
16332
                                default:
 
16333
                                break;
 
16334
 
 
16335
                        }
 
16336
                }
 
16337
                ndr->flags = _flags_save_UNION;
 
16338
        }
 
16339
        ndr_pull_restore_relative_base_offset(ndr, _save_relative_base_offset);
 
16340
        return NDR_ERR_SUCCESS;
 
16341
}
 
16342
 
 
16343
_PUBLIC_ void ndr_print_spoolss_FormInfo(struct ndr_print *ndr, const char *name, const union spoolss_FormInfo *r)
 
16344
{
 
16345
        int level;
 
16346
        {
 
16347
                uint32_t _flags_save_UNION = ndr->flags;
 
16348
                ndr_set_flags(&ndr->flags, LIBNDR_FLAG_RELATIVE_REVERSE);
 
16349
                level = ndr_print_get_switch_value(ndr, r);
 
16350
                ndr_print_union(ndr, name, level, "spoolss_FormInfo");
 
16351
                switch (level) {
 
16352
                        case 1:
 
16353
                                ndr_print_spoolss_FormInfo1(ndr, "info1", &r->info1);
 
16354
                        break;
 
16355
 
 
16356
                        case 2:
 
16357
                                ndr_print_spoolss_FormInfo2(ndr, "info2", &r->info2);
 
16358
                        break;
 
16359
 
 
16360
                        default:
 
16361
                        break;
 
16362
 
 
16363
                }
 
16364
                ndr->flags = _flags_save_UNION;
 
16365
        }
 
16366
}
 
16367
 
 
16368
_PUBLIC_ size_t ndr_size_spoolss_FormInfo(const union spoolss_FormInfo *r, uint32_t level, struct smb_iconv_convenience *ic, int flags)
 
16369
{
 
16370
        flags |= LIBNDR_FLAG_RELATIVE_REVERSE;
 
16371
        return ndr_size_union(r, flags, level, (ndr_push_flags_fn_t)ndr_push_spoolss_FormInfo, ic);
 
16372
}
 
16373
 
 
16374
static enum ndr_err_code ndr_push_spoolss_AddFormInfo1(struct ndr_push *ndr, int ndr_flags, const struct spoolss_AddFormInfo1 *r)
 
16375
{
 
16376
        if (ndr_flags & NDR_SCALARS) {
 
16377
                NDR_CHECK(ndr_push_align(ndr, 5));
 
16378
                NDR_CHECK(ndr_push_spoolss_FormFlags(ndr, NDR_SCALARS, r->flags));
 
16379
                NDR_CHECK(ndr_push_unique_ptr(ndr, r->form_name));
 
16380
                NDR_CHECK(ndr_push_spoolss_FormSize(ndr, NDR_SCALARS, &r->size));
 
16381
                NDR_CHECK(ndr_push_spoolss_FormArea(ndr, NDR_SCALARS, &r->area));
 
16382
                NDR_CHECK(ndr_push_trailer_align(ndr, 5));
 
16383
        }
 
16384
        if (ndr_flags & NDR_BUFFERS) {
 
16385
                if (r->form_name) {
 
16386
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->form_name, CH_UTF16)));
 
16387
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0));
 
16388
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->form_name, CH_UTF16)));
 
16389
                        NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->form_name, ndr_charset_length(r->form_name, CH_UTF16), sizeof(uint16_t), CH_UTF16));
 
16390
                }
 
16391
        }
 
16392
        return NDR_ERR_SUCCESS;
 
16393
}
 
16394
 
 
16395
static enum ndr_err_code ndr_pull_spoolss_AddFormInfo1(struct ndr_pull *ndr, int ndr_flags, struct spoolss_AddFormInfo1 *r)
 
16396
{
 
16397
        uint32_t _ptr_form_name;
 
16398
        TALLOC_CTX *_mem_save_form_name_0;
 
16399
        if (ndr_flags & NDR_SCALARS) {
 
16400
                NDR_CHECK(ndr_pull_align(ndr, 5));
 
16401
                NDR_CHECK(ndr_pull_spoolss_FormFlags(ndr, NDR_SCALARS, &r->flags));
 
16402
                NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_form_name));
 
16403
                if (_ptr_form_name) {
 
16404
                        NDR_PULL_ALLOC(ndr, r->form_name);
 
16405
                } else {
 
16406
                        r->form_name = NULL;
 
16407
                }
 
16408
                NDR_CHECK(ndr_pull_spoolss_FormSize(ndr, NDR_SCALARS, &r->size));
 
16409
                NDR_CHECK(ndr_pull_spoolss_FormArea(ndr, NDR_SCALARS, &r->area));
 
16410
                NDR_CHECK(ndr_pull_trailer_align(ndr, 5));
 
16411
        }
 
16412
        if (ndr_flags & NDR_BUFFERS) {
 
16413
                if (r->form_name) {
 
16414
                        _mem_save_form_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
16415
                        NDR_PULL_SET_MEM_CTX(ndr, r->form_name, 0);
 
16416
                        NDR_CHECK(ndr_pull_array_size(ndr, &r->form_name));
 
16417
                        NDR_CHECK(ndr_pull_array_length(ndr, &r->form_name));
 
16418
                        if (ndr_get_array_length(ndr, &r->form_name) > ndr_get_array_size(ndr, &r->form_name)) {
 
16419
                                return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->form_name), ndr_get_array_length(ndr, &r->form_name));
 
16420
                        }
 
16421
                        NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->form_name), sizeof(uint16_t)));
 
16422
                        NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->form_name, ndr_get_array_length(ndr, &r->form_name), sizeof(uint16_t), CH_UTF16));
 
16423
                        NDR_PULL_SET_MEM_CTX(ndr, _mem_save_form_name_0, 0);
 
16424
                }
 
16425
        }
 
16426
        return NDR_ERR_SUCCESS;
 
16427
}
 
16428
 
 
16429
_PUBLIC_ void ndr_print_spoolss_AddFormInfo1(struct ndr_print *ndr, const char *name, const struct spoolss_AddFormInfo1 *r)
 
16430
{
 
16431
        ndr_print_struct(ndr, name, "spoolss_AddFormInfo1");
 
16432
        ndr->depth++;
 
16433
        ndr_print_spoolss_FormFlags(ndr, "flags", r->flags);
 
16434
        ndr_print_ptr(ndr, "form_name", r->form_name);
 
16435
        ndr->depth++;
 
16436
        if (r->form_name) {
 
16437
                ndr_print_string(ndr, "form_name", r->form_name);
 
16438
        }
 
16439
        ndr->depth--;
 
16440
        ndr_print_spoolss_FormSize(ndr, "size", &r->size);
 
16441
        ndr_print_spoolss_FormArea(ndr, "area", &r->area);
 
16442
        ndr->depth--;
 
16443
}
 
16444
 
 
16445
static enum ndr_err_code ndr_push_spoolss_AddFormInfo2(struct ndr_push *ndr, int ndr_flags, const struct spoolss_AddFormInfo2 *r)
 
16446
{
 
16447
        if (ndr_flags & NDR_SCALARS) {
 
16448
                NDR_CHECK(ndr_push_align(ndr, 5));
 
16449
                NDR_CHECK(ndr_push_spoolss_FormFlags(ndr, NDR_SCALARS, r->flags));
 
16450
                NDR_CHECK(ndr_push_unique_ptr(ndr, r->form_name));
 
16451
                NDR_CHECK(ndr_push_spoolss_FormSize(ndr, NDR_SCALARS, &r->size));
 
16452
                NDR_CHECK(ndr_push_spoolss_FormArea(ndr, NDR_SCALARS, &r->area));
 
16453
                NDR_CHECK(ndr_push_unique_ptr(ndr, r->keyword));
 
16454
                NDR_CHECK(ndr_push_spoolss_FormStringType(ndr, NDR_SCALARS, r->string_type));
 
16455
                NDR_CHECK(ndr_push_unique_ptr(ndr, r->mui_dll));
 
16456
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->ressource_id));
 
16457
                NDR_CHECK(ndr_push_unique_ptr(ndr, r->display_name));
 
16458
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->lang_id));
 
16459
                NDR_CHECK(ndr_push_trailer_align(ndr, 5));
 
16460
        }
 
16461
        if (ndr_flags & NDR_BUFFERS) {
 
16462
                if (r->form_name) {
 
16463
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->form_name, CH_UTF16)));
 
16464
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0));
 
16465
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->form_name, CH_UTF16)));
 
16466
                        NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->form_name, ndr_charset_length(r->form_name, CH_UTF16), sizeof(uint16_t), CH_UTF16));
 
16467
                }
 
16468
                if (r->keyword) {
 
16469
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->keyword, CH_DOS)));
 
16470
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0));
 
16471
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->keyword, CH_DOS)));
 
16472
                        NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->keyword, ndr_charset_length(r->keyword, CH_DOS), sizeof(uint8_t), CH_DOS));
 
16473
                }
 
16474
                if (r->mui_dll) {
 
16475
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->mui_dll, CH_UTF16)));
 
16476
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0));
 
16477
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->mui_dll, CH_UTF16)));
 
16478
                        NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->mui_dll, ndr_charset_length(r->mui_dll, CH_UTF16), sizeof(uint16_t), CH_UTF16));
 
16479
                }
 
16480
                if (r->display_name) {
 
16481
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->display_name, CH_UTF16)));
 
16482
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0));
 
16483
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->display_name, CH_UTF16)));
 
16484
                        NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->display_name, ndr_charset_length(r->display_name, CH_UTF16), sizeof(uint16_t), CH_UTF16));
 
16485
                }
 
16486
        }
 
16487
        return NDR_ERR_SUCCESS;
 
16488
}
 
16489
 
 
16490
static enum ndr_err_code ndr_pull_spoolss_AddFormInfo2(struct ndr_pull *ndr, int ndr_flags, struct spoolss_AddFormInfo2 *r)
 
16491
{
 
16492
        uint32_t _ptr_form_name;
 
16493
        TALLOC_CTX *_mem_save_form_name_0;
 
16494
        uint32_t _ptr_keyword;
 
16495
        TALLOC_CTX *_mem_save_keyword_0;
 
16496
        uint32_t _ptr_mui_dll;
 
16497
        TALLOC_CTX *_mem_save_mui_dll_0;
 
16498
        uint32_t _ptr_display_name;
 
16499
        TALLOC_CTX *_mem_save_display_name_0;
 
16500
        if (ndr_flags & NDR_SCALARS) {
 
16501
                NDR_CHECK(ndr_pull_align(ndr, 5));
 
16502
                NDR_CHECK(ndr_pull_spoolss_FormFlags(ndr, NDR_SCALARS, &r->flags));
 
16503
                NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_form_name));
 
16504
                if (_ptr_form_name) {
 
16505
                        NDR_PULL_ALLOC(ndr, r->form_name);
 
16506
                } else {
 
16507
                        r->form_name = NULL;
 
16508
                }
 
16509
                NDR_CHECK(ndr_pull_spoolss_FormSize(ndr, NDR_SCALARS, &r->size));
 
16510
                NDR_CHECK(ndr_pull_spoolss_FormArea(ndr, NDR_SCALARS, &r->area));
 
16511
                NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_keyword));
 
16512
                if (_ptr_keyword) {
 
16513
                        NDR_PULL_ALLOC(ndr, r->keyword);
 
16514
                } else {
 
16515
                        r->keyword = NULL;
 
16516
                }
 
16517
                NDR_CHECK(ndr_pull_spoolss_FormStringType(ndr, NDR_SCALARS, &r->string_type));
 
16518
                NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_mui_dll));
 
16519
                if (_ptr_mui_dll) {
 
16520
                        NDR_PULL_ALLOC(ndr, r->mui_dll);
 
16521
                } else {
 
16522
                        r->mui_dll = NULL;
 
16523
                }
 
16524
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->ressource_id));
 
16525
                NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_display_name));
 
16526
                if (_ptr_display_name) {
 
16527
                        NDR_PULL_ALLOC(ndr, r->display_name);
 
16528
                } else {
 
16529
                        r->display_name = NULL;
 
16530
                }
 
16531
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->lang_id));
 
16532
                NDR_CHECK(ndr_pull_trailer_align(ndr, 5));
 
16533
        }
 
16534
        if (ndr_flags & NDR_BUFFERS) {
 
16535
                if (r->form_name) {
 
16536
                        _mem_save_form_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
16537
                        NDR_PULL_SET_MEM_CTX(ndr, r->form_name, 0);
 
16538
                        NDR_CHECK(ndr_pull_array_size(ndr, &r->form_name));
 
16539
                        NDR_CHECK(ndr_pull_array_length(ndr, &r->form_name));
 
16540
                        if (ndr_get_array_length(ndr, &r->form_name) > ndr_get_array_size(ndr, &r->form_name)) {
 
16541
                                return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->form_name), ndr_get_array_length(ndr, &r->form_name));
 
16542
                        }
 
16543
                        NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->form_name), sizeof(uint16_t)));
 
16544
                        NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->form_name, ndr_get_array_length(ndr, &r->form_name), sizeof(uint16_t), CH_UTF16));
 
16545
                        NDR_PULL_SET_MEM_CTX(ndr, _mem_save_form_name_0, 0);
 
16546
                }
 
16547
                if (r->keyword) {
 
16548
                        _mem_save_keyword_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
16549
                        NDR_PULL_SET_MEM_CTX(ndr, r->keyword, 0);
 
16550
                        NDR_CHECK(ndr_pull_array_size(ndr, &r->keyword));
 
16551
                        NDR_CHECK(ndr_pull_array_length(ndr, &r->keyword));
 
16552
                        if (ndr_get_array_length(ndr, &r->keyword) > ndr_get_array_size(ndr, &r->keyword)) {
 
16553
                                return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->keyword), ndr_get_array_length(ndr, &r->keyword));
 
16554
                        }
 
16555
                        NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->keyword), sizeof(uint8_t)));
 
16556
                        NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->keyword, ndr_get_array_length(ndr, &r->keyword), sizeof(uint8_t), CH_DOS));
 
16557
                        NDR_PULL_SET_MEM_CTX(ndr, _mem_save_keyword_0, 0);
 
16558
                }
 
16559
                if (r->mui_dll) {
 
16560
                        _mem_save_mui_dll_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
16561
                        NDR_PULL_SET_MEM_CTX(ndr, r->mui_dll, 0);
 
16562
                        NDR_CHECK(ndr_pull_array_size(ndr, &r->mui_dll));
 
16563
                        NDR_CHECK(ndr_pull_array_length(ndr, &r->mui_dll));
 
16564
                        if (ndr_get_array_length(ndr, &r->mui_dll) > ndr_get_array_size(ndr, &r->mui_dll)) {
 
16565
                                return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->mui_dll), ndr_get_array_length(ndr, &r->mui_dll));
 
16566
                        }
 
16567
                        NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->mui_dll), sizeof(uint16_t)));
 
16568
                        NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->mui_dll, ndr_get_array_length(ndr, &r->mui_dll), sizeof(uint16_t), CH_UTF16));
 
16569
                        NDR_PULL_SET_MEM_CTX(ndr, _mem_save_mui_dll_0, 0);
 
16570
                }
 
16571
                if (r->display_name) {
 
16572
                        _mem_save_display_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
16573
                        NDR_PULL_SET_MEM_CTX(ndr, r->display_name, 0);
 
16574
                        NDR_CHECK(ndr_pull_array_size(ndr, &r->display_name));
 
16575
                        NDR_CHECK(ndr_pull_array_length(ndr, &r->display_name));
 
16576
                        if (ndr_get_array_length(ndr, &r->display_name) > ndr_get_array_size(ndr, &r->display_name)) {
 
16577
                                return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->display_name), ndr_get_array_length(ndr, &r->display_name));
 
16578
                        }
 
16579
                        NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->display_name), sizeof(uint16_t)));
 
16580
                        NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->display_name, ndr_get_array_length(ndr, &r->display_name), sizeof(uint16_t), CH_UTF16));
 
16581
                        NDR_PULL_SET_MEM_CTX(ndr, _mem_save_display_name_0, 0);
 
16582
                }
 
16583
        }
 
16584
        return NDR_ERR_SUCCESS;
 
16585
}
 
16586
 
 
16587
_PUBLIC_ void ndr_print_spoolss_AddFormInfo2(struct ndr_print *ndr, const char *name, const struct spoolss_AddFormInfo2 *r)
 
16588
{
 
16589
        ndr_print_struct(ndr, name, "spoolss_AddFormInfo2");
 
16590
        ndr->depth++;
 
16591
        ndr_print_spoolss_FormFlags(ndr, "flags", r->flags);
 
16592
        ndr_print_ptr(ndr, "form_name", r->form_name);
 
16593
        ndr->depth++;
 
16594
        if (r->form_name) {
 
16595
                ndr_print_string(ndr, "form_name", r->form_name);
 
16596
        }
 
16597
        ndr->depth--;
 
16598
        ndr_print_spoolss_FormSize(ndr, "size", &r->size);
 
16599
        ndr_print_spoolss_FormArea(ndr, "area", &r->area);
 
16600
        ndr_print_ptr(ndr, "keyword", r->keyword);
 
16601
        ndr->depth++;
 
16602
        if (r->keyword) {
 
16603
                ndr_print_string(ndr, "keyword", r->keyword);
 
16604
        }
 
16605
        ndr->depth--;
 
16606
        ndr_print_spoolss_FormStringType(ndr, "string_type", r->string_type);
 
16607
        ndr_print_ptr(ndr, "mui_dll", r->mui_dll);
 
16608
        ndr->depth++;
 
16609
        if (r->mui_dll) {
 
16610
                ndr_print_string(ndr, "mui_dll", r->mui_dll);
 
16611
        }
 
16612
        ndr->depth--;
 
16613
        ndr_print_uint32(ndr, "ressource_id", r->ressource_id);
 
16614
        ndr_print_ptr(ndr, "display_name", r->display_name);
 
16615
        ndr->depth++;
 
16616
        if (r->display_name) {
 
16617
                ndr_print_string(ndr, "display_name", r->display_name);
 
16618
        }
 
16619
        ndr->depth--;
 
16620
        ndr_print_uint32(ndr, "lang_id", r->lang_id);
 
16621
        ndr->depth--;
 
16622
}
 
16623
 
 
16624
static enum ndr_err_code ndr_push_spoolss_AddFormInfo(struct ndr_push *ndr, int ndr_flags, const union spoolss_AddFormInfo *r)
 
16625
{
 
16626
        if (ndr_flags & NDR_SCALARS) {
 
16627
                int level = ndr_push_get_switch_value(ndr, r);
 
16628
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, level));
 
16629
                NDR_CHECK(ndr_push_union_align(ndr, 5));
 
16630
                switch (level) {
 
16631
                        case 1: {
 
16632
                                NDR_CHECK(ndr_push_unique_ptr(ndr, r->info1));
 
16633
                        break; }
 
16634
 
 
16635
                        case 2: {
 
16636
                                NDR_CHECK(ndr_push_unique_ptr(ndr, r->info2));
 
16637
                        break; }
 
16638
 
 
16639
                        default:
 
16640
                                return ndr_push_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u at %s", level, __location__);
 
16641
                }
 
16642
        }
 
16643
        if (ndr_flags & NDR_BUFFERS) {
 
16644
                int level = ndr_push_get_switch_value(ndr, r);
 
16645
                switch (level) {
 
16646
                        case 1:
 
16647
                                if (r->info1) {
 
16648
                                        NDR_CHECK(ndr_push_spoolss_AddFormInfo1(ndr, NDR_SCALARS|NDR_BUFFERS, r->info1));
 
16649
                                }
 
16650
                        break;
 
16651
 
 
16652
                        case 2:
 
16653
                                if (r->info2) {
 
16654
                                        NDR_CHECK(ndr_push_spoolss_AddFormInfo2(ndr, NDR_SCALARS|NDR_BUFFERS, r->info2));
 
16655
                                }
 
16656
                        break;
 
16657
 
 
16658
                        default:
 
16659
                                return ndr_push_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u at %s", level, __location__);
 
16660
                }
 
16661
        }
 
16662
        return NDR_ERR_SUCCESS;
 
16663
}
 
16664
 
 
16665
static enum ndr_err_code ndr_pull_spoolss_AddFormInfo(struct ndr_pull *ndr, int ndr_flags, union spoolss_AddFormInfo *r)
 
16666
{
 
16667
        int level;
 
16668
        uint32_t _level;
 
16669
        TALLOC_CTX *_mem_save_info1_0;
 
16670
        TALLOC_CTX *_mem_save_info2_0;
 
16671
        level = ndr_pull_get_switch_value(ndr, r);
 
16672
        if (ndr_flags & NDR_SCALARS) {
 
16673
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &_level));
 
16674
                if (_level != level) {
 
16675
                        return ndr_pull_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u for r at %s", _level, __location__);
 
16676
                }
 
16677
                NDR_CHECK(ndr_pull_union_align(ndr, 5));
 
16678
                switch (level) {
 
16679
                        case 1: {
 
16680
                                uint32_t _ptr_info1;
 
16681
                                NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_info1));
 
16682
                                if (_ptr_info1) {
 
16683
                                        NDR_PULL_ALLOC(ndr, r->info1);
 
16684
                                } else {
 
16685
                                        r->info1 = NULL;
 
16686
                                }
 
16687
                        break; }
 
16688
 
 
16689
                        case 2: {
 
16690
                                uint32_t _ptr_info2;
 
16691
                                NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_info2));
 
16692
                                if (_ptr_info2) {
 
16693
                                        NDR_PULL_ALLOC(ndr, r->info2);
 
16694
                                } else {
 
16695
                                        r->info2 = NULL;
 
16696
                                }
 
16697
                        break; }
 
16698
 
 
16699
                        default:
 
16700
                                return ndr_pull_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u at %s", level, __location__);
 
16701
                }
 
16702
        }
 
16703
        if (ndr_flags & NDR_BUFFERS) {
 
16704
                switch (level) {
 
16705
                        case 1:
 
16706
                                if (r->info1) {
 
16707
                                        _mem_save_info1_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
16708
                                        NDR_PULL_SET_MEM_CTX(ndr, r->info1, 0);
 
16709
                                        NDR_CHECK(ndr_pull_spoolss_AddFormInfo1(ndr, NDR_SCALARS|NDR_BUFFERS, r->info1));
 
16710
                                        NDR_PULL_SET_MEM_CTX(ndr, _mem_save_info1_0, 0);
 
16711
                                }
 
16712
                        break;
 
16713
 
 
16714
                        case 2:
 
16715
                                if (r->info2) {
 
16716
                                        _mem_save_info2_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
16717
                                        NDR_PULL_SET_MEM_CTX(ndr, r->info2, 0);
 
16718
                                        NDR_CHECK(ndr_pull_spoolss_AddFormInfo2(ndr, NDR_SCALARS|NDR_BUFFERS, r->info2));
 
16719
                                        NDR_PULL_SET_MEM_CTX(ndr, _mem_save_info2_0, 0);
 
16720
                                }
 
16721
                        break;
 
16722
 
 
16723
                        default:
 
16724
                                return ndr_pull_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u at %s", level, __location__);
 
16725
                }
 
16726
        }
 
16727
        return NDR_ERR_SUCCESS;
 
16728
}
 
16729
 
 
16730
_PUBLIC_ void ndr_print_spoolss_AddFormInfo(struct ndr_print *ndr, const char *name, const union spoolss_AddFormInfo *r)
 
16731
{
 
16732
        int level;
 
16733
        level = ndr_print_get_switch_value(ndr, r);
 
16734
        ndr_print_union(ndr, name, level, "spoolss_AddFormInfo");
 
16735
        switch (level) {
 
16736
                case 1:
 
16737
                        ndr_print_ptr(ndr, "info1", r->info1);
 
16738
                        ndr->depth++;
 
16739
                        if (r->info1) {
 
16740
                                ndr_print_spoolss_AddFormInfo1(ndr, "info1", r->info1);
 
16741
                        }
 
16742
                        ndr->depth--;
 
16743
                break;
 
16744
 
 
16745
                case 2:
 
16746
                        ndr_print_ptr(ndr, "info2", r->info2);
 
16747
                        ndr->depth++;
 
16748
                        if (r->info2) {
 
16749
                                ndr_print_spoolss_AddFormInfo2(ndr, "info2", r->info2);
 
16750
                        }
 
16751
                        ndr->depth--;
 
16752
                break;
 
16753
 
 
16754
                default:
 
16755
                        ndr_print_bad_level(ndr, name, level);
 
16756
        }
 
16757
}
 
16758
 
 
16759
_PUBLIC_ enum ndr_err_code ndr_push_spoolss_PortInfo1(struct ndr_push *ndr, int ndr_flags, const struct spoolss_PortInfo1 *r)
 
16760
{
 
16761
        if (ndr_flags & NDR_SCALARS) {
 
16762
                NDR_CHECK(ndr_push_align(ndr, 5));
 
16763
                {
 
16764
                        uint32_t _flags_save_string = ndr->flags;
 
16765
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
16766
                        NDR_CHECK(ndr_push_relative_ptr1(ndr, r->port_name));
 
16767
                        ndr->flags = _flags_save_string;
 
16768
                }
 
16769
                NDR_CHECK(ndr_push_trailer_align(ndr, 5));
 
16770
        }
 
16771
        if (ndr_flags & NDR_BUFFERS) {
 
16772
                {
 
16773
                        uint32_t _flags_save_string = ndr->flags;
 
16774
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
16775
                        if (r->port_name) {
 
16776
                                NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->port_name));
 
16777
                                NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->port_name));
 
16778
                                NDR_CHECK(ndr_push_relative_ptr2_end(ndr, r->port_name));
 
16779
                        }
 
16780
                        ndr->flags = _flags_save_string;
 
16781
                }
 
16782
        }
 
16783
        return NDR_ERR_SUCCESS;
 
16784
}
 
16785
 
 
16786
_PUBLIC_ enum ndr_err_code ndr_pull_spoolss_PortInfo1(struct ndr_pull *ndr, int ndr_flags, struct spoolss_PortInfo1 *r)
 
16787
{
 
16788
        uint32_t _ptr_port_name;
 
16789
        TALLOC_CTX *_mem_save_port_name_0;
 
16790
        if (ndr_flags & NDR_SCALARS) {
 
16791
                NDR_CHECK(ndr_pull_align(ndr, 5));
 
16792
                {
 
16793
                        uint32_t _flags_save_string = ndr->flags;
 
16794
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
16795
                        NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_port_name));
 
16796
                        if (_ptr_port_name) {
 
16797
                                NDR_PULL_ALLOC(ndr, r->port_name);
 
16798
                                NDR_CHECK(ndr_pull_relative_ptr1(ndr, r->port_name, _ptr_port_name));
 
16799
                        } else {
 
16800
                                r->port_name = NULL;
 
16801
                        }
 
16802
                        ndr->flags = _flags_save_string;
 
16803
                }
 
16804
                NDR_CHECK(ndr_pull_trailer_align(ndr, 5));
 
16805
        }
 
16806
        if (ndr_flags & NDR_BUFFERS) {
 
16807
                {
 
16808
                        uint32_t _flags_save_string = ndr->flags;
 
16809
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
16810
                        if (r->port_name) {
 
16811
                                uint32_t _relative_save_offset;
 
16812
                                _relative_save_offset = ndr->offset;
 
16813
                                NDR_CHECK(ndr_pull_relative_ptr2(ndr, r->port_name));
 
16814
                                _mem_save_port_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
16815
                                NDR_PULL_SET_MEM_CTX(ndr, r->port_name, 0);
 
16816
                                NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->port_name));
 
16817
                                NDR_PULL_SET_MEM_CTX(ndr, _mem_save_port_name_0, 0);
 
16818
                                ndr->offset = _relative_save_offset;
 
16819
                        }
 
16820
                        ndr->flags = _flags_save_string;
 
16821
                }
 
16822
        }
 
16823
        return NDR_ERR_SUCCESS;
 
16824
}
 
16825
 
 
16826
_PUBLIC_ void ndr_print_spoolss_PortInfo1(struct ndr_print *ndr, const char *name, const struct spoolss_PortInfo1 *r)
 
16827
{
 
16828
        ndr_print_struct(ndr, name, "spoolss_PortInfo1");
 
16829
        ndr->depth++;
 
16830
        ndr_print_ptr(ndr, "port_name", r->port_name);
 
16831
        ndr->depth++;
 
16832
        if (r->port_name) {
 
16833
                ndr_print_string(ndr, "port_name", r->port_name);
 
16834
        }
 
16835
        ndr->depth--;
 
16836
        ndr->depth--;
 
16837
}
 
16838
 
 
16839
_PUBLIC_ size_t ndr_size_spoolss_PortInfo1(const struct spoolss_PortInfo1 *r, struct smb_iconv_convenience *ic, int flags)
 
16840
{
 
16841
        return ndr_size_struct(r, flags, (ndr_push_flags_fn_t)ndr_push_spoolss_PortInfo1, ic);
 
16842
}
 
16843
 
 
16844
static enum ndr_err_code ndr_push_spoolss_PortType(struct ndr_push *ndr, int ndr_flags, uint32_t r)
 
16845
{
 
16846
        NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r));
 
16847
        return NDR_ERR_SUCCESS;
 
16848
}
 
16849
 
 
16850
static enum ndr_err_code ndr_pull_spoolss_PortType(struct ndr_pull *ndr, int ndr_flags, uint32_t *r)
 
16851
{
 
16852
        uint32_t v;
 
16853
        NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &v));
 
16854
        *r = v;
 
16855
        return NDR_ERR_SUCCESS;
 
16856
}
 
16857
 
 
16858
_PUBLIC_ void ndr_print_spoolss_PortType(struct ndr_print *ndr, const char *name, uint32_t r)
 
16859
{
 
16860
        ndr_print_uint32(ndr, name, r);
 
16861
        ndr->depth++;
 
16862
        ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SPOOLSS_PORT_TYPE_WRITE", SPOOLSS_PORT_TYPE_WRITE, r);
 
16863
        ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SPOOLSS_PORT_TYPE_READ", SPOOLSS_PORT_TYPE_READ, r);
 
16864
        ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SPOOLSS_PORT_TYPE_REDIRECTED", SPOOLSS_PORT_TYPE_REDIRECTED, r);
 
16865
        ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SPOOLSS_PORT_TYPE_NET_ATTACHED", SPOOLSS_PORT_TYPE_NET_ATTACHED, r);
 
16866
        ndr->depth--;
 
16867
}
 
16868
 
 
16869
_PUBLIC_ enum ndr_err_code ndr_push_spoolss_PortInfo2(struct ndr_push *ndr, int ndr_flags, const struct spoolss_PortInfo2 *r)
 
16870
{
 
16871
        if (ndr_flags & NDR_SCALARS) {
 
16872
                NDR_CHECK(ndr_push_align(ndr, 5));
 
16873
                {
 
16874
                        uint32_t _flags_save_string = ndr->flags;
 
16875
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
16876
                        NDR_CHECK(ndr_push_relative_ptr1(ndr, r->port_name));
 
16877
                        ndr->flags = _flags_save_string;
 
16878
                }
 
16879
                {
 
16880
                        uint32_t _flags_save_string = ndr->flags;
 
16881
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
16882
                        NDR_CHECK(ndr_push_relative_ptr1(ndr, r->monitor_name));
 
16883
                        ndr->flags = _flags_save_string;
 
16884
                }
 
16885
                {
 
16886
                        uint32_t _flags_save_string = ndr->flags;
 
16887
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
16888
                        NDR_CHECK(ndr_push_relative_ptr1(ndr, r->description));
 
16889
                        ndr->flags = _flags_save_string;
 
16890
                }
 
16891
                NDR_CHECK(ndr_push_spoolss_PortType(ndr, NDR_SCALARS, r->port_type));
 
16892
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->reserved));
 
16893
                NDR_CHECK(ndr_push_trailer_align(ndr, 5));
 
16894
        }
 
16895
        if (ndr_flags & NDR_BUFFERS) {
 
16896
                {
 
16897
                        uint32_t _flags_save_string = ndr->flags;
 
16898
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
16899
                        if (r->port_name) {
 
16900
                                NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->port_name));
 
16901
                                NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->port_name));
 
16902
                                NDR_CHECK(ndr_push_relative_ptr2_end(ndr, r->port_name));
 
16903
                        }
 
16904
                        ndr->flags = _flags_save_string;
 
16905
                }
 
16906
                {
 
16907
                        uint32_t _flags_save_string = ndr->flags;
 
16908
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
16909
                        if (r->monitor_name) {
 
16910
                                NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->monitor_name));
 
16911
                                NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->monitor_name));
 
16912
                                NDR_CHECK(ndr_push_relative_ptr2_end(ndr, r->monitor_name));
 
16913
                        }
 
16914
                        ndr->flags = _flags_save_string;
 
16915
                }
 
16916
                {
 
16917
                        uint32_t _flags_save_string = ndr->flags;
 
16918
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
16919
                        if (r->description) {
 
16920
                                NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->description));
 
16921
                                NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->description));
 
16922
                                NDR_CHECK(ndr_push_relative_ptr2_end(ndr, r->description));
 
16923
                        }
 
16924
                        ndr->flags = _flags_save_string;
 
16925
                }
 
16926
        }
 
16927
        return NDR_ERR_SUCCESS;
 
16928
}
 
16929
 
 
16930
_PUBLIC_ enum ndr_err_code ndr_pull_spoolss_PortInfo2(struct ndr_pull *ndr, int ndr_flags, struct spoolss_PortInfo2 *r)
 
16931
{
 
16932
        uint32_t _ptr_port_name;
 
16933
        TALLOC_CTX *_mem_save_port_name_0;
 
16934
        uint32_t _ptr_monitor_name;
 
16935
        TALLOC_CTX *_mem_save_monitor_name_0;
 
16936
        uint32_t _ptr_description;
 
16937
        TALLOC_CTX *_mem_save_description_0;
 
16938
        if (ndr_flags & NDR_SCALARS) {
 
16939
                NDR_CHECK(ndr_pull_align(ndr, 5));
 
16940
                {
 
16941
                        uint32_t _flags_save_string = ndr->flags;
 
16942
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
16943
                        NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_port_name));
 
16944
                        if (_ptr_port_name) {
 
16945
                                NDR_PULL_ALLOC(ndr, r->port_name);
 
16946
                                NDR_CHECK(ndr_pull_relative_ptr1(ndr, r->port_name, _ptr_port_name));
 
16947
                        } else {
 
16948
                                r->port_name = NULL;
 
16949
                        }
 
16950
                        ndr->flags = _flags_save_string;
 
16951
                }
 
16952
                {
 
16953
                        uint32_t _flags_save_string = ndr->flags;
 
16954
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
16955
                        NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_monitor_name));
 
16956
                        if (_ptr_monitor_name) {
 
16957
                                NDR_PULL_ALLOC(ndr, r->monitor_name);
 
16958
                                NDR_CHECK(ndr_pull_relative_ptr1(ndr, r->monitor_name, _ptr_monitor_name));
 
16959
                        } else {
 
16960
                                r->monitor_name = NULL;
 
16961
                        }
 
16962
                        ndr->flags = _flags_save_string;
 
16963
                }
 
16964
                {
 
16965
                        uint32_t _flags_save_string = ndr->flags;
 
16966
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
16967
                        NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_description));
 
16968
                        if (_ptr_description) {
 
16969
                                NDR_PULL_ALLOC(ndr, r->description);
 
16970
                                NDR_CHECK(ndr_pull_relative_ptr1(ndr, r->description, _ptr_description));
 
16971
                        } else {
 
16972
                                r->description = NULL;
 
16973
                        }
 
16974
                        ndr->flags = _flags_save_string;
 
16975
                }
 
16976
                NDR_CHECK(ndr_pull_spoolss_PortType(ndr, NDR_SCALARS, &r->port_type));
 
16977
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->reserved));
 
16978
                NDR_CHECK(ndr_pull_trailer_align(ndr, 5));
 
16979
        }
 
16980
        if (ndr_flags & NDR_BUFFERS) {
 
16981
                {
 
16982
                        uint32_t _flags_save_string = ndr->flags;
 
16983
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
16984
                        if (r->port_name) {
 
16985
                                uint32_t _relative_save_offset;
 
16986
                                _relative_save_offset = ndr->offset;
 
16987
                                NDR_CHECK(ndr_pull_relative_ptr2(ndr, r->port_name));
 
16988
                                _mem_save_port_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
16989
                                NDR_PULL_SET_MEM_CTX(ndr, r->port_name, 0);
 
16990
                                NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->port_name));
 
16991
                                NDR_PULL_SET_MEM_CTX(ndr, _mem_save_port_name_0, 0);
 
16992
                                ndr->offset = _relative_save_offset;
 
16993
                        }
 
16994
                        ndr->flags = _flags_save_string;
 
16995
                }
 
16996
                {
 
16997
                        uint32_t _flags_save_string = ndr->flags;
 
16998
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
16999
                        if (r->monitor_name) {
 
17000
                                uint32_t _relative_save_offset;
 
17001
                                _relative_save_offset = ndr->offset;
 
17002
                                NDR_CHECK(ndr_pull_relative_ptr2(ndr, r->monitor_name));
 
17003
                                _mem_save_monitor_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
17004
                                NDR_PULL_SET_MEM_CTX(ndr, r->monitor_name, 0);
 
17005
                                NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->monitor_name));
 
17006
                                NDR_PULL_SET_MEM_CTX(ndr, _mem_save_monitor_name_0, 0);
 
17007
                                ndr->offset = _relative_save_offset;
 
17008
                        }
 
17009
                        ndr->flags = _flags_save_string;
 
17010
                }
 
17011
                {
 
17012
                        uint32_t _flags_save_string = ndr->flags;
 
17013
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
17014
                        if (r->description) {
 
17015
                                uint32_t _relative_save_offset;
 
17016
                                _relative_save_offset = ndr->offset;
 
17017
                                NDR_CHECK(ndr_pull_relative_ptr2(ndr, r->description));
 
17018
                                _mem_save_description_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
17019
                                NDR_PULL_SET_MEM_CTX(ndr, r->description, 0);
 
17020
                                NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->description));
 
17021
                                NDR_PULL_SET_MEM_CTX(ndr, _mem_save_description_0, 0);
 
17022
                                ndr->offset = _relative_save_offset;
 
17023
                        }
 
17024
                        ndr->flags = _flags_save_string;
 
17025
                }
 
17026
        }
 
17027
        return NDR_ERR_SUCCESS;
 
17028
}
 
17029
 
 
17030
_PUBLIC_ void ndr_print_spoolss_PortInfo2(struct ndr_print *ndr, const char *name, const struct spoolss_PortInfo2 *r)
 
17031
{
 
17032
        ndr_print_struct(ndr, name, "spoolss_PortInfo2");
 
17033
        ndr->depth++;
 
17034
        ndr_print_ptr(ndr, "port_name", r->port_name);
 
17035
        ndr->depth++;
 
17036
        if (r->port_name) {
 
17037
                ndr_print_string(ndr, "port_name", r->port_name);
 
17038
        }
 
17039
        ndr->depth--;
 
17040
        ndr_print_ptr(ndr, "monitor_name", r->monitor_name);
 
17041
        ndr->depth++;
 
17042
        if (r->monitor_name) {
 
17043
                ndr_print_string(ndr, "monitor_name", r->monitor_name);
 
17044
        }
 
17045
        ndr->depth--;
 
17046
        ndr_print_ptr(ndr, "description", r->description);
 
17047
        ndr->depth++;
 
17048
        if (r->description) {
 
17049
                ndr_print_string(ndr, "description", r->description);
 
17050
        }
 
17051
        ndr->depth--;
 
17052
        ndr_print_spoolss_PortType(ndr, "port_type", r->port_type);
 
17053
        ndr_print_uint32(ndr, "reserved", r->reserved);
 
17054
        ndr->depth--;
 
17055
}
 
17056
 
 
17057
_PUBLIC_ size_t ndr_size_spoolss_PortInfo2(const struct spoolss_PortInfo2 *r, struct smb_iconv_convenience *ic, int flags)
 
17058
{
 
17059
        return ndr_size_struct(r, flags, (ndr_push_flags_fn_t)ndr_push_spoolss_PortInfo2, ic);
 
17060
}
 
17061
 
 
17062
static enum ndr_err_code ndr_push_spoolss_PortStatus(struct ndr_push *ndr, int ndr_flags, enum spoolss_PortStatus r)
 
17063
{
 
17064
        NDR_CHECK(ndr_push_enum_uint32(ndr, NDR_SCALARS, r));
 
17065
        return NDR_ERR_SUCCESS;
 
17066
}
 
17067
 
 
17068
static enum ndr_err_code ndr_pull_spoolss_PortStatus(struct ndr_pull *ndr, int ndr_flags, enum spoolss_PortStatus *r)
 
17069
{
 
17070
        uint32_t v;
 
17071
        NDR_CHECK(ndr_pull_enum_uint32(ndr, NDR_SCALARS, &v));
 
17072
        *r = v;
 
17073
        return NDR_ERR_SUCCESS;
 
17074
}
 
17075
 
 
17076
_PUBLIC_ void ndr_print_spoolss_PortStatus(struct ndr_print *ndr, const char *name, enum spoolss_PortStatus r)
 
17077
{
 
17078
        const char *val = NULL;
 
17079
 
 
17080
        switch (r) {
 
17081
                case PORT_STATUS_CLEAR: val = "PORT_STATUS_CLEAR"; break;
 
17082
                case PORT_STATUS_OFFLINE: val = "PORT_STATUS_OFFLINE"; break;
 
17083
                case PORT_STATUS_PAPER_JAM: val = "PORT_STATUS_PAPER_JAM"; break;
 
17084
                case PORT_STATUS_PAPER_OUT: val = "PORT_STATUS_PAPER_OUT"; break;
 
17085
                case PORT_STATUS_OUTPUT_BIN_FULL: val = "PORT_STATUS_OUTPUT_BIN_FULL"; break;
 
17086
                case PORT_STATUS_PAPER_PROBLEM: val = "PORT_STATUS_PAPER_PROBLEM"; break;
 
17087
                case PORT_STATUS_NO_TONER: val = "PORT_STATUS_NO_TONER"; break;
 
17088
                case PORT_STATUS_DOOR_OPEN: val = "PORT_STATUS_DOOR_OPEN"; break;
 
17089
                case PORT_STATUS_USER_INTERVENTION: val = "PORT_STATUS_USER_INTERVENTION"; break;
 
17090
                case PORT_STATUS_OUT_OF_MEMORY: val = "PORT_STATUS_OUT_OF_MEMORY"; break;
 
17091
                case PORT_STATUS_TONER_LOW: val = "PORT_STATUS_TONER_LOW"; break;
 
17092
                case PORT_STATUS_WARMING_UP: val = "PORT_STATUS_WARMING_UP"; break;
 
17093
                case PORT_STATUS_POWER_SAVE: val = "PORT_STATUS_POWER_SAVE"; break;
 
17094
        }
 
17095
        ndr_print_enum(ndr, name, "ENUM", val, r);
 
17096
}
 
17097
 
 
17098
static enum ndr_err_code ndr_push_spoolss_PortSeverity(struct ndr_push *ndr, int ndr_flags, enum spoolss_PortSeverity r)
 
17099
{
 
17100
        NDR_CHECK(ndr_push_enum_uint32(ndr, NDR_SCALARS, r));
 
17101
        return NDR_ERR_SUCCESS;
 
17102
}
 
17103
 
 
17104
static enum ndr_err_code ndr_pull_spoolss_PortSeverity(struct ndr_pull *ndr, int ndr_flags, enum spoolss_PortSeverity *r)
 
17105
{
 
17106
        uint32_t v;
 
17107
        NDR_CHECK(ndr_pull_enum_uint32(ndr, NDR_SCALARS, &v));
 
17108
        *r = v;
 
17109
        return NDR_ERR_SUCCESS;
 
17110
}
 
17111
 
 
17112
_PUBLIC_ void ndr_print_spoolss_PortSeverity(struct ndr_print *ndr, const char *name, enum spoolss_PortSeverity r)
 
17113
{
 
17114
        const char *val = NULL;
 
17115
 
 
17116
        switch (r) {
 
17117
                case PORT_STATUS_TYPE_ERROR: val = "PORT_STATUS_TYPE_ERROR"; break;
 
17118
                case PORT_STATUS_TYPE_WARNING: val = "PORT_STATUS_TYPE_WARNING"; break;
 
17119
                case PORT_STATUS_TYPE_INFO: val = "PORT_STATUS_TYPE_INFO"; break;
 
17120
        }
 
17121
        ndr_print_enum(ndr, name, "ENUM", val, r);
 
17122
}
 
17123
 
 
17124
_PUBLIC_ enum ndr_err_code ndr_push_spoolss_PortInfo3(struct ndr_push *ndr, int ndr_flags, const struct spoolss_PortInfo3 *r)
 
17125
{
 
17126
        if (ndr_flags & NDR_SCALARS) {
 
17127
                NDR_CHECK(ndr_push_align(ndr, 5));
 
17128
                NDR_CHECK(ndr_push_spoolss_PortStatus(ndr, NDR_SCALARS, r->status));
 
17129
                {
 
17130
                        uint32_t _flags_save_string = ndr->flags;
 
17131
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
17132
                        NDR_CHECK(ndr_push_relative_ptr1(ndr, r->status_string));
 
17133
                        ndr->flags = _flags_save_string;
 
17134
                }
 
17135
                NDR_CHECK(ndr_push_spoolss_PortSeverity(ndr, NDR_SCALARS, r->severity));
 
17136
                NDR_CHECK(ndr_push_trailer_align(ndr, 5));
 
17137
        }
 
17138
        if (ndr_flags & NDR_BUFFERS) {
 
17139
                {
 
17140
                        uint32_t _flags_save_string = ndr->flags;
 
17141
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
17142
                        if (r->status_string) {
 
17143
                                NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->status_string));
 
17144
                                NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->status_string));
 
17145
                                NDR_CHECK(ndr_push_relative_ptr2_end(ndr, r->status_string));
 
17146
                        }
 
17147
                        ndr->flags = _flags_save_string;
 
17148
                }
 
17149
        }
 
17150
        return NDR_ERR_SUCCESS;
 
17151
}
 
17152
 
 
17153
_PUBLIC_ enum ndr_err_code ndr_pull_spoolss_PortInfo3(struct ndr_pull *ndr, int ndr_flags, struct spoolss_PortInfo3 *r)
 
17154
{
 
17155
        uint32_t _ptr_status_string;
 
17156
        TALLOC_CTX *_mem_save_status_string_0;
 
17157
        if (ndr_flags & NDR_SCALARS) {
 
17158
                NDR_CHECK(ndr_pull_align(ndr, 5));
 
17159
                NDR_CHECK(ndr_pull_spoolss_PortStatus(ndr, NDR_SCALARS, &r->status));
 
17160
                {
 
17161
                        uint32_t _flags_save_string = ndr->flags;
 
17162
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
17163
                        NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_status_string));
 
17164
                        if (_ptr_status_string) {
 
17165
                                NDR_PULL_ALLOC(ndr, r->status_string);
 
17166
                                NDR_CHECK(ndr_pull_relative_ptr1(ndr, r->status_string, _ptr_status_string));
 
17167
                        } else {
 
17168
                                r->status_string = NULL;
 
17169
                        }
 
17170
                        ndr->flags = _flags_save_string;
 
17171
                }
 
17172
                NDR_CHECK(ndr_pull_spoolss_PortSeverity(ndr, NDR_SCALARS, &r->severity));
 
17173
                NDR_CHECK(ndr_pull_trailer_align(ndr, 5));
 
17174
        }
 
17175
        if (ndr_flags & NDR_BUFFERS) {
 
17176
                {
 
17177
                        uint32_t _flags_save_string = ndr->flags;
 
17178
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
17179
                        if (r->status_string) {
 
17180
                                uint32_t _relative_save_offset;
 
17181
                                _relative_save_offset = ndr->offset;
 
17182
                                NDR_CHECK(ndr_pull_relative_ptr2(ndr, r->status_string));
 
17183
                                _mem_save_status_string_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
17184
                                NDR_PULL_SET_MEM_CTX(ndr, r->status_string, 0);
 
17185
                                NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->status_string));
 
17186
                                NDR_PULL_SET_MEM_CTX(ndr, _mem_save_status_string_0, 0);
 
17187
                                ndr->offset = _relative_save_offset;
 
17188
                        }
 
17189
                        ndr->flags = _flags_save_string;
 
17190
                }
 
17191
        }
 
17192
        return NDR_ERR_SUCCESS;
 
17193
}
 
17194
 
 
17195
_PUBLIC_ void ndr_print_spoolss_PortInfo3(struct ndr_print *ndr, const char *name, const struct spoolss_PortInfo3 *r)
 
17196
{
 
17197
        ndr_print_struct(ndr, name, "spoolss_PortInfo3");
 
17198
        ndr->depth++;
 
17199
        ndr_print_spoolss_PortStatus(ndr, "status", r->status);
 
17200
        ndr_print_ptr(ndr, "status_string", r->status_string);
 
17201
        ndr->depth++;
 
17202
        if (r->status_string) {
 
17203
                ndr_print_string(ndr, "status_string", r->status_string);
 
17204
        }
 
17205
        ndr->depth--;
 
17206
        ndr_print_spoolss_PortSeverity(ndr, "severity", r->severity);
 
17207
        ndr->depth--;
 
17208
}
 
17209
 
 
17210
_PUBLIC_ size_t ndr_size_spoolss_PortInfo3(const struct spoolss_PortInfo3 *r, struct smb_iconv_convenience *ic, int flags)
 
17211
{
 
17212
        return ndr_size_struct(r, flags, (ndr_push_flags_fn_t)ndr_push_spoolss_PortInfo3, ic);
 
17213
}
 
17214
 
 
17215
_PUBLIC_ enum ndr_err_code ndr_push_spoolss_PortInfoFF(struct ndr_push *ndr, int ndr_flags, const struct spoolss_PortInfoFF *r)
 
17216
{
 
17217
        if (ndr_flags & NDR_SCALARS) {
 
17218
                NDR_CHECK(ndr_push_align(ndr, 5));
 
17219
                {
 
17220
                        uint32_t _flags_save_string = ndr->flags;
 
17221
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
17222
                        NDR_CHECK(ndr_push_relative_ptr1(ndr, r->port_name));
 
17223
                        ndr->flags = _flags_save_string;
 
17224
                }
 
17225
                NDR_CHECK(ndr_push_DATA_BLOB(ndr, NDR_SCALARS, r->monitor_data));
 
17226
                NDR_CHECK(ndr_push_trailer_align(ndr, 5));
 
17227
        }
 
17228
        if (ndr_flags & NDR_BUFFERS) {
 
17229
                {
 
17230
                        uint32_t _flags_save_string = ndr->flags;
 
17231
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
17232
                        if (r->port_name) {
 
17233
                                NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->port_name));
 
17234
                                NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->port_name));
 
17235
                                NDR_CHECK(ndr_push_relative_ptr2_end(ndr, r->port_name));
 
17236
                        }
 
17237
                        ndr->flags = _flags_save_string;
 
17238
                }
 
17239
        }
 
17240
        return NDR_ERR_SUCCESS;
 
17241
}
 
17242
 
 
17243
_PUBLIC_ enum ndr_err_code ndr_pull_spoolss_PortInfoFF(struct ndr_pull *ndr, int ndr_flags, struct spoolss_PortInfoFF *r)
 
17244
{
 
17245
        uint32_t _ptr_port_name;
 
17246
        TALLOC_CTX *_mem_save_port_name_0;
 
17247
        if (ndr_flags & NDR_SCALARS) {
 
17248
                NDR_CHECK(ndr_pull_align(ndr, 5));
 
17249
                {
 
17250
                        uint32_t _flags_save_string = ndr->flags;
 
17251
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
17252
                        NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_port_name));
 
17253
                        if (_ptr_port_name) {
 
17254
                                NDR_PULL_ALLOC(ndr, r->port_name);
 
17255
                                NDR_CHECK(ndr_pull_relative_ptr1(ndr, r->port_name, _ptr_port_name));
 
17256
                        } else {
 
17257
                                r->port_name = NULL;
 
17258
                        }
 
17259
                        ndr->flags = _flags_save_string;
 
17260
                }
 
17261
                NDR_CHECK(ndr_pull_DATA_BLOB(ndr, NDR_SCALARS, &r->monitor_data));
 
17262
                NDR_CHECK(ndr_pull_trailer_align(ndr, 5));
 
17263
        }
 
17264
        if (ndr_flags & NDR_BUFFERS) {
 
17265
                {
 
17266
                        uint32_t _flags_save_string = ndr->flags;
 
17267
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
17268
                        if (r->port_name) {
 
17269
                                uint32_t _relative_save_offset;
 
17270
                                _relative_save_offset = ndr->offset;
 
17271
                                NDR_CHECK(ndr_pull_relative_ptr2(ndr, r->port_name));
 
17272
                                _mem_save_port_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
17273
                                NDR_PULL_SET_MEM_CTX(ndr, r->port_name, 0);
 
17274
                                NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->port_name));
 
17275
                                NDR_PULL_SET_MEM_CTX(ndr, _mem_save_port_name_0, 0);
 
17276
                                ndr->offset = _relative_save_offset;
 
17277
                        }
 
17278
                        ndr->flags = _flags_save_string;
 
17279
                }
 
17280
        }
 
17281
        return NDR_ERR_SUCCESS;
 
17282
}
 
17283
 
 
17284
_PUBLIC_ void ndr_print_spoolss_PortInfoFF(struct ndr_print *ndr, const char *name, const struct spoolss_PortInfoFF *r)
 
17285
{
 
17286
        ndr_print_struct(ndr, name, "spoolss_PortInfoFF");
 
17287
        ndr->depth++;
 
17288
        ndr_print_ptr(ndr, "port_name", r->port_name);
 
17289
        ndr->depth++;
 
17290
        if (r->port_name) {
 
17291
                ndr_print_string(ndr, "port_name", r->port_name);
 
17292
        }
 
17293
        ndr->depth--;
 
17294
        ndr_print_DATA_BLOB(ndr, "monitor_data", r->monitor_data);
 
17295
        ndr->depth--;
 
17296
}
 
17297
 
 
17298
_PUBLIC_ size_t ndr_size_spoolss_PortInfoFF(const struct spoolss_PortInfoFF *r, struct smb_iconv_convenience *ic, int flags)
 
17299
{
 
17300
        return ndr_size_struct(r, flags, (ndr_push_flags_fn_t)ndr_push_spoolss_PortInfoFF, ic);
 
17301
}
 
17302
 
 
17303
_PUBLIC_ enum ndr_err_code ndr_push_spoolss_PortInfo(struct ndr_push *ndr, int ndr_flags, const union spoolss_PortInfo *r)
 
17304
{
 
17305
        uint32_t _save_relative_base_offset = ndr_push_get_relative_base_offset(ndr);
 
17306
        {
 
17307
                uint32_t _flags_save_UNION = ndr->flags;
 
17308
                ndr_set_flags(&ndr->flags, LIBNDR_FLAG_RELATIVE_REVERSE);
 
17309
                if (ndr_flags & NDR_SCALARS) {
 
17310
                        int level = ndr_push_get_switch_value(ndr, r);
 
17311
                        NDR_CHECK(ndr_push_union_align(ndr, 5));
 
17312
                        switch (level) {
 
17313
                                case 1: {
 
17314
                                        NDR_CHECK(ndr_push_align(ndr, 5));
 
17315
                                        NDR_CHECK(ndr_push_setup_relative_base_offset1(ndr, r, ndr->offset));
 
17316
                                        NDR_CHECK(ndr_push_spoolss_PortInfo1(ndr, NDR_SCALARS, &r->info1));
 
17317
                                break; }
 
17318
 
 
17319
                                case 2: {
 
17320
                                        NDR_CHECK(ndr_push_align(ndr, 5));
 
17321
                                        NDR_CHECK(ndr_push_setup_relative_base_offset1(ndr, r, ndr->offset));
 
17322
                                        NDR_CHECK(ndr_push_spoolss_PortInfo2(ndr, NDR_SCALARS, &r->info2));
 
17323
                                break; }
 
17324
 
 
17325
                                case 3: {
 
17326
                                        NDR_CHECK(ndr_push_align(ndr, 5));
 
17327
                                        NDR_CHECK(ndr_push_setup_relative_base_offset1(ndr, r, ndr->offset));
 
17328
                                        NDR_CHECK(ndr_push_spoolss_PortInfo3(ndr, NDR_SCALARS, &r->info3));
 
17329
                                break; }
 
17330
 
 
17331
                                case 0xff: {
 
17332
                                        NDR_CHECK(ndr_push_align(ndr, 5));
 
17333
                                        NDR_CHECK(ndr_push_setup_relative_base_offset1(ndr, r, ndr->offset));
 
17334
                                        NDR_CHECK(ndr_push_spoolss_PortInfoFF(ndr, NDR_SCALARS, &r->infoFF));
 
17335
                                break; }
 
17336
 
 
17337
                                default: {
 
17338
                                break; }
 
17339
 
 
17340
                        }
 
17341
                }
 
17342
                if (ndr_flags & NDR_BUFFERS) {
 
17343
                        int level = ndr_push_get_switch_value(ndr, r);
 
17344
                        NDR_CHECK(ndr_push_setup_relative_base_offset2(ndr, r));
 
17345
                        switch (level) {
 
17346
                                case 1:
 
17347
                                        NDR_CHECK(ndr_push_spoolss_PortInfo1(ndr, NDR_BUFFERS, &r->info1));
 
17348
                                break;
 
17349
 
 
17350
                                case 2:
 
17351
                                        NDR_CHECK(ndr_push_spoolss_PortInfo2(ndr, NDR_BUFFERS, &r->info2));
 
17352
                                break;
 
17353
 
 
17354
                                case 3:
 
17355
                                        NDR_CHECK(ndr_push_spoolss_PortInfo3(ndr, NDR_BUFFERS, &r->info3));
 
17356
                                break;
 
17357
 
 
17358
                                case 0xff:
 
17359
                                        NDR_CHECK(ndr_push_spoolss_PortInfoFF(ndr, NDR_BUFFERS, &r->infoFF));
 
17360
                                break;
 
17361
 
 
17362
                                default:
 
17363
                                break;
 
17364
 
 
17365
                        }
 
17366
                }
 
17367
                ndr->flags = _flags_save_UNION;
 
17368
        }
 
17369
        ndr_push_restore_relative_base_offset(ndr, _save_relative_base_offset);
 
17370
        return NDR_ERR_SUCCESS;
 
17371
}
 
17372
 
 
17373
_PUBLIC_ enum ndr_err_code ndr_pull_spoolss_PortInfo(struct ndr_pull *ndr, int ndr_flags, union spoolss_PortInfo *r)
 
17374
{
 
17375
        uint32_t _save_relative_base_offset = ndr_pull_get_relative_base_offset(ndr);
 
17376
        int level;
 
17377
        {
 
17378
                uint32_t _flags_save_UNION = ndr->flags;
 
17379
                ndr_set_flags(&ndr->flags, LIBNDR_FLAG_RELATIVE_REVERSE);
 
17380
                level = ndr_pull_get_switch_value(ndr, r);
 
17381
                if (ndr_flags & NDR_SCALARS) {
 
17382
                        NDR_CHECK(ndr_pull_union_align(ndr, 5));
 
17383
                        switch (level) {
 
17384
                                case 1: {
 
17385
                                        NDR_CHECK(ndr_pull_align(ndr, 5));
 
17386
                                        NDR_CHECK(ndr_pull_setup_relative_base_offset1(ndr, r, ndr->offset));
 
17387
                                        NDR_CHECK(ndr_pull_spoolss_PortInfo1(ndr, NDR_SCALARS, &r->info1));
 
17388
                                break; }
 
17389
 
 
17390
                                case 2: {
 
17391
                                        NDR_CHECK(ndr_pull_align(ndr, 5));
 
17392
                                        NDR_CHECK(ndr_pull_setup_relative_base_offset1(ndr, r, ndr->offset));
 
17393
                                        NDR_CHECK(ndr_pull_spoolss_PortInfo2(ndr, NDR_SCALARS, &r->info2));
 
17394
                                break; }
 
17395
 
 
17396
                                case 3: {
 
17397
                                        NDR_CHECK(ndr_pull_align(ndr, 5));
 
17398
                                        NDR_CHECK(ndr_pull_setup_relative_base_offset1(ndr, r, ndr->offset));
 
17399
                                        NDR_CHECK(ndr_pull_spoolss_PortInfo3(ndr, NDR_SCALARS, &r->info3));
 
17400
                                break; }
 
17401
 
 
17402
                                case 0xff: {
 
17403
                                        NDR_CHECK(ndr_pull_align(ndr, 5));
 
17404
                                        NDR_CHECK(ndr_pull_setup_relative_base_offset1(ndr, r, ndr->offset));
 
17405
                                        NDR_CHECK(ndr_pull_spoolss_PortInfoFF(ndr, NDR_SCALARS, &r->infoFF));
 
17406
                                break; }
 
17407
 
 
17408
                                default: {
 
17409
                                break; }
 
17410
 
 
17411
                        }
 
17412
                }
 
17413
                if (ndr_flags & NDR_BUFFERS) {
 
17414
                        NDR_CHECK(ndr_pull_setup_relative_base_offset2(ndr, r));
 
17415
                        switch (level) {
 
17416
                                case 1:
 
17417
                                        NDR_CHECK(ndr_pull_spoolss_PortInfo1(ndr, NDR_BUFFERS, &r->info1));
 
17418
                                break;
 
17419
 
 
17420
                                case 2:
 
17421
                                        NDR_CHECK(ndr_pull_spoolss_PortInfo2(ndr, NDR_BUFFERS, &r->info2));
 
17422
                                break;
 
17423
 
 
17424
                                case 3:
 
17425
                                        NDR_CHECK(ndr_pull_spoolss_PortInfo3(ndr, NDR_BUFFERS, &r->info3));
 
17426
                                break;
 
17427
 
 
17428
                                case 0xff:
 
17429
                                        NDR_CHECK(ndr_pull_spoolss_PortInfoFF(ndr, NDR_BUFFERS, &r->infoFF));
 
17430
                                break;
 
17431
 
 
17432
                                default:
 
17433
                                break;
 
17434
 
 
17435
                        }
 
17436
                }
 
17437
                ndr->flags = _flags_save_UNION;
 
17438
        }
 
17439
        ndr_pull_restore_relative_base_offset(ndr, _save_relative_base_offset);
 
17440
        return NDR_ERR_SUCCESS;
 
17441
}
 
17442
 
 
17443
_PUBLIC_ void ndr_print_spoolss_PortInfo(struct ndr_print *ndr, const char *name, const union spoolss_PortInfo *r)
 
17444
{
 
17445
        int level;
 
17446
        {
 
17447
                uint32_t _flags_save_UNION = ndr->flags;
 
17448
                ndr_set_flags(&ndr->flags, LIBNDR_FLAG_RELATIVE_REVERSE);
 
17449
                level = ndr_print_get_switch_value(ndr, r);
 
17450
                ndr_print_union(ndr, name, level, "spoolss_PortInfo");
 
17451
                switch (level) {
 
17452
                        case 1:
 
17453
                                ndr_print_spoolss_PortInfo1(ndr, "info1", &r->info1);
 
17454
                        break;
 
17455
 
 
17456
                        case 2:
 
17457
                                ndr_print_spoolss_PortInfo2(ndr, "info2", &r->info2);
 
17458
                        break;
 
17459
 
 
17460
                        case 3:
 
17461
                                ndr_print_spoolss_PortInfo3(ndr, "info3", &r->info3);
 
17462
                        break;
 
17463
 
 
17464
                        case 0xff:
 
17465
                                ndr_print_spoolss_PortInfoFF(ndr, "infoFF", &r->infoFF);
 
17466
                        break;
 
17467
 
 
17468
                        default:
 
17469
                        break;
 
17470
 
 
17471
                }
 
17472
                ndr->flags = _flags_save_UNION;
 
17473
        }
 
17474
}
 
17475
 
 
17476
_PUBLIC_ enum ndr_err_code ndr_push_spoolss_MonitorInfo1(struct ndr_push *ndr, int ndr_flags, const struct spoolss_MonitorInfo1 *r)
 
17477
{
 
17478
        if (ndr_flags & NDR_SCALARS) {
 
17479
                NDR_CHECK(ndr_push_align(ndr, 5));
 
17480
                {
 
17481
                        uint32_t _flags_save_string = ndr->flags;
 
17482
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
17483
                        NDR_CHECK(ndr_push_relative_ptr1(ndr, r->monitor_name));
 
17484
                        ndr->flags = _flags_save_string;
 
17485
                }
 
17486
                NDR_CHECK(ndr_push_trailer_align(ndr, 5));
 
17487
        }
 
17488
        if (ndr_flags & NDR_BUFFERS) {
 
17489
                {
 
17490
                        uint32_t _flags_save_string = ndr->flags;
 
17491
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
17492
                        if (r->monitor_name) {
 
17493
                                NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->monitor_name));
 
17494
                                NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->monitor_name));
 
17495
                                NDR_CHECK(ndr_push_relative_ptr2_end(ndr, r->monitor_name));
 
17496
                        }
 
17497
                        ndr->flags = _flags_save_string;
 
17498
                }
 
17499
        }
 
17500
        return NDR_ERR_SUCCESS;
 
17501
}
 
17502
 
 
17503
_PUBLIC_ enum ndr_err_code ndr_pull_spoolss_MonitorInfo1(struct ndr_pull *ndr, int ndr_flags, struct spoolss_MonitorInfo1 *r)
 
17504
{
 
17505
        uint32_t _ptr_monitor_name;
 
17506
        TALLOC_CTX *_mem_save_monitor_name_0;
 
17507
        if (ndr_flags & NDR_SCALARS) {
 
17508
                NDR_CHECK(ndr_pull_align(ndr, 5));
 
17509
                {
 
17510
                        uint32_t _flags_save_string = ndr->flags;
 
17511
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
17512
                        NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_monitor_name));
 
17513
                        if (_ptr_monitor_name) {
 
17514
                                NDR_PULL_ALLOC(ndr, r->monitor_name);
 
17515
                                NDR_CHECK(ndr_pull_relative_ptr1(ndr, r->monitor_name, _ptr_monitor_name));
 
17516
                        } else {
 
17517
                                r->monitor_name = NULL;
 
17518
                        }
 
17519
                        ndr->flags = _flags_save_string;
 
17520
                }
 
17521
                NDR_CHECK(ndr_pull_trailer_align(ndr, 5));
 
17522
        }
 
17523
        if (ndr_flags & NDR_BUFFERS) {
 
17524
                {
 
17525
                        uint32_t _flags_save_string = ndr->flags;
 
17526
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
17527
                        if (r->monitor_name) {
 
17528
                                uint32_t _relative_save_offset;
 
17529
                                _relative_save_offset = ndr->offset;
 
17530
                                NDR_CHECK(ndr_pull_relative_ptr2(ndr, r->monitor_name));
 
17531
                                _mem_save_monitor_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
17532
                                NDR_PULL_SET_MEM_CTX(ndr, r->monitor_name, 0);
 
17533
                                NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->monitor_name));
 
17534
                                NDR_PULL_SET_MEM_CTX(ndr, _mem_save_monitor_name_0, 0);
 
17535
                                ndr->offset = _relative_save_offset;
 
17536
                        }
 
17537
                        ndr->flags = _flags_save_string;
 
17538
                }
 
17539
        }
 
17540
        return NDR_ERR_SUCCESS;
 
17541
}
 
17542
 
 
17543
_PUBLIC_ void ndr_print_spoolss_MonitorInfo1(struct ndr_print *ndr, const char *name, const struct spoolss_MonitorInfo1 *r)
 
17544
{
 
17545
        ndr_print_struct(ndr, name, "spoolss_MonitorInfo1");
 
17546
        ndr->depth++;
 
17547
        ndr_print_ptr(ndr, "monitor_name", r->monitor_name);
 
17548
        ndr->depth++;
 
17549
        if (r->monitor_name) {
 
17550
                ndr_print_string(ndr, "monitor_name", r->monitor_name);
 
17551
        }
 
17552
        ndr->depth--;
 
17553
        ndr->depth--;
 
17554
}
 
17555
 
 
17556
_PUBLIC_ size_t ndr_size_spoolss_MonitorInfo1(const struct spoolss_MonitorInfo1 *r, struct smb_iconv_convenience *ic, int flags)
 
17557
{
 
17558
        return ndr_size_struct(r, flags, (ndr_push_flags_fn_t)ndr_push_spoolss_MonitorInfo1, ic);
 
17559
}
 
17560
 
 
17561
_PUBLIC_ enum ndr_err_code ndr_push_spoolss_MonitorInfo2(struct ndr_push *ndr, int ndr_flags, const struct spoolss_MonitorInfo2 *r)
 
17562
{
 
17563
        if (ndr_flags & NDR_SCALARS) {
 
17564
                NDR_CHECK(ndr_push_align(ndr, 5));
 
17565
                {
 
17566
                        uint32_t _flags_save_string = ndr->flags;
 
17567
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
17568
                        NDR_CHECK(ndr_push_relative_ptr1(ndr, r->monitor_name));
 
17569
                        ndr->flags = _flags_save_string;
 
17570
                }
 
17571
                {
 
17572
                        uint32_t _flags_save_string = ndr->flags;
 
17573
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
17574
                        NDR_CHECK(ndr_push_relative_ptr1(ndr, r->environment));
 
17575
                        ndr->flags = _flags_save_string;
 
17576
                }
 
17577
                {
 
17578
                        uint32_t _flags_save_string = ndr->flags;
 
17579
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
17580
                        NDR_CHECK(ndr_push_relative_ptr1(ndr, r->dll_name));
 
17581
                        ndr->flags = _flags_save_string;
 
17582
                }
 
17583
                NDR_CHECK(ndr_push_trailer_align(ndr, 5));
 
17584
        }
 
17585
        if (ndr_flags & NDR_BUFFERS) {
 
17586
                {
 
17587
                        uint32_t _flags_save_string = ndr->flags;
 
17588
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
17589
                        if (r->monitor_name) {
 
17590
                                NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->monitor_name));
 
17591
                                NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->monitor_name));
 
17592
                                NDR_CHECK(ndr_push_relative_ptr2_end(ndr, r->monitor_name));
 
17593
                        }
 
17594
                        ndr->flags = _flags_save_string;
 
17595
                }
 
17596
                {
 
17597
                        uint32_t _flags_save_string = ndr->flags;
 
17598
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
17599
                        if (r->environment) {
 
17600
                                NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->environment));
 
17601
                                NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->environment));
 
17602
                                NDR_CHECK(ndr_push_relative_ptr2_end(ndr, r->environment));
 
17603
                        }
 
17604
                        ndr->flags = _flags_save_string;
 
17605
                }
 
17606
                {
 
17607
                        uint32_t _flags_save_string = ndr->flags;
 
17608
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
17609
                        if (r->dll_name) {
 
17610
                                NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->dll_name));
 
17611
                                NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->dll_name));
 
17612
                                NDR_CHECK(ndr_push_relative_ptr2_end(ndr, r->dll_name));
 
17613
                        }
 
17614
                        ndr->flags = _flags_save_string;
 
17615
                }
 
17616
        }
 
17617
        return NDR_ERR_SUCCESS;
 
17618
}
 
17619
 
 
17620
_PUBLIC_ enum ndr_err_code ndr_pull_spoolss_MonitorInfo2(struct ndr_pull *ndr, int ndr_flags, struct spoolss_MonitorInfo2 *r)
 
17621
{
 
17622
        uint32_t _ptr_monitor_name;
 
17623
        TALLOC_CTX *_mem_save_monitor_name_0;
 
17624
        uint32_t _ptr_environment;
 
17625
        TALLOC_CTX *_mem_save_environment_0;
 
17626
        uint32_t _ptr_dll_name;
 
17627
        TALLOC_CTX *_mem_save_dll_name_0;
 
17628
        if (ndr_flags & NDR_SCALARS) {
 
17629
                NDR_CHECK(ndr_pull_align(ndr, 5));
 
17630
                {
 
17631
                        uint32_t _flags_save_string = ndr->flags;
 
17632
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
17633
                        NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_monitor_name));
 
17634
                        if (_ptr_monitor_name) {
 
17635
                                NDR_PULL_ALLOC(ndr, r->monitor_name);
 
17636
                                NDR_CHECK(ndr_pull_relative_ptr1(ndr, r->monitor_name, _ptr_monitor_name));
 
17637
                        } else {
 
17638
                                r->monitor_name = NULL;
 
17639
                        }
 
17640
                        ndr->flags = _flags_save_string;
 
17641
                }
 
17642
                {
 
17643
                        uint32_t _flags_save_string = ndr->flags;
 
17644
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
17645
                        NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_environment));
 
17646
                        if (_ptr_environment) {
 
17647
                                NDR_PULL_ALLOC(ndr, r->environment);
 
17648
                                NDR_CHECK(ndr_pull_relative_ptr1(ndr, r->environment, _ptr_environment));
 
17649
                        } else {
 
17650
                                r->environment = NULL;
 
17651
                        }
 
17652
                        ndr->flags = _flags_save_string;
 
17653
                }
 
17654
                {
 
17655
                        uint32_t _flags_save_string = ndr->flags;
 
17656
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
17657
                        NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_dll_name));
 
17658
                        if (_ptr_dll_name) {
 
17659
                                NDR_PULL_ALLOC(ndr, r->dll_name);
 
17660
                                NDR_CHECK(ndr_pull_relative_ptr1(ndr, r->dll_name, _ptr_dll_name));
 
17661
                        } else {
 
17662
                                r->dll_name = NULL;
 
17663
                        }
 
17664
                        ndr->flags = _flags_save_string;
 
17665
                }
 
17666
                NDR_CHECK(ndr_pull_trailer_align(ndr, 5));
 
17667
        }
 
17668
        if (ndr_flags & NDR_BUFFERS) {
 
17669
                {
 
17670
                        uint32_t _flags_save_string = ndr->flags;
 
17671
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
17672
                        if (r->monitor_name) {
 
17673
                                uint32_t _relative_save_offset;
 
17674
                                _relative_save_offset = ndr->offset;
 
17675
                                NDR_CHECK(ndr_pull_relative_ptr2(ndr, r->monitor_name));
 
17676
                                _mem_save_monitor_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
17677
                                NDR_PULL_SET_MEM_CTX(ndr, r->monitor_name, 0);
 
17678
                                NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->monitor_name));
 
17679
                                NDR_PULL_SET_MEM_CTX(ndr, _mem_save_monitor_name_0, 0);
 
17680
                                ndr->offset = _relative_save_offset;
 
17681
                        }
 
17682
                        ndr->flags = _flags_save_string;
 
17683
                }
 
17684
                {
 
17685
                        uint32_t _flags_save_string = ndr->flags;
 
17686
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
17687
                        if (r->environment) {
 
17688
                                uint32_t _relative_save_offset;
 
17689
                                _relative_save_offset = ndr->offset;
 
17690
                                NDR_CHECK(ndr_pull_relative_ptr2(ndr, r->environment));
 
17691
                                _mem_save_environment_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
17692
                                NDR_PULL_SET_MEM_CTX(ndr, r->environment, 0);
 
17693
                                NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->environment));
 
17694
                                NDR_PULL_SET_MEM_CTX(ndr, _mem_save_environment_0, 0);
 
17695
                                ndr->offset = _relative_save_offset;
 
17696
                        }
 
17697
                        ndr->flags = _flags_save_string;
 
17698
                }
 
17699
                {
 
17700
                        uint32_t _flags_save_string = ndr->flags;
 
17701
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
17702
                        if (r->dll_name) {
 
17703
                                uint32_t _relative_save_offset;
 
17704
                                _relative_save_offset = ndr->offset;
 
17705
                                NDR_CHECK(ndr_pull_relative_ptr2(ndr, r->dll_name));
 
17706
                                _mem_save_dll_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
17707
                                NDR_PULL_SET_MEM_CTX(ndr, r->dll_name, 0);
 
17708
                                NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->dll_name));
 
17709
                                NDR_PULL_SET_MEM_CTX(ndr, _mem_save_dll_name_0, 0);
 
17710
                                ndr->offset = _relative_save_offset;
 
17711
                        }
 
17712
                        ndr->flags = _flags_save_string;
 
17713
                }
 
17714
        }
 
17715
        return NDR_ERR_SUCCESS;
 
17716
}
 
17717
 
 
17718
_PUBLIC_ void ndr_print_spoolss_MonitorInfo2(struct ndr_print *ndr, const char *name, const struct spoolss_MonitorInfo2 *r)
 
17719
{
 
17720
        ndr_print_struct(ndr, name, "spoolss_MonitorInfo2");
 
17721
        ndr->depth++;
 
17722
        ndr_print_ptr(ndr, "monitor_name", r->monitor_name);
 
17723
        ndr->depth++;
 
17724
        if (r->monitor_name) {
 
17725
                ndr_print_string(ndr, "monitor_name", r->monitor_name);
 
17726
        }
 
17727
        ndr->depth--;
 
17728
        ndr_print_ptr(ndr, "environment", r->environment);
 
17729
        ndr->depth++;
 
17730
        if (r->environment) {
 
17731
                ndr_print_string(ndr, "environment", r->environment);
 
17732
        }
 
17733
        ndr->depth--;
 
17734
        ndr_print_ptr(ndr, "dll_name", r->dll_name);
 
17735
        ndr->depth++;
 
17736
        if (r->dll_name) {
 
17737
                ndr_print_string(ndr, "dll_name", r->dll_name);
 
17738
        }
 
17739
        ndr->depth--;
 
17740
        ndr->depth--;
 
17741
}
 
17742
 
 
17743
_PUBLIC_ size_t ndr_size_spoolss_MonitorInfo2(const struct spoolss_MonitorInfo2 *r, struct smb_iconv_convenience *ic, int flags)
 
17744
{
 
17745
        return ndr_size_struct(r, flags, (ndr_push_flags_fn_t)ndr_push_spoolss_MonitorInfo2, ic);
 
17746
}
 
17747
 
 
17748
_PUBLIC_ enum ndr_err_code ndr_push_spoolss_MonitorInfo(struct ndr_push *ndr, int ndr_flags, const union spoolss_MonitorInfo *r)
 
17749
{
 
17750
        uint32_t _save_relative_base_offset = ndr_push_get_relative_base_offset(ndr);
 
17751
        {
 
17752
                uint32_t _flags_save_UNION = ndr->flags;
 
17753
                ndr_set_flags(&ndr->flags, LIBNDR_FLAG_RELATIVE_REVERSE);
 
17754
                if (ndr_flags & NDR_SCALARS) {
 
17755
                        int level = ndr_push_get_switch_value(ndr, r);
 
17756
                        NDR_CHECK(ndr_push_union_align(ndr, 5));
 
17757
                        switch (level) {
 
17758
                                case 1: {
 
17759
                                        NDR_CHECK(ndr_push_align(ndr, 5));
 
17760
                                        NDR_CHECK(ndr_push_setup_relative_base_offset1(ndr, r, ndr->offset));
 
17761
                                        NDR_CHECK(ndr_push_spoolss_MonitorInfo1(ndr, NDR_SCALARS, &r->info1));
 
17762
                                break; }
 
17763
 
 
17764
                                case 2: {
 
17765
                                        NDR_CHECK(ndr_push_align(ndr, 5));
 
17766
                                        NDR_CHECK(ndr_push_setup_relative_base_offset1(ndr, r, ndr->offset));
 
17767
                                        NDR_CHECK(ndr_push_spoolss_MonitorInfo2(ndr, NDR_SCALARS, &r->info2));
 
17768
                                break; }
 
17769
 
 
17770
                                default: {
 
17771
                                break; }
 
17772
 
 
17773
                        }
 
17774
                }
 
17775
                if (ndr_flags & NDR_BUFFERS) {
 
17776
                        int level = ndr_push_get_switch_value(ndr, r);
 
17777
                        NDR_CHECK(ndr_push_setup_relative_base_offset2(ndr, r));
 
17778
                        switch (level) {
 
17779
                                case 1:
 
17780
                                        NDR_CHECK(ndr_push_spoolss_MonitorInfo1(ndr, NDR_BUFFERS, &r->info1));
 
17781
                                break;
 
17782
 
 
17783
                                case 2:
 
17784
                                        NDR_CHECK(ndr_push_spoolss_MonitorInfo2(ndr, NDR_BUFFERS, &r->info2));
 
17785
                                break;
 
17786
 
 
17787
                                default:
 
17788
                                break;
 
17789
 
 
17790
                        }
 
17791
                }
 
17792
                ndr->flags = _flags_save_UNION;
 
17793
        }
 
17794
        ndr_push_restore_relative_base_offset(ndr, _save_relative_base_offset);
 
17795
        return NDR_ERR_SUCCESS;
 
17796
}
 
17797
 
 
17798
_PUBLIC_ enum ndr_err_code ndr_pull_spoolss_MonitorInfo(struct ndr_pull *ndr, int ndr_flags, union spoolss_MonitorInfo *r)
 
17799
{
 
17800
        uint32_t _save_relative_base_offset = ndr_pull_get_relative_base_offset(ndr);
 
17801
        int level;
 
17802
        {
 
17803
                uint32_t _flags_save_UNION = ndr->flags;
 
17804
                ndr_set_flags(&ndr->flags, LIBNDR_FLAG_RELATIVE_REVERSE);
 
17805
                level = ndr_pull_get_switch_value(ndr, r);
 
17806
                if (ndr_flags & NDR_SCALARS) {
 
17807
                        NDR_CHECK(ndr_pull_union_align(ndr, 5));
 
17808
                        switch (level) {
 
17809
                                case 1: {
 
17810
                                        NDR_CHECK(ndr_pull_align(ndr, 5));
 
17811
                                        NDR_CHECK(ndr_pull_setup_relative_base_offset1(ndr, r, ndr->offset));
 
17812
                                        NDR_CHECK(ndr_pull_spoolss_MonitorInfo1(ndr, NDR_SCALARS, &r->info1));
 
17813
                                break; }
 
17814
 
 
17815
                                case 2: {
 
17816
                                        NDR_CHECK(ndr_pull_align(ndr, 5));
 
17817
                                        NDR_CHECK(ndr_pull_setup_relative_base_offset1(ndr, r, ndr->offset));
 
17818
                                        NDR_CHECK(ndr_pull_spoolss_MonitorInfo2(ndr, NDR_SCALARS, &r->info2));
 
17819
                                break; }
 
17820
 
 
17821
                                default: {
 
17822
                                break; }
 
17823
 
 
17824
                        }
 
17825
                }
 
17826
                if (ndr_flags & NDR_BUFFERS) {
 
17827
                        NDR_CHECK(ndr_pull_setup_relative_base_offset2(ndr, r));
 
17828
                        switch (level) {
 
17829
                                case 1:
 
17830
                                        NDR_CHECK(ndr_pull_spoolss_MonitorInfo1(ndr, NDR_BUFFERS, &r->info1));
 
17831
                                break;
 
17832
 
 
17833
                                case 2:
 
17834
                                        NDR_CHECK(ndr_pull_spoolss_MonitorInfo2(ndr, NDR_BUFFERS, &r->info2));
 
17835
                                break;
 
17836
 
 
17837
                                default:
 
17838
                                break;
 
17839
 
 
17840
                        }
 
17841
                }
 
17842
                ndr->flags = _flags_save_UNION;
 
17843
        }
 
17844
        ndr_pull_restore_relative_base_offset(ndr, _save_relative_base_offset);
 
17845
        return NDR_ERR_SUCCESS;
 
17846
}
 
17847
 
 
17848
_PUBLIC_ void ndr_print_spoolss_MonitorInfo(struct ndr_print *ndr, const char *name, const union spoolss_MonitorInfo *r)
 
17849
{
 
17850
        int level;
 
17851
        {
 
17852
                uint32_t _flags_save_UNION = ndr->flags;
 
17853
                ndr_set_flags(&ndr->flags, LIBNDR_FLAG_RELATIVE_REVERSE);
 
17854
                level = ndr_print_get_switch_value(ndr, r);
 
17855
                ndr_print_union(ndr, name, level, "spoolss_MonitorInfo");
 
17856
                switch (level) {
 
17857
                        case 1:
 
17858
                                ndr_print_spoolss_MonitorInfo1(ndr, "info1", &r->info1);
 
17859
                        break;
 
17860
 
 
17861
                        case 2:
 
17862
                                ndr_print_spoolss_MonitorInfo2(ndr, "info2", &r->info2);
 
17863
                        break;
 
17864
 
 
17865
                        default:
 
17866
                        break;
 
17867
 
 
17868
                }
 
17869
                ndr->flags = _flags_save_UNION;
 
17870
        }
 
17871
}
 
17872
 
 
17873
_PUBLIC_ enum ndr_err_code ndr_push_spoolss_PrintProcDataTypesInfo1(struct ndr_push *ndr, int ndr_flags, const struct spoolss_PrintProcDataTypesInfo1 *r)
 
17874
{
 
17875
        if (ndr_flags & NDR_SCALARS) {
 
17876
                NDR_CHECK(ndr_push_align(ndr, 5));
 
17877
                {
 
17878
                        uint32_t _flags_save_string = ndr->flags;
 
17879
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
17880
                        NDR_CHECK(ndr_push_relative_ptr1(ndr, r->name_array));
 
17881
                        ndr->flags = _flags_save_string;
 
17882
                }
 
17883
                NDR_CHECK(ndr_push_trailer_align(ndr, 5));
 
17884
        }
 
17885
        if (ndr_flags & NDR_BUFFERS) {
 
17886
                {
 
17887
                        uint32_t _flags_save_string = ndr->flags;
 
17888
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
17889
                        if (r->name_array) {
 
17890
                                NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->name_array));
 
17891
                                NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->name_array));
 
17892
                                NDR_CHECK(ndr_push_relative_ptr2_end(ndr, r->name_array));
 
17893
                        }
 
17894
                        ndr->flags = _flags_save_string;
 
17895
                }
 
17896
        }
 
17897
        return NDR_ERR_SUCCESS;
 
17898
}
 
17899
 
 
17900
_PUBLIC_ enum ndr_err_code ndr_pull_spoolss_PrintProcDataTypesInfo1(struct ndr_pull *ndr, int ndr_flags, struct spoolss_PrintProcDataTypesInfo1 *r)
 
17901
{
 
17902
        uint32_t _ptr_name_array;
 
17903
        TALLOC_CTX *_mem_save_name_array_0;
 
17904
        if (ndr_flags & NDR_SCALARS) {
 
17905
                NDR_CHECK(ndr_pull_align(ndr, 5));
 
17906
                {
 
17907
                        uint32_t _flags_save_string = ndr->flags;
 
17908
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
17909
                        NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_name_array));
 
17910
                        if (_ptr_name_array) {
 
17911
                                NDR_PULL_ALLOC(ndr, r->name_array);
 
17912
                                NDR_CHECK(ndr_pull_relative_ptr1(ndr, r->name_array, _ptr_name_array));
 
17913
                        } else {
 
17914
                                r->name_array = NULL;
 
17915
                        }
 
17916
                        ndr->flags = _flags_save_string;
 
17917
                }
 
17918
                NDR_CHECK(ndr_pull_trailer_align(ndr, 5));
 
17919
        }
 
17920
        if (ndr_flags & NDR_BUFFERS) {
 
17921
                {
 
17922
                        uint32_t _flags_save_string = ndr->flags;
 
17923
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
17924
                        if (r->name_array) {
 
17925
                                uint32_t _relative_save_offset;
 
17926
                                _relative_save_offset = ndr->offset;
 
17927
                                NDR_CHECK(ndr_pull_relative_ptr2(ndr, r->name_array));
 
17928
                                _mem_save_name_array_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
17929
                                NDR_PULL_SET_MEM_CTX(ndr, r->name_array, 0);
 
17930
                                NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->name_array));
 
17931
                                NDR_PULL_SET_MEM_CTX(ndr, _mem_save_name_array_0, 0);
 
17932
                                ndr->offset = _relative_save_offset;
 
17933
                        }
 
17934
                        ndr->flags = _flags_save_string;
 
17935
                }
 
17936
        }
 
17937
        return NDR_ERR_SUCCESS;
 
17938
}
 
17939
 
 
17940
_PUBLIC_ void ndr_print_spoolss_PrintProcDataTypesInfo1(struct ndr_print *ndr, const char *name, const struct spoolss_PrintProcDataTypesInfo1 *r)
 
17941
{
 
17942
        ndr_print_struct(ndr, name, "spoolss_PrintProcDataTypesInfo1");
 
17943
        ndr->depth++;
 
17944
        ndr_print_ptr(ndr, "name_array", r->name_array);
 
17945
        ndr->depth++;
 
17946
        if (r->name_array) {
 
17947
                ndr_print_string(ndr, "name_array", r->name_array);
 
17948
        }
 
17949
        ndr->depth--;
 
17950
        ndr->depth--;
 
17951
}
 
17952
 
 
17953
_PUBLIC_ size_t ndr_size_spoolss_PrintProcDataTypesInfo1(const struct spoolss_PrintProcDataTypesInfo1 *r, struct smb_iconv_convenience *ic, int flags)
 
17954
{
 
17955
        return ndr_size_struct(r, flags, (ndr_push_flags_fn_t)ndr_push_spoolss_PrintProcDataTypesInfo1, ic);
 
17956
}
 
17957
 
 
17958
_PUBLIC_ enum ndr_err_code ndr_push_spoolss_PrintProcDataTypesInfo(struct ndr_push *ndr, int ndr_flags, const union spoolss_PrintProcDataTypesInfo *r)
 
17959
{
 
17960
        uint32_t _save_relative_base_offset = ndr_push_get_relative_base_offset(ndr);
 
17961
        {
 
17962
                uint32_t _flags_save_UNION = ndr->flags;
 
17963
                ndr_set_flags(&ndr->flags, LIBNDR_FLAG_RELATIVE_REVERSE);
 
17964
                if (ndr_flags & NDR_SCALARS) {
 
17965
                        int level = ndr_push_get_switch_value(ndr, r);
 
17966
                        NDR_CHECK(ndr_push_union_align(ndr, 5));
 
17967
                        switch (level) {
 
17968
                                case 1: {
 
17969
                                        NDR_CHECK(ndr_push_align(ndr, 5));
 
17970
                                        NDR_CHECK(ndr_push_setup_relative_base_offset1(ndr, r, ndr->offset));
 
17971
                                        NDR_CHECK(ndr_push_spoolss_PrintProcDataTypesInfo1(ndr, NDR_SCALARS, &r->info1));
 
17972
                                break; }
 
17973
 
 
17974
                                default: {
 
17975
                                break; }
 
17976
 
 
17977
                        }
 
17978
                }
 
17979
                if (ndr_flags & NDR_BUFFERS) {
 
17980
                        int level = ndr_push_get_switch_value(ndr, r);
 
17981
                        NDR_CHECK(ndr_push_setup_relative_base_offset2(ndr, r));
 
17982
                        switch (level) {
 
17983
                                case 1:
 
17984
                                        NDR_CHECK(ndr_push_spoolss_PrintProcDataTypesInfo1(ndr, NDR_BUFFERS, &r->info1));
 
17985
                                break;
 
17986
 
 
17987
                                default:
 
17988
                                break;
 
17989
 
 
17990
                        }
 
17991
                }
 
17992
                ndr->flags = _flags_save_UNION;
 
17993
        }
 
17994
        ndr_push_restore_relative_base_offset(ndr, _save_relative_base_offset);
 
17995
        return NDR_ERR_SUCCESS;
 
17996
}
 
17997
 
 
17998
_PUBLIC_ enum ndr_err_code ndr_pull_spoolss_PrintProcDataTypesInfo(struct ndr_pull *ndr, int ndr_flags, union spoolss_PrintProcDataTypesInfo *r)
 
17999
{
 
18000
        uint32_t _save_relative_base_offset = ndr_pull_get_relative_base_offset(ndr);
 
18001
        int level;
 
18002
        {
 
18003
                uint32_t _flags_save_UNION = ndr->flags;
 
18004
                ndr_set_flags(&ndr->flags, LIBNDR_FLAG_RELATIVE_REVERSE);
 
18005
                level = ndr_pull_get_switch_value(ndr, r);
 
18006
                if (ndr_flags & NDR_SCALARS) {
 
18007
                        NDR_CHECK(ndr_pull_union_align(ndr, 5));
 
18008
                        switch (level) {
 
18009
                                case 1: {
 
18010
                                        NDR_CHECK(ndr_pull_align(ndr, 5));
 
18011
                                        NDR_CHECK(ndr_pull_setup_relative_base_offset1(ndr, r, ndr->offset));
 
18012
                                        NDR_CHECK(ndr_pull_spoolss_PrintProcDataTypesInfo1(ndr, NDR_SCALARS, &r->info1));
 
18013
                                break; }
 
18014
 
 
18015
                                default: {
 
18016
                                break; }
 
18017
 
 
18018
                        }
 
18019
                }
 
18020
                if (ndr_flags & NDR_BUFFERS) {
 
18021
                        NDR_CHECK(ndr_pull_setup_relative_base_offset2(ndr, r));
 
18022
                        switch (level) {
 
18023
                                case 1:
 
18024
                                        NDR_CHECK(ndr_pull_spoolss_PrintProcDataTypesInfo1(ndr, NDR_BUFFERS, &r->info1));
 
18025
                                break;
 
18026
 
 
18027
                                default:
 
18028
                                break;
 
18029
 
 
18030
                        }
 
18031
                }
 
18032
                ndr->flags = _flags_save_UNION;
 
18033
        }
 
18034
        ndr_pull_restore_relative_base_offset(ndr, _save_relative_base_offset);
 
18035
        return NDR_ERR_SUCCESS;
 
18036
}
 
18037
 
 
18038
_PUBLIC_ void ndr_print_spoolss_PrintProcDataTypesInfo(struct ndr_print *ndr, const char *name, const union spoolss_PrintProcDataTypesInfo *r)
 
18039
{
 
18040
        int level;
 
18041
        {
 
18042
                uint32_t _flags_save_UNION = ndr->flags;
 
18043
                ndr_set_flags(&ndr->flags, LIBNDR_FLAG_RELATIVE_REVERSE);
 
18044
                level = ndr_print_get_switch_value(ndr, r);
 
18045
                ndr_print_union(ndr, name, level, "spoolss_PrintProcDataTypesInfo");
 
18046
                switch (level) {
 
18047
                        case 1:
 
18048
                                ndr_print_spoolss_PrintProcDataTypesInfo1(ndr, "info1", &r->info1);
 
18049
                        break;
 
18050
 
 
18051
                        default:
 
18052
                        break;
 
18053
 
 
18054
                }
 
18055
                ndr->flags = _flags_save_UNION;
 
18056
        }
 
18057
}
 
18058
 
 
18059
static enum ndr_err_code ndr_push_spoolss_PrinterChangeFlags(struct ndr_push *ndr, int ndr_flags, uint32_t r)
 
18060
{
 
18061
        NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r));
 
18062
        return NDR_ERR_SUCCESS;
 
18063
}
 
18064
 
 
18065
static enum ndr_err_code ndr_pull_spoolss_PrinterChangeFlags(struct ndr_pull *ndr, int ndr_flags, uint32_t *r)
 
18066
{
 
18067
        uint32_t v;
 
18068
        NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &v));
 
18069
        *r = v;
 
18070
        return NDR_ERR_SUCCESS;
 
18071
}
 
18072
 
 
18073
_PUBLIC_ void ndr_print_spoolss_PrinterChangeFlags(struct ndr_print *ndr, const char *name, uint32_t r)
 
18074
{
 
18075
        ndr_print_uint32(ndr, name, r);
 
18076
        ndr->depth++;
 
18077
        ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "PRINTER_CHANGE_ADD_PRINTER", PRINTER_CHANGE_ADD_PRINTER, r);
 
18078
        ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "PRINTER_CHANGE_SET_PRINTER", PRINTER_CHANGE_SET_PRINTER, r);
 
18079
        ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "PRINTER_CHANGE_DELETE_PRINTER", PRINTER_CHANGE_DELETE_PRINTER, r);
 
18080
        ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "PRINTER_CHANGE_FAILED_CONNECTION_PRINTER", PRINTER_CHANGE_FAILED_CONNECTION_PRINTER, r);
 
18081
        ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "PRINTER_CHANGE_ADD_JOB", PRINTER_CHANGE_ADD_JOB, r);
 
18082
        ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "PRINTER_CHANGE_SET_JOB", PRINTER_CHANGE_SET_JOB, r);
 
18083
        ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "PRINTER_CHANGE_DELETE_JOB", PRINTER_CHANGE_DELETE_JOB, r);
 
18084
        ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "PRINTER_CHANGE_WRITE_JOB", PRINTER_CHANGE_WRITE_JOB, r);
 
18085
        ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "PRINTER_CHANGE_ADD_FORM", PRINTER_CHANGE_ADD_FORM, r);
 
18086
        ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "PRINTER_CHANGE_SET_FORM", PRINTER_CHANGE_SET_FORM, r);
 
18087
        ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "PRINTER_CHANGE_DELETE_FORM", PRINTER_CHANGE_DELETE_FORM, r);
 
18088
        ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "PRINTER_CHANGE_ADD_PORT", PRINTER_CHANGE_ADD_PORT, r);
 
18089
        ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "PRINTER_CHANGE_CONFIGURE_PORT", PRINTER_CHANGE_CONFIGURE_PORT, r);
 
18090
        ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "PRINTER_CHANGE_DELETE_PORT", PRINTER_CHANGE_DELETE_PORT, r);
 
18091
        ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "PRINTER_CHANGE_ADD_PRINT_PROCESSOR", PRINTER_CHANGE_ADD_PRINT_PROCESSOR, r);
 
18092
        ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "PRINTER_CHANGE_DELETE_PRINT_PROCESSOR", PRINTER_CHANGE_DELETE_PRINT_PROCESSOR, r);
 
18093
        ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "PRINTER_CHANGE_SERVER", PRINTER_CHANGE_SERVER, r);
 
18094
        ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "PRINTER_CHANGE_ADD_PRINTER_DRIVER", PRINTER_CHANGE_ADD_PRINTER_DRIVER, r);
 
18095
        ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "PRINTER_CHANGE_SET_PRINTER_DRIVER", PRINTER_CHANGE_SET_PRINTER_DRIVER, r);
 
18096
        ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "PRINTER_CHANGE_DELETE_PRINTER_DRIVER", PRINTER_CHANGE_DELETE_PRINTER_DRIVER, r);
 
18097
        ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "PRINTER_CHANGE_TIMEOUT", PRINTER_CHANGE_TIMEOUT, r);
 
18098
        ndr->depth--;
 
18099
}
 
18100
 
 
18101
_PUBLIC_ enum ndr_err_code ndr_push_spoolss_JobNotifyField(struct ndr_push *ndr, int ndr_flags, enum spoolss_JobNotifyField r)
 
18102
{
 
18103
        NDR_CHECK(ndr_push_enum_uint16(ndr, NDR_SCALARS, r));
 
18104
        return NDR_ERR_SUCCESS;
 
18105
}
 
18106
 
 
18107
_PUBLIC_ enum ndr_err_code ndr_pull_spoolss_JobNotifyField(struct ndr_pull *ndr, int ndr_flags, enum spoolss_JobNotifyField *r)
 
18108
{
 
18109
        uint16_t v;
 
18110
        NDR_CHECK(ndr_pull_enum_uint16(ndr, NDR_SCALARS, &v));
 
18111
        *r = v;
 
18112
        return NDR_ERR_SUCCESS;
 
18113
}
 
18114
 
 
18115
_PUBLIC_ void ndr_print_spoolss_JobNotifyField(struct ndr_print *ndr, const char *name, enum spoolss_JobNotifyField r)
 
18116
{
 
18117
        const char *val = NULL;
 
18118
 
 
18119
        switch (r) {
 
18120
                case JOB_NOTIFY_FIELD_PRINTER_NAME: val = "JOB_NOTIFY_FIELD_PRINTER_NAME"; break;
 
18121
                case JOB_NOTIFY_FIELD_MACHINE_NAME: val = "JOB_NOTIFY_FIELD_MACHINE_NAME"; break;
 
18122
                case JOB_NOTIFY_FIELD_PORT_NAME: val = "JOB_NOTIFY_FIELD_PORT_NAME"; break;
 
18123
                case JOB_NOTIFY_FIELD_USER_NAME: val = "JOB_NOTIFY_FIELD_USER_NAME"; break;
 
18124
                case JOB_NOTIFY_FIELD_NOTIFY_NAME: val = "JOB_NOTIFY_FIELD_NOTIFY_NAME"; break;
 
18125
                case JOB_NOTIFY_FIELD_DATATYPE: val = "JOB_NOTIFY_FIELD_DATATYPE"; break;
 
18126
                case JOB_NOTIFY_FIELD_PRINT_PROCESSOR: val = "JOB_NOTIFY_FIELD_PRINT_PROCESSOR"; break;
 
18127
                case JOB_NOTIFY_FIELD_PARAMETERS: val = "JOB_NOTIFY_FIELD_PARAMETERS"; break;
 
18128
                case JOB_NOTIFY_FIELD_DRIVER_NAME: val = "JOB_NOTIFY_FIELD_DRIVER_NAME"; break;
 
18129
                case JOB_NOTIFY_FIELD_DEVMODE: val = "JOB_NOTIFY_FIELD_DEVMODE"; break;
 
18130
                case JOB_NOTIFY_FIELD_STATUS: val = "JOB_NOTIFY_FIELD_STATUS"; break;
 
18131
                case JOB_NOTIFY_FIELD_STATUS_STRING: val = "JOB_NOTIFY_FIELD_STATUS_STRING"; break;
 
18132
                case JOB_NOTIFY_FIELD_SECURITY_DESCRIPTOR: val = "JOB_NOTIFY_FIELD_SECURITY_DESCRIPTOR"; break;
 
18133
                case JOB_NOTIFY_FIELD_DOCUMENT: val = "JOB_NOTIFY_FIELD_DOCUMENT"; break;
 
18134
                case JOB_NOTIFY_FIELD_PRIORITY: val = "JOB_NOTIFY_FIELD_PRIORITY"; break;
 
18135
                case JOB_NOTIFY_FIELD_POSITION: val = "JOB_NOTIFY_FIELD_POSITION"; break;
 
18136
                case JOB_NOTIFY_FIELD_SUBMITTED: val = "JOB_NOTIFY_FIELD_SUBMITTED"; break;
 
18137
                case JOB_NOTIFY_FIELD_START_TIME: val = "JOB_NOTIFY_FIELD_START_TIME"; break;
 
18138
                case JOB_NOTIFY_FIELD_UNTIL_TIME: val = "JOB_NOTIFY_FIELD_UNTIL_TIME"; break;
 
18139
                case JOB_NOTIFY_FIELD_TIME: val = "JOB_NOTIFY_FIELD_TIME"; break;
 
18140
                case JOB_NOTIFY_FIELD_TOTAL_PAGES: val = "JOB_NOTIFY_FIELD_TOTAL_PAGES"; break;
 
18141
                case JOB_NOTIFY_FIELD_PAGES_PRINTED: val = "JOB_NOTIFY_FIELD_PAGES_PRINTED"; break;
 
18142
                case JOB_NOTIFY_FIELD_TOTAL_BYTES: val = "JOB_NOTIFY_FIELD_TOTAL_BYTES"; break;
 
18143
                case JOB_NOTIFY_FIELD_BYTES_PRINTED: val = "JOB_NOTIFY_FIELD_BYTES_PRINTED"; break;
 
18144
        }
 
18145
        ndr_print_enum(ndr, name, "ENUM", val, r);
 
18146
}
 
18147
 
 
18148
_PUBLIC_ enum ndr_err_code ndr_push_spoolss_PrintNotifyField(struct ndr_push *ndr, int ndr_flags, enum spoolss_PrintNotifyField r)
 
18149
{
 
18150
        NDR_CHECK(ndr_push_enum_uint16(ndr, NDR_SCALARS, r));
 
18151
        return NDR_ERR_SUCCESS;
 
18152
}
 
18153
 
 
18154
_PUBLIC_ enum ndr_err_code ndr_pull_spoolss_PrintNotifyField(struct ndr_pull *ndr, int ndr_flags, enum spoolss_PrintNotifyField *r)
 
18155
{
 
18156
        uint16_t v;
 
18157
        NDR_CHECK(ndr_pull_enum_uint16(ndr, NDR_SCALARS, &v));
 
18158
        *r = v;
 
18159
        return NDR_ERR_SUCCESS;
 
18160
}
 
18161
 
 
18162
_PUBLIC_ void ndr_print_spoolss_PrintNotifyField(struct ndr_print *ndr, const char *name, enum spoolss_PrintNotifyField r)
 
18163
{
 
18164
        const char *val = NULL;
 
18165
 
 
18166
        switch (r) {
 
18167
                case PRINTER_NOTIFY_FIELD_SERVER_NAME: val = "PRINTER_NOTIFY_FIELD_SERVER_NAME"; break;
 
18168
                case PRINTER_NOTIFY_FIELD_PRINTER_NAME: val = "PRINTER_NOTIFY_FIELD_PRINTER_NAME"; break;
 
18169
                case PRINTER_NOTIFY_FIELD_SHARE_NAME: val = "PRINTER_NOTIFY_FIELD_SHARE_NAME"; break;
 
18170
                case PRINTER_NOTIFY_FIELD_PORT_NAME: val = "PRINTER_NOTIFY_FIELD_PORT_NAME"; break;
 
18171
                case PRINTER_NOTIFY_FIELD_DRIVER_NAME: val = "PRINTER_NOTIFY_FIELD_DRIVER_NAME"; break;
 
18172
                case PRINTER_NOTIFY_FIELD_COMMENT: val = "PRINTER_NOTIFY_FIELD_COMMENT"; break;
 
18173
                case PRINTER_NOTIFY_FIELD_LOCATION: val = "PRINTER_NOTIFY_FIELD_LOCATION"; break;
 
18174
                case PRINTER_NOTIFY_FIELD_DEVMODE: val = "PRINTER_NOTIFY_FIELD_DEVMODE"; break;
 
18175
                case PRINTER_NOTIFY_FIELD_SEPFILE: val = "PRINTER_NOTIFY_FIELD_SEPFILE"; break;
 
18176
                case PRINTER_NOTIFY_FIELD_PRINT_PROCESSOR: val = "PRINTER_NOTIFY_FIELD_PRINT_PROCESSOR"; break;
 
18177
                case PRINTER_NOTIFY_FIELD_PARAMETERS: val = "PRINTER_NOTIFY_FIELD_PARAMETERS"; break;
 
18178
                case PRINTER_NOTIFY_FIELD_DATATYPE: val = "PRINTER_NOTIFY_FIELD_DATATYPE"; break;
 
18179
                case PRINTER_NOTIFY_FIELD_SECURITY_DESCRIPTOR: val = "PRINTER_NOTIFY_FIELD_SECURITY_DESCRIPTOR"; break;
 
18180
                case PRINTER_NOTIFY_FIELD_ATTRIBUTES: val = "PRINTER_NOTIFY_FIELD_ATTRIBUTES"; break;
 
18181
                case PRINTER_NOTIFY_FIELD_PRIORITY: val = "PRINTER_NOTIFY_FIELD_PRIORITY"; break;
 
18182
                case PRINTER_NOTIFY_FIELD_DEFAULT_PRIORITY: val = "PRINTER_NOTIFY_FIELD_DEFAULT_PRIORITY"; break;
 
18183
                case PRINTER_NOTIFY_FIELD_START_TIME: val = "PRINTER_NOTIFY_FIELD_START_TIME"; break;
 
18184
                case PRINTER_NOTIFY_FIELD_UNTIL_TIME: val = "PRINTER_NOTIFY_FIELD_UNTIL_TIME"; break;
 
18185
                case PRINTER_NOTIFY_FIELD_STATUS: val = "PRINTER_NOTIFY_FIELD_STATUS"; break;
 
18186
                case PRINTER_NOTIFY_FIELD_STATUS_STRING: val = "PRINTER_NOTIFY_FIELD_STATUS_STRING"; break;
 
18187
                case PRINTER_NOTIFY_FIELD_CJOBS: val = "PRINTER_NOTIFY_FIELD_CJOBS"; break;
 
18188
                case PRINTER_NOTIFY_FIELD_AVERAGE_PPM: val = "PRINTER_NOTIFY_FIELD_AVERAGE_PPM"; break;
 
18189
                case PRINTER_NOTIFY_FIELD_TOTAL_PAGES: val = "PRINTER_NOTIFY_FIELD_TOTAL_PAGES"; break;
 
18190
                case PRINTER_NOTIFY_FIELD_PAGES_PRINTED: val = "PRINTER_NOTIFY_FIELD_PAGES_PRINTED"; break;
 
18191
                case PRINTER_NOTIFY_FIELD_TOTAL_BYTES: val = "PRINTER_NOTIFY_FIELD_TOTAL_BYTES"; break;
 
18192
                case PRINTER_NOTIFY_FIELD_BYTES_PRINTED: val = "PRINTER_NOTIFY_FIELD_BYTES_PRINTED"; break;
 
18193
                case PRINTER_NOTIFY_FIELD_OBJECT_GUID: val = "PRINTER_NOTIFY_FIELD_OBJECT_GUID"; break;
 
18194
                case PRINTER_NOTIFY_FIELD_FRIENDLY_NAME: val = "PRINTER_NOTIFY_FIELD_FRIENDLY_NAME"; break;
 
18195
        }
 
18196
        ndr_print_enum(ndr, name, "ENUM", val, r);
 
18197
}
 
18198
 
 
18199
static enum ndr_err_code ndr_push_spoolss_NotifyType(struct ndr_push *ndr, int ndr_flags, enum spoolss_NotifyType r)
 
18200
{
 
18201
        NDR_CHECK(ndr_push_enum_uint16(ndr, NDR_SCALARS, r));
 
18202
        return NDR_ERR_SUCCESS;
 
18203
}
 
18204
 
 
18205
static enum ndr_err_code ndr_pull_spoolss_NotifyType(struct ndr_pull *ndr, int ndr_flags, enum spoolss_NotifyType *r)
 
18206
{
 
18207
        uint16_t v;
 
18208
        NDR_CHECK(ndr_pull_enum_uint16(ndr, NDR_SCALARS, &v));
 
18209
        *r = v;
 
18210
        return NDR_ERR_SUCCESS;
 
18211
}
 
18212
 
 
18213
_PUBLIC_ void ndr_print_spoolss_NotifyType(struct ndr_print *ndr, const char *name, enum spoolss_NotifyType r)
 
18214
{
 
18215
        const char *val = NULL;
 
18216
 
 
18217
        switch (r) {
 
18218
                case PRINTER_NOTIFY_TYPE: val = "PRINTER_NOTIFY_TYPE"; break;
 
18219
                case JOB_NOTIFY_TYPE: val = "JOB_NOTIFY_TYPE"; break;
 
18220
        }
 
18221
        ndr_print_enum(ndr, name, "ENUM", val, r);
 
18222
}
 
18223
 
 
18224
static enum ndr_err_code ndr_push_spoolss_Field(struct ndr_push *ndr, int ndr_flags, const union spoolss_Field *r)
 
18225
{
 
18226
        if (ndr_flags & NDR_SCALARS) {
 
18227
                int level = ndr_push_get_switch_value(ndr, r);
 
18228
                NDR_CHECK(ndr_push_union_align(ndr, 2));
 
18229
                switch (level) {
 
18230
                        case PRINTER_NOTIFY_TYPE: {
 
18231
                                NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->field));
 
18232
                        break; }
 
18233
 
 
18234
                        case JOB_NOTIFY_TYPE: {
 
18235
                                NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->field));
 
18236
                        break; }
 
18237
 
 
18238
                        default: {
 
18239
                                NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->field));
 
18240
                        break; }
 
18241
 
 
18242
                }
 
18243
        }
 
18244
        if (ndr_flags & NDR_BUFFERS) {
 
18245
                int level = ndr_push_get_switch_value(ndr, r);
 
18246
                switch (level) {
 
18247
                        case PRINTER_NOTIFY_TYPE:
 
18248
                        break;
 
18249
 
 
18250
                        case JOB_NOTIFY_TYPE:
 
18251
                        break;
 
18252
 
 
18253
                        default:
 
18254
                        break;
 
18255
 
 
18256
                }
 
18257
        }
 
18258
        return NDR_ERR_SUCCESS;
 
18259
}
 
18260
 
 
18261
static enum ndr_err_code ndr_pull_spoolss_Field(struct ndr_pull *ndr, int ndr_flags, union spoolss_Field *r)
 
18262
{
 
18263
        int level;
 
18264
        level = ndr_pull_get_switch_value(ndr, r);
 
18265
        if (ndr_flags & NDR_SCALARS) {
 
18266
                NDR_CHECK(ndr_pull_union_align(ndr, 2));
 
18267
                switch (level) {
 
18268
                        case PRINTER_NOTIFY_TYPE: {
 
18269
                                NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->field));
 
18270
                        break; }
 
18271
 
 
18272
                        case JOB_NOTIFY_TYPE: {
 
18273
                                NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->field));
 
18274
                        break; }
 
18275
 
 
18276
                        default: {
 
18277
                                NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->field));
 
18278
                        break; }
 
18279
 
 
18280
                }
 
18281
        }
 
18282
        if (ndr_flags & NDR_BUFFERS) {
 
18283
                switch (level) {
 
18284
                        case PRINTER_NOTIFY_TYPE:
 
18285
                        break;
 
18286
 
 
18287
                        case JOB_NOTIFY_TYPE:
 
18288
                        break;
 
18289
 
 
18290
                        default:
 
18291
                        break;
 
18292
 
 
18293
                }
 
18294
        }
 
18295
        return NDR_ERR_SUCCESS;
 
18296
}
 
18297
 
 
18298
static enum ndr_err_code ndr_push_spoolss_NotifyOptionType(struct ndr_push *ndr, int ndr_flags, const struct spoolss_NotifyOptionType *r)
 
18299
{
 
18300
        uint32_t cntr_fields_1;
 
18301
        if (ndr_flags & NDR_SCALARS) {
 
18302
                NDR_CHECK(ndr_push_align(ndr, 5));
 
18303
                NDR_CHECK(ndr_push_spoolss_NotifyType(ndr, NDR_SCALARS, r->type));
 
18304
                NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->u1));
 
18305
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->u2));
 
18306
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->u3));
 
18307
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->count));
 
18308
                NDR_CHECK(ndr_push_unique_ptr(ndr, r->fields));
 
18309
                NDR_CHECK(ndr_push_trailer_align(ndr, 5));
 
18310
        }
 
18311
        if (ndr_flags & NDR_BUFFERS) {
 
18312
                if (r->fields) {
 
18313
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, r->count));
 
18314
                        for (cntr_fields_1 = 0; cntr_fields_1 < r->count; cntr_fields_1++) {
 
18315
                                NDR_CHECK(ndr_push_set_switch_value(ndr, &r->fields[cntr_fields_1], r->type));
 
18316
                                NDR_CHECK(ndr_push_spoolss_Field(ndr, NDR_SCALARS, &r->fields[cntr_fields_1]));
 
18317
                        }
 
18318
                }
 
18319
        }
 
18320
        return NDR_ERR_SUCCESS;
 
18321
}
 
18322
 
 
18323
static enum ndr_err_code ndr_pull_spoolss_NotifyOptionType(struct ndr_pull *ndr, int ndr_flags, struct spoolss_NotifyOptionType *r)
 
18324
{
 
18325
        uint32_t _ptr_fields;
 
18326
        uint32_t cntr_fields_1;
 
18327
        TALLOC_CTX *_mem_save_fields_0;
 
18328
        TALLOC_CTX *_mem_save_fields_1;
 
18329
        if (ndr_flags & NDR_SCALARS) {
 
18330
                NDR_CHECK(ndr_pull_align(ndr, 5));
 
18331
                NDR_CHECK(ndr_pull_spoolss_NotifyType(ndr, NDR_SCALARS, &r->type));
 
18332
                NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->u1));
 
18333
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->u2));
 
18334
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->u3));
 
18335
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->count));
 
18336
                NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_fields));
 
18337
                if (_ptr_fields) {
 
18338
                        NDR_PULL_ALLOC(ndr, r->fields);
 
18339
                } else {
 
18340
                        r->fields = NULL;
 
18341
                }
 
18342
                NDR_CHECK(ndr_pull_trailer_align(ndr, 5));
 
18343
        }
 
18344
        if (ndr_flags & NDR_BUFFERS) {
 
18345
                if (r->fields) {
 
18346
                        _mem_save_fields_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
18347
                        NDR_PULL_SET_MEM_CTX(ndr, r->fields, 0);
 
18348
                        NDR_CHECK(ndr_pull_array_size(ndr, &r->fields));
 
18349
                        NDR_PULL_ALLOC_N(ndr, r->fields, ndr_get_array_size(ndr, &r->fields));
 
18350
                        _mem_save_fields_1 = NDR_PULL_GET_MEM_CTX(ndr);
 
18351
                        NDR_PULL_SET_MEM_CTX(ndr, r->fields, 0);
 
18352
                        for (cntr_fields_1 = 0; cntr_fields_1 < r->count; cntr_fields_1++) {
 
18353
                                NDR_CHECK(ndr_pull_set_switch_value(ndr, &r->fields[cntr_fields_1], r->type));
 
18354
                                NDR_CHECK(ndr_pull_spoolss_Field(ndr, NDR_SCALARS, &r->fields[cntr_fields_1]));
 
18355
                        }
 
18356
                        NDR_PULL_SET_MEM_CTX(ndr, _mem_save_fields_1, 0);
 
18357
                        NDR_PULL_SET_MEM_CTX(ndr, _mem_save_fields_0, 0);
 
18358
                }
 
18359
                if (r->fields) {
 
18360
                        NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->fields, r->count));
 
18361
                }
 
18362
        }
 
18363
        return NDR_ERR_SUCCESS;
 
18364
}
 
18365
 
 
18366
_PUBLIC_ void ndr_print_spoolss_NotifyOptionType(struct ndr_print *ndr, const char *name, const struct spoolss_NotifyOptionType *r)
 
18367
{
 
18368
        uint32_t cntr_fields_1;
 
18369
        ndr_print_struct(ndr, name, "spoolss_NotifyOptionType");
 
18370
        ndr->depth++;
 
18371
        ndr_print_spoolss_NotifyType(ndr, "type", r->type);
 
18372
        ndr_print_uint16(ndr, "u1", r->u1);
 
18373
        ndr_print_uint32(ndr, "u2", r->u2);
 
18374
        ndr_print_uint32(ndr, "u3", r->u3);
 
18375
        ndr_print_uint32(ndr, "count", r->count);
 
18376
        ndr_print_ptr(ndr, "fields", r->fields);
 
18377
        ndr->depth++;
 
18378
        if (r->fields) {
 
18379
                ndr->print(ndr, "%s: ARRAY(%d)", "fields", (int)r->count);
 
18380
                ndr->depth++;
 
18381
                for (cntr_fields_1=0;cntr_fields_1<r->count;cntr_fields_1++) {
 
18382
                        char *idx_1=NULL;
 
18383
                        if (asprintf(&idx_1, "[%d]", cntr_fields_1) != -1) {
 
18384
                                ndr_print_set_switch_value(ndr, &r->fields[cntr_fields_1], r->type);
 
18385
                                ndr_print_spoolss_Field(ndr, "fields", &r->fields[cntr_fields_1]);
 
18386
                                free(idx_1);
 
18387
                        }
 
18388
                }
 
18389
                ndr->depth--;
 
18390
        }
 
18391
        ndr->depth--;
 
18392
        ndr->depth--;
 
18393
}
 
18394
 
 
18395
static enum ndr_err_code ndr_push_spoolssNotifyOptionFlags(struct ndr_push *ndr, int ndr_flags, uint32_t r)
 
18396
{
 
18397
        NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r));
 
18398
        return NDR_ERR_SUCCESS;
 
18399
}
 
18400
 
 
18401
static enum ndr_err_code ndr_pull_spoolssNotifyOptionFlags(struct ndr_pull *ndr, int ndr_flags, uint32_t *r)
 
18402
{
 
18403
        uint32_t v;
 
18404
        NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &v));
 
18405
        *r = v;
 
18406
        return NDR_ERR_SUCCESS;
 
18407
}
 
18408
 
 
18409
_PUBLIC_ void ndr_print_spoolssNotifyOptionFlags(struct ndr_print *ndr, const char *name, uint32_t r)
 
18410
{
 
18411
        ndr_print_uint32(ndr, name, r);
 
18412
        ndr->depth++;
 
18413
        ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "PRINTER_NOTIFY_OPTIONS_REFRESH", PRINTER_NOTIFY_OPTIONS_REFRESH, r);
 
18414
        ndr->depth--;
 
18415
}
 
18416
 
 
18417
static enum ndr_err_code ndr_push_spoolss_NotifyOption(struct ndr_push *ndr, int ndr_flags, const struct spoolss_NotifyOption *r)
 
18418
{
 
18419
        uint32_t cntr_types_1;
 
18420
        if (ndr_flags & NDR_SCALARS) {
 
18421
                NDR_CHECK(ndr_push_align(ndr, 5));
 
18422
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 2));
 
18423
                NDR_CHECK(ndr_push_spoolssNotifyOptionFlags(ndr, NDR_SCALARS, r->flags));
 
18424
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->count));
 
18425
                NDR_CHECK(ndr_push_unique_ptr(ndr, r->types));
 
18426
                NDR_CHECK(ndr_push_trailer_align(ndr, 5));
 
18427
        }
 
18428
        if (ndr_flags & NDR_BUFFERS) {
 
18429
                if (r->types) {
 
18430
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, r->count));
 
18431
                        for (cntr_types_1 = 0; cntr_types_1 < r->count; cntr_types_1++) {
 
18432
                                NDR_CHECK(ndr_push_spoolss_NotifyOptionType(ndr, NDR_SCALARS, &r->types[cntr_types_1]));
 
18433
                        }
 
18434
                        for (cntr_types_1 = 0; cntr_types_1 < r->count; cntr_types_1++) {
 
18435
                                NDR_CHECK(ndr_push_spoolss_NotifyOptionType(ndr, NDR_BUFFERS, &r->types[cntr_types_1]));
 
18436
                        }
 
18437
                }
 
18438
        }
 
18439
        return NDR_ERR_SUCCESS;
 
18440
}
 
18441
 
 
18442
static enum ndr_err_code ndr_pull_spoolss_NotifyOption(struct ndr_pull *ndr, int ndr_flags, struct spoolss_NotifyOption *r)
 
18443
{
 
18444
        uint32_t _ptr_types;
 
18445
        uint32_t cntr_types_1;
 
18446
        TALLOC_CTX *_mem_save_types_0;
 
18447
        TALLOC_CTX *_mem_save_types_1;
 
18448
        if (ndr_flags & NDR_SCALARS) {
 
18449
                NDR_CHECK(ndr_pull_align(ndr, 5));
 
18450
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->version));
 
18451
                NDR_CHECK(ndr_pull_spoolssNotifyOptionFlags(ndr, NDR_SCALARS, &r->flags));
 
18452
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->count));
 
18453
                NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_types));
 
18454
                if (_ptr_types) {
 
18455
                        NDR_PULL_ALLOC(ndr, r->types);
 
18456
                } else {
 
18457
                        r->types = NULL;
 
18458
                }
 
18459
                NDR_CHECK(ndr_pull_trailer_align(ndr, 5));
 
18460
        }
 
18461
        if (ndr_flags & NDR_BUFFERS) {
 
18462
                if (r->types) {
 
18463
                        _mem_save_types_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
18464
                        NDR_PULL_SET_MEM_CTX(ndr, r->types, 0);
 
18465
                        NDR_CHECK(ndr_pull_array_size(ndr, &r->types));
 
18466
                        NDR_PULL_ALLOC_N(ndr, r->types, ndr_get_array_size(ndr, &r->types));
 
18467
                        _mem_save_types_1 = NDR_PULL_GET_MEM_CTX(ndr);
 
18468
                        NDR_PULL_SET_MEM_CTX(ndr, r->types, 0);
 
18469
                        for (cntr_types_1 = 0; cntr_types_1 < r->count; cntr_types_1++) {
 
18470
                                NDR_CHECK(ndr_pull_spoolss_NotifyOptionType(ndr, NDR_SCALARS, &r->types[cntr_types_1]));
 
18471
                        }
 
18472
                        for (cntr_types_1 = 0; cntr_types_1 < r->count; cntr_types_1++) {
 
18473
                                NDR_CHECK(ndr_pull_spoolss_NotifyOptionType(ndr, NDR_BUFFERS, &r->types[cntr_types_1]));
 
18474
                        }
 
18475
                        NDR_PULL_SET_MEM_CTX(ndr, _mem_save_types_1, 0);
 
18476
                        NDR_PULL_SET_MEM_CTX(ndr, _mem_save_types_0, 0);
 
18477
                }
 
18478
                if (r->types) {
 
18479
                        NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->types, r->count));
 
18480
                }
 
18481
        }
 
18482
        return NDR_ERR_SUCCESS;
 
18483
}
 
18484
 
 
18485
_PUBLIC_ void ndr_print_spoolss_NotifyOption(struct ndr_print *ndr, const char *name, const struct spoolss_NotifyOption *r)
 
18486
{
 
18487
        uint32_t cntr_types_1;
 
18488
        ndr_print_struct(ndr, name, "spoolss_NotifyOption");
 
18489
        ndr->depth++;
 
18490
        ndr_print_uint32(ndr, "version", (ndr->flags & LIBNDR_PRINT_SET_VALUES)?2:r->version);
 
18491
        ndr_print_spoolssNotifyOptionFlags(ndr, "flags", r->flags);
 
18492
        ndr_print_uint32(ndr, "count", r->count);
 
18493
        ndr_print_ptr(ndr, "types", r->types);
 
18494
        ndr->depth++;
 
18495
        if (r->types) {
 
18496
                ndr->print(ndr, "%s: ARRAY(%d)", "types", (int)r->count);
 
18497
                ndr->depth++;
 
18498
                for (cntr_types_1=0;cntr_types_1<r->count;cntr_types_1++) {
 
18499
                        char *idx_1=NULL;
 
18500
                        if (asprintf(&idx_1, "[%d]", cntr_types_1) != -1) {
 
18501
                                ndr_print_spoolss_NotifyOptionType(ndr, "types", &r->types[cntr_types_1]);
 
18502
                                free(idx_1);
 
18503
                        }
 
18504
                }
 
18505
                ndr->depth--;
 
18506
        }
 
18507
        ndr->depth--;
 
18508
        ndr->depth--;
 
18509
}
 
18510
 
 
18511
static enum ndr_err_code ndr_push_spoolss_NotifyString(struct ndr_push *ndr, int ndr_flags, const struct spoolss_NotifyString *r)
 
18512
{
 
18513
        if (ndr_flags & NDR_SCALARS) {
 
18514
                NDR_CHECK(ndr_push_align(ndr, 5));
 
18515
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->size));
 
18516
                NDR_CHECK(ndr_push_unique_ptr(ndr, r->string));
 
18517
                NDR_CHECK(ndr_push_trailer_align(ndr, 5));
 
18518
        }
 
18519
        if (ndr_flags & NDR_BUFFERS) {
 
18520
                if (r->string) {
 
18521
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, r->size / 2));
 
18522
                        NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->string, r->size / 2, sizeof(uint16_t), CH_UTF16));
 
18523
                }
 
18524
        }
 
18525
        return NDR_ERR_SUCCESS;
 
18526
}
 
18527
 
 
18528
static enum ndr_err_code ndr_pull_spoolss_NotifyString(struct ndr_pull *ndr, int ndr_flags, struct spoolss_NotifyString *r)
 
18529
{
 
18530
        uint32_t _ptr_string;
 
18531
        TALLOC_CTX *_mem_save_string_0;
 
18532
        if (ndr_flags & NDR_SCALARS) {
 
18533
                NDR_CHECK(ndr_pull_align(ndr, 5));
 
18534
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->size));
 
18535
                NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_string));
 
18536
                if (_ptr_string) {
 
18537
                        NDR_PULL_ALLOC(ndr, r->string);
 
18538
                } else {
 
18539
                        r->string = NULL;
 
18540
                }
 
18541
                NDR_CHECK(ndr_pull_trailer_align(ndr, 5));
 
18542
        }
 
18543
        if (ndr_flags & NDR_BUFFERS) {
 
18544
                if (r->string) {
 
18545
                        _mem_save_string_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
18546
                        NDR_PULL_SET_MEM_CTX(ndr, r->string, 0);
 
18547
                        NDR_CHECK(ndr_pull_array_size(ndr, &r->string));
 
18548
                        NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->string, ndr_get_array_size(ndr, &r->string), sizeof(uint16_t), CH_UTF16));
 
18549
                        NDR_PULL_SET_MEM_CTX(ndr, _mem_save_string_0, 0);
 
18550
                }
 
18551
                if (r->string) {
 
18552
                        NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->string, r->size / 2));
 
18553
                }
 
18554
        }
 
18555
        return NDR_ERR_SUCCESS;
 
18556
}
 
18557
 
 
18558
_PUBLIC_ void ndr_print_spoolss_NotifyString(struct ndr_print *ndr, const char *name, const struct spoolss_NotifyString *r)
 
18559
{
 
18560
        ndr_print_struct(ndr, name, "spoolss_NotifyString");
 
18561
        ndr->depth++;
 
18562
        ndr_print_uint32(ndr, "size", r->size);
 
18563
        ndr_print_ptr(ndr, "string", r->string);
 
18564
        ndr->depth++;
 
18565
        if (r->string) {
 
18566
                ndr_print_string(ndr, "string", r->string);
 
18567
        }
 
18568
        ndr->depth--;
 
18569
        ndr->depth--;
 
18570
}
 
18571
 
 
18572
static enum ndr_err_code ndr_push_spoolss_NotifyTable(struct ndr_push *ndr, int ndr_flags, enum spoolss_NotifyTable r)
 
18573
{
 
18574
        NDR_CHECK(ndr_push_enum_uint32(ndr, NDR_SCALARS, r));
 
18575
        return NDR_ERR_SUCCESS;
 
18576
}
 
18577
 
 
18578
static enum ndr_err_code ndr_pull_spoolss_NotifyTable(struct ndr_pull *ndr, int ndr_flags, enum spoolss_NotifyTable *r)
 
18579
{
 
18580
        uint32_t v;
 
18581
        NDR_CHECK(ndr_pull_enum_uint32(ndr, NDR_SCALARS, &v));
 
18582
        *r = v;
 
18583
        return NDR_ERR_SUCCESS;
 
18584
}
 
18585
 
 
18586
_PUBLIC_ void ndr_print_spoolss_NotifyTable(struct ndr_print *ndr, const char *name, enum spoolss_NotifyTable r)
 
18587
{
 
18588
        const char *val = NULL;
 
18589
 
 
18590
        switch (r) {
 
18591
                case NOTIFY_TABLE_DWORD: val = "NOTIFY_TABLE_DWORD"; break;
 
18592
                case NOTIFY_TABLE_STRING: val = "NOTIFY_TABLE_STRING"; break;
 
18593
                case NOTIFY_TABLE_DEVMODE: val = "NOTIFY_TABLE_DEVMODE"; break;
 
18594
                case NOTIFY_TABLE_TIME: val = "NOTIFY_TABLE_TIME"; break;
 
18595
                case NOTIFY_TABLE_SECURITYDESCRIPTOR: val = "NOTIFY_TABLE_SECURITYDESCRIPTOR"; break;
 
18596
        }
 
18597
        ndr_print_enum(ndr, name, "ENUM", val, r);
 
18598
}
 
18599
 
 
18600
static enum ndr_err_code ndr_push_spoolss_NotifyData(struct ndr_push *ndr, int ndr_flags, const union spoolss_NotifyData *r)
 
18601
{
 
18602
        if (ndr_flags & NDR_SCALARS) {
 
18603
                int level = ndr_push_get_switch_value(ndr, r);
 
18604
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, level));
 
18605
                NDR_CHECK(ndr_push_union_align(ndr, 5));
 
18606
                switch (level) {
 
18607
                        case 1: {
 
18608
                                uint32_t cntr_integer_0;
 
18609
                                for (cntr_integer_0 = 0; cntr_integer_0 < 2; cntr_integer_0++) {
 
18610
                                        NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->integer[cntr_integer_0]));
 
18611
                                }
 
18612
                        break; }
 
18613
 
 
18614
                        case 2: {
 
18615
                                NDR_CHECK(ndr_push_spoolss_NotifyString(ndr, NDR_SCALARS, &r->string));
 
18616
                        break; }
 
18617
 
 
18618
                        case 3: {
 
18619
                                NDR_CHECK(ndr_push_spoolss_DevmodeContainer(ndr, NDR_SCALARS, &r->devmode));
 
18620
                        break; }
 
18621
 
 
18622
                        case 4: {
 
18623
                                NDR_CHECK(ndr_push_spoolss_TimeCtr(ndr, NDR_SCALARS, &r->time));
 
18624
                        break; }
 
18625
 
 
18626
                        case 5: {
 
18627
                                NDR_CHECK(ndr_push_sec_desc_buf(ndr, NDR_SCALARS, &r->sd));
 
18628
                        break; }
 
18629
 
 
18630
                        default:
 
18631
                                return ndr_push_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u at %s", level, __location__);
 
18632
                }
 
18633
        }
 
18634
        if (ndr_flags & NDR_BUFFERS) {
 
18635
                int level = ndr_push_get_switch_value(ndr, r);
 
18636
                switch (level) {
 
18637
                        case 1:
 
18638
                        break;
 
18639
 
 
18640
                        case 2:
 
18641
                                NDR_CHECK(ndr_push_spoolss_NotifyString(ndr, NDR_BUFFERS, &r->string));
 
18642
                        break;
 
18643
 
 
18644
                        case 3:
 
18645
                                NDR_CHECK(ndr_push_spoolss_DevmodeContainer(ndr, NDR_BUFFERS, &r->devmode));
 
18646
                        break;
 
18647
 
 
18648
                        case 4:
 
18649
                                NDR_CHECK(ndr_push_spoolss_TimeCtr(ndr, NDR_BUFFERS, &r->time));
 
18650
                        break;
 
18651
 
 
18652
                        case 5:
 
18653
                                NDR_CHECK(ndr_push_sec_desc_buf(ndr, NDR_BUFFERS, &r->sd));
 
18654
                        break;
 
18655
 
 
18656
                        default:
 
18657
                                return ndr_push_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u at %s", level, __location__);
 
18658
                }
 
18659
        }
 
18660
        return NDR_ERR_SUCCESS;
 
18661
}
 
18662
 
 
18663
static enum ndr_err_code ndr_pull_spoolss_NotifyData(struct ndr_pull *ndr, int ndr_flags, union spoolss_NotifyData *r)
 
18664
{
 
18665
        int level;
 
18666
        uint32_t _level;
 
18667
        level = ndr_pull_get_switch_value(ndr, r);
 
18668
        if (ndr_flags & NDR_SCALARS) {
 
18669
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &_level));
 
18670
                if (_level != level) {
 
18671
                        return ndr_pull_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u for r at %s", _level, __location__);
 
18672
                }
 
18673
                NDR_CHECK(ndr_pull_union_align(ndr, 5));
 
18674
                switch (level) {
 
18675
                        case 1: {
 
18676
                                uint32_t cntr_integer_0;
 
18677
                                for (cntr_integer_0 = 0; cntr_integer_0 < 2; cntr_integer_0++) {
 
18678
                                        NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->integer[cntr_integer_0]));
 
18679
                                }
 
18680
                        break; }
 
18681
 
 
18682
                        case 2: {
 
18683
                                NDR_CHECK(ndr_pull_spoolss_NotifyString(ndr, NDR_SCALARS, &r->string));
 
18684
                        break; }
 
18685
 
 
18686
                        case 3: {
 
18687
                                NDR_CHECK(ndr_pull_spoolss_DevmodeContainer(ndr, NDR_SCALARS, &r->devmode));
 
18688
                        break; }
 
18689
 
 
18690
                        case 4: {
 
18691
                                NDR_CHECK(ndr_pull_spoolss_TimeCtr(ndr, NDR_SCALARS, &r->time));
 
18692
                        break; }
 
18693
 
 
18694
                        case 5: {
 
18695
                                NDR_CHECK(ndr_pull_sec_desc_buf(ndr, NDR_SCALARS, &r->sd));
 
18696
                        break; }
 
18697
 
 
18698
                        default:
 
18699
                                return ndr_pull_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u at %s", level, __location__);
 
18700
                }
 
18701
        }
 
18702
        if (ndr_flags & NDR_BUFFERS) {
 
18703
                switch (level) {
 
18704
                        case 1:
 
18705
                        break;
 
18706
 
 
18707
                        case 2:
 
18708
                                NDR_CHECK(ndr_pull_spoolss_NotifyString(ndr, NDR_BUFFERS, &r->string));
 
18709
                        break;
 
18710
 
 
18711
                        case 3:
 
18712
                                NDR_CHECK(ndr_pull_spoolss_DevmodeContainer(ndr, NDR_BUFFERS, &r->devmode));
 
18713
                        break;
 
18714
 
 
18715
                        case 4:
 
18716
                                NDR_CHECK(ndr_pull_spoolss_TimeCtr(ndr, NDR_BUFFERS, &r->time));
 
18717
                        break;
 
18718
 
 
18719
                        case 5:
 
18720
                                NDR_CHECK(ndr_pull_sec_desc_buf(ndr, NDR_BUFFERS, &r->sd));
 
18721
                        break;
 
18722
 
 
18723
                        default:
 
18724
                                return ndr_pull_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u at %s", level, __location__);
 
18725
                }
 
18726
        }
 
18727
        return NDR_ERR_SUCCESS;
 
18728
}
 
18729
 
 
18730
_PUBLIC_ void ndr_print_spoolss_NotifyData(struct ndr_print *ndr, const char *name, const union spoolss_NotifyData *r)
 
18731
{
 
18732
        int level;
 
18733
        uint32_t cntr_integer_0;
 
18734
        level = ndr_print_get_switch_value(ndr, r);
 
18735
        ndr_print_union(ndr, name, level, "spoolss_NotifyData");
 
18736
        switch (level) {
 
18737
                case 1:
 
18738
                        ndr->print(ndr, "%s: ARRAY(%d)", "integer", (int)2);
 
18739
                        ndr->depth++;
 
18740
                        for (cntr_integer_0=0;cntr_integer_0<2;cntr_integer_0++) {
 
18741
                                char *idx_0=NULL;
 
18742
                                if (asprintf(&idx_0, "[%d]", cntr_integer_0) != -1) {
 
18743
                                        ndr_print_uint32(ndr, "integer", r->integer[cntr_integer_0]);
 
18744
                                        free(idx_0);
 
18745
                                }
 
18746
                        }
 
18747
                        ndr->depth--;
 
18748
                break;
 
18749
 
 
18750
                case 2:
 
18751
                        ndr_print_spoolss_NotifyString(ndr, "string", &r->string);
 
18752
                break;
 
18753
 
 
18754
                case 3:
 
18755
                        ndr_print_spoolss_DevmodeContainer(ndr, "devmode", &r->devmode);
 
18756
                break;
 
18757
 
 
18758
                case 4:
 
18759
                        ndr_print_spoolss_TimeCtr(ndr, "time", &r->time);
 
18760
                break;
 
18761
 
 
18762
                case 5:
 
18763
                        ndr_print_sec_desc_buf(ndr, "sd", &r->sd);
 
18764
                break;
 
18765
 
 
18766
                default:
 
18767
                        ndr_print_bad_level(ndr, name, level);
 
18768
        }
 
18769
}
 
18770
 
 
18771
static enum ndr_err_code ndr_push_spoolss_Notify(struct ndr_push *ndr, int ndr_flags, const struct spoolss_Notify *r)
 
18772
{
 
18773
        if (ndr_flags & NDR_SCALARS) {
 
18774
                NDR_CHECK(ndr_push_align(ndr, 5));
 
18775
                NDR_CHECK(ndr_push_spoolss_NotifyType(ndr, NDR_SCALARS, r->type));
 
18776
                NDR_CHECK(ndr_push_set_switch_value(ndr, &r->field, r->type));
 
18777
                NDR_CHECK(ndr_push_spoolss_Field(ndr, NDR_SCALARS, &r->field));
 
18778
                NDR_CHECK(ndr_push_spoolss_NotifyTable(ndr, NDR_SCALARS, r->variable_type));
 
18779
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->job_id));
 
18780
                NDR_CHECK(ndr_push_set_switch_value(ndr, &r->data, r->variable_type));
 
18781
                NDR_CHECK(ndr_push_spoolss_NotifyData(ndr, NDR_SCALARS, &r->data));
 
18782
                NDR_CHECK(ndr_push_trailer_align(ndr, 5));
 
18783
        }
 
18784
        if (ndr_flags & NDR_BUFFERS) {
 
18785
                NDR_CHECK(ndr_push_spoolss_NotifyData(ndr, NDR_BUFFERS, &r->data));
 
18786
        }
 
18787
        return NDR_ERR_SUCCESS;
 
18788
}
 
18789
 
 
18790
static enum ndr_err_code ndr_pull_spoolss_Notify(struct ndr_pull *ndr, int ndr_flags, struct spoolss_Notify *r)
 
18791
{
 
18792
        if (ndr_flags & NDR_SCALARS) {
 
18793
                NDR_CHECK(ndr_pull_align(ndr, 5));
 
18794
                NDR_CHECK(ndr_pull_spoolss_NotifyType(ndr, NDR_SCALARS, &r->type));
 
18795
                NDR_CHECK(ndr_pull_set_switch_value(ndr, &r->field, r->type));
 
18796
                NDR_CHECK(ndr_pull_spoolss_Field(ndr, NDR_SCALARS, &r->field));
 
18797
                NDR_CHECK(ndr_pull_spoolss_NotifyTable(ndr, NDR_SCALARS, &r->variable_type));
 
18798
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->job_id));
 
18799
                NDR_CHECK(ndr_pull_set_switch_value(ndr, &r->data, r->variable_type));
 
18800
                NDR_CHECK(ndr_pull_spoolss_NotifyData(ndr, NDR_SCALARS, &r->data));
 
18801
                NDR_CHECK(ndr_pull_trailer_align(ndr, 5));
 
18802
        }
 
18803
        if (ndr_flags & NDR_BUFFERS) {
 
18804
                NDR_CHECK(ndr_pull_spoolss_NotifyData(ndr, NDR_BUFFERS, &r->data));
 
18805
        }
 
18806
        return NDR_ERR_SUCCESS;
 
18807
}
 
18808
 
 
18809
_PUBLIC_ void ndr_print_spoolss_Notify(struct ndr_print *ndr, const char *name, const struct spoolss_Notify *r)
 
18810
{
 
18811
        ndr_print_struct(ndr, name, "spoolss_Notify");
 
18812
        ndr->depth++;
 
18813
        ndr_print_spoolss_NotifyType(ndr, "type", r->type);
 
18814
        ndr_print_set_switch_value(ndr, &r->field, r->type);
 
18815
        ndr_print_spoolss_Field(ndr, "field", &r->field);
 
18816
        ndr_print_spoolss_NotifyTable(ndr, "variable_type", r->variable_type);
 
18817
        ndr_print_uint32(ndr, "job_id", r->job_id);
 
18818
        ndr_print_set_switch_value(ndr, &r->data, r->variable_type);
 
18819
        ndr_print_spoolss_NotifyData(ndr, "data", &r->data);
 
18820
        ndr->depth--;
 
18821
}
 
18822
 
 
18823
static enum ndr_err_code ndr_push_spoolss_NotifyInfo(struct ndr_push *ndr, int ndr_flags, const struct spoolss_NotifyInfo *r)
 
18824
{
 
18825
        uint32_t cntr_notifies_0;
 
18826
        if (ndr_flags & NDR_SCALARS) {
 
18827
                NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, r->count));
 
18828
                NDR_CHECK(ndr_push_align(ndr, 5));
 
18829
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 2));
 
18830
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->flags));
 
18831
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->count));
 
18832
                for (cntr_notifies_0 = 0; cntr_notifies_0 < r->count; cntr_notifies_0++) {
 
18833
                        NDR_CHECK(ndr_push_spoolss_Notify(ndr, NDR_SCALARS, &r->notifies[cntr_notifies_0]));
 
18834
                }
 
18835
                NDR_CHECK(ndr_push_trailer_align(ndr, 5));
 
18836
        }
 
18837
        if (ndr_flags & NDR_BUFFERS) {
 
18838
                for (cntr_notifies_0 = 0; cntr_notifies_0 < r->count; cntr_notifies_0++) {
 
18839
                        NDR_CHECK(ndr_push_spoolss_Notify(ndr, NDR_BUFFERS, &r->notifies[cntr_notifies_0]));
 
18840
                }
 
18841
        }
 
18842
        return NDR_ERR_SUCCESS;
 
18843
}
 
18844
 
 
18845
static enum ndr_err_code ndr_pull_spoolss_NotifyInfo(struct ndr_pull *ndr, int ndr_flags, struct spoolss_NotifyInfo *r)
 
18846
{
 
18847
        uint32_t cntr_notifies_0;
 
18848
        TALLOC_CTX *_mem_save_notifies_0;
 
18849
        if (ndr_flags & NDR_SCALARS) {
 
18850
                NDR_CHECK(ndr_pull_array_size(ndr, &r->notifies));
 
18851
                NDR_CHECK(ndr_pull_align(ndr, 5));
 
18852
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->version));
 
18853
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->flags));
 
18854
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->count));
 
18855
                NDR_PULL_ALLOC_N(ndr, r->notifies, ndr_get_array_size(ndr, &r->notifies));
 
18856
                _mem_save_notifies_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
18857
                NDR_PULL_SET_MEM_CTX(ndr, r->notifies, 0);
 
18858
                for (cntr_notifies_0 = 0; cntr_notifies_0 < r->count; cntr_notifies_0++) {
 
18859
                        NDR_CHECK(ndr_pull_spoolss_Notify(ndr, NDR_SCALARS, &r->notifies[cntr_notifies_0]));
 
18860
                }
 
18861
                NDR_PULL_SET_MEM_CTX(ndr, _mem_save_notifies_0, 0);
 
18862
                if (r->notifies) {
 
18863
                        NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->notifies, r->count));
 
18864
                }
 
18865
                NDR_CHECK(ndr_pull_trailer_align(ndr, 5));
 
18866
        }
 
18867
        if (ndr_flags & NDR_BUFFERS) {
 
18868
                _mem_save_notifies_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
18869
                NDR_PULL_SET_MEM_CTX(ndr, r->notifies, 0);
 
18870
                for (cntr_notifies_0 = 0; cntr_notifies_0 < r->count; cntr_notifies_0++) {
 
18871
                        NDR_CHECK(ndr_pull_spoolss_Notify(ndr, NDR_BUFFERS, &r->notifies[cntr_notifies_0]));
 
18872
                }
 
18873
                NDR_PULL_SET_MEM_CTX(ndr, _mem_save_notifies_0, 0);
 
18874
        }
 
18875
        return NDR_ERR_SUCCESS;
 
18876
}
 
18877
 
 
18878
_PUBLIC_ void ndr_print_spoolss_NotifyInfo(struct ndr_print *ndr, const char *name, const struct spoolss_NotifyInfo *r)
 
18879
{
 
18880
        uint32_t cntr_notifies_0;
 
18881
        ndr_print_struct(ndr, name, "spoolss_NotifyInfo");
 
18882
        ndr->depth++;
 
18883
        ndr_print_uint32(ndr, "version", (ndr->flags & LIBNDR_PRINT_SET_VALUES)?2:r->version);
 
18884
        ndr_print_uint32(ndr, "flags", r->flags);
 
18885
        ndr_print_uint32(ndr, "count", r->count);
 
18886
        ndr->print(ndr, "%s: ARRAY(%d)", "notifies", (int)r->count);
 
18887
        ndr->depth++;
 
18888
        for (cntr_notifies_0=0;cntr_notifies_0<r->count;cntr_notifies_0++) {
 
18889
                char *idx_0=NULL;
 
18890
                if (asprintf(&idx_0, "[%d]", cntr_notifies_0) != -1) {
 
18891
                        ndr_print_spoolss_Notify(ndr, "notifies", &r->notifies[cntr_notifies_0]);
 
18892
                        free(idx_0);
 
18893
                }
 
18894
        }
 
18895
        ndr->depth--;
 
18896
        ndr->depth--;
 
18897
}
 
18898
 
 
18899
static enum ndr_err_code ndr_push_spoolss_ReplyPrinterInfo(struct ndr_push *ndr, int ndr_flags, const union spoolss_ReplyPrinterInfo *r)
 
18900
{
 
18901
        if (ndr_flags & NDR_SCALARS) {
 
18902
                int level = ndr_push_get_switch_value(ndr, r);
 
18903
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, level));
 
18904
                NDR_CHECK(ndr_push_union_align(ndr, 5));
 
18905
                switch (level) {
 
18906
                        case 0: {
 
18907
                                NDR_CHECK(ndr_push_unique_ptr(ndr, r->info0));
 
18908
                        break; }
 
18909
 
 
18910
                        default:
 
18911
                                return ndr_push_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u at %s", level, __location__);
 
18912
                }
 
18913
        }
 
18914
        if (ndr_flags & NDR_BUFFERS) {
 
18915
                int level = ndr_push_get_switch_value(ndr, r);
 
18916
                switch (level) {
 
18917
                        case 0:
 
18918
                                if (r->info0) {
 
18919
                                        NDR_CHECK(ndr_push_spoolss_NotifyInfo(ndr, NDR_SCALARS|NDR_BUFFERS, r->info0));
 
18920
                                }
 
18921
                        break;
 
18922
 
 
18923
                        default:
 
18924
                                return ndr_push_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u at %s", level, __location__);
 
18925
                }
 
18926
        }
 
18927
        return NDR_ERR_SUCCESS;
 
18928
}
 
18929
 
 
18930
static enum ndr_err_code ndr_pull_spoolss_ReplyPrinterInfo(struct ndr_pull *ndr, int ndr_flags, union spoolss_ReplyPrinterInfo *r)
 
18931
{
 
18932
        int level;
 
18933
        uint32_t _level;
 
18934
        TALLOC_CTX *_mem_save_info0_0;
 
18935
        level = ndr_pull_get_switch_value(ndr, r);
 
18936
        if (ndr_flags & NDR_SCALARS) {
 
18937
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &_level));
 
18938
                if (_level != level) {
 
18939
                        return ndr_pull_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u for r at %s", _level, __location__);
 
18940
                }
 
18941
                NDR_CHECK(ndr_pull_union_align(ndr, 5));
 
18942
                switch (level) {
 
18943
                        case 0: {
 
18944
                                uint32_t _ptr_info0;
 
18945
                                NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_info0));
 
18946
                                if (_ptr_info0) {
 
18947
                                        NDR_PULL_ALLOC(ndr, r->info0);
 
18948
                                } else {
 
18949
                                        r->info0 = NULL;
 
18950
                                }
 
18951
                        break; }
 
18952
 
 
18953
                        default:
 
18954
                                return ndr_pull_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u at %s", level, __location__);
 
18955
                }
 
18956
        }
 
18957
        if (ndr_flags & NDR_BUFFERS) {
 
18958
                switch (level) {
 
18959
                        case 0:
 
18960
                                if (r->info0) {
 
18961
                                        _mem_save_info0_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
18962
                                        NDR_PULL_SET_MEM_CTX(ndr, r->info0, 0);
 
18963
                                        NDR_CHECK(ndr_pull_spoolss_NotifyInfo(ndr, NDR_SCALARS|NDR_BUFFERS, r->info0));
 
18964
                                        NDR_PULL_SET_MEM_CTX(ndr, _mem_save_info0_0, 0);
 
18965
                                }
 
18966
                        break;
 
18967
 
 
18968
                        default:
 
18969
                                return ndr_pull_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u at %s", level, __location__);
 
18970
                }
 
18971
        }
 
18972
        return NDR_ERR_SUCCESS;
 
18973
}
 
18974
 
 
18975
_PUBLIC_ void ndr_print_spoolss_ReplyPrinterInfo(struct ndr_print *ndr, const char *name, const union spoolss_ReplyPrinterInfo *r)
 
18976
{
 
18977
        int level;
 
18978
        level = ndr_print_get_switch_value(ndr, r);
 
18979
        ndr_print_union(ndr, name, level, "spoolss_ReplyPrinterInfo");
 
18980
        switch (level) {
 
18981
                case 0:
 
18982
                        ndr_print_ptr(ndr, "info0", r->info0);
 
18983
                        ndr->depth++;
 
18984
                        if (r->info0) {
 
18985
                                ndr_print_spoolss_NotifyInfo(ndr, "info0", r->info0);
 
18986
                        }
 
18987
                        ndr->depth--;
 
18988
                break;
 
18989
 
 
18990
                default:
 
18991
                        ndr_print_bad_level(ndr, name, level);
 
18992
        }
 
18993
}
 
18994
 
 
18995
static enum ndr_err_code ndr_push_spoolss_PrinterNotifyFlags(struct ndr_push *ndr, int ndr_flags, uint32_t r)
 
18996
{
 
18997
        NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r));
 
18998
        return NDR_ERR_SUCCESS;
 
18999
}
 
19000
 
 
19001
static enum ndr_err_code ndr_pull_spoolss_PrinterNotifyFlags(struct ndr_pull *ndr, int ndr_flags, uint32_t *r)
 
19002
{
 
19003
        uint32_t v;
 
19004
        NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &v));
 
19005
        *r = v;
 
19006
        return NDR_ERR_SUCCESS;
 
19007
}
 
19008
 
 
19009
_PUBLIC_ void ndr_print_spoolss_PrinterNotifyFlags(struct ndr_print *ndr, const char *name, uint32_t r)
 
19010
{
 
19011
        ndr_print_uint32(ndr, name, r);
 
19012
        ndr->depth++;
 
19013
        ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "PRINTER_NOTIFY_INFO_DISCARDED", PRINTER_NOTIFY_INFO_DISCARDED, r);
 
19014
        ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "PRINTER_NOTIFY_INFO_DISCARDNOTED", PRINTER_NOTIFY_INFO_DISCARDNOTED, r);
 
19015
        ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "PRINTER_NOTIFY_INFO_COLOR_MISMATCH", PRINTER_NOTIFY_INFO_COLOR_MISMATCH, r);
 
19016
        ndr->depth--;
 
19017
}
 
19018
 
 
19019
static enum ndr_err_code ndr_push_spoolss_UserLevel1(struct ndr_push *ndr, int ndr_flags, const struct spoolss_UserLevel1 *r)
 
19020
{
 
19021
        if (ndr_flags & NDR_SCALARS) {
 
19022
                NDR_CHECK(ndr_push_align(ndr, 5));
 
19023
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->size));
 
19024
                NDR_CHECK(ndr_push_unique_ptr(ndr, r->client));
 
19025
                NDR_CHECK(ndr_push_unique_ptr(ndr, r->user));
 
19026
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->build));
 
19027
                NDR_CHECK(ndr_push_spoolss_MajorVersion(ndr, NDR_SCALARS, r->major));
 
19028
                NDR_CHECK(ndr_push_spoolss_MinorVersion(ndr, NDR_SCALARS, r->minor));
 
19029
                NDR_CHECK(ndr_push_spoolss_ProcessorArchitecture(ndr, NDR_SCALARS, r->processor));
 
19030
                NDR_CHECK(ndr_push_trailer_align(ndr, 5));
 
19031
        }
 
19032
        if (ndr_flags & NDR_BUFFERS) {
 
19033
                if (r->client) {
 
19034
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->client, CH_UTF16)));
 
19035
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0));
 
19036
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->client, CH_UTF16)));
 
19037
                        NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->client, ndr_charset_length(r->client, CH_UTF16), sizeof(uint16_t), CH_UTF16));
 
19038
                }
 
19039
                if (r->user) {
 
19040
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->user, CH_UTF16)));
 
19041
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0));
 
19042
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->user, CH_UTF16)));
 
19043
                        NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->user, ndr_charset_length(r->user, CH_UTF16), sizeof(uint16_t), CH_UTF16));
 
19044
                }
 
19045
        }
 
19046
        return NDR_ERR_SUCCESS;
 
19047
}
 
19048
 
 
19049
static enum ndr_err_code ndr_pull_spoolss_UserLevel1(struct ndr_pull *ndr, int ndr_flags, struct spoolss_UserLevel1 *r)
 
19050
{
 
19051
        uint32_t _ptr_client;
 
19052
        TALLOC_CTX *_mem_save_client_0;
 
19053
        uint32_t _ptr_user;
 
19054
        TALLOC_CTX *_mem_save_user_0;
 
19055
        if (ndr_flags & NDR_SCALARS) {
 
19056
                NDR_CHECK(ndr_pull_align(ndr, 5));
 
19057
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->size));
 
19058
                NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_client));
 
19059
                if (_ptr_client) {
 
19060
                        NDR_PULL_ALLOC(ndr, r->client);
 
19061
                } else {
 
19062
                        r->client = NULL;
 
19063
                }
 
19064
                NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_user));
 
19065
                if (_ptr_user) {
 
19066
                        NDR_PULL_ALLOC(ndr, r->user);
 
19067
                } else {
 
19068
                        r->user = NULL;
 
19069
                }
 
19070
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->build));
 
19071
                NDR_CHECK(ndr_pull_spoolss_MajorVersion(ndr, NDR_SCALARS, &r->major));
 
19072
                NDR_CHECK(ndr_pull_spoolss_MinorVersion(ndr, NDR_SCALARS, &r->minor));
 
19073
                NDR_CHECK(ndr_pull_spoolss_ProcessorArchitecture(ndr, NDR_SCALARS, &r->processor));
 
19074
                NDR_CHECK(ndr_pull_trailer_align(ndr, 5));
 
19075
        }
 
19076
        if (ndr_flags & NDR_BUFFERS) {
 
19077
                if (r->client) {
 
19078
                        _mem_save_client_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
19079
                        NDR_PULL_SET_MEM_CTX(ndr, r->client, 0);
 
19080
                        NDR_CHECK(ndr_pull_array_size(ndr, &r->client));
 
19081
                        NDR_CHECK(ndr_pull_array_length(ndr, &r->client));
 
19082
                        if (ndr_get_array_length(ndr, &r->client) > ndr_get_array_size(ndr, &r->client)) {
 
19083
                                return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->client), ndr_get_array_length(ndr, &r->client));
 
19084
                        }
 
19085
                        NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->client), sizeof(uint16_t)));
 
19086
                        NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->client, ndr_get_array_length(ndr, &r->client), sizeof(uint16_t), CH_UTF16));
 
19087
                        NDR_PULL_SET_MEM_CTX(ndr, _mem_save_client_0, 0);
 
19088
                }
 
19089
                if (r->user) {
 
19090
                        _mem_save_user_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
19091
                        NDR_PULL_SET_MEM_CTX(ndr, r->user, 0);
 
19092
                        NDR_CHECK(ndr_pull_array_size(ndr, &r->user));
 
19093
                        NDR_CHECK(ndr_pull_array_length(ndr, &r->user));
 
19094
                        if (ndr_get_array_length(ndr, &r->user) > ndr_get_array_size(ndr, &r->user)) {
 
19095
                                return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->user), ndr_get_array_length(ndr, &r->user));
 
19096
                        }
 
19097
                        NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->user), sizeof(uint16_t)));
 
19098
                        NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->user, ndr_get_array_length(ndr, &r->user), sizeof(uint16_t), CH_UTF16));
 
19099
                        NDR_PULL_SET_MEM_CTX(ndr, _mem_save_user_0, 0);
 
19100
                }
 
19101
        }
 
19102
        return NDR_ERR_SUCCESS;
 
19103
}
 
19104
 
 
19105
_PUBLIC_ void ndr_print_spoolss_UserLevel1(struct ndr_print *ndr, const char *name, const struct spoolss_UserLevel1 *r)
 
19106
{
 
19107
        ndr_print_struct(ndr, name, "spoolss_UserLevel1");
 
19108
        ndr->depth++;
 
19109
        ndr_print_uint32(ndr, "size", r->size);
 
19110
        ndr_print_ptr(ndr, "client", r->client);
 
19111
        ndr->depth++;
 
19112
        if (r->client) {
 
19113
                ndr_print_string(ndr, "client", r->client);
 
19114
        }
 
19115
        ndr->depth--;
 
19116
        ndr_print_ptr(ndr, "user", r->user);
 
19117
        ndr->depth++;
 
19118
        if (r->user) {
 
19119
                ndr_print_string(ndr, "user", r->user);
 
19120
        }
 
19121
        ndr->depth--;
 
19122
        ndr_print_uint32(ndr, "build", r->build);
 
19123
        ndr_print_spoolss_MajorVersion(ndr, "major", r->major);
 
19124
        ndr_print_spoolss_MinorVersion(ndr, "minor", r->minor);
 
19125
        ndr_print_spoolss_ProcessorArchitecture(ndr, "processor", r->processor);
 
19126
        ndr->depth--;
 
19127
}
 
19128
 
 
19129
static enum ndr_err_code ndr_push_spoolss_UserLevel2(struct ndr_push *ndr, int ndr_flags, const struct spoolss_UserLevel2 *r)
 
19130
{
 
19131
        if (ndr_flags & NDR_SCALARS) {
 
19132
                NDR_CHECK(ndr_push_align(ndr, 4));
 
19133
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->not_used));
 
19134
                NDR_CHECK(ndr_push_trailer_align(ndr, 4));
 
19135
        }
 
19136
        if (ndr_flags & NDR_BUFFERS) {
 
19137
        }
 
19138
        return NDR_ERR_SUCCESS;
 
19139
}
 
19140
 
 
19141
static enum ndr_err_code ndr_pull_spoolss_UserLevel2(struct ndr_pull *ndr, int ndr_flags, struct spoolss_UserLevel2 *r)
 
19142
{
 
19143
        if (ndr_flags & NDR_SCALARS) {
 
19144
                NDR_CHECK(ndr_pull_align(ndr, 4));
 
19145
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->not_used));
 
19146
                NDR_CHECK(ndr_pull_trailer_align(ndr, 4));
 
19147
        }
 
19148
        if (ndr_flags & NDR_BUFFERS) {
 
19149
        }
 
19150
        return NDR_ERR_SUCCESS;
 
19151
}
 
19152
 
 
19153
_PUBLIC_ void ndr_print_spoolss_UserLevel2(struct ndr_print *ndr, const char *name, const struct spoolss_UserLevel2 *r)
 
19154
{
 
19155
        ndr_print_struct(ndr, name, "spoolss_UserLevel2");
 
19156
        ndr->depth++;
 
19157
        ndr_print_uint32(ndr, "not_used", r->not_used);
 
19158
        ndr->depth--;
 
19159
}
 
19160
 
 
19161
static enum ndr_err_code ndr_push_spoolss_UserLevel3(struct ndr_push *ndr, int ndr_flags, const struct spoolss_UserLevel3 *r)
 
19162
{
 
19163
        if (ndr_flags & NDR_SCALARS) {
 
19164
                NDR_CHECK(ndr_push_align(ndr, 5));
 
19165
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->size));
 
19166
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->flags));
 
19167
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->size2));
 
19168
                NDR_CHECK(ndr_push_unique_ptr(ndr, r->client));
 
19169
                NDR_CHECK(ndr_push_unique_ptr(ndr, r->user));
 
19170
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->build));
 
19171
                NDR_CHECK(ndr_push_spoolss_MajorVersion(ndr, NDR_SCALARS, r->major));
 
19172
                NDR_CHECK(ndr_push_spoolss_MinorVersion(ndr, NDR_SCALARS, r->minor));
 
19173
                NDR_CHECK(ndr_push_spoolss_ProcessorArchitecture(ndr, NDR_SCALARS, r->processor));
 
19174
                NDR_CHECK(ndr_push_udlong(ndr, NDR_SCALARS, r->reserved));
 
19175
                NDR_CHECK(ndr_push_trailer_align(ndr, 5));
 
19176
        }
 
19177
        if (ndr_flags & NDR_BUFFERS) {
 
19178
                if (r->client) {
 
19179
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->client, CH_UTF16)));
 
19180
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0));
 
19181
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->client, CH_UTF16)));
 
19182
                        NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->client, ndr_charset_length(r->client, CH_UTF16), sizeof(uint16_t), CH_UTF16));
 
19183
                }
 
19184
                if (r->user) {
 
19185
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->user, CH_UTF16)));
 
19186
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0));
 
19187
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->user, CH_UTF16)));
 
19188
                        NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->user, ndr_charset_length(r->user, CH_UTF16), sizeof(uint16_t), CH_UTF16));
 
19189
                }
 
19190
        }
 
19191
        return NDR_ERR_SUCCESS;
 
19192
}
 
19193
 
 
19194
static enum ndr_err_code ndr_pull_spoolss_UserLevel3(struct ndr_pull *ndr, int ndr_flags, struct spoolss_UserLevel3 *r)
 
19195
{
 
19196
        uint32_t _ptr_client;
 
19197
        TALLOC_CTX *_mem_save_client_0;
 
19198
        uint32_t _ptr_user;
 
19199
        TALLOC_CTX *_mem_save_user_0;
 
19200
        if (ndr_flags & NDR_SCALARS) {
 
19201
                NDR_CHECK(ndr_pull_align(ndr, 5));
 
19202
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->size));
 
19203
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->flags));
 
19204
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->size2));
 
19205
                NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_client));
 
19206
                if (_ptr_client) {
 
19207
                        NDR_PULL_ALLOC(ndr, r->client);
 
19208
                } else {
 
19209
                        r->client = NULL;
 
19210
                }
 
19211
                NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_user));
 
19212
                if (_ptr_user) {
 
19213
                        NDR_PULL_ALLOC(ndr, r->user);
 
19214
                } else {
 
19215
                        r->user = NULL;
 
19216
                }
 
19217
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->build));
 
19218
                NDR_CHECK(ndr_pull_spoolss_MajorVersion(ndr, NDR_SCALARS, &r->major));
 
19219
                NDR_CHECK(ndr_pull_spoolss_MinorVersion(ndr, NDR_SCALARS, &r->minor));
 
19220
                NDR_CHECK(ndr_pull_spoolss_ProcessorArchitecture(ndr, NDR_SCALARS, &r->processor));
 
19221
                NDR_CHECK(ndr_pull_udlong(ndr, NDR_SCALARS, &r->reserved));
 
19222
                NDR_CHECK(ndr_pull_trailer_align(ndr, 5));
 
19223
        }
 
19224
        if (ndr_flags & NDR_BUFFERS) {
 
19225
                if (r->client) {
 
19226
                        _mem_save_client_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
19227
                        NDR_PULL_SET_MEM_CTX(ndr, r->client, 0);
 
19228
                        NDR_CHECK(ndr_pull_array_size(ndr, &r->client));
 
19229
                        NDR_CHECK(ndr_pull_array_length(ndr, &r->client));
 
19230
                        if (ndr_get_array_length(ndr, &r->client) > ndr_get_array_size(ndr, &r->client)) {
 
19231
                                return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->client), ndr_get_array_length(ndr, &r->client));
 
19232
                        }
 
19233
                        NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->client), sizeof(uint16_t)));
 
19234
                        NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->client, ndr_get_array_length(ndr, &r->client), sizeof(uint16_t), CH_UTF16));
 
19235
                        NDR_PULL_SET_MEM_CTX(ndr, _mem_save_client_0, 0);
 
19236
                }
 
19237
                if (r->user) {
 
19238
                        _mem_save_user_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
19239
                        NDR_PULL_SET_MEM_CTX(ndr, r->user, 0);
 
19240
                        NDR_CHECK(ndr_pull_array_size(ndr, &r->user));
 
19241
                        NDR_CHECK(ndr_pull_array_length(ndr, &r->user));
 
19242
                        if (ndr_get_array_length(ndr, &r->user) > ndr_get_array_size(ndr, &r->user)) {
 
19243
                                return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->user), ndr_get_array_length(ndr, &r->user));
 
19244
                        }
 
19245
                        NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->user), sizeof(uint16_t)));
 
19246
                        NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->user, ndr_get_array_length(ndr, &r->user), sizeof(uint16_t), CH_UTF16));
 
19247
                        NDR_PULL_SET_MEM_CTX(ndr, _mem_save_user_0, 0);
 
19248
                }
 
19249
        }
 
19250
        return NDR_ERR_SUCCESS;
 
19251
}
 
19252
 
 
19253
_PUBLIC_ void ndr_print_spoolss_UserLevel3(struct ndr_print *ndr, const char *name, const struct spoolss_UserLevel3 *r)
 
19254
{
 
19255
        ndr_print_struct(ndr, name, "spoolss_UserLevel3");
 
19256
        ndr->depth++;
 
19257
        ndr_print_uint32(ndr, "size", r->size);
 
19258
        ndr_print_uint32(ndr, "flags", r->flags);
 
19259
        ndr_print_uint32(ndr, "size2", r->size2);
 
19260
        ndr_print_ptr(ndr, "client", r->client);
 
19261
        ndr->depth++;
 
19262
        if (r->client) {
 
19263
                ndr_print_string(ndr, "client", r->client);
 
19264
        }
 
19265
        ndr->depth--;
 
19266
        ndr_print_ptr(ndr, "user", r->user);
 
19267
        ndr->depth++;
 
19268
        if (r->user) {
 
19269
                ndr_print_string(ndr, "user", r->user);
 
19270
        }
 
19271
        ndr->depth--;
 
19272
        ndr_print_uint32(ndr, "build", r->build);
 
19273
        ndr_print_spoolss_MajorVersion(ndr, "major", r->major);
 
19274
        ndr_print_spoolss_MinorVersion(ndr, "minor", r->minor);
 
19275
        ndr_print_spoolss_ProcessorArchitecture(ndr, "processor", r->processor);
 
19276
        ndr_print_udlong(ndr, "reserved", r->reserved);
 
19277
        ndr->depth--;
 
19278
}
 
19279
 
 
19280
static enum ndr_err_code ndr_push_spoolss_UserLevel(struct ndr_push *ndr, int ndr_flags, const union spoolss_UserLevel *r)
 
19281
{
 
19282
        if (ndr_flags & NDR_SCALARS) {
 
19283
                int level = ndr_push_get_switch_value(ndr, r);
 
19284
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, level));
 
19285
                NDR_CHECK(ndr_push_union_align(ndr, 5));
 
19286
                switch (level) {
 
19287
                        case 1: {
 
19288
                                NDR_CHECK(ndr_push_unique_ptr(ndr, r->level1));
 
19289
                        break; }
 
19290
 
 
19291
                        case 2: {
 
19292
                                NDR_CHECK(ndr_push_unique_ptr(ndr, r->level2));
 
19293
                        break; }
 
19294
 
 
19295
                        case 3: {
 
19296
                                NDR_CHECK(ndr_push_unique_ptr(ndr, r->level3));
 
19297
                        break; }
 
19298
 
 
19299
                        default:
 
19300
                                return ndr_push_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u at %s", level, __location__);
 
19301
                }
 
19302
        }
 
19303
        if (ndr_flags & NDR_BUFFERS) {
 
19304
                int level = ndr_push_get_switch_value(ndr, r);
 
19305
                switch (level) {
 
19306
                        case 1:
 
19307
                                if (r->level1) {
 
19308
                                        NDR_CHECK(ndr_push_spoolss_UserLevel1(ndr, NDR_SCALARS|NDR_BUFFERS, r->level1));
 
19309
                                }
 
19310
                        break;
 
19311
 
 
19312
                        case 2:
 
19313
                                if (r->level2) {
 
19314
                                        NDR_CHECK(ndr_push_spoolss_UserLevel2(ndr, NDR_SCALARS, r->level2));
 
19315
                                }
 
19316
                        break;
 
19317
 
 
19318
                        case 3:
 
19319
                                if (r->level3) {
 
19320
                                        NDR_CHECK(ndr_push_spoolss_UserLevel3(ndr, NDR_SCALARS|NDR_BUFFERS, r->level3));
 
19321
                                }
 
19322
                        break;
 
19323
 
 
19324
                        default:
 
19325
                                return ndr_push_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u at %s", level, __location__);
 
19326
                }
 
19327
        }
 
19328
        return NDR_ERR_SUCCESS;
 
19329
}
 
19330
 
 
19331
static enum ndr_err_code ndr_pull_spoolss_UserLevel(struct ndr_pull *ndr, int ndr_flags, union spoolss_UserLevel *r)
 
19332
{
 
19333
        int level;
 
19334
        uint32_t _level;
 
19335
        TALLOC_CTX *_mem_save_level1_0;
 
19336
        TALLOC_CTX *_mem_save_level2_0;
 
19337
        TALLOC_CTX *_mem_save_level3_0;
 
19338
        level = ndr_pull_get_switch_value(ndr, r);
 
19339
        if (ndr_flags & NDR_SCALARS) {
 
19340
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &_level));
 
19341
                if (_level != level) {
 
19342
                        return ndr_pull_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u for r at %s", _level, __location__);
 
19343
                }
 
19344
                NDR_CHECK(ndr_pull_union_align(ndr, 5));
 
19345
                switch (level) {
 
19346
                        case 1: {
 
19347
                                uint32_t _ptr_level1;
 
19348
                                NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_level1));
 
19349
                                if (_ptr_level1) {
 
19350
                                        NDR_PULL_ALLOC(ndr, r->level1);
 
19351
                                } else {
 
19352
                                        r->level1 = NULL;
 
19353
                                }
 
19354
                        break; }
 
19355
 
 
19356
                        case 2: {
 
19357
                                uint32_t _ptr_level2;
 
19358
                                NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_level2));
 
19359
                                if (_ptr_level2) {
 
19360
                                        NDR_PULL_ALLOC(ndr, r->level2);
 
19361
                                } else {
 
19362
                                        r->level2 = NULL;
 
19363
                                }
 
19364
                        break; }
 
19365
 
 
19366
                        case 3: {
 
19367
                                uint32_t _ptr_level3;
 
19368
                                NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_level3));
 
19369
                                if (_ptr_level3) {
 
19370
                                        NDR_PULL_ALLOC(ndr, r->level3);
 
19371
                                } else {
 
19372
                                        r->level3 = NULL;
 
19373
                                }
 
19374
                        break; }
 
19375
 
 
19376
                        default:
 
19377
                                return ndr_pull_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u at %s", level, __location__);
 
19378
                }
 
19379
        }
 
19380
        if (ndr_flags & NDR_BUFFERS) {
 
19381
                switch (level) {
 
19382
                        case 1:
 
19383
                                if (r->level1) {
 
19384
                                        _mem_save_level1_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
19385
                                        NDR_PULL_SET_MEM_CTX(ndr, r->level1, 0);
 
19386
                                        NDR_CHECK(ndr_pull_spoolss_UserLevel1(ndr, NDR_SCALARS|NDR_BUFFERS, r->level1));
 
19387
                                        NDR_PULL_SET_MEM_CTX(ndr, _mem_save_level1_0, 0);
 
19388
                                }
 
19389
                        break;
 
19390
 
 
19391
                        case 2:
 
19392
                                if (r->level2) {
 
19393
                                        _mem_save_level2_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
19394
                                        NDR_PULL_SET_MEM_CTX(ndr, r->level2, 0);
 
19395
                                        NDR_CHECK(ndr_pull_spoolss_UserLevel2(ndr, NDR_SCALARS, r->level2));
 
19396
                                        NDR_PULL_SET_MEM_CTX(ndr, _mem_save_level2_0, 0);
 
19397
                                }
 
19398
                        break;
 
19399
 
 
19400
                        case 3:
 
19401
                                if (r->level3) {
 
19402
                                        _mem_save_level3_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
19403
                                        NDR_PULL_SET_MEM_CTX(ndr, r->level3, 0);
 
19404
                                        NDR_CHECK(ndr_pull_spoolss_UserLevel3(ndr, NDR_SCALARS|NDR_BUFFERS, r->level3));
 
19405
                                        NDR_PULL_SET_MEM_CTX(ndr, _mem_save_level3_0, 0);
 
19406
                                }
 
19407
                        break;
 
19408
 
 
19409
                        default:
 
19410
                                return ndr_pull_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u at %s", level, __location__);
 
19411
                }
 
19412
        }
 
19413
        return NDR_ERR_SUCCESS;
 
19414
}
 
19415
 
 
19416
_PUBLIC_ void ndr_print_spoolss_UserLevel(struct ndr_print *ndr, const char *name, const union spoolss_UserLevel *r)
 
19417
{
 
19418
        int level;
 
19419
        level = ndr_print_get_switch_value(ndr, r);
 
19420
        ndr_print_union(ndr, name, level, "spoolss_UserLevel");
 
19421
        switch (level) {
 
19422
                case 1:
 
19423
                        ndr_print_ptr(ndr, "level1", r->level1);
 
19424
                        ndr->depth++;
 
19425
                        if (r->level1) {
 
19426
                                ndr_print_spoolss_UserLevel1(ndr, "level1", r->level1);
 
19427
                        }
 
19428
                        ndr->depth--;
 
19429
                break;
 
19430
 
 
19431
                case 2:
 
19432
                        ndr_print_ptr(ndr, "level2", r->level2);
 
19433
                        ndr->depth++;
 
19434
                        if (r->level2) {
 
19435
                                ndr_print_spoolss_UserLevel2(ndr, "level2", r->level2);
 
19436
                        }
 
19437
                        ndr->depth--;
 
19438
                break;
 
19439
 
 
19440
                case 3:
 
19441
                        ndr_print_ptr(ndr, "level3", r->level3);
 
19442
                        ndr->depth++;
 
19443
                        if (r->level3) {
 
19444
                                ndr_print_spoolss_UserLevel3(ndr, "level3", r->level3);
 
19445
                        }
 
19446
                        ndr->depth--;
 
19447
                break;
 
19448
 
 
19449
                default:
 
19450
                        ndr_print_bad_level(ndr, name, level);
 
19451
        }
 
19452
}
 
19453
 
 
19454
static enum ndr_err_code ndr_push_spoolss_UserLevelCtr(struct ndr_push *ndr, int ndr_flags, const struct spoolss_UserLevelCtr *r)
 
19455
{
 
19456
        if (ndr_flags & NDR_SCALARS) {
 
19457
                NDR_CHECK(ndr_push_align(ndr, 5));
 
19458
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->level));
 
19459
                NDR_CHECK(ndr_push_set_switch_value(ndr, &r->user_info, r->level));
 
19460
                NDR_CHECK(ndr_push_spoolss_UserLevel(ndr, NDR_SCALARS, &r->user_info));
 
19461
                NDR_CHECK(ndr_push_trailer_align(ndr, 5));
 
19462
        }
 
19463
        if (ndr_flags & NDR_BUFFERS) {
 
19464
                NDR_CHECK(ndr_push_spoolss_UserLevel(ndr, NDR_BUFFERS, &r->user_info));
 
19465
        }
 
19466
        return NDR_ERR_SUCCESS;
 
19467
}
 
19468
 
 
19469
static enum ndr_err_code ndr_pull_spoolss_UserLevelCtr(struct ndr_pull *ndr, int ndr_flags, struct spoolss_UserLevelCtr *r)
 
19470
{
 
19471
        if (ndr_flags & NDR_SCALARS) {
 
19472
                NDR_CHECK(ndr_pull_align(ndr, 5));
 
19473
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->level));
 
19474
                NDR_CHECK(ndr_pull_set_switch_value(ndr, &r->user_info, r->level));
 
19475
                NDR_CHECK(ndr_pull_spoolss_UserLevel(ndr, NDR_SCALARS, &r->user_info));
 
19476
                NDR_CHECK(ndr_pull_trailer_align(ndr, 5));
 
19477
        }
 
19478
        if (ndr_flags & NDR_BUFFERS) {
 
19479
                NDR_CHECK(ndr_pull_spoolss_UserLevel(ndr, NDR_BUFFERS, &r->user_info));
 
19480
        }
 
19481
        return NDR_ERR_SUCCESS;
 
19482
}
 
19483
 
 
19484
_PUBLIC_ void ndr_print_spoolss_UserLevelCtr(struct ndr_print *ndr, const char *name, const struct spoolss_UserLevelCtr *r)
 
19485
{
 
19486
        ndr_print_struct(ndr, name, "spoolss_UserLevelCtr");
 
19487
        ndr->depth++;
 
19488
        ndr_print_uint32(ndr, "level", r->level);
 
19489
        ndr_print_set_switch_value(ndr, &r->user_info, r->level);
 
19490
        ndr_print_spoolss_UserLevel(ndr, "user_info", &r->user_info);
 
19491
        ndr->depth--;
 
19492
}
 
19493
 
 
19494
static enum ndr_err_code ndr_push_spoolss_AccessRights(struct ndr_push *ndr, int ndr_flags, uint32_t r)
 
19495
{
 
19496
        NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r));
 
19497
        return NDR_ERR_SUCCESS;
 
19498
}
 
19499
 
 
19500
static enum ndr_err_code ndr_pull_spoolss_AccessRights(struct ndr_pull *ndr, int ndr_flags, uint32_t *r)
 
19501
{
 
19502
        uint32_t v;
 
19503
        NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &v));
 
19504
        *r = v;
 
19505
        return NDR_ERR_SUCCESS;
 
19506
}
 
19507
 
 
19508
_PUBLIC_ void ndr_print_spoolss_AccessRights(struct ndr_print *ndr, const char *name, uint32_t r)
 
19509
{
 
19510
        ndr_print_uint32(ndr, name, r);
 
19511
        ndr->depth++;
 
19512
        ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SERVER_ACCESS_ADMINISTER", SERVER_ACCESS_ADMINISTER, r);
 
19513
        ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SERVER_ACCESS_ENUMERATE", SERVER_ACCESS_ENUMERATE, r);
 
19514
        ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "PRINTER_ACCESS_ADMINISTER", PRINTER_ACCESS_ADMINISTER, r);
 
19515
        ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "PRINTER_ACCESS_USE", PRINTER_ACCESS_USE, r);
 
19516
        ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "JOB_ACCESS_ADMINISTER", JOB_ACCESS_ADMINISTER, r);
 
19517
        ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "JOB_ACCESS_READ", JOB_ACCESS_READ, r);
 
19518
        ndr->depth--;
 
19519
}
 
19520
 
 
19521
_PUBLIC_ enum ndr_err_code ndr_push_spoolss_PrinterEnumValues(struct ndr_push *ndr, int ndr_flags, const struct spoolss_PrinterEnumValues *r)
 
19522
{
 
19523
        uint32_t _save_relative_base_offset = ndr_push_get_relative_base_offset(ndr);
 
19524
        if (ndr_flags & NDR_SCALARS) {
 
19525
                NDR_CHECK(ndr_push_align(ndr, 5));
 
19526
                NDR_CHECK(ndr_push_setup_relative_base_offset1(ndr, r, ndr->offset));
 
19527
                {
 
19528
                        uint32_t _flags_save_string = ndr->flags;
 
19529
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
19530
                        NDR_CHECK(ndr_push_relative_ptr1(ndr, r->value_name));
 
19531
                        ndr->flags = _flags_save_string;
 
19532
                }
 
19533
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 2 * strlen_m_term(r->value_name)));
 
19534
                NDR_CHECK(ndr_push_winreg_Type(ndr, NDR_SCALARS, r->type));
 
19535
                {
 
19536
                        uint32_t _flags_save_DATA_BLOB = ndr->flags;
 
19537
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_REMAINING);
 
19538
                        NDR_CHECK(ndr_push_relative_ptr1(ndr, r->data));
 
19539
                        ndr->flags = _flags_save_DATA_BLOB;
 
19540
                }
 
19541
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->data->length));
 
19542
                NDR_CHECK(ndr_push_trailer_align(ndr, 5));
 
19543
        }
 
19544
        if (ndr_flags & NDR_BUFFERS) {
 
19545
                NDR_CHECK(ndr_push_setup_relative_base_offset2(ndr, r));
 
19546
                {
 
19547
                        uint32_t _flags_save_string = ndr->flags;
 
19548
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
19549
                        if (r->value_name) {
 
19550
                                NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->value_name));
 
19551
                                NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->value_name));
 
19552
                                NDR_CHECK(ndr_push_relative_ptr2_end(ndr, r->value_name));
 
19553
                        }
 
19554
                        ndr->flags = _flags_save_string;
 
19555
                }
 
19556
                {
 
19557
                        uint32_t _flags_save_DATA_BLOB = ndr->flags;
 
19558
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_REMAINING);
 
19559
                        if (r->data) {
 
19560
                                NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->data));
 
19561
                                {
 
19562
                                        struct ndr_push *_ndr_data;
 
19563
                                        NDR_CHECK(ndr_push_subcontext_start(ndr, &_ndr_data, 0, r->data->length));
 
19564
                                        NDR_CHECK(ndr_push_DATA_BLOB(_ndr_data, NDR_SCALARS, *r->data));
 
19565
                                        NDR_CHECK(ndr_push_subcontext_end(ndr, _ndr_data, 0, r->data->length));
 
19566
                                }
 
19567
                                NDR_CHECK(ndr_push_relative_ptr2_end(ndr, r->data));
 
19568
                        }
 
19569
                        ndr->flags = _flags_save_DATA_BLOB;
 
19570
                }
 
19571
        }
 
19572
        ndr_push_restore_relative_base_offset(ndr, _save_relative_base_offset);
 
19573
        return NDR_ERR_SUCCESS;
 
19574
}
 
19575
 
 
19576
_PUBLIC_ enum ndr_err_code ndr_pull_spoolss_PrinterEnumValues(struct ndr_pull *ndr, int ndr_flags, struct spoolss_PrinterEnumValues *r)
 
19577
{
 
19578
        uint32_t _save_relative_base_offset = ndr_pull_get_relative_base_offset(ndr);
 
19579
        uint32_t _ptr_value_name;
 
19580
        TALLOC_CTX *_mem_save_value_name_0;
 
19581
        uint32_t _ptr_data;
 
19582
        TALLOC_CTX *_mem_save_data_0;
 
19583
        if (ndr_flags & NDR_SCALARS) {
 
19584
                NDR_CHECK(ndr_pull_align(ndr, 5));
 
19585
                NDR_CHECK(ndr_pull_setup_relative_base_offset1(ndr, r, ndr->offset));
 
19586
                {
 
19587
                        uint32_t _flags_save_string = ndr->flags;
 
19588
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
19589
                        NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_value_name));
 
19590
                        if (_ptr_value_name) {
 
19591
                                NDR_PULL_ALLOC(ndr, r->value_name);
 
19592
                                NDR_CHECK(ndr_pull_relative_ptr1(ndr, r->value_name, _ptr_value_name));
 
19593
                        } else {
 
19594
                                r->value_name = NULL;
 
19595
                        }
 
19596
                        ndr->flags = _flags_save_string;
 
19597
                }
 
19598
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->value_name_len));
 
19599
                NDR_CHECK(ndr_pull_winreg_Type(ndr, NDR_SCALARS, &r->type));
 
19600
                {
 
19601
                        uint32_t _flags_save_DATA_BLOB = ndr->flags;
 
19602
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_REMAINING);
 
19603
                        NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_data));
 
19604
                        if (_ptr_data) {
 
19605
                                NDR_PULL_ALLOC(ndr, r->data);
 
19606
                                NDR_CHECK(ndr_pull_relative_ptr1(ndr, r->data, _ptr_data));
 
19607
                        } else {
 
19608
                                r->data = NULL;
 
19609
                        }
 
19610
                        ndr->flags = _flags_save_DATA_BLOB;
 
19611
                }
 
19612
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->data_length));
 
19613
                NDR_CHECK(ndr_pull_trailer_align(ndr, 5));
 
19614
        }
 
19615
        if (ndr_flags & NDR_BUFFERS) {
 
19616
                NDR_CHECK(ndr_pull_setup_relative_base_offset2(ndr, r));
 
19617
                {
 
19618
                        uint32_t _flags_save_string = ndr->flags;
 
19619
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
19620
                        if (r->value_name) {
 
19621
                                uint32_t _relative_save_offset;
 
19622
                                _relative_save_offset = ndr->offset;
 
19623
                                NDR_CHECK(ndr_pull_relative_ptr2(ndr, r->value_name));
 
19624
                                _mem_save_value_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
19625
                                NDR_PULL_SET_MEM_CTX(ndr, r->value_name, 0);
 
19626
                                NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->value_name));
 
19627
                                NDR_PULL_SET_MEM_CTX(ndr, _mem_save_value_name_0, 0);
 
19628
                                ndr->offset = _relative_save_offset;
 
19629
                        }
 
19630
                        ndr->flags = _flags_save_string;
 
19631
                }
 
19632
                {
 
19633
                        uint32_t _flags_save_DATA_BLOB = ndr->flags;
 
19634
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_REMAINING);
 
19635
                        if (r->data) {
 
19636
                                uint32_t _relative_save_offset;
 
19637
                                _relative_save_offset = ndr->offset;
 
19638
                                NDR_CHECK(ndr_pull_relative_ptr2(ndr, r->data));
 
19639
                                _mem_save_data_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
19640
                                NDR_PULL_SET_MEM_CTX(ndr, r->data, 0);
 
19641
                                {
 
19642
                                        struct ndr_pull *_ndr_data;
 
19643
                                        NDR_CHECK(ndr_pull_subcontext_start(ndr, &_ndr_data, 0, r->data_length));
 
19644
                                        NDR_CHECK(ndr_pull_DATA_BLOB(_ndr_data, NDR_SCALARS, r->data));
 
19645
                                        NDR_CHECK(ndr_pull_subcontext_end(ndr, _ndr_data, 0, r->data_length));
 
19646
                                }
 
19647
                                NDR_PULL_SET_MEM_CTX(ndr, _mem_save_data_0, 0);
 
19648
                                ndr->offset = _relative_save_offset;
 
19649
                        }
 
19650
                        ndr->flags = _flags_save_DATA_BLOB;
 
19651
                }
 
19652
        }
 
19653
        ndr_pull_restore_relative_base_offset(ndr, _save_relative_base_offset);
 
19654
        return NDR_ERR_SUCCESS;
 
19655
}
 
19656
 
 
19657
_PUBLIC_ void ndr_print_spoolss_PrinterEnumValues(struct ndr_print *ndr, const char *name, const struct spoolss_PrinterEnumValues *r)
 
19658
{
 
19659
        ndr_print_struct(ndr, name, "spoolss_PrinterEnumValues");
 
19660
        ndr->depth++;
 
19661
        ndr_print_ptr(ndr, "value_name", r->value_name);
 
19662
        ndr->depth++;
 
19663
        if (r->value_name) {
 
19664
                ndr_print_string(ndr, "value_name", r->value_name);
 
19665
        }
 
19666
        ndr->depth--;
 
19667
        ndr_print_uint32(ndr, "value_name_len", (ndr->flags & LIBNDR_PRINT_SET_VALUES)?2 * strlen_m_term(r->value_name):r->value_name_len);
 
19668
        ndr_print_winreg_Type(ndr, "type", r->type);
 
19669
        ndr_print_ptr(ndr, "data", r->data);
 
19670
        ndr->depth++;
 
19671
        if (r->data) {
 
19672
                ndr_print_DATA_BLOB(ndr, "data", *r->data);
 
19673
        }
 
19674
        ndr->depth--;
 
19675
        ndr_print_uint32(ndr, "data_length", (ndr->flags & LIBNDR_PRINT_SET_VALUES)?r->data->length:r->data_length);
 
19676
        ndr->depth--;
 
19677
}
 
19678
 
 
19679
_PUBLIC_ size_t ndr_size_spoolss_PrinterEnumValues(const struct spoolss_PrinterEnumValues *r, struct smb_iconv_convenience *ic, int flags)
 
19680
{
 
19681
        return ndr_size_struct(r, flags, (ndr_push_flags_fn_t)ndr_push_spoolss_PrinterEnumValues, ic);
 
19682
}
 
19683
 
 
19684
static enum ndr_err_code ndr_push_spoolss_KeyNames(struct ndr_push *ndr, int ndr_flags, const union spoolss_KeyNames *r)
 
19685
{
 
19686
        if (ndr_flags & NDR_SCALARS) {
 
19687
                int level = ndr_push_get_switch_value(ndr, r);
 
19688
                NDR_CHECK(ndr_push_union_align(ndr, 4));
 
19689
                switch (level) {
 
19690
                        case 0: {
 
19691
                        break; }
 
19692
 
 
19693
                        case 1: {
 
19694
                        break; }
 
19695
 
 
19696
                        default: {
 
19697
                                {
 
19698
                                        uint32_t _flags_save_string_array = ndr->flags;
 
19699
                                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
19700
                                        NDR_CHECK(ndr_push_string_array(ndr, NDR_SCALARS, r->string_array));
 
19701
                                        ndr->flags = _flags_save_string_array;
 
19702
                                }
 
19703
                        break; }
 
19704
 
 
19705
                }
 
19706
        }
 
19707
        if (ndr_flags & NDR_BUFFERS) {
 
19708
                int level = ndr_push_get_switch_value(ndr, r);
 
19709
                switch (level) {
 
19710
                        case 0:
 
19711
                        break;
 
19712
 
 
19713
                        case 1:
 
19714
                        break;
 
19715
 
 
19716
                        default:
 
19717
                        break;
 
19718
 
 
19719
                }
 
19720
        }
 
19721
        return NDR_ERR_SUCCESS;
 
19722
}
 
19723
 
 
19724
static enum ndr_err_code ndr_pull_spoolss_KeyNames(struct ndr_pull *ndr, int ndr_flags, union spoolss_KeyNames *r)
 
19725
{
 
19726
        int level;
 
19727
        level = ndr_pull_get_switch_value(ndr, r);
 
19728
        if (ndr_flags & NDR_SCALARS) {
 
19729
                NDR_CHECK(ndr_pull_union_align(ndr, 4));
 
19730
                switch (level) {
 
19731
                        case 0: {
 
19732
                        break; }
 
19733
 
 
19734
                        case 1: {
 
19735
                        break; }
 
19736
 
 
19737
                        default: {
 
19738
                                {
 
19739
                                        uint32_t _flags_save_string_array = ndr->flags;
 
19740
                                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
19741
                                        NDR_CHECK(ndr_pull_string_array(ndr, NDR_SCALARS, &r->string_array));
 
19742
                                        ndr->flags = _flags_save_string_array;
 
19743
                                }
 
19744
                        break; }
 
19745
 
 
19746
                }
 
19747
        }
 
19748
        if (ndr_flags & NDR_BUFFERS) {
 
19749
                switch (level) {
 
19750
                        case 0:
 
19751
                        break;
 
19752
 
 
19753
                        case 1:
 
19754
                        break;
 
19755
 
 
19756
                        default:
 
19757
                        break;
 
19758
 
 
19759
                }
 
19760
        }
 
19761
        return NDR_ERR_SUCCESS;
 
19762
}
 
19763
 
 
19764
_PUBLIC_ void ndr_print_spoolss_KeyNames(struct ndr_print *ndr, const char *name, const union spoolss_KeyNames *r)
 
19765
{
 
19766
        int level;
 
19767
        level = ndr_print_get_switch_value(ndr, r);
 
19768
        ndr_print_union(ndr, name, level, "spoolss_KeyNames");
 
19769
        switch (level) {
 
19770
                case 0:
 
19771
                break;
 
19772
 
 
19773
                case 1:
 
19774
                break;
 
19775
 
 
19776
                default:
 
19777
                        ndr_print_string_array(ndr, "string_array", r->string_array);
 
19778
                break;
 
19779
 
 
19780
        }
 
19781
}
 
19782
 
 
19783
_PUBLIC_ enum ndr_err_code ndr_push_spoolss_DeleteDriverFlags(struct ndr_push *ndr, int ndr_flags, uint32_t r)
 
19784
{
 
19785
        NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r));
 
19786
        return NDR_ERR_SUCCESS;
 
19787
}
 
19788
 
 
19789
_PUBLIC_ enum ndr_err_code ndr_pull_spoolss_DeleteDriverFlags(struct ndr_pull *ndr, int ndr_flags, uint32_t *r)
 
19790
{
 
19791
        uint32_t v;
 
19792
        NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &v));
 
19793
        *r = v;
 
19794
        return NDR_ERR_SUCCESS;
 
19795
}
 
19796
 
 
19797
_PUBLIC_ void ndr_print_spoolss_DeleteDriverFlags(struct ndr_print *ndr, const char *name, uint32_t r)
 
19798
{
 
19799
        ndr_print_uint32(ndr, name, r);
 
19800
        ndr->depth++;
 
19801
        ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "DPD_DELETE_UNUSED_FILES", DPD_DELETE_UNUSED_FILES, r);
 
19802
        ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "DPD_DELETE_SPECIFIC_VERSION", DPD_DELETE_SPECIFIC_VERSION, r);
 
19803
        ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "DPD_DELETE_ALL_FILES", DPD_DELETE_ALL_FILES, r);
 
19804
        ndr->depth--;
 
19805
}
 
19806
 
 
19807
static enum ndr_err_code ndr_push_spoolss_PortProtocol(struct ndr_push *ndr, int ndr_flags, enum spoolss_PortProtocol r)
 
19808
{
 
19809
        NDR_CHECK(ndr_push_enum_uint32(ndr, NDR_SCALARS, r));
 
19810
        return NDR_ERR_SUCCESS;
 
19811
}
 
19812
 
 
19813
static enum ndr_err_code ndr_pull_spoolss_PortProtocol(struct ndr_pull *ndr, int ndr_flags, enum spoolss_PortProtocol *r)
 
19814
{
 
19815
        uint32_t v;
 
19816
        NDR_CHECK(ndr_pull_enum_uint32(ndr, NDR_SCALARS, &v));
 
19817
        *r = v;
 
19818
        return NDR_ERR_SUCCESS;
 
19819
}
 
19820
 
 
19821
_PUBLIC_ void ndr_print_spoolss_PortProtocol(struct ndr_print *ndr, const char *name, enum spoolss_PortProtocol r)
 
19822
{
 
19823
        const char *val = NULL;
 
19824
 
 
19825
        switch (r) {
 
19826
                case PROTOCOL_RAWTCP_TYPE: val = "PROTOCOL_RAWTCP_TYPE"; break;
 
19827
                case PROTOCOL_LPR_TYPE: val = "PROTOCOL_LPR_TYPE"; break;
 
19828
        }
 
19829
        ndr_print_enum(ndr, name, "ENUM", val, r);
 
19830
}
 
19831
 
 
19832
_PUBLIC_ enum ndr_err_code ndr_push_spoolss_PortData1(struct ndr_push *ndr, int ndr_flags, const struct spoolss_PortData1 *r)
 
19833
{
 
19834
        if (ndr_flags & NDR_SCALARS) {
 
19835
                NDR_CHECK(ndr_push_align(ndr, 4));
 
19836
                NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->portname, 64, sizeof(uint16_t), CH_UTF16));
 
19837
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0x00000001));
 
19838
                NDR_CHECK(ndr_push_spoolss_PortProtocol(ndr, NDR_SCALARS, r->protocol));
 
19839
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, sizeof(r)));
 
19840
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->reserved));
 
19841
                NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->hostaddress, 49, sizeof(uint16_t), CH_UTF16));
 
19842
                NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->snmpcommunity, 33, sizeof(uint16_t), CH_UTF16));
 
19843
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->dblspool));
 
19844
                NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->queue, 33, sizeof(uint16_t), CH_UTF16));
 
19845
                NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->ip_address, 16, sizeof(uint16_t), CH_UTF16));
 
19846
                NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->hardware_address, 13, sizeof(uint16_t), CH_UTF16));
 
19847
                NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->device_type, 257, sizeof(uint16_t), CH_UTF16));
 
19848
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->port_number));
 
19849
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->snmp_enabled));
 
19850
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->snmp_dev_index));
 
19851
                NDR_CHECK(ndr_push_trailer_align(ndr, 4));
 
19852
        }
 
19853
        if (ndr_flags & NDR_BUFFERS) {
 
19854
        }
 
19855
        return NDR_ERR_SUCCESS;
 
19856
}
 
19857
 
 
19858
_PUBLIC_ enum ndr_err_code ndr_pull_spoolss_PortData1(struct ndr_pull *ndr, int ndr_flags, struct spoolss_PortData1 *r)
 
19859
{
 
19860
        if (ndr_flags & NDR_SCALARS) {
 
19861
                NDR_CHECK(ndr_pull_align(ndr, 4));
 
19862
                NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->portname, 64, sizeof(uint16_t), CH_UTF16));
 
19863
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->version));
 
19864
                NDR_CHECK(ndr_pull_spoolss_PortProtocol(ndr, NDR_SCALARS, &r->protocol));
 
19865
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->size));
 
19866
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->reserved));
 
19867
                NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->hostaddress, 49, sizeof(uint16_t), CH_UTF16));
 
19868
                NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->snmpcommunity, 33, sizeof(uint16_t), CH_UTF16));
 
19869
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->dblspool));
 
19870
                NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->queue, 33, sizeof(uint16_t), CH_UTF16));
 
19871
                NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->ip_address, 16, sizeof(uint16_t), CH_UTF16));
 
19872
                NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->hardware_address, 13, sizeof(uint16_t), CH_UTF16));
 
19873
                NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->device_type, 257, sizeof(uint16_t), CH_UTF16));
 
19874
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->port_number));
 
19875
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->snmp_enabled));
 
19876
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->snmp_dev_index));
 
19877
                NDR_CHECK(ndr_pull_trailer_align(ndr, 4));
 
19878
        }
 
19879
        if (ndr_flags & NDR_BUFFERS) {
 
19880
        }
 
19881
        return NDR_ERR_SUCCESS;
 
19882
}
 
19883
 
 
19884
_PUBLIC_ void ndr_print_spoolss_PortData1(struct ndr_print *ndr, const char *name, const struct spoolss_PortData1 *r)
 
19885
{
 
19886
        ndr_print_struct(ndr, name, "spoolss_PortData1");
 
19887
        ndr->depth++;
 
19888
        ndr_print_string(ndr, "portname", r->portname);
 
19889
        ndr_print_uint32(ndr, "version", (ndr->flags & LIBNDR_PRINT_SET_VALUES)?0x00000001:r->version);
 
19890
        ndr_print_spoolss_PortProtocol(ndr, "protocol", r->protocol);
 
19891
        ndr_print_uint32(ndr, "size", (ndr->flags & LIBNDR_PRINT_SET_VALUES)?sizeof(r):r->size);
 
19892
        ndr_print_uint32(ndr, "reserved", r->reserved);
 
19893
        ndr_print_string(ndr, "hostaddress", r->hostaddress);
 
19894
        ndr_print_string(ndr, "snmpcommunity", r->snmpcommunity);
 
19895
        ndr_print_uint32(ndr, "dblspool", r->dblspool);
 
19896
        ndr_print_string(ndr, "queue", r->queue);
 
19897
        ndr_print_string(ndr, "ip_address", r->ip_address);
 
19898
        ndr_print_string(ndr, "hardware_address", r->hardware_address);
 
19899
        ndr_print_string(ndr, "device_type", r->device_type);
 
19900
        ndr_print_uint32(ndr, "port_number", r->port_number);
 
19901
        ndr_print_uint32(ndr, "snmp_enabled", r->snmp_enabled);
 
19902
        ndr_print_uint32(ndr, "snmp_dev_index", r->snmp_dev_index);
 
19903
        ndr->depth--;
 
19904
}
 
19905
 
 
19906
_PUBLIC_ enum ndr_err_code ndr_push_spoolss_PortData2(struct ndr_push *ndr, int ndr_flags, const struct spoolss_PortData2 *r)
 
19907
{
 
19908
        if (ndr_flags & NDR_SCALARS) {
 
19909
                NDR_CHECK(ndr_push_align(ndr, 4));
 
19910
                NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->portname, 64, sizeof(uint16_t), CH_UTF16));
 
19911
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0x00000002));
 
19912
                NDR_CHECK(ndr_push_spoolss_PortProtocol(ndr, NDR_SCALARS, r->protocol));
 
19913
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, sizeof(r)));
 
19914
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->reserved));
 
19915
                NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->hostaddress, 128, sizeof(uint16_t), CH_UTF16));
 
19916
                NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->snmpcommunity, 33, sizeof(uint16_t), CH_UTF16));
 
19917
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->dblspool));
 
19918
                NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->queue, 33, sizeof(uint16_t), CH_UTF16));
 
19919
                NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->device_type, 257, sizeof(uint16_t), CH_UTF16));
 
19920
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->port_number));
 
19921
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->snmp_enabled));
 
19922
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->snmp_dev_index));
 
19923
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->port_monitor_mib_index));
 
19924
                NDR_CHECK(ndr_push_trailer_align(ndr, 4));
 
19925
        }
 
19926
        if (ndr_flags & NDR_BUFFERS) {
 
19927
        }
 
19928
        return NDR_ERR_SUCCESS;
 
19929
}
 
19930
 
 
19931
_PUBLIC_ enum ndr_err_code ndr_pull_spoolss_PortData2(struct ndr_pull *ndr, int ndr_flags, struct spoolss_PortData2 *r)
 
19932
{
 
19933
        if (ndr_flags & NDR_SCALARS) {
 
19934
                NDR_CHECK(ndr_pull_align(ndr, 4));
 
19935
                NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->portname, 64, sizeof(uint16_t), CH_UTF16));
 
19936
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->version));
 
19937
                NDR_CHECK(ndr_pull_spoolss_PortProtocol(ndr, NDR_SCALARS, &r->protocol));
 
19938
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->size));
 
19939
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->reserved));
 
19940
                NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->hostaddress, 128, sizeof(uint16_t), CH_UTF16));
 
19941
                NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->snmpcommunity, 33, sizeof(uint16_t), CH_UTF16));
 
19942
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->dblspool));
 
19943
                NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->queue, 33, sizeof(uint16_t), CH_UTF16));
 
19944
                NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->device_type, 257, sizeof(uint16_t), CH_UTF16));
 
19945
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->port_number));
 
19946
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->snmp_enabled));
 
19947
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->snmp_dev_index));
 
19948
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->port_monitor_mib_index));
 
19949
                NDR_CHECK(ndr_pull_trailer_align(ndr, 4));
 
19950
        }
 
19951
        if (ndr_flags & NDR_BUFFERS) {
 
19952
        }
 
19953
        return NDR_ERR_SUCCESS;
 
19954
}
 
19955
 
 
19956
_PUBLIC_ void ndr_print_spoolss_PortData2(struct ndr_print *ndr, const char *name, const struct spoolss_PortData2 *r)
 
19957
{
 
19958
        ndr_print_struct(ndr, name, "spoolss_PortData2");
 
19959
        ndr->depth++;
 
19960
        ndr_print_string(ndr, "portname", r->portname);
 
19961
        ndr_print_uint32(ndr, "version", (ndr->flags & LIBNDR_PRINT_SET_VALUES)?0x00000002:r->version);
 
19962
        ndr_print_spoolss_PortProtocol(ndr, "protocol", r->protocol);
 
19963
        ndr_print_uint32(ndr, "size", (ndr->flags & LIBNDR_PRINT_SET_VALUES)?sizeof(r):r->size);
 
19964
        ndr_print_uint32(ndr, "reserved", r->reserved);
 
19965
        ndr_print_string(ndr, "hostaddress", r->hostaddress);
 
19966
        ndr_print_string(ndr, "snmpcommunity", r->snmpcommunity);
 
19967
        ndr_print_uint32(ndr, "dblspool", r->dblspool);
 
19968
        ndr_print_string(ndr, "queue", r->queue);
 
19969
        ndr_print_string(ndr, "device_type", r->device_type);
 
19970
        ndr_print_uint32(ndr, "port_number", r->port_number);
 
19971
        ndr_print_uint32(ndr, "snmp_enabled", r->snmp_enabled);
 
19972
        ndr_print_uint32(ndr, "snmp_dev_index", r->snmp_dev_index);
 
19973
        ndr_print_uint32(ndr, "port_monitor_mib_index", r->port_monitor_mib_index);
 
19974
        ndr->depth--;
 
19975
}
 
19976
 
 
19977
_PUBLIC_ enum ndr_err_code ndr_push_spoolss_MonitorUi(struct ndr_push *ndr, int ndr_flags, const struct spoolss_MonitorUi *r)
 
19978
{
 
19979
        if (ndr_flags & NDR_SCALARS) {
 
19980
                NDR_CHECK(ndr_push_align(ndr, 4));
 
19981
                {
 
19982
                        uint32_t _flags_save_string = ndr->flags;
 
19983
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
19984
                        NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->dll_name));
 
19985
                        ndr->flags = _flags_save_string;
 
19986
                }
 
19987
                NDR_CHECK(ndr_push_trailer_align(ndr, 4));
 
19988
        }
 
19989
        if (ndr_flags & NDR_BUFFERS) {
 
19990
        }
 
19991
        return NDR_ERR_SUCCESS;
 
19992
}
 
19993
 
 
19994
_PUBLIC_ enum ndr_err_code ndr_pull_spoolss_MonitorUi(struct ndr_pull *ndr, int ndr_flags, struct spoolss_MonitorUi *r)
 
19995
{
 
19996
        if (ndr_flags & NDR_SCALARS) {
 
19997
                NDR_CHECK(ndr_pull_align(ndr, 4));
 
19998
                {
 
19999
                        uint32_t _flags_save_string = ndr->flags;
 
20000
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 
20001
                        NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->dll_name));
 
20002
                        ndr->flags = _flags_save_string;
 
20003
                }
 
20004
                NDR_CHECK(ndr_pull_trailer_align(ndr, 4));
 
20005
        }
 
20006
        if (ndr_flags & NDR_BUFFERS) {
 
20007
        }
 
20008
        return NDR_ERR_SUCCESS;
 
20009
}
 
20010
 
 
20011
_PUBLIC_ void ndr_print_spoolss_MonitorUi(struct ndr_print *ndr, const char *name, const struct spoolss_MonitorUi *r)
 
20012
{
 
20013
        ndr_print_struct(ndr, name, "spoolss_MonitorUi");
 
20014
        ndr->depth++;
 
20015
        ndr_print_string(ndr, "dll_name", r->dll_name);
 
20016
        ndr->depth--;
 
20017
}
 
20018
 
 
20019
static enum ndr_err_code ndr_push_spoolss_AddPrinterDriverExFlags(struct ndr_push *ndr, int ndr_flags, uint32_t r)
 
20020
{
 
20021
        NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r));
 
20022
        return NDR_ERR_SUCCESS;
 
20023
}
 
20024
 
 
20025
static enum ndr_err_code ndr_pull_spoolss_AddPrinterDriverExFlags(struct ndr_pull *ndr, int ndr_flags, uint32_t *r)
 
20026
{
 
20027
        uint32_t v;
 
20028
        NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &v));
 
20029
        *r = v;
 
20030
        return NDR_ERR_SUCCESS;
 
20031
}
 
20032
 
 
20033
_PUBLIC_ void ndr_print_spoolss_AddPrinterDriverExFlags(struct ndr_print *ndr, const char *name, uint32_t r)
 
20034
{
 
20035
        ndr_print_uint32(ndr, name, r);
 
20036
        ndr->depth++;
 
20037
        ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "APD_STRICT_UPGRADE", APD_STRICT_UPGRADE, r);
 
20038
        ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "APD_STRICT_DOWNGRADE", APD_STRICT_DOWNGRADE, r);
 
20039
        ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "APD_COPY_ALL_FILES", APD_COPY_ALL_FILES, r);
 
20040
        ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "APD_COPY_NEW_FILES", APD_COPY_NEW_FILES, r);
 
20041
        ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "APD_COPY_FROM_DIRECTORY", APD_COPY_FROM_DIRECTORY, r);
 
20042
        ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "APD_DONT_COPY_FILES_TO_CLUSTER", APD_DONT_COPY_FILES_TO_CLUSTER, r);
 
20043
        ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "APD_COPY_TO_ALL_SPOOLERS", APD_COPY_TO_ALL_SPOOLERS, r);
 
20044
        ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "APD_RETURN_BLOCKING_STATUS_CODE", APD_RETURN_BLOCKING_STATUS_CODE, r);
 
20045
        ndr->depth--;
 
20046
}
 
20047
 
 
20048
static enum ndr_err_code ndr_push_spoolss_CorePrinterDriver(struct ndr_push *ndr, int ndr_flags, const struct spoolss_CorePrinterDriver *r)
 
20049
{
 
20050
        if (ndr_flags & NDR_SCALARS) {
 
20051
                NDR_CHECK(ndr_push_align(ndr, 8));
 
20052
                NDR_CHECK(ndr_push_GUID(ndr, NDR_SCALARS, &r->core_driver_guid));
 
20053
                NDR_CHECK(ndr_push_NTTIME(ndr, NDR_SCALARS, r->driver_date));
 
20054
                NDR_CHECK(ndr_push_hyper(ndr, NDR_SCALARS, r->driver_version));
 
20055
                NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->formname, 520, sizeof(uint8_t), CH_UTF8));
 
20056
                NDR_CHECK(ndr_push_trailer_align(ndr, 8));
 
20057
        }
 
20058
        if (ndr_flags & NDR_BUFFERS) {
 
20059
        }
 
20060
        return NDR_ERR_SUCCESS;
 
20061
}
 
20062
 
 
20063
static enum ndr_err_code ndr_pull_spoolss_CorePrinterDriver(struct ndr_pull *ndr, int ndr_flags, struct spoolss_CorePrinterDriver *r)
 
20064
{
 
20065
        if (ndr_flags & NDR_SCALARS) {
 
20066
                NDR_CHECK(ndr_pull_align(ndr, 8));
 
20067
                NDR_CHECK(ndr_pull_GUID(ndr, NDR_SCALARS, &r->core_driver_guid));
 
20068
                NDR_CHECK(ndr_pull_NTTIME(ndr, NDR_SCALARS, &r->driver_date));
 
20069
                NDR_CHECK(ndr_pull_hyper(ndr, NDR_SCALARS, &r->driver_version));
 
20070
                NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->formname, 520, sizeof(uint8_t), CH_UTF8));
 
20071
                NDR_CHECK(ndr_pull_trailer_align(ndr, 8));
 
20072
        }
 
20073
        if (ndr_flags & NDR_BUFFERS) {
 
20074
        }
 
20075
        return NDR_ERR_SUCCESS;
 
20076
}
 
20077
 
 
20078
_PUBLIC_ void ndr_print_spoolss_CorePrinterDriver(struct ndr_print *ndr, const char *name, const struct spoolss_CorePrinterDriver *r)
 
20079
{
 
20080
        ndr_print_struct(ndr, name, "spoolss_CorePrinterDriver");
 
20081
        ndr->depth++;
 
20082
        ndr_print_GUID(ndr, "core_driver_guid", &r->core_driver_guid);
 
20083
        ndr_print_NTTIME(ndr, "driver_date", r->driver_date);
 
20084
        ndr_print_hyper(ndr, "driver_version", r->driver_version);
 
20085
        ndr_print_string(ndr, "formname", r->formname);
 
20086
        ndr->depth--;
 
20087
}
 
20088
 
 
20089
_PUBLIC_ enum ndr_err_code ndr_push__spoolss_EnumPrinters(struct ndr_push *ndr, int flags, const struct _spoolss_EnumPrinters *r)
 
20090
{
 
20091
        if (flags & NDR_IN) {
 
20092
                NDR_CHECK(ndr_push_spoolss_EnumPrinterFlags(ndr, NDR_SCALARS, r->in.flags));
 
20093
                NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.server));
 
20094
                if (r->in.server) {
 
20095
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.server, CH_UTF16)));
 
20096
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0));
 
20097
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.server, CH_UTF16)));
 
20098
                        NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.server, ndr_charset_length(r->in.server, CH_UTF16), sizeof(uint16_t), CH_UTF16));
 
20099
                }
 
20100
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.level));
 
20101
                NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.buffer));
 
20102
                if (r->in.buffer) {
 
20103
                        NDR_CHECK(ndr_push_DATA_BLOB(ndr, NDR_SCALARS, *r->in.buffer));
 
20104
                }
 
20105
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.offered));
 
20106
        }
 
20107
        if (flags & NDR_OUT) {
 
20108
                NDR_CHECK(ndr_push_unique_ptr(ndr, r->out.info));
 
20109
                if (r->out.info) {
 
20110
                        NDR_CHECK(ndr_push_DATA_BLOB(ndr, NDR_SCALARS, *r->out.info));
 
20111
                }
 
20112
                if (r->out.needed == NULL) {
 
20113
                        return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
 
20114
                }
 
20115
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.needed));
 
20116
                if (r->out.count == NULL) {
 
20117
                        return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
 
20118
                }
 
20119
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.count));
 
20120
                NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
 
20121
        }
 
20122
        return NDR_ERR_SUCCESS;
 
20123
}
 
20124
 
 
20125
_PUBLIC_ enum ndr_err_code ndr_pull__spoolss_EnumPrinters(struct ndr_pull *ndr, int flags, struct _spoolss_EnumPrinters *r)
 
20126
{
 
20127
        uint32_t _ptr_server;
 
20128
        uint32_t _ptr_buffer;
 
20129
        uint32_t _ptr_info;
 
20130
        TALLOC_CTX *_mem_save_server_0;
 
20131
        TALLOC_CTX *_mem_save_buffer_0;
 
20132
        TALLOC_CTX *_mem_save_info_0;
 
20133
        TALLOC_CTX *_mem_save_needed_0;
 
20134
        TALLOC_CTX *_mem_save_count_0;
 
20135
        if (flags & NDR_IN) {
 
20136
                ZERO_STRUCT(r->out);
 
20137
 
 
20138
                NDR_CHECK(ndr_pull_spoolss_EnumPrinterFlags(ndr, NDR_SCALARS, &r->in.flags));
 
20139
                NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_server));
 
20140
                if (_ptr_server) {
 
20141
                        NDR_PULL_ALLOC(ndr, r->in.server);
 
20142
                } else {
 
20143
                        r->in.server = NULL;
 
20144
                }
 
20145
                if (r->in.server) {
 
20146
                        _mem_save_server_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
20147
                        NDR_PULL_SET_MEM_CTX(ndr, r->in.server, 0);
 
20148
                        NDR_CHECK(ndr_pull_array_size(ndr, &r->in.server));
 
20149
                        NDR_CHECK(ndr_pull_array_length(ndr, &r->in.server));
 
20150
                        if (ndr_get_array_length(ndr, &r->in.server) > ndr_get_array_size(ndr, &r->in.server)) {
 
20151
                                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.server), ndr_get_array_length(ndr, &r->in.server));
 
20152
                        }
 
20153
                        NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.server), sizeof(uint16_t)));
 
20154
                        NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.server, ndr_get_array_length(ndr, &r->in.server), sizeof(uint16_t), CH_UTF16));
 
20155
                        NDR_PULL_SET_MEM_CTX(ndr, _mem_save_server_0, 0);
 
20156
                }
 
20157
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.level));
 
20158
                NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_buffer));
 
20159
                if (_ptr_buffer) {
 
20160
                        NDR_PULL_ALLOC(ndr, r->in.buffer);
 
20161
                } else {
 
20162
                        r->in.buffer = NULL;
 
20163
                }
 
20164
                if (r->in.buffer) {
 
20165
                        _mem_save_buffer_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
20166
                        NDR_PULL_SET_MEM_CTX(ndr, r->in.buffer, 0);
 
20167
                        NDR_CHECK(ndr_pull_DATA_BLOB(ndr, NDR_SCALARS, r->in.buffer));
 
20168
                        NDR_PULL_SET_MEM_CTX(ndr, _mem_save_buffer_0, 0);
 
20169
                }
 
20170
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.offered));
 
20171
                NDR_PULL_ALLOC(ndr, r->out.needed);
 
20172
                ZERO_STRUCTP(r->out.needed);
 
20173
                NDR_PULL_ALLOC(ndr, r->out.count);
 
20174
                ZERO_STRUCTP(r->out.count);
 
20175
        }
 
20176
        if (flags & NDR_OUT) {
 
20177
                NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_info));
 
20178
                if (_ptr_info) {
 
20179
                        NDR_PULL_ALLOC(ndr, r->out.info);
 
20180
                } else {
 
20181
                        r->out.info = NULL;
 
20182
                }
 
20183
                if (r->out.info) {
 
20184
                        _mem_save_info_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
20185
                        NDR_PULL_SET_MEM_CTX(ndr, r->out.info, 0);
 
20186
                        NDR_CHECK(ndr_pull_DATA_BLOB(ndr, NDR_SCALARS, r->out.info));
 
20187
                        NDR_PULL_SET_MEM_CTX(ndr, _mem_save_info_0, 0);
 
20188
                }
 
20189
                if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
 
20190
                        NDR_PULL_ALLOC(ndr, r->out.needed);
 
20191
                }
 
20192
                _mem_save_needed_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
20193
                NDR_PULL_SET_MEM_CTX(ndr, r->out.needed, LIBNDR_FLAG_REF_ALLOC);
 
20194
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.needed));
 
20195
                NDR_PULL_SET_MEM_CTX(ndr, _mem_save_needed_0, LIBNDR_FLAG_REF_ALLOC);
 
20196
                if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
 
20197
                        NDR_PULL_ALLOC(ndr, r->out.count);
 
20198
                }
 
20199
                _mem_save_count_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
20200
                NDR_PULL_SET_MEM_CTX(ndr, r->out.count, LIBNDR_FLAG_REF_ALLOC);
 
20201
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.count));
 
20202
                NDR_PULL_SET_MEM_CTX(ndr, _mem_save_count_0, LIBNDR_FLAG_REF_ALLOC);
 
20203
                NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
 
20204
        }
 
20205
        return NDR_ERR_SUCCESS;
 
20206
}
 
20207
 
 
20208
_PUBLIC_ enum ndr_err_code ndr_push___spoolss_EnumPrinters(struct ndr_push *ndr, int flags, const struct __spoolss_EnumPrinters *r)
 
20209
{
 
20210
        uint32_t cntr_info_0;
 
20211
        if (flags & NDR_IN) {
 
20212
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.level));
 
20213
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.count));
 
20214
        }
 
20215
        if (flags & NDR_OUT) {
 
20216
                for (cntr_info_0 = 0; cntr_info_0 < r->in.count; cntr_info_0++) {
 
20217
                        NDR_CHECK(ndr_push_set_switch_value(ndr, &r->out.info[cntr_info_0], r->in.level));
 
20218
                        NDR_CHECK(ndr_push_spoolss_PrinterInfo(ndr, NDR_SCALARS, &r->out.info[cntr_info_0]));
 
20219
                }
 
20220
                for (cntr_info_0 = 0; cntr_info_0 < r->in.count; cntr_info_0++) {
 
20221
                        NDR_CHECK(ndr_push_spoolss_PrinterInfo(ndr, NDR_BUFFERS, &r->out.info[cntr_info_0]));
 
20222
                }
 
20223
        }
 
20224
        return NDR_ERR_SUCCESS;
 
20225
}
 
20226
 
 
20227
_PUBLIC_ enum ndr_err_code ndr_pull___spoolss_EnumPrinters(struct ndr_pull *ndr, int flags, struct __spoolss_EnumPrinters *r)
 
20228
{
 
20229
        uint32_t cntr_info_0;
 
20230
        TALLOC_CTX *_mem_save_info_0;
 
20231
        if (flags & NDR_IN) {
 
20232
                ZERO_STRUCT(r->out);
 
20233
 
 
20234
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.level));
 
20235
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.count));
 
20236
        }
 
20237
        if (flags & NDR_OUT) {
 
20238
                NDR_PULL_ALLOC_N(ndr, r->out.info, r->in.count);
 
20239
                _mem_save_info_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
20240
                NDR_PULL_SET_MEM_CTX(ndr, r->out.info, 0);
 
20241
                for (cntr_info_0 = 0; cntr_info_0 < r->in.count; cntr_info_0++) {
 
20242
                        NDR_CHECK(ndr_pull_set_switch_value(ndr, &r->out.info[cntr_info_0], r->in.level));
 
20243
                        NDR_CHECK(ndr_pull_spoolss_PrinterInfo(ndr, NDR_SCALARS, &r->out.info[cntr_info_0]));
 
20244
                }
 
20245
                for (cntr_info_0 = 0; cntr_info_0 < r->in.count; cntr_info_0++) {
 
20246
                        NDR_CHECK(ndr_pull_spoolss_PrinterInfo(ndr, NDR_BUFFERS, &r->out.info[cntr_info_0]));
 
20247
                }
 
20248
                NDR_PULL_SET_MEM_CTX(ndr, _mem_save_info_0, 0);
 
20249
        }
 
20250
        return NDR_ERR_SUCCESS;
 
20251
}
 
20252
 
 
20253
_PUBLIC_ void ndr_print_spoolss_EnumPrinters(struct ndr_print *ndr, const char *name, int flags, const struct spoolss_EnumPrinters *r)
 
20254
{
 
20255
        uint32_t cntr_info_2;
 
20256
        ndr_print_struct(ndr, name, "spoolss_EnumPrinters");
 
20257
        ndr->depth++;
 
20258
        if (flags & NDR_SET_VALUES) {
 
20259
                ndr->flags |= LIBNDR_PRINT_SET_VALUES;
 
20260
        }
 
20261
        if (flags & NDR_IN) {
 
20262
                ndr_print_struct(ndr, "in", "spoolss_EnumPrinters");
 
20263
                ndr->depth++;
 
20264
                ndr_print_spoolss_EnumPrinterFlags(ndr, "flags", r->in.flags);
 
20265
                ndr_print_ptr(ndr, "server", r->in.server);
 
20266
                ndr->depth++;
 
20267
                if (r->in.server) {
 
20268
                        ndr_print_string(ndr, "server", r->in.server);
 
20269
                }
 
20270
                ndr->depth--;
 
20271
                ndr_print_uint32(ndr, "level", r->in.level);
 
20272
                ndr_print_ptr(ndr, "buffer", r->in.buffer);
 
20273
                ndr->depth++;
 
20274
                if (r->in.buffer) {
 
20275
                        ndr_print_DATA_BLOB(ndr, "buffer", *r->in.buffer);
 
20276
                }
 
20277
                ndr->depth--;
 
20278
                ndr_print_uint32(ndr, "offered", r->in.offered);
 
20279
                ndr->depth--;
 
20280
        }
 
20281
        if (flags & NDR_OUT) {
 
20282
                ndr_print_struct(ndr, "out", "spoolss_EnumPrinters");
 
20283
                ndr->depth++;
 
20284
                ndr_print_ptr(ndr, "count", r->out.count);
 
20285
                ndr->depth++;
 
20286
                ndr_print_uint32(ndr, "count", *r->out.count);
 
20287
                ndr->depth--;
 
20288
                ndr_print_ptr(ndr, "info", r->out.info);
 
20289
                ndr->depth++;
 
20290
                ndr_print_ptr(ndr, "info", *r->out.info);
 
20291
                ndr->depth++;
 
20292
                if (*r->out.info) {
 
20293
                        ndr->print(ndr, "%s: ARRAY(%d)", "info", (int)*r->out.count);
 
20294
                        ndr->depth++;
 
20295
                        for (cntr_info_2=0;cntr_info_2<*r->out.count;cntr_info_2++) {
 
20296
                                char *idx_2=NULL;
 
20297
                                if (asprintf(&idx_2, "[%d]", cntr_info_2) != -1) {
 
20298
                                        ndr_print_set_switch_value(ndr, &(*r->out.info)[cntr_info_2], r->in.level);
 
20299
                                        ndr_print_spoolss_PrinterInfo(ndr, "info", &(*r->out.info)[cntr_info_2]);
 
20300
                                        free(idx_2);
 
20301
                                }
 
20302
                        }
 
20303
                        ndr->depth--;
 
20304
                }
 
20305
                ndr->depth--;
 
20306
                ndr->depth--;
 
20307
                ndr_print_ptr(ndr, "needed", r->out.needed);
 
20308
                ndr->depth++;
 
20309
                ndr_print_uint32(ndr, "needed", *r->out.needed);
 
20310
                ndr->depth--;
 
20311
                ndr_print_WERROR(ndr, "result", r->out.result);
 
20312
                ndr->depth--;
 
20313
        }
 
20314
        ndr->depth--;
 
20315
}
 
20316
 
 
20317
_PUBLIC_ enum ndr_err_code ndr_push_spoolss_OpenPrinter(struct ndr_push *ndr, int flags, const struct spoolss_OpenPrinter *r)
 
20318
{
 
20319
        if (flags & NDR_IN) {
 
20320
                NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.printername));
 
20321
                if (r->in.printername) {
 
20322
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.printername, CH_UTF16)));
 
20323
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0));
 
20324
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.printername, CH_UTF16)));
 
20325
                        NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.printername, ndr_charset_length(r->in.printername, CH_UTF16), sizeof(uint16_t), CH_UTF16));
 
20326
                }
 
20327
                NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.datatype));
 
20328
                if (r->in.datatype) {
 
20329
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.datatype, CH_UTF16)));
 
20330
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0));
 
20331
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.datatype, CH_UTF16)));
 
20332
                        NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.datatype, ndr_charset_length(r->in.datatype, CH_UTF16), sizeof(uint16_t), CH_UTF16));
 
20333
                }
 
20334
                NDR_CHECK(ndr_push_spoolss_DevmodeContainer(ndr, NDR_SCALARS|NDR_BUFFERS, &r->in.devmode_ctr));
 
20335
                NDR_CHECK(ndr_push_spoolss_AccessRights(ndr, NDR_SCALARS, r->in.access_mask));
 
20336
        }
 
20337
        if (flags & NDR_OUT) {
 
20338
                if (r->out.handle == NULL) {
 
20339
                        return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
 
20340
                }
 
20341
                NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->out.handle));
 
20342
                NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
 
20343
        }
 
20344
        return NDR_ERR_SUCCESS;
 
20345
}
 
20346
 
 
20347
_PUBLIC_ enum ndr_err_code ndr_pull_spoolss_OpenPrinter(struct ndr_pull *ndr, int flags, struct spoolss_OpenPrinter *r)
 
20348
{
 
20349
        uint32_t _ptr_printername;
 
20350
        uint32_t _ptr_datatype;
 
20351
        TALLOC_CTX *_mem_save_printername_0;
 
20352
        TALLOC_CTX *_mem_save_datatype_0;
 
20353
        TALLOC_CTX *_mem_save_handle_0;
 
20354
        if (flags & NDR_IN) {
 
20355
                ZERO_STRUCT(r->out);
 
20356
 
 
20357
                NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_printername));
 
20358
                if (_ptr_printername) {
 
20359
                        NDR_PULL_ALLOC(ndr, r->in.printername);
 
20360
                } else {
 
20361
                        r->in.printername = NULL;
 
20362
                }
 
20363
                if (r->in.printername) {
 
20364
                        _mem_save_printername_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
20365
                        NDR_PULL_SET_MEM_CTX(ndr, r->in.printername, 0);
 
20366
                        NDR_CHECK(ndr_pull_array_size(ndr, &r->in.printername));
 
20367
                        NDR_CHECK(ndr_pull_array_length(ndr, &r->in.printername));
 
20368
                        if (ndr_get_array_length(ndr, &r->in.printername) > ndr_get_array_size(ndr, &r->in.printername)) {
 
20369
                                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.printername), ndr_get_array_length(ndr, &r->in.printername));
 
20370
                        }
 
20371
                        NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.printername), sizeof(uint16_t)));
 
20372
                        NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.printername, ndr_get_array_length(ndr, &r->in.printername), sizeof(uint16_t), CH_UTF16));
 
20373
                        NDR_PULL_SET_MEM_CTX(ndr, _mem_save_printername_0, 0);
 
20374
                }
 
20375
                NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_datatype));
 
20376
                if (_ptr_datatype) {
 
20377
                        NDR_PULL_ALLOC(ndr, r->in.datatype);
 
20378
                } else {
 
20379
                        r->in.datatype = NULL;
 
20380
                }
 
20381
                if (r->in.datatype) {
 
20382
                        _mem_save_datatype_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
20383
                        NDR_PULL_SET_MEM_CTX(ndr, r->in.datatype, 0);
 
20384
                        NDR_CHECK(ndr_pull_array_size(ndr, &r->in.datatype));
 
20385
                        NDR_CHECK(ndr_pull_array_length(ndr, &r->in.datatype));
 
20386
                        if (ndr_get_array_length(ndr, &r->in.datatype) > ndr_get_array_size(ndr, &r->in.datatype)) {
 
20387
                                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.datatype), ndr_get_array_length(ndr, &r->in.datatype));
 
20388
                        }
 
20389
                        NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.datatype), sizeof(uint16_t)));
 
20390
                        NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.datatype, ndr_get_array_length(ndr, &r->in.datatype), sizeof(uint16_t), CH_UTF16));
 
20391
                        NDR_PULL_SET_MEM_CTX(ndr, _mem_save_datatype_0, 0);
 
20392
                }
 
20393
                NDR_CHECK(ndr_pull_spoolss_DevmodeContainer(ndr, NDR_SCALARS|NDR_BUFFERS, &r->in.devmode_ctr));
 
20394
                NDR_CHECK(ndr_pull_spoolss_AccessRights(ndr, NDR_SCALARS, &r->in.access_mask));
 
20395
                NDR_PULL_ALLOC(ndr, r->out.handle);
 
20396
                ZERO_STRUCTP(r->out.handle);
 
20397
        }
 
20398
        if (flags & NDR_OUT) {
 
20399
                if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
 
20400
                        NDR_PULL_ALLOC(ndr, r->out.handle);
 
20401
                }
 
20402
                _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
20403
                NDR_PULL_SET_MEM_CTX(ndr, r->out.handle, LIBNDR_FLAG_REF_ALLOC);
 
20404
                NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->out.handle));
 
20405
                NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
 
20406
                NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
 
20407
        }
 
20408
        return NDR_ERR_SUCCESS;
 
20409
}
 
20410
 
 
20411
_PUBLIC_ void ndr_print_spoolss_OpenPrinter(struct ndr_print *ndr, const char *name, int flags, const struct spoolss_OpenPrinter *r)
 
20412
{
 
20413
        ndr_print_struct(ndr, name, "spoolss_OpenPrinter");
 
20414
        ndr->depth++;
 
20415
        if (flags & NDR_SET_VALUES) {
 
20416
                ndr->flags |= LIBNDR_PRINT_SET_VALUES;
 
20417
        }
 
20418
        if (flags & NDR_IN) {
 
20419
                ndr_print_struct(ndr, "in", "spoolss_OpenPrinter");
 
20420
                ndr->depth++;
 
20421
                ndr_print_ptr(ndr, "printername", r->in.printername);
 
20422
                ndr->depth++;
 
20423
                if (r->in.printername) {
 
20424
                        ndr_print_string(ndr, "printername", r->in.printername);
 
20425
                }
 
20426
                ndr->depth--;
 
20427
                ndr_print_ptr(ndr, "datatype", r->in.datatype);
 
20428
                ndr->depth++;
 
20429
                if (r->in.datatype) {
 
20430
                        ndr_print_string(ndr, "datatype", r->in.datatype);
 
20431
                }
 
20432
                ndr->depth--;
 
20433
                ndr_print_spoolss_DevmodeContainer(ndr, "devmode_ctr", &r->in.devmode_ctr);
 
20434
                ndr_print_spoolss_AccessRights(ndr, "access_mask", r->in.access_mask);
 
20435
                ndr->depth--;
 
20436
        }
 
20437
        if (flags & NDR_OUT) {
 
20438
                ndr_print_struct(ndr, "out", "spoolss_OpenPrinter");
 
20439
                ndr->depth++;
 
20440
                ndr_print_ptr(ndr, "handle", r->out.handle);
 
20441
                ndr->depth++;
 
20442
                ndr_print_policy_handle(ndr, "handle", r->out.handle);
 
20443
                ndr->depth--;
 
20444
                ndr_print_WERROR(ndr, "result", r->out.result);
 
20445
                ndr->depth--;
 
20446
        }
 
20447
        ndr->depth--;
 
20448
}
 
20449
 
 
20450
static enum ndr_err_code ndr_push_spoolss_SetJob(struct ndr_push *ndr, int flags, const struct spoolss_SetJob *r)
 
20451
{
 
20452
        if (flags & NDR_IN) {
 
20453
                if (r->in.handle == NULL) {
 
20454
                        return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
 
20455
                }
 
20456
                NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
 
20457
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.job_id));
 
20458
                NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.ctr));
 
20459
                if (r->in.ctr) {
 
20460
                        NDR_CHECK(ndr_push_spoolss_JobInfoContainer(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.ctr));
 
20461
                }
 
20462
                NDR_CHECK(ndr_push_spoolss_JobControl(ndr, NDR_SCALARS, r->in.command));
 
20463
        }
 
20464
        if (flags & NDR_OUT) {
 
20465
                NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
 
20466
        }
 
20467
        return NDR_ERR_SUCCESS;
 
20468
}
 
20469
 
 
20470
static enum ndr_err_code ndr_pull_spoolss_SetJob(struct ndr_pull *ndr, int flags, struct spoolss_SetJob *r)
 
20471
{
 
20472
        uint32_t _ptr_ctr;
 
20473
        TALLOC_CTX *_mem_save_handle_0;
 
20474
        TALLOC_CTX *_mem_save_ctr_0;
 
20475
        if (flags & NDR_IN) {
 
20476
                if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
 
20477
                        NDR_PULL_ALLOC(ndr, r->in.handle);
 
20478
                }
 
20479
                _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
20480
                NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
 
20481
                NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
 
20482
                NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
 
20483
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.job_id));
 
20484
                NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_ctr));
 
20485
                if (_ptr_ctr) {
 
20486
                        NDR_PULL_ALLOC(ndr, r->in.ctr);
 
20487
                } else {
 
20488
                        r->in.ctr = NULL;
 
20489
                }
 
20490
                if (r->in.ctr) {
 
20491
                        _mem_save_ctr_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
20492
                        NDR_PULL_SET_MEM_CTX(ndr, r->in.ctr, 0);
 
20493
                        NDR_CHECK(ndr_pull_spoolss_JobInfoContainer(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.ctr));
 
20494
                        NDR_PULL_SET_MEM_CTX(ndr, _mem_save_ctr_0, 0);
 
20495
                }
 
20496
                NDR_CHECK(ndr_pull_spoolss_JobControl(ndr, NDR_SCALARS, &r->in.command));
 
20497
        }
 
20498
        if (flags & NDR_OUT) {
 
20499
                NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
 
20500
        }
 
20501
        return NDR_ERR_SUCCESS;
 
20502
}
 
20503
 
 
20504
_PUBLIC_ void ndr_print_spoolss_SetJob(struct ndr_print *ndr, const char *name, int flags, const struct spoolss_SetJob *r)
 
20505
{
 
20506
        ndr_print_struct(ndr, name, "spoolss_SetJob");
 
20507
        ndr->depth++;
 
20508
        if (flags & NDR_SET_VALUES) {
 
20509
                ndr->flags |= LIBNDR_PRINT_SET_VALUES;
 
20510
        }
 
20511
        if (flags & NDR_IN) {
 
20512
                ndr_print_struct(ndr, "in", "spoolss_SetJob");
 
20513
                ndr->depth++;
 
20514
                ndr_print_ptr(ndr, "handle", r->in.handle);
 
20515
                ndr->depth++;
 
20516
                ndr_print_policy_handle(ndr, "handle", r->in.handle);
 
20517
                ndr->depth--;
 
20518
                ndr_print_uint32(ndr, "job_id", r->in.job_id);
 
20519
                ndr_print_ptr(ndr, "ctr", r->in.ctr);
 
20520
                ndr->depth++;
 
20521
                if (r->in.ctr) {
 
20522
                        ndr_print_spoolss_JobInfoContainer(ndr, "ctr", r->in.ctr);
 
20523
                }
 
20524
                ndr->depth--;
 
20525
                ndr_print_spoolss_JobControl(ndr, "command", r->in.command);
 
20526
                ndr->depth--;
 
20527
        }
 
20528
        if (flags & NDR_OUT) {
 
20529
                ndr_print_struct(ndr, "out", "spoolss_SetJob");
 
20530
                ndr->depth++;
 
20531
                ndr_print_WERROR(ndr, "result", r->out.result);
 
20532
                ndr->depth--;
 
20533
        }
 
20534
        ndr->depth--;
 
20535
}
 
20536
 
 
20537
static enum ndr_err_code ndr_push_spoolss_GetJob(struct ndr_push *ndr, int flags, const struct spoolss_GetJob *r)
 
20538
{
 
20539
        if (flags & NDR_IN) {
 
20540
                if (r->in.handle == NULL) {
 
20541
                        return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
 
20542
                }
 
20543
                NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
 
20544
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.job_id));
 
20545
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.level));
 
20546
                NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.buffer));
 
20547
                if (r->in.buffer) {
 
20548
                        NDR_CHECK(ndr_push_DATA_BLOB(ndr, NDR_SCALARS, *r->in.buffer));
 
20549
                }
 
20550
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.offered));
 
20551
        }
 
20552
        if (flags & NDR_OUT) {
 
20553
                NDR_CHECK(ndr_push_unique_ptr(ndr, r->out.info));
 
20554
                if (r->out.info) {
 
20555
                        {
 
20556
                                struct ndr_push *_ndr_info;
 
20557
                                NDR_CHECK(ndr_push_subcontext_start(ndr, &_ndr_info, 4, r->in.offered));
 
20558
                                NDR_CHECK(ndr_push_set_switch_value(_ndr_info, r->out.info, r->in.level));
 
20559
                                NDR_CHECK(ndr_push_spoolss_JobInfo(_ndr_info, NDR_SCALARS|NDR_BUFFERS, r->out.info));
 
20560
                                NDR_CHECK(ndr_push_subcontext_end(ndr, _ndr_info, 4, r->in.offered));
 
20561
                        }
 
20562
                }
 
20563
                if (r->out.needed == NULL) {
 
20564
                        return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
 
20565
                }
 
20566
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.needed));
 
20567
                NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
 
20568
        }
 
20569
        return NDR_ERR_SUCCESS;
 
20570
}
 
20571
 
 
20572
static enum ndr_err_code ndr_pull_spoolss_GetJob(struct ndr_pull *ndr, int flags, struct spoolss_GetJob *r)
 
20573
{
 
20574
        uint32_t _ptr_buffer;
 
20575
        uint32_t _ptr_info;
 
20576
        TALLOC_CTX *_mem_save_handle_0;
 
20577
        TALLOC_CTX *_mem_save_buffer_0;
 
20578
        TALLOC_CTX *_mem_save_info_0;
 
20579
        TALLOC_CTX *_mem_save_needed_0;
 
20580
        if (flags & NDR_IN) {
 
20581
                ZERO_STRUCT(r->out);
 
20582
 
 
20583
                if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
 
20584
                        NDR_PULL_ALLOC(ndr, r->in.handle);
 
20585
                }
 
20586
                _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
20587
                NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
 
20588
                NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
 
20589
                NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
 
20590
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.job_id));
 
20591
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.level));
 
20592
                NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_buffer));
 
20593
                if (_ptr_buffer) {
 
20594
                        NDR_PULL_ALLOC(ndr, r->in.buffer);
 
20595
                } else {
 
20596
                        r->in.buffer = NULL;
 
20597
                }
 
20598
                if (r->in.buffer) {
 
20599
                        _mem_save_buffer_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
20600
                        NDR_PULL_SET_MEM_CTX(ndr, r->in.buffer, 0);
 
20601
                        NDR_CHECK(ndr_pull_DATA_BLOB(ndr, NDR_SCALARS, r->in.buffer));
 
20602
                        NDR_PULL_SET_MEM_CTX(ndr, _mem_save_buffer_0, 0);
 
20603
                }
 
20604
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.offered));
 
20605
                NDR_PULL_ALLOC(ndr, r->out.needed);
 
20606
                ZERO_STRUCTP(r->out.needed);
 
20607
        }
 
20608
        if (flags & NDR_OUT) {
 
20609
                NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_info));
 
20610
                if (_ptr_info) {
 
20611
                        NDR_PULL_ALLOC(ndr, r->out.info);
 
20612
                } else {
 
20613
                        r->out.info = NULL;
 
20614
                }
 
20615
                if (r->out.info) {
 
20616
                        _mem_save_info_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
20617
                        NDR_PULL_SET_MEM_CTX(ndr, r->out.info, 0);
 
20618
                        {
 
20619
                                struct ndr_pull *_ndr_info;
 
20620
                                NDR_CHECK(ndr_pull_subcontext_start(ndr, &_ndr_info, 4, r->in.offered));
 
20621
                                NDR_CHECK(ndr_pull_set_switch_value(_ndr_info, r->out.info, r->in.level));
 
20622
                                NDR_CHECK(ndr_pull_spoolss_JobInfo(_ndr_info, NDR_SCALARS|NDR_BUFFERS, r->out.info));
 
20623
                                NDR_CHECK(ndr_pull_subcontext_end(ndr, _ndr_info, 4, r->in.offered));
 
20624
                        }
 
20625
                        NDR_PULL_SET_MEM_CTX(ndr, _mem_save_info_0, 0);
 
20626
                }
 
20627
                if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
 
20628
                        NDR_PULL_ALLOC(ndr, r->out.needed);
 
20629
                }
 
20630
                _mem_save_needed_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
20631
                NDR_PULL_SET_MEM_CTX(ndr, r->out.needed, LIBNDR_FLAG_REF_ALLOC);
 
20632
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.needed));
 
20633
                NDR_PULL_SET_MEM_CTX(ndr, _mem_save_needed_0, LIBNDR_FLAG_REF_ALLOC);
 
20634
                NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
 
20635
        }
 
20636
        return NDR_ERR_SUCCESS;
 
20637
}
 
20638
 
 
20639
_PUBLIC_ void ndr_print_spoolss_GetJob(struct ndr_print *ndr, const char *name, int flags, const struct spoolss_GetJob *r)
 
20640
{
 
20641
        ndr_print_struct(ndr, name, "spoolss_GetJob");
 
20642
        ndr->depth++;
 
20643
        if (flags & NDR_SET_VALUES) {
 
20644
                ndr->flags |= LIBNDR_PRINT_SET_VALUES;
 
20645
        }
 
20646
        if (flags & NDR_IN) {
 
20647
                ndr_print_struct(ndr, "in", "spoolss_GetJob");
 
20648
                ndr->depth++;
 
20649
                ndr_print_ptr(ndr, "handle", r->in.handle);
 
20650
                ndr->depth++;
 
20651
                ndr_print_policy_handle(ndr, "handle", r->in.handle);
 
20652
                ndr->depth--;
 
20653
                ndr_print_uint32(ndr, "job_id", r->in.job_id);
 
20654
                ndr_print_uint32(ndr, "level", r->in.level);
 
20655
                ndr_print_ptr(ndr, "buffer", r->in.buffer);
 
20656
                ndr->depth++;
 
20657
                if (r->in.buffer) {
 
20658
                        ndr_print_DATA_BLOB(ndr, "buffer", *r->in.buffer);
 
20659
                }
 
20660
                ndr->depth--;
 
20661
                ndr_print_uint32(ndr, "offered", r->in.offered);
 
20662
                ndr->depth--;
 
20663
        }
 
20664
        if (flags & NDR_OUT) {
 
20665
                ndr_print_struct(ndr, "out", "spoolss_GetJob");
 
20666
                ndr->depth++;
 
20667
                ndr_print_ptr(ndr, "info", r->out.info);
 
20668
                ndr->depth++;
 
20669
                if (r->out.info) {
 
20670
                        ndr_print_set_switch_value(ndr, r->out.info, r->in.level);
 
20671
                        ndr_print_spoolss_JobInfo(ndr, "info", r->out.info);
 
20672
                }
 
20673
                ndr->depth--;
 
20674
                ndr_print_ptr(ndr, "needed", r->out.needed);
 
20675
                ndr->depth++;
 
20676
                ndr_print_uint32(ndr, "needed", *r->out.needed);
 
20677
                ndr->depth--;
 
20678
                ndr_print_WERROR(ndr, "result", r->out.result);
 
20679
                ndr->depth--;
 
20680
        }
 
20681
        ndr->depth--;
 
20682
}
 
20683
 
 
20684
_PUBLIC_ enum ndr_err_code ndr_push__spoolss_EnumJobs(struct ndr_push *ndr, int flags, const struct _spoolss_EnumJobs *r)
 
20685
{
 
20686
        if (flags & NDR_IN) {
 
20687
                if (r->in.handle == NULL) {
 
20688
                        return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
 
20689
                }
 
20690
                NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
 
20691
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.firstjob));
 
20692
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.numjobs));
 
20693
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.level));
 
20694
                NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.buffer));
 
20695
                if (r->in.buffer) {
 
20696
                        NDR_CHECK(ndr_push_DATA_BLOB(ndr, NDR_SCALARS, *r->in.buffer));
 
20697
                }
 
20698
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.offered));
 
20699
        }
 
20700
        if (flags & NDR_OUT) {
 
20701
                NDR_CHECK(ndr_push_unique_ptr(ndr, r->out.info));
 
20702
                if (r->out.info) {
 
20703
                        NDR_CHECK(ndr_push_DATA_BLOB(ndr, NDR_SCALARS, *r->out.info));
 
20704
                }
 
20705
                if (r->out.needed == NULL) {
 
20706
                        return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
 
20707
                }
 
20708
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.needed));
 
20709
                if (r->out.count == NULL) {
 
20710
                        return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
 
20711
                }
 
20712
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.count));
 
20713
                NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
 
20714
        }
 
20715
        return NDR_ERR_SUCCESS;
 
20716
}
 
20717
 
 
20718
_PUBLIC_ enum ndr_err_code ndr_pull__spoolss_EnumJobs(struct ndr_pull *ndr, int flags, struct _spoolss_EnumJobs *r)
 
20719
{
 
20720
        uint32_t _ptr_buffer;
 
20721
        uint32_t _ptr_info;
 
20722
        TALLOC_CTX *_mem_save_handle_0;
 
20723
        TALLOC_CTX *_mem_save_buffer_0;
 
20724
        TALLOC_CTX *_mem_save_info_0;
 
20725
        TALLOC_CTX *_mem_save_needed_0;
 
20726
        TALLOC_CTX *_mem_save_count_0;
 
20727
        if (flags & NDR_IN) {
 
20728
                ZERO_STRUCT(r->out);
 
20729
 
 
20730
                if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
 
20731
                        NDR_PULL_ALLOC(ndr, r->in.handle);
 
20732
                }
 
20733
                _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
20734
                NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
 
20735
                NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
 
20736
                NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
 
20737
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.firstjob));
 
20738
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.numjobs));
 
20739
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.level));
 
20740
                NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_buffer));
 
20741
                if (_ptr_buffer) {
 
20742
                        NDR_PULL_ALLOC(ndr, r->in.buffer);
 
20743
                } else {
 
20744
                        r->in.buffer = NULL;
 
20745
                }
 
20746
                if (r->in.buffer) {
 
20747
                        _mem_save_buffer_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
20748
                        NDR_PULL_SET_MEM_CTX(ndr, r->in.buffer, 0);
 
20749
                        NDR_CHECK(ndr_pull_DATA_BLOB(ndr, NDR_SCALARS, r->in.buffer));
 
20750
                        NDR_PULL_SET_MEM_CTX(ndr, _mem_save_buffer_0, 0);
 
20751
                }
 
20752
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.offered));
 
20753
                NDR_PULL_ALLOC(ndr, r->out.needed);
 
20754
                ZERO_STRUCTP(r->out.needed);
 
20755
                NDR_PULL_ALLOC(ndr, r->out.count);
 
20756
                ZERO_STRUCTP(r->out.count);
 
20757
        }
 
20758
        if (flags & NDR_OUT) {
 
20759
                NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_info));
 
20760
                if (_ptr_info) {
 
20761
                        NDR_PULL_ALLOC(ndr, r->out.info);
 
20762
                } else {
 
20763
                        r->out.info = NULL;
 
20764
                }
 
20765
                if (r->out.info) {
 
20766
                        _mem_save_info_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
20767
                        NDR_PULL_SET_MEM_CTX(ndr, r->out.info, 0);
 
20768
                        NDR_CHECK(ndr_pull_DATA_BLOB(ndr, NDR_SCALARS, r->out.info));
 
20769
                        NDR_PULL_SET_MEM_CTX(ndr, _mem_save_info_0, 0);
 
20770
                }
 
20771
                if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
 
20772
                        NDR_PULL_ALLOC(ndr, r->out.needed);
 
20773
                }
 
20774
                _mem_save_needed_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
20775
                NDR_PULL_SET_MEM_CTX(ndr, r->out.needed, LIBNDR_FLAG_REF_ALLOC);
 
20776
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.needed));
 
20777
                NDR_PULL_SET_MEM_CTX(ndr, _mem_save_needed_0, LIBNDR_FLAG_REF_ALLOC);
 
20778
                if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
 
20779
                        NDR_PULL_ALLOC(ndr, r->out.count);
 
20780
                }
 
20781
                _mem_save_count_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
20782
                NDR_PULL_SET_MEM_CTX(ndr, r->out.count, LIBNDR_FLAG_REF_ALLOC);
 
20783
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.count));
 
20784
                NDR_PULL_SET_MEM_CTX(ndr, _mem_save_count_0, LIBNDR_FLAG_REF_ALLOC);
 
20785
                NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
 
20786
        }
 
20787
        return NDR_ERR_SUCCESS;
 
20788
}
 
20789
 
 
20790
_PUBLIC_ enum ndr_err_code ndr_push___spoolss_EnumJobs(struct ndr_push *ndr, int flags, const struct __spoolss_EnumJobs *r)
 
20791
{
 
20792
        uint32_t cntr_info_0;
 
20793
        if (flags & NDR_IN) {
 
20794
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.level));
 
20795
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.count));
 
20796
        }
 
20797
        if (flags & NDR_OUT) {
 
20798
                for (cntr_info_0 = 0; cntr_info_0 < r->in.count; cntr_info_0++) {
 
20799
                        NDR_CHECK(ndr_push_set_switch_value(ndr, &r->out.info[cntr_info_0], r->in.level));
 
20800
                        NDR_CHECK(ndr_push_spoolss_JobInfo(ndr, NDR_SCALARS, &r->out.info[cntr_info_0]));
 
20801
                }
 
20802
                for (cntr_info_0 = 0; cntr_info_0 < r->in.count; cntr_info_0++) {
 
20803
                        NDR_CHECK(ndr_push_spoolss_JobInfo(ndr, NDR_BUFFERS, &r->out.info[cntr_info_0]));
 
20804
                }
 
20805
        }
 
20806
        return NDR_ERR_SUCCESS;
 
20807
}
 
20808
 
 
20809
_PUBLIC_ enum ndr_err_code ndr_pull___spoolss_EnumJobs(struct ndr_pull *ndr, int flags, struct __spoolss_EnumJobs *r)
 
20810
{
 
20811
        uint32_t cntr_info_0;
 
20812
        TALLOC_CTX *_mem_save_info_0;
 
20813
        if (flags & NDR_IN) {
 
20814
                ZERO_STRUCT(r->out);
 
20815
 
 
20816
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.level));
 
20817
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.count));
 
20818
        }
 
20819
        if (flags & NDR_OUT) {
 
20820
                NDR_PULL_ALLOC_N(ndr, r->out.info, r->in.count);
 
20821
                _mem_save_info_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
20822
                NDR_PULL_SET_MEM_CTX(ndr, r->out.info, 0);
 
20823
                for (cntr_info_0 = 0; cntr_info_0 < r->in.count; cntr_info_0++) {
 
20824
                        NDR_CHECK(ndr_pull_set_switch_value(ndr, &r->out.info[cntr_info_0], r->in.level));
 
20825
                        NDR_CHECK(ndr_pull_spoolss_JobInfo(ndr, NDR_SCALARS, &r->out.info[cntr_info_0]));
 
20826
                }
 
20827
                for (cntr_info_0 = 0; cntr_info_0 < r->in.count; cntr_info_0++) {
 
20828
                        NDR_CHECK(ndr_pull_spoolss_JobInfo(ndr, NDR_BUFFERS, &r->out.info[cntr_info_0]));
 
20829
                }
 
20830
                NDR_PULL_SET_MEM_CTX(ndr, _mem_save_info_0, 0);
 
20831
        }
 
20832
        return NDR_ERR_SUCCESS;
 
20833
}
 
20834
 
 
20835
_PUBLIC_ void ndr_print_spoolss_EnumJobs(struct ndr_print *ndr, const char *name, int flags, const struct spoolss_EnumJobs *r)
 
20836
{
 
20837
        uint32_t cntr_info_2;
 
20838
        ndr_print_struct(ndr, name, "spoolss_EnumJobs");
 
20839
        ndr->depth++;
 
20840
        if (flags & NDR_SET_VALUES) {
 
20841
                ndr->flags |= LIBNDR_PRINT_SET_VALUES;
 
20842
        }
 
20843
        if (flags & NDR_IN) {
 
20844
                ndr_print_struct(ndr, "in", "spoolss_EnumJobs");
 
20845
                ndr->depth++;
 
20846
                ndr_print_ptr(ndr, "handle", r->in.handle);
 
20847
                ndr->depth++;
 
20848
                ndr_print_policy_handle(ndr, "handle", r->in.handle);
 
20849
                ndr->depth--;
 
20850
                ndr_print_uint32(ndr, "firstjob", r->in.firstjob);
 
20851
                ndr_print_uint32(ndr, "numjobs", r->in.numjobs);
 
20852
                ndr_print_uint32(ndr, "level", r->in.level);
 
20853
                ndr_print_ptr(ndr, "buffer", r->in.buffer);
 
20854
                ndr->depth++;
 
20855
                if (r->in.buffer) {
 
20856
                        ndr_print_DATA_BLOB(ndr, "buffer", *r->in.buffer);
 
20857
                }
 
20858
                ndr->depth--;
 
20859
                ndr_print_uint32(ndr, "offered", r->in.offered);
 
20860
                ndr->depth--;
 
20861
        }
 
20862
        if (flags & NDR_OUT) {
 
20863
                ndr_print_struct(ndr, "out", "spoolss_EnumJobs");
 
20864
                ndr->depth++;
 
20865
                ndr_print_ptr(ndr, "count", r->out.count);
 
20866
                ndr->depth++;
 
20867
                ndr_print_uint32(ndr, "count", *r->out.count);
 
20868
                ndr->depth--;
 
20869
                ndr_print_ptr(ndr, "info", r->out.info);
 
20870
                ndr->depth++;
 
20871
                ndr_print_ptr(ndr, "info", *r->out.info);
 
20872
                ndr->depth++;
 
20873
                if (*r->out.info) {
 
20874
                        ndr->print(ndr, "%s: ARRAY(%d)", "info", (int)*r->out.count);
 
20875
                        ndr->depth++;
 
20876
                        for (cntr_info_2=0;cntr_info_2<*r->out.count;cntr_info_2++) {
 
20877
                                char *idx_2=NULL;
 
20878
                                if (asprintf(&idx_2, "[%d]", cntr_info_2) != -1) {
 
20879
                                        ndr_print_set_switch_value(ndr, &(*r->out.info)[cntr_info_2], r->in.level);
 
20880
                                        ndr_print_spoolss_JobInfo(ndr, "info", &(*r->out.info)[cntr_info_2]);
 
20881
                                        free(idx_2);
 
20882
                                }
 
20883
                        }
 
20884
                        ndr->depth--;
 
20885
                }
 
20886
                ndr->depth--;
 
20887
                ndr->depth--;
 
20888
                ndr_print_ptr(ndr, "needed", r->out.needed);
 
20889
                ndr->depth++;
 
20890
                ndr_print_uint32(ndr, "needed", *r->out.needed);
 
20891
                ndr->depth--;
 
20892
                ndr_print_WERROR(ndr, "result", r->out.result);
 
20893
                ndr->depth--;
 
20894
        }
 
20895
        ndr->depth--;
 
20896
}
 
20897
 
 
20898
static enum ndr_err_code ndr_push_spoolss_AddPrinter(struct ndr_push *ndr, int flags, const struct spoolss_AddPrinter *r)
 
20899
{
 
20900
        if (flags & NDR_IN) {
 
20901
                NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.server));
 
20902
                if (r->in.server) {
 
20903
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.server, CH_UTF16)));
 
20904
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0));
 
20905
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.server, CH_UTF16)));
 
20906
                        NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.server, ndr_charset_length(r->in.server, CH_UTF16), sizeof(uint16_t), CH_UTF16));
 
20907
                }
 
20908
                if (r->in.info_ctr == NULL) {
 
20909
                        return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
 
20910
                }
 
20911
                NDR_CHECK(ndr_push_spoolss_SetPrinterInfoCtr(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.info_ctr));
 
20912
                if (r->in.devmode_ctr == NULL) {
 
20913
                        return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
 
20914
                }
 
20915
                NDR_CHECK(ndr_push_spoolss_DevmodeContainer(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.devmode_ctr));
 
20916
                if (r->in.secdesc_ctr == NULL) {
 
20917
                        return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
 
20918
                }
 
20919
                NDR_CHECK(ndr_push_sec_desc_buf(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.secdesc_ctr));
 
20920
        }
 
20921
        if (flags & NDR_OUT) {
 
20922
                if (r->out.handle == NULL) {
 
20923
                        return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
 
20924
                }
 
20925
                NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->out.handle));
 
20926
                NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
 
20927
        }
 
20928
        return NDR_ERR_SUCCESS;
 
20929
}
 
20930
 
 
20931
static enum ndr_err_code ndr_pull_spoolss_AddPrinter(struct ndr_pull *ndr, int flags, struct spoolss_AddPrinter *r)
 
20932
{
 
20933
        uint32_t _ptr_server;
 
20934
        TALLOC_CTX *_mem_save_server_0;
 
20935
        TALLOC_CTX *_mem_save_info_ctr_0;
 
20936
        TALLOC_CTX *_mem_save_devmode_ctr_0;
 
20937
        TALLOC_CTX *_mem_save_secdesc_ctr_0;
 
20938
        TALLOC_CTX *_mem_save_handle_0;
 
20939
        if (flags & NDR_IN) {
 
20940
                ZERO_STRUCT(r->out);
 
20941
 
 
20942
                NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_server));
 
20943
                if (_ptr_server) {
 
20944
                        NDR_PULL_ALLOC(ndr, r->in.server);
 
20945
                } else {
 
20946
                        r->in.server = NULL;
 
20947
                }
 
20948
                if (r->in.server) {
 
20949
                        _mem_save_server_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
20950
                        NDR_PULL_SET_MEM_CTX(ndr, r->in.server, 0);
 
20951
                        NDR_CHECK(ndr_pull_array_size(ndr, &r->in.server));
 
20952
                        NDR_CHECK(ndr_pull_array_length(ndr, &r->in.server));
 
20953
                        if (ndr_get_array_length(ndr, &r->in.server) > ndr_get_array_size(ndr, &r->in.server)) {
 
20954
                                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.server), ndr_get_array_length(ndr, &r->in.server));
 
20955
                        }
 
20956
                        NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.server), sizeof(uint16_t)));
 
20957
                        NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.server, ndr_get_array_length(ndr, &r->in.server), sizeof(uint16_t), CH_UTF16));
 
20958
                        NDR_PULL_SET_MEM_CTX(ndr, _mem_save_server_0, 0);
 
20959
                }
 
20960
                if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
 
20961
                        NDR_PULL_ALLOC(ndr, r->in.info_ctr);
 
20962
                }
 
20963
                _mem_save_info_ctr_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
20964
                NDR_PULL_SET_MEM_CTX(ndr, r->in.info_ctr, LIBNDR_FLAG_REF_ALLOC);
 
20965
                NDR_CHECK(ndr_pull_spoolss_SetPrinterInfoCtr(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.info_ctr));
 
20966
                NDR_PULL_SET_MEM_CTX(ndr, _mem_save_info_ctr_0, LIBNDR_FLAG_REF_ALLOC);
 
20967
                if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
 
20968
                        NDR_PULL_ALLOC(ndr, r->in.devmode_ctr);
 
20969
                }
 
20970
                _mem_save_devmode_ctr_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
20971
                NDR_PULL_SET_MEM_CTX(ndr, r->in.devmode_ctr, LIBNDR_FLAG_REF_ALLOC);
 
20972
                NDR_CHECK(ndr_pull_spoolss_DevmodeContainer(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.devmode_ctr));
 
20973
                NDR_PULL_SET_MEM_CTX(ndr, _mem_save_devmode_ctr_0, LIBNDR_FLAG_REF_ALLOC);
 
20974
                if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
 
20975
                        NDR_PULL_ALLOC(ndr, r->in.secdesc_ctr);
 
20976
                }
 
20977
                _mem_save_secdesc_ctr_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
20978
                NDR_PULL_SET_MEM_CTX(ndr, r->in.secdesc_ctr, LIBNDR_FLAG_REF_ALLOC);
 
20979
                NDR_CHECK(ndr_pull_sec_desc_buf(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.secdesc_ctr));
 
20980
                NDR_PULL_SET_MEM_CTX(ndr, _mem_save_secdesc_ctr_0, LIBNDR_FLAG_REF_ALLOC);
 
20981
                NDR_PULL_ALLOC(ndr, r->out.handle);
 
20982
                ZERO_STRUCTP(r->out.handle);
 
20983
        }
 
20984
        if (flags & NDR_OUT) {
 
20985
                if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
 
20986
                        NDR_PULL_ALLOC(ndr, r->out.handle);
 
20987
                }
 
20988
                _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
20989
                NDR_PULL_SET_MEM_CTX(ndr, r->out.handle, LIBNDR_FLAG_REF_ALLOC);
 
20990
                NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->out.handle));
 
20991
                NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
 
20992
                NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
 
20993
        }
 
20994
        return NDR_ERR_SUCCESS;
 
20995
}
 
20996
 
 
20997
_PUBLIC_ void ndr_print_spoolss_AddPrinter(struct ndr_print *ndr, const char *name, int flags, const struct spoolss_AddPrinter *r)
 
20998
{
 
20999
        ndr_print_struct(ndr, name, "spoolss_AddPrinter");
 
21000
        ndr->depth++;
 
21001
        if (flags & NDR_SET_VALUES) {
 
21002
                ndr->flags |= LIBNDR_PRINT_SET_VALUES;
 
21003
        }
 
21004
        if (flags & NDR_IN) {
 
21005
                ndr_print_struct(ndr, "in", "spoolss_AddPrinter");
 
21006
                ndr->depth++;
 
21007
                ndr_print_ptr(ndr, "server", r->in.server);
 
21008
                ndr->depth++;
 
21009
                if (r->in.server) {
 
21010
                        ndr_print_string(ndr, "server", r->in.server);
 
21011
                }
 
21012
                ndr->depth--;
 
21013
                ndr_print_ptr(ndr, "info_ctr", r->in.info_ctr);
 
21014
                ndr->depth++;
 
21015
                ndr_print_spoolss_SetPrinterInfoCtr(ndr, "info_ctr", r->in.info_ctr);
 
21016
                ndr->depth--;
 
21017
                ndr_print_ptr(ndr, "devmode_ctr", r->in.devmode_ctr);
 
21018
                ndr->depth++;
 
21019
                ndr_print_spoolss_DevmodeContainer(ndr, "devmode_ctr", r->in.devmode_ctr);
 
21020
                ndr->depth--;
 
21021
                ndr_print_ptr(ndr, "secdesc_ctr", r->in.secdesc_ctr);
 
21022
                ndr->depth++;
 
21023
                ndr_print_sec_desc_buf(ndr, "secdesc_ctr", r->in.secdesc_ctr);
 
21024
                ndr->depth--;
 
21025
                ndr->depth--;
 
21026
        }
 
21027
        if (flags & NDR_OUT) {
 
21028
                ndr_print_struct(ndr, "out", "spoolss_AddPrinter");
 
21029
                ndr->depth++;
 
21030
                ndr_print_ptr(ndr, "handle", r->out.handle);
 
21031
                ndr->depth++;
 
21032
                ndr_print_policy_handle(ndr, "handle", r->out.handle);
 
21033
                ndr->depth--;
 
21034
                ndr_print_WERROR(ndr, "result", r->out.result);
 
21035
                ndr->depth--;
 
21036
        }
 
21037
        ndr->depth--;
 
21038
}
 
21039
 
 
21040
static enum ndr_err_code ndr_push_spoolss_DeletePrinter(struct ndr_push *ndr, int flags, const struct spoolss_DeletePrinter *r)
 
21041
{
 
21042
        if (flags & NDR_IN) {
 
21043
                if (r->in.handle == NULL) {
 
21044
                        return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
 
21045
                }
 
21046
                NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
 
21047
        }
 
21048
        if (flags & NDR_OUT) {
 
21049
                NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
 
21050
        }
 
21051
        return NDR_ERR_SUCCESS;
 
21052
}
 
21053
 
 
21054
static enum ndr_err_code ndr_pull_spoolss_DeletePrinter(struct ndr_pull *ndr, int flags, struct spoolss_DeletePrinter *r)
 
21055
{
 
21056
        TALLOC_CTX *_mem_save_handle_0;
 
21057
        if (flags & NDR_IN) {
 
21058
                if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
 
21059
                        NDR_PULL_ALLOC(ndr, r->in.handle);
 
21060
                }
 
21061
                _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
21062
                NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
 
21063
                NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
 
21064
                NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
 
21065
        }
 
21066
        if (flags & NDR_OUT) {
 
21067
                NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
 
21068
        }
 
21069
        return NDR_ERR_SUCCESS;
 
21070
}
 
21071
 
 
21072
_PUBLIC_ void ndr_print_spoolss_DeletePrinter(struct ndr_print *ndr, const char *name, int flags, const struct spoolss_DeletePrinter *r)
 
21073
{
 
21074
        ndr_print_struct(ndr, name, "spoolss_DeletePrinter");
 
21075
        ndr->depth++;
 
21076
        if (flags & NDR_SET_VALUES) {
 
21077
                ndr->flags |= LIBNDR_PRINT_SET_VALUES;
 
21078
        }
 
21079
        if (flags & NDR_IN) {
 
21080
                ndr_print_struct(ndr, "in", "spoolss_DeletePrinter");
 
21081
                ndr->depth++;
 
21082
                ndr_print_ptr(ndr, "handle", r->in.handle);
 
21083
                ndr->depth++;
 
21084
                ndr_print_policy_handle(ndr, "handle", r->in.handle);
 
21085
                ndr->depth--;
 
21086
                ndr->depth--;
 
21087
        }
 
21088
        if (flags & NDR_OUT) {
 
21089
                ndr_print_struct(ndr, "out", "spoolss_DeletePrinter");
 
21090
                ndr->depth++;
 
21091
                ndr_print_WERROR(ndr, "result", r->out.result);
 
21092
                ndr->depth--;
 
21093
        }
 
21094
        ndr->depth--;
 
21095
}
 
21096
 
 
21097
static enum ndr_err_code ndr_push_spoolss_SetPrinter(struct ndr_push *ndr, int flags, const struct spoolss_SetPrinter *r)
 
21098
{
 
21099
        if (flags & NDR_IN) {
 
21100
                if (r->in.handle == NULL) {
 
21101
                        return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
 
21102
                }
 
21103
                NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
 
21104
                if (r->in.info_ctr == NULL) {
 
21105
                        return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
 
21106
                }
 
21107
                NDR_CHECK(ndr_push_spoolss_SetPrinterInfoCtr(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.info_ctr));
 
21108
                if (r->in.devmode_ctr == NULL) {
 
21109
                        return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
 
21110
                }
 
21111
                NDR_CHECK(ndr_push_spoolss_DevmodeContainer(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.devmode_ctr));
 
21112
                if (r->in.secdesc_ctr == NULL) {
 
21113
                        return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
 
21114
                }
 
21115
                NDR_CHECK(ndr_push_sec_desc_buf(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.secdesc_ctr));
 
21116
                NDR_CHECK(ndr_push_spoolss_PrinterControl(ndr, NDR_SCALARS, r->in.command));
 
21117
        }
 
21118
        if (flags & NDR_OUT) {
 
21119
                NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
 
21120
        }
 
21121
        return NDR_ERR_SUCCESS;
 
21122
}
 
21123
 
 
21124
static enum ndr_err_code ndr_pull_spoolss_SetPrinter(struct ndr_pull *ndr, int flags, struct spoolss_SetPrinter *r)
 
21125
{
 
21126
        TALLOC_CTX *_mem_save_handle_0;
 
21127
        TALLOC_CTX *_mem_save_info_ctr_0;
 
21128
        TALLOC_CTX *_mem_save_devmode_ctr_0;
 
21129
        TALLOC_CTX *_mem_save_secdesc_ctr_0;
 
21130
        if (flags & NDR_IN) {
 
21131
                if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
 
21132
                        NDR_PULL_ALLOC(ndr, r->in.handle);
 
21133
                }
 
21134
                _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
21135
                NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
 
21136
                NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
 
21137
                NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
 
21138
                if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
 
21139
                        NDR_PULL_ALLOC(ndr, r->in.info_ctr);
 
21140
                }
 
21141
                _mem_save_info_ctr_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
21142
                NDR_PULL_SET_MEM_CTX(ndr, r->in.info_ctr, LIBNDR_FLAG_REF_ALLOC);
 
21143
                NDR_CHECK(ndr_pull_spoolss_SetPrinterInfoCtr(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.info_ctr));
 
21144
                NDR_PULL_SET_MEM_CTX(ndr, _mem_save_info_ctr_0, LIBNDR_FLAG_REF_ALLOC);
 
21145
                if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
 
21146
                        NDR_PULL_ALLOC(ndr, r->in.devmode_ctr);
 
21147
                }
 
21148
                _mem_save_devmode_ctr_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
21149
                NDR_PULL_SET_MEM_CTX(ndr, r->in.devmode_ctr, LIBNDR_FLAG_REF_ALLOC);
 
21150
                NDR_CHECK(ndr_pull_spoolss_DevmodeContainer(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.devmode_ctr));
 
21151
                NDR_PULL_SET_MEM_CTX(ndr, _mem_save_devmode_ctr_0, LIBNDR_FLAG_REF_ALLOC);
 
21152
                if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
 
21153
                        NDR_PULL_ALLOC(ndr, r->in.secdesc_ctr);
 
21154
                }
 
21155
                _mem_save_secdesc_ctr_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
21156
                NDR_PULL_SET_MEM_CTX(ndr, r->in.secdesc_ctr, LIBNDR_FLAG_REF_ALLOC);
 
21157
                NDR_CHECK(ndr_pull_sec_desc_buf(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.secdesc_ctr));
 
21158
                NDR_PULL_SET_MEM_CTX(ndr, _mem_save_secdesc_ctr_0, LIBNDR_FLAG_REF_ALLOC);
 
21159
                NDR_CHECK(ndr_pull_spoolss_PrinterControl(ndr, NDR_SCALARS, &r->in.command));
 
21160
        }
 
21161
        if (flags & NDR_OUT) {
 
21162
                NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
 
21163
        }
 
21164
        return NDR_ERR_SUCCESS;
 
21165
}
 
21166
 
 
21167
_PUBLIC_ void ndr_print_spoolss_SetPrinter(struct ndr_print *ndr, const char *name, int flags, const struct spoolss_SetPrinter *r)
 
21168
{
 
21169
        ndr_print_struct(ndr, name, "spoolss_SetPrinter");
 
21170
        ndr->depth++;
 
21171
        if (flags & NDR_SET_VALUES) {
 
21172
                ndr->flags |= LIBNDR_PRINT_SET_VALUES;
 
21173
        }
 
21174
        if (flags & NDR_IN) {
 
21175
                ndr_print_struct(ndr, "in", "spoolss_SetPrinter");
 
21176
                ndr->depth++;
 
21177
                ndr_print_ptr(ndr, "handle", r->in.handle);
 
21178
                ndr->depth++;
 
21179
                ndr_print_policy_handle(ndr, "handle", r->in.handle);
 
21180
                ndr->depth--;
 
21181
                ndr_print_ptr(ndr, "info_ctr", r->in.info_ctr);
 
21182
                ndr->depth++;
 
21183
                ndr_print_spoolss_SetPrinterInfoCtr(ndr, "info_ctr", r->in.info_ctr);
 
21184
                ndr->depth--;
 
21185
                ndr_print_ptr(ndr, "devmode_ctr", r->in.devmode_ctr);
 
21186
                ndr->depth++;
 
21187
                ndr_print_spoolss_DevmodeContainer(ndr, "devmode_ctr", r->in.devmode_ctr);
 
21188
                ndr->depth--;
 
21189
                ndr_print_ptr(ndr, "secdesc_ctr", r->in.secdesc_ctr);
 
21190
                ndr->depth++;
 
21191
                ndr_print_sec_desc_buf(ndr, "secdesc_ctr", r->in.secdesc_ctr);
 
21192
                ndr->depth--;
 
21193
                ndr_print_spoolss_PrinterControl(ndr, "command", r->in.command);
 
21194
                ndr->depth--;
 
21195
        }
 
21196
        if (flags & NDR_OUT) {
 
21197
                ndr_print_struct(ndr, "out", "spoolss_SetPrinter");
 
21198
                ndr->depth++;
 
21199
                ndr_print_WERROR(ndr, "result", r->out.result);
 
21200
                ndr->depth--;
 
21201
        }
 
21202
        ndr->depth--;
 
21203
}
 
21204
 
 
21205
_PUBLIC_ enum ndr_err_code ndr_push_spoolss_GetPrinter(struct ndr_push *ndr, int flags, const struct spoolss_GetPrinter *r)
 
21206
{
 
21207
        if (flags & NDR_IN) {
 
21208
                if (r->in.handle == NULL) {
 
21209
                        return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
 
21210
                }
 
21211
                NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
 
21212
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.level));
 
21213
                NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.buffer));
 
21214
                if (r->in.buffer) {
 
21215
                        NDR_CHECK(ndr_push_DATA_BLOB(ndr, NDR_SCALARS, *r->in.buffer));
 
21216
                }
 
21217
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.offered));
 
21218
        }
 
21219
        if (flags & NDR_OUT) {
 
21220
                NDR_CHECK(ndr_push_unique_ptr(ndr, r->out.info));
 
21221
                if (r->out.info) {
 
21222
                        {
 
21223
                                struct ndr_push *_ndr_info;
 
21224
                                NDR_CHECK(ndr_push_subcontext_start(ndr, &_ndr_info, 4, r->in.offered));
 
21225
                                NDR_CHECK(ndr_push_set_switch_value(_ndr_info, r->out.info, r->in.level));
 
21226
                                NDR_CHECK(ndr_push_spoolss_PrinterInfo(_ndr_info, NDR_SCALARS|NDR_BUFFERS, r->out.info));
 
21227
                                NDR_CHECK(ndr_push_subcontext_end(ndr, _ndr_info, 4, r->in.offered));
 
21228
                        }
 
21229
                }
 
21230
                if (r->out.needed == NULL) {
 
21231
                        return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
 
21232
                }
 
21233
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.needed));
 
21234
                NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
 
21235
        }
 
21236
        return NDR_ERR_SUCCESS;
 
21237
}
 
21238
 
 
21239
_PUBLIC_ enum ndr_err_code ndr_pull_spoolss_GetPrinter(struct ndr_pull *ndr, int flags, struct spoolss_GetPrinter *r)
 
21240
{
 
21241
        uint32_t _ptr_buffer;
 
21242
        uint32_t _ptr_info;
 
21243
        TALLOC_CTX *_mem_save_handle_0;
 
21244
        TALLOC_CTX *_mem_save_buffer_0;
 
21245
        TALLOC_CTX *_mem_save_info_0;
 
21246
        TALLOC_CTX *_mem_save_needed_0;
 
21247
        if (flags & NDR_IN) {
 
21248
                ZERO_STRUCT(r->out);
 
21249
 
 
21250
                if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
 
21251
                        NDR_PULL_ALLOC(ndr, r->in.handle);
 
21252
                }
 
21253
                _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
21254
                NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
 
21255
                NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
 
21256
                NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
 
21257
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.level));
 
21258
                NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_buffer));
 
21259
                if (_ptr_buffer) {
 
21260
                        NDR_PULL_ALLOC(ndr, r->in.buffer);
 
21261
                } else {
 
21262
                        r->in.buffer = NULL;
 
21263
                }
 
21264
                if (r->in.buffer) {
 
21265
                        _mem_save_buffer_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
21266
                        NDR_PULL_SET_MEM_CTX(ndr, r->in.buffer, 0);
 
21267
                        NDR_CHECK(ndr_pull_DATA_BLOB(ndr, NDR_SCALARS, r->in.buffer));
 
21268
                        NDR_PULL_SET_MEM_CTX(ndr, _mem_save_buffer_0, 0);
 
21269
                }
 
21270
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.offered));
 
21271
                NDR_PULL_ALLOC(ndr, r->out.needed);
 
21272
                ZERO_STRUCTP(r->out.needed);
 
21273
        }
 
21274
        if (flags & NDR_OUT) {
 
21275
                NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_info));
 
21276
                if (_ptr_info) {
 
21277
                        NDR_PULL_ALLOC(ndr, r->out.info);
 
21278
                } else {
 
21279
                        r->out.info = NULL;
 
21280
                }
 
21281
                if (r->out.info) {
 
21282
                        _mem_save_info_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
21283
                        NDR_PULL_SET_MEM_CTX(ndr, r->out.info, 0);
 
21284
                        {
 
21285
                                struct ndr_pull *_ndr_info;
 
21286
                                NDR_CHECK(ndr_pull_subcontext_start(ndr, &_ndr_info, 4, r->in.offered));
 
21287
                                NDR_CHECK(ndr_pull_set_switch_value(_ndr_info, r->out.info, r->in.level));
 
21288
                                NDR_CHECK(ndr_pull_spoolss_PrinterInfo(_ndr_info, NDR_SCALARS|NDR_BUFFERS, r->out.info));
 
21289
                                NDR_CHECK(ndr_pull_subcontext_end(ndr, _ndr_info, 4, r->in.offered));
 
21290
                        }
 
21291
                        NDR_PULL_SET_MEM_CTX(ndr, _mem_save_info_0, 0);
 
21292
                }
 
21293
                if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
 
21294
                        NDR_PULL_ALLOC(ndr, r->out.needed);
 
21295
                }
 
21296
                _mem_save_needed_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
21297
                NDR_PULL_SET_MEM_CTX(ndr, r->out.needed, LIBNDR_FLAG_REF_ALLOC);
 
21298
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.needed));
 
21299
                NDR_PULL_SET_MEM_CTX(ndr, _mem_save_needed_0, LIBNDR_FLAG_REF_ALLOC);
 
21300
                NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
 
21301
        }
 
21302
        return NDR_ERR_SUCCESS;
 
21303
}
 
21304
 
 
21305
_PUBLIC_ void ndr_print_spoolss_GetPrinter(struct ndr_print *ndr, const char *name, int flags, const struct spoolss_GetPrinter *r)
 
21306
{
 
21307
        ndr_print_struct(ndr, name, "spoolss_GetPrinter");
 
21308
        ndr->depth++;
 
21309
        if (flags & NDR_SET_VALUES) {
 
21310
                ndr->flags |= LIBNDR_PRINT_SET_VALUES;
 
21311
        }
 
21312
        if (flags & NDR_IN) {
 
21313
                ndr_print_struct(ndr, "in", "spoolss_GetPrinter");
 
21314
                ndr->depth++;
 
21315
                ndr_print_ptr(ndr, "handle", r->in.handle);
 
21316
                ndr->depth++;
 
21317
                ndr_print_policy_handle(ndr, "handle", r->in.handle);
 
21318
                ndr->depth--;
 
21319
                ndr_print_uint32(ndr, "level", r->in.level);
 
21320
                ndr_print_ptr(ndr, "buffer", r->in.buffer);
 
21321
                ndr->depth++;
 
21322
                if (r->in.buffer) {
 
21323
                        ndr_print_DATA_BLOB(ndr, "buffer", *r->in.buffer);
 
21324
                }
 
21325
                ndr->depth--;
 
21326
                ndr_print_uint32(ndr, "offered", r->in.offered);
 
21327
                ndr->depth--;
 
21328
        }
 
21329
        if (flags & NDR_OUT) {
 
21330
                ndr_print_struct(ndr, "out", "spoolss_GetPrinter");
 
21331
                ndr->depth++;
 
21332
                ndr_print_ptr(ndr, "info", r->out.info);
 
21333
                ndr->depth++;
 
21334
                if (r->out.info) {
 
21335
                        ndr_print_set_switch_value(ndr, r->out.info, r->in.level);
 
21336
                        ndr_print_spoolss_PrinterInfo(ndr, "info", r->out.info);
 
21337
                }
 
21338
                ndr->depth--;
 
21339
                ndr_print_ptr(ndr, "needed", r->out.needed);
 
21340
                ndr->depth++;
 
21341
                ndr_print_uint32(ndr, "needed", *r->out.needed);
 
21342
                ndr->depth--;
 
21343
                ndr_print_WERROR(ndr, "result", r->out.result);
 
21344
                ndr->depth--;
 
21345
        }
 
21346
        ndr->depth--;
 
21347
}
 
21348
 
 
21349
static enum ndr_err_code ndr_push_spoolss_AddPrinterDriver(struct ndr_push *ndr, int flags, const struct spoolss_AddPrinterDriver *r)
 
21350
{
 
21351
        if (flags & NDR_IN) {
 
21352
                NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.servername));
 
21353
                if (r->in.servername) {
 
21354
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.servername, CH_UTF16)));
 
21355
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0));
 
21356
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.servername, CH_UTF16)));
 
21357
                        NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.servername, ndr_charset_length(r->in.servername, CH_UTF16), sizeof(uint16_t), CH_UTF16));
 
21358
                }
 
21359
                if (r->in.info_ctr == NULL) {
 
21360
                        return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
 
21361
                }
 
21362
                NDR_CHECK(ndr_push_spoolss_AddDriverInfoCtr(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.info_ctr));
 
21363
        }
 
21364
        if (flags & NDR_OUT) {
 
21365
                NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
 
21366
        }
 
21367
        return NDR_ERR_SUCCESS;
 
21368
}
 
21369
 
 
21370
static enum ndr_err_code ndr_pull_spoolss_AddPrinterDriver(struct ndr_pull *ndr, int flags, struct spoolss_AddPrinterDriver *r)
 
21371
{
 
21372
        uint32_t _ptr_servername;
 
21373
        TALLOC_CTX *_mem_save_servername_0;
 
21374
        TALLOC_CTX *_mem_save_info_ctr_0;
 
21375
        if (flags & NDR_IN) {
 
21376
                NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_servername));
 
21377
                if (_ptr_servername) {
 
21378
                        NDR_PULL_ALLOC(ndr, r->in.servername);
 
21379
                } else {
 
21380
                        r->in.servername = NULL;
 
21381
                }
 
21382
                if (r->in.servername) {
 
21383
                        _mem_save_servername_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
21384
                        NDR_PULL_SET_MEM_CTX(ndr, r->in.servername, 0);
 
21385
                        NDR_CHECK(ndr_pull_array_size(ndr, &r->in.servername));
 
21386
                        NDR_CHECK(ndr_pull_array_length(ndr, &r->in.servername));
 
21387
                        if (ndr_get_array_length(ndr, &r->in.servername) > ndr_get_array_size(ndr, &r->in.servername)) {
 
21388
                                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.servername), ndr_get_array_length(ndr, &r->in.servername));
 
21389
                        }
 
21390
                        NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.servername), sizeof(uint16_t)));
 
21391
                        NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.servername, ndr_get_array_length(ndr, &r->in.servername), sizeof(uint16_t), CH_UTF16));
 
21392
                        NDR_PULL_SET_MEM_CTX(ndr, _mem_save_servername_0, 0);
 
21393
                }
 
21394
                if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
 
21395
                        NDR_PULL_ALLOC(ndr, r->in.info_ctr);
 
21396
                }
 
21397
                _mem_save_info_ctr_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
21398
                NDR_PULL_SET_MEM_CTX(ndr, r->in.info_ctr, LIBNDR_FLAG_REF_ALLOC);
 
21399
                NDR_CHECK(ndr_pull_spoolss_AddDriverInfoCtr(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.info_ctr));
 
21400
                NDR_PULL_SET_MEM_CTX(ndr, _mem_save_info_ctr_0, LIBNDR_FLAG_REF_ALLOC);
 
21401
        }
 
21402
        if (flags & NDR_OUT) {
 
21403
                NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
 
21404
        }
 
21405
        return NDR_ERR_SUCCESS;
 
21406
}
 
21407
 
 
21408
_PUBLIC_ void ndr_print_spoolss_AddPrinterDriver(struct ndr_print *ndr, const char *name, int flags, const struct spoolss_AddPrinterDriver *r)
 
21409
{
 
21410
        ndr_print_struct(ndr, name, "spoolss_AddPrinterDriver");
 
21411
        ndr->depth++;
 
21412
        if (flags & NDR_SET_VALUES) {
 
21413
                ndr->flags |= LIBNDR_PRINT_SET_VALUES;
 
21414
        }
 
21415
        if (flags & NDR_IN) {
 
21416
                ndr_print_struct(ndr, "in", "spoolss_AddPrinterDriver");
 
21417
                ndr->depth++;
 
21418
                ndr_print_ptr(ndr, "servername", r->in.servername);
 
21419
                ndr->depth++;
 
21420
                if (r->in.servername) {
 
21421
                        ndr_print_string(ndr, "servername", r->in.servername);
 
21422
                }
 
21423
                ndr->depth--;
 
21424
                ndr_print_ptr(ndr, "info_ctr", r->in.info_ctr);
 
21425
                ndr->depth++;
 
21426
                ndr_print_spoolss_AddDriverInfoCtr(ndr, "info_ctr", r->in.info_ctr);
 
21427
                ndr->depth--;
 
21428
                ndr->depth--;
 
21429
        }
 
21430
        if (flags & NDR_OUT) {
 
21431
                ndr_print_struct(ndr, "out", "spoolss_AddPrinterDriver");
 
21432
                ndr->depth++;
 
21433
                ndr_print_WERROR(ndr, "result", r->out.result);
 
21434
                ndr->depth--;
 
21435
        }
 
21436
        ndr->depth--;
 
21437
}
 
21438
 
 
21439
_PUBLIC_ enum ndr_err_code ndr_push__spoolss_EnumPrinterDrivers(struct ndr_push *ndr, int flags, const struct _spoolss_EnumPrinterDrivers *r)
 
21440
{
 
21441
        if (flags & NDR_IN) {
 
21442
                NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.server));
 
21443
                if (r->in.server) {
 
21444
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.server, CH_UTF16)));
 
21445
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0));
 
21446
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.server, CH_UTF16)));
 
21447
                        NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.server, ndr_charset_length(r->in.server, CH_UTF16), sizeof(uint16_t), CH_UTF16));
 
21448
                }
 
21449
                NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.environment));
 
21450
                if (r->in.environment) {
 
21451
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.environment, CH_UTF16)));
 
21452
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0));
 
21453
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.environment, CH_UTF16)));
 
21454
                        NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.environment, ndr_charset_length(r->in.environment, CH_UTF16), sizeof(uint16_t), CH_UTF16));
 
21455
                }
 
21456
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.level));
 
21457
                NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.buffer));
 
21458
                if (r->in.buffer) {
 
21459
                        NDR_CHECK(ndr_push_DATA_BLOB(ndr, NDR_SCALARS, *r->in.buffer));
 
21460
                }
 
21461
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.offered));
 
21462
        }
 
21463
        if (flags & NDR_OUT) {
 
21464
                NDR_CHECK(ndr_push_unique_ptr(ndr, r->out.info));
 
21465
                if (r->out.info) {
 
21466
                        NDR_CHECK(ndr_push_DATA_BLOB(ndr, NDR_SCALARS, *r->out.info));
 
21467
                }
 
21468
                if (r->out.needed == NULL) {
 
21469
                        return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
 
21470
                }
 
21471
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.needed));
 
21472
                if (r->out.count == NULL) {
 
21473
                        return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
 
21474
                }
 
21475
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.count));
 
21476
                NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
 
21477
        }
 
21478
        return NDR_ERR_SUCCESS;
 
21479
}
 
21480
 
 
21481
_PUBLIC_ enum ndr_err_code ndr_pull__spoolss_EnumPrinterDrivers(struct ndr_pull *ndr, int flags, struct _spoolss_EnumPrinterDrivers *r)
 
21482
{
 
21483
        uint32_t _ptr_server;
 
21484
        uint32_t _ptr_environment;
 
21485
        uint32_t _ptr_buffer;
 
21486
        uint32_t _ptr_info;
 
21487
        TALLOC_CTX *_mem_save_server_0;
 
21488
        TALLOC_CTX *_mem_save_environment_0;
 
21489
        TALLOC_CTX *_mem_save_buffer_0;
 
21490
        TALLOC_CTX *_mem_save_info_0;
 
21491
        TALLOC_CTX *_mem_save_needed_0;
 
21492
        TALLOC_CTX *_mem_save_count_0;
 
21493
        if (flags & NDR_IN) {
 
21494
                ZERO_STRUCT(r->out);
 
21495
 
 
21496
                NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_server));
 
21497
                if (_ptr_server) {
 
21498
                        NDR_PULL_ALLOC(ndr, r->in.server);
 
21499
                } else {
 
21500
                        r->in.server = NULL;
 
21501
                }
 
21502
                if (r->in.server) {
 
21503
                        _mem_save_server_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
21504
                        NDR_PULL_SET_MEM_CTX(ndr, r->in.server, 0);
 
21505
                        NDR_CHECK(ndr_pull_array_size(ndr, &r->in.server));
 
21506
                        NDR_CHECK(ndr_pull_array_length(ndr, &r->in.server));
 
21507
                        if (ndr_get_array_length(ndr, &r->in.server) > ndr_get_array_size(ndr, &r->in.server)) {
 
21508
                                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.server), ndr_get_array_length(ndr, &r->in.server));
 
21509
                        }
 
21510
                        NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.server), sizeof(uint16_t)));
 
21511
                        NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.server, ndr_get_array_length(ndr, &r->in.server), sizeof(uint16_t), CH_UTF16));
 
21512
                        NDR_PULL_SET_MEM_CTX(ndr, _mem_save_server_0, 0);
 
21513
                }
 
21514
                NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_environment));
 
21515
                if (_ptr_environment) {
 
21516
                        NDR_PULL_ALLOC(ndr, r->in.environment);
 
21517
                } else {
 
21518
                        r->in.environment = NULL;
 
21519
                }
 
21520
                if (r->in.environment) {
 
21521
                        _mem_save_environment_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
21522
                        NDR_PULL_SET_MEM_CTX(ndr, r->in.environment, 0);
 
21523
                        NDR_CHECK(ndr_pull_array_size(ndr, &r->in.environment));
 
21524
                        NDR_CHECK(ndr_pull_array_length(ndr, &r->in.environment));
 
21525
                        if (ndr_get_array_length(ndr, &r->in.environment) > ndr_get_array_size(ndr, &r->in.environment)) {
 
21526
                                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.environment), ndr_get_array_length(ndr, &r->in.environment));
 
21527
                        }
 
21528
                        NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.environment), sizeof(uint16_t)));
 
21529
                        NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.environment, ndr_get_array_length(ndr, &r->in.environment), sizeof(uint16_t), CH_UTF16));
 
21530
                        NDR_PULL_SET_MEM_CTX(ndr, _mem_save_environment_0, 0);
 
21531
                }
 
21532
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.level));
 
21533
                NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_buffer));
 
21534
                if (_ptr_buffer) {
 
21535
                        NDR_PULL_ALLOC(ndr, r->in.buffer);
 
21536
                } else {
 
21537
                        r->in.buffer = NULL;
 
21538
                }
 
21539
                if (r->in.buffer) {
 
21540
                        _mem_save_buffer_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
21541
                        NDR_PULL_SET_MEM_CTX(ndr, r->in.buffer, 0);
 
21542
                        NDR_CHECK(ndr_pull_DATA_BLOB(ndr, NDR_SCALARS, r->in.buffer));
 
21543
                        NDR_PULL_SET_MEM_CTX(ndr, _mem_save_buffer_0, 0);
 
21544
                }
 
21545
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.offered));
 
21546
                NDR_PULL_ALLOC(ndr, r->out.needed);
 
21547
                ZERO_STRUCTP(r->out.needed);
 
21548
                NDR_PULL_ALLOC(ndr, r->out.count);
 
21549
                ZERO_STRUCTP(r->out.count);
 
21550
        }
 
21551
        if (flags & NDR_OUT) {
 
21552
                NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_info));
 
21553
                if (_ptr_info) {
 
21554
                        NDR_PULL_ALLOC(ndr, r->out.info);
 
21555
                } else {
 
21556
                        r->out.info = NULL;
 
21557
                }
 
21558
                if (r->out.info) {
 
21559
                        _mem_save_info_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
21560
                        NDR_PULL_SET_MEM_CTX(ndr, r->out.info, 0);
 
21561
                        NDR_CHECK(ndr_pull_DATA_BLOB(ndr, NDR_SCALARS, r->out.info));
 
21562
                        NDR_PULL_SET_MEM_CTX(ndr, _mem_save_info_0, 0);
 
21563
                }
 
21564
                if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
 
21565
                        NDR_PULL_ALLOC(ndr, r->out.needed);
 
21566
                }
 
21567
                _mem_save_needed_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
21568
                NDR_PULL_SET_MEM_CTX(ndr, r->out.needed, LIBNDR_FLAG_REF_ALLOC);
 
21569
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.needed));
 
21570
                NDR_PULL_SET_MEM_CTX(ndr, _mem_save_needed_0, LIBNDR_FLAG_REF_ALLOC);
 
21571
                if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
 
21572
                        NDR_PULL_ALLOC(ndr, r->out.count);
 
21573
                }
 
21574
                _mem_save_count_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
21575
                NDR_PULL_SET_MEM_CTX(ndr, r->out.count, LIBNDR_FLAG_REF_ALLOC);
 
21576
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.count));
 
21577
                NDR_PULL_SET_MEM_CTX(ndr, _mem_save_count_0, LIBNDR_FLAG_REF_ALLOC);
 
21578
                NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
 
21579
        }
 
21580
        return NDR_ERR_SUCCESS;
 
21581
}
 
21582
 
 
21583
_PUBLIC_ enum ndr_err_code ndr_push___spoolss_EnumPrinterDrivers(struct ndr_push *ndr, int flags, const struct __spoolss_EnumPrinterDrivers *r)
 
21584
{
 
21585
        uint32_t cntr_info_0;
 
21586
        if (flags & NDR_IN) {
 
21587
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.level));
 
21588
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.count));
 
21589
        }
 
21590
        if (flags & NDR_OUT) {
 
21591
                for (cntr_info_0 = 0; cntr_info_0 < r->in.count; cntr_info_0++) {
 
21592
                        NDR_CHECK(ndr_push_set_switch_value(ndr, &r->out.info[cntr_info_0], r->in.level));
 
21593
                        NDR_CHECK(ndr_push_spoolss_DriverInfo(ndr, NDR_SCALARS, &r->out.info[cntr_info_0]));
 
21594
                }
 
21595
                for (cntr_info_0 = 0; cntr_info_0 < r->in.count; cntr_info_0++) {
 
21596
                        NDR_CHECK(ndr_push_spoolss_DriverInfo(ndr, NDR_BUFFERS, &r->out.info[cntr_info_0]));
 
21597
                }
 
21598
        }
 
21599
        return NDR_ERR_SUCCESS;
 
21600
}
 
21601
 
 
21602
_PUBLIC_ enum ndr_err_code ndr_pull___spoolss_EnumPrinterDrivers(struct ndr_pull *ndr, int flags, struct __spoolss_EnumPrinterDrivers *r)
 
21603
{
 
21604
        uint32_t cntr_info_0;
 
21605
        TALLOC_CTX *_mem_save_info_0;
 
21606
        if (flags & NDR_IN) {
 
21607
                ZERO_STRUCT(r->out);
 
21608
 
 
21609
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.level));
 
21610
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.count));
 
21611
        }
 
21612
        if (flags & NDR_OUT) {
 
21613
                NDR_PULL_ALLOC_N(ndr, r->out.info, r->in.count);
 
21614
                _mem_save_info_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
21615
                NDR_PULL_SET_MEM_CTX(ndr, r->out.info, 0);
 
21616
                for (cntr_info_0 = 0; cntr_info_0 < r->in.count; cntr_info_0++) {
 
21617
                        NDR_CHECK(ndr_pull_set_switch_value(ndr, &r->out.info[cntr_info_0], r->in.level));
 
21618
                        NDR_CHECK(ndr_pull_spoolss_DriverInfo(ndr, NDR_SCALARS, &r->out.info[cntr_info_0]));
 
21619
                }
 
21620
                for (cntr_info_0 = 0; cntr_info_0 < r->in.count; cntr_info_0++) {
 
21621
                        NDR_CHECK(ndr_pull_spoolss_DriverInfo(ndr, NDR_BUFFERS, &r->out.info[cntr_info_0]));
 
21622
                }
 
21623
                NDR_PULL_SET_MEM_CTX(ndr, _mem_save_info_0, 0);
 
21624
        }
 
21625
        return NDR_ERR_SUCCESS;
 
21626
}
 
21627
 
 
21628
_PUBLIC_ void ndr_print_spoolss_EnumPrinterDrivers(struct ndr_print *ndr, const char *name, int flags, const struct spoolss_EnumPrinterDrivers *r)
 
21629
{
 
21630
        uint32_t cntr_info_2;
 
21631
        ndr_print_struct(ndr, name, "spoolss_EnumPrinterDrivers");
 
21632
        ndr->depth++;
 
21633
        if (flags & NDR_SET_VALUES) {
 
21634
                ndr->flags |= LIBNDR_PRINT_SET_VALUES;
 
21635
        }
 
21636
        if (flags & NDR_IN) {
 
21637
                ndr_print_struct(ndr, "in", "spoolss_EnumPrinterDrivers");
 
21638
                ndr->depth++;
 
21639
                ndr_print_ptr(ndr, "server", r->in.server);
 
21640
                ndr->depth++;
 
21641
                if (r->in.server) {
 
21642
                        ndr_print_string(ndr, "server", r->in.server);
 
21643
                }
 
21644
                ndr->depth--;
 
21645
                ndr_print_ptr(ndr, "environment", r->in.environment);
 
21646
                ndr->depth++;
 
21647
                if (r->in.environment) {
 
21648
                        ndr_print_string(ndr, "environment", r->in.environment);
 
21649
                }
 
21650
                ndr->depth--;
 
21651
                ndr_print_uint32(ndr, "level", r->in.level);
 
21652
                ndr_print_ptr(ndr, "buffer", r->in.buffer);
 
21653
                ndr->depth++;
 
21654
                if (r->in.buffer) {
 
21655
                        ndr_print_DATA_BLOB(ndr, "buffer", *r->in.buffer);
 
21656
                }
 
21657
                ndr->depth--;
 
21658
                ndr_print_uint32(ndr, "offered", r->in.offered);
 
21659
                ndr->depth--;
 
21660
        }
 
21661
        if (flags & NDR_OUT) {
 
21662
                ndr_print_struct(ndr, "out", "spoolss_EnumPrinterDrivers");
 
21663
                ndr->depth++;
 
21664
                ndr_print_ptr(ndr, "count", r->out.count);
 
21665
                ndr->depth++;
 
21666
                ndr_print_uint32(ndr, "count", *r->out.count);
 
21667
                ndr->depth--;
 
21668
                ndr_print_ptr(ndr, "info", r->out.info);
 
21669
                ndr->depth++;
 
21670
                ndr_print_ptr(ndr, "info", *r->out.info);
 
21671
                ndr->depth++;
 
21672
                if (*r->out.info) {
 
21673
                        ndr->print(ndr, "%s: ARRAY(%d)", "info", (int)*r->out.count);
 
21674
                        ndr->depth++;
 
21675
                        for (cntr_info_2=0;cntr_info_2<*r->out.count;cntr_info_2++) {
 
21676
                                char *idx_2=NULL;
 
21677
                                if (asprintf(&idx_2, "[%d]", cntr_info_2) != -1) {
 
21678
                                        ndr_print_set_switch_value(ndr, &(*r->out.info)[cntr_info_2], r->in.level);
 
21679
                                        ndr_print_spoolss_DriverInfo(ndr, "info", &(*r->out.info)[cntr_info_2]);
 
21680
                                        free(idx_2);
 
21681
                                }
 
21682
                        }
 
21683
                        ndr->depth--;
 
21684
                }
 
21685
                ndr->depth--;
 
21686
                ndr->depth--;
 
21687
                ndr_print_ptr(ndr, "needed", r->out.needed);
 
21688
                ndr->depth++;
 
21689
                ndr_print_uint32(ndr, "needed", *r->out.needed);
 
21690
                ndr->depth--;
 
21691
                ndr_print_WERROR(ndr, "result", r->out.result);
 
21692
                ndr->depth--;
 
21693
        }
 
21694
        ndr->depth--;
 
21695
}
 
21696
 
 
21697
static enum ndr_err_code ndr_push_spoolss_GetPrinterDriver(struct ndr_push *ndr, int flags, const struct spoolss_GetPrinterDriver *r)
 
21698
{
 
21699
        if (flags & NDR_IN) {
 
21700
                if (r->in.handle == NULL) {
 
21701
                        return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
 
21702
                }
 
21703
                NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
 
21704
                NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.architecture));
 
21705
                if (r->in.architecture) {
 
21706
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.architecture, CH_UTF16)));
 
21707
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0));
 
21708
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.architecture, CH_UTF16)));
 
21709
                        NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.architecture, ndr_charset_length(r->in.architecture, CH_UTF16), sizeof(uint16_t), CH_UTF16));
 
21710
                }
 
21711
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.level));
 
21712
                NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.buffer));
 
21713
                if (r->in.buffer) {
 
21714
                        NDR_CHECK(ndr_push_DATA_BLOB(ndr, NDR_SCALARS, *r->in.buffer));
 
21715
                }
 
21716
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.offered));
 
21717
        }
 
21718
        if (flags & NDR_OUT) {
 
21719
                NDR_CHECK(ndr_push_unique_ptr(ndr, r->out.info));
 
21720
                if (r->out.info) {
 
21721
                        {
 
21722
                                struct ndr_push *_ndr_info;
 
21723
                                NDR_CHECK(ndr_push_subcontext_start(ndr, &_ndr_info, 4, r->in.offered));
 
21724
                                NDR_CHECK(ndr_push_set_switch_value(_ndr_info, r->out.info, r->in.level));
 
21725
                                NDR_CHECK(ndr_push_spoolss_DriverInfo(_ndr_info, NDR_SCALARS|NDR_BUFFERS, r->out.info));
 
21726
                                NDR_CHECK(ndr_push_subcontext_end(ndr, _ndr_info, 4, r->in.offered));
 
21727
                        }
 
21728
                }
 
21729
                if (r->out.needed == NULL) {
 
21730
                        return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
 
21731
                }
 
21732
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.needed));
 
21733
                NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
 
21734
        }
 
21735
        return NDR_ERR_SUCCESS;
 
21736
}
 
21737
 
 
21738
static enum ndr_err_code ndr_pull_spoolss_GetPrinterDriver(struct ndr_pull *ndr, int flags, struct spoolss_GetPrinterDriver *r)
 
21739
{
 
21740
        uint32_t _ptr_architecture;
 
21741
        uint32_t _ptr_buffer;
 
21742
        uint32_t _ptr_info;
 
21743
        TALLOC_CTX *_mem_save_handle_0;
 
21744
        TALLOC_CTX *_mem_save_architecture_0;
 
21745
        TALLOC_CTX *_mem_save_buffer_0;
 
21746
        TALLOC_CTX *_mem_save_info_0;
 
21747
        TALLOC_CTX *_mem_save_needed_0;
 
21748
        if (flags & NDR_IN) {
 
21749
                ZERO_STRUCT(r->out);
 
21750
 
 
21751
                if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
 
21752
                        NDR_PULL_ALLOC(ndr, r->in.handle);
 
21753
                }
 
21754
                _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
21755
                NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
 
21756
                NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
 
21757
                NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
 
21758
                NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_architecture));
 
21759
                if (_ptr_architecture) {
 
21760
                        NDR_PULL_ALLOC(ndr, r->in.architecture);
 
21761
                } else {
 
21762
                        r->in.architecture = NULL;
 
21763
                }
 
21764
                if (r->in.architecture) {
 
21765
                        _mem_save_architecture_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
21766
                        NDR_PULL_SET_MEM_CTX(ndr, r->in.architecture, 0);
 
21767
                        NDR_CHECK(ndr_pull_array_size(ndr, &r->in.architecture));
 
21768
                        NDR_CHECK(ndr_pull_array_length(ndr, &r->in.architecture));
 
21769
                        if (ndr_get_array_length(ndr, &r->in.architecture) > ndr_get_array_size(ndr, &r->in.architecture)) {
 
21770
                                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.architecture), ndr_get_array_length(ndr, &r->in.architecture));
 
21771
                        }
 
21772
                        NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.architecture), sizeof(uint16_t)));
 
21773
                        NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.architecture, ndr_get_array_length(ndr, &r->in.architecture), sizeof(uint16_t), CH_UTF16));
 
21774
                        NDR_PULL_SET_MEM_CTX(ndr, _mem_save_architecture_0, 0);
 
21775
                }
 
21776
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.level));
 
21777
                NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_buffer));
 
21778
                if (_ptr_buffer) {
 
21779
                        NDR_PULL_ALLOC(ndr, r->in.buffer);
 
21780
                } else {
 
21781
                        r->in.buffer = NULL;
 
21782
                }
 
21783
                if (r->in.buffer) {
 
21784
                        _mem_save_buffer_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
21785
                        NDR_PULL_SET_MEM_CTX(ndr, r->in.buffer, 0);
 
21786
                        NDR_CHECK(ndr_pull_DATA_BLOB(ndr, NDR_SCALARS, r->in.buffer));
 
21787
                        NDR_PULL_SET_MEM_CTX(ndr, _mem_save_buffer_0, 0);
 
21788
                }
 
21789
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.offered));
 
21790
                NDR_PULL_ALLOC(ndr, r->out.needed);
 
21791
                ZERO_STRUCTP(r->out.needed);
 
21792
        }
 
21793
        if (flags & NDR_OUT) {
 
21794
                NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_info));
 
21795
                if (_ptr_info) {
 
21796
                        NDR_PULL_ALLOC(ndr, r->out.info);
 
21797
                } else {
 
21798
                        r->out.info = NULL;
 
21799
                }
 
21800
                if (r->out.info) {
 
21801
                        _mem_save_info_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
21802
                        NDR_PULL_SET_MEM_CTX(ndr, r->out.info, 0);
 
21803
                        {
 
21804
                                struct ndr_pull *_ndr_info;
 
21805
                                NDR_CHECK(ndr_pull_subcontext_start(ndr, &_ndr_info, 4, r->in.offered));
 
21806
                                NDR_CHECK(ndr_pull_set_switch_value(_ndr_info, r->out.info, r->in.level));
 
21807
                                NDR_CHECK(ndr_pull_spoolss_DriverInfo(_ndr_info, NDR_SCALARS|NDR_BUFFERS, r->out.info));
 
21808
                                NDR_CHECK(ndr_pull_subcontext_end(ndr, _ndr_info, 4, r->in.offered));
 
21809
                        }
 
21810
                        NDR_PULL_SET_MEM_CTX(ndr, _mem_save_info_0, 0);
 
21811
                }
 
21812
                if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
 
21813
                        NDR_PULL_ALLOC(ndr, r->out.needed);
 
21814
                }
 
21815
                _mem_save_needed_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
21816
                NDR_PULL_SET_MEM_CTX(ndr, r->out.needed, LIBNDR_FLAG_REF_ALLOC);
 
21817
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.needed));
 
21818
                NDR_PULL_SET_MEM_CTX(ndr, _mem_save_needed_0, LIBNDR_FLAG_REF_ALLOC);
 
21819
                NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
 
21820
        }
 
21821
        return NDR_ERR_SUCCESS;
 
21822
}
 
21823
 
 
21824
_PUBLIC_ void ndr_print_spoolss_GetPrinterDriver(struct ndr_print *ndr, const char *name, int flags, const struct spoolss_GetPrinterDriver *r)
 
21825
{
 
21826
        ndr_print_struct(ndr, name, "spoolss_GetPrinterDriver");
 
21827
        ndr->depth++;
 
21828
        if (flags & NDR_SET_VALUES) {
 
21829
                ndr->flags |= LIBNDR_PRINT_SET_VALUES;
 
21830
        }
 
21831
        if (flags & NDR_IN) {
 
21832
                ndr_print_struct(ndr, "in", "spoolss_GetPrinterDriver");
 
21833
                ndr->depth++;
 
21834
                ndr_print_ptr(ndr, "handle", r->in.handle);
 
21835
                ndr->depth++;
 
21836
                ndr_print_policy_handle(ndr, "handle", r->in.handle);
 
21837
                ndr->depth--;
 
21838
                ndr_print_ptr(ndr, "architecture", r->in.architecture);
 
21839
                ndr->depth++;
 
21840
                if (r->in.architecture) {
 
21841
                        ndr_print_string(ndr, "architecture", r->in.architecture);
 
21842
                }
 
21843
                ndr->depth--;
 
21844
                ndr_print_uint32(ndr, "level", r->in.level);
 
21845
                ndr_print_ptr(ndr, "buffer", r->in.buffer);
 
21846
                ndr->depth++;
 
21847
                if (r->in.buffer) {
 
21848
                        ndr_print_DATA_BLOB(ndr, "buffer", *r->in.buffer);
 
21849
                }
 
21850
                ndr->depth--;
 
21851
                ndr_print_uint32(ndr, "offered", r->in.offered);
 
21852
                ndr->depth--;
 
21853
        }
 
21854
        if (flags & NDR_OUT) {
 
21855
                ndr_print_struct(ndr, "out", "spoolss_GetPrinterDriver");
 
21856
                ndr->depth++;
 
21857
                ndr_print_ptr(ndr, "info", r->out.info);
 
21858
                ndr->depth++;
 
21859
                if (r->out.info) {
 
21860
                        ndr_print_set_switch_value(ndr, r->out.info, r->in.level);
 
21861
                        ndr_print_spoolss_DriverInfo(ndr, "info", r->out.info);
 
21862
                }
 
21863
                ndr->depth--;
 
21864
                ndr_print_ptr(ndr, "needed", r->out.needed);
 
21865
                ndr->depth++;
 
21866
                ndr_print_uint32(ndr, "needed", *r->out.needed);
 
21867
                ndr->depth--;
 
21868
                ndr_print_WERROR(ndr, "result", r->out.result);
 
21869
                ndr->depth--;
 
21870
        }
 
21871
        ndr->depth--;
 
21872
}
 
21873
 
 
21874
_PUBLIC_ enum ndr_err_code ndr_push_spoolss_GetPrinterDriverDirectory(struct ndr_push *ndr, int flags, const struct spoolss_GetPrinterDriverDirectory *r)
 
21875
{
 
21876
        if (flags & NDR_IN) {
 
21877
                NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.server));
 
21878
                if (r->in.server) {
 
21879
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.server, CH_UTF16)));
 
21880
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0));
 
21881
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.server, CH_UTF16)));
 
21882
                        NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.server, ndr_charset_length(r->in.server, CH_UTF16), sizeof(uint16_t), CH_UTF16));
 
21883
                }
 
21884
                NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.environment));
 
21885
                if (r->in.environment) {
 
21886
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.environment, CH_UTF16)));
 
21887
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0));
 
21888
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.environment, CH_UTF16)));
 
21889
                        NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.environment, ndr_charset_length(r->in.environment, CH_UTF16), sizeof(uint16_t), CH_UTF16));
 
21890
                }
 
21891
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.level));
 
21892
                NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.buffer));
 
21893
                if (r->in.buffer) {
 
21894
                        NDR_CHECK(ndr_push_DATA_BLOB(ndr, NDR_SCALARS, *r->in.buffer));
 
21895
                }
 
21896
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.offered));
 
21897
        }
 
21898
        if (flags & NDR_OUT) {
 
21899
                NDR_CHECK(ndr_push_unique_ptr(ndr, r->out.info));
 
21900
                if (r->out.info) {
 
21901
                        {
 
21902
                                struct ndr_push *_ndr_info;
 
21903
                                NDR_CHECK(ndr_push_subcontext_start(ndr, &_ndr_info, 4, r->in.offered));
 
21904
                                NDR_CHECK(ndr_push_set_switch_value(_ndr_info, r->out.info, r->in.level));
 
21905
                                NDR_CHECK(ndr_push_spoolss_DriverDirectoryInfo(_ndr_info, NDR_SCALARS, r->out.info));
 
21906
                                NDR_CHECK(ndr_push_subcontext_end(ndr, _ndr_info, 4, r->in.offered));
 
21907
                        }
 
21908
                }
 
21909
                if (r->out.needed == NULL) {
 
21910
                        return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
 
21911
                }
 
21912
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.needed));
 
21913
                NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
 
21914
        }
 
21915
        return NDR_ERR_SUCCESS;
 
21916
}
 
21917
 
 
21918
_PUBLIC_ enum ndr_err_code ndr_pull_spoolss_GetPrinterDriverDirectory(struct ndr_pull *ndr, int flags, struct spoolss_GetPrinterDriverDirectory *r)
 
21919
{
 
21920
        uint32_t _ptr_server;
 
21921
        uint32_t _ptr_environment;
 
21922
        uint32_t _ptr_buffer;
 
21923
        uint32_t _ptr_info;
 
21924
        TALLOC_CTX *_mem_save_server_0;
 
21925
        TALLOC_CTX *_mem_save_environment_0;
 
21926
        TALLOC_CTX *_mem_save_buffer_0;
 
21927
        TALLOC_CTX *_mem_save_info_0;
 
21928
        TALLOC_CTX *_mem_save_needed_0;
 
21929
        if (flags & NDR_IN) {
 
21930
                ZERO_STRUCT(r->out);
 
21931
 
 
21932
                NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_server));
 
21933
                if (_ptr_server) {
 
21934
                        NDR_PULL_ALLOC(ndr, r->in.server);
 
21935
                } else {
 
21936
                        r->in.server = NULL;
 
21937
                }
 
21938
                if (r->in.server) {
 
21939
                        _mem_save_server_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
21940
                        NDR_PULL_SET_MEM_CTX(ndr, r->in.server, 0);
 
21941
                        NDR_CHECK(ndr_pull_array_size(ndr, &r->in.server));
 
21942
                        NDR_CHECK(ndr_pull_array_length(ndr, &r->in.server));
 
21943
                        if (ndr_get_array_length(ndr, &r->in.server) > ndr_get_array_size(ndr, &r->in.server)) {
 
21944
                                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.server), ndr_get_array_length(ndr, &r->in.server));
 
21945
                        }
 
21946
                        NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.server), sizeof(uint16_t)));
 
21947
                        NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.server, ndr_get_array_length(ndr, &r->in.server), sizeof(uint16_t), CH_UTF16));
 
21948
                        NDR_PULL_SET_MEM_CTX(ndr, _mem_save_server_0, 0);
 
21949
                }
 
21950
                NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_environment));
 
21951
                if (_ptr_environment) {
 
21952
                        NDR_PULL_ALLOC(ndr, r->in.environment);
 
21953
                } else {
 
21954
                        r->in.environment = NULL;
 
21955
                }
 
21956
                if (r->in.environment) {
 
21957
                        _mem_save_environment_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
21958
                        NDR_PULL_SET_MEM_CTX(ndr, r->in.environment, 0);
 
21959
                        NDR_CHECK(ndr_pull_array_size(ndr, &r->in.environment));
 
21960
                        NDR_CHECK(ndr_pull_array_length(ndr, &r->in.environment));
 
21961
                        if (ndr_get_array_length(ndr, &r->in.environment) > ndr_get_array_size(ndr, &r->in.environment)) {
 
21962
                                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.environment), ndr_get_array_length(ndr, &r->in.environment));
 
21963
                        }
 
21964
                        NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.environment), sizeof(uint16_t)));
 
21965
                        NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.environment, ndr_get_array_length(ndr, &r->in.environment), sizeof(uint16_t), CH_UTF16));
 
21966
                        NDR_PULL_SET_MEM_CTX(ndr, _mem_save_environment_0, 0);
 
21967
                }
 
21968
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.level));
 
21969
                NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_buffer));
 
21970
                if (_ptr_buffer) {
 
21971
                        NDR_PULL_ALLOC(ndr, r->in.buffer);
 
21972
                } else {
 
21973
                        r->in.buffer = NULL;
 
21974
                }
 
21975
                if (r->in.buffer) {
 
21976
                        _mem_save_buffer_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
21977
                        NDR_PULL_SET_MEM_CTX(ndr, r->in.buffer, 0);
 
21978
                        NDR_CHECK(ndr_pull_DATA_BLOB(ndr, NDR_SCALARS, r->in.buffer));
 
21979
                        NDR_PULL_SET_MEM_CTX(ndr, _mem_save_buffer_0, 0);
 
21980
                }
 
21981
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.offered));
 
21982
                NDR_PULL_ALLOC(ndr, r->out.needed);
 
21983
                ZERO_STRUCTP(r->out.needed);
 
21984
        }
 
21985
        if (flags & NDR_OUT) {
 
21986
                NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_info));
 
21987
                if (_ptr_info) {
 
21988
                        NDR_PULL_ALLOC(ndr, r->out.info);
 
21989
                } else {
 
21990
                        r->out.info = NULL;
 
21991
                }
 
21992
                if (r->out.info) {
 
21993
                        _mem_save_info_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
21994
                        NDR_PULL_SET_MEM_CTX(ndr, r->out.info, 0);
 
21995
                        {
 
21996
                                struct ndr_pull *_ndr_info;
 
21997
                                NDR_CHECK(ndr_pull_subcontext_start(ndr, &_ndr_info, 4, r->in.offered));
 
21998
                                NDR_CHECK(ndr_pull_set_switch_value(_ndr_info, r->out.info, r->in.level));
 
21999
                                NDR_CHECK(ndr_pull_spoolss_DriverDirectoryInfo(_ndr_info, NDR_SCALARS, r->out.info));
 
22000
                                NDR_CHECK(ndr_pull_subcontext_end(ndr, _ndr_info, 4, r->in.offered));
 
22001
                        }
 
22002
                        NDR_PULL_SET_MEM_CTX(ndr, _mem_save_info_0, 0);
 
22003
                }
 
22004
                if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
 
22005
                        NDR_PULL_ALLOC(ndr, r->out.needed);
 
22006
                }
 
22007
                _mem_save_needed_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
22008
                NDR_PULL_SET_MEM_CTX(ndr, r->out.needed, LIBNDR_FLAG_REF_ALLOC);
 
22009
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.needed));
 
22010
                NDR_PULL_SET_MEM_CTX(ndr, _mem_save_needed_0, LIBNDR_FLAG_REF_ALLOC);
 
22011
                NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
 
22012
        }
 
22013
        return NDR_ERR_SUCCESS;
 
22014
}
 
22015
 
 
22016
_PUBLIC_ void ndr_print_spoolss_GetPrinterDriverDirectory(struct ndr_print *ndr, const char *name, int flags, const struct spoolss_GetPrinterDriverDirectory *r)
 
22017
{
 
22018
        ndr_print_struct(ndr, name, "spoolss_GetPrinterDriverDirectory");
 
22019
        ndr->depth++;
 
22020
        if (flags & NDR_SET_VALUES) {
 
22021
                ndr->flags |= LIBNDR_PRINT_SET_VALUES;
 
22022
        }
 
22023
        if (flags & NDR_IN) {
 
22024
                ndr_print_struct(ndr, "in", "spoolss_GetPrinterDriverDirectory");
 
22025
                ndr->depth++;
 
22026
                ndr_print_ptr(ndr, "server", r->in.server);
 
22027
                ndr->depth++;
 
22028
                if (r->in.server) {
 
22029
                        ndr_print_string(ndr, "server", r->in.server);
 
22030
                }
 
22031
                ndr->depth--;
 
22032
                ndr_print_ptr(ndr, "environment", r->in.environment);
 
22033
                ndr->depth++;
 
22034
                if (r->in.environment) {
 
22035
                        ndr_print_string(ndr, "environment", r->in.environment);
 
22036
                }
 
22037
                ndr->depth--;
 
22038
                ndr_print_uint32(ndr, "level", r->in.level);
 
22039
                ndr_print_ptr(ndr, "buffer", r->in.buffer);
 
22040
                ndr->depth++;
 
22041
                if (r->in.buffer) {
 
22042
                        ndr_print_DATA_BLOB(ndr, "buffer", *r->in.buffer);
 
22043
                }
 
22044
                ndr->depth--;
 
22045
                ndr_print_uint32(ndr, "offered", r->in.offered);
 
22046
                ndr->depth--;
 
22047
        }
 
22048
        if (flags & NDR_OUT) {
 
22049
                ndr_print_struct(ndr, "out", "spoolss_GetPrinterDriverDirectory");
 
22050
                ndr->depth++;
 
22051
                ndr_print_ptr(ndr, "info", r->out.info);
 
22052
                ndr->depth++;
 
22053
                if (r->out.info) {
 
22054
                        ndr_print_set_switch_value(ndr, r->out.info, r->in.level);
 
22055
                        ndr_print_spoolss_DriverDirectoryInfo(ndr, "info", r->out.info);
 
22056
                }
 
22057
                ndr->depth--;
 
22058
                ndr_print_ptr(ndr, "needed", r->out.needed);
 
22059
                ndr->depth++;
 
22060
                ndr_print_uint32(ndr, "needed", *r->out.needed);
 
22061
                ndr->depth--;
 
22062
                ndr_print_WERROR(ndr, "result", r->out.result);
 
22063
                ndr->depth--;
 
22064
        }
 
22065
        ndr->depth--;
 
22066
}
 
22067
 
 
22068
static enum ndr_err_code ndr_push_spoolss_DeletePrinterDriver(struct ndr_push *ndr, int flags, const struct spoolss_DeletePrinterDriver *r)
 
22069
{
 
22070
        if (flags & NDR_IN) {
 
22071
                NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.server));
 
22072
                if (r->in.server) {
 
22073
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.server, CH_UTF16)));
 
22074
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0));
 
22075
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.server, CH_UTF16)));
 
22076
                        NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.server, ndr_charset_length(r->in.server, CH_UTF16), sizeof(uint16_t), CH_UTF16));
 
22077
                }
 
22078
                NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.architecture, CH_UTF16)));
 
22079
                NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0));
 
22080
                NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.architecture, CH_UTF16)));
 
22081
                NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.architecture, ndr_charset_length(r->in.architecture, CH_UTF16), sizeof(uint16_t), CH_UTF16));
 
22082
                NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.driver, CH_UTF16)));
 
22083
                NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0));
 
22084
                NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.driver, CH_UTF16)));
 
22085
                NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.driver, ndr_charset_length(r->in.driver, CH_UTF16), sizeof(uint16_t), CH_UTF16));
 
22086
        }
 
22087
        if (flags & NDR_OUT) {
 
22088
                NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
 
22089
        }
 
22090
        return NDR_ERR_SUCCESS;
 
22091
}
 
22092
 
 
22093
static enum ndr_err_code ndr_pull_spoolss_DeletePrinterDriver(struct ndr_pull *ndr, int flags, struct spoolss_DeletePrinterDriver *r)
 
22094
{
 
22095
        uint32_t _ptr_server;
 
22096
        TALLOC_CTX *_mem_save_server_0;
 
22097
        if (flags & NDR_IN) {
 
22098
                NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_server));
 
22099
                if (_ptr_server) {
 
22100
                        NDR_PULL_ALLOC(ndr, r->in.server);
 
22101
                } else {
 
22102
                        r->in.server = NULL;
 
22103
                }
 
22104
                if (r->in.server) {
 
22105
                        _mem_save_server_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
22106
                        NDR_PULL_SET_MEM_CTX(ndr, r->in.server, 0);
 
22107
                        NDR_CHECK(ndr_pull_array_size(ndr, &r->in.server));
 
22108
                        NDR_CHECK(ndr_pull_array_length(ndr, &r->in.server));
 
22109
                        if (ndr_get_array_length(ndr, &r->in.server) > ndr_get_array_size(ndr, &r->in.server)) {
 
22110
                                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.server), ndr_get_array_length(ndr, &r->in.server));
 
22111
                        }
 
22112
                        NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.server), sizeof(uint16_t)));
 
22113
                        NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.server, ndr_get_array_length(ndr, &r->in.server), sizeof(uint16_t), CH_UTF16));
 
22114
                        NDR_PULL_SET_MEM_CTX(ndr, _mem_save_server_0, 0);
 
22115
                }
 
22116
                NDR_CHECK(ndr_pull_array_size(ndr, &r->in.architecture));
 
22117
                NDR_CHECK(ndr_pull_array_length(ndr, &r->in.architecture));
 
22118
                if (ndr_get_array_length(ndr, &r->in.architecture) > ndr_get_array_size(ndr, &r->in.architecture)) {
 
22119
                        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.architecture), ndr_get_array_length(ndr, &r->in.architecture));
 
22120
                }
 
22121
                NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.architecture), sizeof(uint16_t)));
 
22122
                NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.architecture, ndr_get_array_length(ndr, &r->in.architecture), sizeof(uint16_t), CH_UTF16));
 
22123
                NDR_CHECK(ndr_pull_array_size(ndr, &r->in.driver));
 
22124
                NDR_CHECK(ndr_pull_array_length(ndr, &r->in.driver));
 
22125
                if (ndr_get_array_length(ndr, &r->in.driver) > ndr_get_array_size(ndr, &r->in.driver)) {
 
22126
                        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.driver), ndr_get_array_length(ndr, &r->in.driver));
 
22127
                }
 
22128
                NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.driver), sizeof(uint16_t)));
 
22129
                NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.driver, ndr_get_array_length(ndr, &r->in.driver), sizeof(uint16_t), CH_UTF16));
 
22130
        }
 
22131
        if (flags & NDR_OUT) {
 
22132
                NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
 
22133
        }
 
22134
        return NDR_ERR_SUCCESS;
 
22135
}
 
22136
 
 
22137
_PUBLIC_ void ndr_print_spoolss_DeletePrinterDriver(struct ndr_print *ndr, const char *name, int flags, const struct spoolss_DeletePrinterDriver *r)
 
22138
{
 
22139
        ndr_print_struct(ndr, name, "spoolss_DeletePrinterDriver");
 
22140
        ndr->depth++;
 
22141
        if (flags & NDR_SET_VALUES) {
 
22142
                ndr->flags |= LIBNDR_PRINT_SET_VALUES;
 
22143
        }
 
22144
        if (flags & NDR_IN) {
 
22145
                ndr_print_struct(ndr, "in", "spoolss_DeletePrinterDriver");
 
22146
                ndr->depth++;
 
22147
                ndr_print_ptr(ndr, "server", r->in.server);
 
22148
                ndr->depth++;
 
22149
                if (r->in.server) {
 
22150
                        ndr_print_string(ndr, "server", r->in.server);
 
22151
                }
 
22152
                ndr->depth--;
 
22153
                ndr_print_string(ndr, "architecture", r->in.architecture);
 
22154
                ndr_print_string(ndr, "driver", r->in.driver);
 
22155
                ndr->depth--;
 
22156
        }
 
22157
        if (flags & NDR_OUT) {
 
22158
                ndr_print_struct(ndr, "out", "spoolss_DeletePrinterDriver");
 
22159
                ndr->depth++;
 
22160
                ndr_print_WERROR(ndr, "result", r->out.result);
 
22161
                ndr->depth--;
 
22162
        }
 
22163
        ndr->depth--;
 
22164
}
 
22165
 
 
22166
static enum ndr_err_code ndr_push_spoolss_AddPrintProcessor(struct ndr_push *ndr, int flags, const struct spoolss_AddPrintProcessor *r)
 
22167
{
 
22168
        if (flags & NDR_IN) {
 
22169
                NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.server));
 
22170
                if (r->in.server) {
 
22171
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.server, CH_UTF16)));
 
22172
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0));
 
22173
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.server, CH_UTF16)));
 
22174
                        NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.server, ndr_charset_length(r->in.server, CH_UTF16), sizeof(uint16_t), CH_UTF16));
 
22175
                }
 
22176
                NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.architecture, CH_UTF16)));
 
22177
                NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0));
 
22178
                NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.architecture, CH_UTF16)));
 
22179
                NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.architecture, ndr_charset_length(r->in.architecture, CH_UTF16), sizeof(uint16_t), CH_UTF16));
 
22180
                NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.path_name, CH_UTF16)));
 
22181
                NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0));
 
22182
                NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.path_name, CH_UTF16)));
 
22183
                NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.path_name, ndr_charset_length(r->in.path_name, CH_UTF16), sizeof(uint16_t), CH_UTF16));
 
22184
                NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.print_processor_name, CH_UTF16)));
 
22185
                NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0));
 
22186
                NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.print_processor_name, CH_UTF16)));
 
22187
                NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.print_processor_name, ndr_charset_length(r->in.print_processor_name, CH_UTF16), sizeof(uint16_t), CH_UTF16));
 
22188
        }
 
22189
        if (flags & NDR_OUT) {
 
22190
                NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
 
22191
        }
 
22192
        return NDR_ERR_SUCCESS;
 
22193
}
 
22194
 
 
22195
static enum ndr_err_code ndr_pull_spoolss_AddPrintProcessor(struct ndr_pull *ndr, int flags, struct spoolss_AddPrintProcessor *r)
 
22196
{
 
22197
        uint32_t _ptr_server;
 
22198
        TALLOC_CTX *_mem_save_server_0;
 
22199
        if (flags & NDR_IN) {
 
22200
                NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_server));
 
22201
                if (_ptr_server) {
 
22202
                        NDR_PULL_ALLOC(ndr, r->in.server);
 
22203
                } else {
 
22204
                        r->in.server = NULL;
 
22205
                }
 
22206
                if (r->in.server) {
 
22207
                        _mem_save_server_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
22208
                        NDR_PULL_SET_MEM_CTX(ndr, r->in.server, 0);
 
22209
                        NDR_CHECK(ndr_pull_array_size(ndr, &r->in.server));
 
22210
                        NDR_CHECK(ndr_pull_array_length(ndr, &r->in.server));
 
22211
                        if (ndr_get_array_length(ndr, &r->in.server) > ndr_get_array_size(ndr, &r->in.server)) {
 
22212
                                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.server), ndr_get_array_length(ndr, &r->in.server));
 
22213
                        }
 
22214
                        NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.server), sizeof(uint16_t)));
 
22215
                        NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.server, ndr_get_array_length(ndr, &r->in.server), sizeof(uint16_t), CH_UTF16));
 
22216
                        NDR_PULL_SET_MEM_CTX(ndr, _mem_save_server_0, 0);
 
22217
                }
 
22218
                NDR_CHECK(ndr_pull_array_size(ndr, &r->in.architecture));
 
22219
                NDR_CHECK(ndr_pull_array_length(ndr, &r->in.architecture));
 
22220
                if (ndr_get_array_length(ndr, &r->in.architecture) > ndr_get_array_size(ndr, &r->in.architecture)) {
 
22221
                        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.architecture), ndr_get_array_length(ndr, &r->in.architecture));
 
22222
                }
 
22223
                NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.architecture), sizeof(uint16_t)));
 
22224
                NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.architecture, ndr_get_array_length(ndr, &r->in.architecture), sizeof(uint16_t), CH_UTF16));
 
22225
                NDR_CHECK(ndr_pull_array_size(ndr, &r->in.path_name));
 
22226
                NDR_CHECK(ndr_pull_array_length(ndr, &r->in.path_name));
 
22227
                if (ndr_get_array_length(ndr, &r->in.path_name) > ndr_get_array_size(ndr, &r->in.path_name)) {
 
22228
                        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.path_name), ndr_get_array_length(ndr, &r->in.path_name));
 
22229
                }
 
22230
                NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.path_name), sizeof(uint16_t)));
 
22231
                NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.path_name, ndr_get_array_length(ndr, &r->in.path_name), sizeof(uint16_t), CH_UTF16));
 
22232
                NDR_CHECK(ndr_pull_array_size(ndr, &r->in.print_processor_name));
 
22233
                NDR_CHECK(ndr_pull_array_length(ndr, &r->in.print_processor_name));
 
22234
                if (ndr_get_array_length(ndr, &r->in.print_processor_name) > ndr_get_array_size(ndr, &r->in.print_processor_name)) {
 
22235
                        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.print_processor_name), ndr_get_array_length(ndr, &r->in.print_processor_name));
 
22236
                }
 
22237
                NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.print_processor_name), sizeof(uint16_t)));
 
22238
                NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.print_processor_name, ndr_get_array_length(ndr, &r->in.print_processor_name), sizeof(uint16_t), CH_UTF16));
 
22239
        }
 
22240
        if (flags & NDR_OUT) {
 
22241
                NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
 
22242
        }
 
22243
        return NDR_ERR_SUCCESS;
 
22244
}
 
22245
 
 
22246
_PUBLIC_ void ndr_print_spoolss_AddPrintProcessor(struct ndr_print *ndr, const char *name, int flags, const struct spoolss_AddPrintProcessor *r)
 
22247
{
 
22248
        ndr_print_struct(ndr, name, "spoolss_AddPrintProcessor");
 
22249
        ndr->depth++;
 
22250
        if (flags & NDR_SET_VALUES) {
 
22251
                ndr->flags |= LIBNDR_PRINT_SET_VALUES;
 
22252
        }
 
22253
        if (flags & NDR_IN) {
 
22254
                ndr_print_struct(ndr, "in", "spoolss_AddPrintProcessor");
 
22255
                ndr->depth++;
 
22256
                ndr_print_ptr(ndr, "server", r->in.server);
 
22257
                ndr->depth++;
 
22258
                if (r->in.server) {
 
22259
                        ndr_print_string(ndr, "server", r->in.server);
 
22260
                }
 
22261
                ndr->depth--;
 
22262
                ndr_print_string(ndr, "architecture", r->in.architecture);
 
22263
                ndr_print_string(ndr, "path_name", r->in.path_name);
 
22264
                ndr_print_string(ndr, "print_processor_name", r->in.print_processor_name);
 
22265
                ndr->depth--;
 
22266
        }
 
22267
        if (flags & NDR_OUT) {
 
22268
                ndr_print_struct(ndr, "out", "spoolss_AddPrintProcessor");
 
22269
                ndr->depth++;
 
22270
                ndr_print_WERROR(ndr, "result", r->out.result);
 
22271
                ndr->depth--;
 
22272
        }
 
22273
        ndr->depth--;
 
22274
}
 
22275
 
 
22276
_PUBLIC_ enum ndr_err_code ndr_push__spoolss_EnumPrintProcessors(struct ndr_push *ndr, int flags, const struct _spoolss_EnumPrintProcessors *r)
 
22277
{
 
22278
        if (flags & NDR_IN) {
 
22279
                NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.servername));
 
22280
                if (r->in.servername) {
 
22281
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.servername, CH_UTF16)));
 
22282
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0));
 
22283
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.servername, CH_UTF16)));
 
22284
                        NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.servername, ndr_charset_length(r->in.servername, CH_UTF16), sizeof(uint16_t), CH_UTF16));
 
22285
                }
 
22286
                NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.environment));
 
22287
                if (r->in.environment) {
 
22288
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.environment, CH_UTF16)));
 
22289
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0));
 
22290
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.environment, CH_UTF16)));
 
22291
                        NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.environment, ndr_charset_length(r->in.environment, CH_UTF16), sizeof(uint16_t), CH_UTF16));
 
22292
                }
 
22293
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.level));
 
22294
                NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.buffer));
 
22295
                if (r->in.buffer) {
 
22296
                        NDR_CHECK(ndr_push_DATA_BLOB(ndr, NDR_SCALARS, *r->in.buffer));
 
22297
                }
 
22298
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.offered));
 
22299
        }
 
22300
        if (flags & NDR_OUT) {
 
22301
                NDR_CHECK(ndr_push_unique_ptr(ndr, r->out.info));
 
22302
                if (r->out.info) {
 
22303
                        NDR_CHECK(ndr_push_DATA_BLOB(ndr, NDR_SCALARS, *r->out.info));
 
22304
                }
 
22305
                if (r->out.needed == NULL) {
 
22306
                        return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
 
22307
                }
 
22308
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.needed));
 
22309
                if (r->out.count == NULL) {
 
22310
                        return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
 
22311
                }
 
22312
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.count));
 
22313
                NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
 
22314
        }
 
22315
        return NDR_ERR_SUCCESS;
 
22316
}
 
22317
 
 
22318
_PUBLIC_ enum ndr_err_code ndr_pull__spoolss_EnumPrintProcessors(struct ndr_pull *ndr, int flags, struct _spoolss_EnumPrintProcessors *r)
 
22319
{
 
22320
        uint32_t _ptr_servername;
 
22321
        uint32_t _ptr_environment;
 
22322
        uint32_t _ptr_buffer;
 
22323
        uint32_t _ptr_info;
 
22324
        TALLOC_CTX *_mem_save_servername_0;
 
22325
        TALLOC_CTX *_mem_save_environment_0;
 
22326
        TALLOC_CTX *_mem_save_buffer_0;
 
22327
        TALLOC_CTX *_mem_save_info_0;
 
22328
        TALLOC_CTX *_mem_save_needed_0;
 
22329
        TALLOC_CTX *_mem_save_count_0;
 
22330
        if (flags & NDR_IN) {
 
22331
                ZERO_STRUCT(r->out);
 
22332
 
 
22333
                NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_servername));
 
22334
                if (_ptr_servername) {
 
22335
                        NDR_PULL_ALLOC(ndr, r->in.servername);
 
22336
                } else {
 
22337
                        r->in.servername = NULL;
 
22338
                }
 
22339
                if (r->in.servername) {
 
22340
                        _mem_save_servername_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
22341
                        NDR_PULL_SET_MEM_CTX(ndr, r->in.servername, 0);
 
22342
                        NDR_CHECK(ndr_pull_array_size(ndr, &r->in.servername));
 
22343
                        NDR_CHECK(ndr_pull_array_length(ndr, &r->in.servername));
 
22344
                        if (ndr_get_array_length(ndr, &r->in.servername) > ndr_get_array_size(ndr, &r->in.servername)) {
 
22345
                                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.servername), ndr_get_array_length(ndr, &r->in.servername));
 
22346
                        }
 
22347
                        NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.servername), sizeof(uint16_t)));
 
22348
                        NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.servername, ndr_get_array_length(ndr, &r->in.servername), sizeof(uint16_t), CH_UTF16));
 
22349
                        NDR_PULL_SET_MEM_CTX(ndr, _mem_save_servername_0, 0);
 
22350
                }
 
22351
                NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_environment));
 
22352
                if (_ptr_environment) {
 
22353
                        NDR_PULL_ALLOC(ndr, r->in.environment);
 
22354
                } else {
 
22355
                        r->in.environment = NULL;
 
22356
                }
 
22357
                if (r->in.environment) {
 
22358
                        _mem_save_environment_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
22359
                        NDR_PULL_SET_MEM_CTX(ndr, r->in.environment, 0);
 
22360
                        NDR_CHECK(ndr_pull_array_size(ndr, &r->in.environment));
 
22361
                        NDR_CHECK(ndr_pull_array_length(ndr, &r->in.environment));
 
22362
                        if (ndr_get_array_length(ndr, &r->in.environment) > ndr_get_array_size(ndr, &r->in.environment)) {
 
22363
                                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.environment), ndr_get_array_length(ndr, &r->in.environment));
 
22364
                        }
 
22365
                        NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.environment), sizeof(uint16_t)));
 
22366
                        NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.environment, ndr_get_array_length(ndr, &r->in.environment), sizeof(uint16_t), CH_UTF16));
 
22367
                        NDR_PULL_SET_MEM_CTX(ndr, _mem_save_environment_0, 0);
 
22368
                }
 
22369
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.level));
 
22370
                NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_buffer));
 
22371
                if (_ptr_buffer) {
 
22372
                        NDR_PULL_ALLOC(ndr, r->in.buffer);
 
22373
                } else {
 
22374
                        r->in.buffer = NULL;
 
22375
                }
 
22376
                if (r->in.buffer) {
 
22377
                        _mem_save_buffer_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
22378
                        NDR_PULL_SET_MEM_CTX(ndr, r->in.buffer, 0);
 
22379
                        NDR_CHECK(ndr_pull_DATA_BLOB(ndr, NDR_SCALARS, r->in.buffer));
 
22380
                        NDR_PULL_SET_MEM_CTX(ndr, _mem_save_buffer_0, 0);
 
22381
                }
 
22382
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.offered));
 
22383
                NDR_PULL_ALLOC(ndr, r->out.needed);
 
22384
                ZERO_STRUCTP(r->out.needed);
 
22385
                NDR_PULL_ALLOC(ndr, r->out.count);
 
22386
                ZERO_STRUCTP(r->out.count);
 
22387
        }
 
22388
        if (flags & NDR_OUT) {
 
22389
                NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_info));
 
22390
                if (_ptr_info) {
 
22391
                        NDR_PULL_ALLOC(ndr, r->out.info);
 
22392
                } else {
 
22393
                        r->out.info = NULL;
 
22394
                }
 
22395
                if (r->out.info) {
 
22396
                        _mem_save_info_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
22397
                        NDR_PULL_SET_MEM_CTX(ndr, r->out.info, 0);
 
22398
                        NDR_CHECK(ndr_pull_DATA_BLOB(ndr, NDR_SCALARS, r->out.info));
 
22399
                        NDR_PULL_SET_MEM_CTX(ndr, _mem_save_info_0, 0);
 
22400
                }
 
22401
                if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
 
22402
                        NDR_PULL_ALLOC(ndr, r->out.needed);
 
22403
                }
 
22404
                _mem_save_needed_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
22405
                NDR_PULL_SET_MEM_CTX(ndr, r->out.needed, LIBNDR_FLAG_REF_ALLOC);
 
22406
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.needed));
 
22407
                NDR_PULL_SET_MEM_CTX(ndr, _mem_save_needed_0, LIBNDR_FLAG_REF_ALLOC);
 
22408
                if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
 
22409
                        NDR_PULL_ALLOC(ndr, r->out.count);
 
22410
                }
 
22411
                _mem_save_count_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
22412
                NDR_PULL_SET_MEM_CTX(ndr, r->out.count, LIBNDR_FLAG_REF_ALLOC);
 
22413
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.count));
 
22414
                NDR_PULL_SET_MEM_CTX(ndr, _mem_save_count_0, LIBNDR_FLAG_REF_ALLOC);
 
22415
                NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
 
22416
        }
 
22417
        return NDR_ERR_SUCCESS;
 
22418
}
 
22419
 
 
22420
_PUBLIC_ enum ndr_err_code ndr_push___spoolss_EnumPrintProcessors(struct ndr_push *ndr, int flags, const struct __spoolss_EnumPrintProcessors *r)
 
22421
{
 
22422
        uint32_t cntr_info_0;
 
22423
        if (flags & NDR_IN) {
 
22424
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.level));
 
22425
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.count));
 
22426
        }
 
22427
        if (flags & NDR_OUT) {
 
22428
                for (cntr_info_0 = 0; cntr_info_0 < r->in.count; cntr_info_0++) {
 
22429
                        NDR_CHECK(ndr_push_set_switch_value(ndr, &r->out.info[cntr_info_0], r->in.level));
 
22430
                        NDR_CHECK(ndr_push_spoolss_PrintProcessorInfo(ndr, NDR_SCALARS, &r->out.info[cntr_info_0]));
 
22431
                }
 
22432
                for (cntr_info_0 = 0; cntr_info_0 < r->in.count; cntr_info_0++) {
 
22433
                        NDR_CHECK(ndr_push_spoolss_PrintProcessorInfo(ndr, NDR_BUFFERS, &r->out.info[cntr_info_0]));
 
22434
                }
 
22435
        }
 
22436
        return NDR_ERR_SUCCESS;
 
22437
}
 
22438
 
 
22439
_PUBLIC_ enum ndr_err_code ndr_pull___spoolss_EnumPrintProcessors(struct ndr_pull *ndr, int flags, struct __spoolss_EnumPrintProcessors *r)
 
22440
{
 
22441
        uint32_t cntr_info_0;
 
22442
        TALLOC_CTX *_mem_save_info_0;
 
22443
        if (flags & NDR_IN) {
 
22444
                ZERO_STRUCT(r->out);
 
22445
 
 
22446
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.level));
 
22447
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.count));
 
22448
        }
 
22449
        if (flags & NDR_OUT) {
 
22450
                NDR_PULL_ALLOC_N(ndr, r->out.info, r->in.count);
 
22451
                _mem_save_info_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
22452
                NDR_PULL_SET_MEM_CTX(ndr, r->out.info, 0);
 
22453
                for (cntr_info_0 = 0; cntr_info_0 < r->in.count; cntr_info_0++) {
 
22454
                        NDR_CHECK(ndr_pull_set_switch_value(ndr, &r->out.info[cntr_info_0], r->in.level));
 
22455
                        NDR_CHECK(ndr_pull_spoolss_PrintProcessorInfo(ndr, NDR_SCALARS, &r->out.info[cntr_info_0]));
 
22456
                }
 
22457
                for (cntr_info_0 = 0; cntr_info_0 < r->in.count; cntr_info_0++) {
 
22458
                        NDR_CHECK(ndr_pull_spoolss_PrintProcessorInfo(ndr, NDR_BUFFERS, &r->out.info[cntr_info_0]));
 
22459
                }
 
22460
                NDR_PULL_SET_MEM_CTX(ndr, _mem_save_info_0, 0);
 
22461
        }
 
22462
        return NDR_ERR_SUCCESS;
 
22463
}
 
22464
 
 
22465
_PUBLIC_ void ndr_print_spoolss_EnumPrintProcessors(struct ndr_print *ndr, const char *name, int flags, const struct spoolss_EnumPrintProcessors *r)
 
22466
{
 
22467
        uint32_t cntr_info_2;
 
22468
        ndr_print_struct(ndr, name, "spoolss_EnumPrintProcessors");
 
22469
        ndr->depth++;
 
22470
        if (flags & NDR_SET_VALUES) {
 
22471
                ndr->flags |= LIBNDR_PRINT_SET_VALUES;
 
22472
        }
 
22473
        if (flags & NDR_IN) {
 
22474
                ndr_print_struct(ndr, "in", "spoolss_EnumPrintProcessors");
 
22475
                ndr->depth++;
 
22476
                ndr_print_ptr(ndr, "servername", r->in.servername);
 
22477
                ndr->depth++;
 
22478
                if (r->in.servername) {
 
22479
                        ndr_print_string(ndr, "servername", r->in.servername);
 
22480
                }
 
22481
                ndr->depth--;
 
22482
                ndr_print_ptr(ndr, "environment", r->in.environment);
 
22483
                ndr->depth++;
 
22484
                if (r->in.environment) {
 
22485
                        ndr_print_string(ndr, "environment", r->in.environment);
 
22486
                }
 
22487
                ndr->depth--;
 
22488
                ndr_print_uint32(ndr, "level", r->in.level);
 
22489
                ndr_print_ptr(ndr, "buffer", r->in.buffer);
 
22490
                ndr->depth++;
 
22491
                if (r->in.buffer) {
 
22492
                        ndr_print_DATA_BLOB(ndr, "buffer", *r->in.buffer);
 
22493
                }
 
22494
                ndr->depth--;
 
22495
                ndr_print_uint32(ndr, "offered", r->in.offered);
 
22496
                ndr->depth--;
 
22497
        }
 
22498
        if (flags & NDR_OUT) {
 
22499
                ndr_print_struct(ndr, "out", "spoolss_EnumPrintProcessors");
 
22500
                ndr->depth++;
 
22501
                ndr_print_ptr(ndr, "count", r->out.count);
 
22502
                ndr->depth++;
 
22503
                ndr_print_uint32(ndr, "count", *r->out.count);
 
22504
                ndr->depth--;
 
22505
                ndr_print_ptr(ndr, "info", r->out.info);
 
22506
                ndr->depth++;
 
22507
                ndr_print_ptr(ndr, "info", *r->out.info);
 
22508
                ndr->depth++;
 
22509
                if (*r->out.info) {
 
22510
                        ndr->print(ndr, "%s: ARRAY(%d)", "info", (int)*r->out.count);
 
22511
                        ndr->depth++;
 
22512
                        for (cntr_info_2=0;cntr_info_2<*r->out.count;cntr_info_2++) {
 
22513
                                char *idx_2=NULL;
 
22514
                                if (asprintf(&idx_2, "[%d]", cntr_info_2) != -1) {
 
22515
                                        ndr_print_set_switch_value(ndr, &(*r->out.info)[cntr_info_2], r->in.level);
 
22516
                                        ndr_print_spoolss_PrintProcessorInfo(ndr, "info", &(*r->out.info)[cntr_info_2]);
 
22517
                                        free(idx_2);
 
22518
                                }
 
22519
                        }
 
22520
                        ndr->depth--;
 
22521
                }
 
22522
                ndr->depth--;
 
22523
                ndr->depth--;
 
22524
                ndr_print_ptr(ndr, "needed", r->out.needed);
 
22525
                ndr->depth++;
 
22526
                ndr_print_uint32(ndr, "needed", *r->out.needed);
 
22527
                ndr->depth--;
 
22528
                ndr_print_WERROR(ndr, "result", r->out.result);
 
22529
                ndr->depth--;
 
22530
        }
 
22531
        ndr->depth--;
 
22532
}
 
22533
 
 
22534
static enum ndr_err_code ndr_push_spoolss_GetPrintProcessorDirectory(struct ndr_push *ndr, int flags, const struct spoolss_GetPrintProcessorDirectory *r)
 
22535
{
 
22536
        if (flags & NDR_IN) {
 
22537
                NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.server));
 
22538
                if (r->in.server) {
 
22539
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.server, CH_UTF16)));
 
22540
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0));
 
22541
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.server, CH_UTF16)));
 
22542
                        NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.server, ndr_charset_length(r->in.server, CH_UTF16), sizeof(uint16_t), CH_UTF16));
 
22543
                }
 
22544
                NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.environment));
 
22545
                if (r->in.environment) {
 
22546
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.environment, CH_UTF16)));
 
22547
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0));
 
22548
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.environment, CH_UTF16)));
 
22549
                        NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.environment, ndr_charset_length(r->in.environment, CH_UTF16), sizeof(uint16_t), CH_UTF16));
 
22550
                }
 
22551
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.level));
 
22552
                NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.buffer));
 
22553
                if (r->in.buffer) {
 
22554
                        NDR_CHECK(ndr_push_DATA_BLOB(ndr, NDR_SCALARS, *r->in.buffer));
 
22555
                }
 
22556
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.offered));
 
22557
        }
 
22558
        if (flags & NDR_OUT) {
 
22559
                NDR_CHECK(ndr_push_unique_ptr(ndr, r->out.info));
 
22560
                if (r->out.info) {
 
22561
                        {
 
22562
                                struct ndr_push *_ndr_info;
 
22563
                                NDR_CHECK(ndr_push_subcontext_start(ndr, &_ndr_info, 4, r->in.offered));
 
22564
                                NDR_CHECK(ndr_push_set_switch_value(_ndr_info, r->out.info, r->in.level));
 
22565
                                NDR_CHECK(ndr_push_spoolss_PrintProcessorDirectoryInfo(_ndr_info, NDR_SCALARS, r->out.info));
 
22566
                                NDR_CHECK(ndr_push_subcontext_end(ndr, _ndr_info, 4, r->in.offered));
 
22567
                        }
 
22568
                }
 
22569
                if (r->out.needed == NULL) {
 
22570
                        return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
 
22571
                }
 
22572
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.needed));
 
22573
                NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
 
22574
        }
 
22575
        return NDR_ERR_SUCCESS;
 
22576
}
 
22577
 
 
22578
static enum ndr_err_code ndr_pull_spoolss_GetPrintProcessorDirectory(struct ndr_pull *ndr, int flags, struct spoolss_GetPrintProcessorDirectory *r)
 
22579
{
 
22580
        uint32_t _ptr_server;
 
22581
        uint32_t _ptr_environment;
 
22582
        uint32_t _ptr_buffer;
 
22583
        uint32_t _ptr_info;
 
22584
        TALLOC_CTX *_mem_save_server_0;
 
22585
        TALLOC_CTX *_mem_save_environment_0;
 
22586
        TALLOC_CTX *_mem_save_buffer_0;
 
22587
        TALLOC_CTX *_mem_save_info_0;
 
22588
        TALLOC_CTX *_mem_save_needed_0;
 
22589
        if (flags & NDR_IN) {
 
22590
                ZERO_STRUCT(r->out);
 
22591
 
 
22592
                NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_server));
 
22593
                if (_ptr_server) {
 
22594
                        NDR_PULL_ALLOC(ndr, r->in.server);
 
22595
                } else {
 
22596
                        r->in.server = NULL;
 
22597
                }
 
22598
                if (r->in.server) {
 
22599
                        _mem_save_server_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
22600
                        NDR_PULL_SET_MEM_CTX(ndr, r->in.server, 0);
 
22601
                        NDR_CHECK(ndr_pull_array_size(ndr, &r->in.server));
 
22602
                        NDR_CHECK(ndr_pull_array_length(ndr, &r->in.server));
 
22603
                        if (ndr_get_array_length(ndr, &r->in.server) > ndr_get_array_size(ndr, &r->in.server)) {
 
22604
                                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.server), ndr_get_array_length(ndr, &r->in.server));
 
22605
                        }
 
22606
                        NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.server), sizeof(uint16_t)));
 
22607
                        NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.server, ndr_get_array_length(ndr, &r->in.server), sizeof(uint16_t), CH_UTF16));
 
22608
                        NDR_PULL_SET_MEM_CTX(ndr, _mem_save_server_0, 0);
 
22609
                }
 
22610
                NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_environment));
 
22611
                if (_ptr_environment) {
 
22612
                        NDR_PULL_ALLOC(ndr, r->in.environment);
 
22613
                } else {
 
22614
                        r->in.environment = NULL;
 
22615
                }
 
22616
                if (r->in.environment) {
 
22617
                        _mem_save_environment_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
22618
                        NDR_PULL_SET_MEM_CTX(ndr, r->in.environment, 0);
 
22619
                        NDR_CHECK(ndr_pull_array_size(ndr, &r->in.environment));
 
22620
                        NDR_CHECK(ndr_pull_array_length(ndr, &r->in.environment));
 
22621
                        if (ndr_get_array_length(ndr, &r->in.environment) > ndr_get_array_size(ndr, &r->in.environment)) {
 
22622
                                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.environment), ndr_get_array_length(ndr, &r->in.environment));
 
22623
                        }
 
22624
                        NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.environment), sizeof(uint16_t)));
 
22625
                        NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.environment, ndr_get_array_length(ndr, &r->in.environment), sizeof(uint16_t), CH_UTF16));
 
22626
                        NDR_PULL_SET_MEM_CTX(ndr, _mem_save_environment_0, 0);
 
22627
                }
 
22628
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.level));
 
22629
                NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_buffer));
 
22630
                if (_ptr_buffer) {
 
22631
                        NDR_PULL_ALLOC(ndr, r->in.buffer);
 
22632
                } else {
 
22633
                        r->in.buffer = NULL;
 
22634
                }
 
22635
                if (r->in.buffer) {
 
22636
                        _mem_save_buffer_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
22637
                        NDR_PULL_SET_MEM_CTX(ndr, r->in.buffer, 0);
 
22638
                        NDR_CHECK(ndr_pull_DATA_BLOB(ndr, NDR_SCALARS, r->in.buffer));
 
22639
                        NDR_PULL_SET_MEM_CTX(ndr, _mem_save_buffer_0, 0);
 
22640
                }
 
22641
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.offered));
 
22642
                NDR_PULL_ALLOC(ndr, r->out.needed);
 
22643
                ZERO_STRUCTP(r->out.needed);
 
22644
        }
 
22645
        if (flags & NDR_OUT) {
 
22646
                NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_info));
 
22647
                if (_ptr_info) {
 
22648
                        NDR_PULL_ALLOC(ndr, r->out.info);
 
22649
                } else {
 
22650
                        r->out.info = NULL;
 
22651
                }
 
22652
                if (r->out.info) {
 
22653
                        _mem_save_info_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
22654
                        NDR_PULL_SET_MEM_CTX(ndr, r->out.info, 0);
 
22655
                        {
 
22656
                                struct ndr_pull *_ndr_info;
 
22657
                                NDR_CHECK(ndr_pull_subcontext_start(ndr, &_ndr_info, 4, r->in.offered));
 
22658
                                NDR_CHECK(ndr_pull_set_switch_value(_ndr_info, r->out.info, r->in.level));
 
22659
                                NDR_CHECK(ndr_pull_spoolss_PrintProcessorDirectoryInfo(_ndr_info, NDR_SCALARS, r->out.info));
 
22660
                                NDR_CHECK(ndr_pull_subcontext_end(ndr, _ndr_info, 4, r->in.offered));
 
22661
                        }
 
22662
                        NDR_PULL_SET_MEM_CTX(ndr, _mem_save_info_0, 0);
 
22663
                }
 
22664
                if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
 
22665
                        NDR_PULL_ALLOC(ndr, r->out.needed);
 
22666
                }
 
22667
                _mem_save_needed_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
22668
                NDR_PULL_SET_MEM_CTX(ndr, r->out.needed, LIBNDR_FLAG_REF_ALLOC);
 
22669
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.needed));
 
22670
                NDR_PULL_SET_MEM_CTX(ndr, _mem_save_needed_0, LIBNDR_FLAG_REF_ALLOC);
 
22671
                NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
 
22672
        }
 
22673
        return NDR_ERR_SUCCESS;
 
22674
}
 
22675
 
 
22676
_PUBLIC_ void ndr_print_spoolss_GetPrintProcessorDirectory(struct ndr_print *ndr, const char *name, int flags, const struct spoolss_GetPrintProcessorDirectory *r)
 
22677
{
 
22678
        ndr_print_struct(ndr, name, "spoolss_GetPrintProcessorDirectory");
 
22679
        ndr->depth++;
 
22680
        if (flags & NDR_SET_VALUES) {
 
22681
                ndr->flags |= LIBNDR_PRINT_SET_VALUES;
 
22682
        }
 
22683
        if (flags & NDR_IN) {
 
22684
                ndr_print_struct(ndr, "in", "spoolss_GetPrintProcessorDirectory");
 
22685
                ndr->depth++;
 
22686
                ndr_print_ptr(ndr, "server", r->in.server);
 
22687
                ndr->depth++;
 
22688
                if (r->in.server) {
 
22689
                        ndr_print_string(ndr, "server", r->in.server);
 
22690
                }
 
22691
                ndr->depth--;
 
22692
                ndr_print_ptr(ndr, "environment", r->in.environment);
 
22693
                ndr->depth++;
 
22694
                if (r->in.environment) {
 
22695
                        ndr_print_string(ndr, "environment", r->in.environment);
 
22696
                }
 
22697
                ndr->depth--;
 
22698
                ndr_print_uint32(ndr, "level", r->in.level);
 
22699
                ndr_print_ptr(ndr, "buffer", r->in.buffer);
 
22700
                ndr->depth++;
 
22701
                if (r->in.buffer) {
 
22702
                        ndr_print_DATA_BLOB(ndr, "buffer", *r->in.buffer);
 
22703
                }
 
22704
                ndr->depth--;
 
22705
                ndr_print_uint32(ndr, "offered", r->in.offered);
 
22706
                ndr->depth--;
 
22707
        }
 
22708
        if (flags & NDR_OUT) {
 
22709
                ndr_print_struct(ndr, "out", "spoolss_GetPrintProcessorDirectory");
 
22710
                ndr->depth++;
 
22711
                ndr_print_ptr(ndr, "info", r->out.info);
 
22712
                ndr->depth++;
 
22713
                if (r->out.info) {
 
22714
                        ndr_print_set_switch_value(ndr, r->out.info, r->in.level);
 
22715
                        ndr_print_spoolss_PrintProcessorDirectoryInfo(ndr, "info", r->out.info);
 
22716
                }
 
22717
                ndr->depth--;
 
22718
                ndr_print_ptr(ndr, "needed", r->out.needed);
 
22719
                ndr->depth++;
 
22720
                ndr_print_uint32(ndr, "needed", *r->out.needed);
 
22721
                ndr->depth--;
 
22722
                ndr_print_WERROR(ndr, "result", r->out.result);
 
22723
                ndr->depth--;
 
22724
        }
 
22725
        ndr->depth--;
 
22726
}
 
22727
 
 
22728
static enum ndr_err_code ndr_push_spoolss_StartDocPrinter(struct ndr_push *ndr, int flags, const struct spoolss_StartDocPrinter *r)
 
22729
{
 
22730
        if (flags & NDR_IN) {
 
22731
                if (r->in.handle == NULL) {
 
22732
                        return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
 
22733
                }
 
22734
                NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
 
22735
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.level));
 
22736
                NDR_CHECK(ndr_push_set_switch_value(ndr, &r->in.info, r->in.level));
 
22737
                NDR_CHECK(ndr_push_spoolss_DocumentInfo(ndr, NDR_SCALARS|NDR_BUFFERS, &r->in.info));
 
22738
        }
 
22739
        if (flags & NDR_OUT) {
 
22740
                if (r->out.job_id == NULL) {
 
22741
                        return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
 
22742
                }
 
22743
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.job_id));
 
22744
                NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
 
22745
        }
 
22746
        return NDR_ERR_SUCCESS;
 
22747
}
 
22748
 
 
22749
static enum ndr_err_code ndr_pull_spoolss_StartDocPrinter(struct ndr_pull *ndr, int flags, struct spoolss_StartDocPrinter *r)
 
22750
{
 
22751
        TALLOC_CTX *_mem_save_handle_0;
 
22752
        TALLOC_CTX *_mem_save_job_id_0;
 
22753
        if (flags & NDR_IN) {
 
22754
                ZERO_STRUCT(r->out);
 
22755
 
 
22756
                if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
 
22757
                        NDR_PULL_ALLOC(ndr, r->in.handle);
 
22758
                }
 
22759
                _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
22760
                NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
 
22761
                NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
 
22762
                NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
 
22763
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.level));
 
22764
                NDR_CHECK(ndr_pull_set_switch_value(ndr, &r->in.info, r->in.level));
 
22765
                NDR_CHECK(ndr_pull_spoolss_DocumentInfo(ndr, NDR_SCALARS|NDR_BUFFERS, &r->in.info));
 
22766
                NDR_PULL_ALLOC(ndr, r->out.job_id);
 
22767
                ZERO_STRUCTP(r->out.job_id);
 
22768
        }
 
22769
        if (flags & NDR_OUT) {
 
22770
                if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
 
22771
                        NDR_PULL_ALLOC(ndr, r->out.job_id);
 
22772
                }
 
22773
                _mem_save_job_id_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
22774
                NDR_PULL_SET_MEM_CTX(ndr, r->out.job_id, LIBNDR_FLAG_REF_ALLOC);
 
22775
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.job_id));
 
22776
                NDR_PULL_SET_MEM_CTX(ndr, _mem_save_job_id_0, LIBNDR_FLAG_REF_ALLOC);
 
22777
                NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
 
22778
        }
 
22779
        return NDR_ERR_SUCCESS;
 
22780
}
 
22781
 
 
22782
_PUBLIC_ void ndr_print_spoolss_StartDocPrinter(struct ndr_print *ndr, const char *name, int flags, const struct spoolss_StartDocPrinter *r)
 
22783
{
 
22784
        ndr_print_struct(ndr, name, "spoolss_StartDocPrinter");
 
22785
        ndr->depth++;
 
22786
        if (flags & NDR_SET_VALUES) {
 
22787
                ndr->flags |= LIBNDR_PRINT_SET_VALUES;
 
22788
        }
 
22789
        if (flags & NDR_IN) {
 
22790
                ndr_print_struct(ndr, "in", "spoolss_StartDocPrinter");
 
22791
                ndr->depth++;
 
22792
                ndr_print_ptr(ndr, "handle", r->in.handle);
 
22793
                ndr->depth++;
 
22794
                ndr_print_policy_handle(ndr, "handle", r->in.handle);
 
22795
                ndr->depth--;
 
22796
                ndr_print_uint32(ndr, "level", r->in.level);
 
22797
                ndr_print_set_switch_value(ndr, &r->in.info, r->in.level);
 
22798
                ndr_print_spoolss_DocumentInfo(ndr, "info", &r->in.info);
 
22799
                ndr->depth--;
 
22800
        }
 
22801
        if (flags & NDR_OUT) {
 
22802
                ndr_print_struct(ndr, "out", "spoolss_StartDocPrinter");
 
22803
                ndr->depth++;
 
22804
                ndr_print_ptr(ndr, "job_id", r->out.job_id);
 
22805
                ndr->depth++;
 
22806
                ndr_print_uint32(ndr, "job_id", *r->out.job_id);
 
22807
                ndr->depth--;
 
22808
                ndr_print_WERROR(ndr, "result", r->out.result);
 
22809
                ndr->depth--;
 
22810
        }
 
22811
        ndr->depth--;
 
22812
}
 
22813
 
 
22814
static enum ndr_err_code ndr_push_spoolss_StartPagePrinter(struct ndr_push *ndr, int flags, const struct spoolss_StartPagePrinter *r)
 
22815
{
 
22816
        if (flags & NDR_IN) {
 
22817
                if (r->in.handle == NULL) {
 
22818
                        return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
 
22819
                }
 
22820
                NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
 
22821
        }
 
22822
        if (flags & NDR_OUT) {
 
22823
                NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
 
22824
        }
 
22825
        return NDR_ERR_SUCCESS;
 
22826
}
 
22827
 
 
22828
static enum ndr_err_code ndr_pull_spoolss_StartPagePrinter(struct ndr_pull *ndr, int flags, struct spoolss_StartPagePrinter *r)
 
22829
{
 
22830
        TALLOC_CTX *_mem_save_handle_0;
 
22831
        if (flags & NDR_IN) {
 
22832
                if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
 
22833
                        NDR_PULL_ALLOC(ndr, r->in.handle);
 
22834
                }
 
22835
                _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
22836
                NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
 
22837
                NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
 
22838
                NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
 
22839
        }
 
22840
        if (flags & NDR_OUT) {
 
22841
                NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
 
22842
        }
 
22843
        return NDR_ERR_SUCCESS;
 
22844
}
 
22845
 
 
22846
_PUBLIC_ void ndr_print_spoolss_StartPagePrinter(struct ndr_print *ndr, const char *name, int flags, const struct spoolss_StartPagePrinter *r)
 
22847
{
 
22848
        ndr_print_struct(ndr, name, "spoolss_StartPagePrinter");
 
22849
        ndr->depth++;
 
22850
        if (flags & NDR_SET_VALUES) {
 
22851
                ndr->flags |= LIBNDR_PRINT_SET_VALUES;
 
22852
        }
 
22853
        if (flags & NDR_IN) {
 
22854
                ndr_print_struct(ndr, "in", "spoolss_StartPagePrinter");
 
22855
                ndr->depth++;
 
22856
                ndr_print_ptr(ndr, "handle", r->in.handle);
 
22857
                ndr->depth++;
 
22858
                ndr_print_policy_handle(ndr, "handle", r->in.handle);
 
22859
                ndr->depth--;
 
22860
                ndr->depth--;
 
22861
        }
 
22862
        if (flags & NDR_OUT) {
 
22863
                ndr_print_struct(ndr, "out", "spoolss_StartPagePrinter");
 
22864
                ndr->depth++;
 
22865
                ndr_print_WERROR(ndr, "result", r->out.result);
 
22866
                ndr->depth--;
 
22867
        }
 
22868
        ndr->depth--;
 
22869
}
 
22870
 
 
22871
static enum ndr_err_code ndr_push_spoolss_WritePrinter(struct ndr_push *ndr, int flags, const struct spoolss_WritePrinter *r)
 
22872
{
 
22873
        if (flags & NDR_IN) {
 
22874
                if (r->in.handle == NULL) {
 
22875
                        return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
 
22876
                }
 
22877
                NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
 
22878
                NDR_CHECK(ndr_push_DATA_BLOB(ndr, NDR_SCALARS, r->in.data));
 
22879
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.data.length));
 
22880
        }
 
22881
        if (flags & NDR_OUT) {
 
22882
                if (r->out.num_written == NULL) {
 
22883
                        return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
 
22884
                }
 
22885
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.num_written));
 
22886
                NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
 
22887
        }
 
22888
        return NDR_ERR_SUCCESS;
 
22889
}
 
22890
 
 
22891
static enum ndr_err_code ndr_pull_spoolss_WritePrinter(struct ndr_pull *ndr, int flags, struct spoolss_WritePrinter *r)
 
22892
{
 
22893
        TALLOC_CTX *_mem_save_handle_0;
 
22894
        TALLOC_CTX *_mem_save_num_written_0;
 
22895
        if (flags & NDR_IN) {
 
22896
                ZERO_STRUCT(r->out);
 
22897
 
 
22898
                if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
 
22899
                        NDR_PULL_ALLOC(ndr, r->in.handle);
 
22900
                }
 
22901
                _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
22902
                NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
 
22903
                NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
 
22904
                NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
 
22905
                NDR_CHECK(ndr_pull_DATA_BLOB(ndr, NDR_SCALARS, &r->in.data));
 
22906
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in._data_size));
 
22907
                NDR_PULL_ALLOC(ndr, r->out.num_written);
 
22908
                ZERO_STRUCTP(r->out.num_written);
 
22909
        }
 
22910
        if (flags & NDR_OUT) {
 
22911
                if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
 
22912
                        NDR_PULL_ALLOC(ndr, r->out.num_written);
 
22913
                }
 
22914
                _mem_save_num_written_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
22915
                NDR_PULL_SET_MEM_CTX(ndr, r->out.num_written, LIBNDR_FLAG_REF_ALLOC);
 
22916
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.num_written));
 
22917
                NDR_PULL_SET_MEM_CTX(ndr, _mem_save_num_written_0, LIBNDR_FLAG_REF_ALLOC);
 
22918
                NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
 
22919
        }
 
22920
        return NDR_ERR_SUCCESS;
 
22921
}
 
22922
 
 
22923
_PUBLIC_ void ndr_print_spoolss_WritePrinter(struct ndr_print *ndr, const char *name, int flags, const struct spoolss_WritePrinter *r)
 
22924
{
 
22925
        ndr_print_struct(ndr, name, "spoolss_WritePrinter");
 
22926
        ndr->depth++;
 
22927
        if (flags & NDR_SET_VALUES) {
 
22928
                ndr->flags |= LIBNDR_PRINT_SET_VALUES;
 
22929
        }
 
22930
        if (flags & NDR_IN) {
 
22931
                ndr_print_struct(ndr, "in", "spoolss_WritePrinter");
 
22932
                ndr->depth++;
 
22933
                ndr_print_ptr(ndr, "handle", r->in.handle);
 
22934
                ndr->depth++;
 
22935
                ndr_print_policy_handle(ndr, "handle", r->in.handle);
 
22936
                ndr->depth--;
 
22937
                ndr_print_DATA_BLOB(ndr, "data", r->in.data);
 
22938
                ndr_print_uint32(ndr, "_data_size", (ndr->flags & LIBNDR_PRINT_SET_VALUES)?r->in.data.length:r->in._data_size);
 
22939
                ndr->depth--;
 
22940
        }
 
22941
        if (flags & NDR_OUT) {
 
22942
                ndr_print_struct(ndr, "out", "spoolss_WritePrinter");
 
22943
                ndr->depth++;
 
22944
                ndr_print_ptr(ndr, "num_written", r->out.num_written);
 
22945
                ndr->depth++;
 
22946
                ndr_print_uint32(ndr, "num_written", *r->out.num_written);
 
22947
                ndr->depth--;
 
22948
                ndr_print_WERROR(ndr, "result", r->out.result);
 
22949
                ndr->depth--;
 
22950
        }
 
22951
        ndr->depth--;
 
22952
}
 
22953
 
 
22954
static enum ndr_err_code ndr_push_spoolss_EndPagePrinter(struct ndr_push *ndr, int flags, const struct spoolss_EndPagePrinter *r)
 
22955
{
 
22956
        if (flags & NDR_IN) {
 
22957
                if (r->in.handle == NULL) {
 
22958
                        return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
 
22959
                }
 
22960
                NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
 
22961
        }
 
22962
        if (flags & NDR_OUT) {
 
22963
                NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
 
22964
        }
 
22965
        return NDR_ERR_SUCCESS;
 
22966
}
 
22967
 
 
22968
static enum ndr_err_code ndr_pull_spoolss_EndPagePrinter(struct ndr_pull *ndr, int flags, struct spoolss_EndPagePrinter *r)
 
22969
{
 
22970
        TALLOC_CTX *_mem_save_handle_0;
 
22971
        if (flags & NDR_IN) {
 
22972
                if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
 
22973
                        NDR_PULL_ALLOC(ndr, r->in.handle);
 
22974
                }
 
22975
                _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
22976
                NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
 
22977
                NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
 
22978
                NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
 
22979
        }
 
22980
        if (flags & NDR_OUT) {
 
22981
                NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
 
22982
        }
 
22983
        return NDR_ERR_SUCCESS;
 
22984
}
 
22985
 
 
22986
_PUBLIC_ void ndr_print_spoolss_EndPagePrinter(struct ndr_print *ndr, const char *name, int flags, const struct spoolss_EndPagePrinter *r)
 
22987
{
 
22988
        ndr_print_struct(ndr, name, "spoolss_EndPagePrinter");
 
22989
        ndr->depth++;
 
22990
        if (flags & NDR_SET_VALUES) {
 
22991
                ndr->flags |= LIBNDR_PRINT_SET_VALUES;
 
22992
        }
 
22993
        if (flags & NDR_IN) {
 
22994
                ndr_print_struct(ndr, "in", "spoolss_EndPagePrinter");
 
22995
                ndr->depth++;
 
22996
                ndr_print_ptr(ndr, "handle", r->in.handle);
 
22997
                ndr->depth++;
 
22998
                ndr_print_policy_handle(ndr, "handle", r->in.handle);
 
22999
                ndr->depth--;
 
23000
                ndr->depth--;
 
23001
        }
 
23002
        if (flags & NDR_OUT) {
 
23003
                ndr_print_struct(ndr, "out", "spoolss_EndPagePrinter");
 
23004
                ndr->depth++;
 
23005
                ndr_print_WERROR(ndr, "result", r->out.result);
 
23006
                ndr->depth--;
 
23007
        }
 
23008
        ndr->depth--;
 
23009
}
 
23010
 
 
23011
static enum ndr_err_code ndr_push_spoolss_AbortPrinter(struct ndr_push *ndr, int flags, const struct spoolss_AbortPrinter *r)
 
23012
{
 
23013
        if (flags & NDR_IN) {
 
23014
                if (r->in.handle == NULL) {
 
23015
                        return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
 
23016
                }
 
23017
                NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
 
23018
        }
 
23019
        if (flags & NDR_OUT) {
 
23020
                NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
 
23021
        }
 
23022
        return NDR_ERR_SUCCESS;
 
23023
}
 
23024
 
 
23025
static enum ndr_err_code ndr_pull_spoolss_AbortPrinter(struct ndr_pull *ndr, int flags, struct spoolss_AbortPrinter *r)
 
23026
{
 
23027
        TALLOC_CTX *_mem_save_handle_0;
 
23028
        if (flags & NDR_IN) {
 
23029
                if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
 
23030
                        NDR_PULL_ALLOC(ndr, r->in.handle);
 
23031
                }
 
23032
                _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
23033
                NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
 
23034
                NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
 
23035
                NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
 
23036
        }
 
23037
        if (flags & NDR_OUT) {
 
23038
                NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
 
23039
        }
 
23040
        return NDR_ERR_SUCCESS;
 
23041
}
 
23042
 
 
23043
_PUBLIC_ void ndr_print_spoolss_AbortPrinter(struct ndr_print *ndr, const char *name, int flags, const struct spoolss_AbortPrinter *r)
 
23044
{
 
23045
        ndr_print_struct(ndr, name, "spoolss_AbortPrinter");
 
23046
        ndr->depth++;
 
23047
        if (flags & NDR_SET_VALUES) {
 
23048
                ndr->flags |= LIBNDR_PRINT_SET_VALUES;
 
23049
        }
 
23050
        if (flags & NDR_IN) {
 
23051
                ndr_print_struct(ndr, "in", "spoolss_AbortPrinter");
 
23052
                ndr->depth++;
 
23053
                ndr_print_ptr(ndr, "handle", r->in.handle);
 
23054
                ndr->depth++;
 
23055
                ndr_print_policy_handle(ndr, "handle", r->in.handle);
 
23056
                ndr->depth--;
 
23057
                ndr->depth--;
 
23058
        }
 
23059
        if (flags & NDR_OUT) {
 
23060
                ndr_print_struct(ndr, "out", "spoolss_AbortPrinter");
 
23061
                ndr->depth++;
 
23062
                ndr_print_WERROR(ndr, "result", r->out.result);
 
23063
                ndr->depth--;
 
23064
        }
 
23065
        ndr->depth--;
 
23066
}
 
23067
 
 
23068
static enum ndr_err_code ndr_push_spoolss_ReadPrinter(struct ndr_push *ndr, int flags, const struct spoolss_ReadPrinter *r)
 
23069
{
 
23070
        if (flags & NDR_IN) {
 
23071
                if (r->in.handle == NULL) {
 
23072
                        return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
 
23073
                }
 
23074
                NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
 
23075
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.data_size));
 
23076
        }
 
23077
        if (flags & NDR_OUT) {
 
23078
                if (r->out.data == NULL) {
 
23079
                        return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
 
23080
                }
 
23081
                NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, r->in.data_size));
 
23082
                NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->out.data, r->in.data_size));
 
23083
                if (r->out._data_size == NULL) {
 
23084
                        return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
 
23085
                }
 
23086
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out._data_size));
 
23087
                NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
 
23088
        }
 
23089
        return NDR_ERR_SUCCESS;
 
23090
}
 
23091
 
 
23092
static enum ndr_err_code ndr_pull_spoolss_ReadPrinter(struct ndr_pull *ndr, int flags, struct spoolss_ReadPrinter *r)
 
23093
{
 
23094
        TALLOC_CTX *_mem_save_handle_0;
 
23095
        TALLOC_CTX *_mem_save__data_size_0;
 
23096
        if (flags & NDR_IN) {
 
23097
                ZERO_STRUCT(r->out);
 
23098
 
 
23099
                if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
 
23100
                        NDR_PULL_ALLOC(ndr, r->in.handle);
 
23101
                }
 
23102
                _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
23103
                NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
 
23104
                NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
 
23105
                NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
 
23106
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.data_size));
 
23107
                NDR_PULL_ALLOC_N(ndr, r->out.data, r->in.data_size);
 
23108
                memset(r->out.data, 0, (r->in.data_size) * sizeof(*r->out.data));
 
23109
                NDR_PULL_ALLOC(ndr, r->out._data_size);
 
23110
                ZERO_STRUCTP(r->out._data_size);
 
23111
        }
 
23112
        if (flags & NDR_OUT) {
 
23113
                NDR_CHECK(ndr_pull_array_size(ndr, &r->out.data));
 
23114
                if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
 
23115
                        NDR_PULL_ALLOC_N(ndr, r->out.data, ndr_get_array_size(ndr, &r->out.data));
 
23116
                }
 
23117
                NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->out.data, ndr_get_array_size(ndr, &r->out.data)));
 
23118
                if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
 
23119
                        NDR_PULL_ALLOC(ndr, r->out._data_size);
 
23120
                }
 
23121
                _mem_save__data_size_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
23122
                NDR_PULL_SET_MEM_CTX(ndr, r->out._data_size, LIBNDR_FLAG_REF_ALLOC);
 
23123
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out._data_size));
 
23124
                NDR_PULL_SET_MEM_CTX(ndr, _mem_save__data_size_0, LIBNDR_FLAG_REF_ALLOC);
 
23125
                NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
 
23126
                if (r->out.data) {
 
23127
                        NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->out.data, r->in.data_size));
 
23128
                }
 
23129
        }
 
23130
        return NDR_ERR_SUCCESS;
 
23131
}
 
23132
 
 
23133
_PUBLIC_ void ndr_print_spoolss_ReadPrinter(struct ndr_print *ndr, const char *name, int flags, const struct spoolss_ReadPrinter *r)
 
23134
{
 
23135
        ndr_print_struct(ndr, name, "spoolss_ReadPrinter");
 
23136
        ndr->depth++;
 
23137
        if (flags & NDR_SET_VALUES) {
 
23138
                ndr->flags |= LIBNDR_PRINT_SET_VALUES;
 
23139
        }
 
23140
        if (flags & NDR_IN) {
 
23141
                ndr_print_struct(ndr, "in", "spoolss_ReadPrinter");
 
23142
                ndr->depth++;
 
23143
                ndr_print_ptr(ndr, "handle", r->in.handle);
 
23144
                ndr->depth++;
 
23145
                ndr_print_policy_handle(ndr, "handle", r->in.handle);
 
23146
                ndr->depth--;
 
23147
                ndr_print_uint32(ndr, "data_size", r->in.data_size);
 
23148
                ndr->depth--;
 
23149
        }
 
23150
        if (flags & NDR_OUT) {
 
23151
                ndr_print_struct(ndr, "out", "spoolss_ReadPrinter");
 
23152
                ndr->depth++;
 
23153
                ndr_print_ptr(ndr, "data", r->out.data);
 
23154
                ndr->depth++;
 
23155
                ndr_print_array_uint8(ndr, "data", r->out.data, r->in.data_size);
 
23156
                ndr->depth--;
 
23157
                ndr_print_ptr(ndr, "_data_size", r->out._data_size);
 
23158
                ndr->depth++;
 
23159
                ndr_print_uint32(ndr, "_data_size", *r->out._data_size);
 
23160
                ndr->depth--;
 
23161
                ndr_print_WERROR(ndr, "result", r->out.result);
 
23162
                ndr->depth--;
 
23163
        }
 
23164
        ndr->depth--;
 
23165
}
 
23166
 
 
23167
static enum ndr_err_code ndr_push_spoolss_EndDocPrinter(struct ndr_push *ndr, int flags, const struct spoolss_EndDocPrinter *r)
 
23168
{
 
23169
        if (flags & NDR_IN) {
 
23170
                if (r->in.handle == NULL) {
 
23171
                        return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
 
23172
                }
 
23173
                NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
 
23174
        }
 
23175
        if (flags & NDR_OUT) {
 
23176
                NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
 
23177
        }
 
23178
        return NDR_ERR_SUCCESS;
 
23179
}
 
23180
 
 
23181
static enum ndr_err_code ndr_pull_spoolss_EndDocPrinter(struct ndr_pull *ndr, int flags, struct spoolss_EndDocPrinter *r)
 
23182
{
 
23183
        TALLOC_CTX *_mem_save_handle_0;
 
23184
        if (flags & NDR_IN) {
 
23185
                if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
 
23186
                        NDR_PULL_ALLOC(ndr, r->in.handle);
 
23187
                }
 
23188
                _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
23189
                NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
 
23190
                NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
 
23191
                NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
 
23192
        }
 
23193
        if (flags & NDR_OUT) {
 
23194
                NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
 
23195
        }
 
23196
        return NDR_ERR_SUCCESS;
 
23197
}
 
23198
 
 
23199
_PUBLIC_ void ndr_print_spoolss_EndDocPrinter(struct ndr_print *ndr, const char *name, int flags, const struct spoolss_EndDocPrinter *r)
 
23200
{
 
23201
        ndr_print_struct(ndr, name, "spoolss_EndDocPrinter");
 
23202
        ndr->depth++;
 
23203
        if (flags & NDR_SET_VALUES) {
 
23204
                ndr->flags |= LIBNDR_PRINT_SET_VALUES;
 
23205
        }
 
23206
        if (flags & NDR_IN) {
 
23207
                ndr_print_struct(ndr, "in", "spoolss_EndDocPrinter");
 
23208
                ndr->depth++;
 
23209
                ndr_print_ptr(ndr, "handle", r->in.handle);
 
23210
                ndr->depth++;
 
23211
                ndr_print_policy_handle(ndr, "handle", r->in.handle);
 
23212
                ndr->depth--;
 
23213
                ndr->depth--;
 
23214
        }
 
23215
        if (flags & NDR_OUT) {
 
23216
                ndr_print_struct(ndr, "out", "spoolss_EndDocPrinter");
 
23217
                ndr->depth++;
 
23218
                ndr_print_WERROR(ndr, "result", r->out.result);
 
23219
                ndr->depth--;
 
23220
        }
 
23221
        ndr->depth--;
 
23222
}
 
23223
 
 
23224
static enum ndr_err_code ndr_push_spoolss_AddJob(struct ndr_push *ndr, int flags, const struct spoolss_AddJob *r)
 
23225
{
 
23226
        if (flags & NDR_IN) {
 
23227
                if (r->in.handle == NULL) {
 
23228
                        return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
 
23229
                }
 
23230
                NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
 
23231
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.level));
 
23232
                NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.buffer));
 
23233
                if (r->in.buffer) {
 
23234
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, r->in.offered));
 
23235
                        NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->in.buffer, r->in.offered));
 
23236
                }
 
23237
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.offered));
 
23238
        }
 
23239
        if (flags & NDR_OUT) {
 
23240
                NDR_CHECK(ndr_push_unique_ptr(ndr, r->out.buffer));
 
23241
                if (r->out.buffer) {
 
23242
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, r->in.offered));
 
23243
                        NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->out.buffer, r->in.offered));
 
23244
                }
 
23245
                if (r->out.needed == NULL) {
 
23246
                        return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
 
23247
                }
 
23248
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.needed));
 
23249
                NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
 
23250
        }
 
23251
        return NDR_ERR_SUCCESS;
 
23252
}
 
23253
 
 
23254
static enum ndr_err_code ndr_pull_spoolss_AddJob(struct ndr_pull *ndr, int flags, struct spoolss_AddJob *r)
 
23255
{
 
23256
        uint32_t _ptr_buffer;
 
23257
        TALLOC_CTX *_mem_save_handle_0;
 
23258
        TALLOC_CTX *_mem_save_buffer_0;
 
23259
        TALLOC_CTX *_mem_save_needed_0;
 
23260
        if (flags & NDR_IN) {
 
23261
                ZERO_STRUCT(r->out);
 
23262
 
 
23263
                if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
 
23264
                        NDR_PULL_ALLOC(ndr, r->in.handle);
 
23265
                }
 
23266
                _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
23267
                NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
 
23268
                NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
 
23269
                NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
 
23270
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.level));
 
23271
                NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_buffer));
 
23272
                if (_ptr_buffer) {
 
23273
                        NDR_PULL_ALLOC(ndr, r->in.buffer);
 
23274
                } else {
 
23275
                        r->in.buffer = NULL;
 
23276
                }
 
23277
                if (r->in.buffer) {
 
23278
                        _mem_save_buffer_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
23279
                        NDR_PULL_SET_MEM_CTX(ndr, r->in.buffer, 0);
 
23280
                        NDR_CHECK(ndr_pull_array_size(ndr, &r->in.buffer));
 
23281
                        NDR_PULL_ALLOC_N(ndr, r->in.buffer, ndr_get_array_size(ndr, &r->in.buffer));
 
23282
                        NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->in.buffer, ndr_get_array_size(ndr, &r->in.buffer)));
 
23283
                        NDR_PULL_SET_MEM_CTX(ndr, _mem_save_buffer_0, 0);
 
23284
                }
 
23285
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.offered));
 
23286
                NDR_PULL_ALLOC(ndr, r->out.needed);
 
23287
                ZERO_STRUCTP(r->out.needed);
 
23288
                if (r->in.buffer) {
 
23289
                        NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->in.buffer, r->in.offered));
 
23290
                }
 
23291
        }
 
23292
        if (flags & NDR_OUT) {
 
23293
                NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_buffer));
 
23294
                if (_ptr_buffer) {
 
23295
                        NDR_PULL_ALLOC(ndr, r->out.buffer);
 
23296
                } else {
 
23297
                        r->out.buffer = NULL;
 
23298
                }
 
23299
                if (r->out.buffer) {
 
23300
                        _mem_save_buffer_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
23301
                        NDR_PULL_SET_MEM_CTX(ndr, r->out.buffer, 0);
 
23302
                        NDR_CHECK(ndr_pull_array_size(ndr, &r->out.buffer));
 
23303
                        NDR_PULL_ALLOC_N(ndr, r->out.buffer, ndr_get_array_size(ndr, &r->out.buffer));
 
23304
                        NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->out.buffer, ndr_get_array_size(ndr, &r->out.buffer)));
 
23305
                        NDR_PULL_SET_MEM_CTX(ndr, _mem_save_buffer_0, 0);
 
23306
                }
 
23307
                if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
 
23308
                        NDR_PULL_ALLOC(ndr, r->out.needed);
 
23309
                }
 
23310
                _mem_save_needed_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
23311
                NDR_PULL_SET_MEM_CTX(ndr, r->out.needed, LIBNDR_FLAG_REF_ALLOC);
 
23312
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.needed));
 
23313
                NDR_PULL_SET_MEM_CTX(ndr, _mem_save_needed_0, LIBNDR_FLAG_REF_ALLOC);
 
23314
                NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
 
23315
                if (r->out.buffer) {
 
23316
                        NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->out.buffer, r->in.offered));
 
23317
                }
 
23318
        }
 
23319
        return NDR_ERR_SUCCESS;
 
23320
}
 
23321
 
 
23322
_PUBLIC_ void ndr_print_spoolss_AddJob(struct ndr_print *ndr, const char *name, int flags, const struct spoolss_AddJob *r)
 
23323
{
 
23324
        ndr_print_struct(ndr, name, "spoolss_AddJob");
 
23325
        ndr->depth++;
 
23326
        if (flags & NDR_SET_VALUES) {
 
23327
                ndr->flags |= LIBNDR_PRINT_SET_VALUES;
 
23328
        }
 
23329
        if (flags & NDR_IN) {
 
23330
                ndr_print_struct(ndr, "in", "spoolss_AddJob");
 
23331
                ndr->depth++;
 
23332
                ndr_print_ptr(ndr, "handle", r->in.handle);
 
23333
                ndr->depth++;
 
23334
                ndr_print_policy_handle(ndr, "handle", r->in.handle);
 
23335
                ndr->depth--;
 
23336
                ndr_print_uint32(ndr, "level", r->in.level);
 
23337
                ndr_print_ptr(ndr, "buffer", r->in.buffer);
 
23338
                ndr->depth++;
 
23339
                if (r->in.buffer) {
 
23340
                        ndr_print_array_uint8(ndr, "buffer", r->in.buffer, r->in.offered);
 
23341
                }
 
23342
                ndr->depth--;
 
23343
                ndr_print_uint32(ndr, "offered", r->in.offered);
 
23344
                ndr->depth--;
 
23345
        }
 
23346
        if (flags & NDR_OUT) {
 
23347
                ndr_print_struct(ndr, "out", "spoolss_AddJob");
 
23348
                ndr->depth++;
 
23349
                ndr_print_ptr(ndr, "buffer", r->out.buffer);
 
23350
                ndr->depth++;
 
23351
                if (r->out.buffer) {
 
23352
                        ndr_print_array_uint8(ndr, "buffer", r->out.buffer, r->in.offered);
 
23353
                }
 
23354
                ndr->depth--;
 
23355
                ndr_print_ptr(ndr, "needed", r->out.needed);
 
23356
                ndr->depth++;
 
23357
                ndr_print_uint32(ndr, "needed", *r->out.needed);
 
23358
                ndr->depth--;
 
23359
                ndr_print_WERROR(ndr, "result", r->out.result);
 
23360
                ndr->depth--;
 
23361
        }
 
23362
        ndr->depth--;
 
23363
}
 
23364
 
 
23365
static enum ndr_err_code ndr_push_spoolss_ScheduleJob(struct ndr_push *ndr, int flags, const struct spoolss_ScheduleJob *r)
 
23366
{
 
23367
        if (flags & NDR_IN) {
 
23368
                if (r->in.handle == NULL) {
 
23369
                        return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
 
23370
                }
 
23371
                NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
 
23372
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.jobid));
 
23373
        }
 
23374
        if (flags & NDR_OUT) {
 
23375
                NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
 
23376
        }
 
23377
        return NDR_ERR_SUCCESS;
 
23378
}
 
23379
 
 
23380
static enum ndr_err_code ndr_pull_spoolss_ScheduleJob(struct ndr_pull *ndr, int flags, struct spoolss_ScheduleJob *r)
 
23381
{
 
23382
        TALLOC_CTX *_mem_save_handle_0;
 
23383
        if (flags & NDR_IN) {
 
23384
                if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
 
23385
                        NDR_PULL_ALLOC(ndr, r->in.handle);
 
23386
                }
 
23387
                _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
23388
                NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
 
23389
                NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
 
23390
                NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
 
23391
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.jobid));
 
23392
        }
 
23393
        if (flags & NDR_OUT) {
 
23394
                NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
 
23395
        }
 
23396
        return NDR_ERR_SUCCESS;
 
23397
}
 
23398
 
 
23399
_PUBLIC_ void ndr_print_spoolss_ScheduleJob(struct ndr_print *ndr, const char *name, int flags, const struct spoolss_ScheduleJob *r)
 
23400
{
 
23401
        ndr_print_struct(ndr, name, "spoolss_ScheduleJob");
 
23402
        ndr->depth++;
 
23403
        if (flags & NDR_SET_VALUES) {
 
23404
                ndr->flags |= LIBNDR_PRINT_SET_VALUES;
 
23405
        }
 
23406
        if (flags & NDR_IN) {
 
23407
                ndr_print_struct(ndr, "in", "spoolss_ScheduleJob");
 
23408
                ndr->depth++;
 
23409
                ndr_print_ptr(ndr, "handle", r->in.handle);
 
23410
                ndr->depth++;
 
23411
                ndr_print_policy_handle(ndr, "handle", r->in.handle);
 
23412
                ndr->depth--;
 
23413
                ndr_print_uint32(ndr, "jobid", r->in.jobid);
 
23414
                ndr->depth--;
 
23415
        }
 
23416
        if (flags & NDR_OUT) {
 
23417
                ndr_print_struct(ndr, "out", "spoolss_ScheduleJob");
 
23418
                ndr->depth++;
 
23419
                ndr_print_WERROR(ndr, "result", r->out.result);
 
23420
                ndr->depth--;
 
23421
        }
 
23422
        ndr->depth--;
 
23423
}
 
23424
 
 
23425
static enum ndr_err_code ndr_push_spoolss_GetPrinterData(struct ndr_push *ndr, int flags, const struct spoolss_GetPrinterData *r)
 
23426
{
 
23427
        if (flags & NDR_IN) {
 
23428
                if (r->in.handle == NULL) {
 
23429
                        return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
 
23430
                }
 
23431
                NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
 
23432
                NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.value_name, CH_UTF16)));
 
23433
                NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0));
 
23434
                NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.value_name, CH_UTF16)));
 
23435
                NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.value_name, ndr_charset_length(r->in.value_name, CH_UTF16), sizeof(uint16_t), CH_UTF16));
 
23436
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.offered));
 
23437
        }
 
23438
        if (flags & NDR_OUT) {
 
23439
                if (r->out.type == NULL) {
 
23440
                        return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
 
23441
                }
 
23442
                NDR_CHECK(ndr_push_winreg_Type(ndr, NDR_SCALARS, *r->out.type));
 
23443
                if (r->out.data == NULL) {
 
23444
                        return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
 
23445
                }
 
23446
                NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, r->in.offered));
 
23447
                NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->out.data, r->in.offered));
 
23448
                if (r->out.needed == NULL) {
 
23449
                        return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
 
23450
                }
 
23451
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.needed));
 
23452
                NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
 
23453
        }
 
23454
        return NDR_ERR_SUCCESS;
 
23455
}
 
23456
 
 
23457
static enum ndr_err_code ndr_pull_spoolss_GetPrinterData(struct ndr_pull *ndr, int flags, struct spoolss_GetPrinterData *r)
 
23458
{
 
23459
        TALLOC_CTX *_mem_save_handle_0;
 
23460
        TALLOC_CTX *_mem_save_type_0;
 
23461
        TALLOC_CTX *_mem_save_needed_0;
 
23462
        if (flags & NDR_IN) {
 
23463
                ZERO_STRUCT(r->out);
 
23464
 
 
23465
                if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
 
23466
                        NDR_PULL_ALLOC(ndr, r->in.handle);
 
23467
                }
 
23468
                _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
23469
                NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
 
23470
                NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
 
23471
                NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
 
23472
                NDR_CHECK(ndr_pull_array_size(ndr, &r->in.value_name));
 
23473
                NDR_CHECK(ndr_pull_array_length(ndr, &r->in.value_name));
 
23474
                if (ndr_get_array_length(ndr, &r->in.value_name) > ndr_get_array_size(ndr, &r->in.value_name)) {
 
23475
                        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.value_name), ndr_get_array_length(ndr, &r->in.value_name));
 
23476
                }
 
23477
                NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.value_name), sizeof(uint16_t)));
 
23478
                NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.value_name, ndr_get_array_length(ndr, &r->in.value_name), sizeof(uint16_t), CH_UTF16));
 
23479
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.offered));
 
23480
                NDR_PULL_ALLOC(ndr, r->out.type);
 
23481
                ZERO_STRUCTP(r->out.type);
 
23482
                NDR_PULL_ALLOC_N(ndr, r->out.data, r->in.offered);
 
23483
                memset(r->out.data, 0, (r->in.offered) * sizeof(*r->out.data));
 
23484
                NDR_PULL_ALLOC(ndr, r->out.needed);
 
23485
                ZERO_STRUCTP(r->out.needed);
 
23486
        }
 
23487
        if (flags & NDR_OUT) {
 
23488
                if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
 
23489
                        NDR_PULL_ALLOC(ndr, r->out.type);
 
23490
                }
 
23491
                _mem_save_type_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
23492
                NDR_PULL_SET_MEM_CTX(ndr, r->out.type, LIBNDR_FLAG_REF_ALLOC);
 
23493
                NDR_CHECK(ndr_pull_winreg_Type(ndr, NDR_SCALARS, r->out.type));
 
23494
                NDR_PULL_SET_MEM_CTX(ndr, _mem_save_type_0, LIBNDR_FLAG_REF_ALLOC);
 
23495
                NDR_CHECK(ndr_pull_array_size(ndr, &r->out.data));
 
23496
                if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
 
23497
                        NDR_PULL_ALLOC_N(ndr, r->out.data, ndr_get_array_size(ndr, &r->out.data));
 
23498
                }
 
23499
                NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->out.data, ndr_get_array_size(ndr, &r->out.data)));
 
23500
                if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
 
23501
                        NDR_PULL_ALLOC(ndr, r->out.needed);
 
23502
                }
 
23503
                _mem_save_needed_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
23504
                NDR_PULL_SET_MEM_CTX(ndr, r->out.needed, LIBNDR_FLAG_REF_ALLOC);
 
23505
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.needed));
 
23506
                NDR_PULL_SET_MEM_CTX(ndr, _mem_save_needed_0, LIBNDR_FLAG_REF_ALLOC);
 
23507
                NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
 
23508
                if (r->out.data) {
 
23509
                        NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->out.data, r->in.offered));
 
23510
                }
 
23511
        }
 
23512
        return NDR_ERR_SUCCESS;
 
23513
}
 
23514
 
 
23515
_PUBLIC_ void ndr_print_spoolss_GetPrinterData(struct ndr_print *ndr, const char *name, int flags, const struct spoolss_GetPrinterData *r)
 
23516
{
 
23517
        ndr_print_struct(ndr, name, "spoolss_GetPrinterData");
 
23518
        ndr->depth++;
 
23519
        if (flags & NDR_SET_VALUES) {
 
23520
                ndr->flags |= LIBNDR_PRINT_SET_VALUES;
 
23521
        }
 
23522
        if (flags & NDR_IN) {
 
23523
                ndr_print_struct(ndr, "in", "spoolss_GetPrinterData");
 
23524
                ndr->depth++;
 
23525
                ndr_print_ptr(ndr, "handle", r->in.handle);
 
23526
                ndr->depth++;
 
23527
                ndr_print_policy_handle(ndr, "handle", r->in.handle);
 
23528
                ndr->depth--;
 
23529
                ndr_print_string(ndr, "value_name", r->in.value_name);
 
23530
                ndr_print_uint32(ndr, "offered", r->in.offered);
 
23531
                ndr->depth--;
 
23532
        }
 
23533
        if (flags & NDR_OUT) {
 
23534
                ndr_print_struct(ndr, "out", "spoolss_GetPrinterData");
 
23535
                ndr->depth++;
 
23536
                ndr_print_ptr(ndr, "type", r->out.type);
 
23537
                ndr->depth++;
 
23538
                ndr_print_winreg_Type(ndr, "type", *r->out.type);
 
23539
                ndr->depth--;
 
23540
                ndr_print_ptr(ndr, "data", r->out.data);
 
23541
                ndr->depth++;
 
23542
                ndr_print_array_uint8(ndr, "data", r->out.data, r->in.offered);
 
23543
                ndr->depth--;
 
23544
                ndr_print_ptr(ndr, "needed", r->out.needed);
 
23545
                ndr->depth++;
 
23546
                ndr_print_uint32(ndr, "needed", *r->out.needed);
 
23547
                ndr->depth--;
 
23548
                ndr_print_WERROR(ndr, "result", r->out.result);
 
23549
                ndr->depth--;
 
23550
        }
 
23551
        ndr->depth--;
 
23552
}
 
23553
 
 
23554
static enum ndr_err_code ndr_push_spoolss_SetPrinterData(struct ndr_push *ndr, int flags, const struct spoolss_SetPrinterData *r)
 
23555
{
 
23556
        if (flags & NDR_IN) {
 
23557
                if (r->in.handle == NULL) {
 
23558
                        return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
 
23559
                }
 
23560
                NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
 
23561
                NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.value_name, CH_UTF16)));
 
23562
                NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0));
 
23563
                NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.value_name, CH_UTF16)));
 
23564
                NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.value_name, ndr_charset_length(r->in.value_name, CH_UTF16), sizeof(uint16_t), CH_UTF16));
 
23565
                NDR_CHECK(ndr_push_winreg_Type(ndr, NDR_SCALARS, r->in.type));
 
23566
                if (r->in.data == NULL) {
 
23567
                        return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
 
23568
                }
 
23569
                NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, r->in.offered));
 
23570
                NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->in.data, r->in.offered));
 
23571
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.offered));
 
23572
        }
 
23573
        if (flags & NDR_OUT) {
 
23574
                NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
 
23575
        }
 
23576
        return NDR_ERR_SUCCESS;
 
23577
}
 
23578
 
 
23579
static enum ndr_err_code ndr_pull_spoolss_SetPrinterData(struct ndr_pull *ndr, int flags, struct spoolss_SetPrinterData *r)
 
23580
{
 
23581
        TALLOC_CTX *_mem_save_handle_0;
 
23582
        if (flags & NDR_IN) {
 
23583
                if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
 
23584
                        NDR_PULL_ALLOC(ndr, r->in.handle);
 
23585
                }
 
23586
                _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
23587
                NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
 
23588
                NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
 
23589
                NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
 
23590
                NDR_CHECK(ndr_pull_array_size(ndr, &r->in.value_name));
 
23591
                NDR_CHECK(ndr_pull_array_length(ndr, &r->in.value_name));
 
23592
                if (ndr_get_array_length(ndr, &r->in.value_name) > ndr_get_array_size(ndr, &r->in.value_name)) {
 
23593
                        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.value_name), ndr_get_array_length(ndr, &r->in.value_name));
 
23594
                }
 
23595
                NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.value_name), sizeof(uint16_t)));
 
23596
                NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.value_name, ndr_get_array_length(ndr, &r->in.value_name), sizeof(uint16_t), CH_UTF16));
 
23597
                NDR_CHECK(ndr_pull_winreg_Type(ndr, NDR_SCALARS, &r->in.type));
 
23598
                NDR_CHECK(ndr_pull_array_size(ndr, &r->in.data));
 
23599
                if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
 
23600
                        NDR_PULL_ALLOC_N(ndr, r->in.data, ndr_get_array_size(ndr, &r->in.data));
 
23601
                }
 
23602
                NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->in.data, ndr_get_array_size(ndr, &r->in.data)));
 
23603
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.offered));
 
23604
                if (r->in.data) {
 
23605
                        NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->in.data, r->in.offered));
 
23606
                }
 
23607
        }
 
23608
        if (flags & NDR_OUT) {
 
23609
                NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
 
23610
        }
 
23611
        return NDR_ERR_SUCCESS;
 
23612
}
 
23613
 
 
23614
_PUBLIC_ void ndr_print_spoolss_SetPrinterData(struct ndr_print *ndr, const char *name, int flags, const struct spoolss_SetPrinterData *r)
 
23615
{
 
23616
        ndr_print_struct(ndr, name, "spoolss_SetPrinterData");
 
23617
        ndr->depth++;
 
23618
        if (flags & NDR_SET_VALUES) {
 
23619
                ndr->flags |= LIBNDR_PRINT_SET_VALUES;
 
23620
        }
 
23621
        if (flags & NDR_IN) {
 
23622
                ndr_print_struct(ndr, "in", "spoolss_SetPrinterData");
 
23623
                ndr->depth++;
 
23624
                ndr_print_ptr(ndr, "handle", r->in.handle);
 
23625
                ndr->depth++;
 
23626
                ndr_print_policy_handle(ndr, "handle", r->in.handle);
 
23627
                ndr->depth--;
 
23628
                ndr_print_string(ndr, "value_name", r->in.value_name);
 
23629
                ndr_print_winreg_Type(ndr, "type", r->in.type);
 
23630
                ndr_print_ptr(ndr, "data", r->in.data);
 
23631
                ndr->depth++;
 
23632
                ndr_print_array_uint8(ndr, "data", r->in.data, r->in.offered);
 
23633
                ndr->depth--;
 
23634
                ndr_print_uint32(ndr, "offered", r->in.offered);
 
23635
                ndr->depth--;
 
23636
        }
 
23637
        if (flags & NDR_OUT) {
 
23638
                ndr_print_struct(ndr, "out", "spoolss_SetPrinterData");
 
23639
                ndr->depth++;
 
23640
                ndr_print_WERROR(ndr, "result", r->out.result);
 
23641
                ndr->depth--;
 
23642
        }
 
23643
        ndr->depth--;
 
23644
}
 
23645
 
 
23646
static enum ndr_err_code ndr_push_spoolss_WaitForPrinterChange(struct ndr_push *ndr, int flags, const struct spoolss_WaitForPrinterChange *r)
 
23647
{
 
23648
        if (flags & NDR_IN) {
 
23649
        }
 
23650
        if (flags & NDR_OUT) {
 
23651
                NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
 
23652
        }
 
23653
        return NDR_ERR_SUCCESS;
 
23654
}
 
23655
 
 
23656
static enum ndr_err_code ndr_pull_spoolss_WaitForPrinterChange(struct ndr_pull *ndr, int flags, struct spoolss_WaitForPrinterChange *r)
 
23657
{
 
23658
        if (flags & NDR_IN) {
 
23659
        }
 
23660
        if (flags & NDR_OUT) {
 
23661
                NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
 
23662
        }
 
23663
        return NDR_ERR_SUCCESS;
 
23664
}
 
23665
 
 
23666
_PUBLIC_ void ndr_print_spoolss_WaitForPrinterChange(struct ndr_print *ndr, const char *name, int flags, const struct spoolss_WaitForPrinterChange *r)
 
23667
{
 
23668
        ndr_print_struct(ndr, name, "spoolss_WaitForPrinterChange");
 
23669
        ndr->depth++;
 
23670
        if (flags & NDR_SET_VALUES) {
 
23671
                ndr->flags |= LIBNDR_PRINT_SET_VALUES;
 
23672
        }
 
23673
        if (flags & NDR_IN) {
 
23674
                ndr_print_struct(ndr, "in", "spoolss_WaitForPrinterChange");
 
23675
                ndr->depth++;
 
23676
                ndr->depth--;
 
23677
        }
 
23678
        if (flags & NDR_OUT) {
 
23679
                ndr_print_struct(ndr, "out", "spoolss_WaitForPrinterChange");
 
23680
                ndr->depth++;
 
23681
                ndr_print_WERROR(ndr, "result", r->out.result);
 
23682
                ndr->depth--;
 
23683
        }
 
23684
        ndr->depth--;
 
23685
}
 
23686
 
 
23687
_PUBLIC_ enum ndr_err_code ndr_push_spoolss_ClosePrinter(struct ndr_push *ndr, int flags, const struct spoolss_ClosePrinter *r)
 
23688
{
 
23689
        if (flags & NDR_IN) {
 
23690
                if (r->in.handle == NULL) {
 
23691
                        return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
 
23692
                }
 
23693
                NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
 
23694
        }
 
23695
        if (flags & NDR_OUT) {
 
23696
                if (r->out.handle == NULL) {
 
23697
                        return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
 
23698
                }
 
23699
                NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->out.handle));
 
23700
                NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
 
23701
        }
 
23702
        return NDR_ERR_SUCCESS;
 
23703
}
 
23704
 
 
23705
_PUBLIC_ enum ndr_err_code ndr_pull_spoolss_ClosePrinter(struct ndr_pull *ndr, int flags, struct spoolss_ClosePrinter *r)
 
23706
{
 
23707
        TALLOC_CTX *_mem_save_handle_0;
 
23708
        if (flags & NDR_IN) {
 
23709
                ZERO_STRUCT(r->out);
 
23710
 
 
23711
                if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
 
23712
                        NDR_PULL_ALLOC(ndr, r->in.handle);
 
23713
                }
 
23714
                _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
23715
                NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
 
23716
                NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
 
23717
                NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
 
23718
                NDR_PULL_ALLOC(ndr, r->out.handle);
 
23719
                *r->out.handle = *r->in.handle;
 
23720
        }
 
23721
        if (flags & NDR_OUT) {
 
23722
                if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
 
23723
                        NDR_PULL_ALLOC(ndr, r->out.handle);
 
23724
                }
 
23725
                _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
23726
                NDR_PULL_SET_MEM_CTX(ndr, r->out.handle, LIBNDR_FLAG_REF_ALLOC);
 
23727
                NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->out.handle));
 
23728
                NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
 
23729
                NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
 
23730
        }
 
23731
        return NDR_ERR_SUCCESS;
 
23732
}
 
23733
 
 
23734
_PUBLIC_ void ndr_print_spoolss_ClosePrinter(struct ndr_print *ndr, const char *name, int flags, const struct spoolss_ClosePrinter *r)
 
23735
{
 
23736
        ndr_print_struct(ndr, name, "spoolss_ClosePrinter");
 
23737
        ndr->depth++;
 
23738
        if (flags & NDR_SET_VALUES) {
 
23739
                ndr->flags |= LIBNDR_PRINT_SET_VALUES;
 
23740
        }
 
23741
        if (flags & NDR_IN) {
 
23742
                ndr_print_struct(ndr, "in", "spoolss_ClosePrinter");
 
23743
                ndr->depth++;
 
23744
                ndr_print_ptr(ndr, "handle", r->in.handle);
 
23745
                ndr->depth++;
 
23746
                ndr_print_policy_handle(ndr, "handle", r->in.handle);
 
23747
                ndr->depth--;
 
23748
                ndr->depth--;
 
23749
        }
 
23750
        if (flags & NDR_OUT) {
 
23751
                ndr_print_struct(ndr, "out", "spoolss_ClosePrinter");
 
23752
                ndr->depth++;
 
23753
                ndr_print_ptr(ndr, "handle", r->out.handle);
 
23754
                ndr->depth++;
 
23755
                ndr_print_policy_handle(ndr, "handle", r->out.handle);
 
23756
                ndr->depth--;
 
23757
                ndr_print_WERROR(ndr, "result", r->out.result);
 
23758
                ndr->depth--;
 
23759
        }
 
23760
        ndr->depth--;
 
23761
}
 
23762
 
 
23763
static enum ndr_err_code ndr_push_spoolss_AddForm(struct ndr_push *ndr, int flags, const struct spoolss_AddForm *r)
 
23764
{
 
23765
        if (flags & NDR_IN) {
 
23766
                if (r->in.handle == NULL) {
 
23767
                        return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
 
23768
                }
 
23769
                NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
 
23770
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.level));
 
23771
                NDR_CHECK(ndr_push_set_switch_value(ndr, &r->in.info, r->in.level));
 
23772
                NDR_CHECK(ndr_push_spoolss_AddFormInfo(ndr, NDR_SCALARS|NDR_BUFFERS, &r->in.info));
 
23773
        }
 
23774
        if (flags & NDR_OUT) {
 
23775
                NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
 
23776
        }
 
23777
        return NDR_ERR_SUCCESS;
 
23778
}
 
23779
 
 
23780
static enum ndr_err_code ndr_pull_spoolss_AddForm(struct ndr_pull *ndr, int flags, struct spoolss_AddForm *r)
 
23781
{
 
23782
        TALLOC_CTX *_mem_save_handle_0;
 
23783
        if (flags & NDR_IN) {
 
23784
                if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
 
23785
                        NDR_PULL_ALLOC(ndr, r->in.handle);
 
23786
                }
 
23787
                _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
23788
                NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
 
23789
                NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
 
23790
                NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
 
23791
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.level));
 
23792
                NDR_CHECK(ndr_pull_set_switch_value(ndr, &r->in.info, r->in.level));
 
23793
                NDR_CHECK(ndr_pull_spoolss_AddFormInfo(ndr, NDR_SCALARS|NDR_BUFFERS, &r->in.info));
 
23794
        }
 
23795
        if (flags & NDR_OUT) {
 
23796
                NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
 
23797
        }
 
23798
        return NDR_ERR_SUCCESS;
 
23799
}
 
23800
 
 
23801
_PUBLIC_ void ndr_print_spoolss_AddForm(struct ndr_print *ndr, const char *name, int flags, const struct spoolss_AddForm *r)
 
23802
{
 
23803
        ndr_print_struct(ndr, name, "spoolss_AddForm");
 
23804
        ndr->depth++;
 
23805
        if (flags & NDR_SET_VALUES) {
 
23806
                ndr->flags |= LIBNDR_PRINT_SET_VALUES;
 
23807
        }
 
23808
        if (flags & NDR_IN) {
 
23809
                ndr_print_struct(ndr, "in", "spoolss_AddForm");
 
23810
                ndr->depth++;
 
23811
                ndr_print_ptr(ndr, "handle", r->in.handle);
 
23812
                ndr->depth++;
 
23813
                ndr_print_policy_handle(ndr, "handle", r->in.handle);
 
23814
                ndr->depth--;
 
23815
                ndr_print_uint32(ndr, "level", r->in.level);
 
23816
                ndr_print_set_switch_value(ndr, &r->in.info, r->in.level);
 
23817
                ndr_print_spoolss_AddFormInfo(ndr, "info", &r->in.info);
 
23818
                ndr->depth--;
 
23819
        }
 
23820
        if (flags & NDR_OUT) {
 
23821
                ndr_print_struct(ndr, "out", "spoolss_AddForm");
 
23822
                ndr->depth++;
 
23823
                ndr_print_WERROR(ndr, "result", r->out.result);
 
23824
                ndr->depth--;
 
23825
        }
 
23826
        ndr->depth--;
 
23827
}
 
23828
 
 
23829
static enum ndr_err_code ndr_push_spoolss_DeleteForm(struct ndr_push *ndr, int flags, const struct spoolss_DeleteForm *r)
 
23830
{
 
23831
        if (flags & NDR_IN) {
 
23832
                if (r->in.handle == NULL) {
 
23833
                        return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
 
23834
                }
 
23835
                NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
 
23836
                NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.form_name, CH_UTF16)));
 
23837
                NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0));
 
23838
                NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.form_name, CH_UTF16)));
 
23839
                NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.form_name, ndr_charset_length(r->in.form_name, CH_UTF16), sizeof(uint16_t), CH_UTF16));
 
23840
        }
 
23841
        if (flags & NDR_OUT) {
 
23842
                NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
 
23843
        }
 
23844
        return NDR_ERR_SUCCESS;
 
23845
}
 
23846
 
 
23847
static enum ndr_err_code ndr_pull_spoolss_DeleteForm(struct ndr_pull *ndr, int flags, struct spoolss_DeleteForm *r)
 
23848
{
 
23849
        TALLOC_CTX *_mem_save_handle_0;
 
23850
        if (flags & NDR_IN) {
 
23851
                if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
 
23852
                        NDR_PULL_ALLOC(ndr, r->in.handle);
 
23853
                }
 
23854
                _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
23855
                NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
 
23856
                NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
 
23857
                NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
 
23858
                NDR_CHECK(ndr_pull_array_size(ndr, &r->in.form_name));
 
23859
                NDR_CHECK(ndr_pull_array_length(ndr, &r->in.form_name));
 
23860
                if (ndr_get_array_length(ndr, &r->in.form_name) > ndr_get_array_size(ndr, &r->in.form_name)) {
 
23861
                        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.form_name), ndr_get_array_length(ndr, &r->in.form_name));
 
23862
                }
 
23863
                NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.form_name), sizeof(uint16_t)));
 
23864
                NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.form_name, ndr_get_array_length(ndr, &r->in.form_name), sizeof(uint16_t), CH_UTF16));
 
23865
        }
 
23866
        if (flags & NDR_OUT) {
 
23867
                NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
 
23868
        }
 
23869
        return NDR_ERR_SUCCESS;
 
23870
}
 
23871
 
 
23872
_PUBLIC_ void ndr_print_spoolss_DeleteForm(struct ndr_print *ndr, const char *name, int flags, const struct spoolss_DeleteForm *r)
 
23873
{
 
23874
        ndr_print_struct(ndr, name, "spoolss_DeleteForm");
 
23875
        ndr->depth++;
 
23876
        if (flags & NDR_SET_VALUES) {
 
23877
                ndr->flags |= LIBNDR_PRINT_SET_VALUES;
 
23878
        }
 
23879
        if (flags & NDR_IN) {
 
23880
                ndr_print_struct(ndr, "in", "spoolss_DeleteForm");
 
23881
                ndr->depth++;
 
23882
                ndr_print_ptr(ndr, "handle", r->in.handle);
 
23883
                ndr->depth++;
 
23884
                ndr_print_policy_handle(ndr, "handle", r->in.handle);
 
23885
                ndr->depth--;
 
23886
                ndr_print_string(ndr, "form_name", r->in.form_name);
 
23887
                ndr->depth--;
 
23888
        }
 
23889
        if (flags & NDR_OUT) {
 
23890
                ndr_print_struct(ndr, "out", "spoolss_DeleteForm");
 
23891
                ndr->depth++;
 
23892
                ndr_print_WERROR(ndr, "result", r->out.result);
 
23893
                ndr->depth--;
 
23894
        }
 
23895
        ndr->depth--;
 
23896
}
 
23897
 
 
23898
static enum ndr_err_code ndr_push_spoolss_GetForm(struct ndr_push *ndr, int flags, const struct spoolss_GetForm *r)
 
23899
{
 
23900
        if (flags & NDR_IN) {
 
23901
                if (r->in.handle == NULL) {
 
23902
                        return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
 
23903
                }
 
23904
                NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
 
23905
                NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.form_name, CH_UTF16)));
 
23906
                NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0));
 
23907
                NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.form_name, CH_UTF16)));
 
23908
                NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.form_name, ndr_charset_length(r->in.form_name, CH_UTF16), sizeof(uint16_t), CH_UTF16));
 
23909
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.level));
 
23910
                NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.buffer));
 
23911
                if (r->in.buffer) {
 
23912
                        NDR_CHECK(ndr_push_DATA_BLOB(ndr, NDR_SCALARS, *r->in.buffer));
 
23913
                }
 
23914
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.offered));
 
23915
        }
 
23916
        if (flags & NDR_OUT) {
 
23917
                NDR_CHECK(ndr_push_unique_ptr(ndr, r->out.info));
 
23918
                if (r->out.info) {
 
23919
                        {
 
23920
                                struct ndr_push *_ndr_info;
 
23921
                                NDR_CHECK(ndr_push_subcontext_start(ndr, &_ndr_info, 4, r->in.offered));
 
23922
                                NDR_CHECK(ndr_push_set_switch_value(_ndr_info, r->out.info, r->in.level));
 
23923
                                NDR_CHECK(ndr_push_spoolss_FormInfo(_ndr_info, NDR_SCALARS|NDR_BUFFERS, r->out.info));
 
23924
                                NDR_CHECK(ndr_push_subcontext_end(ndr, _ndr_info, 4, r->in.offered));
 
23925
                        }
 
23926
                }
 
23927
                if (r->out.needed == NULL) {
 
23928
                        return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
 
23929
                }
 
23930
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.needed));
 
23931
                NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
 
23932
        }
 
23933
        return NDR_ERR_SUCCESS;
 
23934
}
 
23935
 
 
23936
static enum ndr_err_code ndr_pull_spoolss_GetForm(struct ndr_pull *ndr, int flags, struct spoolss_GetForm *r)
 
23937
{
 
23938
        uint32_t _ptr_buffer;
 
23939
        uint32_t _ptr_info;
 
23940
        TALLOC_CTX *_mem_save_handle_0;
 
23941
        TALLOC_CTX *_mem_save_buffer_0;
 
23942
        TALLOC_CTX *_mem_save_info_0;
 
23943
        TALLOC_CTX *_mem_save_needed_0;
 
23944
        if (flags & NDR_IN) {
 
23945
                ZERO_STRUCT(r->out);
 
23946
 
 
23947
                if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
 
23948
                        NDR_PULL_ALLOC(ndr, r->in.handle);
 
23949
                }
 
23950
                _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
23951
                NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
 
23952
                NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
 
23953
                NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
 
23954
                NDR_CHECK(ndr_pull_array_size(ndr, &r->in.form_name));
 
23955
                NDR_CHECK(ndr_pull_array_length(ndr, &r->in.form_name));
 
23956
                if (ndr_get_array_length(ndr, &r->in.form_name) > ndr_get_array_size(ndr, &r->in.form_name)) {
 
23957
                        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.form_name), ndr_get_array_length(ndr, &r->in.form_name));
 
23958
                }
 
23959
                NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.form_name), sizeof(uint16_t)));
 
23960
                NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.form_name, ndr_get_array_length(ndr, &r->in.form_name), sizeof(uint16_t), CH_UTF16));
 
23961
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.level));
 
23962
                NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_buffer));
 
23963
                if (_ptr_buffer) {
 
23964
                        NDR_PULL_ALLOC(ndr, r->in.buffer);
 
23965
                } else {
 
23966
                        r->in.buffer = NULL;
 
23967
                }
 
23968
                if (r->in.buffer) {
 
23969
                        _mem_save_buffer_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
23970
                        NDR_PULL_SET_MEM_CTX(ndr, r->in.buffer, 0);
 
23971
                        NDR_CHECK(ndr_pull_DATA_BLOB(ndr, NDR_SCALARS, r->in.buffer));
 
23972
                        NDR_PULL_SET_MEM_CTX(ndr, _mem_save_buffer_0, 0);
 
23973
                }
 
23974
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.offered));
 
23975
                NDR_PULL_ALLOC(ndr, r->out.needed);
 
23976
                ZERO_STRUCTP(r->out.needed);
 
23977
        }
 
23978
        if (flags & NDR_OUT) {
 
23979
                NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_info));
 
23980
                if (_ptr_info) {
 
23981
                        NDR_PULL_ALLOC(ndr, r->out.info);
 
23982
                } else {
 
23983
                        r->out.info = NULL;
 
23984
                }
 
23985
                if (r->out.info) {
 
23986
                        _mem_save_info_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
23987
                        NDR_PULL_SET_MEM_CTX(ndr, r->out.info, 0);
 
23988
                        {
 
23989
                                struct ndr_pull *_ndr_info;
 
23990
                                NDR_CHECK(ndr_pull_subcontext_start(ndr, &_ndr_info, 4, r->in.offered));
 
23991
                                NDR_CHECK(ndr_pull_set_switch_value(_ndr_info, r->out.info, r->in.level));
 
23992
                                NDR_CHECK(ndr_pull_spoolss_FormInfo(_ndr_info, NDR_SCALARS|NDR_BUFFERS, r->out.info));
 
23993
                                NDR_CHECK(ndr_pull_subcontext_end(ndr, _ndr_info, 4, r->in.offered));
 
23994
                        }
 
23995
                        NDR_PULL_SET_MEM_CTX(ndr, _mem_save_info_0, 0);
 
23996
                }
 
23997
                if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
 
23998
                        NDR_PULL_ALLOC(ndr, r->out.needed);
 
23999
                }
 
24000
                _mem_save_needed_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
24001
                NDR_PULL_SET_MEM_CTX(ndr, r->out.needed, LIBNDR_FLAG_REF_ALLOC);
 
24002
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.needed));
 
24003
                NDR_PULL_SET_MEM_CTX(ndr, _mem_save_needed_0, LIBNDR_FLAG_REF_ALLOC);
 
24004
                NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
 
24005
        }
 
24006
        return NDR_ERR_SUCCESS;
 
24007
}
 
24008
 
 
24009
_PUBLIC_ void ndr_print_spoolss_GetForm(struct ndr_print *ndr, const char *name, int flags, const struct spoolss_GetForm *r)
 
24010
{
 
24011
        ndr_print_struct(ndr, name, "spoolss_GetForm");
 
24012
        ndr->depth++;
 
24013
        if (flags & NDR_SET_VALUES) {
 
24014
                ndr->flags |= LIBNDR_PRINT_SET_VALUES;
 
24015
        }
 
24016
        if (flags & NDR_IN) {
 
24017
                ndr_print_struct(ndr, "in", "spoolss_GetForm");
 
24018
                ndr->depth++;
 
24019
                ndr_print_ptr(ndr, "handle", r->in.handle);
 
24020
                ndr->depth++;
 
24021
                ndr_print_policy_handle(ndr, "handle", r->in.handle);
 
24022
                ndr->depth--;
 
24023
                ndr_print_string(ndr, "form_name", r->in.form_name);
 
24024
                ndr_print_uint32(ndr, "level", r->in.level);
 
24025
                ndr_print_ptr(ndr, "buffer", r->in.buffer);
 
24026
                ndr->depth++;
 
24027
                if (r->in.buffer) {
 
24028
                        ndr_print_DATA_BLOB(ndr, "buffer", *r->in.buffer);
 
24029
                }
 
24030
                ndr->depth--;
 
24031
                ndr_print_uint32(ndr, "offered", r->in.offered);
 
24032
                ndr->depth--;
 
24033
        }
 
24034
        if (flags & NDR_OUT) {
 
24035
                ndr_print_struct(ndr, "out", "spoolss_GetForm");
 
24036
                ndr->depth++;
 
24037
                ndr_print_ptr(ndr, "info", r->out.info);
 
24038
                ndr->depth++;
 
24039
                if (r->out.info) {
 
24040
                        ndr_print_set_switch_value(ndr, r->out.info, r->in.level);
 
24041
                        ndr_print_spoolss_FormInfo(ndr, "info", r->out.info);
 
24042
                }
 
24043
                ndr->depth--;
 
24044
                ndr_print_ptr(ndr, "needed", r->out.needed);
 
24045
                ndr->depth++;
 
24046
                ndr_print_uint32(ndr, "needed", *r->out.needed);
 
24047
                ndr->depth--;
 
24048
                ndr_print_WERROR(ndr, "result", r->out.result);
 
24049
                ndr->depth--;
 
24050
        }
 
24051
        ndr->depth--;
 
24052
}
 
24053
 
 
24054
static enum ndr_err_code ndr_push_spoolss_SetForm(struct ndr_push *ndr, int flags, const struct spoolss_SetForm *r)
 
24055
{
 
24056
        if (flags & NDR_IN) {
 
24057
                if (r->in.handle == NULL) {
 
24058
                        return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
 
24059
                }
 
24060
                NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
 
24061
                NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.form_name, CH_UTF16)));
 
24062
                NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0));
 
24063
                NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.form_name, CH_UTF16)));
 
24064
                NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.form_name, ndr_charset_length(r->in.form_name, CH_UTF16), sizeof(uint16_t), CH_UTF16));
 
24065
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.level));
 
24066
                NDR_CHECK(ndr_push_set_switch_value(ndr, &r->in.info, r->in.level));
 
24067
                NDR_CHECK(ndr_push_spoolss_AddFormInfo(ndr, NDR_SCALARS|NDR_BUFFERS, &r->in.info));
 
24068
        }
 
24069
        if (flags & NDR_OUT) {
 
24070
                NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
 
24071
        }
 
24072
        return NDR_ERR_SUCCESS;
 
24073
}
 
24074
 
 
24075
static enum ndr_err_code ndr_pull_spoolss_SetForm(struct ndr_pull *ndr, int flags, struct spoolss_SetForm *r)
 
24076
{
 
24077
        TALLOC_CTX *_mem_save_handle_0;
 
24078
        if (flags & NDR_IN) {
 
24079
                if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
 
24080
                        NDR_PULL_ALLOC(ndr, r->in.handle);
 
24081
                }
 
24082
                _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
24083
                NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
 
24084
                NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
 
24085
                NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
 
24086
                NDR_CHECK(ndr_pull_array_size(ndr, &r->in.form_name));
 
24087
                NDR_CHECK(ndr_pull_array_length(ndr, &r->in.form_name));
 
24088
                if (ndr_get_array_length(ndr, &r->in.form_name) > ndr_get_array_size(ndr, &r->in.form_name)) {
 
24089
                        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.form_name), ndr_get_array_length(ndr, &r->in.form_name));
 
24090
                }
 
24091
                NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.form_name), sizeof(uint16_t)));
 
24092
                NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.form_name, ndr_get_array_length(ndr, &r->in.form_name), sizeof(uint16_t), CH_UTF16));
 
24093
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.level));
 
24094
                NDR_CHECK(ndr_pull_set_switch_value(ndr, &r->in.info, r->in.level));
 
24095
                NDR_CHECK(ndr_pull_spoolss_AddFormInfo(ndr, NDR_SCALARS|NDR_BUFFERS, &r->in.info));
 
24096
        }
 
24097
        if (flags & NDR_OUT) {
 
24098
                NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
 
24099
        }
 
24100
        return NDR_ERR_SUCCESS;
 
24101
}
 
24102
 
 
24103
_PUBLIC_ void ndr_print_spoolss_SetForm(struct ndr_print *ndr, const char *name, int flags, const struct spoolss_SetForm *r)
 
24104
{
 
24105
        ndr_print_struct(ndr, name, "spoolss_SetForm");
 
24106
        ndr->depth++;
 
24107
        if (flags & NDR_SET_VALUES) {
 
24108
                ndr->flags |= LIBNDR_PRINT_SET_VALUES;
 
24109
        }
 
24110
        if (flags & NDR_IN) {
 
24111
                ndr_print_struct(ndr, "in", "spoolss_SetForm");
 
24112
                ndr->depth++;
 
24113
                ndr_print_ptr(ndr, "handle", r->in.handle);
 
24114
                ndr->depth++;
 
24115
                ndr_print_policy_handle(ndr, "handle", r->in.handle);
 
24116
                ndr->depth--;
 
24117
                ndr_print_string(ndr, "form_name", r->in.form_name);
 
24118
                ndr_print_uint32(ndr, "level", r->in.level);
 
24119
                ndr_print_set_switch_value(ndr, &r->in.info, r->in.level);
 
24120
                ndr_print_spoolss_AddFormInfo(ndr, "info", &r->in.info);
 
24121
                ndr->depth--;
 
24122
        }
 
24123
        if (flags & NDR_OUT) {
 
24124
                ndr_print_struct(ndr, "out", "spoolss_SetForm");
 
24125
                ndr->depth++;
 
24126
                ndr_print_WERROR(ndr, "result", r->out.result);
 
24127
                ndr->depth--;
 
24128
        }
 
24129
        ndr->depth--;
 
24130
}
 
24131
 
 
24132
_PUBLIC_ enum ndr_err_code ndr_push__spoolss_EnumForms(struct ndr_push *ndr, int flags, const struct _spoolss_EnumForms *r)
 
24133
{
 
24134
        if (flags & NDR_IN) {
 
24135
                if (r->in.handle == NULL) {
 
24136
                        return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
 
24137
                }
 
24138
                NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
 
24139
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.level));
 
24140
                NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.buffer));
 
24141
                if (r->in.buffer) {
 
24142
                        NDR_CHECK(ndr_push_DATA_BLOB(ndr, NDR_SCALARS, *r->in.buffer));
 
24143
                }
 
24144
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.offered));
 
24145
        }
 
24146
        if (flags & NDR_OUT) {
 
24147
                NDR_CHECK(ndr_push_unique_ptr(ndr, r->out.info));
 
24148
                if (r->out.info) {
 
24149
                        NDR_CHECK(ndr_push_DATA_BLOB(ndr, NDR_SCALARS, *r->out.info));
 
24150
                }
 
24151
                if (r->out.needed == NULL) {
 
24152
                        return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
 
24153
                }
 
24154
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.needed));
 
24155
                if (r->out.count == NULL) {
 
24156
                        return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
 
24157
                }
 
24158
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.count));
 
24159
                NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
 
24160
        }
 
24161
        return NDR_ERR_SUCCESS;
 
24162
}
 
24163
 
 
24164
_PUBLIC_ enum ndr_err_code ndr_pull__spoolss_EnumForms(struct ndr_pull *ndr, int flags, struct _spoolss_EnumForms *r)
 
24165
{
 
24166
        uint32_t _ptr_buffer;
 
24167
        uint32_t _ptr_info;
 
24168
        TALLOC_CTX *_mem_save_handle_0;
 
24169
        TALLOC_CTX *_mem_save_buffer_0;
 
24170
        TALLOC_CTX *_mem_save_info_0;
 
24171
        TALLOC_CTX *_mem_save_needed_0;
 
24172
        TALLOC_CTX *_mem_save_count_0;
 
24173
        if (flags & NDR_IN) {
 
24174
                ZERO_STRUCT(r->out);
 
24175
 
 
24176
                if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
 
24177
                        NDR_PULL_ALLOC(ndr, r->in.handle);
 
24178
                }
 
24179
                _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
24180
                NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
 
24181
                NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
 
24182
                NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
 
24183
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.level));
 
24184
                NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_buffer));
 
24185
                if (_ptr_buffer) {
 
24186
                        NDR_PULL_ALLOC(ndr, r->in.buffer);
 
24187
                } else {
 
24188
                        r->in.buffer = NULL;
 
24189
                }
 
24190
                if (r->in.buffer) {
 
24191
                        _mem_save_buffer_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
24192
                        NDR_PULL_SET_MEM_CTX(ndr, r->in.buffer, 0);
 
24193
                        NDR_CHECK(ndr_pull_DATA_BLOB(ndr, NDR_SCALARS, r->in.buffer));
 
24194
                        NDR_PULL_SET_MEM_CTX(ndr, _mem_save_buffer_0, 0);
 
24195
                }
 
24196
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.offered));
 
24197
                NDR_PULL_ALLOC(ndr, r->out.needed);
 
24198
                ZERO_STRUCTP(r->out.needed);
 
24199
                NDR_PULL_ALLOC(ndr, r->out.count);
 
24200
                ZERO_STRUCTP(r->out.count);
 
24201
        }
 
24202
        if (flags & NDR_OUT) {
 
24203
                NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_info));
 
24204
                if (_ptr_info) {
 
24205
                        NDR_PULL_ALLOC(ndr, r->out.info);
 
24206
                } else {
 
24207
                        r->out.info = NULL;
 
24208
                }
 
24209
                if (r->out.info) {
 
24210
                        _mem_save_info_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
24211
                        NDR_PULL_SET_MEM_CTX(ndr, r->out.info, 0);
 
24212
                        NDR_CHECK(ndr_pull_DATA_BLOB(ndr, NDR_SCALARS, r->out.info));
 
24213
                        NDR_PULL_SET_MEM_CTX(ndr, _mem_save_info_0, 0);
 
24214
                }
 
24215
                if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
 
24216
                        NDR_PULL_ALLOC(ndr, r->out.needed);
 
24217
                }
 
24218
                _mem_save_needed_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
24219
                NDR_PULL_SET_MEM_CTX(ndr, r->out.needed, LIBNDR_FLAG_REF_ALLOC);
 
24220
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.needed));
 
24221
                NDR_PULL_SET_MEM_CTX(ndr, _mem_save_needed_0, LIBNDR_FLAG_REF_ALLOC);
 
24222
                if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
 
24223
                        NDR_PULL_ALLOC(ndr, r->out.count);
 
24224
                }
 
24225
                _mem_save_count_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
24226
                NDR_PULL_SET_MEM_CTX(ndr, r->out.count, LIBNDR_FLAG_REF_ALLOC);
 
24227
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.count));
 
24228
                NDR_PULL_SET_MEM_CTX(ndr, _mem_save_count_0, LIBNDR_FLAG_REF_ALLOC);
 
24229
                NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
 
24230
        }
 
24231
        return NDR_ERR_SUCCESS;
 
24232
}
 
24233
 
 
24234
_PUBLIC_ enum ndr_err_code ndr_push___spoolss_EnumForms(struct ndr_push *ndr, int flags, const struct __spoolss_EnumForms *r)
 
24235
{
 
24236
        uint32_t cntr_info_0;
 
24237
        if (flags & NDR_IN) {
 
24238
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.level));
 
24239
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.count));
 
24240
        }
 
24241
        if (flags & NDR_OUT) {
 
24242
                for (cntr_info_0 = 0; cntr_info_0 < r->in.count; cntr_info_0++) {
 
24243
                        NDR_CHECK(ndr_push_set_switch_value(ndr, &r->out.info[cntr_info_0], r->in.level));
 
24244
                        NDR_CHECK(ndr_push_spoolss_FormInfo(ndr, NDR_SCALARS, &r->out.info[cntr_info_0]));
 
24245
                }
 
24246
                for (cntr_info_0 = 0; cntr_info_0 < r->in.count; cntr_info_0++) {
 
24247
                        NDR_CHECK(ndr_push_spoolss_FormInfo(ndr, NDR_BUFFERS, &r->out.info[cntr_info_0]));
 
24248
                }
 
24249
        }
 
24250
        return NDR_ERR_SUCCESS;
 
24251
}
 
24252
 
 
24253
_PUBLIC_ enum ndr_err_code ndr_pull___spoolss_EnumForms(struct ndr_pull *ndr, int flags, struct __spoolss_EnumForms *r)
 
24254
{
 
24255
        uint32_t cntr_info_0;
 
24256
        TALLOC_CTX *_mem_save_info_0;
 
24257
        if (flags & NDR_IN) {
 
24258
                ZERO_STRUCT(r->out);
 
24259
 
 
24260
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.level));
 
24261
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.count));
 
24262
        }
 
24263
        if (flags & NDR_OUT) {
 
24264
                NDR_PULL_ALLOC_N(ndr, r->out.info, r->in.count);
 
24265
                _mem_save_info_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
24266
                NDR_PULL_SET_MEM_CTX(ndr, r->out.info, 0);
 
24267
                for (cntr_info_0 = 0; cntr_info_0 < r->in.count; cntr_info_0++) {
 
24268
                        NDR_CHECK(ndr_pull_set_switch_value(ndr, &r->out.info[cntr_info_0], r->in.level));
 
24269
                        NDR_CHECK(ndr_pull_spoolss_FormInfo(ndr, NDR_SCALARS, &r->out.info[cntr_info_0]));
 
24270
                }
 
24271
                for (cntr_info_0 = 0; cntr_info_0 < r->in.count; cntr_info_0++) {
 
24272
                        NDR_CHECK(ndr_pull_spoolss_FormInfo(ndr, NDR_BUFFERS, &r->out.info[cntr_info_0]));
 
24273
                }
 
24274
                NDR_PULL_SET_MEM_CTX(ndr, _mem_save_info_0, 0);
 
24275
        }
 
24276
        return NDR_ERR_SUCCESS;
 
24277
}
 
24278
 
 
24279
_PUBLIC_ void ndr_print_spoolss_EnumForms(struct ndr_print *ndr, const char *name, int flags, const struct spoolss_EnumForms *r)
 
24280
{
 
24281
        uint32_t cntr_info_2;
 
24282
        ndr_print_struct(ndr, name, "spoolss_EnumForms");
 
24283
        ndr->depth++;
 
24284
        if (flags & NDR_SET_VALUES) {
 
24285
                ndr->flags |= LIBNDR_PRINT_SET_VALUES;
 
24286
        }
 
24287
        if (flags & NDR_IN) {
 
24288
                ndr_print_struct(ndr, "in", "spoolss_EnumForms");
 
24289
                ndr->depth++;
 
24290
                ndr_print_ptr(ndr, "handle", r->in.handle);
 
24291
                ndr->depth++;
 
24292
                ndr_print_policy_handle(ndr, "handle", r->in.handle);
 
24293
                ndr->depth--;
 
24294
                ndr_print_uint32(ndr, "level", r->in.level);
 
24295
                ndr_print_ptr(ndr, "buffer", r->in.buffer);
 
24296
                ndr->depth++;
 
24297
                if (r->in.buffer) {
 
24298
                        ndr_print_DATA_BLOB(ndr, "buffer", *r->in.buffer);
 
24299
                }
 
24300
                ndr->depth--;
 
24301
                ndr_print_uint32(ndr, "offered", r->in.offered);
 
24302
                ndr->depth--;
 
24303
        }
 
24304
        if (flags & NDR_OUT) {
 
24305
                ndr_print_struct(ndr, "out", "spoolss_EnumForms");
 
24306
                ndr->depth++;
 
24307
                ndr_print_ptr(ndr, "count", r->out.count);
 
24308
                ndr->depth++;
 
24309
                ndr_print_uint32(ndr, "count", *r->out.count);
 
24310
                ndr->depth--;
 
24311
                ndr_print_ptr(ndr, "info", r->out.info);
 
24312
                ndr->depth++;
 
24313
                ndr_print_ptr(ndr, "info", *r->out.info);
 
24314
                ndr->depth++;
 
24315
                if (*r->out.info) {
 
24316
                        ndr->print(ndr, "%s: ARRAY(%d)", "info", (int)*r->out.count);
 
24317
                        ndr->depth++;
 
24318
                        for (cntr_info_2=0;cntr_info_2<*r->out.count;cntr_info_2++) {
 
24319
                                char *idx_2=NULL;
 
24320
                                if (asprintf(&idx_2, "[%d]", cntr_info_2) != -1) {
 
24321
                                        ndr_print_set_switch_value(ndr, &(*r->out.info)[cntr_info_2], r->in.level);
 
24322
                                        ndr_print_spoolss_FormInfo(ndr, "info", &(*r->out.info)[cntr_info_2]);
 
24323
                                        free(idx_2);
 
24324
                                }
 
24325
                        }
 
24326
                        ndr->depth--;
 
24327
                }
 
24328
                ndr->depth--;
 
24329
                ndr->depth--;
 
24330
                ndr_print_ptr(ndr, "needed", r->out.needed);
 
24331
                ndr->depth++;
 
24332
                ndr_print_uint32(ndr, "needed", *r->out.needed);
 
24333
                ndr->depth--;
 
24334
                ndr_print_WERROR(ndr, "result", r->out.result);
 
24335
                ndr->depth--;
 
24336
        }
 
24337
        ndr->depth--;
 
24338
}
 
24339
 
 
24340
_PUBLIC_ enum ndr_err_code ndr_push__spoolss_EnumPorts(struct ndr_push *ndr, int flags, const struct _spoolss_EnumPorts *r)
 
24341
{
 
24342
        if (flags & NDR_IN) {
 
24343
                NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.servername));
 
24344
                if (r->in.servername) {
 
24345
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.servername, CH_UTF16)));
 
24346
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0));
 
24347
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.servername, CH_UTF16)));
 
24348
                        NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.servername, ndr_charset_length(r->in.servername, CH_UTF16), sizeof(uint16_t), CH_UTF16));
 
24349
                }
 
24350
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.level));
 
24351
                NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.buffer));
 
24352
                if (r->in.buffer) {
 
24353
                        NDR_CHECK(ndr_push_DATA_BLOB(ndr, NDR_SCALARS, *r->in.buffer));
 
24354
                }
 
24355
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.offered));
 
24356
        }
 
24357
        if (flags & NDR_OUT) {
 
24358
                NDR_CHECK(ndr_push_unique_ptr(ndr, r->out.info));
 
24359
                if (r->out.info) {
 
24360
                        NDR_CHECK(ndr_push_DATA_BLOB(ndr, NDR_SCALARS, *r->out.info));
 
24361
                }
 
24362
                if (r->out.needed == NULL) {
 
24363
                        return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
 
24364
                }
 
24365
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.needed));
 
24366
                if (r->out.count == NULL) {
 
24367
                        return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
 
24368
                }
 
24369
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.count));
 
24370
                NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
 
24371
        }
 
24372
        return NDR_ERR_SUCCESS;
 
24373
}
 
24374
 
 
24375
_PUBLIC_ enum ndr_err_code ndr_pull__spoolss_EnumPorts(struct ndr_pull *ndr, int flags, struct _spoolss_EnumPorts *r)
 
24376
{
 
24377
        uint32_t _ptr_servername;
 
24378
        uint32_t _ptr_buffer;
 
24379
        uint32_t _ptr_info;
 
24380
        TALLOC_CTX *_mem_save_servername_0;
 
24381
        TALLOC_CTX *_mem_save_buffer_0;
 
24382
        TALLOC_CTX *_mem_save_info_0;
 
24383
        TALLOC_CTX *_mem_save_needed_0;
 
24384
        TALLOC_CTX *_mem_save_count_0;
 
24385
        if (flags & NDR_IN) {
 
24386
                ZERO_STRUCT(r->out);
 
24387
 
 
24388
                NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_servername));
 
24389
                if (_ptr_servername) {
 
24390
                        NDR_PULL_ALLOC(ndr, r->in.servername);
 
24391
                } else {
 
24392
                        r->in.servername = NULL;
 
24393
                }
 
24394
                if (r->in.servername) {
 
24395
                        _mem_save_servername_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
24396
                        NDR_PULL_SET_MEM_CTX(ndr, r->in.servername, 0);
 
24397
                        NDR_CHECK(ndr_pull_array_size(ndr, &r->in.servername));
 
24398
                        NDR_CHECK(ndr_pull_array_length(ndr, &r->in.servername));
 
24399
                        if (ndr_get_array_length(ndr, &r->in.servername) > ndr_get_array_size(ndr, &r->in.servername)) {
 
24400
                                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.servername), ndr_get_array_length(ndr, &r->in.servername));
 
24401
                        }
 
24402
                        NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.servername), sizeof(uint16_t)));
 
24403
                        NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.servername, ndr_get_array_length(ndr, &r->in.servername), sizeof(uint16_t), CH_UTF16));
 
24404
                        NDR_PULL_SET_MEM_CTX(ndr, _mem_save_servername_0, 0);
 
24405
                }
 
24406
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.level));
 
24407
                NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_buffer));
 
24408
                if (_ptr_buffer) {
 
24409
                        NDR_PULL_ALLOC(ndr, r->in.buffer);
 
24410
                } else {
 
24411
                        r->in.buffer = NULL;
 
24412
                }
 
24413
                if (r->in.buffer) {
 
24414
                        _mem_save_buffer_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
24415
                        NDR_PULL_SET_MEM_CTX(ndr, r->in.buffer, 0);
 
24416
                        NDR_CHECK(ndr_pull_DATA_BLOB(ndr, NDR_SCALARS, r->in.buffer));
 
24417
                        NDR_PULL_SET_MEM_CTX(ndr, _mem_save_buffer_0, 0);
 
24418
                }
 
24419
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.offered));
 
24420
                NDR_PULL_ALLOC(ndr, r->out.needed);
 
24421
                ZERO_STRUCTP(r->out.needed);
 
24422
                NDR_PULL_ALLOC(ndr, r->out.count);
 
24423
                ZERO_STRUCTP(r->out.count);
 
24424
        }
 
24425
        if (flags & NDR_OUT) {
 
24426
                NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_info));
 
24427
                if (_ptr_info) {
 
24428
                        NDR_PULL_ALLOC(ndr, r->out.info);
 
24429
                } else {
 
24430
                        r->out.info = NULL;
 
24431
                }
 
24432
                if (r->out.info) {
 
24433
                        _mem_save_info_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
24434
                        NDR_PULL_SET_MEM_CTX(ndr, r->out.info, 0);
 
24435
                        NDR_CHECK(ndr_pull_DATA_BLOB(ndr, NDR_SCALARS, r->out.info));
 
24436
                        NDR_PULL_SET_MEM_CTX(ndr, _mem_save_info_0, 0);
 
24437
                }
 
24438
                if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
 
24439
                        NDR_PULL_ALLOC(ndr, r->out.needed);
 
24440
                }
 
24441
                _mem_save_needed_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
24442
                NDR_PULL_SET_MEM_CTX(ndr, r->out.needed, LIBNDR_FLAG_REF_ALLOC);
 
24443
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.needed));
 
24444
                NDR_PULL_SET_MEM_CTX(ndr, _mem_save_needed_0, LIBNDR_FLAG_REF_ALLOC);
 
24445
                if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
 
24446
                        NDR_PULL_ALLOC(ndr, r->out.count);
 
24447
                }
 
24448
                _mem_save_count_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
24449
                NDR_PULL_SET_MEM_CTX(ndr, r->out.count, LIBNDR_FLAG_REF_ALLOC);
 
24450
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.count));
 
24451
                NDR_PULL_SET_MEM_CTX(ndr, _mem_save_count_0, LIBNDR_FLAG_REF_ALLOC);
 
24452
                NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
 
24453
        }
 
24454
        return NDR_ERR_SUCCESS;
 
24455
}
 
24456
 
 
24457
_PUBLIC_ enum ndr_err_code ndr_push___spoolss_EnumPorts(struct ndr_push *ndr, int flags, const struct __spoolss_EnumPorts *r)
 
24458
{
 
24459
        uint32_t cntr_info_0;
 
24460
        if (flags & NDR_IN) {
 
24461
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.level));
 
24462
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.count));
 
24463
        }
 
24464
        if (flags & NDR_OUT) {
 
24465
                for (cntr_info_0 = 0; cntr_info_0 < r->in.count; cntr_info_0++) {
 
24466
                        NDR_CHECK(ndr_push_set_switch_value(ndr, &r->out.info[cntr_info_0], r->in.level));
 
24467
                        NDR_CHECK(ndr_push_spoolss_PortInfo(ndr, NDR_SCALARS, &r->out.info[cntr_info_0]));
 
24468
                }
 
24469
                for (cntr_info_0 = 0; cntr_info_0 < r->in.count; cntr_info_0++) {
 
24470
                        NDR_CHECK(ndr_push_spoolss_PortInfo(ndr, NDR_BUFFERS, &r->out.info[cntr_info_0]));
 
24471
                }
 
24472
        }
 
24473
        return NDR_ERR_SUCCESS;
 
24474
}
 
24475
 
 
24476
_PUBLIC_ enum ndr_err_code ndr_pull___spoolss_EnumPorts(struct ndr_pull *ndr, int flags, struct __spoolss_EnumPorts *r)
 
24477
{
 
24478
        uint32_t cntr_info_0;
 
24479
        TALLOC_CTX *_mem_save_info_0;
 
24480
        if (flags & NDR_IN) {
 
24481
                ZERO_STRUCT(r->out);
 
24482
 
 
24483
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.level));
 
24484
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.count));
 
24485
        }
 
24486
        if (flags & NDR_OUT) {
 
24487
                NDR_PULL_ALLOC_N(ndr, r->out.info, r->in.count);
 
24488
                _mem_save_info_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
24489
                NDR_PULL_SET_MEM_CTX(ndr, r->out.info, 0);
 
24490
                for (cntr_info_0 = 0; cntr_info_0 < r->in.count; cntr_info_0++) {
 
24491
                        NDR_CHECK(ndr_pull_set_switch_value(ndr, &r->out.info[cntr_info_0], r->in.level));
 
24492
                        NDR_CHECK(ndr_pull_spoolss_PortInfo(ndr, NDR_SCALARS, &r->out.info[cntr_info_0]));
 
24493
                }
 
24494
                for (cntr_info_0 = 0; cntr_info_0 < r->in.count; cntr_info_0++) {
 
24495
                        NDR_CHECK(ndr_pull_spoolss_PortInfo(ndr, NDR_BUFFERS, &r->out.info[cntr_info_0]));
 
24496
                }
 
24497
                NDR_PULL_SET_MEM_CTX(ndr, _mem_save_info_0, 0);
 
24498
        }
 
24499
        return NDR_ERR_SUCCESS;
 
24500
}
 
24501
 
 
24502
_PUBLIC_ void ndr_print_spoolss_EnumPorts(struct ndr_print *ndr, const char *name, int flags, const struct spoolss_EnumPorts *r)
 
24503
{
 
24504
        uint32_t cntr_info_2;
 
24505
        ndr_print_struct(ndr, name, "spoolss_EnumPorts");
 
24506
        ndr->depth++;
 
24507
        if (flags & NDR_SET_VALUES) {
 
24508
                ndr->flags |= LIBNDR_PRINT_SET_VALUES;
 
24509
        }
 
24510
        if (flags & NDR_IN) {
 
24511
                ndr_print_struct(ndr, "in", "spoolss_EnumPorts");
 
24512
                ndr->depth++;
 
24513
                ndr_print_ptr(ndr, "servername", r->in.servername);
 
24514
                ndr->depth++;
 
24515
                if (r->in.servername) {
 
24516
                        ndr_print_string(ndr, "servername", r->in.servername);
 
24517
                }
 
24518
                ndr->depth--;
 
24519
                ndr_print_uint32(ndr, "level", r->in.level);
 
24520
                ndr_print_ptr(ndr, "buffer", r->in.buffer);
 
24521
                ndr->depth++;
 
24522
                if (r->in.buffer) {
 
24523
                        ndr_print_DATA_BLOB(ndr, "buffer", *r->in.buffer);
 
24524
                }
 
24525
                ndr->depth--;
 
24526
                ndr_print_uint32(ndr, "offered", r->in.offered);
 
24527
                ndr->depth--;
 
24528
        }
 
24529
        if (flags & NDR_OUT) {
 
24530
                ndr_print_struct(ndr, "out", "spoolss_EnumPorts");
 
24531
                ndr->depth++;
 
24532
                ndr_print_ptr(ndr, "count", r->out.count);
 
24533
                ndr->depth++;
 
24534
                ndr_print_uint32(ndr, "count", *r->out.count);
 
24535
                ndr->depth--;
 
24536
                ndr_print_ptr(ndr, "info", r->out.info);
 
24537
                ndr->depth++;
 
24538
                ndr_print_ptr(ndr, "info", *r->out.info);
 
24539
                ndr->depth++;
 
24540
                if (*r->out.info) {
 
24541
                        ndr->print(ndr, "%s: ARRAY(%d)", "info", (int)*r->out.count);
 
24542
                        ndr->depth++;
 
24543
                        for (cntr_info_2=0;cntr_info_2<*r->out.count;cntr_info_2++) {
 
24544
                                char *idx_2=NULL;
 
24545
                                if (asprintf(&idx_2, "[%d]", cntr_info_2) != -1) {
 
24546
                                        ndr_print_set_switch_value(ndr, &(*r->out.info)[cntr_info_2], r->in.level);
 
24547
                                        ndr_print_spoolss_PortInfo(ndr, "info", &(*r->out.info)[cntr_info_2]);
 
24548
                                        free(idx_2);
 
24549
                                }
 
24550
                        }
 
24551
                        ndr->depth--;
 
24552
                }
 
24553
                ndr->depth--;
 
24554
                ndr->depth--;
 
24555
                ndr_print_ptr(ndr, "needed", r->out.needed);
 
24556
                ndr->depth++;
 
24557
                ndr_print_uint32(ndr, "needed", *r->out.needed);
 
24558
                ndr->depth--;
 
24559
                ndr_print_WERROR(ndr, "result", r->out.result);
 
24560
                ndr->depth--;
 
24561
        }
 
24562
        ndr->depth--;
 
24563
}
 
24564
 
 
24565
_PUBLIC_ enum ndr_err_code ndr_push__spoolss_EnumMonitors(struct ndr_push *ndr, int flags, const struct _spoolss_EnumMonitors *r)
 
24566
{
 
24567
        if (flags & NDR_IN) {
 
24568
                NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.servername));
 
24569
                if (r->in.servername) {
 
24570
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.servername, CH_UTF16)));
 
24571
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0));
 
24572
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.servername, CH_UTF16)));
 
24573
                        NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.servername, ndr_charset_length(r->in.servername, CH_UTF16), sizeof(uint16_t), CH_UTF16));
 
24574
                }
 
24575
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.level));
 
24576
                NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.buffer));
 
24577
                if (r->in.buffer) {
 
24578
                        NDR_CHECK(ndr_push_DATA_BLOB(ndr, NDR_SCALARS, *r->in.buffer));
 
24579
                }
 
24580
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.offered));
 
24581
        }
 
24582
        if (flags & NDR_OUT) {
 
24583
                NDR_CHECK(ndr_push_unique_ptr(ndr, r->out.info));
 
24584
                if (r->out.info) {
 
24585
                        NDR_CHECK(ndr_push_DATA_BLOB(ndr, NDR_SCALARS, *r->out.info));
 
24586
                }
 
24587
                if (r->out.needed == NULL) {
 
24588
                        return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
 
24589
                }
 
24590
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.needed));
 
24591
                if (r->out.count == NULL) {
 
24592
                        return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
 
24593
                }
 
24594
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.count));
 
24595
                NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
 
24596
        }
 
24597
        return NDR_ERR_SUCCESS;
 
24598
}
 
24599
 
 
24600
_PUBLIC_ enum ndr_err_code ndr_pull__spoolss_EnumMonitors(struct ndr_pull *ndr, int flags, struct _spoolss_EnumMonitors *r)
 
24601
{
 
24602
        uint32_t _ptr_servername;
 
24603
        uint32_t _ptr_buffer;
 
24604
        uint32_t _ptr_info;
 
24605
        TALLOC_CTX *_mem_save_servername_0;
 
24606
        TALLOC_CTX *_mem_save_buffer_0;
 
24607
        TALLOC_CTX *_mem_save_info_0;
 
24608
        TALLOC_CTX *_mem_save_needed_0;
 
24609
        TALLOC_CTX *_mem_save_count_0;
 
24610
        if (flags & NDR_IN) {
 
24611
                ZERO_STRUCT(r->out);
 
24612
 
 
24613
                NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_servername));
 
24614
                if (_ptr_servername) {
 
24615
                        NDR_PULL_ALLOC(ndr, r->in.servername);
 
24616
                } else {
 
24617
                        r->in.servername = NULL;
 
24618
                }
 
24619
                if (r->in.servername) {
 
24620
                        _mem_save_servername_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
24621
                        NDR_PULL_SET_MEM_CTX(ndr, r->in.servername, 0);
 
24622
                        NDR_CHECK(ndr_pull_array_size(ndr, &r->in.servername));
 
24623
                        NDR_CHECK(ndr_pull_array_length(ndr, &r->in.servername));
 
24624
                        if (ndr_get_array_length(ndr, &r->in.servername) > ndr_get_array_size(ndr, &r->in.servername)) {
 
24625
                                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.servername), ndr_get_array_length(ndr, &r->in.servername));
 
24626
                        }
 
24627
                        NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.servername), sizeof(uint16_t)));
 
24628
                        NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.servername, ndr_get_array_length(ndr, &r->in.servername), sizeof(uint16_t), CH_UTF16));
 
24629
                        NDR_PULL_SET_MEM_CTX(ndr, _mem_save_servername_0, 0);
 
24630
                }
 
24631
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.level));
 
24632
                NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_buffer));
 
24633
                if (_ptr_buffer) {
 
24634
                        NDR_PULL_ALLOC(ndr, r->in.buffer);
 
24635
                } else {
 
24636
                        r->in.buffer = NULL;
 
24637
                }
 
24638
                if (r->in.buffer) {
 
24639
                        _mem_save_buffer_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
24640
                        NDR_PULL_SET_MEM_CTX(ndr, r->in.buffer, 0);
 
24641
                        NDR_CHECK(ndr_pull_DATA_BLOB(ndr, NDR_SCALARS, r->in.buffer));
 
24642
                        NDR_PULL_SET_MEM_CTX(ndr, _mem_save_buffer_0, 0);
 
24643
                }
 
24644
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.offered));
 
24645
                NDR_PULL_ALLOC(ndr, r->out.needed);
 
24646
                ZERO_STRUCTP(r->out.needed);
 
24647
                NDR_PULL_ALLOC(ndr, r->out.count);
 
24648
                ZERO_STRUCTP(r->out.count);
 
24649
        }
 
24650
        if (flags & NDR_OUT) {
 
24651
                NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_info));
 
24652
                if (_ptr_info) {
 
24653
                        NDR_PULL_ALLOC(ndr, r->out.info);
 
24654
                } else {
 
24655
                        r->out.info = NULL;
 
24656
                }
 
24657
                if (r->out.info) {
 
24658
                        _mem_save_info_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
24659
                        NDR_PULL_SET_MEM_CTX(ndr, r->out.info, 0);
 
24660
                        NDR_CHECK(ndr_pull_DATA_BLOB(ndr, NDR_SCALARS, r->out.info));
 
24661
                        NDR_PULL_SET_MEM_CTX(ndr, _mem_save_info_0, 0);
 
24662
                }
 
24663
                if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
 
24664
                        NDR_PULL_ALLOC(ndr, r->out.needed);
 
24665
                }
 
24666
                _mem_save_needed_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
24667
                NDR_PULL_SET_MEM_CTX(ndr, r->out.needed, LIBNDR_FLAG_REF_ALLOC);
 
24668
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.needed));
 
24669
                NDR_PULL_SET_MEM_CTX(ndr, _mem_save_needed_0, LIBNDR_FLAG_REF_ALLOC);
 
24670
                if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
 
24671
                        NDR_PULL_ALLOC(ndr, r->out.count);
 
24672
                }
 
24673
                _mem_save_count_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
24674
                NDR_PULL_SET_MEM_CTX(ndr, r->out.count, LIBNDR_FLAG_REF_ALLOC);
 
24675
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.count));
 
24676
                NDR_PULL_SET_MEM_CTX(ndr, _mem_save_count_0, LIBNDR_FLAG_REF_ALLOC);
 
24677
                NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
 
24678
        }
 
24679
        return NDR_ERR_SUCCESS;
 
24680
}
 
24681
 
 
24682
_PUBLIC_ enum ndr_err_code ndr_push___spoolss_EnumMonitors(struct ndr_push *ndr, int flags, const struct __spoolss_EnumMonitors *r)
 
24683
{
 
24684
        uint32_t cntr_info_0;
 
24685
        if (flags & NDR_IN) {
 
24686
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.level));
 
24687
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.count));
 
24688
        }
 
24689
        if (flags & NDR_OUT) {
 
24690
                for (cntr_info_0 = 0; cntr_info_0 < r->in.count; cntr_info_0++) {
 
24691
                        NDR_CHECK(ndr_push_set_switch_value(ndr, &r->out.info[cntr_info_0], r->in.level));
 
24692
                        NDR_CHECK(ndr_push_spoolss_MonitorInfo(ndr, NDR_SCALARS, &r->out.info[cntr_info_0]));
 
24693
                }
 
24694
                for (cntr_info_0 = 0; cntr_info_0 < r->in.count; cntr_info_0++) {
 
24695
                        NDR_CHECK(ndr_push_spoolss_MonitorInfo(ndr, NDR_BUFFERS, &r->out.info[cntr_info_0]));
 
24696
                }
 
24697
        }
 
24698
        return NDR_ERR_SUCCESS;
 
24699
}
 
24700
 
 
24701
_PUBLIC_ enum ndr_err_code ndr_pull___spoolss_EnumMonitors(struct ndr_pull *ndr, int flags, struct __spoolss_EnumMonitors *r)
 
24702
{
 
24703
        uint32_t cntr_info_0;
 
24704
        TALLOC_CTX *_mem_save_info_0;
 
24705
        if (flags & NDR_IN) {
 
24706
                ZERO_STRUCT(r->out);
 
24707
 
 
24708
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.level));
 
24709
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.count));
 
24710
        }
 
24711
        if (flags & NDR_OUT) {
 
24712
                NDR_PULL_ALLOC_N(ndr, r->out.info, r->in.count);
 
24713
                _mem_save_info_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
24714
                NDR_PULL_SET_MEM_CTX(ndr, r->out.info, 0);
 
24715
                for (cntr_info_0 = 0; cntr_info_0 < r->in.count; cntr_info_0++) {
 
24716
                        NDR_CHECK(ndr_pull_set_switch_value(ndr, &r->out.info[cntr_info_0], r->in.level));
 
24717
                        NDR_CHECK(ndr_pull_spoolss_MonitorInfo(ndr, NDR_SCALARS, &r->out.info[cntr_info_0]));
 
24718
                }
 
24719
                for (cntr_info_0 = 0; cntr_info_0 < r->in.count; cntr_info_0++) {
 
24720
                        NDR_CHECK(ndr_pull_spoolss_MonitorInfo(ndr, NDR_BUFFERS, &r->out.info[cntr_info_0]));
 
24721
                }
 
24722
                NDR_PULL_SET_MEM_CTX(ndr, _mem_save_info_0, 0);
 
24723
        }
 
24724
        return NDR_ERR_SUCCESS;
 
24725
}
 
24726
 
 
24727
_PUBLIC_ void ndr_print_spoolss_EnumMonitors(struct ndr_print *ndr, const char *name, int flags, const struct spoolss_EnumMonitors *r)
 
24728
{
 
24729
        uint32_t cntr_info_2;
 
24730
        ndr_print_struct(ndr, name, "spoolss_EnumMonitors");
 
24731
        ndr->depth++;
 
24732
        if (flags & NDR_SET_VALUES) {
 
24733
                ndr->flags |= LIBNDR_PRINT_SET_VALUES;
 
24734
        }
 
24735
        if (flags & NDR_IN) {
 
24736
                ndr_print_struct(ndr, "in", "spoolss_EnumMonitors");
 
24737
                ndr->depth++;
 
24738
                ndr_print_ptr(ndr, "servername", r->in.servername);
 
24739
                ndr->depth++;
 
24740
                if (r->in.servername) {
 
24741
                        ndr_print_string(ndr, "servername", r->in.servername);
 
24742
                }
 
24743
                ndr->depth--;
 
24744
                ndr_print_uint32(ndr, "level", r->in.level);
 
24745
                ndr_print_ptr(ndr, "buffer", r->in.buffer);
 
24746
                ndr->depth++;
 
24747
                if (r->in.buffer) {
 
24748
                        ndr_print_DATA_BLOB(ndr, "buffer", *r->in.buffer);
 
24749
                }
 
24750
                ndr->depth--;
 
24751
                ndr_print_uint32(ndr, "offered", r->in.offered);
 
24752
                ndr->depth--;
 
24753
        }
 
24754
        if (flags & NDR_OUT) {
 
24755
                ndr_print_struct(ndr, "out", "spoolss_EnumMonitors");
 
24756
                ndr->depth++;
 
24757
                ndr_print_ptr(ndr, "count", r->out.count);
 
24758
                ndr->depth++;
 
24759
                ndr_print_uint32(ndr, "count", *r->out.count);
 
24760
                ndr->depth--;
 
24761
                ndr_print_ptr(ndr, "info", r->out.info);
 
24762
                ndr->depth++;
 
24763
                ndr_print_ptr(ndr, "info", *r->out.info);
 
24764
                ndr->depth++;
 
24765
                if (*r->out.info) {
 
24766
                        ndr->print(ndr, "%s: ARRAY(%d)", "info", (int)*r->out.count);
 
24767
                        ndr->depth++;
 
24768
                        for (cntr_info_2=0;cntr_info_2<*r->out.count;cntr_info_2++) {
 
24769
                                char *idx_2=NULL;
 
24770
                                if (asprintf(&idx_2, "[%d]", cntr_info_2) != -1) {
 
24771
                                        ndr_print_set_switch_value(ndr, &(*r->out.info)[cntr_info_2], r->in.level);
 
24772
                                        ndr_print_spoolss_MonitorInfo(ndr, "info", &(*r->out.info)[cntr_info_2]);
 
24773
                                        free(idx_2);
 
24774
                                }
 
24775
                        }
 
24776
                        ndr->depth--;
 
24777
                }
 
24778
                ndr->depth--;
 
24779
                ndr->depth--;
 
24780
                ndr_print_ptr(ndr, "needed", r->out.needed);
 
24781
                ndr->depth++;
 
24782
                ndr_print_uint32(ndr, "needed", *r->out.needed);
 
24783
                ndr->depth--;
 
24784
                ndr_print_WERROR(ndr, "result", r->out.result);
 
24785
                ndr->depth--;
 
24786
        }
 
24787
        ndr->depth--;
 
24788
}
 
24789
 
 
24790
static enum ndr_err_code ndr_push_spoolss_AddPort(struct ndr_push *ndr, int flags, const struct spoolss_AddPort *r)
 
24791
{
 
24792
        if (flags & NDR_IN) {
 
24793
                NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.server_name));
 
24794
                if (r->in.server_name) {
 
24795
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_name, CH_UTF16)));
 
24796
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0));
 
24797
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_name, CH_UTF16)));
 
24798
                        NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.server_name, ndr_charset_length(r->in.server_name, CH_UTF16), sizeof(uint16_t), CH_UTF16));
 
24799
                }
 
24800
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.unknown));
 
24801
                NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.monitor_name, CH_UTF16)));
 
24802
                NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0));
 
24803
                NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.monitor_name, CH_UTF16)));
 
24804
                NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.monitor_name, ndr_charset_length(r->in.monitor_name, CH_UTF16), sizeof(uint16_t), CH_UTF16));
 
24805
        }
 
24806
        if (flags & NDR_OUT) {
 
24807
                NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
 
24808
        }
 
24809
        return NDR_ERR_SUCCESS;
 
24810
}
 
24811
 
 
24812
static enum ndr_err_code ndr_pull_spoolss_AddPort(struct ndr_pull *ndr, int flags, struct spoolss_AddPort *r)
 
24813
{
 
24814
        uint32_t _ptr_server_name;
 
24815
        TALLOC_CTX *_mem_save_server_name_0;
 
24816
        if (flags & NDR_IN) {
 
24817
                NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_server_name));
 
24818
                if (_ptr_server_name) {
 
24819
                        NDR_PULL_ALLOC(ndr, r->in.server_name);
 
24820
                } else {
 
24821
                        r->in.server_name = NULL;
 
24822
                }
 
24823
                if (r->in.server_name) {
 
24824
                        _mem_save_server_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
24825
                        NDR_PULL_SET_MEM_CTX(ndr, r->in.server_name, 0);
 
24826
                        NDR_CHECK(ndr_pull_array_size(ndr, &r->in.server_name));
 
24827
                        NDR_CHECK(ndr_pull_array_length(ndr, &r->in.server_name));
 
24828
                        if (ndr_get_array_length(ndr, &r->in.server_name) > ndr_get_array_size(ndr, &r->in.server_name)) {
 
24829
                                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.server_name), ndr_get_array_length(ndr, &r->in.server_name));
 
24830
                        }
 
24831
                        NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.server_name), sizeof(uint16_t)));
 
24832
                        NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.server_name, ndr_get_array_length(ndr, &r->in.server_name), sizeof(uint16_t), CH_UTF16));
 
24833
                        NDR_PULL_SET_MEM_CTX(ndr, _mem_save_server_name_0, 0);
 
24834
                }
 
24835
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.unknown));
 
24836
                NDR_CHECK(ndr_pull_array_size(ndr, &r->in.monitor_name));
 
24837
                NDR_CHECK(ndr_pull_array_length(ndr, &r->in.monitor_name));
 
24838
                if (ndr_get_array_length(ndr, &r->in.monitor_name) > ndr_get_array_size(ndr, &r->in.monitor_name)) {
 
24839
                        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.monitor_name), ndr_get_array_length(ndr, &r->in.monitor_name));
 
24840
                }
 
24841
                NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.monitor_name), sizeof(uint16_t)));
 
24842
                NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.monitor_name, ndr_get_array_length(ndr, &r->in.monitor_name), sizeof(uint16_t), CH_UTF16));
 
24843
        }
 
24844
        if (flags & NDR_OUT) {
 
24845
                NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
 
24846
        }
 
24847
        return NDR_ERR_SUCCESS;
 
24848
}
 
24849
 
 
24850
_PUBLIC_ void ndr_print_spoolss_AddPort(struct ndr_print *ndr, const char *name, int flags, const struct spoolss_AddPort *r)
 
24851
{
 
24852
        ndr_print_struct(ndr, name, "spoolss_AddPort");
 
24853
        ndr->depth++;
 
24854
        if (flags & NDR_SET_VALUES) {
 
24855
                ndr->flags |= LIBNDR_PRINT_SET_VALUES;
 
24856
        }
 
24857
        if (flags & NDR_IN) {
 
24858
                ndr_print_struct(ndr, "in", "spoolss_AddPort");
 
24859
                ndr->depth++;
 
24860
                ndr_print_ptr(ndr, "server_name", r->in.server_name);
 
24861
                ndr->depth++;
 
24862
                if (r->in.server_name) {
 
24863
                        ndr_print_string(ndr, "server_name", r->in.server_name);
 
24864
                }
 
24865
                ndr->depth--;
 
24866
                ndr_print_uint32(ndr, "unknown", r->in.unknown);
 
24867
                ndr_print_string(ndr, "monitor_name", r->in.monitor_name);
 
24868
                ndr->depth--;
 
24869
        }
 
24870
        if (flags & NDR_OUT) {
 
24871
                ndr_print_struct(ndr, "out", "spoolss_AddPort");
 
24872
                ndr->depth++;
 
24873
                ndr_print_WERROR(ndr, "result", r->out.result);
 
24874
                ndr->depth--;
 
24875
        }
 
24876
        ndr->depth--;
 
24877
}
 
24878
 
 
24879
static enum ndr_err_code ndr_push_spoolss_ConfigurePort(struct ndr_push *ndr, int flags, const struct spoolss_ConfigurePort *r)
 
24880
{
 
24881
        if (flags & NDR_IN) {
 
24882
        }
 
24883
        if (flags & NDR_OUT) {
 
24884
                NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
 
24885
        }
 
24886
        return NDR_ERR_SUCCESS;
 
24887
}
 
24888
 
 
24889
static enum ndr_err_code ndr_pull_spoolss_ConfigurePort(struct ndr_pull *ndr, int flags, struct spoolss_ConfigurePort *r)
 
24890
{
 
24891
        if (flags & NDR_IN) {
 
24892
        }
 
24893
        if (flags & NDR_OUT) {
 
24894
                NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
 
24895
        }
 
24896
        return NDR_ERR_SUCCESS;
 
24897
}
 
24898
 
 
24899
_PUBLIC_ void ndr_print_spoolss_ConfigurePort(struct ndr_print *ndr, const char *name, int flags, const struct spoolss_ConfigurePort *r)
 
24900
{
 
24901
        ndr_print_struct(ndr, name, "spoolss_ConfigurePort");
 
24902
        ndr->depth++;
 
24903
        if (flags & NDR_SET_VALUES) {
 
24904
                ndr->flags |= LIBNDR_PRINT_SET_VALUES;
 
24905
        }
 
24906
        if (flags & NDR_IN) {
 
24907
                ndr_print_struct(ndr, "in", "spoolss_ConfigurePort");
 
24908
                ndr->depth++;
 
24909
                ndr->depth--;
 
24910
        }
 
24911
        if (flags & NDR_OUT) {
 
24912
                ndr_print_struct(ndr, "out", "spoolss_ConfigurePort");
 
24913
                ndr->depth++;
 
24914
                ndr_print_WERROR(ndr, "result", r->out.result);
 
24915
                ndr->depth--;
 
24916
        }
 
24917
        ndr->depth--;
 
24918
}
 
24919
 
 
24920
static enum ndr_err_code ndr_push_spoolss_DeletePort(struct ndr_push *ndr, int flags, const struct spoolss_DeletePort *r)
 
24921
{
 
24922
        if (flags & NDR_IN) {
 
24923
        }
 
24924
        if (flags & NDR_OUT) {
 
24925
                NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
 
24926
        }
 
24927
        return NDR_ERR_SUCCESS;
 
24928
}
 
24929
 
 
24930
static enum ndr_err_code ndr_pull_spoolss_DeletePort(struct ndr_pull *ndr, int flags, struct spoolss_DeletePort *r)
 
24931
{
 
24932
        if (flags & NDR_IN) {
 
24933
        }
 
24934
        if (flags & NDR_OUT) {
 
24935
                NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
 
24936
        }
 
24937
        return NDR_ERR_SUCCESS;
 
24938
}
 
24939
 
 
24940
_PUBLIC_ void ndr_print_spoolss_DeletePort(struct ndr_print *ndr, const char *name, int flags, const struct spoolss_DeletePort *r)
 
24941
{
 
24942
        ndr_print_struct(ndr, name, "spoolss_DeletePort");
 
24943
        ndr->depth++;
 
24944
        if (flags & NDR_SET_VALUES) {
 
24945
                ndr->flags |= LIBNDR_PRINT_SET_VALUES;
 
24946
        }
 
24947
        if (flags & NDR_IN) {
 
24948
                ndr_print_struct(ndr, "in", "spoolss_DeletePort");
 
24949
                ndr->depth++;
 
24950
                ndr->depth--;
 
24951
        }
 
24952
        if (flags & NDR_OUT) {
 
24953
                ndr_print_struct(ndr, "out", "spoolss_DeletePort");
 
24954
                ndr->depth++;
 
24955
                ndr_print_WERROR(ndr, "result", r->out.result);
 
24956
                ndr->depth--;
 
24957
        }
 
24958
        ndr->depth--;
 
24959
}
 
24960
 
 
24961
static enum ndr_err_code ndr_push_spoolss_CreatePrinterIC(struct ndr_push *ndr, int flags, const struct spoolss_CreatePrinterIC *r)
 
24962
{
 
24963
        if (flags & NDR_IN) {
 
24964
                if (r->in.handle == NULL) {
 
24965
                        return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
 
24966
                }
 
24967
                NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
 
24968
                if (r->in.devmode_ctr == NULL) {
 
24969
                        return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
 
24970
                }
 
24971
                NDR_CHECK(ndr_push_spoolss_DevmodeContainer(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.devmode_ctr));
 
24972
        }
 
24973
        if (flags & NDR_OUT) {
 
24974
                if (r->out.gdi_handle == NULL) {
 
24975
                        return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
 
24976
                }
 
24977
                NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->out.gdi_handle));
 
24978
                NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
 
24979
        }
 
24980
        return NDR_ERR_SUCCESS;
 
24981
}
 
24982
 
 
24983
static enum ndr_err_code ndr_pull_spoolss_CreatePrinterIC(struct ndr_pull *ndr, int flags, struct spoolss_CreatePrinterIC *r)
 
24984
{
 
24985
        TALLOC_CTX *_mem_save_handle_0;
 
24986
        TALLOC_CTX *_mem_save_gdi_handle_0;
 
24987
        TALLOC_CTX *_mem_save_devmode_ctr_0;
 
24988
        if (flags & NDR_IN) {
 
24989
                ZERO_STRUCT(r->out);
 
24990
 
 
24991
                if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
 
24992
                        NDR_PULL_ALLOC(ndr, r->in.handle);
 
24993
                }
 
24994
                _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
24995
                NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
 
24996
                NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
 
24997
                NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
 
24998
                if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
 
24999
                        NDR_PULL_ALLOC(ndr, r->in.devmode_ctr);
 
25000
                }
 
25001
                _mem_save_devmode_ctr_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
25002
                NDR_PULL_SET_MEM_CTX(ndr, r->in.devmode_ctr, LIBNDR_FLAG_REF_ALLOC);
 
25003
                NDR_CHECK(ndr_pull_spoolss_DevmodeContainer(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.devmode_ctr));
 
25004
                NDR_PULL_SET_MEM_CTX(ndr, _mem_save_devmode_ctr_0, LIBNDR_FLAG_REF_ALLOC);
 
25005
                NDR_PULL_ALLOC(ndr, r->out.gdi_handle);
 
25006
                ZERO_STRUCTP(r->out.gdi_handle);
 
25007
        }
 
25008
        if (flags & NDR_OUT) {
 
25009
                if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
 
25010
                        NDR_PULL_ALLOC(ndr, r->out.gdi_handle);
 
25011
                }
 
25012
                _mem_save_gdi_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
25013
                NDR_PULL_SET_MEM_CTX(ndr, r->out.gdi_handle, LIBNDR_FLAG_REF_ALLOC);
 
25014
                NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->out.gdi_handle));
 
25015
                NDR_PULL_SET_MEM_CTX(ndr, _mem_save_gdi_handle_0, LIBNDR_FLAG_REF_ALLOC);
 
25016
                NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
 
25017
        }
 
25018
        return NDR_ERR_SUCCESS;
 
25019
}
 
25020
 
 
25021
_PUBLIC_ void ndr_print_spoolss_CreatePrinterIC(struct ndr_print *ndr, const char *name, int flags, const struct spoolss_CreatePrinterIC *r)
 
25022
{
 
25023
        ndr_print_struct(ndr, name, "spoolss_CreatePrinterIC");
 
25024
        ndr->depth++;
 
25025
        if (flags & NDR_SET_VALUES) {
 
25026
                ndr->flags |= LIBNDR_PRINT_SET_VALUES;
 
25027
        }
 
25028
        if (flags & NDR_IN) {
 
25029
                ndr_print_struct(ndr, "in", "spoolss_CreatePrinterIC");
 
25030
                ndr->depth++;
 
25031
                ndr_print_ptr(ndr, "handle", r->in.handle);
 
25032
                ndr->depth++;
 
25033
                ndr_print_policy_handle(ndr, "handle", r->in.handle);
 
25034
                ndr->depth--;
 
25035
                ndr_print_ptr(ndr, "devmode_ctr", r->in.devmode_ctr);
 
25036
                ndr->depth++;
 
25037
                ndr_print_spoolss_DevmodeContainer(ndr, "devmode_ctr", r->in.devmode_ctr);
 
25038
                ndr->depth--;
 
25039
                ndr->depth--;
 
25040
        }
 
25041
        if (flags & NDR_OUT) {
 
25042
                ndr_print_struct(ndr, "out", "spoolss_CreatePrinterIC");
 
25043
                ndr->depth++;
 
25044
                ndr_print_ptr(ndr, "gdi_handle", r->out.gdi_handle);
 
25045
                ndr->depth++;
 
25046
                ndr_print_policy_handle(ndr, "gdi_handle", r->out.gdi_handle);
 
25047
                ndr->depth--;
 
25048
                ndr_print_WERROR(ndr, "result", r->out.result);
 
25049
                ndr->depth--;
 
25050
        }
 
25051
        ndr->depth--;
 
25052
}
 
25053
 
 
25054
static enum ndr_err_code ndr_push_spoolss_PlayGDIScriptOnPrinterIC(struct ndr_push *ndr, int flags, const struct spoolss_PlayGDIScriptOnPrinterIC *r)
 
25055
{
 
25056
        if (flags & NDR_IN) {
 
25057
        }
 
25058
        if (flags & NDR_OUT) {
 
25059
                NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
 
25060
        }
 
25061
        return NDR_ERR_SUCCESS;
 
25062
}
 
25063
 
 
25064
static enum ndr_err_code ndr_pull_spoolss_PlayGDIScriptOnPrinterIC(struct ndr_pull *ndr, int flags, struct spoolss_PlayGDIScriptOnPrinterIC *r)
 
25065
{
 
25066
        if (flags & NDR_IN) {
 
25067
        }
 
25068
        if (flags & NDR_OUT) {
 
25069
                NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
 
25070
        }
 
25071
        return NDR_ERR_SUCCESS;
 
25072
}
 
25073
 
 
25074
_PUBLIC_ void ndr_print_spoolss_PlayGDIScriptOnPrinterIC(struct ndr_print *ndr, const char *name, int flags, const struct spoolss_PlayGDIScriptOnPrinterIC *r)
 
25075
{
 
25076
        ndr_print_struct(ndr, name, "spoolss_PlayGDIScriptOnPrinterIC");
 
25077
        ndr->depth++;
 
25078
        if (flags & NDR_SET_VALUES) {
 
25079
                ndr->flags |= LIBNDR_PRINT_SET_VALUES;
 
25080
        }
 
25081
        if (flags & NDR_IN) {
 
25082
                ndr_print_struct(ndr, "in", "spoolss_PlayGDIScriptOnPrinterIC");
 
25083
                ndr->depth++;
 
25084
                ndr->depth--;
 
25085
        }
 
25086
        if (flags & NDR_OUT) {
 
25087
                ndr_print_struct(ndr, "out", "spoolss_PlayGDIScriptOnPrinterIC");
 
25088
                ndr->depth++;
 
25089
                ndr_print_WERROR(ndr, "result", r->out.result);
 
25090
                ndr->depth--;
 
25091
        }
 
25092
        ndr->depth--;
 
25093
}
 
25094
 
 
25095
static enum ndr_err_code ndr_push_spoolss_DeletePrinterIC(struct ndr_push *ndr, int flags, const struct spoolss_DeletePrinterIC *r)
 
25096
{
 
25097
        if (flags & NDR_IN) {
 
25098
                if (r->in.gdi_handle == NULL) {
 
25099
                        return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
 
25100
                }
 
25101
                NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.gdi_handle));
 
25102
        }
 
25103
        if (flags & NDR_OUT) {
 
25104
                if (r->out.gdi_handle == NULL) {
 
25105
                        return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
 
25106
                }
 
25107
                NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->out.gdi_handle));
 
25108
                NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
 
25109
        }
 
25110
        return NDR_ERR_SUCCESS;
 
25111
}
 
25112
 
 
25113
static enum ndr_err_code ndr_pull_spoolss_DeletePrinterIC(struct ndr_pull *ndr, int flags, struct spoolss_DeletePrinterIC *r)
 
25114
{
 
25115
        TALLOC_CTX *_mem_save_gdi_handle_0;
 
25116
        if (flags & NDR_IN) {
 
25117
                ZERO_STRUCT(r->out);
 
25118
 
 
25119
                if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
 
25120
                        NDR_PULL_ALLOC(ndr, r->in.gdi_handle);
 
25121
                }
 
25122
                _mem_save_gdi_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
25123
                NDR_PULL_SET_MEM_CTX(ndr, r->in.gdi_handle, LIBNDR_FLAG_REF_ALLOC);
 
25124
                NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.gdi_handle));
 
25125
                NDR_PULL_SET_MEM_CTX(ndr, _mem_save_gdi_handle_0, LIBNDR_FLAG_REF_ALLOC);
 
25126
                NDR_PULL_ALLOC(ndr, r->out.gdi_handle);
 
25127
                *r->out.gdi_handle = *r->in.gdi_handle;
 
25128
        }
 
25129
        if (flags & NDR_OUT) {
 
25130
                if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
 
25131
                        NDR_PULL_ALLOC(ndr, r->out.gdi_handle);
 
25132
                }
 
25133
                _mem_save_gdi_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
25134
                NDR_PULL_SET_MEM_CTX(ndr, r->out.gdi_handle, LIBNDR_FLAG_REF_ALLOC);
 
25135
                NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->out.gdi_handle));
 
25136
                NDR_PULL_SET_MEM_CTX(ndr, _mem_save_gdi_handle_0, LIBNDR_FLAG_REF_ALLOC);
 
25137
                NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
 
25138
        }
 
25139
        return NDR_ERR_SUCCESS;
 
25140
}
 
25141
 
 
25142
_PUBLIC_ void ndr_print_spoolss_DeletePrinterIC(struct ndr_print *ndr, const char *name, int flags, const struct spoolss_DeletePrinterIC *r)
 
25143
{
 
25144
        ndr_print_struct(ndr, name, "spoolss_DeletePrinterIC");
 
25145
        ndr->depth++;
 
25146
        if (flags & NDR_SET_VALUES) {
 
25147
                ndr->flags |= LIBNDR_PRINT_SET_VALUES;
 
25148
        }
 
25149
        if (flags & NDR_IN) {
 
25150
                ndr_print_struct(ndr, "in", "spoolss_DeletePrinterIC");
 
25151
                ndr->depth++;
 
25152
                ndr_print_ptr(ndr, "gdi_handle", r->in.gdi_handle);
 
25153
                ndr->depth++;
 
25154
                ndr_print_policy_handle(ndr, "gdi_handle", r->in.gdi_handle);
 
25155
                ndr->depth--;
 
25156
                ndr->depth--;
 
25157
        }
 
25158
        if (flags & NDR_OUT) {
 
25159
                ndr_print_struct(ndr, "out", "spoolss_DeletePrinterIC");
 
25160
                ndr->depth++;
 
25161
                ndr_print_ptr(ndr, "gdi_handle", r->out.gdi_handle);
 
25162
                ndr->depth++;
 
25163
                ndr_print_policy_handle(ndr, "gdi_handle", r->out.gdi_handle);
 
25164
                ndr->depth--;
 
25165
                ndr_print_WERROR(ndr, "result", r->out.result);
 
25166
                ndr->depth--;
 
25167
        }
 
25168
        ndr->depth--;
 
25169
}
 
25170
 
 
25171
static enum ndr_err_code ndr_push_spoolss_AddPrinterConnection(struct ndr_push *ndr, int flags, const struct spoolss_AddPrinterConnection *r)
 
25172
{
 
25173
        if (flags & NDR_IN) {
 
25174
        }
 
25175
        if (flags & NDR_OUT) {
 
25176
                NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
 
25177
        }
 
25178
        return NDR_ERR_SUCCESS;
 
25179
}
 
25180
 
 
25181
static enum ndr_err_code ndr_pull_spoolss_AddPrinterConnection(struct ndr_pull *ndr, int flags, struct spoolss_AddPrinterConnection *r)
 
25182
{
 
25183
        if (flags & NDR_IN) {
 
25184
        }
 
25185
        if (flags & NDR_OUT) {
 
25186
                NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
 
25187
        }
 
25188
        return NDR_ERR_SUCCESS;
 
25189
}
 
25190
 
 
25191
_PUBLIC_ void ndr_print_spoolss_AddPrinterConnection(struct ndr_print *ndr, const char *name, int flags, const struct spoolss_AddPrinterConnection *r)
 
25192
{
 
25193
        ndr_print_struct(ndr, name, "spoolss_AddPrinterConnection");
 
25194
        ndr->depth++;
 
25195
        if (flags & NDR_SET_VALUES) {
 
25196
                ndr->flags |= LIBNDR_PRINT_SET_VALUES;
 
25197
        }
 
25198
        if (flags & NDR_IN) {
 
25199
                ndr_print_struct(ndr, "in", "spoolss_AddPrinterConnection");
 
25200
                ndr->depth++;
 
25201
                ndr->depth--;
 
25202
        }
 
25203
        if (flags & NDR_OUT) {
 
25204
                ndr_print_struct(ndr, "out", "spoolss_AddPrinterConnection");
 
25205
                ndr->depth++;
 
25206
                ndr_print_WERROR(ndr, "result", r->out.result);
 
25207
                ndr->depth--;
 
25208
        }
 
25209
        ndr->depth--;
 
25210
}
 
25211
 
 
25212
static enum ndr_err_code ndr_push_spoolss_DeletePrinterConnection(struct ndr_push *ndr, int flags, const struct spoolss_DeletePrinterConnection *r)
 
25213
{
 
25214
        if (flags & NDR_IN) {
 
25215
        }
 
25216
        if (flags & NDR_OUT) {
 
25217
                NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
 
25218
        }
 
25219
        return NDR_ERR_SUCCESS;
 
25220
}
 
25221
 
 
25222
static enum ndr_err_code ndr_pull_spoolss_DeletePrinterConnection(struct ndr_pull *ndr, int flags, struct spoolss_DeletePrinterConnection *r)
 
25223
{
 
25224
        if (flags & NDR_IN) {
 
25225
        }
 
25226
        if (flags & NDR_OUT) {
 
25227
                NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
 
25228
        }
 
25229
        return NDR_ERR_SUCCESS;
 
25230
}
 
25231
 
 
25232
_PUBLIC_ void ndr_print_spoolss_DeletePrinterConnection(struct ndr_print *ndr, const char *name, int flags, const struct spoolss_DeletePrinterConnection *r)
 
25233
{
 
25234
        ndr_print_struct(ndr, name, "spoolss_DeletePrinterConnection");
 
25235
        ndr->depth++;
 
25236
        if (flags & NDR_SET_VALUES) {
 
25237
                ndr->flags |= LIBNDR_PRINT_SET_VALUES;
 
25238
        }
 
25239
        if (flags & NDR_IN) {
 
25240
                ndr_print_struct(ndr, "in", "spoolss_DeletePrinterConnection");
 
25241
                ndr->depth++;
 
25242
                ndr->depth--;
 
25243
        }
 
25244
        if (flags & NDR_OUT) {
 
25245
                ndr_print_struct(ndr, "out", "spoolss_DeletePrinterConnection");
 
25246
                ndr->depth++;
 
25247
                ndr_print_WERROR(ndr, "result", r->out.result);
 
25248
                ndr->depth--;
 
25249
        }
 
25250
        ndr->depth--;
 
25251
}
 
25252
 
 
25253
static enum ndr_err_code ndr_push_spoolss_PrinterMessageBox(struct ndr_push *ndr, int flags, const struct spoolss_PrinterMessageBox *r)
 
25254
{
 
25255
        if (flags & NDR_IN) {
 
25256
        }
 
25257
        if (flags & NDR_OUT) {
 
25258
                NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
 
25259
        }
 
25260
        return NDR_ERR_SUCCESS;
 
25261
}
 
25262
 
 
25263
static enum ndr_err_code ndr_pull_spoolss_PrinterMessageBox(struct ndr_pull *ndr, int flags, struct spoolss_PrinterMessageBox *r)
 
25264
{
 
25265
        if (flags & NDR_IN) {
 
25266
        }
 
25267
        if (flags & NDR_OUT) {
 
25268
                NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
 
25269
        }
 
25270
        return NDR_ERR_SUCCESS;
 
25271
}
 
25272
 
 
25273
_PUBLIC_ void ndr_print_spoolss_PrinterMessageBox(struct ndr_print *ndr, const char *name, int flags, const struct spoolss_PrinterMessageBox *r)
 
25274
{
 
25275
        ndr_print_struct(ndr, name, "spoolss_PrinterMessageBox");
 
25276
        ndr->depth++;
 
25277
        if (flags & NDR_SET_VALUES) {
 
25278
                ndr->flags |= LIBNDR_PRINT_SET_VALUES;
 
25279
        }
 
25280
        if (flags & NDR_IN) {
 
25281
                ndr_print_struct(ndr, "in", "spoolss_PrinterMessageBox");
 
25282
                ndr->depth++;
 
25283
                ndr->depth--;
 
25284
        }
 
25285
        if (flags & NDR_OUT) {
 
25286
                ndr_print_struct(ndr, "out", "spoolss_PrinterMessageBox");
 
25287
                ndr->depth++;
 
25288
                ndr_print_WERROR(ndr, "result", r->out.result);
 
25289
                ndr->depth--;
 
25290
        }
 
25291
        ndr->depth--;
 
25292
}
 
25293
 
 
25294
static enum ndr_err_code ndr_push_spoolss_AddMonitor(struct ndr_push *ndr, int flags, const struct spoolss_AddMonitor *r)
 
25295
{
 
25296
        if (flags & NDR_IN) {
 
25297
        }
 
25298
        if (flags & NDR_OUT) {
 
25299
                NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
 
25300
        }
 
25301
        return NDR_ERR_SUCCESS;
 
25302
}
 
25303
 
 
25304
static enum ndr_err_code ndr_pull_spoolss_AddMonitor(struct ndr_pull *ndr, int flags, struct spoolss_AddMonitor *r)
 
25305
{
 
25306
        if (flags & NDR_IN) {
 
25307
        }
 
25308
        if (flags & NDR_OUT) {
 
25309
                NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
 
25310
        }
 
25311
        return NDR_ERR_SUCCESS;
 
25312
}
 
25313
 
 
25314
_PUBLIC_ void ndr_print_spoolss_AddMonitor(struct ndr_print *ndr, const char *name, int flags, const struct spoolss_AddMonitor *r)
 
25315
{
 
25316
        ndr_print_struct(ndr, name, "spoolss_AddMonitor");
 
25317
        ndr->depth++;
 
25318
        if (flags & NDR_SET_VALUES) {
 
25319
                ndr->flags |= LIBNDR_PRINT_SET_VALUES;
 
25320
        }
 
25321
        if (flags & NDR_IN) {
 
25322
                ndr_print_struct(ndr, "in", "spoolss_AddMonitor");
 
25323
                ndr->depth++;
 
25324
                ndr->depth--;
 
25325
        }
 
25326
        if (flags & NDR_OUT) {
 
25327
                ndr_print_struct(ndr, "out", "spoolss_AddMonitor");
 
25328
                ndr->depth++;
 
25329
                ndr_print_WERROR(ndr, "result", r->out.result);
 
25330
                ndr->depth--;
 
25331
        }
 
25332
        ndr->depth--;
 
25333
}
 
25334
 
 
25335
static enum ndr_err_code ndr_push_spoolss_DeleteMonitor(struct ndr_push *ndr, int flags, const struct spoolss_DeleteMonitor *r)
 
25336
{
 
25337
        if (flags & NDR_IN) {
 
25338
        }
 
25339
        if (flags & NDR_OUT) {
 
25340
                NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
 
25341
        }
 
25342
        return NDR_ERR_SUCCESS;
 
25343
}
 
25344
 
 
25345
static enum ndr_err_code ndr_pull_spoolss_DeleteMonitor(struct ndr_pull *ndr, int flags, struct spoolss_DeleteMonitor *r)
 
25346
{
 
25347
        if (flags & NDR_IN) {
 
25348
        }
 
25349
        if (flags & NDR_OUT) {
 
25350
                NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
 
25351
        }
 
25352
        return NDR_ERR_SUCCESS;
 
25353
}
 
25354
 
 
25355
_PUBLIC_ void ndr_print_spoolss_DeleteMonitor(struct ndr_print *ndr, const char *name, int flags, const struct spoolss_DeleteMonitor *r)
 
25356
{
 
25357
        ndr_print_struct(ndr, name, "spoolss_DeleteMonitor");
 
25358
        ndr->depth++;
 
25359
        if (flags & NDR_SET_VALUES) {
 
25360
                ndr->flags |= LIBNDR_PRINT_SET_VALUES;
 
25361
        }
 
25362
        if (flags & NDR_IN) {
 
25363
                ndr_print_struct(ndr, "in", "spoolss_DeleteMonitor");
 
25364
                ndr->depth++;
 
25365
                ndr->depth--;
 
25366
        }
 
25367
        if (flags & NDR_OUT) {
 
25368
                ndr_print_struct(ndr, "out", "spoolss_DeleteMonitor");
 
25369
                ndr->depth++;
 
25370
                ndr_print_WERROR(ndr, "result", r->out.result);
 
25371
                ndr->depth--;
 
25372
        }
 
25373
        ndr->depth--;
 
25374
}
 
25375
 
 
25376
static enum ndr_err_code ndr_push_spoolss_DeletePrintProcessor(struct ndr_push *ndr, int flags, const struct spoolss_DeletePrintProcessor *r)
 
25377
{
 
25378
        if (flags & NDR_IN) {
 
25379
        }
 
25380
        if (flags & NDR_OUT) {
 
25381
                NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
 
25382
        }
 
25383
        return NDR_ERR_SUCCESS;
 
25384
}
 
25385
 
 
25386
static enum ndr_err_code ndr_pull_spoolss_DeletePrintProcessor(struct ndr_pull *ndr, int flags, struct spoolss_DeletePrintProcessor *r)
 
25387
{
 
25388
        if (flags & NDR_IN) {
 
25389
        }
 
25390
        if (flags & NDR_OUT) {
 
25391
                NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
 
25392
        }
 
25393
        return NDR_ERR_SUCCESS;
 
25394
}
 
25395
 
 
25396
_PUBLIC_ void ndr_print_spoolss_DeletePrintProcessor(struct ndr_print *ndr, const char *name, int flags, const struct spoolss_DeletePrintProcessor *r)
 
25397
{
 
25398
        ndr_print_struct(ndr, name, "spoolss_DeletePrintProcessor");
 
25399
        ndr->depth++;
 
25400
        if (flags & NDR_SET_VALUES) {
 
25401
                ndr->flags |= LIBNDR_PRINT_SET_VALUES;
 
25402
        }
 
25403
        if (flags & NDR_IN) {
 
25404
                ndr_print_struct(ndr, "in", "spoolss_DeletePrintProcessor");
 
25405
                ndr->depth++;
 
25406
                ndr->depth--;
 
25407
        }
 
25408
        if (flags & NDR_OUT) {
 
25409
                ndr_print_struct(ndr, "out", "spoolss_DeletePrintProcessor");
 
25410
                ndr->depth++;
 
25411
                ndr_print_WERROR(ndr, "result", r->out.result);
 
25412
                ndr->depth--;
 
25413
        }
 
25414
        ndr->depth--;
 
25415
}
 
25416
 
 
25417
static enum ndr_err_code ndr_push_spoolss_AddPrintProvidor(struct ndr_push *ndr, int flags, const struct spoolss_AddPrintProvidor *r)
 
25418
{
 
25419
        if (flags & NDR_IN) {
 
25420
        }
 
25421
        if (flags & NDR_OUT) {
 
25422
                NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
 
25423
        }
 
25424
        return NDR_ERR_SUCCESS;
 
25425
}
 
25426
 
 
25427
static enum ndr_err_code ndr_pull_spoolss_AddPrintProvidor(struct ndr_pull *ndr, int flags, struct spoolss_AddPrintProvidor *r)
 
25428
{
 
25429
        if (flags & NDR_IN) {
 
25430
        }
 
25431
        if (flags & NDR_OUT) {
 
25432
                NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
 
25433
        }
 
25434
        return NDR_ERR_SUCCESS;
 
25435
}
 
25436
 
 
25437
_PUBLIC_ void ndr_print_spoolss_AddPrintProvidor(struct ndr_print *ndr, const char *name, int flags, const struct spoolss_AddPrintProvidor *r)
 
25438
{
 
25439
        ndr_print_struct(ndr, name, "spoolss_AddPrintProvidor");
 
25440
        ndr->depth++;
 
25441
        if (flags & NDR_SET_VALUES) {
 
25442
                ndr->flags |= LIBNDR_PRINT_SET_VALUES;
 
25443
        }
 
25444
        if (flags & NDR_IN) {
 
25445
                ndr_print_struct(ndr, "in", "spoolss_AddPrintProvidor");
 
25446
                ndr->depth++;
 
25447
                ndr->depth--;
 
25448
        }
 
25449
        if (flags & NDR_OUT) {
 
25450
                ndr_print_struct(ndr, "out", "spoolss_AddPrintProvidor");
 
25451
                ndr->depth++;
 
25452
                ndr_print_WERROR(ndr, "result", r->out.result);
 
25453
                ndr->depth--;
 
25454
        }
 
25455
        ndr->depth--;
 
25456
}
 
25457
 
 
25458
static enum ndr_err_code ndr_push_spoolss_DeletePrintProvidor(struct ndr_push *ndr, int flags, const struct spoolss_DeletePrintProvidor *r)
 
25459
{
 
25460
        if (flags & NDR_IN) {
 
25461
        }
 
25462
        if (flags & NDR_OUT) {
 
25463
                NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
 
25464
        }
 
25465
        return NDR_ERR_SUCCESS;
 
25466
}
 
25467
 
 
25468
static enum ndr_err_code ndr_pull_spoolss_DeletePrintProvidor(struct ndr_pull *ndr, int flags, struct spoolss_DeletePrintProvidor *r)
 
25469
{
 
25470
        if (flags & NDR_IN) {
 
25471
        }
 
25472
        if (flags & NDR_OUT) {
 
25473
                NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
 
25474
        }
 
25475
        return NDR_ERR_SUCCESS;
 
25476
}
 
25477
 
 
25478
_PUBLIC_ void ndr_print_spoolss_DeletePrintProvidor(struct ndr_print *ndr, const char *name, int flags, const struct spoolss_DeletePrintProvidor *r)
 
25479
{
 
25480
        ndr_print_struct(ndr, name, "spoolss_DeletePrintProvidor");
 
25481
        ndr->depth++;
 
25482
        if (flags & NDR_SET_VALUES) {
 
25483
                ndr->flags |= LIBNDR_PRINT_SET_VALUES;
 
25484
        }
 
25485
        if (flags & NDR_IN) {
 
25486
                ndr_print_struct(ndr, "in", "spoolss_DeletePrintProvidor");
 
25487
                ndr->depth++;
 
25488
                ndr->depth--;
 
25489
        }
 
25490
        if (flags & NDR_OUT) {
 
25491
                ndr_print_struct(ndr, "out", "spoolss_DeletePrintProvidor");
 
25492
                ndr->depth++;
 
25493
                ndr_print_WERROR(ndr, "result", r->out.result);
 
25494
                ndr->depth--;
 
25495
        }
 
25496
        ndr->depth--;
 
25497
}
 
25498
 
 
25499
_PUBLIC_ enum ndr_err_code ndr_push__spoolss_EnumPrintProcDataTypes(struct ndr_push *ndr, int flags, const struct _spoolss_EnumPrintProcDataTypes *r)
 
25500
{
 
25501
        if (flags & NDR_IN) {
 
25502
                NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.servername));
 
25503
                if (r->in.servername) {
 
25504
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.servername, CH_UTF16)));
 
25505
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0));
 
25506
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.servername, CH_UTF16)));
 
25507
                        NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.servername, ndr_charset_length(r->in.servername, CH_UTF16), sizeof(uint16_t), CH_UTF16));
 
25508
                }
 
25509
                NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.print_processor_name));
 
25510
                if (r->in.print_processor_name) {
 
25511
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.print_processor_name, CH_UTF16)));
 
25512
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0));
 
25513
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.print_processor_name, CH_UTF16)));
 
25514
                        NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.print_processor_name, ndr_charset_length(r->in.print_processor_name, CH_UTF16), sizeof(uint16_t), CH_UTF16));
 
25515
                }
 
25516
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.level));
 
25517
                NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.buffer));
 
25518
                if (r->in.buffer) {
 
25519
                        NDR_CHECK(ndr_push_DATA_BLOB(ndr, NDR_SCALARS, *r->in.buffer));
 
25520
                }
 
25521
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.offered));
 
25522
        }
 
25523
        if (flags & NDR_OUT) {
 
25524
                NDR_CHECK(ndr_push_unique_ptr(ndr, r->out.info));
 
25525
                if (r->out.info) {
 
25526
                        NDR_CHECK(ndr_push_DATA_BLOB(ndr, NDR_SCALARS, *r->out.info));
 
25527
                }
 
25528
                if (r->out.needed == NULL) {
 
25529
                        return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
 
25530
                }
 
25531
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.needed));
 
25532
                if (r->out.count == NULL) {
 
25533
                        return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
 
25534
                }
 
25535
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.count));
 
25536
                NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
 
25537
        }
 
25538
        return NDR_ERR_SUCCESS;
 
25539
}
 
25540
 
 
25541
_PUBLIC_ enum ndr_err_code ndr_pull__spoolss_EnumPrintProcDataTypes(struct ndr_pull *ndr, int flags, struct _spoolss_EnumPrintProcDataTypes *r)
 
25542
{
 
25543
        uint32_t _ptr_servername;
 
25544
        uint32_t _ptr_print_processor_name;
 
25545
        uint32_t _ptr_buffer;
 
25546
        uint32_t _ptr_info;
 
25547
        TALLOC_CTX *_mem_save_servername_0;
 
25548
        TALLOC_CTX *_mem_save_print_processor_name_0;
 
25549
        TALLOC_CTX *_mem_save_buffer_0;
 
25550
        TALLOC_CTX *_mem_save_info_0;
 
25551
        TALLOC_CTX *_mem_save_needed_0;
 
25552
        TALLOC_CTX *_mem_save_count_0;
 
25553
        if (flags & NDR_IN) {
 
25554
                ZERO_STRUCT(r->out);
 
25555
 
 
25556
                NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_servername));
 
25557
                if (_ptr_servername) {
 
25558
                        NDR_PULL_ALLOC(ndr, r->in.servername);
 
25559
                } else {
 
25560
                        r->in.servername = NULL;
 
25561
                }
 
25562
                if (r->in.servername) {
 
25563
                        _mem_save_servername_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
25564
                        NDR_PULL_SET_MEM_CTX(ndr, r->in.servername, 0);
 
25565
                        NDR_CHECK(ndr_pull_array_size(ndr, &r->in.servername));
 
25566
                        NDR_CHECK(ndr_pull_array_length(ndr, &r->in.servername));
 
25567
                        if (ndr_get_array_length(ndr, &r->in.servername) > ndr_get_array_size(ndr, &r->in.servername)) {
 
25568
                                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.servername), ndr_get_array_length(ndr, &r->in.servername));
 
25569
                        }
 
25570
                        NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.servername), sizeof(uint16_t)));
 
25571
                        NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.servername, ndr_get_array_length(ndr, &r->in.servername), sizeof(uint16_t), CH_UTF16));
 
25572
                        NDR_PULL_SET_MEM_CTX(ndr, _mem_save_servername_0, 0);
 
25573
                }
 
25574
                NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_print_processor_name));
 
25575
                if (_ptr_print_processor_name) {
 
25576
                        NDR_PULL_ALLOC(ndr, r->in.print_processor_name);
 
25577
                } else {
 
25578
                        r->in.print_processor_name = NULL;
 
25579
                }
 
25580
                if (r->in.print_processor_name) {
 
25581
                        _mem_save_print_processor_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
25582
                        NDR_PULL_SET_MEM_CTX(ndr, r->in.print_processor_name, 0);
 
25583
                        NDR_CHECK(ndr_pull_array_size(ndr, &r->in.print_processor_name));
 
25584
                        NDR_CHECK(ndr_pull_array_length(ndr, &r->in.print_processor_name));
 
25585
                        if (ndr_get_array_length(ndr, &r->in.print_processor_name) > ndr_get_array_size(ndr, &r->in.print_processor_name)) {
 
25586
                                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.print_processor_name), ndr_get_array_length(ndr, &r->in.print_processor_name));
 
25587
                        }
 
25588
                        NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.print_processor_name), sizeof(uint16_t)));
 
25589
                        NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.print_processor_name, ndr_get_array_length(ndr, &r->in.print_processor_name), sizeof(uint16_t), CH_UTF16));
 
25590
                        NDR_PULL_SET_MEM_CTX(ndr, _mem_save_print_processor_name_0, 0);
 
25591
                }
 
25592
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.level));
 
25593
                NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_buffer));
 
25594
                if (_ptr_buffer) {
 
25595
                        NDR_PULL_ALLOC(ndr, r->in.buffer);
 
25596
                } else {
 
25597
                        r->in.buffer = NULL;
 
25598
                }
 
25599
                if (r->in.buffer) {
 
25600
                        _mem_save_buffer_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
25601
                        NDR_PULL_SET_MEM_CTX(ndr, r->in.buffer, 0);
 
25602
                        NDR_CHECK(ndr_pull_DATA_BLOB(ndr, NDR_SCALARS, r->in.buffer));
 
25603
                        NDR_PULL_SET_MEM_CTX(ndr, _mem_save_buffer_0, 0);
 
25604
                }
 
25605
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.offered));
 
25606
                NDR_PULL_ALLOC(ndr, r->out.needed);
 
25607
                ZERO_STRUCTP(r->out.needed);
 
25608
                NDR_PULL_ALLOC(ndr, r->out.count);
 
25609
                ZERO_STRUCTP(r->out.count);
 
25610
        }
 
25611
        if (flags & NDR_OUT) {
 
25612
                NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_info));
 
25613
                if (_ptr_info) {
 
25614
                        NDR_PULL_ALLOC(ndr, r->out.info);
 
25615
                } else {
 
25616
                        r->out.info = NULL;
 
25617
                }
 
25618
                if (r->out.info) {
 
25619
                        _mem_save_info_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
25620
                        NDR_PULL_SET_MEM_CTX(ndr, r->out.info, 0);
 
25621
                        NDR_CHECK(ndr_pull_DATA_BLOB(ndr, NDR_SCALARS, r->out.info));
 
25622
                        NDR_PULL_SET_MEM_CTX(ndr, _mem_save_info_0, 0);
 
25623
                }
 
25624
                if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
 
25625
                        NDR_PULL_ALLOC(ndr, r->out.needed);
 
25626
                }
 
25627
                _mem_save_needed_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
25628
                NDR_PULL_SET_MEM_CTX(ndr, r->out.needed, LIBNDR_FLAG_REF_ALLOC);
 
25629
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.needed));
 
25630
                NDR_PULL_SET_MEM_CTX(ndr, _mem_save_needed_0, LIBNDR_FLAG_REF_ALLOC);
 
25631
                if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
 
25632
                        NDR_PULL_ALLOC(ndr, r->out.count);
 
25633
                }
 
25634
                _mem_save_count_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
25635
                NDR_PULL_SET_MEM_CTX(ndr, r->out.count, LIBNDR_FLAG_REF_ALLOC);
 
25636
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.count));
 
25637
                NDR_PULL_SET_MEM_CTX(ndr, _mem_save_count_0, LIBNDR_FLAG_REF_ALLOC);
 
25638
                NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
 
25639
        }
 
25640
        return NDR_ERR_SUCCESS;
 
25641
}
 
25642
 
 
25643
_PUBLIC_ enum ndr_err_code ndr_push___spoolss_EnumPrintProcDataTypes(struct ndr_push *ndr, int flags, const struct __spoolss_EnumPrintProcDataTypes *r)
 
25644
{
 
25645
        uint32_t cntr_info_0;
 
25646
        if (flags & NDR_IN) {
 
25647
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.level));
 
25648
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.count));
 
25649
        }
 
25650
        if (flags & NDR_OUT) {
 
25651
                for (cntr_info_0 = 0; cntr_info_0 < r->in.count; cntr_info_0++) {
 
25652
                        NDR_CHECK(ndr_push_set_switch_value(ndr, &r->out.info[cntr_info_0], r->in.level));
 
25653
                        NDR_CHECK(ndr_push_spoolss_PrintProcDataTypesInfo(ndr, NDR_SCALARS, &r->out.info[cntr_info_0]));
 
25654
                }
 
25655
                for (cntr_info_0 = 0; cntr_info_0 < r->in.count; cntr_info_0++) {
 
25656
                        NDR_CHECK(ndr_push_spoolss_PrintProcDataTypesInfo(ndr, NDR_BUFFERS, &r->out.info[cntr_info_0]));
 
25657
                }
 
25658
        }
 
25659
        return NDR_ERR_SUCCESS;
 
25660
}
 
25661
 
 
25662
_PUBLIC_ enum ndr_err_code ndr_pull___spoolss_EnumPrintProcDataTypes(struct ndr_pull *ndr, int flags, struct __spoolss_EnumPrintProcDataTypes *r)
 
25663
{
 
25664
        uint32_t cntr_info_0;
 
25665
        TALLOC_CTX *_mem_save_info_0;
 
25666
        if (flags & NDR_IN) {
 
25667
                ZERO_STRUCT(r->out);
 
25668
 
 
25669
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.level));
 
25670
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.count));
 
25671
        }
 
25672
        if (flags & NDR_OUT) {
 
25673
                NDR_PULL_ALLOC_N(ndr, r->out.info, r->in.count);
 
25674
                _mem_save_info_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
25675
                NDR_PULL_SET_MEM_CTX(ndr, r->out.info, 0);
 
25676
                for (cntr_info_0 = 0; cntr_info_0 < r->in.count; cntr_info_0++) {
 
25677
                        NDR_CHECK(ndr_pull_set_switch_value(ndr, &r->out.info[cntr_info_0], r->in.level));
 
25678
                        NDR_CHECK(ndr_pull_spoolss_PrintProcDataTypesInfo(ndr, NDR_SCALARS, &r->out.info[cntr_info_0]));
 
25679
                }
 
25680
                for (cntr_info_0 = 0; cntr_info_0 < r->in.count; cntr_info_0++) {
 
25681
                        NDR_CHECK(ndr_pull_spoolss_PrintProcDataTypesInfo(ndr, NDR_BUFFERS, &r->out.info[cntr_info_0]));
 
25682
                }
 
25683
                NDR_PULL_SET_MEM_CTX(ndr, _mem_save_info_0, 0);
 
25684
        }
 
25685
        return NDR_ERR_SUCCESS;
 
25686
}
 
25687
 
 
25688
_PUBLIC_ void ndr_print_spoolss_EnumPrintProcDataTypes(struct ndr_print *ndr, const char *name, int flags, const struct spoolss_EnumPrintProcDataTypes *r)
 
25689
{
 
25690
        uint32_t cntr_info_2;
 
25691
        ndr_print_struct(ndr, name, "spoolss_EnumPrintProcDataTypes");
 
25692
        ndr->depth++;
 
25693
        if (flags & NDR_SET_VALUES) {
 
25694
                ndr->flags |= LIBNDR_PRINT_SET_VALUES;
 
25695
        }
 
25696
        if (flags & NDR_IN) {
 
25697
                ndr_print_struct(ndr, "in", "spoolss_EnumPrintProcDataTypes");
 
25698
                ndr->depth++;
 
25699
                ndr_print_ptr(ndr, "servername", r->in.servername);
 
25700
                ndr->depth++;
 
25701
                if (r->in.servername) {
 
25702
                        ndr_print_string(ndr, "servername", r->in.servername);
 
25703
                }
 
25704
                ndr->depth--;
 
25705
                ndr_print_ptr(ndr, "print_processor_name", r->in.print_processor_name);
 
25706
                ndr->depth++;
 
25707
                if (r->in.print_processor_name) {
 
25708
                        ndr_print_string(ndr, "print_processor_name", r->in.print_processor_name);
 
25709
                }
 
25710
                ndr->depth--;
 
25711
                ndr_print_uint32(ndr, "level", r->in.level);
 
25712
                ndr_print_ptr(ndr, "buffer", r->in.buffer);
 
25713
                ndr->depth++;
 
25714
                if (r->in.buffer) {
 
25715
                        ndr_print_DATA_BLOB(ndr, "buffer", *r->in.buffer);
 
25716
                }
 
25717
                ndr->depth--;
 
25718
                ndr_print_uint32(ndr, "offered", r->in.offered);
 
25719
                ndr->depth--;
 
25720
        }
 
25721
        if (flags & NDR_OUT) {
 
25722
                ndr_print_struct(ndr, "out", "spoolss_EnumPrintProcDataTypes");
 
25723
                ndr->depth++;
 
25724
                ndr_print_ptr(ndr, "count", r->out.count);
 
25725
                ndr->depth++;
 
25726
                ndr_print_uint32(ndr, "count", *r->out.count);
 
25727
                ndr->depth--;
 
25728
                ndr_print_ptr(ndr, "info", r->out.info);
 
25729
                ndr->depth++;
 
25730
                ndr_print_ptr(ndr, "info", *r->out.info);
 
25731
                ndr->depth++;
 
25732
                if (*r->out.info) {
 
25733
                        ndr->print(ndr, "%s: ARRAY(%d)", "info", (int)*r->out.count);
 
25734
                        ndr->depth++;
 
25735
                        for (cntr_info_2=0;cntr_info_2<*r->out.count;cntr_info_2++) {
 
25736
                                char *idx_2=NULL;
 
25737
                                if (asprintf(&idx_2, "[%d]", cntr_info_2) != -1) {
 
25738
                                        ndr_print_set_switch_value(ndr, &(*r->out.info)[cntr_info_2], r->in.level);
 
25739
                                        ndr_print_spoolss_PrintProcDataTypesInfo(ndr, "info", &(*r->out.info)[cntr_info_2]);
 
25740
                                        free(idx_2);
 
25741
                                }
 
25742
                        }
 
25743
                        ndr->depth--;
 
25744
                }
 
25745
                ndr->depth--;
 
25746
                ndr->depth--;
 
25747
                ndr_print_ptr(ndr, "needed", r->out.needed);
 
25748
                ndr->depth++;
 
25749
                ndr_print_uint32(ndr, "needed", *r->out.needed);
 
25750
                ndr->depth--;
 
25751
                ndr_print_WERROR(ndr, "result", r->out.result);
 
25752
                ndr->depth--;
 
25753
        }
 
25754
        ndr->depth--;
 
25755
}
 
25756
 
 
25757
static enum ndr_err_code ndr_push_spoolss_ResetPrinter(struct ndr_push *ndr, int flags, const struct spoolss_ResetPrinter *r)
 
25758
{
 
25759
        if (flags & NDR_IN) {
 
25760
                if (r->in.handle == NULL) {
 
25761
                        return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
 
25762
                }
 
25763
                NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
 
25764
                NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.data_type));
 
25765
                if (r->in.data_type) {
 
25766
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.data_type, CH_UTF16)));
 
25767
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0));
 
25768
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.data_type, CH_UTF16)));
 
25769
                        NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.data_type, ndr_charset_length(r->in.data_type, CH_UTF16), sizeof(uint16_t), CH_UTF16));
 
25770
                }
 
25771
                if (r->in.devmode_ctr == NULL) {
 
25772
                        return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
 
25773
                }
 
25774
                NDR_CHECK(ndr_push_spoolss_DevmodeContainer(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.devmode_ctr));
 
25775
        }
 
25776
        if (flags & NDR_OUT) {
 
25777
                NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
 
25778
        }
 
25779
        return NDR_ERR_SUCCESS;
 
25780
}
 
25781
 
 
25782
static enum ndr_err_code ndr_pull_spoolss_ResetPrinter(struct ndr_pull *ndr, int flags, struct spoolss_ResetPrinter *r)
 
25783
{
 
25784
        uint32_t _ptr_data_type;
 
25785
        TALLOC_CTX *_mem_save_handle_0;
 
25786
        TALLOC_CTX *_mem_save_data_type_0;
 
25787
        TALLOC_CTX *_mem_save_devmode_ctr_0;
 
25788
        if (flags & NDR_IN) {
 
25789
                if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
 
25790
                        NDR_PULL_ALLOC(ndr, r->in.handle);
 
25791
                }
 
25792
                _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
25793
                NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
 
25794
                NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
 
25795
                NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
 
25796
                NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_data_type));
 
25797
                if (_ptr_data_type) {
 
25798
                        NDR_PULL_ALLOC(ndr, r->in.data_type);
 
25799
                } else {
 
25800
                        r->in.data_type = NULL;
 
25801
                }
 
25802
                if (r->in.data_type) {
 
25803
                        _mem_save_data_type_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
25804
                        NDR_PULL_SET_MEM_CTX(ndr, r->in.data_type, 0);
 
25805
                        NDR_CHECK(ndr_pull_array_size(ndr, &r->in.data_type));
 
25806
                        NDR_CHECK(ndr_pull_array_length(ndr, &r->in.data_type));
 
25807
                        if (ndr_get_array_length(ndr, &r->in.data_type) > ndr_get_array_size(ndr, &r->in.data_type)) {
 
25808
                                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.data_type), ndr_get_array_length(ndr, &r->in.data_type));
 
25809
                        }
 
25810
                        NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.data_type), sizeof(uint16_t)));
 
25811
                        NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.data_type, ndr_get_array_length(ndr, &r->in.data_type), sizeof(uint16_t), CH_UTF16));
 
25812
                        NDR_PULL_SET_MEM_CTX(ndr, _mem_save_data_type_0, 0);
 
25813
                }
 
25814
                if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
 
25815
                        NDR_PULL_ALLOC(ndr, r->in.devmode_ctr);
 
25816
                }
 
25817
                _mem_save_devmode_ctr_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
25818
                NDR_PULL_SET_MEM_CTX(ndr, r->in.devmode_ctr, LIBNDR_FLAG_REF_ALLOC);
 
25819
                NDR_CHECK(ndr_pull_spoolss_DevmodeContainer(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.devmode_ctr));
 
25820
                NDR_PULL_SET_MEM_CTX(ndr, _mem_save_devmode_ctr_0, LIBNDR_FLAG_REF_ALLOC);
 
25821
        }
 
25822
        if (flags & NDR_OUT) {
 
25823
                NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
 
25824
        }
 
25825
        return NDR_ERR_SUCCESS;
 
25826
}
 
25827
 
 
25828
_PUBLIC_ void ndr_print_spoolss_ResetPrinter(struct ndr_print *ndr, const char *name, int flags, const struct spoolss_ResetPrinter *r)
 
25829
{
 
25830
        ndr_print_struct(ndr, name, "spoolss_ResetPrinter");
 
25831
        ndr->depth++;
 
25832
        if (flags & NDR_SET_VALUES) {
 
25833
                ndr->flags |= LIBNDR_PRINT_SET_VALUES;
 
25834
        }
 
25835
        if (flags & NDR_IN) {
 
25836
                ndr_print_struct(ndr, "in", "spoolss_ResetPrinter");
 
25837
                ndr->depth++;
 
25838
                ndr_print_ptr(ndr, "handle", r->in.handle);
 
25839
                ndr->depth++;
 
25840
                ndr_print_policy_handle(ndr, "handle", r->in.handle);
 
25841
                ndr->depth--;
 
25842
                ndr_print_ptr(ndr, "data_type", r->in.data_type);
 
25843
                ndr->depth++;
 
25844
                if (r->in.data_type) {
 
25845
                        ndr_print_string(ndr, "data_type", r->in.data_type);
 
25846
                }
 
25847
                ndr->depth--;
 
25848
                ndr_print_ptr(ndr, "devmode_ctr", r->in.devmode_ctr);
 
25849
                ndr->depth++;
 
25850
                ndr_print_spoolss_DevmodeContainer(ndr, "devmode_ctr", r->in.devmode_ctr);
 
25851
                ndr->depth--;
 
25852
                ndr->depth--;
 
25853
        }
 
25854
        if (flags & NDR_OUT) {
 
25855
                ndr_print_struct(ndr, "out", "spoolss_ResetPrinter");
 
25856
                ndr->depth++;
 
25857
                ndr_print_WERROR(ndr, "result", r->out.result);
 
25858
                ndr->depth--;
 
25859
        }
 
25860
        ndr->depth--;
 
25861
}
 
25862
 
 
25863
static enum ndr_err_code ndr_push_spoolss_GetPrinterDriver2(struct ndr_push *ndr, int flags, const struct spoolss_GetPrinterDriver2 *r)
 
25864
{
 
25865
        if (flags & NDR_IN) {
 
25866
                if (r->in.handle == NULL) {
 
25867
                        return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
 
25868
                }
 
25869
                NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
 
25870
                NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.architecture));
 
25871
                if (r->in.architecture) {
 
25872
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.architecture, CH_UTF16)));
 
25873
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0));
 
25874
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.architecture, CH_UTF16)));
 
25875
                        NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.architecture, ndr_charset_length(r->in.architecture, CH_UTF16), sizeof(uint16_t), CH_UTF16));
 
25876
                }
 
25877
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.level));
 
25878
                NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.buffer));
 
25879
                if (r->in.buffer) {
 
25880
                        NDR_CHECK(ndr_push_DATA_BLOB(ndr, NDR_SCALARS, *r->in.buffer));
 
25881
                }
 
25882
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.offered));
 
25883
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.client_major_version));
 
25884
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.client_minor_version));
 
25885
        }
 
25886
        if (flags & NDR_OUT) {
 
25887
                NDR_CHECK(ndr_push_unique_ptr(ndr, r->out.info));
 
25888
                if (r->out.info) {
 
25889
                        {
 
25890
                                struct ndr_push *_ndr_info;
 
25891
                                NDR_CHECK(ndr_push_subcontext_start(ndr, &_ndr_info, 4, r->in.offered));
 
25892
                                NDR_CHECK(ndr_push_set_switch_value(_ndr_info, r->out.info, r->in.level));
 
25893
                                NDR_CHECK(ndr_push_spoolss_DriverInfo(_ndr_info, NDR_SCALARS|NDR_BUFFERS, r->out.info));
 
25894
                                NDR_CHECK(ndr_push_subcontext_end(ndr, _ndr_info, 4, r->in.offered));
 
25895
                        }
 
25896
                }
 
25897
                if (r->out.needed == NULL) {
 
25898
                        return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
 
25899
                }
 
25900
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.needed));
 
25901
                if (r->out.server_major_version == NULL) {
 
25902
                        return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
 
25903
                }
 
25904
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.server_major_version));
 
25905
                if (r->out.server_minor_version == NULL) {
 
25906
                        return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
 
25907
                }
 
25908
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.server_minor_version));
 
25909
                NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
 
25910
        }
 
25911
        return NDR_ERR_SUCCESS;
 
25912
}
 
25913
 
 
25914
static enum ndr_err_code ndr_pull_spoolss_GetPrinterDriver2(struct ndr_pull *ndr, int flags, struct spoolss_GetPrinterDriver2 *r)
 
25915
{
 
25916
        uint32_t _ptr_architecture;
 
25917
        uint32_t _ptr_buffer;
 
25918
        uint32_t _ptr_info;
 
25919
        TALLOC_CTX *_mem_save_handle_0;
 
25920
        TALLOC_CTX *_mem_save_architecture_0;
 
25921
        TALLOC_CTX *_mem_save_buffer_0;
 
25922
        TALLOC_CTX *_mem_save_info_0;
 
25923
        TALLOC_CTX *_mem_save_needed_0;
 
25924
        TALLOC_CTX *_mem_save_server_major_version_0;
 
25925
        TALLOC_CTX *_mem_save_server_minor_version_0;
 
25926
        if (flags & NDR_IN) {
 
25927
                ZERO_STRUCT(r->out);
 
25928
 
 
25929
                if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
 
25930
                        NDR_PULL_ALLOC(ndr, r->in.handle);
 
25931
                }
 
25932
                _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
25933
                NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
 
25934
                NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
 
25935
                NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
 
25936
                NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_architecture));
 
25937
                if (_ptr_architecture) {
 
25938
                        NDR_PULL_ALLOC(ndr, r->in.architecture);
 
25939
                } else {
 
25940
                        r->in.architecture = NULL;
 
25941
                }
 
25942
                if (r->in.architecture) {
 
25943
                        _mem_save_architecture_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
25944
                        NDR_PULL_SET_MEM_CTX(ndr, r->in.architecture, 0);
 
25945
                        NDR_CHECK(ndr_pull_array_size(ndr, &r->in.architecture));
 
25946
                        NDR_CHECK(ndr_pull_array_length(ndr, &r->in.architecture));
 
25947
                        if (ndr_get_array_length(ndr, &r->in.architecture) > ndr_get_array_size(ndr, &r->in.architecture)) {
 
25948
                                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.architecture), ndr_get_array_length(ndr, &r->in.architecture));
 
25949
                        }
 
25950
                        NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.architecture), sizeof(uint16_t)));
 
25951
                        NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.architecture, ndr_get_array_length(ndr, &r->in.architecture), sizeof(uint16_t), CH_UTF16));
 
25952
                        NDR_PULL_SET_MEM_CTX(ndr, _mem_save_architecture_0, 0);
 
25953
                }
 
25954
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.level));
 
25955
                NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_buffer));
 
25956
                if (_ptr_buffer) {
 
25957
                        NDR_PULL_ALLOC(ndr, r->in.buffer);
 
25958
                } else {
 
25959
                        r->in.buffer = NULL;
 
25960
                }
 
25961
                if (r->in.buffer) {
 
25962
                        _mem_save_buffer_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
25963
                        NDR_PULL_SET_MEM_CTX(ndr, r->in.buffer, 0);
 
25964
                        NDR_CHECK(ndr_pull_DATA_BLOB(ndr, NDR_SCALARS, r->in.buffer));
 
25965
                        NDR_PULL_SET_MEM_CTX(ndr, _mem_save_buffer_0, 0);
 
25966
                }
 
25967
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.offered));
 
25968
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.client_major_version));
 
25969
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.client_minor_version));
 
25970
                NDR_PULL_ALLOC(ndr, r->out.needed);
 
25971
                ZERO_STRUCTP(r->out.needed);
 
25972
                NDR_PULL_ALLOC(ndr, r->out.server_major_version);
 
25973
                ZERO_STRUCTP(r->out.server_major_version);
 
25974
                NDR_PULL_ALLOC(ndr, r->out.server_minor_version);
 
25975
                ZERO_STRUCTP(r->out.server_minor_version);
 
25976
        }
 
25977
        if (flags & NDR_OUT) {
 
25978
                NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_info));
 
25979
                if (_ptr_info) {
 
25980
                        NDR_PULL_ALLOC(ndr, r->out.info);
 
25981
                } else {
 
25982
                        r->out.info = NULL;
 
25983
                }
 
25984
                if (r->out.info) {
 
25985
                        _mem_save_info_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
25986
                        NDR_PULL_SET_MEM_CTX(ndr, r->out.info, 0);
 
25987
                        {
 
25988
                                struct ndr_pull *_ndr_info;
 
25989
                                NDR_CHECK(ndr_pull_subcontext_start(ndr, &_ndr_info, 4, r->in.offered));
 
25990
                                NDR_CHECK(ndr_pull_set_switch_value(_ndr_info, r->out.info, r->in.level));
 
25991
                                NDR_CHECK(ndr_pull_spoolss_DriverInfo(_ndr_info, NDR_SCALARS|NDR_BUFFERS, r->out.info));
 
25992
                                NDR_CHECK(ndr_pull_subcontext_end(ndr, _ndr_info, 4, r->in.offered));
 
25993
                        }
 
25994
                        NDR_PULL_SET_MEM_CTX(ndr, _mem_save_info_0, 0);
 
25995
                }
 
25996
                if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
 
25997
                        NDR_PULL_ALLOC(ndr, r->out.needed);
 
25998
                }
 
25999
                _mem_save_needed_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
26000
                NDR_PULL_SET_MEM_CTX(ndr, r->out.needed, LIBNDR_FLAG_REF_ALLOC);
 
26001
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.needed));
 
26002
                NDR_PULL_SET_MEM_CTX(ndr, _mem_save_needed_0, LIBNDR_FLAG_REF_ALLOC);
 
26003
                if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
 
26004
                        NDR_PULL_ALLOC(ndr, r->out.server_major_version);
 
26005
                }
 
26006
                _mem_save_server_major_version_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
26007
                NDR_PULL_SET_MEM_CTX(ndr, r->out.server_major_version, LIBNDR_FLAG_REF_ALLOC);
 
26008
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.server_major_version));
 
26009
                NDR_PULL_SET_MEM_CTX(ndr, _mem_save_server_major_version_0, LIBNDR_FLAG_REF_ALLOC);
 
26010
                if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
 
26011
                        NDR_PULL_ALLOC(ndr, r->out.server_minor_version);
 
26012
                }
 
26013
                _mem_save_server_minor_version_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
26014
                NDR_PULL_SET_MEM_CTX(ndr, r->out.server_minor_version, LIBNDR_FLAG_REF_ALLOC);
 
26015
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.server_minor_version));
 
26016
                NDR_PULL_SET_MEM_CTX(ndr, _mem_save_server_minor_version_0, LIBNDR_FLAG_REF_ALLOC);
 
26017
                NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
 
26018
        }
 
26019
        return NDR_ERR_SUCCESS;
 
26020
}
 
26021
 
 
26022
_PUBLIC_ void ndr_print_spoolss_GetPrinterDriver2(struct ndr_print *ndr, const char *name, int flags, const struct spoolss_GetPrinterDriver2 *r)
 
26023
{
 
26024
        ndr_print_struct(ndr, name, "spoolss_GetPrinterDriver2");
 
26025
        ndr->depth++;
 
26026
        if (flags & NDR_SET_VALUES) {
 
26027
                ndr->flags |= LIBNDR_PRINT_SET_VALUES;
 
26028
        }
 
26029
        if (flags & NDR_IN) {
 
26030
                ndr_print_struct(ndr, "in", "spoolss_GetPrinterDriver2");
 
26031
                ndr->depth++;
 
26032
                ndr_print_ptr(ndr, "handle", r->in.handle);
 
26033
                ndr->depth++;
 
26034
                ndr_print_policy_handle(ndr, "handle", r->in.handle);
 
26035
                ndr->depth--;
 
26036
                ndr_print_ptr(ndr, "architecture", r->in.architecture);
 
26037
                ndr->depth++;
 
26038
                if (r->in.architecture) {
 
26039
                        ndr_print_string(ndr, "architecture", r->in.architecture);
 
26040
                }
 
26041
                ndr->depth--;
 
26042
                ndr_print_uint32(ndr, "level", r->in.level);
 
26043
                ndr_print_ptr(ndr, "buffer", r->in.buffer);
 
26044
                ndr->depth++;
 
26045
                if (r->in.buffer) {
 
26046
                        ndr_print_DATA_BLOB(ndr, "buffer", *r->in.buffer);
 
26047
                }
 
26048
                ndr->depth--;
 
26049
                ndr_print_uint32(ndr, "offered", r->in.offered);
 
26050
                ndr_print_uint32(ndr, "client_major_version", r->in.client_major_version);
 
26051
                ndr_print_uint32(ndr, "client_minor_version", r->in.client_minor_version);
 
26052
                ndr->depth--;
 
26053
        }
 
26054
        if (flags & NDR_OUT) {
 
26055
                ndr_print_struct(ndr, "out", "spoolss_GetPrinterDriver2");
 
26056
                ndr->depth++;
 
26057
                ndr_print_ptr(ndr, "info", r->out.info);
 
26058
                ndr->depth++;
 
26059
                if (r->out.info) {
 
26060
                        ndr_print_set_switch_value(ndr, r->out.info, r->in.level);
 
26061
                        ndr_print_spoolss_DriverInfo(ndr, "info", r->out.info);
 
26062
                }
 
26063
                ndr->depth--;
 
26064
                ndr_print_ptr(ndr, "needed", r->out.needed);
 
26065
                ndr->depth++;
 
26066
                ndr_print_uint32(ndr, "needed", *r->out.needed);
 
26067
                ndr->depth--;
 
26068
                ndr_print_ptr(ndr, "server_major_version", r->out.server_major_version);
 
26069
                ndr->depth++;
 
26070
                ndr_print_uint32(ndr, "server_major_version", *r->out.server_major_version);
 
26071
                ndr->depth--;
 
26072
                ndr_print_ptr(ndr, "server_minor_version", r->out.server_minor_version);
 
26073
                ndr->depth++;
 
26074
                ndr_print_uint32(ndr, "server_minor_version", *r->out.server_minor_version);
 
26075
                ndr->depth--;
 
26076
                ndr_print_WERROR(ndr, "result", r->out.result);
 
26077
                ndr->depth--;
 
26078
        }
 
26079
        ndr->depth--;
 
26080
}
 
26081
 
 
26082
static enum ndr_err_code ndr_push_spoolss_FindFirstPrinterChangeNotification(struct ndr_push *ndr, int flags, const struct spoolss_FindFirstPrinterChangeNotification *r)
 
26083
{
 
26084
        if (flags & NDR_IN) {
 
26085
        }
 
26086
        if (flags & NDR_OUT) {
 
26087
                NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
 
26088
        }
 
26089
        return NDR_ERR_SUCCESS;
 
26090
}
 
26091
 
 
26092
static enum ndr_err_code ndr_pull_spoolss_FindFirstPrinterChangeNotification(struct ndr_pull *ndr, int flags, struct spoolss_FindFirstPrinterChangeNotification *r)
 
26093
{
 
26094
        if (flags & NDR_IN) {
 
26095
        }
 
26096
        if (flags & NDR_OUT) {
 
26097
                NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
 
26098
        }
 
26099
        return NDR_ERR_SUCCESS;
 
26100
}
 
26101
 
 
26102
_PUBLIC_ void ndr_print_spoolss_FindFirstPrinterChangeNotification(struct ndr_print *ndr, const char *name, int flags, const struct spoolss_FindFirstPrinterChangeNotification *r)
 
26103
{
 
26104
        ndr_print_struct(ndr, name, "spoolss_FindFirstPrinterChangeNotification");
 
26105
        ndr->depth++;
 
26106
        if (flags & NDR_SET_VALUES) {
 
26107
                ndr->flags |= LIBNDR_PRINT_SET_VALUES;
 
26108
        }
 
26109
        if (flags & NDR_IN) {
 
26110
                ndr_print_struct(ndr, "in", "spoolss_FindFirstPrinterChangeNotification");
 
26111
                ndr->depth++;
 
26112
                ndr->depth--;
 
26113
        }
 
26114
        if (flags & NDR_OUT) {
 
26115
                ndr_print_struct(ndr, "out", "spoolss_FindFirstPrinterChangeNotification");
 
26116
                ndr->depth++;
 
26117
                ndr_print_WERROR(ndr, "result", r->out.result);
 
26118
                ndr->depth--;
 
26119
        }
 
26120
        ndr->depth--;
 
26121
}
 
26122
 
 
26123
static enum ndr_err_code ndr_push_spoolss_FindNextPrinterChangeNotification(struct ndr_push *ndr, int flags, const struct spoolss_FindNextPrinterChangeNotification *r)
 
26124
{
 
26125
        if (flags & NDR_IN) {
 
26126
        }
 
26127
        if (flags & NDR_OUT) {
 
26128
                NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
 
26129
        }
 
26130
        return NDR_ERR_SUCCESS;
 
26131
}
 
26132
 
 
26133
static enum ndr_err_code ndr_pull_spoolss_FindNextPrinterChangeNotification(struct ndr_pull *ndr, int flags, struct spoolss_FindNextPrinterChangeNotification *r)
 
26134
{
 
26135
        if (flags & NDR_IN) {
 
26136
        }
 
26137
        if (flags & NDR_OUT) {
 
26138
                NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
 
26139
        }
 
26140
        return NDR_ERR_SUCCESS;
 
26141
}
 
26142
 
 
26143
_PUBLIC_ void ndr_print_spoolss_FindNextPrinterChangeNotification(struct ndr_print *ndr, const char *name, int flags, const struct spoolss_FindNextPrinterChangeNotification *r)
 
26144
{
 
26145
        ndr_print_struct(ndr, name, "spoolss_FindNextPrinterChangeNotification");
 
26146
        ndr->depth++;
 
26147
        if (flags & NDR_SET_VALUES) {
 
26148
                ndr->flags |= LIBNDR_PRINT_SET_VALUES;
 
26149
        }
 
26150
        if (flags & NDR_IN) {
 
26151
                ndr_print_struct(ndr, "in", "spoolss_FindNextPrinterChangeNotification");
 
26152
                ndr->depth++;
 
26153
                ndr->depth--;
 
26154
        }
 
26155
        if (flags & NDR_OUT) {
 
26156
                ndr_print_struct(ndr, "out", "spoolss_FindNextPrinterChangeNotification");
 
26157
                ndr->depth++;
 
26158
                ndr_print_WERROR(ndr, "result", r->out.result);
 
26159
                ndr->depth--;
 
26160
        }
 
26161
        ndr->depth--;
 
26162
}
 
26163
 
 
26164
_PUBLIC_ enum ndr_err_code ndr_push_spoolss_FindClosePrinterNotify(struct ndr_push *ndr, int flags, const struct spoolss_FindClosePrinterNotify *r)
 
26165
{
 
26166
        if (flags & NDR_IN) {
 
26167
                if (r->in.handle == NULL) {
 
26168
                        return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
 
26169
                }
 
26170
                NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
 
26171
        }
 
26172
        if (flags & NDR_OUT) {
 
26173
                NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
 
26174
        }
 
26175
        return NDR_ERR_SUCCESS;
 
26176
}
 
26177
 
 
26178
_PUBLIC_ enum ndr_err_code ndr_pull_spoolss_FindClosePrinterNotify(struct ndr_pull *ndr, int flags, struct spoolss_FindClosePrinterNotify *r)
 
26179
{
 
26180
        TALLOC_CTX *_mem_save_handle_0;
 
26181
        if (flags & NDR_IN) {
 
26182
                if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
 
26183
                        NDR_PULL_ALLOC(ndr, r->in.handle);
 
26184
                }
 
26185
                _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
26186
                NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
 
26187
                NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
 
26188
                NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
 
26189
        }
 
26190
        if (flags & NDR_OUT) {
 
26191
                NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
 
26192
        }
 
26193
        return NDR_ERR_SUCCESS;
 
26194
}
 
26195
 
 
26196
_PUBLIC_ void ndr_print_spoolss_FindClosePrinterNotify(struct ndr_print *ndr, const char *name, int flags, const struct spoolss_FindClosePrinterNotify *r)
 
26197
{
 
26198
        ndr_print_struct(ndr, name, "spoolss_FindClosePrinterNotify");
 
26199
        ndr->depth++;
 
26200
        if (flags & NDR_SET_VALUES) {
 
26201
                ndr->flags |= LIBNDR_PRINT_SET_VALUES;
 
26202
        }
 
26203
        if (flags & NDR_IN) {
 
26204
                ndr_print_struct(ndr, "in", "spoolss_FindClosePrinterNotify");
 
26205
                ndr->depth++;
 
26206
                ndr_print_ptr(ndr, "handle", r->in.handle);
 
26207
                ndr->depth++;
 
26208
                ndr_print_policy_handle(ndr, "handle", r->in.handle);
 
26209
                ndr->depth--;
 
26210
                ndr->depth--;
 
26211
        }
 
26212
        if (flags & NDR_OUT) {
 
26213
                ndr_print_struct(ndr, "out", "spoolss_FindClosePrinterNotify");
 
26214
                ndr->depth++;
 
26215
                ndr_print_WERROR(ndr, "result", r->out.result);
 
26216
                ndr->depth--;
 
26217
        }
 
26218
        ndr->depth--;
 
26219
}
 
26220
 
 
26221
static enum ndr_err_code ndr_push_spoolss_RouterFindFirstPrinterChangeNotificationOld(struct ndr_push *ndr, int flags, const struct spoolss_RouterFindFirstPrinterChangeNotificationOld *r)
 
26222
{
 
26223
        if (flags & NDR_IN) {
 
26224
        }
 
26225
        if (flags & NDR_OUT) {
 
26226
                NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
 
26227
        }
 
26228
        return NDR_ERR_SUCCESS;
 
26229
}
 
26230
 
 
26231
static enum ndr_err_code ndr_pull_spoolss_RouterFindFirstPrinterChangeNotificationOld(struct ndr_pull *ndr, int flags, struct spoolss_RouterFindFirstPrinterChangeNotificationOld *r)
 
26232
{
 
26233
        if (flags & NDR_IN) {
 
26234
        }
 
26235
        if (flags & NDR_OUT) {
 
26236
                NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
 
26237
        }
 
26238
        return NDR_ERR_SUCCESS;
 
26239
}
 
26240
 
 
26241
_PUBLIC_ void ndr_print_spoolss_RouterFindFirstPrinterChangeNotificationOld(struct ndr_print *ndr, const char *name, int flags, const struct spoolss_RouterFindFirstPrinterChangeNotificationOld *r)
 
26242
{
 
26243
        ndr_print_struct(ndr, name, "spoolss_RouterFindFirstPrinterChangeNotificationOld");
 
26244
        ndr->depth++;
 
26245
        if (flags & NDR_SET_VALUES) {
 
26246
                ndr->flags |= LIBNDR_PRINT_SET_VALUES;
 
26247
        }
 
26248
        if (flags & NDR_IN) {
 
26249
                ndr_print_struct(ndr, "in", "spoolss_RouterFindFirstPrinterChangeNotificationOld");
 
26250
                ndr->depth++;
 
26251
                ndr->depth--;
 
26252
        }
 
26253
        if (flags & NDR_OUT) {
 
26254
                ndr_print_struct(ndr, "out", "spoolss_RouterFindFirstPrinterChangeNotificationOld");
 
26255
                ndr->depth++;
 
26256
                ndr_print_WERROR(ndr, "result", r->out.result);
 
26257
                ndr->depth--;
 
26258
        }
 
26259
        ndr->depth--;
 
26260
}
 
26261
 
 
26262
_PUBLIC_ enum ndr_err_code ndr_push_spoolss_ReplyOpenPrinter(struct ndr_push *ndr, int flags, const struct spoolss_ReplyOpenPrinter *r)
 
26263
{
 
26264
        if (flags & NDR_IN) {
 
26265
                NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_name, CH_UTF16)));
 
26266
                NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0));
 
26267
                NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_name, CH_UTF16)));
 
26268
                NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.server_name, ndr_charset_length(r->in.server_name, CH_UTF16), sizeof(uint16_t), CH_UTF16));
 
26269
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.printer_local));
 
26270
                NDR_CHECK(ndr_push_winreg_Type(ndr, NDR_SCALARS, r->in.type));
 
26271
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.bufsize));
 
26272
                NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.buffer));
 
26273
                if (r->in.buffer) {
 
26274
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, r->in.bufsize));
 
26275
                        NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->in.buffer, r->in.bufsize));
 
26276
                }
 
26277
        }
 
26278
        if (flags & NDR_OUT) {
 
26279
                if (r->out.handle == NULL) {
 
26280
                        return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
 
26281
                }
 
26282
                NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->out.handle));
 
26283
                NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
 
26284
        }
 
26285
        return NDR_ERR_SUCCESS;
 
26286
}
 
26287
 
 
26288
_PUBLIC_ enum ndr_err_code ndr_pull_spoolss_ReplyOpenPrinter(struct ndr_pull *ndr, int flags, struct spoolss_ReplyOpenPrinter *r)
 
26289
{
 
26290
        uint32_t _ptr_buffer;
 
26291
        TALLOC_CTX *_mem_save_buffer_0;
 
26292
        TALLOC_CTX *_mem_save_handle_0;
 
26293
        if (flags & NDR_IN) {
 
26294
                ZERO_STRUCT(r->out);
 
26295
 
 
26296
                NDR_CHECK(ndr_pull_array_size(ndr, &r->in.server_name));
 
26297
                NDR_CHECK(ndr_pull_array_length(ndr, &r->in.server_name));
 
26298
                if (ndr_get_array_length(ndr, &r->in.server_name) > ndr_get_array_size(ndr, &r->in.server_name)) {
 
26299
                        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.server_name), ndr_get_array_length(ndr, &r->in.server_name));
 
26300
                }
 
26301
                NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.server_name), sizeof(uint16_t)));
 
26302
                NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.server_name, ndr_get_array_length(ndr, &r->in.server_name), sizeof(uint16_t), CH_UTF16));
 
26303
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.printer_local));
 
26304
                NDR_CHECK(ndr_pull_winreg_Type(ndr, NDR_SCALARS, &r->in.type));
 
26305
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.bufsize));
 
26306
                if (r->in.bufsize > 512) {
 
26307
                        return ndr_pull_error(ndr, NDR_ERR_RANGE, "value out of range");
 
26308
                }
 
26309
                NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_buffer));
 
26310
                if (_ptr_buffer) {
 
26311
                        NDR_PULL_ALLOC(ndr, r->in.buffer);
 
26312
                } else {
 
26313
                        r->in.buffer = NULL;
 
26314
                }
 
26315
                if (r->in.buffer) {
 
26316
                        _mem_save_buffer_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
26317
                        NDR_PULL_SET_MEM_CTX(ndr, r->in.buffer, 0);
 
26318
                        NDR_CHECK(ndr_pull_array_size(ndr, &r->in.buffer));
 
26319
                        NDR_PULL_ALLOC_N(ndr, r->in.buffer, ndr_get_array_size(ndr, &r->in.buffer));
 
26320
                        NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->in.buffer, ndr_get_array_size(ndr, &r->in.buffer)));
 
26321
                        NDR_PULL_SET_MEM_CTX(ndr, _mem_save_buffer_0, 0);
 
26322
                }
 
26323
                NDR_PULL_ALLOC(ndr, r->out.handle);
 
26324
                ZERO_STRUCTP(r->out.handle);
 
26325
                if (r->in.buffer) {
 
26326
                        NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->in.buffer, r->in.bufsize));
 
26327
                }
 
26328
        }
 
26329
        if (flags & NDR_OUT) {
 
26330
                if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
 
26331
                        NDR_PULL_ALLOC(ndr, r->out.handle);
 
26332
                }
 
26333
                _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
26334
                NDR_PULL_SET_MEM_CTX(ndr, r->out.handle, LIBNDR_FLAG_REF_ALLOC);
 
26335
                NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->out.handle));
 
26336
                NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
 
26337
                NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
 
26338
        }
 
26339
        return NDR_ERR_SUCCESS;
 
26340
}
 
26341
 
 
26342
_PUBLIC_ void ndr_print_spoolss_ReplyOpenPrinter(struct ndr_print *ndr, const char *name, int flags, const struct spoolss_ReplyOpenPrinter *r)
 
26343
{
 
26344
        ndr_print_struct(ndr, name, "spoolss_ReplyOpenPrinter");
 
26345
        ndr->depth++;
 
26346
        if (flags & NDR_SET_VALUES) {
 
26347
                ndr->flags |= LIBNDR_PRINT_SET_VALUES;
 
26348
        }
 
26349
        if (flags & NDR_IN) {
 
26350
                ndr_print_struct(ndr, "in", "spoolss_ReplyOpenPrinter");
 
26351
                ndr->depth++;
 
26352
                ndr_print_string(ndr, "server_name", r->in.server_name);
 
26353
                ndr_print_uint32(ndr, "printer_local", r->in.printer_local);
 
26354
                ndr_print_winreg_Type(ndr, "type", r->in.type);
 
26355
                ndr_print_uint32(ndr, "bufsize", r->in.bufsize);
 
26356
                ndr_print_ptr(ndr, "buffer", r->in.buffer);
 
26357
                ndr->depth++;
 
26358
                if (r->in.buffer) {
 
26359
                        ndr_print_array_uint8(ndr, "buffer", r->in.buffer, r->in.bufsize);
 
26360
                }
 
26361
                ndr->depth--;
 
26362
                ndr->depth--;
 
26363
        }
 
26364
        if (flags & NDR_OUT) {
 
26365
                ndr_print_struct(ndr, "out", "spoolss_ReplyOpenPrinter");
 
26366
                ndr->depth++;
 
26367
                ndr_print_ptr(ndr, "handle", r->out.handle);
 
26368
                ndr->depth++;
 
26369
                ndr_print_policy_handle(ndr, "handle", r->out.handle);
 
26370
                ndr->depth--;
 
26371
                ndr_print_WERROR(ndr, "result", r->out.result);
 
26372
                ndr->depth--;
 
26373
        }
 
26374
        ndr->depth--;
 
26375
}
 
26376
 
 
26377
static enum ndr_err_code ndr_push_spoolss_RouterReplyPrinter(struct ndr_push *ndr, int flags, const struct spoolss_RouterReplyPrinter *r)
 
26378
{
 
26379
        if (flags & NDR_IN) {
 
26380
                if (r->in.handle == NULL) {
 
26381
                        return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
 
26382
                }
 
26383
                NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
 
26384
                NDR_CHECK(ndr_push_spoolss_PrinterChangeFlags(ndr, NDR_SCALARS, r->in.flags));
 
26385
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.bufsize));
 
26386
                NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.buffer));
 
26387
                if (r->in.buffer) {
 
26388
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, r->in.bufsize));
 
26389
                        NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->in.buffer, r->in.bufsize));
 
26390
                }
 
26391
        }
 
26392
        if (flags & NDR_OUT) {
 
26393
                NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
 
26394
        }
 
26395
        return NDR_ERR_SUCCESS;
 
26396
}
 
26397
 
 
26398
static enum ndr_err_code ndr_pull_spoolss_RouterReplyPrinter(struct ndr_pull *ndr, int flags, struct spoolss_RouterReplyPrinter *r)
 
26399
{
 
26400
        uint32_t _ptr_buffer;
 
26401
        TALLOC_CTX *_mem_save_handle_0;
 
26402
        TALLOC_CTX *_mem_save_buffer_0;
 
26403
        if (flags & NDR_IN) {
 
26404
                if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
 
26405
                        NDR_PULL_ALLOC(ndr, r->in.handle);
 
26406
                }
 
26407
                _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
26408
                NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
 
26409
                NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
 
26410
                NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
 
26411
                NDR_CHECK(ndr_pull_spoolss_PrinterChangeFlags(ndr, NDR_SCALARS, &r->in.flags));
 
26412
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.bufsize));
 
26413
                if (r->in.bufsize > 512) {
 
26414
                        return ndr_pull_error(ndr, NDR_ERR_RANGE, "value out of range");
 
26415
                }
 
26416
                NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_buffer));
 
26417
                if (_ptr_buffer) {
 
26418
                        NDR_PULL_ALLOC(ndr, r->in.buffer);
 
26419
                } else {
 
26420
                        r->in.buffer = NULL;
 
26421
                }
 
26422
                if (r->in.buffer) {
 
26423
                        _mem_save_buffer_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
26424
                        NDR_PULL_SET_MEM_CTX(ndr, r->in.buffer, 0);
 
26425
                        NDR_CHECK(ndr_pull_array_size(ndr, &r->in.buffer));
 
26426
                        NDR_PULL_ALLOC_N(ndr, r->in.buffer, ndr_get_array_size(ndr, &r->in.buffer));
 
26427
                        NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->in.buffer, ndr_get_array_size(ndr, &r->in.buffer)));
 
26428
                        NDR_PULL_SET_MEM_CTX(ndr, _mem_save_buffer_0, 0);
 
26429
                }
 
26430
                if (r->in.buffer) {
 
26431
                        NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->in.buffer, r->in.bufsize));
 
26432
                }
 
26433
        }
 
26434
        if (flags & NDR_OUT) {
 
26435
                NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
 
26436
        }
 
26437
        return NDR_ERR_SUCCESS;
 
26438
}
 
26439
 
 
26440
_PUBLIC_ void ndr_print_spoolss_RouterReplyPrinter(struct ndr_print *ndr, const char *name, int flags, const struct spoolss_RouterReplyPrinter *r)
 
26441
{
 
26442
        ndr_print_struct(ndr, name, "spoolss_RouterReplyPrinter");
 
26443
        ndr->depth++;
 
26444
        if (flags & NDR_SET_VALUES) {
 
26445
                ndr->flags |= LIBNDR_PRINT_SET_VALUES;
 
26446
        }
 
26447
        if (flags & NDR_IN) {
 
26448
                ndr_print_struct(ndr, "in", "spoolss_RouterReplyPrinter");
 
26449
                ndr->depth++;
 
26450
                ndr_print_ptr(ndr, "handle", r->in.handle);
 
26451
                ndr->depth++;
 
26452
                ndr_print_policy_handle(ndr, "handle", r->in.handle);
 
26453
                ndr->depth--;
 
26454
                ndr_print_spoolss_PrinterChangeFlags(ndr, "flags", r->in.flags);
 
26455
                ndr_print_uint32(ndr, "bufsize", r->in.bufsize);
 
26456
                ndr_print_ptr(ndr, "buffer", r->in.buffer);
 
26457
                ndr->depth++;
 
26458
                if (r->in.buffer) {
 
26459
                        ndr_print_array_uint8(ndr, "buffer", r->in.buffer, r->in.bufsize);
 
26460
                }
 
26461
                ndr->depth--;
 
26462
                ndr->depth--;
 
26463
        }
 
26464
        if (flags & NDR_OUT) {
 
26465
                ndr_print_struct(ndr, "out", "spoolss_RouterReplyPrinter");
 
26466
                ndr->depth++;
 
26467
                ndr_print_WERROR(ndr, "result", r->out.result);
 
26468
                ndr->depth--;
 
26469
        }
 
26470
        ndr->depth--;
 
26471
}
 
26472
 
 
26473
_PUBLIC_ enum ndr_err_code ndr_push_spoolss_ReplyClosePrinter(struct ndr_push *ndr, int flags, const struct spoolss_ReplyClosePrinter *r)
 
26474
{
 
26475
        if (flags & NDR_IN) {
 
26476
                if (r->in.handle == NULL) {
 
26477
                        return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
 
26478
                }
 
26479
                NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
 
26480
        }
 
26481
        if (flags & NDR_OUT) {
 
26482
                if (r->out.handle == NULL) {
 
26483
                        return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
 
26484
                }
 
26485
                NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->out.handle));
 
26486
                NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
 
26487
        }
 
26488
        return NDR_ERR_SUCCESS;
 
26489
}
 
26490
 
 
26491
_PUBLIC_ enum ndr_err_code ndr_pull_spoolss_ReplyClosePrinter(struct ndr_pull *ndr, int flags, struct spoolss_ReplyClosePrinter *r)
 
26492
{
 
26493
        TALLOC_CTX *_mem_save_handle_0;
 
26494
        if (flags & NDR_IN) {
 
26495
                ZERO_STRUCT(r->out);
 
26496
 
 
26497
                if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
 
26498
                        NDR_PULL_ALLOC(ndr, r->in.handle);
 
26499
                }
 
26500
                _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
26501
                NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
 
26502
                NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
 
26503
                NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
 
26504
                NDR_PULL_ALLOC(ndr, r->out.handle);
 
26505
                *r->out.handle = *r->in.handle;
 
26506
        }
 
26507
        if (flags & NDR_OUT) {
 
26508
                if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
 
26509
                        NDR_PULL_ALLOC(ndr, r->out.handle);
 
26510
                }
 
26511
                _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
26512
                NDR_PULL_SET_MEM_CTX(ndr, r->out.handle, LIBNDR_FLAG_REF_ALLOC);
 
26513
                NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->out.handle));
 
26514
                NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
 
26515
                NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
 
26516
        }
 
26517
        return NDR_ERR_SUCCESS;
 
26518
}
 
26519
 
 
26520
_PUBLIC_ void ndr_print_spoolss_ReplyClosePrinter(struct ndr_print *ndr, const char *name, int flags, const struct spoolss_ReplyClosePrinter *r)
 
26521
{
 
26522
        ndr_print_struct(ndr, name, "spoolss_ReplyClosePrinter");
 
26523
        ndr->depth++;
 
26524
        if (flags & NDR_SET_VALUES) {
 
26525
                ndr->flags |= LIBNDR_PRINT_SET_VALUES;
 
26526
        }
 
26527
        if (flags & NDR_IN) {
 
26528
                ndr_print_struct(ndr, "in", "spoolss_ReplyClosePrinter");
 
26529
                ndr->depth++;
 
26530
                ndr_print_ptr(ndr, "handle", r->in.handle);
 
26531
                ndr->depth++;
 
26532
                ndr_print_policy_handle(ndr, "handle", r->in.handle);
 
26533
                ndr->depth--;
 
26534
                ndr->depth--;
 
26535
        }
 
26536
        if (flags & NDR_OUT) {
 
26537
                ndr_print_struct(ndr, "out", "spoolss_ReplyClosePrinter");
 
26538
                ndr->depth++;
 
26539
                ndr_print_ptr(ndr, "handle", r->out.handle);
 
26540
                ndr->depth++;
 
26541
                ndr_print_policy_handle(ndr, "handle", r->out.handle);
 
26542
                ndr->depth--;
 
26543
                ndr_print_WERROR(ndr, "result", r->out.result);
 
26544
                ndr->depth--;
 
26545
        }
 
26546
        ndr->depth--;
 
26547
}
 
26548
 
 
26549
static enum ndr_err_code ndr_push_spoolss_AddPortEx(struct ndr_push *ndr, int flags, const struct spoolss_AddPortEx *r)
 
26550
{
 
26551
        if (flags & NDR_IN) {
 
26552
        }
 
26553
        if (flags & NDR_OUT) {
 
26554
                NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
 
26555
        }
 
26556
        return NDR_ERR_SUCCESS;
 
26557
}
 
26558
 
 
26559
static enum ndr_err_code ndr_pull_spoolss_AddPortEx(struct ndr_pull *ndr, int flags, struct spoolss_AddPortEx *r)
 
26560
{
 
26561
        if (flags & NDR_IN) {
 
26562
        }
 
26563
        if (flags & NDR_OUT) {
 
26564
                NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
 
26565
        }
 
26566
        return NDR_ERR_SUCCESS;
 
26567
}
 
26568
 
 
26569
_PUBLIC_ void ndr_print_spoolss_AddPortEx(struct ndr_print *ndr, const char *name, int flags, const struct spoolss_AddPortEx *r)
 
26570
{
 
26571
        ndr_print_struct(ndr, name, "spoolss_AddPortEx");
 
26572
        ndr->depth++;
 
26573
        if (flags & NDR_SET_VALUES) {
 
26574
                ndr->flags |= LIBNDR_PRINT_SET_VALUES;
 
26575
        }
 
26576
        if (flags & NDR_IN) {
 
26577
                ndr_print_struct(ndr, "in", "spoolss_AddPortEx");
 
26578
                ndr->depth++;
 
26579
                ndr->depth--;
 
26580
        }
 
26581
        if (flags & NDR_OUT) {
 
26582
                ndr_print_struct(ndr, "out", "spoolss_AddPortEx");
 
26583
                ndr->depth++;
 
26584
                ndr_print_WERROR(ndr, "result", r->out.result);
 
26585
                ndr->depth--;
 
26586
        }
 
26587
        ndr->depth--;
 
26588
}
 
26589
 
 
26590
static enum ndr_err_code ndr_push_spoolss_RouterFindFirstPrinterChangeNotification(struct ndr_push *ndr, int flags, const struct spoolss_RouterFindFirstPrinterChangeNotification *r)
 
26591
{
 
26592
        if (flags & NDR_IN) {
 
26593
        }
 
26594
        if (flags & NDR_OUT) {
 
26595
                NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
 
26596
        }
 
26597
        return NDR_ERR_SUCCESS;
 
26598
}
 
26599
 
 
26600
static enum ndr_err_code ndr_pull_spoolss_RouterFindFirstPrinterChangeNotification(struct ndr_pull *ndr, int flags, struct spoolss_RouterFindFirstPrinterChangeNotification *r)
 
26601
{
 
26602
        if (flags & NDR_IN) {
 
26603
        }
 
26604
        if (flags & NDR_OUT) {
 
26605
                NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
 
26606
        }
 
26607
        return NDR_ERR_SUCCESS;
 
26608
}
 
26609
 
 
26610
_PUBLIC_ void ndr_print_spoolss_RouterFindFirstPrinterChangeNotification(struct ndr_print *ndr, const char *name, int flags, const struct spoolss_RouterFindFirstPrinterChangeNotification *r)
 
26611
{
 
26612
        ndr_print_struct(ndr, name, "spoolss_RouterFindFirstPrinterChangeNotification");
 
26613
        ndr->depth++;
 
26614
        if (flags & NDR_SET_VALUES) {
 
26615
                ndr->flags |= LIBNDR_PRINT_SET_VALUES;
 
26616
        }
 
26617
        if (flags & NDR_IN) {
 
26618
                ndr_print_struct(ndr, "in", "spoolss_RouterFindFirstPrinterChangeNotification");
 
26619
                ndr->depth++;
 
26620
                ndr->depth--;
 
26621
        }
 
26622
        if (flags & NDR_OUT) {
 
26623
                ndr_print_struct(ndr, "out", "spoolss_RouterFindFirstPrinterChangeNotification");
 
26624
                ndr->depth++;
 
26625
                ndr_print_WERROR(ndr, "result", r->out.result);
 
26626
                ndr->depth--;
 
26627
        }
 
26628
        ndr->depth--;
 
26629
}
 
26630
 
 
26631
static enum ndr_err_code ndr_push_spoolss_SpoolerInit(struct ndr_push *ndr, int flags, const struct spoolss_SpoolerInit *r)
 
26632
{
 
26633
        if (flags & NDR_IN) {
 
26634
        }
 
26635
        if (flags & NDR_OUT) {
 
26636
                NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
 
26637
        }
 
26638
        return NDR_ERR_SUCCESS;
 
26639
}
 
26640
 
 
26641
static enum ndr_err_code ndr_pull_spoolss_SpoolerInit(struct ndr_pull *ndr, int flags, struct spoolss_SpoolerInit *r)
 
26642
{
 
26643
        if (flags & NDR_IN) {
 
26644
        }
 
26645
        if (flags & NDR_OUT) {
 
26646
                NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
 
26647
        }
 
26648
        return NDR_ERR_SUCCESS;
 
26649
}
 
26650
 
 
26651
_PUBLIC_ void ndr_print_spoolss_SpoolerInit(struct ndr_print *ndr, const char *name, int flags, const struct spoolss_SpoolerInit *r)
 
26652
{
 
26653
        ndr_print_struct(ndr, name, "spoolss_SpoolerInit");
 
26654
        ndr->depth++;
 
26655
        if (flags & NDR_SET_VALUES) {
 
26656
                ndr->flags |= LIBNDR_PRINT_SET_VALUES;
 
26657
        }
 
26658
        if (flags & NDR_IN) {
 
26659
                ndr_print_struct(ndr, "in", "spoolss_SpoolerInit");
 
26660
                ndr->depth++;
 
26661
                ndr->depth--;
 
26662
        }
 
26663
        if (flags & NDR_OUT) {
 
26664
                ndr_print_struct(ndr, "out", "spoolss_SpoolerInit");
 
26665
                ndr->depth++;
 
26666
                ndr_print_WERROR(ndr, "result", r->out.result);
 
26667
                ndr->depth--;
 
26668
        }
 
26669
        ndr->depth--;
 
26670
}
 
26671
 
 
26672
static enum ndr_err_code ndr_push_spoolss_ResetPrinterEx(struct ndr_push *ndr, int flags, const struct spoolss_ResetPrinterEx *r)
 
26673
{
 
26674
        if (flags & NDR_IN) {
 
26675
        }
 
26676
        if (flags & NDR_OUT) {
 
26677
                NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
 
26678
        }
 
26679
        return NDR_ERR_SUCCESS;
 
26680
}
 
26681
 
 
26682
static enum ndr_err_code ndr_pull_spoolss_ResetPrinterEx(struct ndr_pull *ndr, int flags, struct spoolss_ResetPrinterEx *r)
 
26683
{
 
26684
        if (flags & NDR_IN) {
 
26685
        }
 
26686
        if (flags & NDR_OUT) {
 
26687
                NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
 
26688
        }
 
26689
        return NDR_ERR_SUCCESS;
 
26690
}
 
26691
 
 
26692
_PUBLIC_ void ndr_print_spoolss_ResetPrinterEx(struct ndr_print *ndr, const char *name, int flags, const struct spoolss_ResetPrinterEx *r)
 
26693
{
 
26694
        ndr_print_struct(ndr, name, "spoolss_ResetPrinterEx");
 
26695
        ndr->depth++;
 
26696
        if (flags & NDR_SET_VALUES) {
 
26697
                ndr->flags |= LIBNDR_PRINT_SET_VALUES;
 
26698
        }
 
26699
        if (flags & NDR_IN) {
 
26700
                ndr_print_struct(ndr, "in", "spoolss_ResetPrinterEx");
 
26701
                ndr->depth++;
 
26702
                ndr->depth--;
 
26703
        }
 
26704
        if (flags & NDR_OUT) {
 
26705
                ndr_print_struct(ndr, "out", "spoolss_ResetPrinterEx");
 
26706
                ndr->depth++;
 
26707
                ndr_print_WERROR(ndr, "result", r->out.result);
 
26708
                ndr->depth--;
 
26709
        }
 
26710
        ndr->depth--;
 
26711
}
 
26712
 
 
26713
_PUBLIC_ enum ndr_err_code ndr_push_spoolss_RemoteFindFirstPrinterChangeNotifyEx(struct ndr_push *ndr, int flags, const struct spoolss_RemoteFindFirstPrinterChangeNotifyEx *r)
 
26714
{
 
26715
        if (flags & NDR_IN) {
 
26716
                if (r->in.handle == NULL) {
 
26717
                        return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
 
26718
                }
 
26719
                NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
 
26720
                NDR_CHECK(ndr_push_spoolss_PrinterChangeFlags(ndr, NDR_SCALARS, r->in.flags));
 
26721
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.options));
 
26722
                NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.local_machine));
 
26723
                if (r->in.local_machine) {
 
26724
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.local_machine, CH_UTF16)));
 
26725
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0));
 
26726
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.local_machine, CH_UTF16)));
 
26727
                        NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.local_machine, ndr_charset_length(r->in.local_machine, CH_UTF16), sizeof(uint16_t), CH_UTF16));
 
26728
                }
 
26729
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.printer_local));
 
26730
                NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.notify_options));
 
26731
                if (r->in.notify_options) {
 
26732
                        NDR_CHECK(ndr_push_spoolss_NotifyOption(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.notify_options));
 
26733
                }
 
26734
        }
 
26735
        if (flags & NDR_OUT) {
 
26736
                NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
 
26737
        }
 
26738
        return NDR_ERR_SUCCESS;
 
26739
}
 
26740
 
 
26741
_PUBLIC_ enum ndr_err_code ndr_pull_spoolss_RemoteFindFirstPrinterChangeNotifyEx(struct ndr_pull *ndr, int flags, struct spoolss_RemoteFindFirstPrinterChangeNotifyEx *r)
 
26742
{
 
26743
        uint32_t _ptr_local_machine;
 
26744
        uint32_t _ptr_notify_options;
 
26745
        TALLOC_CTX *_mem_save_handle_0;
 
26746
        TALLOC_CTX *_mem_save_local_machine_0;
 
26747
        TALLOC_CTX *_mem_save_notify_options_0;
 
26748
        if (flags & NDR_IN) {
 
26749
                if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
 
26750
                        NDR_PULL_ALLOC(ndr, r->in.handle);
 
26751
                }
 
26752
                _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
26753
                NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
 
26754
                NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
 
26755
                NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
 
26756
                NDR_CHECK(ndr_pull_spoolss_PrinterChangeFlags(ndr, NDR_SCALARS, &r->in.flags));
 
26757
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.options));
 
26758
                NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_local_machine));
 
26759
                if (_ptr_local_machine) {
 
26760
                        NDR_PULL_ALLOC(ndr, r->in.local_machine);
 
26761
                } else {
 
26762
                        r->in.local_machine = NULL;
 
26763
                }
 
26764
                if (r->in.local_machine) {
 
26765
                        _mem_save_local_machine_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
26766
                        NDR_PULL_SET_MEM_CTX(ndr, r->in.local_machine, 0);
 
26767
                        NDR_CHECK(ndr_pull_array_size(ndr, &r->in.local_machine));
 
26768
                        NDR_CHECK(ndr_pull_array_length(ndr, &r->in.local_machine));
 
26769
                        if (ndr_get_array_length(ndr, &r->in.local_machine) > ndr_get_array_size(ndr, &r->in.local_machine)) {
 
26770
                                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.local_machine), ndr_get_array_length(ndr, &r->in.local_machine));
 
26771
                        }
 
26772
                        NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.local_machine), sizeof(uint16_t)));
 
26773
                        NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.local_machine, ndr_get_array_length(ndr, &r->in.local_machine), sizeof(uint16_t), CH_UTF16));
 
26774
                        NDR_PULL_SET_MEM_CTX(ndr, _mem_save_local_machine_0, 0);
 
26775
                }
 
26776
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.printer_local));
 
26777
                NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_notify_options));
 
26778
                if (_ptr_notify_options) {
 
26779
                        NDR_PULL_ALLOC(ndr, r->in.notify_options);
 
26780
                } else {
 
26781
                        r->in.notify_options = NULL;
 
26782
                }
 
26783
                if (r->in.notify_options) {
 
26784
                        _mem_save_notify_options_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
26785
                        NDR_PULL_SET_MEM_CTX(ndr, r->in.notify_options, 0);
 
26786
                        NDR_CHECK(ndr_pull_spoolss_NotifyOption(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.notify_options));
 
26787
                        NDR_PULL_SET_MEM_CTX(ndr, _mem_save_notify_options_0, 0);
 
26788
                }
 
26789
        }
 
26790
        if (flags & NDR_OUT) {
 
26791
                NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
 
26792
        }
 
26793
        return NDR_ERR_SUCCESS;
 
26794
}
 
26795
 
 
26796
_PUBLIC_ void ndr_print_spoolss_RemoteFindFirstPrinterChangeNotifyEx(struct ndr_print *ndr, const char *name, int flags, const struct spoolss_RemoteFindFirstPrinterChangeNotifyEx *r)
 
26797
{
 
26798
        ndr_print_struct(ndr, name, "spoolss_RemoteFindFirstPrinterChangeNotifyEx");
 
26799
        ndr->depth++;
 
26800
        if (flags & NDR_SET_VALUES) {
 
26801
                ndr->flags |= LIBNDR_PRINT_SET_VALUES;
 
26802
        }
 
26803
        if (flags & NDR_IN) {
 
26804
                ndr_print_struct(ndr, "in", "spoolss_RemoteFindFirstPrinterChangeNotifyEx");
 
26805
                ndr->depth++;
 
26806
                ndr_print_ptr(ndr, "handle", r->in.handle);
 
26807
                ndr->depth++;
 
26808
                ndr_print_policy_handle(ndr, "handle", r->in.handle);
 
26809
                ndr->depth--;
 
26810
                ndr_print_spoolss_PrinterChangeFlags(ndr, "flags", r->in.flags);
 
26811
                ndr_print_uint32(ndr, "options", r->in.options);
 
26812
                ndr_print_ptr(ndr, "local_machine", r->in.local_machine);
 
26813
                ndr->depth++;
 
26814
                if (r->in.local_machine) {
 
26815
                        ndr_print_string(ndr, "local_machine", r->in.local_machine);
 
26816
                }
 
26817
                ndr->depth--;
 
26818
                ndr_print_uint32(ndr, "printer_local", r->in.printer_local);
 
26819
                ndr_print_ptr(ndr, "notify_options", r->in.notify_options);
 
26820
                ndr->depth++;
 
26821
                if (r->in.notify_options) {
 
26822
                        ndr_print_spoolss_NotifyOption(ndr, "notify_options", r->in.notify_options);
 
26823
                }
 
26824
                ndr->depth--;
 
26825
                ndr->depth--;
 
26826
        }
 
26827
        if (flags & NDR_OUT) {
 
26828
                ndr_print_struct(ndr, "out", "spoolss_RemoteFindFirstPrinterChangeNotifyEx");
 
26829
                ndr->depth++;
 
26830
                ndr_print_WERROR(ndr, "result", r->out.result);
 
26831
                ndr->depth--;
 
26832
        }
 
26833
        ndr->depth--;
 
26834
}
 
26835
 
 
26836
static enum ndr_err_code ndr_push_spoolss_RouterReplyPrinterEx(struct ndr_push *ndr, int flags, const struct spoolss_RouterReplyPrinterEx *r)
 
26837
{
 
26838
        if (flags & NDR_IN) {
 
26839
                if (r->in.handle == NULL) {
 
26840
                        return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
 
26841
                }
 
26842
                NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
 
26843
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.color));
 
26844
                NDR_CHECK(ndr_push_spoolss_PrinterChangeFlags(ndr, NDR_SCALARS, r->in.flags));
 
26845
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.reply_type));
 
26846
                NDR_CHECK(ndr_push_set_switch_value(ndr, &r->in.info, r->in.reply_type));
 
26847
                NDR_CHECK(ndr_push_spoolss_ReplyPrinterInfo(ndr, NDR_SCALARS|NDR_BUFFERS, &r->in.info));
 
26848
        }
 
26849
        if (flags & NDR_OUT) {
 
26850
                if (r->out.reply_result == NULL) {
 
26851
                        return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
 
26852
                }
 
26853
                NDR_CHECK(ndr_push_spoolss_PrinterNotifyFlags(ndr, NDR_SCALARS, *r->out.reply_result));
 
26854
                NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
 
26855
        }
 
26856
        return NDR_ERR_SUCCESS;
 
26857
}
 
26858
 
 
26859
static enum ndr_err_code ndr_pull_spoolss_RouterReplyPrinterEx(struct ndr_pull *ndr, int flags, struct spoolss_RouterReplyPrinterEx *r)
 
26860
{
 
26861
        TALLOC_CTX *_mem_save_handle_0;
 
26862
        TALLOC_CTX *_mem_save_reply_result_0;
 
26863
        if (flags & NDR_IN) {
 
26864
                ZERO_STRUCT(r->out);
 
26865
 
 
26866
                if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
 
26867
                        NDR_PULL_ALLOC(ndr, r->in.handle);
 
26868
                }
 
26869
                _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
26870
                NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
 
26871
                NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
 
26872
                NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
 
26873
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.color));
 
26874
                NDR_CHECK(ndr_pull_spoolss_PrinterChangeFlags(ndr, NDR_SCALARS, &r->in.flags));
 
26875
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.reply_type));
 
26876
                NDR_CHECK(ndr_pull_set_switch_value(ndr, &r->in.info, r->in.reply_type));
 
26877
                NDR_CHECK(ndr_pull_spoolss_ReplyPrinterInfo(ndr, NDR_SCALARS|NDR_BUFFERS, &r->in.info));
 
26878
                NDR_PULL_ALLOC(ndr, r->out.reply_result);
 
26879
                ZERO_STRUCTP(r->out.reply_result);
 
26880
        }
 
26881
        if (flags & NDR_OUT) {
 
26882
                if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
 
26883
                        NDR_PULL_ALLOC(ndr, r->out.reply_result);
 
26884
                }
 
26885
                _mem_save_reply_result_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
26886
                NDR_PULL_SET_MEM_CTX(ndr, r->out.reply_result, LIBNDR_FLAG_REF_ALLOC);
 
26887
                NDR_CHECK(ndr_pull_spoolss_PrinterNotifyFlags(ndr, NDR_SCALARS, r->out.reply_result));
 
26888
                NDR_PULL_SET_MEM_CTX(ndr, _mem_save_reply_result_0, LIBNDR_FLAG_REF_ALLOC);
 
26889
                NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
 
26890
        }
 
26891
        return NDR_ERR_SUCCESS;
 
26892
}
 
26893
 
 
26894
_PUBLIC_ void ndr_print_spoolss_RouterReplyPrinterEx(struct ndr_print *ndr, const char *name, int flags, const struct spoolss_RouterReplyPrinterEx *r)
 
26895
{
 
26896
        ndr_print_struct(ndr, name, "spoolss_RouterReplyPrinterEx");
 
26897
        ndr->depth++;
 
26898
        if (flags & NDR_SET_VALUES) {
 
26899
                ndr->flags |= LIBNDR_PRINT_SET_VALUES;
 
26900
        }
 
26901
        if (flags & NDR_IN) {
 
26902
                ndr_print_struct(ndr, "in", "spoolss_RouterReplyPrinterEx");
 
26903
                ndr->depth++;
 
26904
                ndr_print_ptr(ndr, "handle", r->in.handle);
 
26905
                ndr->depth++;
 
26906
                ndr_print_policy_handle(ndr, "handle", r->in.handle);
 
26907
                ndr->depth--;
 
26908
                ndr_print_uint32(ndr, "color", r->in.color);
 
26909
                ndr_print_spoolss_PrinterChangeFlags(ndr, "flags", r->in.flags);
 
26910
                ndr_print_uint32(ndr, "reply_type", r->in.reply_type);
 
26911
                ndr_print_set_switch_value(ndr, &r->in.info, r->in.reply_type);
 
26912
                ndr_print_spoolss_ReplyPrinterInfo(ndr, "info", &r->in.info);
 
26913
                ndr->depth--;
 
26914
        }
 
26915
        if (flags & NDR_OUT) {
 
26916
                ndr_print_struct(ndr, "out", "spoolss_RouterReplyPrinterEx");
 
26917
                ndr->depth++;
 
26918
                ndr_print_ptr(ndr, "reply_result", r->out.reply_result);
 
26919
                ndr->depth++;
 
26920
                ndr_print_spoolss_PrinterNotifyFlags(ndr, "reply_result", *r->out.reply_result);
 
26921
                ndr->depth--;
 
26922
                ndr_print_WERROR(ndr, "result", r->out.result);
 
26923
                ndr->depth--;
 
26924
        }
 
26925
        ndr->depth--;
 
26926
}
 
26927
 
 
26928
_PUBLIC_ enum ndr_err_code ndr_push_spoolss_RouterRefreshPrinterChangeNotify(struct ndr_push *ndr, int flags, const struct spoolss_RouterRefreshPrinterChangeNotify *r)
 
26929
{
 
26930
        if (flags & NDR_IN) {
 
26931
                if (r->in.handle == NULL) {
 
26932
                        return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
 
26933
                }
 
26934
                NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
 
26935
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.change_low));
 
26936
                NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.options));
 
26937
                if (r->in.options) {
 
26938
                        NDR_CHECK(ndr_push_spoolss_NotifyOption(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.options));
 
26939
                }
 
26940
        }
 
26941
        if (flags & NDR_OUT) {
 
26942
                if (r->out.info == NULL) {
 
26943
                        return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
 
26944
                }
 
26945
                NDR_CHECK(ndr_push_unique_ptr(ndr, *r->out.info));
 
26946
                if (*r->out.info) {
 
26947
                        NDR_CHECK(ndr_push_spoolss_NotifyInfo(ndr, NDR_SCALARS|NDR_BUFFERS, *r->out.info));
 
26948
                }
 
26949
                NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
 
26950
        }
 
26951
        return NDR_ERR_SUCCESS;
 
26952
}
 
26953
 
 
26954
_PUBLIC_ enum ndr_err_code ndr_pull_spoolss_RouterRefreshPrinterChangeNotify(struct ndr_pull *ndr, int flags, struct spoolss_RouterRefreshPrinterChangeNotify *r)
 
26955
{
 
26956
        uint32_t _ptr_options;
 
26957
        uint32_t _ptr_info;
 
26958
        TALLOC_CTX *_mem_save_handle_0;
 
26959
        TALLOC_CTX *_mem_save_options_0;
 
26960
        TALLOC_CTX *_mem_save_info_0;
 
26961
        TALLOC_CTX *_mem_save_info_1;
 
26962
        if (flags & NDR_IN) {
 
26963
                ZERO_STRUCT(r->out);
 
26964
 
 
26965
                if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
 
26966
                        NDR_PULL_ALLOC(ndr, r->in.handle);
 
26967
                }
 
26968
                _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
26969
                NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
 
26970
                NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
 
26971
                NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
 
26972
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.change_low));
 
26973
                NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_options));
 
26974
                if (_ptr_options) {
 
26975
                        NDR_PULL_ALLOC(ndr, r->in.options);
 
26976
                } else {
 
26977
                        r->in.options = NULL;
 
26978
                }
 
26979
                if (r->in.options) {
 
26980
                        _mem_save_options_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
26981
                        NDR_PULL_SET_MEM_CTX(ndr, r->in.options, 0);
 
26982
                        NDR_CHECK(ndr_pull_spoolss_NotifyOption(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.options));
 
26983
                        NDR_PULL_SET_MEM_CTX(ndr, _mem_save_options_0, 0);
 
26984
                }
 
26985
                NDR_PULL_ALLOC(ndr, r->out.info);
 
26986
                ZERO_STRUCTP(r->out.info);
 
26987
        }
 
26988
        if (flags & NDR_OUT) {
 
26989
                if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
 
26990
                        NDR_PULL_ALLOC(ndr, r->out.info);
 
26991
                }
 
26992
                _mem_save_info_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
26993
                NDR_PULL_SET_MEM_CTX(ndr, r->out.info, LIBNDR_FLAG_REF_ALLOC);
 
26994
                NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_info));
 
26995
                if (_ptr_info) {
 
26996
                        NDR_PULL_ALLOC(ndr, *r->out.info);
 
26997
                } else {
 
26998
                        *r->out.info = NULL;
 
26999
                }
 
27000
                if (*r->out.info) {
 
27001
                        _mem_save_info_1 = NDR_PULL_GET_MEM_CTX(ndr);
 
27002
                        NDR_PULL_SET_MEM_CTX(ndr, *r->out.info, 0);
 
27003
                        NDR_CHECK(ndr_pull_spoolss_NotifyInfo(ndr, NDR_SCALARS|NDR_BUFFERS, *r->out.info));
 
27004
                        NDR_PULL_SET_MEM_CTX(ndr, _mem_save_info_1, 0);
 
27005
                }
 
27006
                NDR_PULL_SET_MEM_CTX(ndr, _mem_save_info_0, LIBNDR_FLAG_REF_ALLOC);
 
27007
                NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
 
27008
        }
 
27009
        return NDR_ERR_SUCCESS;
 
27010
}
 
27011
 
 
27012
_PUBLIC_ void ndr_print_spoolss_RouterRefreshPrinterChangeNotify(struct ndr_print *ndr, const char *name, int flags, const struct spoolss_RouterRefreshPrinterChangeNotify *r)
 
27013
{
 
27014
        ndr_print_struct(ndr, name, "spoolss_RouterRefreshPrinterChangeNotify");
 
27015
        ndr->depth++;
 
27016
        if (flags & NDR_SET_VALUES) {
 
27017
                ndr->flags |= LIBNDR_PRINT_SET_VALUES;
 
27018
        }
 
27019
        if (flags & NDR_IN) {
 
27020
                ndr_print_struct(ndr, "in", "spoolss_RouterRefreshPrinterChangeNotify");
 
27021
                ndr->depth++;
 
27022
                ndr_print_ptr(ndr, "handle", r->in.handle);
 
27023
                ndr->depth++;
 
27024
                ndr_print_policy_handle(ndr, "handle", r->in.handle);
 
27025
                ndr->depth--;
 
27026
                ndr_print_uint32(ndr, "change_low", r->in.change_low);
 
27027
                ndr_print_ptr(ndr, "options", r->in.options);
 
27028
                ndr->depth++;
 
27029
                if (r->in.options) {
 
27030
                        ndr_print_spoolss_NotifyOption(ndr, "options", r->in.options);
 
27031
                }
 
27032
                ndr->depth--;
 
27033
                ndr->depth--;
 
27034
        }
 
27035
        if (flags & NDR_OUT) {
 
27036
                ndr_print_struct(ndr, "out", "spoolss_RouterRefreshPrinterChangeNotify");
 
27037
                ndr->depth++;
 
27038
                ndr_print_ptr(ndr, "info", r->out.info);
 
27039
                ndr->depth++;
 
27040
                ndr_print_ptr(ndr, "info", *r->out.info);
 
27041
                ndr->depth++;
 
27042
                if (*r->out.info) {
 
27043
                        ndr_print_spoolss_NotifyInfo(ndr, "info", *r->out.info);
 
27044
                }
 
27045
                ndr->depth--;
 
27046
                ndr->depth--;
 
27047
                ndr_print_WERROR(ndr, "result", r->out.result);
 
27048
                ndr->depth--;
 
27049
        }
 
27050
        ndr->depth--;
 
27051
}
 
27052
 
 
27053
static enum ndr_err_code ndr_push_spoolss_44(struct ndr_push *ndr, int flags, const struct spoolss_44 *r)
 
27054
{
 
27055
        if (flags & NDR_IN) {
 
27056
        }
 
27057
        if (flags & NDR_OUT) {
 
27058
                NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
 
27059
        }
 
27060
        return NDR_ERR_SUCCESS;
 
27061
}
 
27062
 
 
27063
static enum ndr_err_code ndr_pull_spoolss_44(struct ndr_pull *ndr, int flags, struct spoolss_44 *r)
 
27064
{
 
27065
        if (flags & NDR_IN) {
 
27066
        }
 
27067
        if (flags & NDR_OUT) {
 
27068
                NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
 
27069
        }
 
27070
        return NDR_ERR_SUCCESS;
 
27071
}
 
27072
 
 
27073
_PUBLIC_ void ndr_print_spoolss_44(struct ndr_print *ndr, const char *name, int flags, const struct spoolss_44 *r)
 
27074
{
 
27075
        ndr_print_struct(ndr, name, "spoolss_44");
 
27076
        ndr->depth++;
 
27077
        if (flags & NDR_SET_VALUES) {
 
27078
                ndr->flags |= LIBNDR_PRINT_SET_VALUES;
 
27079
        }
 
27080
        if (flags & NDR_IN) {
 
27081
                ndr_print_struct(ndr, "in", "spoolss_44");
 
27082
                ndr->depth++;
 
27083
                ndr->depth--;
 
27084
        }
 
27085
        if (flags & NDR_OUT) {
 
27086
                ndr_print_struct(ndr, "out", "spoolss_44");
 
27087
                ndr->depth++;
 
27088
                ndr_print_WERROR(ndr, "result", r->out.result);
 
27089
                ndr->depth--;
 
27090
        }
 
27091
        ndr->depth--;
 
27092
}
 
27093
 
 
27094
_PUBLIC_ enum ndr_err_code ndr_push_spoolss_OpenPrinterEx(struct ndr_push *ndr, int flags, const struct spoolss_OpenPrinterEx *r)
 
27095
{
 
27096
        if (flags & NDR_IN) {
 
27097
                NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.printername));
 
27098
                if (r->in.printername) {
 
27099
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.printername, CH_UTF16)));
 
27100
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0));
 
27101
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.printername, CH_UTF16)));
 
27102
                        NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.printername, ndr_charset_length(r->in.printername, CH_UTF16), sizeof(uint16_t), CH_UTF16));
 
27103
                }
 
27104
                NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.datatype));
 
27105
                if (r->in.datatype) {
 
27106
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.datatype, CH_UTF16)));
 
27107
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0));
 
27108
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.datatype, CH_UTF16)));
 
27109
                        NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.datatype, ndr_charset_length(r->in.datatype, CH_UTF16), sizeof(uint16_t), CH_UTF16));
 
27110
                }
 
27111
                NDR_CHECK(ndr_push_spoolss_DevmodeContainer(ndr, NDR_SCALARS|NDR_BUFFERS, &r->in.devmode_ctr));
 
27112
                NDR_CHECK(ndr_push_spoolss_AccessRights(ndr, NDR_SCALARS, r->in.access_mask));
 
27113
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.level));
 
27114
                NDR_CHECK(ndr_push_set_switch_value(ndr, &r->in.userlevel, r->in.level));
 
27115
                NDR_CHECK(ndr_push_spoolss_UserLevel(ndr, NDR_SCALARS|NDR_BUFFERS, &r->in.userlevel));
 
27116
        }
 
27117
        if (flags & NDR_OUT) {
 
27118
                if (r->out.handle == NULL) {
 
27119
                        return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
 
27120
                }
 
27121
                NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->out.handle));
 
27122
                NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
 
27123
        }
 
27124
        return NDR_ERR_SUCCESS;
 
27125
}
 
27126
 
 
27127
_PUBLIC_ enum ndr_err_code ndr_pull_spoolss_OpenPrinterEx(struct ndr_pull *ndr, int flags, struct spoolss_OpenPrinterEx *r)
 
27128
{
 
27129
        uint32_t _ptr_printername;
 
27130
        uint32_t _ptr_datatype;
 
27131
        TALLOC_CTX *_mem_save_printername_0;
 
27132
        TALLOC_CTX *_mem_save_datatype_0;
 
27133
        TALLOC_CTX *_mem_save_handle_0;
 
27134
        if (flags & NDR_IN) {
 
27135
                ZERO_STRUCT(r->out);
 
27136
 
 
27137
                NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_printername));
 
27138
                if (_ptr_printername) {
 
27139
                        NDR_PULL_ALLOC(ndr, r->in.printername);
 
27140
                } else {
 
27141
                        r->in.printername = NULL;
 
27142
                }
 
27143
                if (r->in.printername) {
 
27144
                        _mem_save_printername_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
27145
                        NDR_PULL_SET_MEM_CTX(ndr, r->in.printername, 0);
 
27146
                        NDR_CHECK(ndr_pull_array_size(ndr, &r->in.printername));
 
27147
                        NDR_CHECK(ndr_pull_array_length(ndr, &r->in.printername));
 
27148
                        if (ndr_get_array_length(ndr, &r->in.printername) > ndr_get_array_size(ndr, &r->in.printername)) {
 
27149
                                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.printername), ndr_get_array_length(ndr, &r->in.printername));
 
27150
                        }
 
27151
                        NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.printername), sizeof(uint16_t)));
 
27152
                        NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.printername, ndr_get_array_length(ndr, &r->in.printername), sizeof(uint16_t), CH_UTF16));
 
27153
                        NDR_PULL_SET_MEM_CTX(ndr, _mem_save_printername_0, 0);
 
27154
                }
 
27155
                NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_datatype));
 
27156
                if (_ptr_datatype) {
 
27157
                        NDR_PULL_ALLOC(ndr, r->in.datatype);
 
27158
                } else {
 
27159
                        r->in.datatype = NULL;
 
27160
                }
 
27161
                if (r->in.datatype) {
 
27162
                        _mem_save_datatype_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
27163
                        NDR_PULL_SET_MEM_CTX(ndr, r->in.datatype, 0);
 
27164
                        NDR_CHECK(ndr_pull_array_size(ndr, &r->in.datatype));
 
27165
                        NDR_CHECK(ndr_pull_array_length(ndr, &r->in.datatype));
 
27166
                        if (ndr_get_array_length(ndr, &r->in.datatype) > ndr_get_array_size(ndr, &r->in.datatype)) {
 
27167
                                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.datatype), ndr_get_array_length(ndr, &r->in.datatype));
 
27168
                        }
 
27169
                        NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.datatype), sizeof(uint16_t)));
 
27170
                        NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.datatype, ndr_get_array_length(ndr, &r->in.datatype), sizeof(uint16_t), CH_UTF16));
 
27171
                        NDR_PULL_SET_MEM_CTX(ndr, _mem_save_datatype_0, 0);
 
27172
                }
 
27173
                NDR_CHECK(ndr_pull_spoolss_DevmodeContainer(ndr, NDR_SCALARS|NDR_BUFFERS, &r->in.devmode_ctr));
 
27174
                NDR_CHECK(ndr_pull_spoolss_AccessRights(ndr, NDR_SCALARS, &r->in.access_mask));
 
27175
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.level));
 
27176
                NDR_CHECK(ndr_pull_set_switch_value(ndr, &r->in.userlevel, r->in.level));
 
27177
                NDR_CHECK(ndr_pull_spoolss_UserLevel(ndr, NDR_SCALARS|NDR_BUFFERS, &r->in.userlevel));
 
27178
                NDR_PULL_ALLOC(ndr, r->out.handle);
 
27179
                ZERO_STRUCTP(r->out.handle);
 
27180
        }
 
27181
        if (flags & NDR_OUT) {
 
27182
                if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
 
27183
                        NDR_PULL_ALLOC(ndr, r->out.handle);
 
27184
                }
 
27185
                _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
27186
                NDR_PULL_SET_MEM_CTX(ndr, r->out.handle, LIBNDR_FLAG_REF_ALLOC);
 
27187
                NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->out.handle));
 
27188
                NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
 
27189
                NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
 
27190
        }
 
27191
        return NDR_ERR_SUCCESS;
 
27192
}
 
27193
 
 
27194
_PUBLIC_ void ndr_print_spoolss_OpenPrinterEx(struct ndr_print *ndr, const char *name, int flags, const struct spoolss_OpenPrinterEx *r)
 
27195
{
 
27196
        ndr_print_struct(ndr, name, "spoolss_OpenPrinterEx");
 
27197
        ndr->depth++;
 
27198
        if (flags & NDR_SET_VALUES) {
 
27199
                ndr->flags |= LIBNDR_PRINT_SET_VALUES;
 
27200
        }
 
27201
        if (flags & NDR_IN) {
 
27202
                ndr_print_struct(ndr, "in", "spoolss_OpenPrinterEx");
 
27203
                ndr->depth++;
 
27204
                ndr_print_ptr(ndr, "printername", r->in.printername);
 
27205
                ndr->depth++;
 
27206
                if (r->in.printername) {
 
27207
                        ndr_print_string(ndr, "printername", r->in.printername);
 
27208
                }
 
27209
                ndr->depth--;
 
27210
                ndr_print_ptr(ndr, "datatype", r->in.datatype);
 
27211
                ndr->depth++;
 
27212
                if (r->in.datatype) {
 
27213
                        ndr_print_string(ndr, "datatype", r->in.datatype);
 
27214
                }
 
27215
                ndr->depth--;
 
27216
                ndr_print_spoolss_DevmodeContainer(ndr, "devmode_ctr", &r->in.devmode_ctr);
 
27217
                ndr_print_spoolss_AccessRights(ndr, "access_mask", r->in.access_mask);
 
27218
                ndr_print_uint32(ndr, "level", r->in.level);
 
27219
                ndr_print_set_switch_value(ndr, &r->in.userlevel, r->in.level);
 
27220
                ndr_print_spoolss_UserLevel(ndr, "userlevel", &r->in.userlevel);
 
27221
                ndr->depth--;
 
27222
        }
 
27223
        if (flags & NDR_OUT) {
 
27224
                ndr_print_struct(ndr, "out", "spoolss_OpenPrinterEx");
 
27225
                ndr->depth++;
 
27226
                ndr_print_ptr(ndr, "handle", r->out.handle);
 
27227
                ndr->depth++;
 
27228
                ndr_print_policy_handle(ndr, "handle", r->out.handle);
 
27229
                ndr->depth--;
 
27230
                ndr_print_WERROR(ndr, "result", r->out.result);
 
27231
                ndr->depth--;
 
27232
        }
 
27233
        ndr->depth--;
 
27234
}
 
27235
 
 
27236
static enum ndr_err_code ndr_push_spoolss_AddPrinterEx(struct ndr_push *ndr, int flags, const struct spoolss_AddPrinterEx *r)
 
27237
{
 
27238
        if (flags & NDR_IN) {
 
27239
                NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.server));
 
27240
                if (r->in.server) {
 
27241
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.server, CH_UTF16)));
 
27242
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0));
 
27243
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.server, CH_UTF16)));
 
27244
                        NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.server, ndr_charset_length(r->in.server, CH_UTF16), sizeof(uint16_t), CH_UTF16));
 
27245
                }
 
27246
                if (r->in.info_ctr == NULL) {
 
27247
                        return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
 
27248
                }
 
27249
                NDR_CHECK(ndr_push_spoolss_SetPrinterInfoCtr(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.info_ctr));
 
27250
                if (r->in.devmode_ctr == NULL) {
 
27251
                        return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
 
27252
                }
 
27253
                NDR_CHECK(ndr_push_spoolss_DevmodeContainer(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.devmode_ctr));
 
27254
                if (r->in.secdesc_ctr == NULL) {
 
27255
                        return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
 
27256
                }
 
27257
                NDR_CHECK(ndr_push_sec_desc_buf(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.secdesc_ctr));
 
27258
                if (r->in.userlevel_ctr == NULL) {
 
27259
                        return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
 
27260
                }
 
27261
                NDR_CHECK(ndr_push_spoolss_UserLevelCtr(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.userlevel_ctr));
 
27262
        }
 
27263
        if (flags & NDR_OUT) {
 
27264
                if (r->out.handle == NULL) {
 
27265
                        return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
 
27266
                }
 
27267
                NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->out.handle));
 
27268
                NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
 
27269
        }
 
27270
        return NDR_ERR_SUCCESS;
 
27271
}
 
27272
 
 
27273
static enum ndr_err_code ndr_pull_spoolss_AddPrinterEx(struct ndr_pull *ndr, int flags, struct spoolss_AddPrinterEx *r)
 
27274
{
 
27275
        uint32_t _ptr_server;
 
27276
        TALLOC_CTX *_mem_save_server_0;
 
27277
        TALLOC_CTX *_mem_save_info_ctr_0;
 
27278
        TALLOC_CTX *_mem_save_devmode_ctr_0;
 
27279
        TALLOC_CTX *_mem_save_secdesc_ctr_0;
 
27280
        TALLOC_CTX *_mem_save_userlevel_ctr_0;
 
27281
        TALLOC_CTX *_mem_save_handle_0;
 
27282
        if (flags & NDR_IN) {
 
27283
                ZERO_STRUCT(r->out);
 
27284
 
 
27285
                NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_server));
 
27286
                if (_ptr_server) {
 
27287
                        NDR_PULL_ALLOC(ndr, r->in.server);
 
27288
                } else {
 
27289
                        r->in.server = NULL;
 
27290
                }
 
27291
                if (r->in.server) {
 
27292
                        _mem_save_server_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
27293
                        NDR_PULL_SET_MEM_CTX(ndr, r->in.server, 0);
 
27294
                        NDR_CHECK(ndr_pull_array_size(ndr, &r->in.server));
 
27295
                        NDR_CHECK(ndr_pull_array_length(ndr, &r->in.server));
 
27296
                        if (ndr_get_array_length(ndr, &r->in.server) > ndr_get_array_size(ndr, &r->in.server)) {
 
27297
                                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.server), ndr_get_array_length(ndr, &r->in.server));
 
27298
                        }
 
27299
                        NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.server), sizeof(uint16_t)));
 
27300
                        NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.server, ndr_get_array_length(ndr, &r->in.server), sizeof(uint16_t), CH_UTF16));
 
27301
                        NDR_PULL_SET_MEM_CTX(ndr, _mem_save_server_0, 0);
 
27302
                }
 
27303
                if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
 
27304
                        NDR_PULL_ALLOC(ndr, r->in.info_ctr);
 
27305
                }
 
27306
                _mem_save_info_ctr_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
27307
                NDR_PULL_SET_MEM_CTX(ndr, r->in.info_ctr, LIBNDR_FLAG_REF_ALLOC);
 
27308
                NDR_CHECK(ndr_pull_spoolss_SetPrinterInfoCtr(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.info_ctr));
 
27309
                NDR_PULL_SET_MEM_CTX(ndr, _mem_save_info_ctr_0, LIBNDR_FLAG_REF_ALLOC);
 
27310
                if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
 
27311
                        NDR_PULL_ALLOC(ndr, r->in.devmode_ctr);
 
27312
                }
 
27313
                _mem_save_devmode_ctr_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
27314
                NDR_PULL_SET_MEM_CTX(ndr, r->in.devmode_ctr, LIBNDR_FLAG_REF_ALLOC);
 
27315
                NDR_CHECK(ndr_pull_spoolss_DevmodeContainer(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.devmode_ctr));
 
27316
                NDR_PULL_SET_MEM_CTX(ndr, _mem_save_devmode_ctr_0, LIBNDR_FLAG_REF_ALLOC);
 
27317
                if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
 
27318
                        NDR_PULL_ALLOC(ndr, r->in.secdesc_ctr);
 
27319
                }
 
27320
                _mem_save_secdesc_ctr_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
27321
                NDR_PULL_SET_MEM_CTX(ndr, r->in.secdesc_ctr, LIBNDR_FLAG_REF_ALLOC);
 
27322
                NDR_CHECK(ndr_pull_sec_desc_buf(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.secdesc_ctr));
 
27323
                NDR_PULL_SET_MEM_CTX(ndr, _mem_save_secdesc_ctr_0, LIBNDR_FLAG_REF_ALLOC);
 
27324
                if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
 
27325
                        NDR_PULL_ALLOC(ndr, r->in.userlevel_ctr);
 
27326
                }
 
27327
                _mem_save_userlevel_ctr_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
27328
                NDR_PULL_SET_MEM_CTX(ndr, r->in.userlevel_ctr, LIBNDR_FLAG_REF_ALLOC);
 
27329
                NDR_CHECK(ndr_pull_spoolss_UserLevelCtr(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.userlevel_ctr));
 
27330
                NDR_PULL_SET_MEM_CTX(ndr, _mem_save_userlevel_ctr_0, LIBNDR_FLAG_REF_ALLOC);
 
27331
                NDR_PULL_ALLOC(ndr, r->out.handle);
 
27332
                ZERO_STRUCTP(r->out.handle);
 
27333
        }
 
27334
        if (flags & NDR_OUT) {
 
27335
                if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
 
27336
                        NDR_PULL_ALLOC(ndr, r->out.handle);
 
27337
                }
 
27338
                _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
27339
                NDR_PULL_SET_MEM_CTX(ndr, r->out.handle, LIBNDR_FLAG_REF_ALLOC);
 
27340
                NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->out.handle));
 
27341
                NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
 
27342
                NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
 
27343
        }
 
27344
        return NDR_ERR_SUCCESS;
 
27345
}
 
27346
 
 
27347
_PUBLIC_ void ndr_print_spoolss_AddPrinterEx(struct ndr_print *ndr, const char *name, int flags, const struct spoolss_AddPrinterEx *r)
 
27348
{
 
27349
        ndr_print_struct(ndr, name, "spoolss_AddPrinterEx");
 
27350
        ndr->depth++;
 
27351
        if (flags & NDR_SET_VALUES) {
 
27352
                ndr->flags |= LIBNDR_PRINT_SET_VALUES;
 
27353
        }
 
27354
        if (flags & NDR_IN) {
 
27355
                ndr_print_struct(ndr, "in", "spoolss_AddPrinterEx");
 
27356
                ndr->depth++;
 
27357
                ndr_print_ptr(ndr, "server", r->in.server);
 
27358
                ndr->depth++;
 
27359
                if (r->in.server) {
 
27360
                        ndr_print_string(ndr, "server", r->in.server);
 
27361
                }
 
27362
                ndr->depth--;
 
27363
                ndr_print_ptr(ndr, "info_ctr", r->in.info_ctr);
 
27364
                ndr->depth++;
 
27365
                ndr_print_spoolss_SetPrinterInfoCtr(ndr, "info_ctr", r->in.info_ctr);
 
27366
                ndr->depth--;
 
27367
                ndr_print_ptr(ndr, "devmode_ctr", r->in.devmode_ctr);
 
27368
                ndr->depth++;
 
27369
                ndr_print_spoolss_DevmodeContainer(ndr, "devmode_ctr", r->in.devmode_ctr);
 
27370
                ndr->depth--;
 
27371
                ndr_print_ptr(ndr, "secdesc_ctr", r->in.secdesc_ctr);
 
27372
                ndr->depth++;
 
27373
                ndr_print_sec_desc_buf(ndr, "secdesc_ctr", r->in.secdesc_ctr);
 
27374
                ndr->depth--;
 
27375
                ndr_print_ptr(ndr, "userlevel_ctr", r->in.userlevel_ctr);
 
27376
                ndr->depth++;
 
27377
                ndr_print_spoolss_UserLevelCtr(ndr, "userlevel_ctr", r->in.userlevel_ctr);
 
27378
                ndr->depth--;
 
27379
                ndr->depth--;
 
27380
        }
 
27381
        if (flags & NDR_OUT) {
 
27382
                ndr_print_struct(ndr, "out", "spoolss_AddPrinterEx");
 
27383
                ndr->depth++;
 
27384
                ndr_print_ptr(ndr, "handle", r->out.handle);
 
27385
                ndr->depth++;
 
27386
                ndr_print_policy_handle(ndr, "handle", r->out.handle);
 
27387
                ndr->depth--;
 
27388
                ndr_print_WERROR(ndr, "result", r->out.result);
 
27389
                ndr->depth--;
 
27390
        }
 
27391
        ndr->depth--;
 
27392
}
 
27393
 
 
27394
static enum ndr_err_code ndr_push_spoolss_47(struct ndr_push *ndr, int flags, const struct spoolss_47 *r)
 
27395
{
 
27396
        if (flags & NDR_IN) {
 
27397
        }
 
27398
        if (flags & NDR_OUT) {
 
27399
                NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
 
27400
        }
 
27401
        return NDR_ERR_SUCCESS;
 
27402
}
 
27403
 
 
27404
static enum ndr_err_code ndr_pull_spoolss_47(struct ndr_pull *ndr, int flags, struct spoolss_47 *r)
 
27405
{
 
27406
        if (flags & NDR_IN) {
 
27407
        }
 
27408
        if (flags & NDR_OUT) {
 
27409
                NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
 
27410
        }
 
27411
        return NDR_ERR_SUCCESS;
 
27412
}
 
27413
 
 
27414
_PUBLIC_ void ndr_print_spoolss_47(struct ndr_print *ndr, const char *name, int flags, const struct spoolss_47 *r)
 
27415
{
 
27416
        ndr_print_struct(ndr, name, "spoolss_47");
 
27417
        ndr->depth++;
 
27418
        if (flags & NDR_SET_VALUES) {
 
27419
                ndr->flags |= LIBNDR_PRINT_SET_VALUES;
 
27420
        }
 
27421
        if (flags & NDR_IN) {
 
27422
                ndr_print_struct(ndr, "in", "spoolss_47");
 
27423
                ndr->depth++;
 
27424
                ndr->depth--;
 
27425
        }
 
27426
        if (flags & NDR_OUT) {
 
27427
                ndr_print_struct(ndr, "out", "spoolss_47");
 
27428
                ndr->depth++;
 
27429
                ndr_print_WERROR(ndr, "result", r->out.result);
 
27430
                ndr->depth--;
 
27431
        }
 
27432
        ndr->depth--;
 
27433
}
 
27434
 
 
27435
static enum ndr_err_code ndr_push_spoolss_EnumPrinterData(struct ndr_push *ndr, int flags, const struct spoolss_EnumPrinterData *r)
 
27436
{
 
27437
        if (flags & NDR_IN) {
 
27438
                if (r->in.handle == NULL) {
 
27439
                        return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
 
27440
                }
 
27441
                NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
 
27442
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.enum_index));
 
27443
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.value_offered));
 
27444
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.data_offered));
 
27445
        }
 
27446
        if (flags & NDR_OUT) {
 
27447
                NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, r->in.value_offered / 2));
 
27448
                NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->out.value_name, r->in.value_offered / 2, sizeof(uint16_t), CH_UTF16));
 
27449
                if (r->out.value_needed == NULL) {
 
27450
                        return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
 
27451
                }
 
27452
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.value_needed));
 
27453
                if (r->out.type == NULL) {
 
27454
                        return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
 
27455
                }
 
27456
                NDR_CHECK(ndr_push_winreg_Type(ndr, NDR_SCALARS, *r->out.type));
 
27457
                {
 
27458
                        uint32_t _flags_save_uint8 = ndr->flags;
 
27459
                        ndr_set_flags(&ndr->flags, LIBNDR_PRINT_ARRAY_HEX);
 
27460
                        if (r->out.data == NULL) {
 
27461
                                return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
 
27462
                        }
 
27463
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, r->in.data_offered));
 
27464
                        NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->out.data, r->in.data_offered));
 
27465
                        ndr->flags = _flags_save_uint8;
 
27466
                }
 
27467
                if (r->out.data_needed == NULL) {
 
27468
                        return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
 
27469
                }
 
27470
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.data_needed));
 
27471
                NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
 
27472
        }
 
27473
        return NDR_ERR_SUCCESS;
 
27474
}
 
27475
 
 
27476
static enum ndr_err_code ndr_pull_spoolss_EnumPrinterData(struct ndr_pull *ndr, int flags, struct spoolss_EnumPrinterData *r)
 
27477
{
 
27478
        TALLOC_CTX *_mem_save_handle_0;
 
27479
        TALLOC_CTX *_mem_save_value_needed_0;
 
27480
        TALLOC_CTX *_mem_save_type_0;
 
27481
        TALLOC_CTX *_mem_save_data_needed_0;
 
27482
        if (flags & NDR_IN) {
 
27483
                ZERO_STRUCT(r->out);
 
27484
 
 
27485
                if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
 
27486
                        NDR_PULL_ALLOC(ndr, r->in.handle);
 
27487
                }
 
27488
                _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
27489
                NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
 
27490
                NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
 
27491
                NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
 
27492
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.enum_index));
 
27493
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.value_offered));
 
27494
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.data_offered));
 
27495
                NDR_PULL_ALLOC(ndr, r->out.value_needed);
 
27496
                ZERO_STRUCTP(r->out.value_needed);
 
27497
                NDR_PULL_ALLOC(ndr, r->out.type);
 
27498
                ZERO_STRUCTP(r->out.type);
 
27499
                NDR_PULL_ALLOC_N(ndr, r->out.data, r->in.data_offered);
 
27500
                memset(r->out.data, 0, (r->in.data_offered) * sizeof(*r->out.data));
 
27501
                NDR_PULL_ALLOC(ndr, r->out.data_needed);
 
27502
                ZERO_STRUCTP(r->out.data_needed);
 
27503
        }
 
27504
        if (flags & NDR_OUT) {
 
27505
                NDR_CHECK(ndr_pull_array_size(ndr, &r->out.value_name));
 
27506
                NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->out.value_name, ndr_get_array_size(ndr, &r->out.value_name), sizeof(uint16_t), CH_UTF16));
 
27507
                if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
 
27508
                        NDR_PULL_ALLOC(ndr, r->out.value_needed);
 
27509
                }
 
27510
                _mem_save_value_needed_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
27511
                NDR_PULL_SET_MEM_CTX(ndr, r->out.value_needed, LIBNDR_FLAG_REF_ALLOC);
 
27512
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.value_needed));
 
27513
                NDR_PULL_SET_MEM_CTX(ndr, _mem_save_value_needed_0, LIBNDR_FLAG_REF_ALLOC);
 
27514
                if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
 
27515
                        NDR_PULL_ALLOC(ndr, r->out.type);
 
27516
                }
 
27517
                _mem_save_type_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
27518
                NDR_PULL_SET_MEM_CTX(ndr, r->out.type, LIBNDR_FLAG_REF_ALLOC);
 
27519
                NDR_CHECK(ndr_pull_winreg_Type(ndr, NDR_SCALARS, r->out.type));
 
27520
                NDR_PULL_SET_MEM_CTX(ndr, _mem_save_type_0, LIBNDR_FLAG_REF_ALLOC);
 
27521
                {
 
27522
                        uint32_t _flags_save_uint8 = ndr->flags;
 
27523
                        ndr_set_flags(&ndr->flags, LIBNDR_PRINT_ARRAY_HEX);
 
27524
                        NDR_CHECK(ndr_pull_array_size(ndr, &r->out.data));
 
27525
                        if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
 
27526
                                NDR_PULL_ALLOC_N(ndr, r->out.data, ndr_get_array_size(ndr, &r->out.data));
 
27527
                        }
 
27528
                        NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->out.data, ndr_get_array_size(ndr, &r->out.data)));
 
27529
                        ndr->flags = _flags_save_uint8;
 
27530
                }
 
27531
                if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
 
27532
                        NDR_PULL_ALLOC(ndr, r->out.data_needed);
 
27533
                }
 
27534
                _mem_save_data_needed_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
27535
                NDR_PULL_SET_MEM_CTX(ndr, r->out.data_needed, LIBNDR_FLAG_REF_ALLOC);
 
27536
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.data_needed));
 
27537
                NDR_PULL_SET_MEM_CTX(ndr, _mem_save_data_needed_0, LIBNDR_FLAG_REF_ALLOC);
 
27538
                NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
 
27539
                if (r->out.value_name) {
 
27540
                        NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->out.value_name, r->in.value_offered / 2));
 
27541
                }
 
27542
                if (r->out.data) {
 
27543
                        NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->out.data, r->in.data_offered));
 
27544
                }
 
27545
        }
 
27546
        return NDR_ERR_SUCCESS;
 
27547
}
 
27548
 
 
27549
_PUBLIC_ void ndr_print_spoolss_EnumPrinterData(struct ndr_print *ndr, const char *name, int flags, const struct spoolss_EnumPrinterData *r)
 
27550
{
 
27551
        ndr_print_struct(ndr, name, "spoolss_EnumPrinterData");
 
27552
        ndr->depth++;
 
27553
        if (flags & NDR_SET_VALUES) {
 
27554
                ndr->flags |= LIBNDR_PRINT_SET_VALUES;
 
27555
        }
 
27556
        if (flags & NDR_IN) {
 
27557
                ndr_print_struct(ndr, "in", "spoolss_EnumPrinterData");
 
27558
                ndr->depth++;
 
27559
                ndr_print_ptr(ndr, "handle", r->in.handle);
 
27560
                ndr->depth++;
 
27561
                ndr_print_policy_handle(ndr, "handle", r->in.handle);
 
27562
                ndr->depth--;
 
27563
                ndr_print_uint32(ndr, "enum_index", r->in.enum_index);
 
27564
                ndr_print_uint32(ndr, "value_offered", r->in.value_offered);
 
27565
                ndr_print_uint32(ndr, "data_offered", r->in.data_offered);
 
27566
                ndr->depth--;
 
27567
        }
 
27568
        if (flags & NDR_OUT) {
 
27569
                ndr_print_struct(ndr, "out", "spoolss_EnumPrinterData");
 
27570
                ndr->depth++;
 
27571
                ndr_print_string(ndr, "value_name", r->out.value_name);
 
27572
                ndr_print_ptr(ndr, "value_needed", r->out.value_needed);
 
27573
                ndr->depth++;
 
27574
                ndr_print_uint32(ndr, "value_needed", *r->out.value_needed);
 
27575
                ndr->depth--;
 
27576
                ndr_print_ptr(ndr, "type", r->out.type);
 
27577
                ndr->depth++;
 
27578
                ndr_print_winreg_Type(ndr, "type", *r->out.type);
 
27579
                ndr->depth--;
 
27580
                ndr_print_ptr(ndr, "data", r->out.data);
 
27581
                ndr->depth++;
 
27582
                ndr_print_array_uint8(ndr, "data", r->out.data, r->in.data_offered);
 
27583
                ndr->depth--;
 
27584
                ndr_print_ptr(ndr, "data_needed", r->out.data_needed);
 
27585
                ndr->depth++;
 
27586
                ndr_print_uint32(ndr, "data_needed", *r->out.data_needed);
 
27587
                ndr->depth--;
 
27588
                ndr_print_WERROR(ndr, "result", r->out.result);
 
27589
                ndr->depth--;
 
27590
        }
 
27591
        ndr->depth--;
 
27592
}
 
27593
 
 
27594
static enum ndr_err_code ndr_push_spoolss_DeletePrinterData(struct ndr_push *ndr, int flags, const struct spoolss_DeletePrinterData *r)
 
27595
{
 
27596
        if (flags & NDR_IN) {
 
27597
                if (r->in.handle == NULL) {
 
27598
                        return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
 
27599
                }
 
27600
                NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
 
27601
                NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.value_name, CH_UTF16)));
 
27602
                NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0));
 
27603
                NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.value_name, CH_UTF16)));
 
27604
                NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.value_name, ndr_charset_length(r->in.value_name, CH_UTF16), sizeof(uint16_t), CH_UTF16));
 
27605
        }
 
27606
        if (flags & NDR_OUT) {
 
27607
                NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
 
27608
        }
 
27609
        return NDR_ERR_SUCCESS;
 
27610
}
 
27611
 
 
27612
static enum ndr_err_code ndr_pull_spoolss_DeletePrinterData(struct ndr_pull *ndr, int flags, struct spoolss_DeletePrinterData *r)
 
27613
{
 
27614
        TALLOC_CTX *_mem_save_handle_0;
 
27615
        if (flags & NDR_IN) {
 
27616
                if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
 
27617
                        NDR_PULL_ALLOC(ndr, r->in.handle);
 
27618
                }
 
27619
                _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
27620
                NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
 
27621
                NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
 
27622
                NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
 
27623
                NDR_CHECK(ndr_pull_array_size(ndr, &r->in.value_name));
 
27624
                NDR_CHECK(ndr_pull_array_length(ndr, &r->in.value_name));
 
27625
                if (ndr_get_array_length(ndr, &r->in.value_name) > ndr_get_array_size(ndr, &r->in.value_name)) {
 
27626
                        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.value_name), ndr_get_array_length(ndr, &r->in.value_name));
 
27627
                }
 
27628
                NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.value_name), sizeof(uint16_t)));
 
27629
                NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.value_name, ndr_get_array_length(ndr, &r->in.value_name), sizeof(uint16_t), CH_UTF16));
 
27630
        }
 
27631
        if (flags & NDR_OUT) {
 
27632
                NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
 
27633
        }
 
27634
        return NDR_ERR_SUCCESS;
 
27635
}
 
27636
 
 
27637
_PUBLIC_ void ndr_print_spoolss_DeletePrinterData(struct ndr_print *ndr, const char *name, int flags, const struct spoolss_DeletePrinterData *r)
 
27638
{
 
27639
        ndr_print_struct(ndr, name, "spoolss_DeletePrinterData");
 
27640
        ndr->depth++;
 
27641
        if (flags & NDR_SET_VALUES) {
 
27642
                ndr->flags |= LIBNDR_PRINT_SET_VALUES;
 
27643
        }
 
27644
        if (flags & NDR_IN) {
 
27645
                ndr_print_struct(ndr, "in", "spoolss_DeletePrinterData");
 
27646
                ndr->depth++;
 
27647
                ndr_print_ptr(ndr, "handle", r->in.handle);
 
27648
                ndr->depth++;
 
27649
                ndr_print_policy_handle(ndr, "handle", r->in.handle);
 
27650
                ndr->depth--;
 
27651
                ndr_print_string(ndr, "value_name", r->in.value_name);
 
27652
                ndr->depth--;
 
27653
        }
 
27654
        if (flags & NDR_OUT) {
 
27655
                ndr_print_struct(ndr, "out", "spoolss_DeletePrinterData");
 
27656
                ndr->depth++;
 
27657
                ndr_print_WERROR(ndr, "result", r->out.result);
 
27658
                ndr->depth--;
 
27659
        }
 
27660
        ndr->depth--;
 
27661
}
 
27662
 
 
27663
static enum ndr_err_code ndr_push_spoolss_4a(struct ndr_push *ndr, int flags, const struct spoolss_4a *r)
 
27664
{
 
27665
        if (flags & NDR_IN) {
 
27666
        }
 
27667
        if (flags & NDR_OUT) {
 
27668
                NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
 
27669
        }
 
27670
        return NDR_ERR_SUCCESS;
 
27671
}
 
27672
 
 
27673
static enum ndr_err_code ndr_pull_spoolss_4a(struct ndr_pull *ndr, int flags, struct spoolss_4a *r)
 
27674
{
 
27675
        if (flags & NDR_IN) {
 
27676
        }
 
27677
        if (flags & NDR_OUT) {
 
27678
                NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
 
27679
        }
 
27680
        return NDR_ERR_SUCCESS;
 
27681
}
 
27682
 
 
27683
_PUBLIC_ void ndr_print_spoolss_4a(struct ndr_print *ndr, const char *name, int flags, const struct spoolss_4a *r)
 
27684
{
 
27685
        ndr_print_struct(ndr, name, "spoolss_4a");
 
27686
        ndr->depth++;
 
27687
        if (flags & NDR_SET_VALUES) {
 
27688
                ndr->flags |= LIBNDR_PRINT_SET_VALUES;
 
27689
        }
 
27690
        if (flags & NDR_IN) {
 
27691
                ndr_print_struct(ndr, "in", "spoolss_4a");
 
27692
                ndr->depth++;
 
27693
                ndr->depth--;
 
27694
        }
 
27695
        if (flags & NDR_OUT) {
 
27696
                ndr_print_struct(ndr, "out", "spoolss_4a");
 
27697
                ndr->depth++;
 
27698
                ndr_print_WERROR(ndr, "result", r->out.result);
 
27699
                ndr->depth--;
 
27700
        }
 
27701
        ndr->depth--;
 
27702
}
 
27703
 
 
27704
static enum ndr_err_code ndr_push_spoolss_4b(struct ndr_push *ndr, int flags, const struct spoolss_4b *r)
 
27705
{
 
27706
        if (flags & NDR_IN) {
 
27707
        }
 
27708
        if (flags & NDR_OUT) {
 
27709
                NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
 
27710
        }
 
27711
        return NDR_ERR_SUCCESS;
 
27712
}
 
27713
 
 
27714
static enum ndr_err_code ndr_pull_spoolss_4b(struct ndr_pull *ndr, int flags, struct spoolss_4b *r)
 
27715
{
 
27716
        if (flags & NDR_IN) {
 
27717
        }
 
27718
        if (flags & NDR_OUT) {
 
27719
                NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
 
27720
        }
 
27721
        return NDR_ERR_SUCCESS;
 
27722
}
 
27723
 
 
27724
_PUBLIC_ void ndr_print_spoolss_4b(struct ndr_print *ndr, const char *name, int flags, const struct spoolss_4b *r)
 
27725
{
 
27726
        ndr_print_struct(ndr, name, "spoolss_4b");
 
27727
        ndr->depth++;
 
27728
        if (flags & NDR_SET_VALUES) {
 
27729
                ndr->flags |= LIBNDR_PRINT_SET_VALUES;
 
27730
        }
 
27731
        if (flags & NDR_IN) {
 
27732
                ndr_print_struct(ndr, "in", "spoolss_4b");
 
27733
                ndr->depth++;
 
27734
                ndr->depth--;
 
27735
        }
 
27736
        if (flags & NDR_OUT) {
 
27737
                ndr_print_struct(ndr, "out", "spoolss_4b");
 
27738
                ndr->depth++;
 
27739
                ndr_print_WERROR(ndr, "result", r->out.result);
 
27740
                ndr->depth--;
 
27741
        }
 
27742
        ndr->depth--;
 
27743
}
 
27744
 
 
27745
static enum ndr_err_code ndr_push_spoolss_4c(struct ndr_push *ndr, int flags, const struct spoolss_4c *r)
 
27746
{
 
27747
        if (flags & NDR_IN) {
 
27748
        }
 
27749
        if (flags & NDR_OUT) {
 
27750
                NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
 
27751
        }
 
27752
        return NDR_ERR_SUCCESS;
 
27753
}
 
27754
 
 
27755
static enum ndr_err_code ndr_pull_spoolss_4c(struct ndr_pull *ndr, int flags, struct spoolss_4c *r)
 
27756
{
 
27757
        if (flags & NDR_IN) {
 
27758
        }
 
27759
        if (flags & NDR_OUT) {
 
27760
                NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
 
27761
        }
 
27762
        return NDR_ERR_SUCCESS;
 
27763
}
 
27764
 
 
27765
_PUBLIC_ void ndr_print_spoolss_4c(struct ndr_print *ndr, const char *name, int flags, const struct spoolss_4c *r)
 
27766
{
 
27767
        ndr_print_struct(ndr, name, "spoolss_4c");
 
27768
        ndr->depth++;
 
27769
        if (flags & NDR_SET_VALUES) {
 
27770
                ndr->flags |= LIBNDR_PRINT_SET_VALUES;
 
27771
        }
 
27772
        if (flags & NDR_IN) {
 
27773
                ndr_print_struct(ndr, "in", "spoolss_4c");
 
27774
                ndr->depth++;
 
27775
                ndr->depth--;
 
27776
        }
 
27777
        if (flags & NDR_OUT) {
 
27778
                ndr_print_struct(ndr, "out", "spoolss_4c");
 
27779
                ndr->depth++;
 
27780
                ndr_print_WERROR(ndr, "result", r->out.result);
 
27781
                ndr->depth--;
 
27782
        }
 
27783
        ndr->depth--;
 
27784
}
 
27785
 
 
27786
static enum ndr_err_code ndr_push_spoolss_SetPrinterDataEx(struct ndr_push *ndr, int flags, const struct spoolss_SetPrinterDataEx *r)
 
27787
{
 
27788
        if (flags & NDR_IN) {
 
27789
                if (r->in.handle == NULL) {
 
27790
                        return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
 
27791
                }
 
27792
                NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
 
27793
                NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.key_name, CH_UTF16)));
 
27794
                NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0));
 
27795
                NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.key_name, CH_UTF16)));
 
27796
                NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.key_name, ndr_charset_length(r->in.key_name, CH_UTF16), sizeof(uint16_t), CH_UTF16));
 
27797
                NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.value_name, CH_UTF16)));
 
27798
                NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0));
 
27799
                NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.value_name, CH_UTF16)));
 
27800
                NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.value_name, ndr_charset_length(r->in.value_name, CH_UTF16), sizeof(uint16_t), CH_UTF16));
 
27801
                NDR_CHECK(ndr_push_winreg_Type(ndr, NDR_SCALARS, r->in.type));
 
27802
                if (r->in.data == NULL) {
 
27803
                        return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
 
27804
                }
 
27805
                NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, r->in.offered));
 
27806
                NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->in.data, r->in.offered));
 
27807
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.offered));
 
27808
        }
 
27809
        if (flags & NDR_OUT) {
 
27810
                NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
 
27811
        }
 
27812
        return NDR_ERR_SUCCESS;
 
27813
}
 
27814
 
 
27815
static enum ndr_err_code ndr_pull_spoolss_SetPrinterDataEx(struct ndr_pull *ndr, int flags, struct spoolss_SetPrinterDataEx *r)
 
27816
{
 
27817
        TALLOC_CTX *_mem_save_handle_0;
 
27818
        if (flags & NDR_IN) {
 
27819
                if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
 
27820
                        NDR_PULL_ALLOC(ndr, r->in.handle);
 
27821
                }
 
27822
                _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
27823
                NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
 
27824
                NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
 
27825
                NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
 
27826
                NDR_CHECK(ndr_pull_array_size(ndr, &r->in.key_name));
 
27827
                NDR_CHECK(ndr_pull_array_length(ndr, &r->in.key_name));
 
27828
                if (ndr_get_array_length(ndr, &r->in.key_name) > ndr_get_array_size(ndr, &r->in.key_name)) {
 
27829
                        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.key_name), ndr_get_array_length(ndr, &r->in.key_name));
 
27830
                }
 
27831
                NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.key_name), sizeof(uint16_t)));
 
27832
                NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.key_name, ndr_get_array_length(ndr, &r->in.key_name), sizeof(uint16_t), CH_UTF16));
 
27833
                NDR_CHECK(ndr_pull_array_size(ndr, &r->in.value_name));
 
27834
                NDR_CHECK(ndr_pull_array_length(ndr, &r->in.value_name));
 
27835
                if (ndr_get_array_length(ndr, &r->in.value_name) > ndr_get_array_size(ndr, &r->in.value_name)) {
 
27836
                        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.value_name), ndr_get_array_length(ndr, &r->in.value_name));
 
27837
                }
 
27838
                NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.value_name), sizeof(uint16_t)));
 
27839
                NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.value_name, ndr_get_array_length(ndr, &r->in.value_name), sizeof(uint16_t), CH_UTF16));
 
27840
                NDR_CHECK(ndr_pull_winreg_Type(ndr, NDR_SCALARS, &r->in.type));
 
27841
                NDR_CHECK(ndr_pull_array_size(ndr, &r->in.data));
 
27842
                if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
 
27843
                        NDR_PULL_ALLOC_N(ndr, r->in.data, ndr_get_array_size(ndr, &r->in.data));
 
27844
                }
 
27845
                NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->in.data, ndr_get_array_size(ndr, &r->in.data)));
 
27846
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.offered));
 
27847
                if (r->in.data) {
 
27848
                        NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->in.data, r->in.offered));
 
27849
                }
 
27850
        }
 
27851
        if (flags & NDR_OUT) {
 
27852
                NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
 
27853
        }
 
27854
        return NDR_ERR_SUCCESS;
 
27855
}
 
27856
 
 
27857
_PUBLIC_ void ndr_print_spoolss_SetPrinterDataEx(struct ndr_print *ndr, const char *name, int flags, const struct spoolss_SetPrinterDataEx *r)
 
27858
{
 
27859
        ndr_print_struct(ndr, name, "spoolss_SetPrinterDataEx");
 
27860
        ndr->depth++;
 
27861
        if (flags & NDR_SET_VALUES) {
 
27862
                ndr->flags |= LIBNDR_PRINT_SET_VALUES;
 
27863
        }
 
27864
        if (flags & NDR_IN) {
 
27865
                ndr_print_struct(ndr, "in", "spoolss_SetPrinterDataEx");
 
27866
                ndr->depth++;
 
27867
                ndr_print_ptr(ndr, "handle", r->in.handle);
 
27868
                ndr->depth++;
 
27869
                ndr_print_policy_handle(ndr, "handle", r->in.handle);
 
27870
                ndr->depth--;
 
27871
                ndr_print_string(ndr, "key_name", r->in.key_name);
 
27872
                ndr_print_string(ndr, "value_name", r->in.value_name);
 
27873
                ndr_print_winreg_Type(ndr, "type", r->in.type);
 
27874
                ndr_print_ptr(ndr, "data", r->in.data);
 
27875
                ndr->depth++;
 
27876
                ndr_print_array_uint8(ndr, "data", r->in.data, r->in.offered);
 
27877
                ndr->depth--;
 
27878
                ndr_print_uint32(ndr, "offered", r->in.offered);
 
27879
                ndr->depth--;
 
27880
        }
 
27881
        if (flags & NDR_OUT) {
 
27882
                ndr_print_struct(ndr, "out", "spoolss_SetPrinterDataEx");
 
27883
                ndr->depth++;
 
27884
                ndr_print_WERROR(ndr, "result", r->out.result);
 
27885
                ndr->depth--;
 
27886
        }
 
27887
        ndr->depth--;
 
27888
}
 
27889
 
 
27890
static enum ndr_err_code ndr_push_spoolss_GetPrinterDataEx(struct ndr_push *ndr, int flags, const struct spoolss_GetPrinterDataEx *r)
 
27891
{
 
27892
        if (flags & NDR_IN) {
 
27893
                if (r->in.handle == NULL) {
 
27894
                        return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
 
27895
                }
 
27896
                NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
 
27897
                NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.key_name, CH_UTF16)));
 
27898
                NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0));
 
27899
                NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.key_name, CH_UTF16)));
 
27900
                NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.key_name, ndr_charset_length(r->in.key_name, CH_UTF16), sizeof(uint16_t), CH_UTF16));
 
27901
                NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.value_name, CH_UTF16)));
 
27902
                NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0));
 
27903
                NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.value_name, CH_UTF16)));
 
27904
                NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.value_name, ndr_charset_length(r->in.value_name, CH_UTF16), sizeof(uint16_t), CH_UTF16));
 
27905
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.offered));
 
27906
        }
 
27907
        if (flags & NDR_OUT) {
 
27908
                if (r->out.type == NULL) {
 
27909
                        return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
 
27910
                }
 
27911
                NDR_CHECK(ndr_push_winreg_Type(ndr, NDR_SCALARS, *r->out.type));
 
27912
                if (r->out.data == NULL) {
 
27913
                        return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
 
27914
                }
 
27915
                NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, r->in.offered));
 
27916
                NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->out.data, r->in.offered));
 
27917
                if (r->out.needed == NULL) {
 
27918
                        return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
 
27919
                }
 
27920
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.needed));
 
27921
                NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
 
27922
        }
 
27923
        return NDR_ERR_SUCCESS;
 
27924
}
 
27925
 
 
27926
static enum ndr_err_code ndr_pull_spoolss_GetPrinterDataEx(struct ndr_pull *ndr, int flags, struct spoolss_GetPrinterDataEx *r)
 
27927
{
 
27928
        TALLOC_CTX *_mem_save_handle_0;
 
27929
        TALLOC_CTX *_mem_save_type_0;
 
27930
        TALLOC_CTX *_mem_save_needed_0;
 
27931
        if (flags & NDR_IN) {
 
27932
                ZERO_STRUCT(r->out);
 
27933
 
 
27934
                if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
 
27935
                        NDR_PULL_ALLOC(ndr, r->in.handle);
 
27936
                }
 
27937
                _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
27938
                NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
 
27939
                NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
 
27940
                NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
 
27941
                NDR_CHECK(ndr_pull_array_size(ndr, &r->in.key_name));
 
27942
                NDR_CHECK(ndr_pull_array_length(ndr, &r->in.key_name));
 
27943
                if (ndr_get_array_length(ndr, &r->in.key_name) > ndr_get_array_size(ndr, &r->in.key_name)) {
 
27944
                        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.key_name), ndr_get_array_length(ndr, &r->in.key_name));
 
27945
                }
 
27946
                NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.key_name), sizeof(uint16_t)));
 
27947
                NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.key_name, ndr_get_array_length(ndr, &r->in.key_name), sizeof(uint16_t), CH_UTF16));
 
27948
                NDR_CHECK(ndr_pull_array_size(ndr, &r->in.value_name));
 
27949
                NDR_CHECK(ndr_pull_array_length(ndr, &r->in.value_name));
 
27950
                if (ndr_get_array_length(ndr, &r->in.value_name) > ndr_get_array_size(ndr, &r->in.value_name)) {
 
27951
                        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.value_name), ndr_get_array_length(ndr, &r->in.value_name));
 
27952
                }
 
27953
                NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.value_name), sizeof(uint16_t)));
 
27954
                NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.value_name, ndr_get_array_length(ndr, &r->in.value_name), sizeof(uint16_t), CH_UTF16));
 
27955
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.offered));
 
27956
                NDR_PULL_ALLOC(ndr, r->out.type);
 
27957
                ZERO_STRUCTP(r->out.type);
 
27958
                NDR_PULL_ALLOC_N(ndr, r->out.data, r->in.offered);
 
27959
                memset(r->out.data, 0, (r->in.offered) * sizeof(*r->out.data));
 
27960
                NDR_PULL_ALLOC(ndr, r->out.needed);
 
27961
                ZERO_STRUCTP(r->out.needed);
 
27962
        }
 
27963
        if (flags & NDR_OUT) {
 
27964
                if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
 
27965
                        NDR_PULL_ALLOC(ndr, r->out.type);
 
27966
                }
 
27967
                _mem_save_type_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
27968
                NDR_PULL_SET_MEM_CTX(ndr, r->out.type, LIBNDR_FLAG_REF_ALLOC);
 
27969
                NDR_CHECK(ndr_pull_winreg_Type(ndr, NDR_SCALARS, r->out.type));
 
27970
                NDR_PULL_SET_MEM_CTX(ndr, _mem_save_type_0, LIBNDR_FLAG_REF_ALLOC);
 
27971
                NDR_CHECK(ndr_pull_array_size(ndr, &r->out.data));
 
27972
                if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
 
27973
                        NDR_PULL_ALLOC_N(ndr, r->out.data, ndr_get_array_size(ndr, &r->out.data));
 
27974
                }
 
27975
                NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->out.data, ndr_get_array_size(ndr, &r->out.data)));
 
27976
                if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
 
27977
                        NDR_PULL_ALLOC(ndr, r->out.needed);
 
27978
                }
 
27979
                _mem_save_needed_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
27980
                NDR_PULL_SET_MEM_CTX(ndr, r->out.needed, LIBNDR_FLAG_REF_ALLOC);
 
27981
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.needed));
 
27982
                NDR_PULL_SET_MEM_CTX(ndr, _mem_save_needed_0, LIBNDR_FLAG_REF_ALLOC);
 
27983
                NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
 
27984
                if (r->out.data) {
 
27985
                        NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->out.data, r->in.offered));
 
27986
                }
 
27987
        }
 
27988
        return NDR_ERR_SUCCESS;
 
27989
}
 
27990
 
 
27991
_PUBLIC_ void ndr_print_spoolss_GetPrinterDataEx(struct ndr_print *ndr, const char *name, int flags, const struct spoolss_GetPrinterDataEx *r)
 
27992
{
 
27993
        ndr_print_struct(ndr, name, "spoolss_GetPrinterDataEx");
 
27994
        ndr->depth++;
 
27995
        if (flags & NDR_SET_VALUES) {
 
27996
                ndr->flags |= LIBNDR_PRINT_SET_VALUES;
 
27997
        }
 
27998
        if (flags & NDR_IN) {
 
27999
                ndr_print_struct(ndr, "in", "spoolss_GetPrinterDataEx");
 
28000
                ndr->depth++;
 
28001
                ndr_print_ptr(ndr, "handle", r->in.handle);
 
28002
                ndr->depth++;
 
28003
                ndr_print_policy_handle(ndr, "handle", r->in.handle);
 
28004
                ndr->depth--;
 
28005
                ndr_print_string(ndr, "key_name", r->in.key_name);
 
28006
                ndr_print_string(ndr, "value_name", r->in.value_name);
 
28007
                ndr_print_uint32(ndr, "offered", r->in.offered);
 
28008
                ndr->depth--;
 
28009
        }
 
28010
        if (flags & NDR_OUT) {
 
28011
                ndr_print_struct(ndr, "out", "spoolss_GetPrinterDataEx");
 
28012
                ndr->depth++;
 
28013
                ndr_print_ptr(ndr, "type", r->out.type);
 
28014
                ndr->depth++;
 
28015
                ndr_print_winreg_Type(ndr, "type", *r->out.type);
 
28016
                ndr->depth--;
 
28017
                ndr_print_ptr(ndr, "data", r->out.data);
 
28018
                ndr->depth++;
 
28019
                ndr_print_array_uint8(ndr, "data", r->out.data, r->in.offered);
 
28020
                ndr->depth--;
 
28021
                ndr_print_ptr(ndr, "needed", r->out.needed);
 
28022
                ndr->depth++;
 
28023
                ndr_print_uint32(ndr, "needed", *r->out.needed);
 
28024
                ndr->depth--;
 
28025
                ndr_print_WERROR(ndr, "result", r->out.result);
 
28026
                ndr->depth--;
 
28027
        }
 
28028
        ndr->depth--;
 
28029
}
 
28030
 
 
28031
_PUBLIC_ enum ndr_err_code ndr_push__spoolss_EnumPrinterDataEx(struct ndr_push *ndr, int flags, const struct _spoolss_EnumPrinterDataEx *r)
 
28032
{
 
28033
        if (flags & NDR_IN) {
 
28034
                if (r->in.handle == NULL) {
 
28035
                        return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
 
28036
                }
 
28037
                NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
 
28038
                NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.key_name, CH_UTF16)));
 
28039
                NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0));
 
28040
                NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.key_name, CH_UTF16)));
 
28041
                NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.key_name, ndr_charset_length(r->in.key_name, CH_UTF16), sizeof(uint16_t), CH_UTF16));
 
28042
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.offered));
 
28043
        }
 
28044
        if (flags & NDR_OUT) {
 
28045
                NDR_CHECK(ndr_push_DATA_BLOB(ndr, NDR_SCALARS, r->out.info));
 
28046
                if (r->out.needed == NULL) {
 
28047
                        return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
 
28048
                }
 
28049
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.needed));
 
28050
                if (r->out.count == NULL) {
 
28051
                        return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
 
28052
                }
 
28053
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.count));
 
28054
                NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
 
28055
        }
 
28056
        return NDR_ERR_SUCCESS;
 
28057
}
 
28058
 
 
28059
_PUBLIC_ enum ndr_err_code ndr_pull__spoolss_EnumPrinterDataEx(struct ndr_pull *ndr, int flags, struct _spoolss_EnumPrinterDataEx *r)
 
28060
{
 
28061
        TALLOC_CTX *_mem_save_handle_0;
 
28062
        TALLOC_CTX *_mem_save_needed_0;
 
28063
        TALLOC_CTX *_mem_save_count_0;
 
28064
        if (flags & NDR_IN) {
 
28065
                ZERO_STRUCT(r->out);
 
28066
 
 
28067
                if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
 
28068
                        NDR_PULL_ALLOC(ndr, r->in.handle);
 
28069
                }
 
28070
                _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
28071
                NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
 
28072
                NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
 
28073
                NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
 
28074
                NDR_CHECK(ndr_pull_array_size(ndr, &r->in.key_name));
 
28075
                NDR_CHECK(ndr_pull_array_length(ndr, &r->in.key_name));
 
28076
                if (ndr_get_array_length(ndr, &r->in.key_name) > ndr_get_array_size(ndr, &r->in.key_name)) {
 
28077
                        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.key_name), ndr_get_array_length(ndr, &r->in.key_name));
 
28078
                }
 
28079
                NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.key_name), sizeof(uint16_t)));
 
28080
                NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.key_name, ndr_get_array_length(ndr, &r->in.key_name), sizeof(uint16_t), CH_UTF16));
 
28081
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.offered));
 
28082
                NDR_PULL_ALLOC(ndr, r->out.needed);
 
28083
                ZERO_STRUCTP(r->out.needed);
 
28084
                NDR_PULL_ALLOC(ndr, r->out.count);
 
28085
                ZERO_STRUCTP(r->out.count);
 
28086
        }
 
28087
        if (flags & NDR_OUT) {
 
28088
                NDR_CHECK(ndr_pull_DATA_BLOB(ndr, NDR_SCALARS, &r->out.info));
 
28089
                if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
 
28090
                        NDR_PULL_ALLOC(ndr, r->out.needed);
 
28091
                }
 
28092
                _mem_save_needed_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
28093
                NDR_PULL_SET_MEM_CTX(ndr, r->out.needed, LIBNDR_FLAG_REF_ALLOC);
 
28094
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.needed));
 
28095
                NDR_PULL_SET_MEM_CTX(ndr, _mem_save_needed_0, LIBNDR_FLAG_REF_ALLOC);
 
28096
                if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
 
28097
                        NDR_PULL_ALLOC(ndr, r->out.count);
 
28098
                }
 
28099
                _mem_save_count_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
28100
                NDR_PULL_SET_MEM_CTX(ndr, r->out.count, LIBNDR_FLAG_REF_ALLOC);
 
28101
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.count));
 
28102
                NDR_PULL_SET_MEM_CTX(ndr, _mem_save_count_0, LIBNDR_FLAG_REF_ALLOC);
 
28103
                NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
 
28104
        }
 
28105
        return NDR_ERR_SUCCESS;
 
28106
}
 
28107
 
 
28108
_PUBLIC_ enum ndr_err_code ndr_push___spoolss_EnumPrinterDataEx(struct ndr_push *ndr, int flags, const struct __spoolss_EnumPrinterDataEx *r)
 
28109
{
 
28110
        uint32_t cntr_info_0;
 
28111
        if (flags & NDR_IN) {
 
28112
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.count));
 
28113
        }
 
28114
        if (flags & NDR_OUT) {
 
28115
                for (cntr_info_0 = 0; cntr_info_0 < r->in.count; cntr_info_0++) {
 
28116
                        NDR_CHECK(ndr_push_spoolss_PrinterEnumValues(ndr, NDR_SCALARS, &r->out.info[cntr_info_0]));
 
28117
                }
 
28118
                for (cntr_info_0 = 0; cntr_info_0 < r->in.count; cntr_info_0++) {
 
28119
                        NDR_CHECK(ndr_push_spoolss_PrinterEnumValues(ndr, NDR_BUFFERS, &r->out.info[cntr_info_0]));
 
28120
                }
 
28121
        }
 
28122
        return NDR_ERR_SUCCESS;
 
28123
}
 
28124
 
 
28125
_PUBLIC_ enum ndr_err_code ndr_pull___spoolss_EnumPrinterDataEx(struct ndr_pull *ndr, int flags, struct __spoolss_EnumPrinterDataEx *r)
 
28126
{
 
28127
        uint32_t cntr_info_0;
 
28128
        TALLOC_CTX *_mem_save_info_0;
 
28129
        if (flags & NDR_IN) {
 
28130
                ZERO_STRUCT(r->out);
 
28131
 
 
28132
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.count));
 
28133
        }
 
28134
        if (flags & NDR_OUT) {
 
28135
                NDR_PULL_ALLOC_N(ndr, r->out.info, r->in.count);
 
28136
                _mem_save_info_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
28137
                NDR_PULL_SET_MEM_CTX(ndr, r->out.info, 0);
 
28138
                for (cntr_info_0 = 0; cntr_info_0 < r->in.count; cntr_info_0++) {
 
28139
                        NDR_CHECK(ndr_pull_spoolss_PrinterEnumValues(ndr, NDR_SCALARS, &r->out.info[cntr_info_0]));
 
28140
                }
 
28141
                for (cntr_info_0 = 0; cntr_info_0 < r->in.count; cntr_info_0++) {
 
28142
                        NDR_CHECK(ndr_pull_spoolss_PrinterEnumValues(ndr, NDR_BUFFERS, &r->out.info[cntr_info_0]));
 
28143
                }
 
28144
                NDR_PULL_SET_MEM_CTX(ndr, _mem_save_info_0, 0);
 
28145
        }
 
28146
        return NDR_ERR_SUCCESS;
 
28147
}
 
28148
 
 
28149
_PUBLIC_ void ndr_print_spoolss_EnumPrinterDataEx(struct ndr_print *ndr, const char *name, int flags, const struct spoolss_EnumPrinterDataEx *r)
 
28150
{
 
28151
        uint32_t cntr_info_2;
 
28152
        ndr_print_struct(ndr, name, "spoolss_EnumPrinterDataEx");
 
28153
        ndr->depth++;
 
28154
        if (flags & NDR_SET_VALUES) {
 
28155
                ndr->flags |= LIBNDR_PRINT_SET_VALUES;
 
28156
        }
 
28157
        if (flags & NDR_IN) {
 
28158
                ndr_print_struct(ndr, "in", "spoolss_EnumPrinterDataEx");
 
28159
                ndr->depth++;
 
28160
                ndr_print_ptr(ndr, "handle", r->in.handle);
 
28161
                ndr->depth++;
 
28162
                ndr_print_policy_handle(ndr, "handle", r->in.handle);
 
28163
                ndr->depth--;
 
28164
                ndr_print_string(ndr, "key_name", r->in.key_name);
 
28165
                ndr_print_uint32(ndr, "offered", r->in.offered);
 
28166
                ndr->depth--;
 
28167
        }
 
28168
        if (flags & NDR_OUT) {
 
28169
                ndr_print_struct(ndr, "out", "spoolss_EnumPrinterDataEx");
 
28170
                ndr->depth++;
 
28171
                ndr_print_ptr(ndr, "count", r->out.count);
 
28172
                ndr->depth++;
 
28173
                ndr_print_uint32(ndr, "count", *r->out.count);
 
28174
                ndr->depth--;
 
28175
                ndr_print_ptr(ndr, "info", r->out.info);
 
28176
                ndr->depth++;
 
28177
                ndr_print_ptr(ndr, "info", *r->out.info);
 
28178
                ndr->depth++;
 
28179
                if (*r->out.info) {
 
28180
                        ndr->print(ndr, "%s: ARRAY(%d)", "info", (int)*r->out.count);
 
28181
                        ndr->depth++;
 
28182
                        for (cntr_info_2=0;cntr_info_2<*r->out.count;cntr_info_2++) {
 
28183
                                char *idx_2=NULL;
 
28184
                                if (asprintf(&idx_2, "[%d]", cntr_info_2) != -1) {
 
28185
                                        ndr_print_spoolss_PrinterEnumValues(ndr, "info", &(*r->out.info)[cntr_info_2]);
 
28186
                                        free(idx_2);
 
28187
                                }
 
28188
                        }
 
28189
                        ndr->depth--;
 
28190
                }
 
28191
                ndr->depth--;
 
28192
                ndr->depth--;
 
28193
                ndr_print_ptr(ndr, "needed", r->out.needed);
 
28194
                ndr->depth++;
 
28195
                ndr_print_uint32(ndr, "needed", *r->out.needed);
 
28196
                ndr->depth--;
 
28197
                ndr_print_WERROR(ndr, "result", r->out.result);
 
28198
                ndr->depth--;
 
28199
        }
 
28200
        ndr->depth--;
 
28201
}
 
28202
 
 
28203
_PUBLIC_ enum ndr_err_code ndr_push_spoolss_EnumPrinterKey(struct ndr_push *ndr, int flags, const struct spoolss_EnumPrinterKey *r)
 
28204
{
 
28205
        if (flags & NDR_IN) {
 
28206
                if (r->in.handle == NULL) {
 
28207
                        return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
 
28208
                }
 
28209
                NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
 
28210
                NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.key_name, CH_UTF16)));
 
28211
                NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0));
 
28212
                NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.key_name, CH_UTF16)));
 
28213
                NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.key_name, ndr_charset_length(r->in.key_name, CH_UTF16), sizeof(uint16_t), CH_UTF16));
 
28214
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.offered));
 
28215
        }
 
28216
        if (flags & NDR_OUT) {
 
28217
                if (r->out._ndr_size == NULL) {
 
28218
                        return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
 
28219
                }
 
28220
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out._ndr_size));
 
28221
                if (r->out.key_buffer == NULL) {
 
28222
                        return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
 
28223
                }
 
28224
                {
 
28225
                        struct ndr_push *_ndr_key_buffer;
 
28226
                        NDR_CHECK(ndr_push_subcontext_start(ndr, &_ndr_key_buffer, 0, *r->out._ndr_size * 2));
 
28227
                        NDR_CHECK(ndr_push_set_switch_value(_ndr_key_buffer, r->out.key_buffer, *r->out._ndr_size));
 
28228
                        NDR_CHECK(ndr_push_spoolss_KeyNames(_ndr_key_buffer, NDR_SCALARS|NDR_BUFFERS, r->out.key_buffer));
 
28229
                        NDR_CHECK(ndr_push_subcontext_end(ndr, _ndr_key_buffer, 0, *r->out._ndr_size * 2));
 
28230
                }
 
28231
                if (r->out.needed == NULL) {
 
28232
                        return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
 
28233
                }
 
28234
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.needed));
 
28235
                NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
 
28236
        }
 
28237
        return NDR_ERR_SUCCESS;
 
28238
}
 
28239
 
 
28240
_PUBLIC_ enum ndr_err_code ndr_pull_spoolss_EnumPrinterKey(struct ndr_pull *ndr, int flags, struct spoolss_EnumPrinterKey *r)
 
28241
{
 
28242
        TALLOC_CTX *_mem_save_handle_0;
 
28243
        TALLOC_CTX *_mem_save__ndr_size_0;
 
28244
        TALLOC_CTX *_mem_save_key_buffer_0;
 
28245
        TALLOC_CTX *_mem_save_needed_0;
 
28246
        if (flags & NDR_IN) {
 
28247
                ZERO_STRUCT(r->out);
 
28248
 
 
28249
                if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
 
28250
                        NDR_PULL_ALLOC(ndr, r->in.handle);
 
28251
                }
 
28252
                _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
28253
                NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
 
28254
                NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
 
28255
                NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
 
28256
                NDR_CHECK(ndr_pull_array_size(ndr, &r->in.key_name));
 
28257
                NDR_CHECK(ndr_pull_array_length(ndr, &r->in.key_name));
 
28258
                if (ndr_get_array_length(ndr, &r->in.key_name) > ndr_get_array_size(ndr, &r->in.key_name)) {
 
28259
                        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.key_name), ndr_get_array_length(ndr, &r->in.key_name));
 
28260
                }
 
28261
                NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.key_name), sizeof(uint16_t)));
 
28262
                NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.key_name, ndr_get_array_length(ndr, &r->in.key_name), sizeof(uint16_t), CH_UTF16));
 
28263
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.offered));
 
28264
                NDR_PULL_ALLOC(ndr, r->out._ndr_size);
 
28265
                ZERO_STRUCTP(r->out._ndr_size);
 
28266
                NDR_PULL_ALLOC(ndr, r->out.key_buffer);
 
28267
                ZERO_STRUCTP(r->out.key_buffer);
 
28268
                NDR_PULL_ALLOC(ndr, r->out.needed);
 
28269
                ZERO_STRUCTP(r->out.needed);
 
28270
        }
 
28271
        if (flags & NDR_OUT) {
 
28272
                if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
 
28273
                        NDR_PULL_ALLOC(ndr, r->out._ndr_size);
 
28274
                }
 
28275
                _mem_save__ndr_size_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
28276
                NDR_PULL_SET_MEM_CTX(ndr, r->out._ndr_size, LIBNDR_FLAG_REF_ALLOC);
 
28277
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out._ndr_size));
 
28278
                NDR_PULL_SET_MEM_CTX(ndr, _mem_save__ndr_size_0, LIBNDR_FLAG_REF_ALLOC);
 
28279
                if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
 
28280
                        NDR_PULL_ALLOC(ndr, r->out.key_buffer);
 
28281
                }
 
28282
                _mem_save_key_buffer_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
28283
                NDR_PULL_SET_MEM_CTX(ndr, r->out.key_buffer, LIBNDR_FLAG_REF_ALLOC);
 
28284
                {
 
28285
                        struct ndr_pull *_ndr_key_buffer;
 
28286
                        NDR_CHECK(ndr_pull_subcontext_start(ndr, &_ndr_key_buffer, 0, *r->out._ndr_size * 2));
 
28287
                        NDR_CHECK(ndr_pull_set_switch_value(_ndr_key_buffer, r->out.key_buffer, *r->out._ndr_size));
 
28288
                        NDR_CHECK(ndr_pull_spoolss_KeyNames(_ndr_key_buffer, NDR_SCALARS|NDR_BUFFERS, r->out.key_buffer));
 
28289
                        NDR_CHECK(ndr_pull_subcontext_end(ndr, _ndr_key_buffer, 0, *r->out._ndr_size * 2));
 
28290
                }
 
28291
                NDR_PULL_SET_MEM_CTX(ndr, _mem_save_key_buffer_0, LIBNDR_FLAG_REF_ALLOC);
 
28292
                if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
 
28293
                        NDR_PULL_ALLOC(ndr, r->out.needed);
 
28294
                }
 
28295
                _mem_save_needed_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
28296
                NDR_PULL_SET_MEM_CTX(ndr, r->out.needed, LIBNDR_FLAG_REF_ALLOC);
 
28297
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.needed));
 
28298
                NDR_PULL_SET_MEM_CTX(ndr, _mem_save_needed_0, LIBNDR_FLAG_REF_ALLOC);
 
28299
                NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
 
28300
        }
 
28301
        return NDR_ERR_SUCCESS;
 
28302
}
 
28303
 
 
28304
_PUBLIC_ void ndr_print_spoolss_EnumPrinterKey(struct ndr_print *ndr, const char *name, int flags, const struct spoolss_EnumPrinterKey *r)
 
28305
{
 
28306
        ndr_print_struct(ndr, name, "spoolss_EnumPrinterKey");
 
28307
        ndr->depth++;
 
28308
        if (flags & NDR_SET_VALUES) {
 
28309
                ndr->flags |= LIBNDR_PRINT_SET_VALUES;
 
28310
        }
 
28311
        if (flags & NDR_IN) {
 
28312
                ndr_print_struct(ndr, "in", "spoolss_EnumPrinterKey");
 
28313
                ndr->depth++;
 
28314
                ndr_print_ptr(ndr, "handle", r->in.handle);
 
28315
                ndr->depth++;
 
28316
                ndr_print_policy_handle(ndr, "handle", r->in.handle);
 
28317
                ndr->depth--;
 
28318
                ndr_print_string(ndr, "key_name", r->in.key_name);
 
28319
                ndr_print_uint32(ndr, "offered", r->in.offered);
 
28320
                ndr->depth--;
 
28321
        }
 
28322
        if (flags & NDR_OUT) {
 
28323
                ndr_print_struct(ndr, "out", "spoolss_EnumPrinterKey");
 
28324
                ndr->depth++;
 
28325
                ndr_print_ptr(ndr, "_ndr_size", r->out._ndr_size);
 
28326
                ndr->depth++;
 
28327
                ndr_print_uint32(ndr, "_ndr_size", *r->out._ndr_size);
 
28328
                ndr->depth--;
 
28329
                ndr_print_ptr(ndr, "key_buffer", r->out.key_buffer);
 
28330
                ndr->depth++;
 
28331
                ndr_print_set_switch_value(ndr, r->out.key_buffer, *r->out._ndr_size);
 
28332
                ndr_print_spoolss_KeyNames(ndr, "key_buffer", r->out.key_buffer);
 
28333
                ndr->depth--;
 
28334
                ndr_print_ptr(ndr, "needed", r->out.needed);
 
28335
                ndr->depth++;
 
28336
                ndr_print_uint32(ndr, "needed", *r->out.needed);
 
28337
                ndr->depth--;
 
28338
                ndr_print_WERROR(ndr, "result", r->out.result);
 
28339
                ndr->depth--;
 
28340
        }
 
28341
        ndr->depth--;
 
28342
}
 
28343
 
 
28344
static enum ndr_err_code ndr_push_spoolss_DeletePrinterDataEx(struct ndr_push *ndr, int flags, const struct spoolss_DeletePrinterDataEx *r)
 
28345
{
 
28346
        if (flags & NDR_IN) {
 
28347
                if (r->in.handle == NULL) {
 
28348
                        return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
 
28349
                }
 
28350
                NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
 
28351
                NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.key_name, CH_UTF16)));
 
28352
                NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0));
 
28353
                NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.key_name, CH_UTF16)));
 
28354
                NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.key_name, ndr_charset_length(r->in.key_name, CH_UTF16), sizeof(uint16_t), CH_UTF16));
 
28355
                NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.value_name, CH_UTF16)));
 
28356
                NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0));
 
28357
                NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.value_name, CH_UTF16)));
 
28358
                NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.value_name, ndr_charset_length(r->in.value_name, CH_UTF16), sizeof(uint16_t), CH_UTF16));
 
28359
        }
 
28360
        if (flags & NDR_OUT) {
 
28361
                NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
 
28362
        }
 
28363
        return NDR_ERR_SUCCESS;
 
28364
}
 
28365
 
 
28366
static enum ndr_err_code ndr_pull_spoolss_DeletePrinterDataEx(struct ndr_pull *ndr, int flags, struct spoolss_DeletePrinterDataEx *r)
 
28367
{
 
28368
        TALLOC_CTX *_mem_save_handle_0;
 
28369
        if (flags & NDR_IN) {
 
28370
                if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
 
28371
                        NDR_PULL_ALLOC(ndr, r->in.handle);
 
28372
                }
 
28373
                _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
28374
                NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
 
28375
                NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
 
28376
                NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
 
28377
                NDR_CHECK(ndr_pull_array_size(ndr, &r->in.key_name));
 
28378
                NDR_CHECK(ndr_pull_array_length(ndr, &r->in.key_name));
 
28379
                if (ndr_get_array_length(ndr, &r->in.key_name) > ndr_get_array_size(ndr, &r->in.key_name)) {
 
28380
                        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.key_name), ndr_get_array_length(ndr, &r->in.key_name));
 
28381
                }
 
28382
                NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.key_name), sizeof(uint16_t)));
 
28383
                NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.key_name, ndr_get_array_length(ndr, &r->in.key_name), sizeof(uint16_t), CH_UTF16));
 
28384
                NDR_CHECK(ndr_pull_array_size(ndr, &r->in.value_name));
 
28385
                NDR_CHECK(ndr_pull_array_length(ndr, &r->in.value_name));
 
28386
                if (ndr_get_array_length(ndr, &r->in.value_name) > ndr_get_array_size(ndr, &r->in.value_name)) {
 
28387
                        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.value_name), ndr_get_array_length(ndr, &r->in.value_name));
 
28388
                }
 
28389
                NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.value_name), sizeof(uint16_t)));
 
28390
                NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.value_name, ndr_get_array_length(ndr, &r->in.value_name), sizeof(uint16_t), CH_UTF16));
 
28391
        }
 
28392
        if (flags & NDR_OUT) {
 
28393
                NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
 
28394
        }
 
28395
        return NDR_ERR_SUCCESS;
 
28396
}
 
28397
 
 
28398
_PUBLIC_ void ndr_print_spoolss_DeletePrinterDataEx(struct ndr_print *ndr, const char *name, int flags, const struct spoolss_DeletePrinterDataEx *r)
 
28399
{
 
28400
        ndr_print_struct(ndr, name, "spoolss_DeletePrinterDataEx");
 
28401
        ndr->depth++;
 
28402
        if (flags & NDR_SET_VALUES) {
 
28403
                ndr->flags |= LIBNDR_PRINT_SET_VALUES;
 
28404
        }
 
28405
        if (flags & NDR_IN) {
 
28406
                ndr_print_struct(ndr, "in", "spoolss_DeletePrinterDataEx");
 
28407
                ndr->depth++;
 
28408
                ndr_print_ptr(ndr, "handle", r->in.handle);
 
28409
                ndr->depth++;
 
28410
                ndr_print_policy_handle(ndr, "handle", r->in.handle);
 
28411
                ndr->depth--;
 
28412
                ndr_print_string(ndr, "key_name", r->in.key_name);
 
28413
                ndr_print_string(ndr, "value_name", r->in.value_name);
 
28414
                ndr->depth--;
 
28415
        }
 
28416
        if (flags & NDR_OUT) {
 
28417
                ndr_print_struct(ndr, "out", "spoolss_DeletePrinterDataEx");
 
28418
                ndr->depth++;
 
28419
                ndr_print_WERROR(ndr, "result", r->out.result);
 
28420
                ndr->depth--;
 
28421
        }
 
28422
        ndr->depth--;
 
28423
}
 
28424
 
 
28425
static enum ndr_err_code ndr_push_spoolss_DeletePrinterKey(struct ndr_push *ndr, int flags, const struct spoolss_DeletePrinterKey *r)
 
28426
{
 
28427
        if (flags & NDR_IN) {
 
28428
                if (r->in.handle == NULL) {
 
28429
                        return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
 
28430
                }
 
28431
                NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
 
28432
                NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.key_name, CH_UTF16)));
 
28433
                NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0));
 
28434
                NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.key_name, CH_UTF16)));
 
28435
                NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.key_name, ndr_charset_length(r->in.key_name, CH_UTF16), sizeof(uint16_t), CH_UTF16));
 
28436
        }
 
28437
        if (flags & NDR_OUT) {
 
28438
                NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
 
28439
        }
 
28440
        return NDR_ERR_SUCCESS;
 
28441
}
 
28442
 
 
28443
static enum ndr_err_code ndr_pull_spoolss_DeletePrinterKey(struct ndr_pull *ndr, int flags, struct spoolss_DeletePrinterKey *r)
 
28444
{
 
28445
        TALLOC_CTX *_mem_save_handle_0;
 
28446
        if (flags & NDR_IN) {
 
28447
                if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
 
28448
                        NDR_PULL_ALLOC(ndr, r->in.handle);
 
28449
                }
 
28450
                _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
28451
                NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
 
28452
                NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
 
28453
                NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
 
28454
                NDR_CHECK(ndr_pull_array_size(ndr, &r->in.key_name));
 
28455
                NDR_CHECK(ndr_pull_array_length(ndr, &r->in.key_name));
 
28456
                if (ndr_get_array_length(ndr, &r->in.key_name) > ndr_get_array_size(ndr, &r->in.key_name)) {
 
28457
                        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.key_name), ndr_get_array_length(ndr, &r->in.key_name));
 
28458
                }
 
28459
                NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.key_name), sizeof(uint16_t)));
 
28460
                NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.key_name, ndr_get_array_length(ndr, &r->in.key_name), sizeof(uint16_t), CH_UTF16));
 
28461
        }
 
28462
        if (flags & NDR_OUT) {
 
28463
                NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
 
28464
        }
 
28465
        return NDR_ERR_SUCCESS;
 
28466
}
 
28467
 
 
28468
_PUBLIC_ void ndr_print_spoolss_DeletePrinterKey(struct ndr_print *ndr, const char *name, int flags, const struct spoolss_DeletePrinterKey *r)
 
28469
{
 
28470
        ndr_print_struct(ndr, name, "spoolss_DeletePrinterKey");
 
28471
        ndr->depth++;
 
28472
        if (flags & NDR_SET_VALUES) {
 
28473
                ndr->flags |= LIBNDR_PRINT_SET_VALUES;
 
28474
        }
 
28475
        if (flags & NDR_IN) {
 
28476
                ndr_print_struct(ndr, "in", "spoolss_DeletePrinterKey");
 
28477
                ndr->depth++;
 
28478
                ndr_print_ptr(ndr, "handle", r->in.handle);
 
28479
                ndr->depth++;
 
28480
                ndr_print_policy_handle(ndr, "handle", r->in.handle);
 
28481
                ndr->depth--;
 
28482
                ndr_print_string(ndr, "key_name", r->in.key_name);
 
28483
                ndr->depth--;
 
28484
        }
 
28485
        if (flags & NDR_OUT) {
 
28486
                ndr_print_struct(ndr, "out", "spoolss_DeletePrinterKey");
 
28487
                ndr->depth++;
 
28488
                ndr_print_WERROR(ndr, "result", r->out.result);
 
28489
                ndr->depth--;
 
28490
        }
 
28491
        ndr->depth--;
 
28492
}
 
28493
 
 
28494
static enum ndr_err_code ndr_push_spoolss_53(struct ndr_push *ndr, int flags, const struct spoolss_53 *r)
 
28495
{
 
28496
        if (flags & NDR_IN) {
 
28497
        }
 
28498
        if (flags & NDR_OUT) {
 
28499
                NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
 
28500
        }
 
28501
        return NDR_ERR_SUCCESS;
 
28502
}
 
28503
 
 
28504
static enum ndr_err_code ndr_pull_spoolss_53(struct ndr_pull *ndr, int flags, struct spoolss_53 *r)
 
28505
{
 
28506
        if (flags & NDR_IN) {
 
28507
        }
 
28508
        if (flags & NDR_OUT) {
 
28509
                NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
 
28510
        }
 
28511
        return NDR_ERR_SUCCESS;
 
28512
}
 
28513
 
 
28514
_PUBLIC_ void ndr_print_spoolss_53(struct ndr_print *ndr, const char *name, int flags, const struct spoolss_53 *r)
 
28515
{
 
28516
        ndr_print_struct(ndr, name, "spoolss_53");
 
28517
        ndr->depth++;
 
28518
        if (flags & NDR_SET_VALUES) {
 
28519
                ndr->flags |= LIBNDR_PRINT_SET_VALUES;
 
28520
        }
 
28521
        if (flags & NDR_IN) {
 
28522
                ndr_print_struct(ndr, "in", "spoolss_53");
 
28523
                ndr->depth++;
 
28524
                ndr->depth--;
 
28525
        }
 
28526
        if (flags & NDR_OUT) {
 
28527
                ndr_print_struct(ndr, "out", "spoolss_53");
 
28528
                ndr->depth++;
 
28529
                ndr_print_WERROR(ndr, "result", r->out.result);
 
28530
                ndr->depth--;
 
28531
        }
 
28532
        ndr->depth--;
 
28533
}
 
28534
 
 
28535
static enum ndr_err_code ndr_push_spoolss_DeletePrinterDriverEx(struct ndr_push *ndr, int flags, const struct spoolss_DeletePrinterDriverEx *r)
 
28536
{
 
28537
        if (flags & NDR_IN) {
 
28538
                NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.server));
 
28539
                if (r->in.server) {
 
28540
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.server, CH_UTF16)));
 
28541
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0));
 
28542
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.server, CH_UTF16)));
 
28543
                        NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.server, ndr_charset_length(r->in.server, CH_UTF16), sizeof(uint16_t), CH_UTF16));
 
28544
                }
 
28545
                NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.architecture, CH_UTF16)));
 
28546
                NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0));
 
28547
                NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.architecture, CH_UTF16)));
 
28548
                NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.architecture, ndr_charset_length(r->in.architecture, CH_UTF16), sizeof(uint16_t), CH_UTF16));
 
28549
                NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.driver, CH_UTF16)));
 
28550
                NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0));
 
28551
                NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.driver, CH_UTF16)));
 
28552
                NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.driver, ndr_charset_length(r->in.driver, CH_UTF16), sizeof(uint16_t), CH_UTF16));
 
28553
                NDR_CHECK(ndr_push_spoolss_DeleteDriverFlags(ndr, NDR_SCALARS, r->in.delete_flags));
 
28554
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.version));
 
28555
        }
 
28556
        if (flags & NDR_OUT) {
 
28557
                NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
 
28558
        }
 
28559
        return NDR_ERR_SUCCESS;
 
28560
}
 
28561
 
 
28562
static enum ndr_err_code ndr_pull_spoolss_DeletePrinterDriverEx(struct ndr_pull *ndr, int flags, struct spoolss_DeletePrinterDriverEx *r)
 
28563
{
 
28564
        uint32_t _ptr_server;
 
28565
        TALLOC_CTX *_mem_save_server_0;
 
28566
        if (flags & NDR_IN) {
 
28567
                NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_server));
 
28568
                if (_ptr_server) {
 
28569
                        NDR_PULL_ALLOC(ndr, r->in.server);
 
28570
                } else {
 
28571
                        r->in.server = NULL;
 
28572
                }
 
28573
                if (r->in.server) {
 
28574
                        _mem_save_server_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
28575
                        NDR_PULL_SET_MEM_CTX(ndr, r->in.server, 0);
 
28576
                        NDR_CHECK(ndr_pull_array_size(ndr, &r->in.server));
 
28577
                        NDR_CHECK(ndr_pull_array_length(ndr, &r->in.server));
 
28578
                        if (ndr_get_array_length(ndr, &r->in.server) > ndr_get_array_size(ndr, &r->in.server)) {
 
28579
                                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.server), ndr_get_array_length(ndr, &r->in.server));
 
28580
                        }
 
28581
                        NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.server), sizeof(uint16_t)));
 
28582
                        NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.server, ndr_get_array_length(ndr, &r->in.server), sizeof(uint16_t), CH_UTF16));
 
28583
                        NDR_PULL_SET_MEM_CTX(ndr, _mem_save_server_0, 0);
 
28584
                }
 
28585
                NDR_CHECK(ndr_pull_array_size(ndr, &r->in.architecture));
 
28586
                NDR_CHECK(ndr_pull_array_length(ndr, &r->in.architecture));
 
28587
                if (ndr_get_array_length(ndr, &r->in.architecture) > ndr_get_array_size(ndr, &r->in.architecture)) {
 
28588
                        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.architecture), ndr_get_array_length(ndr, &r->in.architecture));
 
28589
                }
 
28590
                NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.architecture), sizeof(uint16_t)));
 
28591
                NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.architecture, ndr_get_array_length(ndr, &r->in.architecture), sizeof(uint16_t), CH_UTF16));
 
28592
                NDR_CHECK(ndr_pull_array_size(ndr, &r->in.driver));
 
28593
                NDR_CHECK(ndr_pull_array_length(ndr, &r->in.driver));
 
28594
                if (ndr_get_array_length(ndr, &r->in.driver) > ndr_get_array_size(ndr, &r->in.driver)) {
 
28595
                        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.driver), ndr_get_array_length(ndr, &r->in.driver));
 
28596
                }
 
28597
                NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.driver), sizeof(uint16_t)));
 
28598
                NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.driver, ndr_get_array_length(ndr, &r->in.driver), sizeof(uint16_t), CH_UTF16));
 
28599
                NDR_CHECK(ndr_pull_spoolss_DeleteDriverFlags(ndr, NDR_SCALARS, &r->in.delete_flags));
 
28600
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.version));
 
28601
        }
 
28602
        if (flags & NDR_OUT) {
 
28603
                NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
 
28604
        }
 
28605
        return NDR_ERR_SUCCESS;
 
28606
}
 
28607
 
 
28608
_PUBLIC_ void ndr_print_spoolss_DeletePrinterDriverEx(struct ndr_print *ndr, const char *name, int flags, const struct spoolss_DeletePrinterDriverEx *r)
 
28609
{
 
28610
        ndr_print_struct(ndr, name, "spoolss_DeletePrinterDriverEx");
 
28611
        ndr->depth++;
 
28612
        if (flags & NDR_SET_VALUES) {
 
28613
                ndr->flags |= LIBNDR_PRINT_SET_VALUES;
 
28614
        }
 
28615
        if (flags & NDR_IN) {
 
28616
                ndr_print_struct(ndr, "in", "spoolss_DeletePrinterDriverEx");
 
28617
                ndr->depth++;
 
28618
                ndr_print_ptr(ndr, "server", r->in.server);
 
28619
                ndr->depth++;
 
28620
                if (r->in.server) {
 
28621
                        ndr_print_string(ndr, "server", r->in.server);
 
28622
                }
 
28623
                ndr->depth--;
 
28624
                ndr_print_string(ndr, "architecture", r->in.architecture);
 
28625
                ndr_print_string(ndr, "driver", r->in.driver);
 
28626
                ndr_print_spoolss_DeleteDriverFlags(ndr, "delete_flags", r->in.delete_flags);
 
28627
                ndr_print_uint32(ndr, "version", r->in.version);
 
28628
                ndr->depth--;
 
28629
        }
 
28630
        if (flags & NDR_OUT) {
 
28631
                ndr_print_struct(ndr, "out", "spoolss_DeletePrinterDriverEx");
 
28632
                ndr->depth++;
 
28633
                ndr_print_WERROR(ndr, "result", r->out.result);
 
28634
                ndr->depth--;
 
28635
        }
 
28636
        ndr->depth--;
 
28637
}
 
28638
 
 
28639
static enum ndr_err_code ndr_push_spoolss_55(struct ndr_push *ndr, int flags, const struct spoolss_55 *r)
 
28640
{
 
28641
        if (flags & NDR_IN) {
 
28642
        }
 
28643
        if (flags & NDR_OUT) {
 
28644
                NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
 
28645
        }
 
28646
        return NDR_ERR_SUCCESS;
 
28647
}
 
28648
 
 
28649
static enum ndr_err_code ndr_pull_spoolss_55(struct ndr_pull *ndr, int flags, struct spoolss_55 *r)
 
28650
{
 
28651
        if (flags & NDR_IN) {
 
28652
        }
 
28653
        if (flags & NDR_OUT) {
 
28654
                NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
 
28655
        }
 
28656
        return NDR_ERR_SUCCESS;
 
28657
}
 
28658
 
 
28659
_PUBLIC_ void ndr_print_spoolss_55(struct ndr_print *ndr, const char *name, int flags, const struct spoolss_55 *r)
 
28660
{
 
28661
        ndr_print_struct(ndr, name, "spoolss_55");
 
28662
        ndr->depth++;
 
28663
        if (flags & NDR_SET_VALUES) {
 
28664
                ndr->flags |= LIBNDR_PRINT_SET_VALUES;
 
28665
        }
 
28666
        if (flags & NDR_IN) {
 
28667
                ndr_print_struct(ndr, "in", "spoolss_55");
 
28668
                ndr->depth++;
 
28669
                ndr->depth--;
 
28670
        }
 
28671
        if (flags & NDR_OUT) {
 
28672
                ndr_print_struct(ndr, "out", "spoolss_55");
 
28673
                ndr->depth++;
 
28674
                ndr_print_WERROR(ndr, "result", r->out.result);
 
28675
                ndr->depth--;
 
28676
        }
 
28677
        ndr->depth--;
 
28678
}
 
28679
 
 
28680
static enum ndr_err_code ndr_push_spoolss_56(struct ndr_push *ndr, int flags, const struct spoolss_56 *r)
 
28681
{
 
28682
        if (flags & NDR_IN) {
 
28683
        }
 
28684
        if (flags & NDR_OUT) {
 
28685
                NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
 
28686
        }
 
28687
        return NDR_ERR_SUCCESS;
 
28688
}
 
28689
 
 
28690
static enum ndr_err_code ndr_pull_spoolss_56(struct ndr_pull *ndr, int flags, struct spoolss_56 *r)
 
28691
{
 
28692
        if (flags & NDR_IN) {
 
28693
        }
 
28694
        if (flags & NDR_OUT) {
 
28695
                NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
 
28696
        }
 
28697
        return NDR_ERR_SUCCESS;
 
28698
}
 
28699
 
 
28700
_PUBLIC_ void ndr_print_spoolss_56(struct ndr_print *ndr, const char *name, int flags, const struct spoolss_56 *r)
 
28701
{
 
28702
        ndr_print_struct(ndr, name, "spoolss_56");
 
28703
        ndr->depth++;
 
28704
        if (flags & NDR_SET_VALUES) {
 
28705
                ndr->flags |= LIBNDR_PRINT_SET_VALUES;
 
28706
        }
 
28707
        if (flags & NDR_IN) {
 
28708
                ndr_print_struct(ndr, "in", "spoolss_56");
 
28709
                ndr->depth++;
 
28710
                ndr->depth--;
 
28711
        }
 
28712
        if (flags & NDR_OUT) {
 
28713
                ndr_print_struct(ndr, "out", "spoolss_56");
 
28714
                ndr->depth++;
 
28715
                ndr_print_WERROR(ndr, "result", r->out.result);
 
28716
                ndr->depth--;
 
28717
        }
 
28718
        ndr->depth--;
 
28719
}
 
28720
 
 
28721
static enum ndr_err_code ndr_push_spoolss_57(struct ndr_push *ndr, int flags, const struct spoolss_57 *r)
 
28722
{
 
28723
        if (flags & NDR_IN) {
 
28724
        }
 
28725
        if (flags & NDR_OUT) {
 
28726
                NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
 
28727
        }
 
28728
        return NDR_ERR_SUCCESS;
 
28729
}
 
28730
 
 
28731
static enum ndr_err_code ndr_pull_spoolss_57(struct ndr_pull *ndr, int flags, struct spoolss_57 *r)
 
28732
{
 
28733
        if (flags & NDR_IN) {
 
28734
        }
 
28735
        if (flags & NDR_OUT) {
 
28736
                NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
 
28737
        }
 
28738
        return NDR_ERR_SUCCESS;
 
28739
}
 
28740
 
 
28741
_PUBLIC_ void ndr_print_spoolss_57(struct ndr_print *ndr, const char *name, int flags, const struct spoolss_57 *r)
 
28742
{
 
28743
        ndr_print_struct(ndr, name, "spoolss_57");
 
28744
        ndr->depth++;
 
28745
        if (flags & NDR_SET_VALUES) {
 
28746
                ndr->flags |= LIBNDR_PRINT_SET_VALUES;
 
28747
        }
 
28748
        if (flags & NDR_IN) {
 
28749
                ndr_print_struct(ndr, "in", "spoolss_57");
 
28750
                ndr->depth++;
 
28751
                ndr->depth--;
 
28752
        }
 
28753
        if (flags & NDR_OUT) {
 
28754
                ndr_print_struct(ndr, "out", "spoolss_57");
 
28755
                ndr->depth++;
 
28756
                ndr_print_WERROR(ndr, "result", r->out.result);
 
28757
                ndr->depth--;
 
28758
        }
 
28759
        ndr->depth--;
 
28760
}
 
28761
 
 
28762
static enum ndr_err_code ndr_push_spoolss_XcvData(struct ndr_push *ndr, int flags, const struct spoolss_XcvData *r)
 
28763
{
 
28764
        if (flags & NDR_IN) {
 
28765
                if (r->in.handle == NULL) {
 
28766
                        return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
 
28767
                }
 
28768
                NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
 
28769
                NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.function_name, CH_UTF16)));
 
28770
                NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0));
 
28771
                NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.function_name, CH_UTF16)));
 
28772
                NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.function_name, ndr_charset_length(r->in.function_name, CH_UTF16), sizeof(uint16_t), CH_UTF16));
 
28773
                NDR_CHECK(ndr_push_DATA_BLOB(ndr, NDR_SCALARS, r->in.in_data));
 
28774
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.in_data.length));
 
28775
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.out_data_size));
 
28776
                if (r->in.status_code == NULL) {
 
28777
                        return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
 
28778
                }
 
28779
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->in.status_code));
 
28780
        }
 
28781
        if (flags & NDR_OUT) {
 
28782
                if (r->out.out_data == NULL) {
 
28783
                        return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
 
28784
                }
 
28785
                NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, r->in.out_data_size));
 
28786
                NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->out.out_data, r->in.out_data_size));
 
28787
                if (r->out.needed == NULL) {
 
28788
                        return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
 
28789
                }
 
28790
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.needed));
 
28791
                if (r->out.status_code == NULL) {
 
28792
                        return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
 
28793
                }
 
28794
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.status_code));
 
28795
                NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
 
28796
        }
 
28797
        return NDR_ERR_SUCCESS;
 
28798
}
 
28799
 
 
28800
static enum ndr_err_code ndr_pull_spoolss_XcvData(struct ndr_pull *ndr, int flags, struct spoolss_XcvData *r)
 
28801
{
 
28802
        TALLOC_CTX *_mem_save_handle_0;
 
28803
        TALLOC_CTX *_mem_save_needed_0;
 
28804
        TALLOC_CTX *_mem_save_status_code_0;
 
28805
        if (flags & NDR_IN) {
 
28806
                ZERO_STRUCT(r->out);
 
28807
 
 
28808
                if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
 
28809
                        NDR_PULL_ALLOC(ndr, r->in.handle);
 
28810
                }
 
28811
                _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
28812
                NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
 
28813
                NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
 
28814
                NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
 
28815
                NDR_CHECK(ndr_pull_array_size(ndr, &r->in.function_name));
 
28816
                NDR_CHECK(ndr_pull_array_length(ndr, &r->in.function_name));
 
28817
                if (ndr_get_array_length(ndr, &r->in.function_name) > ndr_get_array_size(ndr, &r->in.function_name)) {
 
28818
                        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.function_name), ndr_get_array_length(ndr, &r->in.function_name));
 
28819
                }
 
28820
                NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.function_name), sizeof(uint16_t)));
 
28821
                NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.function_name, ndr_get_array_length(ndr, &r->in.function_name), sizeof(uint16_t), CH_UTF16));
 
28822
                NDR_CHECK(ndr_pull_DATA_BLOB(ndr, NDR_SCALARS, &r->in.in_data));
 
28823
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in._in_data_length));
 
28824
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.out_data_size));
 
28825
                if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
 
28826
                        NDR_PULL_ALLOC(ndr, r->in.status_code);
 
28827
                }
 
28828
                _mem_save_status_code_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
28829
                NDR_PULL_SET_MEM_CTX(ndr, r->in.status_code, LIBNDR_FLAG_REF_ALLOC);
 
28830
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->in.status_code));
 
28831
                NDR_PULL_SET_MEM_CTX(ndr, _mem_save_status_code_0, LIBNDR_FLAG_REF_ALLOC);
 
28832
                NDR_PULL_ALLOC_N(ndr, r->out.out_data, r->in.out_data_size);
 
28833
                memset(r->out.out_data, 0, (r->in.out_data_size) * sizeof(*r->out.out_data));
 
28834
                NDR_PULL_ALLOC(ndr, r->out.needed);
 
28835
                ZERO_STRUCTP(r->out.needed);
 
28836
                NDR_PULL_ALLOC(ndr, r->out.status_code);
 
28837
                *r->out.status_code = *r->in.status_code;
 
28838
        }
 
28839
        if (flags & NDR_OUT) {
 
28840
                NDR_CHECK(ndr_pull_array_size(ndr, &r->out.out_data));
 
28841
                if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
 
28842
                        NDR_PULL_ALLOC_N(ndr, r->out.out_data, ndr_get_array_size(ndr, &r->out.out_data));
 
28843
                }
 
28844
                NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->out.out_data, ndr_get_array_size(ndr, &r->out.out_data)));
 
28845
                if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
 
28846
                        NDR_PULL_ALLOC(ndr, r->out.needed);
 
28847
                }
 
28848
                _mem_save_needed_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
28849
                NDR_PULL_SET_MEM_CTX(ndr, r->out.needed, LIBNDR_FLAG_REF_ALLOC);
 
28850
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.needed));
 
28851
                NDR_PULL_SET_MEM_CTX(ndr, _mem_save_needed_0, LIBNDR_FLAG_REF_ALLOC);
 
28852
                if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
 
28853
                        NDR_PULL_ALLOC(ndr, r->out.status_code);
 
28854
                }
 
28855
                _mem_save_status_code_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
28856
                NDR_PULL_SET_MEM_CTX(ndr, r->out.status_code, LIBNDR_FLAG_REF_ALLOC);
 
28857
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.status_code));
 
28858
                NDR_PULL_SET_MEM_CTX(ndr, _mem_save_status_code_0, LIBNDR_FLAG_REF_ALLOC);
 
28859
                NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
 
28860
                if (r->out.out_data) {
 
28861
                        NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->out.out_data, r->in.out_data_size));
 
28862
                }
 
28863
        }
 
28864
        return NDR_ERR_SUCCESS;
 
28865
}
 
28866
 
 
28867
_PUBLIC_ void ndr_print_spoolss_XcvData(struct ndr_print *ndr, const char *name, int flags, const struct spoolss_XcvData *r)
 
28868
{
 
28869
        ndr_print_struct(ndr, name, "spoolss_XcvData");
 
28870
        ndr->depth++;
 
28871
        if (flags & NDR_SET_VALUES) {
 
28872
                ndr->flags |= LIBNDR_PRINT_SET_VALUES;
 
28873
        }
 
28874
        if (flags & NDR_IN) {
 
28875
                ndr_print_struct(ndr, "in", "spoolss_XcvData");
 
28876
                ndr->depth++;
 
28877
                ndr_print_ptr(ndr, "handle", r->in.handle);
 
28878
                ndr->depth++;
 
28879
                ndr_print_policy_handle(ndr, "handle", r->in.handle);
 
28880
                ndr->depth--;
 
28881
                ndr_print_string(ndr, "function_name", r->in.function_name);
 
28882
                ndr_print_DATA_BLOB(ndr, "in_data", r->in.in_data);
 
28883
                ndr_print_uint32(ndr, "_in_data_length", (ndr->flags & LIBNDR_PRINT_SET_VALUES)?r->in.in_data.length:r->in._in_data_length);
 
28884
                ndr_print_uint32(ndr, "out_data_size", r->in.out_data_size);
 
28885
                ndr_print_ptr(ndr, "status_code", r->in.status_code);
 
28886
                ndr->depth++;
 
28887
                ndr_print_uint32(ndr, "status_code", *r->in.status_code);
 
28888
                ndr->depth--;
 
28889
                ndr->depth--;
 
28890
        }
 
28891
        if (flags & NDR_OUT) {
 
28892
                ndr_print_struct(ndr, "out", "spoolss_XcvData");
 
28893
                ndr->depth++;
 
28894
                ndr_print_ptr(ndr, "out_data", r->out.out_data);
 
28895
                ndr->depth++;
 
28896
                ndr_print_array_uint8(ndr, "out_data", r->out.out_data, r->in.out_data_size);
 
28897
                ndr->depth--;
 
28898
                ndr_print_ptr(ndr, "needed", r->out.needed);
 
28899
                ndr->depth++;
 
28900
                ndr_print_uint32(ndr, "needed", *r->out.needed);
 
28901
                ndr->depth--;
 
28902
                ndr_print_ptr(ndr, "status_code", r->out.status_code);
 
28903
                ndr->depth++;
 
28904
                ndr_print_uint32(ndr, "status_code", *r->out.status_code);
 
28905
                ndr->depth--;
 
28906
                ndr_print_WERROR(ndr, "result", r->out.result);
 
28907
                ndr->depth--;
 
28908
        }
 
28909
        ndr->depth--;
 
28910
}
 
28911
 
 
28912
_PUBLIC_ enum ndr_err_code ndr_push_spoolss_AddPrinterDriverEx(struct ndr_push *ndr, int flags, const struct spoolss_AddPrinterDriverEx *r)
 
28913
{
 
28914
        if (flags & NDR_IN) {
 
28915
                NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.servername));
 
28916
                if (r->in.servername) {
 
28917
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.servername, CH_UTF16)));
 
28918
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0));
 
28919
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.servername, CH_UTF16)));
 
28920
                        NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.servername, ndr_charset_length(r->in.servername, CH_UTF16), sizeof(uint16_t), CH_UTF16));
 
28921
                }
 
28922
                if (r->in.info_ctr == NULL) {
 
28923
                        return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
 
28924
                }
 
28925
                NDR_CHECK(ndr_push_spoolss_AddDriverInfoCtr(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.info_ctr));
 
28926
                NDR_CHECK(ndr_push_spoolss_AddPrinterDriverExFlags(ndr, NDR_SCALARS, r->in.flags));
 
28927
        }
 
28928
        if (flags & NDR_OUT) {
 
28929
                NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
 
28930
        }
 
28931
        return NDR_ERR_SUCCESS;
 
28932
}
 
28933
 
 
28934
_PUBLIC_ enum ndr_err_code ndr_pull_spoolss_AddPrinterDriverEx(struct ndr_pull *ndr, int flags, struct spoolss_AddPrinterDriverEx *r)
 
28935
{
 
28936
        uint32_t _ptr_servername;
 
28937
        TALLOC_CTX *_mem_save_servername_0;
 
28938
        TALLOC_CTX *_mem_save_info_ctr_0;
 
28939
        if (flags & NDR_IN) {
 
28940
                NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_servername));
 
28941
                if (_ptr_servername) {
 
28942
                        NDR_PULL_ALLOC(ndr, r->in.servername);
 
28943
                } else {
 
28944
                        r->in.servername = NULL;
 
28945
                }
 
28946
                if (r->in.servername) {
 
28947
                        _mem_save_servername_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
28948
                        NDR_PULL_SET_MEM_CTX(ndr, r->in.servername, 0);
 
28949
                        NDR_CHECK(ndr_pull_array_size(ndr, &r->in.servername));
 
28950
                        NDR_CHECK(ndr_pull_array_length(ndr, &r->in.servername));
 
28951
                        if (ndr_get_array_length(ndr, &r->in.servername) > ndr_get_array_size(ndr, &r->in.servername)) {
 
28952
                                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.servername), ndr_get_array_length(ndr, &r->in.servername));
 
28953
                        }
 
28954
                        NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.servername), sizeof(uint16_t)));
 
28955
                        NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.servername, ndr_get_array_length(ndr, &r->in.servername), sizeof(uint16_t), CH_UTF16));
 
28956
                        NDR_PULL_SET_MEM_CTX(ndr, _mem_save_servername_0, 0);
 
28957
                }
 
28958
                if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
 
28959
                        NDR_PULL_ALLOC(ndr, r->in.info_ctr);
 
28960
                }
 
28961
                _mem_save_info_ctr_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
28962
                NDR_PULL_SET_MEM_CTX(ndr, r->in.info_ctr, LIBNDR_FLAG_REF_ALLOC);
 
28963
                NDR_CHECK(ndr_pull_spoolss_AddDriverInfoCtr(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.info_ctr));
 
28964
                NDR_PULL_SET_MEM_CTX(ndr, _mem_save_info_ctr_0, LIBNDR_FLAG_REF_ALLOC);
 
28965
                NDR_CHECK(ndr_pull_spoolss_AddPrinterDriverExFlags(ndr, NDR_SCALARS, &r->in.flags));
 
28966
        }
 
28967
        if (flags & NDR_OUT) {
 
28968
                NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
 
28969
        }
 
28970
        return NDR_ERR_SUCCESS;
 
28971
}
 
28972
 
 
28973
_PUBLIC_ void ndr_print_spoolss_AddPrinterDriverEx(struct ndr_print *ndr, const char *name, int flags, const struct spoolss_AddPrinterDriverEx *r)
 
28974
{
 
28975
        ndr_print_struct(ndr, name, "spoolss_AddPrinterDriverEx");
 
28976
        ndr->depth++;
 
28977
        if (flags & NDR_SET_VALUES) {
 
28978
                ndr->flags |= LIBNDR_PRINT_SET_VALUES;
 
28979
        }
 
28980
        if (flags & NDR_IN) {
 
28981
                ndr_print_struct(ndr, "in", "spoolss_AddPrinterDriverEx");
 
28982
                ndr->depth++;
 
28983
                ndr_print_ptr(ndr, "servername", r->in.servername);
 
28984
                ndr->depth++;
 
28985
                if (r->in.servername) {
 
28986
                        ndr_print_string(ndr, "servername", r->in.servername);
 
28987
                }
 
28988
                ndr->depth--;
 
28989
                ndr_print_ptr(ndr, "info_ctr", r->in.info_ctr);
 
28990
                ndr->depth++;
 
28991
                ndr_print_spoolss_AddDriverInfoCtr(ndr, "info_ctr", r->in.info_ctr);
 
28992
                ndr->depth--;
 
28993
                ndr_print_spoolss_AddPrinterDriverExFlags(ndr, "flags", r->in.flags);
 
28994
                ndr->depth--;
 
28995
        }
 
28996
        if (flags & NDR_OUT) {
 
28997
                ndr_print_struct(ndr, "out", "spoolss_AddPrinterDriverEx");
 
28998
                ndr->depth++;
 
28999
                ndr_print_WERROR(ndr, "result", r->out.result);
 
29000
                ndr->depth--;
 
29001
        }
 
29002
        ndr->depth--;
 
29003
}
 
29004
 
 
29005
static enum ndr_err_code ndr_push_spoolss_5a(struct ndr_push *ndr, int flags, const struct spoolss_5a *r)
 
29006
{
 
29007
        if (flags & NDR_IN) {
 
29008
        }
 
29009
        if (flags & NDR_OUT) {
 
29010
                NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
 
29011
        }
 
29012
        return NDR_ERR_SUCCESS;
 
29013
}
 
29014
 
 
29015
static enum ndr_err_code ndr_pull_spoolss_5a(struct ndr_pull *ndr, int flags, struct spoolss_5a *r)
 
29016
{
 
29017
        if (flags & NDR_IN) {
 
29018
        }
 
29019
        if (flags & NDR_OUT) {
 
29020
                NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
 
29021
        }
 
29022
        return NDR_ERR_SUCCESS;
 
29023
}
 
29024
 
 
29025
_PUBLIC_ void ndr_print_spoolss_5a(struct ndr_print *ndr, const char *name, int flags, const struct spoolss_5a *r)
 
29026
{
 
29027
        ndr_print_struct(ndr, name, "spoolss_5a");
 
29028
        ndr->depth++;
 
29029
        if (flags & NDR_SET_VALUES) {
 
29030
                ndr->flags |= LIBNDR_PRINT_SET_VALUES;
 
29031
        }
 
29032
        if (flags & NDR_IN) {
 
29033
                ndr_print_struct(ndr, "in", "spoolss_5a");
 
29034
                ndr->depth++;
 
29035
                ndr->depth--;
 
29036
        }
 
29037
        if (flags & NDR_OUT) {
 
29038
                ndr_print_struct(ndr, "out", "spoolss_5a");
 
29039
                ndr->depth++;
 
29040
                ndr_print_WERROR(ndr, "result", r->out.result);
 
29041
                ndr->depth--;
 
29042
        }
 
29043
        ndr->depth--;
 
29044
}
 
29045
 
 
29046
static enum ndr_err_code ndr_push_spoolss_5b(struct ndr_push *ndr, int flags, const struct spoolss_5b *r)
 
29047
{
 
29048
        if (flags & NDR_IN) {
 
29049
        }
 
29050
        if (flags & NDR_OUT) {
 
29051
                NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
 
29052
        }
 
29053
        return NDR_ERR_SUCCESS;
 
29054
}
 
29055
 
 
29056
static enum ndr_err_code ndr_pull_spoolss_5b(struct ndr_pull *ndr, int flags, struct spoolss_5b *r)
 
29057
{
 
29058
        if (flags & NDR_IN) {
 
29059
        }
 
29060
        if (flags & NDR_OUT) {
 
29061
                NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
 
29062
        }
 
29063
        return NDR_ERR_SUCCESS;
 
29064
}
 
29065
 
 
29066
_PUBLIC_ void ndr_print_spoolss_5b(struct ndr_print *ndr, const char *name, int flags, const struct spoolss_5b *r)
 
29067
{
 
29068
        ndr_print_struct(ndr, name, "spoolss_5b");
 
29069
        ndr->depth++;
 
29070
        if (flags & NDR_SET_VALUES) {
 
29071
                ndr->flags |= LIBNDR_PRINT_SET_VALUES;
 
29072
        }
 
29073
        if (flags & NDR_IN) {
 
29074
                ndr_print_struct(ndr, "in", "spoolss_5b");
 
29075
                ndr->depth++;
 
29076
                ndr->depth--;
 
29077
        }
 
29078
        if (flags & NDR_OUT) {
 
29079
                ndr_print_struct(ndr, "out", "spoolss_5b");
 
29080
                ndr->depth++;
 
29081
                ndr_print_WERROR(ndr, "result", r->out.result);
 
29082
                ndr->depth--;
 
29083
        }
 
29084
        ndr->depth--;
 
29085
}
 
29086
 
 
29087
static enum ndr_err_code ndr_push_spoolss_5c(struct ndr_push *ndr, int flags, const struct spoolss_5c *r)
 
29088
{
 
29089
        if (flags & NDR_IN) {
 
29090
        }
 
29091
        if (flags & NDR_OUT) {
 
29092
                NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
 
29093
        }
 
29094
        return NDR_ERR_SUCCESS;
 
29095
}
 
29096
 
 
29097
static enum ndr_err_code ndr_pull_spoolss_5c(struct ndr_pull *ndr, int flags, struct spoolss_5c *r)
 
29098
{
 
29099
        if (flags & NDR_IN) {
 
29100
        }
 
29101
        if (flags & NDR_OUT) {
 
29102
                NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
 
29103
        }
 
29104
        return NDR_ERR_SUCCESS;
 
29105
}
 
29106
 
 
29107
_PUBLIC_ void ndr_print_spoolss_5c(struct ndr_print *ndr, const char *name, int flags, const struct spoolss_5c *r)
 
29108
{
 
29109
        ndr_print_struct(ndr, name, "spoolss_5c");
 
29110
        ndr->depth++;
 
29111
        if (flags & NDR_SET_VALUES) {
 
29112
                ndr->flags |= LIBNDR_PRINT_SET_VALUES;
 
29113
        }
 
29114
        if (flags & NDR_IN) {
 
29115
                ndr_print_struct(ndr, "in", "spoolss_5c");
 
29116
                ndr->depth++;
 
29117
                ndr->depth--;
 
29118
        }
 
29119
        if (flags & NDR_OUT) {
 
29120
                ndr_print_struct(ndr, "out", "spoolss_5c");
 
29121
                ndr->depth++;
 
29122
                ndr_print_WERROR(ndr, "result", r->out.result);
 
29123
                ndr->depth--;
 
29124
        }
 
29125
        ndr->depth--;
 
29126
}
 
29127
 
 
29128
static enum ndr_err_code ndr_push_spoolss_5d(struct ndr_push *ndr, int flags, const struct spoolss_5d *r)
 
29129
{
 
29130
        if (flags & NDR_IN) {
 
29131
        }
 
29132
        if (flags & NDR_OUT) {
 
29133
                NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
 
29134
        }
 
29135
        return NDR_ERR_SUCCESS;
 
29136
}
 
29137
 
 
29138
static enum ndr_err_code ndr_pull_spoolss_5d(struct ndr_pull *ndr, int flags, struct spoolss_5d *r)
 
29139
{
 
29140
        if (flags & NDR_IN) {
 
29141
        }
 
29142
        if (flags & NDR_OUT) {
 
29143
                NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
 
29144
        }
 
29145
        return NDR_ERR_SUCCESS;
 
29146
}
 
29147
 
 
29148
_PUBLIC_ void ndr_print_spoolss_5d(struct ndr_print *ndr, const char *name, int flags, const struct spoolss_5d *r)
 
29149
{
 
29150
        ndr_print_struct(ndr, name, "spoolss_5d");
 
29151
        ndr->depth++;
 
29152
        if (flags & NDR_SET_VALUES) {
 
29153
                ndr->flags |= LIBNDR_PRINT_SET_VALUES;
 
29154
        }
 
29155
        if (flags & NDR_IN) {
 
29156
                ndr_print_struct(ndr, "in", "spoolss_5d");
 
29157
                ndr->depth++;
 
29158
                ndr->depth--;
 
29159
        }
 
29160
        if (flags & NDR_OUT) {
 
29161
                ndr_print_struct(ndr, "out", "spoolss_5d");
 
29162
                ndr->depth++;
 
29163
                ndr_print_WERROR(ndr, "result", r->out.result);
 
29164
                ndr->depth--;
 
29165
        }
 
29166
        ndr->depth--;
 
29167
}
 
29168
 
 
29169
static enum ndr_err_code ndr_push_spoolss_5e(struct ndr_push *ndr, int flags, const struct spoolss_5e *r)
 
29170
{
 
29171
        if (flags & NDR_IN) {
 
29172
        }
 
29173
        if (flags & NDR_OUT) {
 
29174
                NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
 
29175
        }
 
29176
        return NDR_ERR_SUCCESS;
 
29177
}
 
29178
 
 
29179
static enum ndr_err_code ndr_pull_spoolss_5e(struct ndr_pull *ndr, int flags, struct spoolss_5e *r)
 
29180
{
 
29181
        if (flags & NDR_IN) {
 
29182
        }
 
29183
        if (flags & NDR_OUT) {
 
29184
                NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
 
29185
        }
 
29186
        return NDR_ERR_SUCCESS;
 
29187
}
 
29188
 
 
29189
_PUBLIC_ void ndr_print_spoolss_5e(struct ndr_print *ndr, const char *name, int flags, const struct spoolss_5e *r)
 
29190
{
 
29191
        ndr_print_struct(ndr, name, "spoolss_5e");
 
29192
        ndr->depth++;
 
29193
        if (flags & NDR_SET_VALUES) {
 
29194
                ndr->flags |= LIBNDR_PRINT_SET_VALUES;
 
29195
        }
 
29196
        if (flags & NDR_IN) {
 
29197
                ndr_print_struct(ndr, "in", "spoolss_5e");
 
29198
                ndr->depth++;
 
29199
                ndr->depth--;
 
29200
        }
 
29201
        if (flags & NDR_OUT) {
 
29202
                ndr_print_struct(ndr, "out", "spoolss_5e");
 
29203
                ndr->depth++;
 
29204
                ndr_print_WERROR(ndr, "result", r->out.result);
 
29205
                ndr->depth--;
 
29206
        }
 
29207
        ndr->depth--;
 
29208
}
 
29209
 
 
29210
static enum ndr_err_code ndr_push_spoolss_5f(struct ndr_push *ndr, int flags, const struct spoolss_5f *r)
 
29211
{
 
29212
        if (flags & NDR_IN) {
 
29213
        }
 
29214
        if (flags & NDR_OUT) {
 
29215
                NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
 
29216
        }
 
29217
        return NDR_ERR_SUCCESS;
 
29218
}
 
29219
 
 
29220
static enum ndr_err_code ndr_pull_spoolss_5f(struct ndr_pull *ndr, int flags, struct spoolss_5f *r)
 
29221
{
 
29222
        if (flags & NDR_IN) {
 
29223
        }
 
29224
        if (flags & NDR_OUT) {
 
29225
                NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
 
29226
        }
 
29227
        return NDR_ERR_SUCCESS;
 
29228
}
 
29229
 
 
29230
_PUBLIC_ void ndr_print_spoolss_5f(struct ndr_print *ndr, const char *name, int flags, const struct spoolss_5f *r)
 
29231
{
 
29232
        ndr_print_struct(ndr, name, "spoolss_5f");
 
29233
        ndr->depth++;
 
29234
        if (flags & NDR_SET_VALUES) {
 
29235
                ndr->flags |= LIBNDR_PRINT_SET_VALUES;
 
29236
        }
 
29237
        if (flags & NDR_IN) {
 
29238
                ndr_print_struct(ndr, "in", "spoolss_5f");
 
29239
                ndr->depth++;
 
29240
                ndr->depth--;
 
29241
        }
 
29242
        if (flags & NDR_OUT) {
 
29243
                ndr_print_struct(ndr, "out", "spoolss_5f");
 
29244
                ndr->depth++;
 
29245
                ndr_print_WERROR(ndr, "result", r->out.result);
 
29246
                ndr->depth--;
 
29247
        }
 
29248
        ndr->depth--;
 
29249
}
 
29250
 
 
29251
static enum ndr_err_code ndr_push_spoolss_60(struct ndr_push *ndr, int flags, const struct spoolss_60 *r)
 
29252
{
 
29253
        if (flags & NDR_IN) {
 
29254
        }
 
29255
        if (flags & NDR_OUT) {
 
29256
                NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
 
29257
        }
 
29258
        return NDR_ERR_SUCCESS;
 
29259
}
 
29260
 
 
29261
static enum ndr_err_code ndr_pull_spoolss_60(struct ndr_pull *ndr, int flags, struct spoolss_60 *r)
 
29262
{
 
29263
        if (flags & NDR_IN) {
 
29264
        }
 
29265
        if (flags & NDR_OUT) {
 
29266
                NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
 
29267
        }
 
29268
        return NDR_ERR_SUCCESS;
 
29269
}
 
29270
 
 
29271
_PUBLIC_ void ndr_print_spoolss_60(struct ndr_print *ndr, const char *name, int flags, const struct spoolss_60 *r)
 
29272
{
 
29273
        ndr_print_struct(ndr, name, "spoolss_60");
 
29274
        ndr->depth++;
 
29275
        if (flags & NDR_SET_VALUES) {
 
29276
                ndr->flags |= LIBNDR_PRINT_SET_VALUES;
 
29277
        }
 
29278
        if (flags & NDR_IN) {
 
29279
                ndr_print_struct(ndr, "in", "spoolss_60");
 
29280
                ndr->depth++;
 
29281
                ndr->depth--;
 
29282
        }
 
29283
        if (flags & NDR_OUT) {
 
29284
                ndr_print_struct(ndr, "out", "spoolss_60");
 
29285
                ndr->depth++;
 
29286
                ndr_print_WERROR(ndr, "result", r->out.result);
 
29287
                ndr->depth--;
 
29288
        }
 
29289
        ndr->depth--;
 
29290
}
 
29291
 
 
29292
static enum ndr_err_code ndr_push_spoolss_61(struct ndr_push *ndr, int flags, const struct spoolss_61 *r)
 
29293
{
 
29294
        if (flags & NDR_IN) {
 
29295
        }
 
29296
        if (flags & NDR_OUT) {
 
29297
                NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
 
29298
        }
 
29299
        return NDR_ERR_SUCCESS;
 
29300
}
 
29301
 
 
29302
static enum ndr_err_code ndr_pull_spoolss_61(struct ndr_pull *ndr, int flags, struct spoolss_61 *r)
 
29303
{
 
29304
        if (flags & NDR_IN) {
 
29305
        }
 
29306
        if (flags & NDR_OUT) {
 
29307
                NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
 
29308
        }
 
29309
        return NDR_ERR_SUCCESS;
 
29310
}
 
29311
 
 
29312
_PUBLIC_ void ndr_print_spoolss_61(struct ndr_print *ndr, const char *name, int flags, const struct spoolss_61 *r)
 
29313
{
 
29314
        ndr_print_struct(ndr, name, "spoolss_61");
 
29315
        ndr->depth++;
 
29316
        if (flags & NDR_SET_VALUES) {
 
29317
                ndr->flags |= LIBNDR_PRINT_SET_VALUES;
 
29318
        }
 
29319
        if (flags & NDR_IN) {
 
29320
                ndr_print_struct(ndr, "in", "spoolss_61");
 
29321
                ndr->depth++;
 
29322
                ndr->depth--;
 
29323
        }
 
29324
        if (flags & NDR_OUT) {
 
29325
                ndr_print_struct(ndr, "out", "spoolss_61");
 
29326
                ndr->depth++;
 
29327
                ndr_print_WERROR(ndr, "result", r->out.result);
 
29328
                ndr->depth--;
 
29329
        }
 
29330
        ndr->depth--;
 
29331
}
 
29332
 
 
29333
static enum ndr_err_code ndr_push_spoolss_62(struct ndr_push *ndr, int flags, const struct spoolss_62 *r)
 
29334
{
 
29335
        if (flags & NDR_IN) {
 
29336
        }
 
29337
        if (flags & NDR_OUT) {
 
29338
                NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
 
29339
        }
 
29340
        return NDR_ERR_SUCCESS;
 
29341
}
 
29342
 
 
29343
static enum ndr_err_code ndr_pull_spoolss_62(struct ndr_pull *ndr, int flags, struct spoolss_62 *r)
 
29344
{
 
29345
        if (flags & NDR_IN) {
 
29346
        }
 
29347
        if (flags & NDR_OUT) {
 
29348
                NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
 
29349
        }
 
29350
        return NDR_ERR_SUCCESS;
 
29351
}
 
29352
 
 
29353
_PUBLIC_ void ndr_print_spoolss_62(struct ndr_print *ndr, const char *name, int flags, const struct spoolss_62 *r)
 
29354
{
 
29355
        ndr_print_struct(ndr, name, "spoolss_62");
 
29356
        ndr->depth++;
 
29357
        if (flags & NDR_SET_VALUES) {
 
29358
                ndr->flags |= LIBNDR_PRINT_SET_VALUES;
 
29359
        }
 
29360
        if (flags & NDR_IN) {
 
29361
                ndr_print_struct(ndr, "in", "spoolss_62");
 
29362
                ndr->depth++;
 
29363
                ndr->depth--;
 
29364
        }
 
29365
        if (flags & NDR_OUT) {
 
29366
                ndr_print_struct(ndr, "out", "spoolss_62");
 
29367
                ndr->depth++;
 
29368
                ndr_print_WERROR(ndr, "result", r->out.result);
 
29369
                ndr->depth--;
 
29370
        }
 
29371
        ndr->depth--;
 
29372
}
 
29373
 
 
29374
static enum ndr_err_code ndr_push_spoolss_63(struct ndr_push *ndr, int flags, const struct spoolss_63 *r)
 
29375
{
 
29376
        if (flags & NDR_IN) {
 
29377
        }
 
29378
        if (flags & NDR_OUT) {
 
29379
                NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
 
29380
        }
 
29381
        return NDR_ERR_SUCCESS;
 
29382
}
 
29383
 
 
29384
static enum ndr_err_code ndr_pull_spoolss_63(struct ndr_pull *ndr, int flags, struct spoolss_63 *r)
 
29385
{
 
29386
        if (flags & NDR_IN) {
 
29387
        }
 
29388
        if (flags & NDR_OUT) {
 
29389
                NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
 
29390
        }
 
29391
        return NDR_ERR_SUCCESS;
 
29392
}
 
29393
 
 
29394
_PUBLIC_ void ndr_print_spoolss_63(struct ndr_print *ndr, const char *name, int flags, const struct spoolss_63 *r)
 
29395
{
 
29396
        ndr_print_struct(ndr, name, "spoolss_63");
 
29397
        ndr->depth++;
 
29398
        if (flags & NDR_SET_VALUES) {
 
29399
                ndr->flags |= LIBNDR_PRINT_SET_VALUES;
 
29400
        }
 
29401
        if (flags & NDR_IN) {
 
29402
                ndr_print_struct(ndr, "in", "spoolss_63");
 
29403
                ndr->depth++;
 
29404
                ndr->depth--;
 
29405
        }
 
29406
        if (flags & NDR_OUT) {
 
29407
                ndr_print_struct(ndr, "out", "spoolss_63");
 
29408
                ndr->depth++;
 
29409
                ndr_print_WERROR(ndr, "result", r->out.result);
 
29410
                ndr->depth--;
 
29411
        }
 
29412
        ndr->depth--;
 
29413
}
 
29414
 
 
29415
static enum ndr_err_code ndr_push_spoolss_64(struct ndr_push *ndr, int flags, const struct spoolss_64 *r)
 
29416
{
 
29417
        if (flags & NDR_IN) {
 
29418
        }
 
29419
        if (flags & NDR_OUT) {
 
29420
                NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
 
29421
        }
 
29422
        return NDR_ERR_SUCCESS;
 
29423
}
 
29424
 
 
29425
static enum ndr_err_code ndr_pull_spoolss_64(struct ndr_pull *ndr, int flags, struct spoolss_64 *r)
 
29426
{
 
29427
        if (flags & NDR_IN) {
 
29428
        }
 
29429
        if (flags & NDR_OUT) {
 
29430
                NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
 
29431
        }
 
29432
        return NDR_ERR_SUCCESS;
 
29433
}
 
29434
 
 
29435
_PUBLIC_ void ndr_print_spoolss_64(struct ndr_print *ndr, const char *name, int flags, const struct spoolss_64 *r)
 
29436
{
 
29437
        ndr_print_struct(ndr, name, "spoolss_64");
 
29438
        ndr->depth++;
 
29439
        if (flags & NDR_SET_VALUES) {
 
29440
                ndr->flags |= LIBNDR_PRINT_SET_VALUES;
 
29441
        }
 
29442
        if (flags & NDR_IN) {
 
29443
                ndr_print_struct(ndr, "in", "spoolss_64");
 
29444
                ndr->depth++;
 
29445
                ndr->depth--;
 
29446
        }
 
29447
        if (flags & NDR_OUT) {
 
29448
                ndr_print_struct(ndr, "out", "spoolss_64");
 
29449
                ndr->depth++;
 
29450
                ndr_print_WERROR(ndr, "result", r->out.result);
 
29451
                ndr->depth--;
 
29452
        }
 
29453
        ndr->depth--;
 
29454
}
 
29455
 
 
29456
static enum ndr_err_code ndr_push_spoolss_65(struct ndr_push *ndr, int flags, const struct spoolss_65 *r)
 
29457
{
 
29458
        if (flags & NDR_IN) {
 
29459
        }
 
29460
        if (flags & NDR_OUT) {
 
29461
                NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
 
29462
        }
 
29463
        return NDR_ERR_SUCCESS;
 
29464
}
 
29465
 
 
29466
static enum ndr_err_code ndr_pull_spoolss_65(struct ndr_pull *ndr, int flags, struct spoolss_65 *r)
 
29467
{
 
29468
        if (flags & NDR_IN) {
 
29469
        }
 
29470
        if (flags & NDR_OUT) {
 
29471
                NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
 
29472
        }
 
29473
        return NDR_ERR_SUCCESS;
 
29474
}
 
29475
 
 
29476
_PUBLIC_ void ndr_print_spoolss_65(struct ndr_print *ndr, const char *name, int flags, const struct spoolss_65 *r)
 
29477
{
 
29478
        ndr_print_struct(ndr, name, "spoolss_65");
 
29479
        ndr->depth++;
 
29480
        if (flags & NDR_SET_VALUES) {
 
29481
                ndr->flags |= LIBNDR_PRINT_SET_VALUES;
 
29482
        }
 
29483
        if (flags & NDR_IN) {
 
29484
                ndr_print_struct(ndr, "in", "spoolss_65");
 
29485
                ndr->depth++;
 
29486
                ndr->depth--;
 
29487
        }
 
29488
        if (flags & NDR_OUT) {
 
29489
                ndr_print_struct(ndr, "out", "spoolss_65");
 
29490
                ndr->depth++;
 
29491
                ndr_print_WERROR(ndr, "result", r->out.result);
 
29492
                ndr->depth--;
 
29493
        }
 
29494
        ndr->depth--;
 
29495
}
 
29496
 
 
29497
static enum ndr_err_code ndr_push_spoolss_GetCorePrinterDrivers(struct ndr_push *ndr, int flags, const struct spoolss_GetCorePrinterDrivers *r)
 
29498
{
 
29499
        uint32_t cntr_core_printer_drivers_1;
 
29500
        if (flags & NDR_IN) {
 
29501
                NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.servername));
 
29502
                if (r->in.servername) {
 
29503
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.servername, CH_UTF16)));
 
29504
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0));
 
29505
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.servername, CH_UTF16)));
 
29506
                        NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.servername, ndr_charset_length(r->in.servername, CH_UTF16), sizeof(uint16_t), CH_UTF16));
 
29507
                }
 
29508
                if (r->in.architecture == NULL) {
 
29509
                        return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
 
29510
                }
 
29511
                NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.architecture, CH_UTF16)));
 
29512
                NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0));
 
29513
                NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.architecture, CH_UTF16)));
 
29514
                NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.architecture, ndr_charset_length(r->in.architecture, CH_UTF16), sizeof(uint16_t), CH_UTF16));
 
29515
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.core_driver_size));
 
29516
                if (r->in.core_driver_dependencies == NULL) {
 
29517
                        return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
 
29518
                }
 
29519
                NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, r->in.core_driver_size));
 
29520
                NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.core_driver_dependencies, r->in.core_driver_size, sizeof(uint16_t), CH_UTF16));
 
29521
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.core_printer_driver_count));
 
29522
        }
 
29523
        if (flags & NDR_OUT) {
 
29524
                if (r->out.core_printer_drivers == NULL) {
 
29525
                        return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
 
29526
                }
 
29527
                NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, r->in.core_printer_driver_count));
 
29528
                for (cntr_core_printer_drivers_1 = 0; cntr_core_printer_drivers_1 < r->in.core_printer_driver_count; cntr_core_printer_drivers_1++) {
 
29529
                        NDR_CHECK(ndr_push_spoolss_CorePrinterDriver(ndr, NDR_SCALARS, &r->out.core_printer_drivers[cntr_core_printer_drivers_1]));
 
29530
                }
 
29531
                NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
 
29532
        }
 
29533
        return NDR_ERR_SUCCESS;
 
29534
}
 
29535
 
 
29536
static enum ndr_err_code ndr_pull_spoolss_GetCorePrinterDrivers(struct ndr_pull *ndr, int flags, struct spoolss_GetCorePrinterDrivers *r)
 
29537
{
 
29538
        uint32_t _ptr_servername;
 
29539
        uint32_t cntr_core_printer_drivers_1;
 
29540
        TALLOC_CTX *_mem_save_servername_0;
 
29541
        TALLOC_CTX *_mem_save_core_printer_drivers_1;
 
29542
        if (flags & NDR_IN) {
 
29543
                ZERO_STRUCT(r->out);
 
29544
 
 
29545
                NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_servername));
 
29546
                if (_ptr_servername) {
 
29547
                        NDR_PULL_ALLOC(ndr, r->in.servername);
 
29548
                } else {
 
29549
                        r->in.servername = NULL;
 
29550
                }
 
29551
                if (r->in.servername) {
 
29552
                        _mem_save_servername_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
29553
                        NDR_PULL_SET_MEM_CTX(ndr, r->in.servername, 0);
 
29554
                        NDR_CHECK(ndr_pull_array_size(ndr, &r->in.servername));
 
29555
                        NDR_CHECK(ndr_pull_array_length(ndr, &r->in.servername));
 
29556
                        if (ndr_get_array_length(ndr, &r->in.servername) > ndr_get_array_size(ndr, &r->in.servername)) {
 
29557
                                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.servername), ndr_get_array_length(ndr, &r->in.servername));
 
29558
                        }
 
29559
                        NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.servername), sizeof(uint16_t)));
 
29560
                        NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.servername, ndr_get_array_length(ndr, &r->in.servername), sizeof(uint16_t), CH_UTF16));
 
29561
                        NDR_PULL_SET_MEM_CTX(ndr, _mem_save_servername_0, 0);
 
29562
                }
 
29563
                NDR_CHECK(ndr_pull_array_size(ndr, &r->in.architecture));
 
29564
                NDR_CHECK(ndr_pull_array_length(ndr, &r->in.architecture));
 
29565
                if (ndr_get_array_length(ndr, &r->in.architecture) > ndr_get_array_size(ndr, &r->in.architecture)) {
 
29566
                        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.architecture), ndr_get_array_length(ndr, &r->in.architecture));
 
29567
                }
 
29568
                NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.architecture), sizeof(uint16_t)));
 
29569
                NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.architecture, ndr_get_array_length(ndr, &r->in.architecture), sizeof(uint16_t), CH_UTF16));
 
29570
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.core_driver_size));
 
29571
                NDR_CHECK(ndr_pull_array_size(ndr, &r->in.core_driver_dependencies));
 
29572
                NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.core_driver_dependencies, ndr_get_array_size(ndr, &r->in.core_driver_dependencies), sizeof(uint16_t), CH_UTF16));
 
29573
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.core_printer_driver_count));
 
29574
                NDR_PULL_ALLOC_N(ndr, r->out.core_printer_drivers, r->in.core_printer_driver_count);
 
29575
                memset(r->out.core_printer_drivers, 0, (r->in.core_printer_driver_count) * sizeof(*r->out.core_printer_drivers));
 
29576
                if (r->in.core_driver_dependencies) {
 
29577
                        NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->in.core_driver_dependencies, r->in.core_driver_size));
 
29578
                }
 
29579
        }
 
29580
        if (flags & NDR_OUT) {
 
29581
                NDR_CHECK(ndr_pull_array_size(ndr, &r->out.core_printer_drivers));
 
29582
                if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
 
29583
                        NDR_PULL_ALLOC_N(ndr, r->out.core_printer_drivers, ndr_get_array_size(ndr, &r->out.core_printer_drivers));
 
29584
                }
 
29585
                _mem_save_core_printer_drivers_1 = NDR_PULL_GET_MEM_CTX(ndr);
 
29586
                NDR_PULL_SET_MEM_CTX(ndr, r->out.core_printer_drivers, 0);
 
29587
                for (cntr_core_printer_drivers_1 = 0; cntr_core_printer_drivers_1 < r->in.core_printer_driver_count; cntr_core_printer_drivers_1++) {
 
29588
                        NDR_CHECK(ndr_pull_spoolss_CorePrinterDriver(ndr, NDR_SCALARS, &r->out.core_printer_drivers[cntr_core_printer_drivers_1]));
 
29589
                }
 
29590
                NDR_PULL_SET_MEM_CTX(ndr, _mem_save_core_printer_drivers_1, 0);
 
29591
                NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
 
29592
                if (r->out.core_printer_drivers) {
 
29593
                        NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->out.core_printer_drivers, r->in.core_printer_driver_count));
 
29594
                }
 
29595
        }
 
29596
        return NDR_ERR_SUCCESS;
 
29597
}
 
29598
 
 
29599
_PUBLIC_ void ndr_print_spoolss_GetCorePrinterDrivers(struct ndr_print *ndr, const char *name, int flags, const struct spoolss_GetCorePrinterDrivers *r)
 
29600
{
 
29601
        uint32_t cntr_core_printer_drivers_1;
 
29602
        ndr_print_struct(ndr, name, "spoolss_GetCorePrinterDrivers");
 
29603
        ndr->depth++;
 
29604
        if (flags & NDR_SET_VALUES) {
 
29605
                ndr->flags |= LIBNDR_PRINT_SET_VALUES;
 
29606
        }
 
29607
        if (flags & NDR_IN) {
 
29608
                ndr_print_struct(ndr, "in", "spoolss_GetCorePrinterDrivers");
 
29609
                ndr->depth++;
 
29610
                ndr_print_ptr(ndr, "servername", r->in.servername);
 
29611
                ndr->depth++;
 
29612
                if (r->in.servername) {
 
29613
                        ndr_print_string(ndr, "servername", r->in.servername);
 
29614
                }
 
29615
                ndr->depth--;
 
29616
                ndr_print_ptr(ndr, "architecture", r->in.architecture);
 
29617
                ndr->depth++;
 
29618
                ndr_print_string(ndr, "architecture", r->in.architecture);
 
29619
                ndr->depth--;
 
29620
                ndr_print_uint32(ndr, "core_driver_size", r->in.core_driver_size);
 
29621
                ndr_print_ptr(ndr, "core_driver_dependencies", r->in.core_driver_dependencies);
 
29622
                ndr->depth++;
 
29623
                ndr_print_string(ndr, "core_driver_dependencies", r->in.core_driver_dependencies);
 
29624
                ndr->depth--;
 
29625
                ndr_print_uint32(ndr, "core_printer_driver_count", r->in.core_printer_driver_count);
 
29626
                ndr->depth--;
 
29627
        }
 
29628
        if (flags & NDR_OUT) {
 
29629
                ndr_print_struct(ndr, "out", "spoolss_GetCorePrinterDrivers");
 
29630
                ndr->depth++;
 
29631
                ndr_print_ptr(ndr, "core_printer_drivers", r->out.core_printer_drivers);
 
29632
                ndr->depth++;
 
29633
                ndr->print(ndr, "%s: ARRAY(%d)", "core_printer_drivers", (int)r->in.core_printer_driver_count);
 
29634
                ndr->depth++;
 
29635
                for (cntr_core_printer_drivers_1=0;cntr_core_printer_drivers_1<r->in.core_printer_driver_count;cntr_core_printer_drivers_1++) {
 
29636
                        char *idx_1=NULL;
 
29637
                        if (asprintf(&idx_1, "[%d]", cntr_core_printer_drivers_1) != -1) {
 
29638
                                ndr_print_spoolss_CorePrinterDriver(ndr, "core_printer_drivers", &r->out.core_printer_drivers[cntr_core_printer_drivers_1]);
 
29639
                                free(idx_1);
 
29640
                        }
 
29641
                }
 
29642
                ndr->depth--;
 
29643
                ndr->depth--;
 
29644
                ndr_print_WERROR(ndr, "result", r->out.result);
 
29645
                ndr->depth--;
 
29646
        }
 
29647
        ndr->depth--;
 
29648
}
 
29649
 
 
29650
static enum ndr_err_code ndr_push_spoolss_67(struct ndr_push *ndr, int flags, const struct spoolss_67 *r)
 
29651
{
 
29652
        if (flags & NDR_IN) {
 
29653
        }
 
29654
        if (flags & NDR_OUT) {
 
29655
                NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
 
29656
        }
 
29657
        return NDR_ERR_SUCCESS;
 
29658
}
 
29659
 
 
29660
static enum ndr_err_code ndr_pull_spoolss_67(struct ndr_pull *ndr, int flags, struct spoolss_67 *r)
 
29661
{
 
29662
        if (flags & NDR_IN) {
 
29663
        }
 
29664
        if (flags & NDR_OUT) {
 
29665
                NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
 
29666
        }
 
29667
        return NDR_ERR_SUCCESS;
 
29668
}
 
29669
 
 
29670
_PUBLIC_ void ndr_print_spoolss_67(struct ndr_print *ndr, const char *name, int flags, const struct spoolss_67 *r)
 
29671
{
 
29672
        ndr_print_struct(ndr, name, "spoolss_67");
 
29673
        ndr->depth++;
 
29674
        if (flags & NDR_SET_VALUES) {
 
29675
                ndr->flags |= LIBNDR_PRINT_SET_VALUES;
 
29676
        }
 
29677
        if (flags & NDR_IN) {
 
29678
                ndr_print_struct(ndr, "in", "spoolss_67");
 
29679
                ndr->depth++;
 
29680
                ndr->depth--;
 
29681
        }
 
29682
        if (flags & NDR_OUT) {
 
29683
                ndr_print_struct(ndr, "out", "spoolss_67");
 
29684
                ndr->depth++;
 
29685
                ndr_print_WERROR(ndr, "result", r->out.result);
 
29686
                ndr->depth--;
 
29687
        }
 
29688
        ndr->depth--;
 
29689
}
 
29690
 
 
29691
static enum ndr_err_code ndr_push_spoolss_GetPrinterDriverPackagePath(struct ndr_push *ndr, int flags, const struct spoolss_GetPrinterDriverPackagePath *r)
 
29692
{
 
29693
        if (flags & NDR_IN) {
 
29694
                NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.servername));
 
29695
                if (r->in.servername) {
 
29696
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.servername, CH_UTF16)));
 
29697
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0));
 
29698
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.servername, CH_UTF16)));
 
29699
                        NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.servername, ndr_charset_length(r->in.servername, CH_UTF16), sizeof(uint16_t), CH_UTF16));
 
29700
                }
 
29701
                if (r->in.architecture == NULL) {
 
29702
                        return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
 
29703
                }
 
29704
                NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.architecture, CH_UTF16)));
 
29705
                NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0));
 
29706
                NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.architecture, CH_UTF16)));
 
29707
                NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.architecture, ndr_charset_length(r->in.architecture, CH_UTF16), sizeof(uint16_t), CH_UTF16));
 
29708
                NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.language));
 
29709
                if (r->in.language) {
 
29710
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.language, CH_UTF16)));
 
29711
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0));
 
29712
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.language, CH_UTF16)));
 
29713
                        NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.language, ndr_charset_length(r->in.language, CH_UTF16), sizeof(uint16_t), CH_UTF16));
 
29714
                }
 
29715
                if (r->in.package_id == NULL) {
 
29716
                        return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
 
29717
                }
 
29718
                NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.package_id, CH_UTF16)));
 
29719
                NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0));
 
29720
                NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.package_id, CH_UTF16)));
 
29721
                NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.package_id, ndr_charset_length(r->in.package_id, CH_UTF16), sizeof(uint16_t), CH_UTF16));
 
29722
                NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.driver_package_cab));
 
29723
                if (r->in.driver_package_cab) {
 
29724
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, r->in.driver_package_cab_size));
 
29725
                        NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.driver_package_cab, r->in.driver_package_cab_size, sizeof(uint16_t), CH_UTF16));
 
29726
                }
 
29727
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.driver_package_cab_size));
 
29728
        }
 
29729
        if (flags & NDR_OUT) {
 
29730
                NDR_CHECK(ndr_push_unique_ptr(ndr, r->out.driver_package_cab));
 
29731
                if (r->out.driver_package_cab) {
 
29732
                        NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, r->in.driver_package_cab_size));
 
29733
                        NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->out.driver_package_cab, r->in.driver_package_cab_size, sizeof(uint16_t), CH_UTF16));
 
29734
                }
 
29735
                if (r->out.required == NULL) {
 
29736
                        return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
 
29737
                }
 
29738
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.required));
 
29739
                NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
 
29740
        }
 
29741
        return NDR_ERR_SUCCESS;
 
29742
}
 
29743
 
 
29744
static enum ndr_err_code ndr_pull_spoolss_GetPrinterDriverPackagePath(struct ndr_pull *ndr, int flags, struct spoolss_GetPrinterDriverPackagePath *r)
 
29745
{
 
29746
        uint32_t _ptr_servername;
 
29747
        uint32_t _ptr_language;
 
29748
        uint32_t _ptr_driver_package_cab;
 
29749
        TALLOC_CTX *_mem_save_servername_0;
 
29750
        TALLOC_CTX *_mem_save_language_0;
 
29751
        TALLOC_CTX *_mem_save_driver_package_cab_0;
 
29752
        TALLOC_CTX *_mem_save_required_0;
 
29753
        if (flags & NDR_IN) {
 
29754
                ZERO_STRUCT(r->out);
 
29755
 
 
29756
                NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_servername));
 
29757
                if (_ptr_servername) {
 
29758
                        NDR_PULL_ALLOC(ndr, r->in.servername);
 
29759
                } else {
 
29760
                        r->in.servername = NULL;
 
29761
                }
 
29762
                if (r->in.servername) {
 
29763
                        _mem_save_servername_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
29764
                        NDR_PULL_SET_MEM_CTX(ndr, r->in.servername, 0);
 
29765
                        NDR_CHECK(ndr_pull_array_size(ndr, &r->in.servername));
 
29766
                        NDR_CHECK(ndr_pull_array_length(ndr, &r->in.servername));
 
29767
                        if (ndr_get_array_length(ndr, &r->in.servername) > ndr_get_array_size(ndr, &r->in.servername)) {
 
29768
                                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.servername), ndr_get_array_length(ndr, &r->in.servername));
 
29769
                        }
 
29770
                        NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.servername), sizeof(uint16_t)));
 
29771
                        NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.servername, ndr_get_array_length(ndr, &r->in.servername), sizeof(uint16_t), CH_UTF16));
 
29772
                        NDR_PULL_SET_MEM_CTX(ndr, _mem_save_servername_0, 0);
 
29773
                }
 
29774
                NDR_CHECK(ndr_pull_array_size(ndr, &r->in.architecture));
 
29775
                NDR_CHECK(ndr_pull_array_length(ndr, &r->in.architecture));
 
29776
                if (ndr_get_array_length(ndr, &r->in.architecture) > ndr_get_array_size(ndr, &r->in.architecture)) {
 
29777
                        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.architecture), ndr_get_array_length(ndr, &r->in.architecture));
 
29778
                }
 
29779
                NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.architecture), sizeof(uint16_t)));
 
29780
                NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.architecture, ndr_get_array_length(ndr, &r->in.architecture), sizeof(uint16_t), CH_UTF16));
 
29781
                NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_language));
 
29782
                if (_ptr_language) {
 
29783
                        NDR_PULL_ALLOC(ndr, r->in.language);
 
29784
                } else {
 
29785
                        r->in.language = NULL;
 
29786
                }
 
29787
                if (r->in.language) {
 
29788
                        _mem_save_language_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
29789
                        NDR_PULL_SET_MEM_CTX(ndr, r->in.language, 0);
 
29790
                        NDR_CHECK(ndr_pull_array_size(ndr, &r->in.language));
 
29791
                        NDR_CHECK(ndr_pull_array_length(ndr, &r->in.language));
 
29792
                        if (ndr_get_array_length(ndr, &r->in.language) > ndr_get_array_size(ndr, &r->in.language)) {
 
29793
                                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.language), ndr_get_array_length(ndr, &r->in.language));
 
29794
                        }
 
29795
                        NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.language), sizeof(uint16_t)));
 
29796
                        NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.language, ndr_get_array_length(ndr, &r->in.language), sizeof(uint16_t), CH_UTF16));
 
29797
                        NDR_PULL_SET_MEM_CTX(ndr, _mem_save_language_0, 0);
 
29798
                }
 
29799
                NDR_CHECK(ndr_pull_array_size(ndr, &r->in.package_id));
 
29800
                NDR_CHECK(ndr_pull_array_length(ndr, &r->in.package_id));
 
29801
                if (ndr_get_array_length(ndr, &r->in.package_id) > ndr_get_array_size(ndr, &r->in.package_id)) {
 
29802
                        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.package_id), ndr_get_array_length(ndr, &r->in.package_id));
 
29803
                }
 
29804
                NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.package_id), sizeof(uint16_t)));
 
29805
                NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.package_id, ndr_get_array_length(ndr, &r->in.package_id), sizeof(uint16_t), CH_UTF16));
 
29806
                NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_driver_package_cab));
 
29807
                if (_ptr_driver_package_cab) {
 
29808
                        NDR_PULL_ALLOC(ndr, r->in.driver_package_cab);
 
29809
                } else {
 
29810
                        r->in.driver_package_cab = NULL;
 
29811
                }
 
29812
                if (r->in.driver_package_cab) {
 
29813
                        _mem_save_driver_package_cab_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
29814
                        NDR_PULL_SET_MEM_CTX(ndr, r->in.driver_package_cab, 0);
 
29815
                        NDR_CHECK(ndr_pull_array_size(ndr, &r->in.driver_package_cab));
 
29816
                        NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.driver_package_cab, ndr_get_array_size(ndr, &r->in.driver_package_cab), sizeof(uint16_t), CH_UTF16));
 
29817
                        NDR_PULL_SET_MEM_CTX(ndr, _mem_save_driver_package_cab_0, 0);
 
29818
                }
 
29819
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.driver_package_cab_size));
 
29820
                NDR_PULL_ALLOC(ndr, r->out.required);
 
29821
                ZERO_STRUCTP(r->out.required);
 
29822
                if (r->in.driver_package_cab) {
 
29823
                        NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->in.driver_package_cab, r->in.driver_package_cab_size));
 
29824
                }
 
29825
        }
 
29826
        if (flags & NDR_OUT) {
 
29827
                NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_driver_package_cab));
 
29828
                if (_ptr_driver_package_cab) {
 
29829
                        NDR_PULL_ALLOC(ndr, r->out.driver_package_cab);
 
29830
                } else {
 
29831
                        r->out.driver_package_cab = NULL;
 
29832
                }
 
29833
                if (r->out.driver_package_cab) {
 
29834
                        _mem_save_driver_package_cab_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
29835
                        NDR_PULL_SET_MEM_CTX(ndr, r->out.driver_package_cab, 0);
 
29836
                        NDR_CHECK(ndr_pull_array_size(ndr, &r->out.driver_package_cab));
 
29837
                        NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->out.driver_package_cab, ndr_get_array_size(ndr, &r->out.driver_package_cab), sizeof(uint16_t), CH_UTF16));
 
29838
                        NDR_PULL_SET_MEM_CTX(ndr, _mem_save_driver_package_cab_0, 0);
 
29839
                }
 
29840
                if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
 
29841
                        NDR_PULL_ALLOC(ndr, r->out.required);
 
29842
                }
 
29843
                _mem_save_required_0 = NDR_PULL_GET_MEM_CTX(ndr);
 
29844
                NDR_PULL_SET_MEM_CTX(ndr, r->out.required, LIBNDR_FLAG_REF_ALLOC);
 
29845
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.required));
 
29846
                NDR_PULL_SET_MEM_CTX(ndr, _mem_save_required_0, LIBNDR_FLAG_REF_ALLOC);
 
29847
                NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
 
29848
                if (r->out.driver_package_cab) {
 
29849
                        NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->out.driver_package_cab, r->in.driver_package_cab_size));
 
29850
                }
 
29851
        }
 
29852
        return NDR_ERR_SUCCESS;
 
29853
}
 
29854
 
 
29855
_PUBLIC_ void ndr_print_spoolss_GetPrinterDriverPackagePath(struct ndr_print *ndr, const char *name, int flags, const struct spoolss_GetPrinterDriverPackagePath *r)
 
29856
{
 
29857
        ndr_print_struct(ndr, name, "spoolss_GetPrinterDriverPackagePath");
 
29858
        ndr->depth++;
 
29859
        if (flags & NDR_SET_VALUES) {
 
29860
                ndr->flags |= LIBNDR_PRINT_SET_VALUES;
 
29861
        }
 
29862
        if (flags & NDR_IN) {
 
29863
                ndr_print_struct(ndr, "in", "spoolss_GetPrinterDriverPackagePath");
 
29864
                ndr->depth++;
 
29865
                ndr_print_ptr(ndr, "servername", r->in.servername);
 
29866
                ndr->depth++;
 
29867
                if (r->in.servername) {
 
29868
                        ndr_print_string(ndr, "servername", r->in.servername);
 
29869
                }
 
29870
                ndr->depth--;
 
29871
                ndr_print_ptr(ndr, "architecture", r->in.architecture);
 
29872
                ndr->depth++;
 
29873
                ndr_print_string(ndr, "architecture", r->in.architecture);
 
29874
                ndr->depth--;
 
29875
                ndr_print_ptr(ndr, "language", r->in.language);
 
29876
                ndr->depth++;
 
29877
                if (r->in.language) {
 
29878
                        ndr_print_string(ndr, "language", r->in.language);
 
29879
                }
 
29880
                ndr->depth--;
 
29881
                ndr_print_ptr(ndr, "package_id", r->in.package_id);
 
29882
                ndr->depth++;
 
29883
                ndr_print_string(ndr, "package_id", r->in.package_id);
 
29884
                ndr->depth--;
 
29885
                ndr_print_ptr(ndr, "driver_package_cab", r->in.driver_package_cab);
 
29886
                ndr->depth++;
 
29887
                if (r->in.driver_package_cab) {
 
29888
                        ndr_print_string(ndr, "driver_package_cab", r->in.driver_package_cab);
 
29889
                }
 
29890
                ndr->depth--;
 
29891
                ndr_print_uint32(ndr, "driver_package_cab_size", r->in.driver_package_cab_size);
 
29892
                ndr->depth--;
 
29893
        }
 
29894
        if (flags & NDR_OUT) {
 
29895
                ndr_print_struct(ndr, "out", "spoolss_GetPrinterDriverPackagePath");
 
29896
                ndr->depth++;
 
29897
                ndr_print_ptr(ndr, "driver_package_cab", r->out.driver_package_cab);
 
29898
                ndr->depth++;
 
29899
                if (r->out.driver_package_cab) {
 
29900
                        ndr_print_string(ndr, "driver_package_cab", r->out.driver_package_cab);
 
29901
                }
 
29902
                ndr->depth--;
 
29903
                ndr_print_ptr(ndr, "required", r->out.required);
 
29904
                ndr->depth++;
 
29905
                ndr_print_uint32(ndr, "required", *r->out.required);
 
29906
                ndr->depth--;
 
29907
                ndr_print_WERROR(ndr, "result", r->out.result);
 
29908
                ndr->depth--;
 
29909
        }
 
29910
        ndr->depth--;
 
29911
}
 
29912
 
 
29913
static enum ndr_err_code ndr_push_spoolss_69(struct ndr_push *ndr, int flags, const struct spoolss_69 *r)
 
29914
{
 
29915
        if (flags & NDR_IN) {
 
29916
        }
 
29917
        if (flags & NDR_OUT) {
 
29918
                NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
 
29919
        }
 
29920
        return NDR_ERR_SUCCESS;
 
29921
}
 
29922
 
 
29923
static enum ndr_err_code ndr_pull_spoolss_69(struct ndr_pull *ndr, int flags, struct spoolss_69 *r)
 
29924
{
 
29925
        if (flags & NDR_IN) {
 
29926
        }
 
29927
        if (flags & NDR_OUT) {
 
29928
                NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
 
29929
        }
 
29930
        return NDR_ERR_SUCCESS;
 
29931
}
 
29932
 
 
29933
_PUBLIC_ void ndr_print_spoolss_69(struct ndr_print *ndr, const char *name, int flags, const struct spoolss_69 *r)
 
29934
{
 
29935
        ndr_print_struct(ndr, name, "spoolss_69");
 
29936
        ndr->depth++;
 
29937
        if (flags & NDR_SET_VALUES) {
 
29938
                ndr->flags |= LIBNDR_PRINT_SET_VALUES;
 
29939
        }
 
29940
        if (flags & NDR_IN) {
 
29941
                ndr_print_struct(ndr, "in", "spoolss_69");
 
29942
                ndr->depth++;
 
29943
                ndr->depth--;
 
29944
        }
 
29945
        if (flags & NDR_OUT) {
 
29946
                ndr_print_struct(ndr, "out", "spoolss_69");
 
29947
                ndr->depth++;
 
29948
                ndr_print_WERROR(ndr, "result", r->out.result);
 
29949
                ndr->depth--;
 
29950
        }
 
29951
        ndr->depth--;
 
29952
}
 
29953
 
 
29954
static enum ndr_err_code ndr_push_spoolss_6a(struct ndr_push *ndr, int flags, const struct spoolss_6a *r)
 
29955
{
 
29956
        if (flags & NDR_IN) {
 
29957
        }
 
29958
        if (flags & NDR_OUT) {
 
29959
                NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
 
29960
        }
 
29961
        return NDR_ERR_SUCCESS;
 
29962
}
 
29963
 
 
29964
static enum ndr_err_code ndr_pull_spoolss_6a(struct ndr_pull *ndr, int flags, struct spoolss_6a *r)
 
29965
{
 
29966
        if (flags & NDR_IN) {
 
29967
        }
 
29968
        if (flags & NDR_OUT) {
 
29969
                NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
 
29970
        }
 
29971
        return NDR_ERR_SUCCESS;
 
29972
}
 
29973
 
 
29974
_PUBLIC_ void ndr_print_spoolss_6a(struct ndr_print *ndr, const char *name, int flags, const struct spoolss_6a *r)
 
29975
{
 
29976
        ndr_print_struct(ndr, name, "spoolss_6a");
 
29977
        ndr->depth++;
 
29978
        if (flags & NDR_SET_VALUES) {
 
29979
                ndr->flags |= LIBNDR_PRINT_SET_VALUES;
 
29980
        }
 
29981
        if (flags & NDR_IN) {
 
29982
                ndr_print_struct(ndr, "in", "spoolss_6a");
 
29983
                ndr->depth++;
 
29984
                ndr->depth--;
 
29985
        }
 
29986
        if (flags & NDR_OUT) {
 
29987
                ndr_print_struct(ndr, "out", "spoolss_6a");
 
29988
                ndr->depth++;
 
29989
                ndr_print_WERROR(ndr, "result", r->out.result);
 
29990
                ndr->depth--;
 
29991
        }
 
29992
        ndr->depth--;
 
29993
}
 
29994
 
 
29995
static enum ndr_err_code ndr_push_spoolss_6b(struct ndr_push *ndr, int flags, const struct spoolss_6b *r)
 
29996
{
 
29997
        if (flags & NDR_IN) {
 
29998
        }
 
29999
        if (flags & NDR_OUT) {
 
30000
                NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
 
30001
        }
 
30002
        return NDR_ERR_SUCCESS;
 
30003
}
 
30004
 
 
30005
static enum ndr_err_code ndr_pull_spoolss_6b(struct ndr_pull *ndr, int flags, struct spoolss_6b *r)
 
30006
{
 
30007
        if (flags & NDR_IN) {
 
30008
        }
 
30009
        if (flags & NDR_OUT) {
 
30010
                NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
 
30011
        }
 
30012
        return NDR_ERR_SUCCESS;
 
30013
}
 
30014
 
 
30015
_PUBLIC_ void ndr_print_spoolss_6b(struct ndr_print *ndr, const char *name, int flags, const struct spoolss_6b *r)
 
30016
{
 
30017
        ndr_print_struct(ndr, name, "spoolss_6b");
 
30018
        ndr->depth++;
 
30019
        if (flags & NDR_SET_VALUES) {
 
30020
                ndr->flags |= LIBNDR_PRINT_SET_VALUES;
 
30021
        }
 
30022
        if (flags & NDR_IN) {
 
30023
                ndr_print_struct(ndr, "in", "spoolss_6b");
 
30024
                ndr->depth++;
 
30025
                ndr->depth--;
 
30026
        }
 
30027
        if (flags & NDR_OUT) {
 
30028
                ndr_print_struct(ndr, "out", "spoolss_6b");
 
30029
                ndr->depth++;
 
30030
                ndr_print_WERROR(ndr, "result", r->out.result);
 
30031
                ndr->depth--;
 
30032
        }
 
30033
        ndr->depth--;
 
30034
}
 
30035
 
 
30036
static enum ndr_err_code ndr_push_spoolss_6c(struct ndr_push *ndr, int flags, const struct spoolss_6c *r)
 
30037
{
 
30038
        if (flags & NDR_IN) {
 
30039
        }
 
30040
        if (flags & NDR_OUT) {
 
30041
                NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
 
30042
        }
 
30043
        return NDR_ERR_SUCCESS;
 
30044
}
 
30045
 
 
30046
static enum ndr_err_code ndr_pull_spoolss_6c(struct ndr_pull *ndr, int flags, struct spoolss_6c *r)
 
30047
{
 
30048
        if (flags & NDR_IN) {
 
30049
        }
 
30050
        if (flags & NDR_OUT) {
 
30051
                NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
 
30052
        }
 
30053
        return NDR_ERR_SUCCESS;
 
30054
}
 
30055
 
 
30056
_PUBLIC_ void ndr_print_spoolss_6c(struct ndr_print *ndr, const char *name, int flags, const struct spoolss_6c *r)
 
30057
{
 
30058
        ndr_print_struct(ndr, name, "spoolss_6c");
 
30059
        ndr->depth++;
 
30060
        if (flags & NDR_SET_VALUES) {
 
30061
                ndr->flags |= LIBNDR_PRINT_SET_VALUES;
 
30062
        }
 
30063
        if (flags & NDR_IN) {
 
30064
                ndr_print_struct(ndr, "in", "spoolss_6c");
 
30065
                ndr->depth++;
 
30066
                ndr->depth--;
 
30067
        }
 
30068
        if (flags & NDR_OUT) {
 
30069
                ndr_print_struct(ndr, "out", "spoolss_6c");
 
30070
                ndr->depth++;
 
30071
                ndr_print_WERROR(ndr, "result", r->out.result);
 
30072
                ndr->depth--;
 
30073
        }
 
30074
        ndr->depth--;
 
30075
}
 
30076
 
 
30077
static enum ndr_err_code ndr_push_spoolss_6d(struct ndr_push *ndr, int flags, const struct spoolss_6d *r)
 
30078
{
 
30079
        if (flags & NDR_IN) {
 
30080
        }
 
30081
        if (flags & NDR_OUT) {
 
30082
                NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
 
30083
        }
 
30084
        return NDR_ERR_SUCCESS;
 
30085
}
 
30086
 
 
30087
static enum ndr_err_code ndr_pull_spoolss_6d(struct ndr_pull *ndr, int flags, struct spoolss_6d *r)
 
30088
{
 
30089
        if (flags & NDR_IN) {
 
30090
        }
 
30091
        if (flags & NDR_OUT) {
 
30092
                NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
 
30093
        }
 
30094
        return NDR_ERR_SUCCESS;
 
30095
}
 
30096
 
 
30097
_PUBLIC_ void ndr_print_spoolss_6d(struct ndr_print *ndr, const char *name, int flags, const struct spoolss_6d *r)
 
30098
{
 
30099
        ndr_print_struct(ndr, name, "spoolss_6d");
 
30100
        ndr->depth++;
 
30101
        if (flags & NDR_SET_VALUES) {
 
30102
                ndr->flags |= LIBNDR_PRINT_SET_VALUES;
 
30103
        }
 
30104
        if (flags & NDR_IN) {
 
30105
                ndr_print_struct(ndr, "in", "spoolss_6d");
 
30106
                ndr->depth++;
 
30107
                ndr->depth--;
 
30108
        }
 
30109
        if (flags & NDR_OUT) {
 
30110
                ndr_print_struct(ndr, "out", "spoolss_6d");
 
30111
                ndr->depth++;
 
30112
                ndr_print_WERROR(ndr, "result", r->out.result);
 
30113
                ndr->depth--;
 
30114
        }
 
30115
        ndr->depth--;
 
30116
}
 
30117
 
 
30118
static const struct ndr_interface_call spoolss_calls[] = {
 
30119
        {
 
30120
                "spoolss_EnumPrinters",
 
30121
                sizeof(struct spoolss_EnumPrinters),
 
30122
                (ndr_push_flags_fn_t) ndr_push_spoolss_EnumPrinters,
 
30123
                (ndr_pull_flags_fn_t) ndr_pull_spoolss_EnumPrinters,
 
30124
                (ndr_print_function_t) ndr_print_spoolss_EnumPrinters,
 
30125
                false,
 
30126
        },
 
30127
        {
 
30128
                "spoolss_OpenPrinter",
 
30129
                sizeof(struct spoolss_OpenPrinter),
 
30130
                (ndr_push_flags_fn_t) ndr_push_spoolss_OpenPrinter,
 
30131
                (ndr_pull_flags_fn_t) ndr_pull_spoolss_OpenPrinter,
 
30132
                (ndr_print_function_t) ndr_print_spoolss_OpenPrinter,
 
30133
                false,
 
30134
        },
 
30135
        {
 
30136
                "spoolss_SetJob",
 
30137
                sizeof(struct spoolss_SetJob),
 
30138
                (ndr_push_flags_fn_t) ndr_push_spoolss_SetJob,
 
30139
                (ndr_pull_flags_fn_t) ndr_pull_spoolss_SetJob,
 
30140
                (ndr_print_function_t) ndr_print_spoolss_SetJob,
 
30141
                false,
 
30142
        },
 
30143
        {
 
30144
                "spoolss_GetJob",
 
30145
                sizeof(struct spoolss_GetJob),
 
30146
                (ndr_push_flags_fn_t) ndr_push_spoolss_GetJob,
 
30147
                (ndr_pull_flags_fn_t) ndr_pull_spoolss_GetJob,
 
30148
                (ndr_print_function_t) ndr_print_spoolss_GetJob,
 
30149
                false,
 
30150
        },
 
30151
        {
 
30152
                "spoolss_EnumJobs",
 
30153
                sizeof(struct spoolss_EnumJobs),
 
30154
                (ndr_push_flags_fn_t) ndr_push_spoolss_EnumJobs,
 
30155
                (ndr_pull_flags_fn_t) ndr_pull_spoolss_EnumJobs,
 
30156
                (ndr_print_function_t) ndr_print_spoolss_EnumJobs,
 
30157
                false,
 
30158
        },
 
30159
        {
 
30160
                "spoolss_AddPrinter",
 
30161
                sizeof(struct spoolss_AddPrinter),
 
30162
                (ndr_push_flags_fn_t) ndr_push_spoolss_AddPrinter,
 
30163
                (ndr_pull_flags_fn_t) ndr_pull_spoolss_AddPrinter,
 
30164
                (ndr_print_function_t) ndr_print_spoolss_AddPrinter,
 
30165
                false,
 
30166
        },
 
30167
        {
 
30168
                "spoolss_DeletePrinter",
 
30169
                sizeof(struct spoolss_DeletePrinter),
 
30170
                (ndr_push_flags_fn_t) ndr_push_spoolss_DeletePrinter,
 
30171
                (ndr_pull_flags_fn_t) ndr_pull_spoolss_DeletePrinter,
 
30172
                (ndr_print_function_t) ndr_print_spoolss_DeletePrinter,
 
30173
                false,
 
30174
        },
 
30175
        {
 
30176
                "spoolss_SetPrinter",
 
30177
                sizeof(struct spoolss_SetPrinter),
 
30178
                (ndr_push_flags_fn_t) ndr_push_spoolss_SetPrinter,
 
30179
                (ndr_pull_flags_fn_t) ndr_pull_spoolss_SetPrinter,
 
30180
                (ndr_print_function_t) ndr_print_spoolss_SetPrinter,
 
30181
                false,
 
30182
        },
 
30183
        {
 
30184
                "spoolss_GetPrinter",
 
30185
                sizeof(struct spoolss_GetPrinter),
 
30186
                (ndr_push_flags_fn_t) ndr_push_spoolss_GetPrinter,
 
30187
                (ndr_pull_flags_fn_t) ndr_pull_spoolss_GetPrinter,
 
30188
                (ndr_print_function_t) ndr_print_spoolss_GetPrinter,
 
30189
                false,
 
30190
        },
 
30191
        {
 
30192
                "spoolss_AddPrinterDriver",
 
30193
                sizeof(struct spoolss_AddPrinterDriver),
 
30194
                (ndr_push_flags_fn_t) ndr_push_spoolss_AddPrinterDriver,
 
30195
                (ndr_pull_flags_fn_t) ndr_pull_spoolss_AddPrinterDriver,
 
30196
                (ndr_print_function_t) ndr_print_spoolss_AddPrinterDriver,
 
30197
                false,
 
30198
        },
 
30199
        {
 
30200
                "spoolss_EnumPrinterDrivers",
 
30201
                sizeof(struct spoolss_EnumPrinterDrivers),
 
30202
                (ndr_push_flags_fn_t) ndr_push_spoolss_EnumPrinterDrivers,
 
30203
                (ndr_pull_flags_fn_t) ndr_pull_spoolss_EnumPrinterDrivers,
 
30204
                (ndr_print_function_t) ndr_print_spoolss_EnumPrinterDrivers,
 
30205
                false,
 
30206
        },
 
30207
        {
 
30208
                "spoolss_GetPrinterDriver",
 
30209
                sizeof(struct spoolss_GetPrinterDriver),
 
30210
                (ndr_push_flags_fn_t) ndr_push_spoolss_GetPrinterDriver,
 
30211
                (ndr_pull_flags_fn_t) ndr_pull_spoolss_GetPrinterDriver,
 
30212
                (ndr_print_function_t) ndr_print_spoolss_GetPrinterDriver,
 
30213
                false,
 
30214
        },
 
30215
        {
 
30216
                "spoolss_GetPrinterDriverDirectory",
 
30217
                sizeof(struct spoolss_GetPrinterDriverDirectory),
 
30218
                (ndr_push_flags_fn_t) ndr_push_spoolss_GetPrinterDriverDirectory,
 
30219
                (ndr_pull_flags_fn_t) ndr_pull_spoolss_GetPrinterDriverDirectory,
 
30220
                (ndr_print_function_t) ndr_print_spoolss_GetPrinterDriverDirectory,
 
30221
                false,
 
30222
        },
 
30223
        {
 
30224
                "spoolss_DeletePrinterDriver",
 
30225
                sizeof(struct spoolss_DeletePrinterDriver),
 
30226
                (ndr_push_flags_fn_t) ndr_push_spoolss_DeletePrinterDriver,
 
30227
                (ndr_pull_flags_fn_t) ndr_pull_spoolss_DeletePrinterDriver,
 
30228
                (ndr_print_function_t) ndr_print_spoolss_DeletePrinterDriver,
 
30229
                false,
 
30230
        },
 
30231
        {
 
30232
                "spoolss_AddPrintProcessor",
 
30233
                sizeof(struct spoolss_AddPrintProcessor),
 
30234
                (ndr_push_flags_fn_t) ndr_push_spoolss_AddPrintProcessor,
 
30235
                (ndr_pull_flags_fn_t) ndr_pull_spoolss_AddPrintProcessor,
 
30236
                (ndr_print_function_t) ndr_print_spoolss_AddPrintProcessor,
 
30237
                false,
 
30238
        },
 
30239
        {
 
30240
                "spoolss_EnumPrintProcessors",
 
30241
                sizeof(struct spoolss_EnumPrintProcessors),
 
30242
                (ndr_push_flags_fn_t) ndr_push_spoolss_EnumPrintProcessors,
 
30243
                (ndr_pull_flags_fn_t) ndr_pull_spoolss_EnumPrintProcessors,
 
30244
                (ndr_print_function_t) ndr_print_spoolss_EnumPrintProcessors,
 
30245
                false,
 
30246
        },
 
30247
        {
 
30248
                "spoolss_GetPrintProcessorDirectory",
 
30249
                sizeof(struct spoolss_GetPrintProcessorDirectory),
 
30250
                (ndr_push_flags_fn_t) ndr_push_spoolss_GetPrintProcessorDirectory,
 
30251
                (ndr_pull_flags_fn_t) ndr_pull_spoolss_GetPrintProcessorDirectory,
 
30252
                (ndr_print_function_t) ndr_print_spoolss_GetPrintProcessorDirectory,
 
30253
                false,
 
30254
        },
 
30255
        {
 
30256
                "spoolss_StartDocPrinter",
 
30257
                sizeof(struct spoolss_StartDocPrinter),
 
30258
                (ndr_push_flags_fn_t) ndr_push_spoolss_StartDocPrinter,
 
30259
                (ndr_pull_flags_fn_t) ndr_pull_spoolss_StartDocPrinter,
 
30260
                (ndr_print_function_t) ndr_print_spoolss_StartDocPrinter,
 
30261
                false,
 
30262
        },
 
30263
        {
 
30264
                "spoolss_StartPagePrinter",
 
30265
                sizeof(struct spoolss_StartPagePrinter),
 
30266
                (ndr_push_flags_fn_t) ndr_push_spoolss_StartPagePrinter,
 
30267
                (ndr_pull_flags_fn_t) ndr_pull_spoolss_StartPagePrinter,
 
30268
                (ndr_print_function_t) ndr_print_spoolss_StartPagePrinter,
 
30269
                false,
 
30270
        },
 
30271
        {
 
30272
                "spoolss_WritePrinter",
 
30273
                sizeof(struct spoolss_WritePrinter),
 
30274
                (ndr_push_flags_fn_t) ndr_push_spoolss_WritePrinter,
 
30275
                (ndr_pull_flags_fn_t) ndr_pull_spoolss_WritePrinter,
 
30276
                (ndr_print_function_t) ndr_print_spoolss_WritePrinter,
 
30277
                false,
 
30278
        },
 
30279
        {
 
30280
                "spoolss_EndPagePrinter",
 
30281
                sizeof(struct spoolss_EndPagePrinter),
 
30282
                (ndr_push_flags_fn_t) ndr_push_spoolss_EndPagePrinter,
 
30283
                (ndr_pull_flags_fn_t) ndr_pull_spoolss_EndPagePrinter,
 
30284
                (ndr_print_function_t) ndr_print_spoolss_EndPagePrinter,
 
30285
                false,
 
30286
        },
 
30287
        {
 
30288
                "spoolss_AbortPrinter",
 
30289
                sizeof(struct spoolss_AbortPrinter),
 
30290
                (ndr_push_flags_fn_t) ndr_push_spoolss_AbortPrinter,
 
30291
                (ndr_pull_flags_fn_t) ndr_pull_spoolss_AbortPrinter,
 
30292
                (ndr_print_function_t) ndr_print_spoolss_AbortPrinter,
 
30293
                false,
 
30294
        },
 
30295
        {
 
30296
                "spoolss_ReadPrinter",
 
30297
                sizeof(struct spoolss_ReadPrinter),
 
30298
                (ndr_push_flags_fn_t) ndr_push_spoolss_ReadPrinter,
 
30299
                (ndr_pull_flags_fn_t) ndr_pull_spoolss_ReadPrinter,
 
30300
                (ndr_print_function_t) ndr_print_spoolss_ReadPrinter,
 
30301
                false,
 
30302
        },
 
30303
        {
 
30304
                "spoolss_EndDocPrinter",
 
30305
                sizeof(struct spoolss_EndDocPrinter),
 
30306
                (ndr_push_flags_fn_t) ndr_push_spoolss_EndDocPrinter,
 
30307
                (ndr_pull_flags_fn_t) ndr_pull_spoolss_EndDocPrinter,
 
30308
                (ndr_print_function_t) ndr_print_spoolss_EndDocPrinter,
 
30309
                false,
 
30310
        },
 
30311
        {
 
30312
                "spoolss_AddJob",
 
30313
                sizeof(struct spoolss_AddJob),
 
30314
                (ndr_push_flags_fn_t) ndr_push_spoolss_AddJob,
 
30315
                (ndr_pull_flags_fn_t) ndr_pull_spoolss_AddJob,
 
30316
                (ndr_print_function_t) ndr_print_spoolss_AddJob,
 
30317
                false,
 
30318
        },
 
30319
        {
 
30320
                "spoolss_ScheduleJob",
 
30321
                sizeof(struct spoolss_ScheduleJob),
 
30322
                (ndr_push_flags_fn_t) ndr_push_spoolss_ScheduleJob,
 
30323
                (ndr_pull_flags_fn_t) ndr_pull_spoolss_ScheduleJob,
 
30324
                (ndr_print_function_t) ndr_print_spoolss_ScheduleJob,
 
30325
                false,
 
30326
        },
 
30327
        {
 
30328
                "spoolss_GetPrinterData",
 
30329
                sizeof(struct spoolss_GetPrinterData),
 
30330
                (ndr_push_flags_fn_t) ndr_push_spoolss_GetPrinterData,
 
30331
                (ndr_pull_flags_fn_t) ndr_pull_spoolss_GetPrinterData,
 
30332
                (ndr_print_function_t) ndr_print_spoolss_GetPrinterData,
 
30333
                false,
 
30334
        },
 
30335
        {
 
30336
                "spoolss_SetPrinterData",
 
30337
                sizeof(struct spoolss_SetPrinterData),
 
30338
                (ndr_push_flags_fn_t) ndr_push_spoolss_SetPrinterData,
 
30339
                (ndr_pull_flags_fn_t) ndr_pull_spoolss_SetPrinterData,
 
30340
                (ndr_print_function_t) ndr_print_spoolss_SetPrinterData,
 
30341
                false,
 
30342
        },
 
30343
        {
 
30344
                "spoolss_WaitForPrinterChange",
 
30345
                sizeof(struct spoolss_WaitForPrinterChange),
 
30346
                (ndr_push_flags_fn_t) ndr_push_spoolss_WaitForPrinterChange,
 
30347
                (ndr_pull_flags_fn_t) ndr_pull_spoolss_WaitForPrinterChange,
 
30348
                (ndr_print_function_t) ndr_print_spoolss_WaitForPrinterChange,
 
30349
                false,
 
30350
        },
 
30351
        {
 
30352
                "spoolss_ClosePrinter",
 
30353
                sizeof(struct spoolss_ClosePrinter),
 
30354
                (ndr_push_flags_fn_t) ndr_push_spoolss_ClosePrinter,
 
30355
                (ndr_pull_flags_fn_t) ndr_pull_spoolss_ClosePrinter,
 
30356
                (ndr_print_function_t) ndr_print_spoolss_ClosePrinter,
 
30357
                false,
 
30358
        },
 
30359
        {
 
30360
                "spoolss_AddForm",
 
30361
                sizeof(struct spoolss_AddForm),
 
30362
                (ndr_push_flags_fn_t) ndr_push_spoolss_AddForm,
 
30363
                (ndr_pull_flags_fn_t) ndr_pull_spoolss_AddForm,
 
30364
                (ndr_print_function_t) ndr_print_spoolss_AddForm,
 
30365
                false,
 
30366
        },
 
30367
        {
 
30368
                "spoolss_DeleteForm",
 
30369
                sizeof(struct spoolss_DeleteForm),
 
30370
                (ndr_push_flags_fn_t) ndr_push_spoolss_DeleteForm,
 
30371
                (ndr_pull_flags_fn_t) ndr_pull_spoolss_DeleteForm,
 
30372
                (ndr_print_function_t) ndr_print_spoolss_DeleteForm,
 
30373
                false,
 
30374
        },
 
30375
        {
 
30376
                "spoolss_GetForm",
 
30377
                sizeof(struct spoolss_GetForm),
 
30378
                (ndr_push_flags_fn_t) ndr_push_spoolss_GetForm,
 
30379
                (ndr_pull_flags_fn_t) ndr_pull_spoolss_GetForm,
 
30380
                (ndr_print_function_t) ndr_print_spoolss_GetForm,
 
30381
                false,
 
30382
        },
 
30383
        {
 
30384
                "spoolss_SetForm",
 
30385
                sizeof(struct spoolss_SetForm),
 
30386
                (ndr_push_flags_fn_t) ndr_push_spoolss_SetForm,
 
30387
                (ndr_pull_flags_fn_t) ndr_pull_spoolss_SetForm,
 
30388
                (ndr_print_function_t) ndr_print_spoolss_SetForm,
 
30389
                false,
 
30390
        },
 
30391
        {
 
30392
                "spoolss_EnumForms",
 
30393
                sizeof(struct spoolss_EnumForms),
 
30394
                (ndr_push_flags_fn_t) ndr_push_spoolss_EnumForms,
 
30395
                (ndr_pull_flags_fn_t) ndr_pull_spoolss_EnumForms,
 
30396
                (ndr_print_function_t) ndr_print_spoolss_EnumForms,
 
30397
                false,
 
30398
        },
 
30399
        {
 
30400
                "spoolss_EnumPorts",
 
30401
                sizeof(struct spoolss_EnumPorts),
 
30402
                (ndr_push_flags_fn_t) ndr_push_spoolss_EnumPorts,
 
30403
                (ndr_pull_flags_fn_t) ndr_pull_spoolss_EnumPorts,
 
30404
                (ndr_print_function_t) ndr_print_spoolss_EnumPorts,
 
30405
                false,
 
30406
        },
 
30407
        {
 
30408
                "spoolss_EnumMonitors",
 
30409
                sizeof(struct spoolss_EnumMonitors),
 
30410
                (ndr_push_flags_fn_t) ndr_push_spoolss_EnumMonitors,
 
30411
                (ndr_pull_flags_fn_t) ndr_pull_spoolss_EnumMonitors,
 
30412
                (ndr_print_function_t) ndr_print_spoolss_EnumMonitors,
 
30413
                false,
 
30414
        },
 
30415
        {
 
30416
                "spoolss_AddPort",
 
30417
                sizeof(struct spoolss_AddPort),
 
30418
                (ndr_push_flags_fn_t) ndr_push_spoolss_AddPort,
 
30419
                (ndr_pull_flags_fn_t) ndr_pull_spoolss_AddPort,
 
30420
                (ndr_print_function_t) ndr_print_spoolss_AddPort,
 
30421
                false,
 
30422
        },
 
30423
        {
 
30424
                "spoolss_ConfigurePort",
 
30425
                sizeof(struct spoolss_ConfigurePort),
 
30426
                (ndr_push_flags_fn_t) ndr_push_spoolss_ConfigurePort,
 
30427
                (ndr_pull_flags_fn_t) ndr_pull_spoolss_ConfigurePort,
 
30428
                (ndr_print_function_t) ndr_print_spoolss_ConfigurePort,
 
30429
                false,
 
30430
        },
 
30431
        {
 
30432
                "spoolss_DeletePort",
 
30433
                sizeof(struct spoolss_DeletePort),
 
30434
                (ndr_push_flags_fn_t) ndr_push_spoolss_DeletePort,
 
30435
                (ndr_pull_flags_fn_t) ndr_pull_spoolss_DeletePort,
 
30436
                (ndr_print_function_t) ndr_print_spoolss_DeletePort,
 
30437
                false,
 
30438
        },
 
30439
        {
 
30440
                "spoolss_CreatePrinterIC",
 
30441
                sizeof(struct spoolss_CreatePrinterIC),
 
30442
                (ndr_push_flags_fn_t) ndr_push_spoolss_CreatePrinterIC,
 
30443
                (ndr_pull_flags_fn_t) ndr_pull_spoolss_CreatePrinterIC,
 
30444
                (ndr_print_function_t) ndr_print_spoolss_CreatePrinterIC,
 
30445
                false,
 
30446
        },
 
30447
        {
 
30448
                "spoolss_PlayGDIScriptOnPrinterIC",
 
30449
                sizeof(struct spoolss_PlayGDIScriptOnPrinterIC),
 
30450
                (ndr_push_flags_fn_t) ndr_push_spoolss_PlayGDIScriptOnPrinterIC,
 
30451
                (ndr_pull_flags_fn_t) ndr_pull_spoolss_PlayGDIScriptOnPrinterIC,
 
30452
                (ndr_print_function_t) ndr_print_spoolss_PlayGDIScriptOnPrinterIC,
 
30453
                false,
 
30454
        },
 
30455
        {
 
30456
                "spoolss_DeletePrinterIC",
 
30457
                sizeof(struct spoolss_DeletePrinterIC),
 
30458
                (ndr_push_flags_fn_t) ndr_push_spoolss_DeletePrinterIC,
 
30459
                (ndr_pull_flags_fn_t) ndr_pull_spoolss_DeletePrinterIC,
 
30460
                (ndr_print_function_t) ndr_print_spoolss_DeletePrinterIC,
 
30461
                false,
 
30462
        },
 
30463
        {
 
30464
                "spoolss_AddPrinterConnection",
 
30465
                sizeof(struct spoolss_AddPrinterConnection),
 
30466
                (ndr_push_flags_fn_t) ndr_push_spoolss_AddPrinterConnection,
 
30467
                (ndr_pull_flags_fn_t) ndr_pull_spoolss_AddPrinterConnection,
 
30468
                (ndr_print_function_t) ndr_print_spoolss_AddPrinterConnection,
 
30469
                false,
 
30470
        },
 
30471
        {
 
30472
                "spoolss_DeletePrinterConnection",
 
30473
                sizeof(struct spoolss_DeletePrinterConnection),
 
30474
                (ndr_push_flags_fn_t) ndr_push_spoolss_DeletePrinterConnection,
 
30475
                (ndr_pull_flags_fn_t) ndr_pull_spoolss_DeletePrinterConnection,
 
30476
                (ndr_print_function_t) ndr_print_spoolss_DeletePrinterConnection,
 
30477
                false,
 
30478
        },
 
30479
        {
 
30480
                "spoolss_PrinterMessageBox",
 
30481
                sizeof(struct spoolss_PrinterMessageBox),
 
30482
                (ndr_push_flags_fn_t) ndr_push_spoolss_PrinterMessageBox,
 
30483
                (ndr_pull_flags_fn_t) ndr_pull_spoolss_PrinterMessageBox,
 
30484
                (ndr_print_function_t) ndr_print_spoolss_PrinterMessageBox,
 
30485
                false,
 
30486
        },
 
30487
        {
 
30488
                "spoolss_AddMonitor",
 
30489
                sizeof(struct spoolss_AddMonitor),
 
30490
                (ndr_push_flags_fn_t) ndr_push_spoolss_AddMonitor,
 
30491
                (ndr_pull_flags_fn_t) ndr_pull_spoolss_AddMonitor,
 
30492
                (ndr_print_function_t) ndr_print_spoolss_AddMonitor,
 
30493
                false,
 
30494
        },
 
30495
        {
 
30496
                "spoolss_DeleteMonitor",
 
30497
                sizeof(struct spoolss_DeleteMonitor),
 
30498
                (ndr_push_flags_fn_t) ndr_push_spoolss_DeleteMonitor,
 
30499
                (ndr_pull_flags_fn_t) ndr_pull_spoolss_DeleteMonitor,
 
30500
                (ndr_print_function_t) ndr_print_spoolss_DeleteMonitor,
 
30501
                false,
 
30502
        },
 
30503
        {
 
30504
                "spoolss_DeletePrintProcessor",
 
30505
                sizeof(struct spoolss_DeletePrintProcessor),
 
30506
                (ndr_push_flags_fn_t) ndr_push_spoolss_DeletePrintProcessor,
 
30507
                (ndr_pull_flags_fn_t) ndr_pull_spoolss_DeletePrintProcessor,
 
30508
                (ndr_print_function_t) ndr_print_spoolss_DeletePrintProcessor,
 
30509
                false,
 
30510
        },
 
30511
        {
 
30512
                "spoolss_AddPrintProvidor",
 
30513
                sizeof(struct spoolss_AddPrintProvidor),
 
30514
                (ndr_push_flags_fn_t) ndr_push_spoolss_AddPrintProvidor,
 
30515
                (ndr_pull_flags_fn_t) ndr_pull_spoolss_AddPrintProvidor,
 
30516
                (ndr_print_function_t) ndr_print_spoolss_AddPrintProvidor,
 
30517
                false,
 
30518
        },
 
30519
        {
 
30520
                "spoolss_DeletePrintProvidor",
 
30521
                sizeof(struct spoolss_DeletePrintProvidor),
 
30522
                (ndr_push_flags_fn_t) ndr_push_spoolss_DeletePrintProvidor,
 
30523
                (ndr_pull_flags_fn_t) ndr_pull_spoolss_DeletePrintProvidor,
 
30524
                (ndr_print_function_t) ndr_print_spoolss_DeletePrintProvidor,
 
30525
                false,
 
30526
        },
 
30527
        {
 
30528
                "spoolss_EnumPrintProcDataTypes",
 
30529
                sizeof(struct spoolss_EnumPrintProcDataTypes),
 
30530
                (ndr_push_flags_fn_t) ndr_push_spoolss_EnumPrintProcDataTypes,
 
30531
                (ndr_pull_flags_fn_t) ndr_pull_spoolss_EnumPrintProcDataTypes,
 
30532
                (ndr_print_function_t) ndr_print_spoolss_EnumPrintProcDataTypes,
 
30533
                false,
 
30534
        },
 
30535
        {
 
30536
                "spoolss_ResetPrinter",
 
30537
                sizeof(struct spoolss_ResetPrinter),
 
30538
                (ndr_push_flags_fn_t) ndr_push_spoolss_ResetPrinter,
 
30539
                (ndr_pull_flags_fn_t) ndr_pull_spoolss_ResetPrinter,
 
30540
                (ndr_print_function_t) ndr_print_spoolss_ResetPrinter,
 
30541
                false,
 
30542
        },
 
30543
        {
 
30544
                "spoolss_GetPrinterDriver2",
 
30545
                sizeof(struct spoolss_GetPrinterDriver2),
 
30546
                (ndr_push_flags_fn_t) ndr_push_spoolss_GetPrinterDriver2,
 
30547
                (ndr_pull_flags_fn_t) ndr_pull_spoolss_GetPrinterDriver2,
 
30548
                (ndr_print_function_t) ndr_print_spoolss_GetPrinterDriver2,
 
30549
                false,
 
30550
        },
 
30551
        {
 
30552
                "spoolss_FindFirstPrinterChangeNotification",
 
30553
                sizeof(struct spoolss_FindFirstPrinterChangeNotification),
 
30554
                (ndr_push_flags_fn_t) ndr_push_spoolss_FindFirstPrinterChangeNotification,
 
30555
                (ndr_pull_flags_fn_t) ndr_pull_spoolss_FindFirstPrinterChangeNotification,
 
30556
                (ndr_print_function_t) ndr_print_spoolss_FindFirstPrinterChangeNotification,
 
30557
                false,
 
30558
        },
 
30559
        {
 
30560
                "spoolss_FindNextPrinterChangeNotification",
 
30561
                sizeof(struct spoolss_FindNextPrinterChangeNotification),
 
30562
                (ndr_push_flags_fn_t) ndr_push_spoolss_FindNextPrinterChangeNotification,
 
30563
                (ndr_pull_flags_fn_t) ndr_pull_spoolss_FindNextPrinterChangeNotification,
 
30564
                (ndr_print_function_t) ndr_print_spoolss_FindNextPrinterChangeNotification,
 
30565
                false,
 
30566
        },
 
30567
        {
 
30568
                "spoolss_FindClosePrinterNotify",
 
30569
                sizeof(struct spoolss_FindClosePrinterNotify),
 
30570
                (ndr_push_flags_fn_t) ndr_push_spoolss_FindClosePrinterNotify,
 
30571
                (ndr_pull_flags_fn_t) ndr_pull_spoolss_FindClosePrinterNotify,
 
30572
                (ndr_print_function_t) ndr_print_spoolss_FindClosePrinterNotify,
 
30573
                false,
 
30574
        },
 
30575
        {
 
30576
                "spoolss_RouterFindFirstPrinterChangeNotificationOld",
 
30577
                sizeof(struct spoolss_RouterFindFirstPrinterChangeNotificationOld),
 
30578
                (ndr_push_flags_fn_t) ndr_push_spoolss_RouterFindFirstPrinterChangeNotificationOld,
 
30579
                (ndr_pull_flags_fn_t) ndr_pull_spoolss_RouterFindFirstPrinterChangeNotificationOld,
 
30580
                (ndr_print_function_t) ndr_print_spoolss_RouterFindFirstPrinterChangeNotificationOld,
 
30581
                false,
 
30582
        },
 
30583
        {
 
30584
                "spoolss_ReplyOpenPrinter",
 
30585
                sizeof(struct spoolss_ReplyOpenPrinter),
 
30586
                (ndr_push_flags_fn_t) ndr_push_spoolss_ReplyOpenPrinter,
 
30587
                (ndr_pull_flags_fn_t) ndr_pull_spoolss_ReplyOpenPrinter,
 
30588
                (ndr_print_function_t) ndr_print_spoolss_ReplyOpenPrinter,
 
30589
                false,
 
30590
        },
 
30591
        {
 
30592
                "spoolss_RouterReplyPrinter",
 
30593
                sizeof(struct spoolss_RouterReplyPrinter),
 
30594
                (ndr_push_flags_fn_t) ndr_push_spoolss_RouterReplyPrinter,
 
30595
                (ndr_pull_flags_fn_t) ndr_pull_spoolss_RouterReplyPrinter,
 
30596
                (ndr_print_function_t) ndr_print_spoolss_RouterReplyPrinter,
 
30597
                false,
 
30598
        },
 
30599
        {
 
30600
                "spoolss_ReplyClosePrinter",
 
30601
                sizeof(struct spoolss_ReplyClosePrinter),
 
30602
                (ndr_push_flags_fn_t) ndr_push_spoolss_ReplyClosePrinter,
 
30603
                (ndr_pull_flags_fn_t) ndr_pull_spoolss_ReplyClosePrinter,
 
30604
                (ndr_print_function_t) ndr_print_spoolss_ReplyClosePrinter,
 
30605
                false,
 
30606
        },
 
30607
        {
 
30608
                "spoolss_AddPortEx",
 
30609
                sizeof(struct spoolss_AddPortEx),
 
30610
                (ndr_push_flags_fn_t) ndr_push_spoolss_AddPortEx,
 
30611
                (ndr_pull_flags_fn_t) ndr_pull_spoolss_AddPortEx,
 
30612
                (ndr_print_function_t) ndr_print_spoolss_AddPortEx,
 
30613
                false,
 
30614
        },
 
30615
        {
 
30616
                "spoolss_RouterFindFirstPrinterChangeNotification",
 
30617
                sizeof(struct spoolss_RouterFindFirstPrinterChangeNotification),
 
30618
                (ndr_push_flags_fn_t) ndr_push_spoolss_RouterFindFirstPrinterChangeNotification,
 
30619
                (ndr_pull_flags_fn_t) ndr_pull_spoolss_RouterFindFirstPrinterChangeNotification,
 
30620
                (ndr_print_function_t) ndr_print_spoolss_RouterFindFirstPrinterChangeNotification,
 
30621
                false,
 
30622
        },
 
30623
        {
 
30624
                "spoolss_SpoolerInit",
 
30625
                sizeof(struct spoolss_SpoolerInit),
 
30626
                (ndr_push_flags_fn_t) ndr_push_spoolss_SpoolerInit,
 
30627
                (ndr_pull_flags_fn_t) ndr_pull_spoolss_SpoolerInit,
 
30628
                (ndr_print_function_t) ndr_print_spoolss_SpoolerInit,
 
30629
                false,
 
30630
        },
 
30631
        {
 
30632
                "spoolss_ResetPrinterEx",
 
30633
                sizeof(struct spoolss_ResetPrinterEx),
 
30634
                (ndr_push_flags_fn_t) ndr_push_spoolss_ResetPrinterEx,
 
30635
                (ndr_pull_flags_fn_t) ndr_pull_spoolss_ResetPrinterEx,
 
30636
                (ndr_print_function_t) ndr_print_spoolss_ResetPrinterEx,
 
30637
                false,
 
30638
        },
 
30639
        {
 
30640
                "spoolss_RemoteFindFirstPrinterChangeNotifyEx",
 
30641
                sizeof(struct spoolss_RemoteFindFirstPrinterChangeNotifyEx),
 
30642
                (ndr_push_flags_fn_t) ndr_push_spoolss_RemoteFindFirstPrinterChangeNotifyEx,
 
30643
                (ndr_pull_flags_fn_t) ndr_pull_spoolss_RemoteFindFirstPrinterChangeNotifyEx,
 
30644
                (ndr_print_function_t) ndr_print_spoolss_RemoteFindFirstPrinterChangeNotifyEx,
 
30645
                false,
 
30646
        },
 
30647
        {
 
30648
                "spoolss_RouterReplyPrinterEx",
 
30649
                sizeof(struct spoolss_RouterReplyPrinterEx),
 
30650
                (ndr_push_flags_fn_t) ndr_push_spoolss_RouterReplyPrinterEx,
 
30651
                (ndr_pull_flags_fn_t) ndr_pull_spoolss_RouterReplyPrinterEx,
 
30652
                (ndr_print_function_t) ndr_print_spoolss_RouterReplyPrinterEx,
 
30653
                false,
 
30654
        },
 
30655
        {
 
30656
                "spoolss_RouterRefreshPrinterChangeNotify",
 
30657
                sizeof(struct spoolss_RouterRefreshPrinterChangeNotify),
 
30658
                (ndr_push_flags_fn_t) ndr_push_spoolss_RouterRefreshPrinterChangeNotify,
 
30659
                (ndr_pull_flags_fn_t) ndr_pull_spoolss_RouterRefreshPrinterChangeNotify,
 
30660
                (ndr_print_function_t) ndr_print_spoolss_RouterRefreshPrinterChangeNotify,
 
30661
                false,
 
30662
        },
 
30663
        {
 
30664
                "spoolss_44",
 
30665
                sizeof(struct spoolss_44),
 
30666
                (ndr_push_flags_fn_t) ndr_push_spoolss_44,
 
30667
                (ndr_pull_flags_fn_t) ndr_pull_spoolss_44,
 
30668
                (ndr_print_function_t) ndr_print_spoolss_44,
 
30669
                false,
 
30670
        },
 
30671
        {
 
30672
                "spoolss_OpenPrinterEx",
 
30673
                sizeof(struct spoolss_OpenPrinterEx),
 
30674
                (ndr_push_flags_fn_t) ndr_push_spoolss_OpenPrinterEx,
 
30675
                (ndr_pull_flags_fn_t) ndr_pull_spoolss_OpenPrinterEx,
 
30676
                (ndr_print_function_t) ndr_print_spoolss_OpenPrinterEx,
 
30677
                false,
 
30678
        },
 
30679
        {
 
30680
                "spoolss_AddPrinterEx",
 
30681
                sizeof(struct spoolss_AddPrinterEx),
 
30682
                (ndr_push_flags_fn_t) ndr_push_spoolss_AddPrinterEx,
 
30683
                (ndr_pull_flags_fn_t) ndr_pull_spoolss_AddPrinterEx,
 
30684
                (ndr_print_function_t) ndr_print_spoolss_AddPrinterEx,
 
30685
                false,
 
30686
        },
 
30687
        {
 
30688
                "spoolss_47",
 
30689
                sizeof(struct spoolss_47),
 
30690
                (ndr_push_flags_fn_t) ndr_push_spoolss_47,
 
30691
                (ndr_pull_flags_fn_t) ndr_pull_spoolss_47,
 
30692
                (ndr_print_function_t) ndr_print_spoolss_47,
 
30693
                false,
 
30694
        },
 
30695
        {
 
30696
                "spoolss_EnumPrinterData",
 
30697
                sizeof(struct spoolss_EnumPrinterData),
 
30698
                (ndr_push_flags_fn_t) ndr_push_spoolss_EnumPrinterData,
 
30699
                (ndr_pull_flags_fn_t) ndr_pull_spoolss_EnumPrinterData,
 
30700
                (ndr_print_function_t) ndr_print_spoolss_EnumPrinterData,
 
30701
                false,
 
30702
        },
 
30703
        {
 
30704
                "spoolss_DeletePrinterData",
 
30705
                sizeof(struct spoolss_DeletePrinterData),
 
30706
                (ndr_push_flags_fn_t) ndr_push_spoolss_DeletePrinterData,
 
30707
                (ndr_pull_flags_fn_t) ndr_pull_spoolss_DeletePrinterData,
 
30708
                (ndr_print_function_t) ndr_print_spoolss_DeletePrinterData,
 
30709
                false,
 
30710
        },
 
30711
        {
 
30712
                "spoolss_4a",
 
30713
                sizeof(struct spoolss_4a),
 
30714
                (ndr_push_flags_fn_t) ndr_push_spoolss_4a,
 
30715
                (ndr_pull_flags_fn_t) ndr_pull_spoolss_4a,
 
30716
                (ndr_print_function_t) ndr_print_spoolss_4a,
 
30717
                false,
 
30718
        },
 
30719
        {
 
30720
                "spoolss_4b",
 
30721
                sizeof(struct spoolss_4b),
 
30722
                (ndr_push_flags_fn_t) ndr_push_spoolss_4b,
 
30723
                (ndr_pull_flags_fn_t) ndr_pull_spoolss_4b,
 
30724
                (ndr_print_function_t) ndr_print_spoolss_4b,
 
30725
                false,
 
30726
        },
 
30727
        {
 
30728
                "spoolss_4c",
 
30729
                sizeof(struct spoolss_4c),
 
30730
                (ndr_push_flags_fn_t) ndr_push_spoolss_4c,
 
30731
                (ndr_pull_flags_fn_t) ndr_pull_spoolss_4c,
 
30732
                (ndr_print_function_t) ndr_print_spoolss_4c,
 
30733
                false,
 
30734
        },
 
30735
        {
 
30736
                "spoolss_SetPrinterDataEx",
 
30737
                sizeof(struct spoolss_SetPrinterDataEx),
 
30738
                (ndr_push_flags_fn_t) ndr_push_spoolss_SetPrinterDataEx,
 
30739
                (ndr_pull_flags_fn_t) ndr_pull_spoolss_SetPrinterDataEx,
 
30740
                (ndr_print_function_t) ndr_print_spoolss_SetPrinterDataEx,
 
30741
                false,
 
30742
        },
 
30743
        {
 
30744
                "spoolss_GetPrinterDataEx",
 
30745
                sizeof(struct spoolss_GetPrinterDataEx),
 
30746
                (ndr_push_flags_fn_t) ndr_push_spoolss_GetPrinterDataEx,
 
30747
                (ndr_pull_flags_fn_t) ndr_pull_spoolss_GetPrinterDataEx,
 
30748
                (ndr_print_function_t) ndr_print_spoolss_GetPrinterDataEx,
 
30749
                false,
 
30750
        },
 
30751
        {
 
30752
                "spoolss_EnumPrinterDataEx",
 
30753
                sizeof(struct spoolss_EnumPrinterDataEx),
 
30754
                (ndr_push_flags_fn_t) ndr_push_spoolss_EnumPrinterDataEx,
 
30755
                (ndr_pull_flags_fn_t) ndr_pull_spoolss_EnumPrinterDataEx,
 
30756
                (ndr_print_function_t) ndr_print_spoolss_EnumPrinterDataEx,
 
30757
                false,
 
30758
        },
 
30759
        {
 
30760
                "spoolss_EnumPrinterKey",
 
30761
                sizeof(struct spoolss_EnumPrinterKey),
 
30762
                (ndr_push_flags_fn_t) ndr_push_spoolss_EnumPrinterKey,
 
30763
                (ndr_pull_flags_fn_t) ndr_pull_spoolss_EnumPrinterKey,
 
30764
                (ndr_print_function_t) ndr_print_spoolss_EnumPrinterKey,
 
30765
                false,
 
30766
        },
 
30767
        {
 
30768
                "spoolss_DeletePrinterDataEx",
 
30769
                sizeof(struct spoolss_DeletePrinterDataEx),
 
30770
                (ndr_push_flags_fn_t) ndr_push_spoolss_DeletePrinterDataEx,
 
30771
                (ndr_pull_flags_fn_t) ndr_pull_spoolss_DeletePrinterDataEx,
 
30772
                (ndr_print_function_t) ndr_print_spoolss_DeletePrinterDataEx,
 
30773
                false,
 
30774
        },
 
30775
        {
 
30776
                "spoolss_DeletePrinterKey",
 
30777
                sizeof(struct spoolss_DeletePrinterKey),
 
30778
                (ndr_push_flags_fn_t) ndr_push_spoolss_DeletePrinterKey,
 
30779
                (ndr_pull_flags_fn_t) ndr_pull_spoolss_DeletePrinterKey,
 
30780
                (ndr_print_function_t) ndr_print_spoolss_DeletePrinterKey,
 
30781
                false,
 
30782
        },
 
30783
        {
 
30784
                "spoolss_53",
 
30785
                sizeof(struct spoolss_53),
 
30786
                (ndr_push_flags_fn_t) ndr_push_spoolss_53,
 
30787
                (ndr_pull_flags_fn_t) ndr_pull_spoolss_53,
 
30788
                (ndr_print_function_t) ndr_print_spoolss_53,
 
30789
                false,
 
30790
        },
 
30791
        {
 
30792
                "spoolss_DeletePrinterDriverEx",
 
30793
                sizeof(struct spoolss_DeletePrinterDriverEx),
 
30794
                (ndr_push_flags_fn_t) ndr_push_spoolss_DeletePrinterDriverEx,
 
30795
                (ndr_pull_flags_fn_t) ndr_pull_spoolss_DeletePrinterDriverEx,
 
30796
                (ndr_print_function_t) ndr_print_spoolss_DeletePrinterDriverEx,
 
30797
                false,
 
30798
        },
 
30799
        {
 
30800
                "spoolss_55",
 
30801
                sizeof(struct spoolss_55),
 
30802
                (ndr_push_flags_fn_t) ndr_push_spoolss_55,
 
30803
                (ndr_pull_flags_fn_t) ndr_pull_spoolss_55,
 
30804
                (ndr_print_function_t) ndr_print_spoolss_55,
 
30805
                false,
 
30806
        },
 
30807
        {
 
30808
                "spoolss_56",
 
30809
                sizeof(struct spoolss_56),
 
30810
                (ndr_push_flags_fn_t) ndr_push_spoolss_56,
 
30811
                (ndr_pull_flags_fn_t) ndr_pull_spoolss_56,
 
30812
                (ndr_print_function_t) ndr_print_spoolss_56,
 
30813
                false,
 
30814
        },
 
30815
        {
 
30816
                "spoolss_57",
 
30817
                sizeof(struct spoolss_57),
 
30818
                (ndr_push_flags_fn_t) ndr_push_spoolss_57,
 
30819
                (ndr_pull_flags_fn_t) ndr_pull_spoolss_57,
 
30820
                (ndr_print_function_t) ndr_print_spoolss_57,
 
30821
                false,
 
30822
        },
 
30823
        {
 
30824
                "spoolss_XcvData",
 
30825
                sizeof(struct spoolss_XcvData),
 
30826
                (ndr_push_flags_fn_t) ndr_push_spoolss_XcvData,
 
30827
                (ndr_pull_flags_fn_t) ndr_pull_spoolss_XcvData,
 
30828
                (ndr_print_function_t) ndr_print_spoolss_XcvData,
 
30829
                false,
 
30830
        },
 
30831
        {
 
30832
                "spoolss_AddPrinterDriverEx",
 
30833
                sizeof(struct spoolss_AddPrinterDriverEx),
 
30834
                (ndr_push_flags_fn_t) ndr_push_spoolss_AddPrinterDriverEx,
 
30835
                (ndr_pull_flags_fn_t) ndr_pull_spoolss_AddPrinterDriverEx,
 
30836
                (ndr_print_function_t) ndr_print_spoolss_AddPrinterDriverEx,
 
30837
                false,
 
30838
        },
 
30839
        {
 
30840
                "spoolss_5a",
 
30841
                sizeof(struct spoolss_5a),
 
30842
                (ndr_push_flags_fn_t) ndr_push_spoolss_5a,
 
30843
                (ndr_pull_flags_fn_t) ndr_pull_spoolss_5a,
 
30844
                (ndr_print_function_t) ndr_print_spoolss_5a,
 
30845
                false,
 
30846
        },
 
30847
        {
 
30848
                "spoolss_5b",
 
30849
                sizeof(struct spoolss_5b),
 
30850
                (ndr_push_flags_fn_t) ndr_push_spoolss_5b,
 
30851
                (ndr_pull_flags_fn_t) ndr_pull_spoolss_5b,
 
30852
                (ndr_print_function_t) ndr_print_spoolss_5b,
 
30853
                false,
 
30854
        },
 
30855
        {
 
30856
                "spoolss_5c",
 
30857
                sizeof(struct spoolss_5c),
 
30858
                (ndr_push_flags_fn_t) ndr_push_spoolss_5c,
 
30859
                (ndr_pull_flags_fn_t) ndr_pull_spoolss_5c,
 
30860
                (ndr_print_function_t) ndr_print_spoolss_5c,
 
30861
                false,
 
30862
        },
 
30863
        {
 
30864
                "spoolss_5d",
 
30865
                sizeof(struct spoolss_5d),
 
30866
                (ndr_push_flags_fn_t) ndr_push_spoolss_5d,
 
30867
                (ndr_pull_flags_fn_t) ndr_pull_spoolss_5d,
 
30868
                (ndr_print_function_t) ndr_print_spoolss_5d,
 
30869
                false,
 
30870
        },
 
30871
        {
 
30872
                "spoolss_5e",
 
30873
                sizeof(struct spoolss_5e),
 
30874
                (ndr_push_flags_fn_t) ndr_push_spoolss_5e,
 
30875
                (ndr_pull_flags_fn_t) ndr_pull_spoolss_5e,
 
30876
                (ndr_print_function_t) ndr_print_spoolss_5e,
 
30877
                false,
 
30878
        },
 
30879
        {
 
30880
                "spoolss_5f",
 
30881
                sizeof(struct spoolss_5f),
 
30882
                (ndr_push_flags_fn_t) ndr_push_spoolss_5f,
 
30883
                (ndr_pull_flags_fn_t) ndr_pull_spoolss_5f,
 
30884
                (ndr_print_function_t) ndr_print_spoolss_5f,
 
30885
                false,
 
30886
        },
 
30887
        {
 
30888
                "spoolss_60",
 
30889
                sizeof(struct spoolss_60),
 
30890
                (ndr_push_flags_fn_t) ndr_push_spoolss_60,
 
30891
                (ndr_pull_flags_fn_t) ndr_pull_spoolss_60,
 
30892
                (ndr_print_function_t) ndr_print_spoolss_60,
 
30893
                false,
 
30894
        },
 
30895
        {
 
30896
                "spoolss_61",
 
30897
                sizeof(struct spoolss_61),
 
30898
                (ndr_push_flags_fn_t) ndr_push_spoolss_61,
 
30899
                (ndr_pull_flags_fn_t) ndr_pull_spoolss_61,
 
30900
                (ndr_print_function_t) ndr_print_spoolss_61,
 
30901
                false,
 
30902
        },
 
30903
        {
 
30904
                "spoolss_62",
 
30905
                sizeof(struct spoolss_62),
 
30906
                (ndr_push_flags_fn_t) ndr_push_spoolss_62,
 
30907
                (ndr_pull_flags_fn_t) ndr_pull_spoolss_62,
 
30908
                (ndr_print_function_t) ndr_print_spoolss_62,
 
30909
                false,
 
30910
        },
 
30911
        {
 
30912
                "spoolss_63",
 
30913
                sizeof(struct spoolss_63),
 
30914
                (ndr_push_flags_fn_t) ndr_push_spoolss_63,
 
30915
                (ndr_pull_flags_fn_t) ndr_pull_spoolss_63,
 
30916
                (ndr_print_function_t) ndr_print_spoolss_63,
 
30917
                false,
 
30918
        },
 
30919
        {
 
30920
                "spoolss_64",
 
30921
                sizeof(struct spoolss_64),
 
30922
                (ndr_push_flags_fn_t) ndr_push_spoolss_64,
 
30923
                (ndr_pull_flags_fn_t) ndr_pull_spoolss_64,
 
30924
                (ndr_print_function_t) ndr_print_spoolss_64,
 
30925
                false,
 
30926
        },
 
30927
        {
 
30928
                "spoolss_65",
 
30929
                sizeof(struct spoolss_65),
 
30930
                (ndr_push_flags_fn_t) ndr_push_spoolss_65,
 
30931
                (ndr_pull_flags_fn_t) ndr_pull_spoolss_65,
 
30932
                (ndr_print_function_t) ndr_print_spoolss_65,
 
30933
                false,
 
30934
        },
 
30935
        {
 
30936
                "spoolss_GetCorePrinterDrivers",
 
30937
                sizeof(struct spoolss_GetCorePrinterDrivers),
 
30938
                (ndr_push_flags_fn_t) ndr_push_spoolss_GetCorePrinterDrivers,
 
30939
                (ndr_pull_flags_fn_t) ndr_pull_spoolss_GetCorePrinterDrivers,
 
30940
                (ndr_print_function_t) ndr_print_spoolss_GetCorePrinterDrivers,
 
30941
                false,
 
30942
        },
 
30943
        {
 
30944
                "spoolss_67",
 
30945
                sizeof(struct spoolss_67),
 
30946
                (ndr_push_flags_fn_t) ndr_push_spoolss_67,
 
30947
                (ndr_pull_flags_fn_t) ndr_pull_spoolss_67,
 
30948
                (ndr_print_function_t) ndr_print_spoolss_67,
 
30949
                false,
 
30950
        },
 
30951
        {
 
30952
                "spoolss_GetPrinterDriverPackagePath",
 
30953
                sizeof(struct spoolss_GetPrinterDriverPackagePath),
 
30954
                (ndr_push_flags_fn_t) ndr_push_spoolss_GetPrinterDriverPackagePath,
 
30955
                (ndr_pull_flags_fn_t) ndr_pull_spoolss_GetPrinterDriverPackagePath,
 
30956
                (ndr_print_function_t) ndr_print_spoolss_GetPrinterDriverPackagePath,
 
30957
                false,
 
30958
        },
 
30959
        {
 
30960
                "spoolss_69",
 
30961
                sizeof(struct spoolss_69),
 
30962
                (ndr_push_flags_fn_t) ndr_push_spoolss_69,
 
30963
                (ndr_pull_flags_fn_t) ndr_pull_spoolss_69,
 
30964
                (ndr_print_function_t) ndr_print_spoolss_69,
 
30965
                false,
 
30966
        },
 
30967
        {
 
30968
                "spoolss_6a",
 
30969
                sizeof(struct spoolss_6a),
 
30970
                (ndr_push_flags_fn_t) ndr_push_spoolss_6a,
 
30971
                (ndr_pull_flags_fn_t) ndr_pull_spoolss_6a,
 
30972
                (ndr_print_function_t) ndr_print_spoolss_6a,
 
30973
                false,
 
30974
        },
 
30975
        {
 
30976
                "spoolss_6b",
 
30977
                sizeof(struct spoolss_6b),
 
30978
                (ndr_push_flags_fn_t) ndr_push_spoolss_6b,
 
30979
                (ndr_pull_flags_fn_t) ndr_pull_spoolss_6b,
 
30980
                (ndr_print_function_t) ndr_print_spoolss_6b,
 
30981
                false,
 
30982
        },
 
30983
        {
 
30984
                "spoolss_6c",
 
30985
                sizeof(struct spoolss_6c),
 
30986
                (ndr_push_flags_fn_t) ndr_push_spoolss_6c,
 
30987
                (ndr_pull_flags_fn_t) ndr_pull_spoolss_6c,
 
30988
                (ndr_print_function_t) ndr_print_spoolss_6c,
 
30989
                false,
 
30990
        },
 
30991
        {
 
30992
                "spoolss_6d",
 
30993
                sizeof(struct spoolss_6d),
 
30994
                (ndr_push_flags_fn_t) ndr_push_spoolss_6d,
 
30995
                (ndr_pull_flags_fn_t) ndr_pull_spoolss_6d,
 
30996
                (ndr_print_function_t) ndr_print_spoolss_6d,
 
30997
                false,
 
30998
        },
 
30999
        { NULL, 0, NULL, NULL, NULL, false }
 
31000
};
 
31001
 
 
31002
static const char * const spoolss_endpoint_strings[] = {
 
31003
        "ncacn_np:[\\pipe\\spoolss]", 
 
31004
};
 
31005
 
 
31006
static const struct ndr_interface_string_array spoolss_endpoints = {
 
31007
        .count  = 1,
 
31008
        .names  = spoolss_endpoint_strings
 
31009
};
 
31010
 
 
31011
static const char * const spoolss_authservice_strings[] = {
 
31012
        "host", 
 
31013
};
 
31014
 
 
31015
static const struct ndr_interface_string_array spoolss_authservices = {
 
31016
        .count  = 1,
 
31017
        .names  = spoolss_authservice_strings
 
31018
};
 
31019
 
 
31020
 
 
31021
const struct ndr_interface_table ndr_table_spoolss = {
 
31022
        .name           = "spoolss",
 
31023
        .syntax_id      = {
 
31024
                {0x12345678,0x1234,0xabcd,{0xef,0x00},{0x01,0x23,0x45,0x67,0x89,0xab}},
 
31025
                NDR_SPOOLSS_VERSION
 
31026
        },
 
31027
        .helpstring     = NDR_SPOOLSS_HELPSTRING,
 
31028
        .num_calls      = 110,
 
31029
        .calls          = spoolss_calls,
 
31030
        .endpoints      = &spoolss_endpoints,
 
31031
        .authservices   = &spoolss_authservices
 
31032
};
 
31033