s3: re-run make samba3-idl.
[ira/wip.git] / librpc / gen_ndr / ndr_spoolss.c
index fca622865f7ff0b0f5bc54f5a87468ad8e0d3028..514d4028dd3f97a8f077eafb1c37a5324cbd1f8e 100644 (file)
@@ -566,40 +566,509 @@ _PUBLIC_ void ndr_print_spoolss_DeviceModeFields(struct ndr_print *ndr, const ch
        ndr->depth--;
 }
 
+static enum ndr_err_code ndr_push_spoolss_DeviceModeSpecVersion(struct ndr_push *ndr, int ndr_flags, enum spoolss_DeviceModeSpecVersion r)
+{
+       NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r));
+       return NDR_ERR_SUCCESS;
+}
+
+static enum ndr_err_code ndr_pull_spoolss_DeviceModeSpecVersion(struct ndr_pull *ndr, int ndr_flags, enum spoolss_DeviceModeSpecVersion *r)
+{
+       uint16_t v;
+       NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &v));
+       *r = v;
+       return NDR_ERR_SUCCESS;
+}
+
+_PUBLIC_ void ndr_print_spoolss_DeviceModeSpecVersion(struct ndr_print *ndr, const char *name, enum spoolss_DeviceModeSpecVersion r)
+{
+       const char *val = NULL;
+
+       switch (r) {
+               case DMSPEC_NT3: val = "DMSPEC_NT3"; break;
+               case DMSPEC_WIN95_98_ME: val = "DMSPEC_WIN95_98_ME"; break;
+               case DMSPEC_NT4_AND_ABOVE: val = "DMSPEC_NT4_AND_ABOVE"; break;
+       }
+       ndr_print_enum(ndr, name, "ENUM", val, r);
+}
+
+static enum ndr_err_code ndr_push_spoolss_DeviceModeOrientation(struct ndr_push *ndr, int ndr_flags, enum spoolss_DeviceModeOrientation r)
+{
+       NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r));
+       return NDR_ERR_SUCCESS;
+}
+
+static enum ndr_err_code ndr_pull_spoolss_DeviceModeOrientation(struct ndr_pull *ndr, int ndr_flags, enum spoolss_DeviceModeOrientation *r)
+{
+       uint16_t v;
+       NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &v));
+       *r = v;
+       return NDR_ERR_SUCCESS;
+}
+
+_PUBLIC_ void ndr_print_spoolss_DeviceModeOrientation(struct ndr_print *ndr, const char *name, enum spoolss_DeviceModeOrientation r)
+{
+       const char *val = NULL;
+
+       switch (r) {
+               case DMORIENT_PORTRAIT: val = "DMORIENT_PORTRAIT"; break;
+               case DMORIENT_LANDSCAPE: val = "DMORIENT_LANDSCAPE"; break;
+       }
+       ndr_print_enum(ndr, name, "ENUM", val, r);
+}
+
+static enum ndr_err_code ndr_push_spoolss_DeviceModePaperSize(struct ndr_push *ndr, int ndr_flags, enum spoolss_DeviceModePaperSize r)
+{
+       NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r));
+       return NDR_ERR_SUCCESS;
+}
+
+static enum ndr_err_code ndr_pull_spoolss_DeviceModePaperSize(struct ndr_pull *ndr, int ndr_flags, enum spoolss_DeviceModePaperSize *r)
+{
+       uint16_t v;
+       NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &v));
+       *r = v;
+       return NDR_ERR_SUCCESS;
+}
+
+_PUBLIC_ void ndr_print_spoolss_DeviceModePaperSize(struct ndr_print *ndr, const char *name, enum spoolss_DeviceModePaperSize r)
+{
+       const char *val = NULL;
+
+       switch (r) {
+               case DMPAPER_LETTER: val = "DMPAPER_LETTER"; break;
+               case DMPAPER_LETTERSMALL: val = "DMPAPER_LETTERSMALL"; break;
+               case DMPAPER_TABLOID: val = "DMPAPER_TABLOID"; break;
+               case DMPAPER_LEDGER: val = "DMPAPER_LEDGER"; break;
+               case DMPAPER_LEGAL: val = "DMPAPER_LEGAL"; break;
+               case DMPAPER_STATEMENT: val = "DMPAPER_STATEMENT"; break;
+               case DMPAPER_EXECUTIVE: val = "DMPAPER_EXECUTIVE"; break;
+               case DMPAPER_A3: val = "DMPAPER_A3"; break;
+               case DMPAPER_A4: val = "DMPAPER_A4"; break;
+               case DMPAPER_A4SMALL: val = "DMPAPER_A4SMALL"; break;
+               case DMPAPER_A5: val = "DMPAPER_A5"; break;
+               case DMPAPER_B4: val = "DMPAPER_B4"; break;
+               case DMPAPER_B5: val = "DMPAPER_B5"; break;
+               case DMPAPER_FOLIO: val = "DMPAPER_FOLIO"; break;
+               case DMPAPER_QUARTO: val = "DMPAPER_QUARTO"; break;
+               case DMPAPER_10X14: val = "DMPAPER_10X14"; break;
+               case DMPAPER_11X17: val = "DMPAPER_11X17"; break;
+               case DMPAPER_NOTE: val = "DMPAPER_NOTE"; break;
+               case DMPAPER_ENV_9: val = "DMPAPER_ENV_9"; break;
+               case DMPAPER_ENV_10: val = "DMPAPER_ENV_10"; break;
+               case DMPAPER_ENV_11: val = "DMPAPER_ENV_11"; break;
+               case DMPAPER_ENV_12: val = "DMPAPER_ENV_12"; break;
+               case DMPAPER_ENV_14: val = "DMPAPER_ENV_14"; break;
+               case DMPAPER_CSHEET: val = "DMPAPER_CSHEET"; break;
+               case DMPAPER_DSHEET: val = "DMPAPER_DSHEET"; break;
+               case DMPAPER_ESHEET: val = "DMPAPER_ESHEET"; break;
+               case DMPAPER_ENV_DL: val = "DMPAPER_ENV_DL"; break;
+               case DMPAPER_ENV_C5: val = "DMPAPER_ENV_C5"; break;
+               case DMPAPER_ENV_C3: val = "DMPAPER_ENV_C3"; break;
+               case DMPAPER_ENV_C4: val = "DMPAPER_ENV_C4"; break;
+               case DMPAPER_ENV_C6: val = "DMPAPER_ENV_C6"; break;
+               case DMPAPER_ENV_C65: val = "DMPAPER_ENV_C65"; break;
+               case DMPAPER_ENV_B4: val = "DMPAPER_ENV_B4"; break;
+               case DMPAPER_ENV_B5: val = "DMPAPER_ENV_B5"; break;
+               case DMPAPER_ENV_B6: val = "DMPAPER_ENV_B6"; break;
+               case DMPAPER_ENV_ITALY: val = "DMPAPER_ENV_ITALY"; break;
+               case DMPAPER_ENV_MONARCH: val = "DMPAPER_ENV_MONARCH"; break;
+               case DMPAPER_ENV_PERSONAL: val = "DMPAPER_ENV_PERSONAL"; break;
+               case DMPAPER_FANFOLD_US: val = "DMPAPER_FANFOLD_US"; break;
+               case DMPAPER_FANFOLD_STD_GERMAN: val = "DMPAPER_FANFOLD_STD_GERMAN"; break;
+               case DMPAPER_FANFOLD_LGL_GERMAN: val = "DMPAPER_FANFOLD_LGL_GERMAN"; break;
+               case DMPAPER_DBL_JAPANESE_POSTCARD: val = "DMPAPER_DBL_JAPANESE_POSTCARD"; break;
+               case DMPAPER_A6: val = "DMPAPER_A6"; break;
+               case DMPAPER_JENV_KAKU2: val = "DMPAPER_JENV_KAKU2"; break;
+               case DMPAPER_JENV_KAKU3: val = "DMPAPER_JENV_KAKU3"; break;
+               case DMPAPER_JENV_CHOU3: val = "DMPAPER_JENV_CHOU3"; break;
+               case DMPAPER_JENV_CHOU4: val = "DMPAPER_JENV_CHOU4"; break;
+               case DMPAPER_LETTER_ROTATED: val = "DMPAPER_LETTER_ROTATED"; break;
+               case DMPAPER_A3_ROTATED: val = "DMPAPER_A3_ROTATED"; break;
+               case DMPAPER_A4_ROTATED: val = "DMPAPER_A4_ROTATED"; break;
+               case DMPAPER_A5_ROTATED: val = "DMPAPER_A5_ROTATED"; break;
+               case DMPAPER_B4_JIS_ROTATED: val = "DMPAPER_B4_JIS_ROTATED"; break;
+               case DMPAPER_B5_JIS_ROTATED: val = "DMPAPER_B5_JIS_ROTATED"; break;
+               case DMPAPER_JAPANESE_POSTCARD_ROTATED: val = "DMPAPER_JAPANESE_POSTCARD_ROTATED"; break;
+               case DMPAPER_DBL_JAPANESE_POSTCARD_ROTATED: val = "DMPAPER_DBL_JAPANESE_POSTCARD_ROTATED"; break;
+               case DMPAPER_A6_ROTATED: val = "DMPAPER_A6_ROTATED"; break;
+               case DMPAPER_JENV_KAKU2_ROTATED: val = "DMPAPER_JENV_KAKU2_ROTATED"; break;
+               case DMPAPER_JENV_KAKU3_ROTATED: val = "DMPAPER_JENV_KAKU3_ROTATED"; break;
+               case DMPAPER_JENV_CHOU3_ROTATED: val = "DMPAPER_JENV_CHOU3_ROTATED"; break;
+               case DMPAPER_JENV_CHOU4_ROTATED: val = "DMPAPER_JENV_CHOU4_ROTATED"; break;
+               case DMPAPER_B6_JIS: val = "DMPAPER_B6_JIS"; break;
+               case DMPAPER_B6_JIS_ROTATED: val = "DMPAPER_B6_JIS_ROTATED"; break;
+               case DMPAPER_12X11: val = "DMPAPER_12X11"; break;
+               case DMPAPER_JENV_YOU4: val = "DMPAPER_JENV_YOU4"; break;
+               case DMPAPER_JENV_YOU4_ROTATED: val = "DMPAPER_JENV_YOU4_ROTATED"; break;
+               case DMPAPER_P16K: val = "DMPAPER_P16K"; break;
+               case DMPAPER_P32K: val = "DMPAPER_P32K"; break;
+               case DMPAPER_P32KBIG: val = "DMPAPER_P32KBIG"; break;
+               case DMPAPER_PENV_1: val = "DMPAPER_PENV_1"; break;
+               case DMPAPER_PENV_2: val = "DMPAPER_PENV_2"; break;
+               case DMPAPER_PENV_3: val = "DMPAPER_PENV_3"; break;
+               case DMPAPER_PENV_4: val = "DMPAPER_PENV_4"; break;
+               case DMPAPER_PENV_5: val = "DMPAPER_PENV_5"; break;
+               case DMPAPER_PENV_6: val = "DMPAPER_PENV_6"; break;
+               case DMPAPER_PENV_7: val = "DMPAPER_PENV_7"; break;
+               case DMPAPER_PENV_8: val = "DMPAPER_PENV_8"; break;
+               case DMPAPER_PENV_9: val = "DMPAPER_PENV_9"; break;
+               case DMPAPER_PENV_10: val = "DMPAPER_PENV_10"; break;
+               case DMPAPER_P16K_ROTATED: val = "DMPAPER_P16K_ROTATED"; break;
+               case DMPAPER_P32K_ROTATED: val = "DMPAPER_P32K_ROTATED"; break;
+               case DMPAPER_P32KBIG_ROTATED: val = "DMPAPER_P32KBIG_ROTATED"; break;
+               case DMPAPER_PENV_1_ROTATED: val = "DMPAPER_PENV_1_ROTATED"; break;
+               case DMPAPER_PENV_2_ROTATED: val = "DMPAPER_PENV_2_ROTATED"; break;
+               case DMPAPER_PENV_3_ROTATED: val = "DMPAPER_PENV_3_ROTATED"; break;
+               case DMPAPER_PENV_4_ROTATED: val = "DMPAPER_PENV_4_ROTATED"; break;
+               case DMPAPER_PENV_5_ROTATED: val = "DMPAPER_PENV_5_ROTATED"; break;
+               case DMPAPER_PENV_6_ROTATED: val = "DMPAPER_PENV_6_ROTATED"; break;
+               case DMPAPER_PENV_7_ROTATED: val = "DMPAPER_PENV_7_ROTATED"; break;
+               case DMPAPER_PENV_8_ROTATED: val = "DMPAPER_PENV_8_ROTATED"; break;
+               case DMPAPER_PENV_9_ROTATED: val = "DMPAPER_PENV_9_ROTATED"; break;
+               case DMPAPER_PENV_10_ROTATED: val = "DMPAPER_PENV_10_ROTATED"; break;
+       }
+       ndr_print_enum(ndr, name, "ENUM", val, r);
+}
+
+static enum ndr_err_code ndr_push_spoolss_DeviceModeDefaultSource(struct ndr_push *ndr, int ndr_flags, enum spoolss_DeviceModeDefaultSource r)
+{
+       NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r));
+       return NDR_ERR_SUCCESS;
+}
+
+static enum ndr_err_code ndr_pull_spoolss_DeviceModeDefaultSource(struct ndr_pull *ndr, int ndr_flags, enum spoolss_DeviceModeDefaultSource *r)
+{
+       uint16_t v;
+       NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &v));
+       *r = v;
+       return NDR_ERR_SUCCESS;
+}
+
+_PUBLIC_ void ndr_print_spoolss_DeviceModeDefaultSource(struct ndr_print *ndr, const char *name, enum spoolss_DeviceModeDefaultSource r)
+{
+       const char *val = NULL;
+
+       switch (r) {
+               case DMBIN_UPPER: val = "DMBIN_UPPER"; break;
+               case DMBIN_LOWER: val = "DMBIN_LOWER"; break;
+               case DMBIN_MIDDLE: val = "DMBIN_MIDDLE"; break;
+               case DMBIN_MANUAL: val = "DMBIN_MANUAL"; break;
+               case DMBIN_ENVELOPE: val = "DMBIN_ENVELOPE"; break;
+               case DMBIN_ENVMANUAL: val = "DMBIN_ENVMANUAL"; break;
+               case DMBIN_AUTO: val = "DMBIN_AUTO"; break;
+               case DMBIN_TRACTOR: val = "DMBIN_TRACTOR"; break;
+               case DMBIN_SMALLFMT: val = "DMBIN_SMALLFMT"; break;
+               case DMBIN_LARGEFMT: val = "DMBIN_LARGEFMT"; break;
+               case DMBIN_LARGECAPACITY: val = "DMBIN_LARGECAPACITY"; break;
+               case DMBIN_CASSETTE: val = "DMBIN_CASSETTE"; break;
+               case DMBIN_FORMSOURCE: val = "DMBIN_FORMSOURCE"; break;
+       }
+       ndr_print_enum(ndr, name, "ENUM", val, r);
+}
+
+static enum ndr_err_code ndr_push_spoolss_DeviceModePrintQuality(struct ndr_push *ndr, int ndr_flags, enum spoolss_DeviceModePrintQuality r)
+{
+       NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r));
+       return NDR_ERR_SUCCESS;
+}
+
+static enum ndr_err_code ndr_pull_spoolss_DeviceModePrintQuality(struct ndr_pull *ndr, int ndr_flags, enum spoolss_DeviceModePrintQuality *r)
+{
+       uint16_t v;
+       NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &v));
+       *r = v;
+       return NDR_ERR_SUCCESS;
+}
+
+_PUBLIC_ void ndr_print_spoolss_DeviceModePrintQuality(struct ndr_print *ndr, const char *name, enum spoolss_DeviceModePrintQuality r)
+{
+       const char *val = NULL;
+
+       switch (r) {
+               case DMRES_HIGH: val = "DMRES_HIGH"; break;
+               case DMRES_MEDIUM: val = "DMRES_MEDIUM"; break;
+               case DMRES_LOW: val = "DMRES_LOW"; break;
+               case DMRES_DRAFT: val = "DMRES_DRAFT"; break;
+       }
+       ndr_print_enum(ndr, name, "ENUM", val, r);
+}
+
+static enum ndr_err_code ndr_push_spoolss_DeviceModeColor(struct ndr_push *ndr, int ndr_flags, enum spoolss_DeviceModeColor r)
+{
+       NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r));
+       return NDR_ERR_SUCCESS;
+}
+
+static enum ndr_err_code ndr_pull_spoolss_DeviceModeColor(struct ndr_pull *ndr, int ndr_flags, enum spoolss_DeviceModeColor *r)
+{
+       uint16_t v;
+       NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &v));
+       *r = v;
+       return NDR_ERR_SUCCESS;
+}
+
+_PUBLIC_ void ndr_print_spoolss_DeviceModeColor(struct ndr_print *ndr, const char *name, enum spoolss_DeviceModeColor r)
+{
+       const char *val = NULL;
+
+       switch (r) {
+               case DMRES_MONOCHROME: val = "DMRES_MONOCHROME"; break;
+               case DMRES_COLOR: val = "DMRES_COLOR"; break;
+       }
+       ndr_print_enum(ndr, name, "ENUM", val, r);
+}
+
+static enum ndr_err_code ndr_push_spoolss_DeviceModeDuplex(struct ndr_push *ndr, int ndr_flags, enum spoolss_DeviceModeDuplex r)
+{
+       NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r));
+       return NDR_ERR_SUCCESS;
+}
+
+static enum ndr_err_code ndr_pull_spoolss_DeviceModeDuplex(struct ndr_pull *ndr, int ndr_flags, enum spoolss_DeviceModeDuplex *r)
+{
+       uint16_t v;
+       NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &v));
+       *r = v;
+       return NDR_ERR_SUCCESS;
+}
+
+_PUBLIC_ void ndr_print_spoolss_DeviceModeDuplex(struct ndr_print *ndr, const char *name, enum spoolss_DeviceModeDuplex r)
+{
+       const char *val = NULL;
+
+       switch (r) {
+               case DMDUP_SIMPLEX: val = "DMDUP_SIMPLEX"; break;
+               case DMDUP_VERTICAL: val = "DMDUP_VERTICAL"; break;
+               case DMDUP_HORIZONTAL: val = "DMDUP_HORIZONTAL"; break;
+       }
+       ndr_print_enum(ndr, name, "ENUM", val, r);
+}
+
+static enum ndr_err_code ndr_push_spoolss_DeviceModeTTOption(struct ndr_push *ndr, int ndr_flags, enum spoolss_DeviceModeTTOption r)
+{
+       NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r));
+       return NDR_ERR_SUCCESS;
+}
+
+static enum ndr_err_code ndr_pull_spoolss_DeviceModeTTOption(struct ndr_pull *ndr, int ndr_flags, enum spoolss_DeviceModeTTOption *r)
+{
+       uint16_t v;
+       NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &v));
+       *r = v;
+       return NDR_ERR_SUCCESS;
+}
+
+_PUBLIC_ void ndr_print_spoolss_DeviceModeTTOption(struct ndr_print *ndr, const char *name, enum spoolss_DeviceModeTTOption r)
+{
+       const char *val = NULL;
+
+       switch (r) {
+               case DMTT_BITMAP: val = "DMTT_BITMAP"; break;
+               case DMTT_DOWNLOAD: val = "DMTT_DOWNLOAD"; break;
+               case DMTT_SUBDEV: val = "DMTT_SUBDEV"; break;
+               case DMTT_DOWNLOAD_OUTLINE: val = "DMTT_DOWNLOAD_OUTLINE"; break;
+       }
+       ndr_print_enum(ndr, name, "ENUM", val, r);
+}
+
+static enum ndr_err_code ndr_push_spoolss_DeviceModeCollate(struct ndr_push *ndr, int ndr_flags, enum spoolss_DeviceModeCollate r)
+{
+       NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r));
+       return NDR_ERR_SUCCESS;
+}
+
+static enum ndr_err_code ndr_pull_spoolss_DeviceModeCollate(struct ndr_pull *ndr, int ndr_flags, enum spoolss_DeviceModeCollate *r)
+{
+       uint16_t v;
+       NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &v));
+       *r = v;
+       return NDR_ERR_SUCCESS;
+}
+
+_PUBLIC_ void ndr_print_spoolss_DeviceModeCollate(struct ndr_print *ndr, const char *name, enum spoolss_DeviceModeCollate r)
+{
+       const char *val = NULL;
+
+       switch (r) {
+               case DMCOLLATE_FALSE: val = "DMCOLLATE_FALSE"; break;
+               case DMCOLLATE_TRUE: val = "DMCOLLATE_TRUE"; break;
+       }
+       ndr_print_enum(ndr, name, "ENUM", val, r);
+}
+
+static enum ndr_err_code ndr_push_spoolss_DeviceModeNUp(struct ndr_push *ndr, int ndr_flags, enum spoolss_DeviceModeNUp r)
+{
+       NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r));
+       return NDR_ERR_SUCCESS;
+}
+
+static enum ndr_err_code ndr_pull_spoolss_DeviceModeNUp(struct ndr_pull *ndr, int ndr_flags, enum spoolss_DeviceModeNUp *r)
+{
+       uint32_t v;
+       NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &v));
+       *r = v;
+       return NDR_ERR_SUCCESS;
+}
+
+_PUBLIC_ void ndr_print_spoolss_DeviceModeNUp(struct ndr_print *ndr, const char *name, enum spoolss_DeviceModeNUp r)
+{
+       const char *val = NULL;
+
+       switch (r) {
+               case DMNUP_SYSTEM: val = "DMNUP_SYSTEM"; break;
+               case DMNUP_ONEUP: val = "DMNUP_ONEUP"; break;
+       }
+       ndr_print_enum(ndr, name, "ENUM", val, r);
+}
+
+static enum ndr_err_code ndr_push_spoolss_DeviceModeICMMethod(struct ndr_push *ndr, int ndr_flags, enum spoolss_DeviceModeICMMethod r)
+{
+       NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r));
+       return NDR_ERR_SUCCESS;
+}
+
+static enum ndr_err_code ndr_pull_spoolss_DeviceModeICMMethod(struct ndr_pull *ndr, int ndr_flags, enum spoolss_DeviceModeICMMethod *r)
+{
+       uint32_t v;
+       NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &v));
+       *r = v;
+       return NDR_ERR_SUCCESS;
+}
+
+_PUBLIC_ void ndr_print_spoolss_DeviceModeICMMethod(struct ndr_print *ndr, const char *name, enum spoolss_DeviceModeICMMethod r)
+{
+       const char *val = NULL;
+
+       switch (r) {
+               case DMICMMETHOD_NONE: val = "DMICMMETHOD_NONE"; break;
+               case DMICMMETHOD_SYSTEM: val = "DMICMMETHOD_SYSTEM"; break;
+               case DMICMMETHOD_DRIVER: val = "DMICMMETHOD_DRIVER"; break;
+               case DMICMMETHOD_DEVICE: val = "DMICMMETHOD_DEVICE"; break;
+       }
+       ndr_print_enum(ndr, name, "ENUM", val, r);
+}
+
+static enum ndr_err_code ndr_push_spoolss_DeviceModeICMIntent(struct ndr_push *ndr, int ndr_flags, enum spoolss_DeviceModeICMIntent r)
+{
+       NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r));
+       return NDR_ERR_SUCCESS;
+}
+
+static enum ndr_err_code ndr_pull_spoolss_DeviceModeICMIntent(struct ndr_pull *ndr, int ndr_flags, enum spoolss_DeviceModeICMIntent *r)
+{
+       uint32_t v;
+       NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &v));
+       *r = v;
+       return NDR_ERR_SUCCESS;
+}
+
+_PUBLIC_ void ndr_print_spoolss_DeviceModeICMIntent(struct ndr_print *ndr, const char *name, enum spoolss_DeviceModeICMIntent r)
+{
+       const char *val = NULL;
+
+       switch (r) {
+               case DMICM_SATURATE: val = "DMICM_SATURATE"; break;
+               case DMICM_CONTRAST: val = "DMICM_CONTRAST"; break;
+               case DMICM_COLORIMETRIC: val = "DMICM_COLORIMETRIC"; break;
+               case DMICM_ABS_COLORIMETRIC: val = "DMICM_ABS_COLORIMETRIC"; break;
+       }
+       ndr_print_enum(ndr, name, "ENUM", val, r);
+}
+
+static enum ndr_err_code ndr_push_spoolss_DeviceModeMediaType(struct ndr_push *ndr, int ndr_flags, enum spoolss_DeviceModeMediaType r)
+{
+       NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r));
+       return NDR_ERR_SUCCESS;
+}
+
+static enum ndr_err_code ndr_pull_spoolss_DeviceModeMediaType(struct ndr_pull *ndr, int ndr_flags, enum spoolss_DeviceModeMediaType *r)
+{
+       uint32_t v;
+       NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &v));
+       *r = v;
+       return NDR_ERR_SUCCESS;
+}
+
+_PUBLIC_ void ndr_print_spoolss_DeviceModeMediaType(struct ndr_print *ndr, const char *name, enum spoolss_DeviceModeMediaType r)
+{
+       const char *val = NULL;
+
+       switch (r) {
+               case DMMEDIA_STANDARD: val = "DMMEDIA_STANDARD"; break;
+               case DMMEDIA_TRANSPARENCY: val = "DMMEDIA_TRANSPARENCY"; break;
+               case DMMEDIA_GLOSSY: val = "DMMEDIA_GLOSSY"; break;
+       }
+       ndr_print_enum(ndr, name, "ENUM", val, r);
+}
+
+static enum ndr_err_code ndr_push_spoolss_DeviceModeDitherType(struct ndr_push *ndr, int ndr_flags, enum spoolss_DeviceModeDitherType r)
+{
+       NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r));
+       return NDR_ERR_SUCCESS;
+}
+
+static enum ndr_err_code ndr_pull_spoolss_DeviceModeDitherType(struct ndr_pull *ndr, int ndr_flags, enum spoolss_DeviceModeDitherType *r)
+{
+       uint32_t v;
+       NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &v));
+       *r = v;
+       return NDR_ERR_SUCCESS;
+}
+
+_PUBLIC_ void ndr_print_spoolss_DeviceModeDitherType(struct ndr_print *ndr, const char *name, enum spoolss_DeviceModeDitherType r)
+{
+       const char *val = NULL;
+
+       switch (r) {
+               case DMDITHER_NONE: val = "DMDITHER_NONE"; break;
+               case DMDITHER_COARSE: val = "DMDITHER_COARSE"; break;
+               case DMDITHER_FINE: val = "DMDITHER_FINE"; break;
+               case DMDITHER_LINEART: val = "DMDITHER_LINEART"; break;
+               case DMDITHER_ERRORDIFFUSION: val = "DMDITHER_ERRORDIFFUSION"; break;
+               case DMDITHER_RESERVED6: val = "DMDITHER_RESERVED6"; break;
+               case DMDITHER_RESERVED7: val = "DMDITHER_RESERVED7"; break;
+               case DMDITHER_RESERVED8: val = "DMDITHER_RESERVED8"; break;
+               case DMDITHER_RESERVED9: val = "DMDITHER_RESERVED9"; break;
+               case DMDITHER_GRAYSCALE: val = "DMDITHER_GRAYSCALE"; break;
+       }
+       ndr_print_enum(ndr, name, "ENUM", val, r);
+}
+
 _PUBLIC_ enum ndr_err_code ndr_push_spoolss_DeviceMode(struct ndr_push *ndr, int ndr_flags, const struct spoolss_DeviceMode *r)
 {
        if (ndr_flags & NDR_SCALARS) {
                NDR_CHECK(ndr_push_align(ndr, 4));
                NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->devicename, 32, sizeof(uint16_t), CH_UTF16));
-               NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->specversion));
+               NDR_CHECK(ndr_push_spoolss_DeviceModeSpecVersion(ndr, NDR_SCALARS, r->specversion));
                NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->driverversion));
                NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->size));
                NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->driverextra_data.length));
                NDR_CHECK(ndr_push_spoolss_DeviceModeFields(ndr, NDR_SCALARS, r->fields));
-               NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->orientation));
-               NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->papersize));
+               NDR_CHECK(ndr_push_spoolss_DeviceModeOrientation(ndr, NDR_SCALARS, r->orientation));
+               NDR_CHECK(ndr_push_spoolss_DeviceModePaperSize(ndr, NDR_SCALARS, r->papersize));
                NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->paperlength));
                NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->paperwidth));
                NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->scale));
                NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->copies));
-               NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->defaultsource));
-               NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->printquality));
-               NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->color));
-               NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->duplex));
+               NDR_CHECK(ndr_push_spoolss_DeviceModeDefaultSource(ndr, NDR_SCALARS, r->defaultsource));
+               NDR_CHECK(ndr_push_spoolss_DeviceModePrintQuality(ndr, NDR_SCALARS, r->printquality));
+               NDR_CHECK(ndr_push_spoolss_DeviceModeColor(ndr, NDR_SCALARS, r->color));
+               NDR_CHECK(ndr_push_spoolss_DeviceModeDuplex(ndr, NDR_SCALARS, r->duplex));
                NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->yresolution));
-               NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->ttoption));
-               NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->collate));
+               NDR_CHECK(ndr_push_spoolss_DeviceModeTTOption(ndr, NDR_SCALARS, r->ttoption));
+               NDR_CHECK(ndr_push_spoolss_DeviceModeCollate(ndr, NDR_SCALARS, r->collate));
                NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->formname, 32, sizeof(uint16_t), CH_UTF16));
                NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->logpixels));
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->bitsperpel));
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->pelswidth));
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->pelsheight));
-               NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->displayflags));
+               NDR_CHECK(ndr_push_spoolss_DeviceModeNUp(ndr, NDR_SCALARS, r->displayflags));
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->displayfrequency));
-               NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->icmmethod));
-               NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->icmintent));
-               NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->mediatype));
-               NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->dithertype));
+               NDR_CHECK(ndr_push_spoolss_DeviceModeICMMethod(ndr, NDR_SCALARS, r->icmmethod));
+               NDR_CHECK(ndr_push_spoolss_DeviceModeICMIntent(ndr, NDR_SCALARS, r->icmintent));
+               NDR_CHECK(ndr_push_spoolss_DeviceModeMediaType(ndr, NDR_SCALARS, r->mediatype));
+               NDR_CHECK(ndr_push_spoolss_DeviceModeDitherType(ndr, NDR_SCALARS, r->dithertype));
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->reserved1));
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->reserved2));
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->panningwidth));
@@ -626,35 +1095,35 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_DeviceMode(struct ndr_pull *ndr, int
        if (ndr_flags & NDR_SCALARS) {
                NDR_CHECK(ndr_pull_align(ndr, 4));
                NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->devicename, 32, sizeof(uint16_t), CH_UTF16));
-               NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->specversion));
+               NDR_CHECK(ndr_pull_spoolss_DeviceModeSpecVersion(ndr, NDR_SCALARS, &r->specversion));
                NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->driverversion));
                NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->size));
                NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->__driverextra_length));
                NDR_CHECK(ndr_pull_spoolss_DeviceModeFields(ndr, NDR_SCALARS, &r->fields));
-               NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->orientation));
-               NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->papersize));
+               NDR_CHECK(ndr_pull_spoolss_DeviceModeOrientation(ndr, NDR_SCALARS, &r->orientation));
+               NDR_CHECK(ndr_pull_spoolss_DeviceModePaperSize(ndr, NDR_SCALARS, &r->papersize));
                NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->paperlength));
                NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->paperwidth));
                NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->scale));
                NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->copies));
-               NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->defaultsource));
-               NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->printquality));
-               NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->color));
-               NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->duplex));
+               NDR_CHECK(ndr_pull_spoolss_DeviceModeDefaultSource(ndr, NDR_SCALARS, &r->defaultsource));
+               NDR_CHECK(ndr_pull_spoolss_DeviceModePrintQuality(ndr, NDR_SCALARS, &r->printquality));
+               NDR_CHECK(ndr_pull_spoolss_DeviceModeColor(ndr, NDR_SCALARS, &r->color));
+               NDR_CHECK(ndr_pull_spoolss_DeviceModeDuplex(ndr, NDR_SCALARS, &r->duplex));
                NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->yresolution));
-               NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->ttoption));
-               NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->collate));
+               NDR_CHECK(ndr_pull_spoolss_DeviceModeTTOption(ndr, NDR_SCALARS, &r->ttoption));
+               NDR_CHECK(ndr_pull_spoolss_DeviceModeCollate(ndr, NDR_SCALARS, &r->collate));
                NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->formname, 32, sizeof(uint16_t), CH_UTF16));
                NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->logpixels));
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->bitsperpel));
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->pelswidth));
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->pelsheight));
-               NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->displayflags));
+               NDR_CHECK(ndr_pull_spoolss_DeviceModeNUp(ndr, NDR_SCALARS, &r->displayflags));
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->displayfrequency));
-               NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->icmmethod));
-               NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->icmintent));
-               NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->mediatype));
-               NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->dithertype));
+               NDR_CHECK(ndr_pull_spoolss_DeviceModeICMMethod(ndr, NDR_SCALARS, &r->icmmethod));
+               NDR_CHECK(ndr_pull_spoolss_DeviceModeICMIntent(ndr, NDR_SCALARS, &r->icmintent));
+               NDR_CHECK(ndr_pull_spoolss_DeviceModeMediaType(ndr, NDR_SCALARS, &r->mediatype));
+               NDR_CHECK(ndr_pull_spoolss_DeviceModeDitherType(ndr, NDR_SCALARS, &r->dithertype));
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->reserved1));
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->reserved2));
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->panningwidth));
@@ -681,35 +1150,35 @@ _PUBLIC_ void ndr_print_spoolss_DeviceMode(struct ndr_print *ndr, const char *na
        ndr_print_struct(ndr, name, "spoolss_DeviceMode");
        ndr->depth++;
        ndr_print_string(ndr, "devicename", r->devicename);
-       ndr_print_uint16(ndr, "specversion", r->specversion);
+       ndr_print_spoolss_DeviceModeSpecVersion(ndr, "specversion", r->specversion);
        ndr_print_uint16(ndr, "driverversion", r->driverversion);
        ndr_print_uint16(ndr, "size", r->size);
        ndr_print_uint16(ndr, "__driverextra_length", (ndr->flags & LIBNDR_PRINT_SET_VALUES)?r->driverextra_data.length:r->__driverextra_length);
        ndr_print_spoolss_DeviceModeFields(ndr, "fields", r->fields);
-       ndr_print_uint16(ndr, "orientation", r->orientation);
-       ndr_print_uint16(ndr, "papersize", r->papersize);
+       ndr_print_spoolss_DeviceModeOrientation(ndr, "orientation", r->orientation);
+       ndr_print_spoolss_DeviceModePaperSize(ndr, "papersize", r->papersize);
        ndr_print_uint16(ndr, "paperlength", r->paperlength);
        ndr_print_uint16(ndr, "paperwidth", r->paperwidth);
        ndr_print_uint16(ndr, "scale", r->scale);
        ndr_print_uint16(ndr, "copies", r->copies);
-       ndr_print_uint16(ndr, "defaultsource", r->defaultsource);
-       ndr_print_uint16(ndr, "printquality", r->printquality);
-       ndr_print_uint16(ndr, "color", r->color);
-       ndr_print_uint16(ndr, "duplex", r->duplex);
+       ndr_print_spoolss_DeviceModeDefaultSource(ndr, "defaultsource", r->defaultsource);
+       ndr_print_spoolss_DeviceModePrintQuality(ndr, "printquality", r->printquality);
+       ndr_print_spoolss_DeviceModeColor(ndr, "color", r->color);
+       ndr_print_spoolss_DeviceModeDuplex(ndr, "duplex", r->duplex);
        ndr_print_uint16(ndr, "yresolution", r->yresolution);
-       ndr_print_uint16(ndr, "ttoption", r->ttoption);
-       ndr_print_uint16(ndr, "collate", r->collate);
+       ndr_print_spoolss_DeviceModeTTOption(ndr, "ttoption", r->ttoption);
+       ndr_print_spoolss_DeviceModeCollate(ndr, "collate", r->collate);
        ndr_print_string(ndr, "formname", r->formname);
        ndr_print_uint16(ndr, "logpixels", r->logpixels);
        ndr_print_uint32(ndr, "bitsperpel", r->bitsperpel);
        ndr_print_uint32(ndr, "pelswidth", r->pelswidth);
        ndr_print_uint32(ndr, "pelsheight", r->pelsheight);
-       ndr_print_uint32(ndr, "displayflags", r->displayflags);
+       ndr_print_spoolss_DeviceModeNUp(ndr, "displayflags", r->displayflags);
        ndr_print_uint32(ndr, "displayfrequency", r->displayfrequency);
-       ndr_print_uint32(ndr, "icmmethod", r->icmmethod);
-       ndr_print_uint32(ndr, "icmintent", r->icmintent);
-       ndr_print_uint32(ndr, "mediatype", r->mediatype);
-       ndr_print_uint32(ndr, "dithertype", r->dithertype);
+       ndr_print_spoolss_DeviceModeICMMethod(ndr, "icmmethod", r->icmmethod);
+       ndr_print_spoolss_DeviceModeICMIntent(ndr, "icmintent", r->icmintent);
+       ndr_print_spoolss_DeviceModeMediaType(ndr, "mediatype", r->mediatype);
+       ndr_print_spoolss_DeviceModeDitherType(ndr, "dithertype", r->dithertype);
        ndr_print_uint32(ndr, "reserved1", r->reserved1);
        ndr_print_uint32(ndr, "reserved2", r->reserved2);
        ndr_print_uint32(ndr, "panningwidth", r->panningwidth);
@@ -5959,7 +6428,7 @@ static enum ndr_err_code ndr_push_spoolss_SetPrinterInfo1(struct ndr_push *ndr,
 {
        if (ndr_flags & NDR_SCALARS) {
                NDR_CHECK(ndr_push_align(ndr, 4));
-               NDR_CHECK(ndr_push_spoolss_EnumPrinterFlags(ndr, NDR_SCALARS, r->flags));
+               NDR_CHECK(ndr_push_spoolss_PrinterAttributes(ndr, NDR_SCALARS, r->flags));
                NDR_CHECK(ndr_push_unique_ptr(ndr, r->description));
                NDR_CHECK(ndr_push_unique_ptr(ndr, r->name));
                NDR_CHECK(ndr_push_unique_ptr(ndr, r->comment));
@@ -5997,7 +6466,7 @@ static enum ndr_err_code ndr_pull_spoolss_SetPrinterInfo1(struct ndr_pull *ndr,
        TALLOC_CTX *_mem_save_comment_0;
        if (ndr_flags & NDR_SCALARS) {
                NDR_CHECK(ndr_pull_align(ndr, 4));
-               NDR_CHECK(ndr_pull_spoolss_EnumPrinterFlags(ndr, NDR_SCALARS, &r->flags));
+               NDR_CHECK(ndr_pull_spoolss_PrinterAttributes(ndr, NDR_SCALARS, &r->flags));
                NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_description));
                if (_ptr_description) {
                        NDR_PULL_ALLOC(ndr, r->description);
@@ -6062,7 +6531,7 @@ _PUBLIC_ void ndr_print_spoolss_SetPrinterInfo1(struct ndr_print *ndr, const cha
 {
        ndr_print_struct(ndr, name, "spoolss_SetPrinterInfo1");
        ndr->depth++;
-       ndr_print_spoolss_EnumPrinterFlags(ndr, "flags", r->flags);
+       ndr_print_spoolss_PrinterAttributes(ndr, "flags", r->flags);
        ndr_print_ptr(ndr, "description", r->description);
        ndr->depth++;
        if (r->description) {
@@ -14464,7 +14933,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_OSVersion(struct ndr_pull *ndr, int
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->major));
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->minor));
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->build));
-               NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->unknown));
+               NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->platform_id));
                {
                        uint32_t _flags_save_string = ndr->flags;
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
@@ -14490,7 +14959,7 @@ _PUBLIC_ void ndr_print_spoolss_OSVersion(struct ndr_print *ndr, const char *nam
        ndr_print_uint32(ndr, "major", r->major);
        ndr_print_uint32(ndr, "minor", r->minor);
        ndr_print_uint32(ndr, "build", r->build);
-       ndr_print_uint32(ndr, "unknown", (ndr->flags & LIBNDR_PRINT_SET_VALUES)?2:r->unknown);
+       ndr_print_uint32(ndr, "platform_id", (ndr->flags & LIBNDR_PRINT_SET_VALUES)?2:r->platform_id);
        ndr_print_string(ndr, "extra_string", r->extra_string);
        ndr->depth--;
 }
@@ -14520,8 +14989,11 @@ _PUBLIC_ enum ndr_err_code ndr_push_spoolss_OSVersionEx(struct ndr_push *ndr, in
                        }
                        ndr->flags = _flags_save_string;
                }
-               NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->unknown2));
-               NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->unknown3));
+               NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->service_pack_major));
+               NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->service_pack_minor));
+               NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->suite_mask));
+               NDR_CHECK(ndr_push_uint8(ndr, NDR_SCALARS, r->product_type));
+               NDR_CHECK(ndr_push_uint8(ndr, NDR_SCALARS, r->reserved));
        }
        if (ndr_flags & NDR_BUFFERS) {
        }
@@ -14536,7 +15008,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_OSVersionEx(struct ndr_pull *ndr, in
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->major));
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->minor));
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->build));
-               NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->unknown1));
+               NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->platform_id));
                {
                        uint32_t _flags_save_string = ndr->flags;
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
@@ -14548,8 +15020,11 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_OSVersionEx(struct ndr_pull *ndr, in
                        }
                        ndr->flags = _flags_save_string;
                }
-               NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->unknown2));
-               NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->unknown3));
+               NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->service_pack_major));
+               NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->service_pack_minor));
+               NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->suite_mask));
+               NDR_CHECK(ndr_pull_uint8(ndr, NDR_SCALARS, &r->product_type));
+               NDR_CHECK(ndr_pull_uint8(ndr, NDR_SCALARS, &r->reserved));
        }
        if (ndr_flags & NDR_BUFFERS) {
        }
@@ -14564,10 +15039,13 @@ _PUBLIC_ void ndr_print_spoolss_OSVersionEx(struct ndr_print *ndr, const char *n
        ndr_print_uint32(ndr, "major", r->major);
        ndr_print_uint32(ndr, "minor", r->minor);
        ndr_print_uint32(ndr, "build", r->build);
-       ndr_print_uint32(ndr, "unknown1", (ndr->flags & LIBNDR_PRINT_SET_VALUES)?2:r->unknown1);
+       ndr_print_uint32(ndr, "platform_id", (ndr->flags & LIBNDR_PRINT_SET_VALUES)?2:r->platform_id);
        ndr_print_string(ndr, "extra_string", r->extra_string);
-       ndr_print_uint32(ndr, "unknown2", r->unknown2);
-       ndr_print_uint32(ndr, "unknown3", r->unknown3);
+       ndr_print_uint16(ndr, "service_pack_major", r->service_pack_major);
+       ndr_print_uint16(ndr, "service_pack_minor", r->service_pack_minor);
+       ndr_print_uint16(ndr, "suite_mask", r->suite_mask);
+       ndr_print_uint8(ndr, "product_type", r->product_type);
+       ndr_print_uint8(ndr, "reserved", r->reserved);
        ndr->depth--;
 }
 
@@ -19578,33 +20056,112 @@ _PUBLIC_ void ndr_print_spoolss_EnumJobs(struct ndr_print *ndr, const char *name
                        }
                        ndr->depth--;
                }
-               ndr->depth--;
-               ndr->depth--;
-               ndr_print_ptr(ndr, "needed", r->out.needed);
-               ndr->depth++;
-               ndr_print_uint32(ndr, "needed", *r->out.needed);
-               ndr->depth--;
-               ndr_print_WERROR(ndr, "result", r->out.result);
-               ndr->depth--;
-       }
-       ndr->depth--;
-}
-
-static enum ndr_err_code ndr_push_spoolss_AddPrinter(struct ndr_push *ndr, int flags, const struct spoolss_AddPrinter *r)
-{
-       if (flags & NDR_IN) {
-       }
-       if (flags & NDR_OUT) {
-               NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
-       }
-       return NDR_ERR_SUCCESS;
-}
-
-static enum ndr_err_code ndr_pull_spoolss_AddPrinter(struct ndr_pull *ndr, int flags, struct spoolss_AddPrinter *r)
-{
-       if (flags & NDR_IN) {
+               ndr->depth--;
+               ndr->depth--;
+               ndr_print_ptr(ndr, "needed", r->out.needed);
+               ndr->depth++;
+               ndr_print_uint32(ndr, "needed", *r->out.needed);
+               ndr->depth--;
+               ndr_print_WERROR(ndr, "result", r->out.result);
+               ndr->depth--;
+       }
+       ndr->depth--;
+}
+
+static enum ndr_err_code ndr_push_spoolss_AddPrinter(struct ndr_push *ndr, int flags, const struct spoolss_AddPrinter *r)
+{
+       if (flags & NDR_IN) {
+               NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.server));
+               if (r->in.server) {
+                       NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server, CH_UTF16)));
+                       NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
+                       NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server, CH_UTF16)));
+                       NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.server, ndr_charset_length(r->in.server, CH_UTF16), sizeof(uint16_t), CH_UTF16));
+               }
+               if (r->in.info_ctr == NULL) {
+                       return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
+               }
+               NDR_CHECK(ndr_push_spoolss_SetPrinterInfoCtr(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.info_ctr));
+               if (r->in.devmode_ctr == NULL) {
+                       return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
+               }
+               NDR_CHECK(ndr_push_spoolss_DevmodeContainer(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.devmode_ctr));
+               if (r->in.secdesc_ctr == NULL) {
+                       return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
+               }
+               NDR_CHECK(ndr_push_sec_desc_buf(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.secdesc_ctr));
+       }
+       if (flags & NDR_OUT) {
+               if (r->out.handle == NULL) {
+                       return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
+               }
+               NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->out.handle));
+               NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
+       }
+       return NDR_ERR_SUCCESS;
+}
+
+static enum ndr_err_code ndr_pull_spoolss_AddPrinter(struct ndr_pull *ndr, int flags, struct spoolss_AddPrinter *r)
+{
+       uint32_t _ptr_server;
+       TALLOC_CTX *_mem_save_server_0;
+       TALLOC_CTX *_mem_save_info_ctr_0;
+       TALLOC_CTX *_mem_save_devmode_ctr_0;
+       TALLOC_CTX *_mem_save_secdesc_ctr_0;
+       TALLOC_CTX *_mem_save_handle_0;
+       if (flags & NDR_IN) {
+               ZERO_STRUCT(r->out);
+
+               NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_server));
+               if (_ptr_server) {
+                       NDR_PULL_ALLOC(ndr, r->in.server);
+               } else {
+                       r->in.server = NULL;
+               }
+               if (r->in.server) {
+                       _mem_save_server_0 = NDR_PULL_GET_MEM_CTX(ndr);
+                       NDR_PULL_SET_MEM_CTX(ndr, r->in.server, 0);
+                       NDR_CHECK(ndr_pull_array_size(ndr, &r->in.server));
+                       NDR_CHECK(ndr_pull_array_length(ndr, &r->in.server));
+                       if (ndr_get_array_length(ndr, &r->in.server) > ndr_get_array_size(ndr, &r->in.server)) {
+                               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));
+                       }
+                       NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.server), sizeof(uint16_t)));
+                       NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.server, ndr_get_array_length(ndr, &r->in.server), sizeof(uint16_t), CH_UTF16));
+                       NDR_PULL_SET_MEM_CTX(ndr, _mem_save_server_0, 0);
+               }
+               if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
+                       NDR_PULL_ALLOC(ndr, r->in.info_ctr);
+               }
+               _mem_save_info_ctr_0 = NDR_PULL_GET_MEM_CTX(ndr);
+               NDR_PULL_SET_MEM_CTX(ndr, r->in.info_ctr, LIBNDR_FLAG_REF_ALLOC);
+               NDR_CHECK(ndr_pull_spoolss_SetPrinterInfoCtr(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.info_ctr));
+               NDR_PULL_SET_MEM_CTX(ndr, _mem_save_info_ctr_0, LIBNDR_FLAG_REF_ALLOC);
+               if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
+                       NDR_PULL_ALLOC(ndr, r->in.devmode_ctr);
+               }
+               _mem_save_devmode_ctr_0 = NDR_PULL_GET_MEM_CTX(ndr);
+               NDR_PULL_SET_MEM_CTX(ndr, r->in.devmode_ctr, LIBNDR_FLAG_REF_ALLOC);
+               NDR_CHECK(ndr_pull_spoolss_DevmodeContainer(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.devmode_ctr));
+               NDR_PULL_SET_MEM_CTX(ndr, _mem_save_devmode_ctr_0, LIBNDR_FLAG_REF_ALLOC);
+               if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
+                       NDR_PULL_ALLOC(ndr, r->in.secdesc_ctr);
+               }
+               _mem_save_secdesc_ctr_0 = NDR_PULL_GET_MEM_CTX(ndr);
+               NDR_PULL_SET_MEM_CTX(ndr, r->in.secdesc_ctr, LIBNDR_FLAG_REF_ALLOC);
+               NDR_CHECK(ndr_pull_sec_desc_buf(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.secdesc_ctr));
+               NDR_PULL_SET_MEM_CTX(ndr, _mem_save_secdesc_ctr_0, LIBNDR_FLAG_REF_ALLOC);
+               NDR_PULL_ALLOC(ndr, r->out.handle);
+               ZERO_STRUCTP(r->out.handle);
        }
        if (flags & NDR_OUT) {
+               if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
+                       NDR_PULL_ALLOC(ndr, r->out.handle);
+               }
+               _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
+               NDR_PULL_SET_MEM_CTX(ndr, r->out.handle, LIBNDR_FLAG_REF_ALLOC);
+               NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->out.handle));
+               NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
                NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
        }
        return NDR_ERR_SUCCESS;
@@ -19620,11 +20177,33 @@ _PUBLIC_ void ndr_print_spoolss_AddPrinter(struct ndr_print *ndr, const char *na
        if (flags & NDR_IN) {
                ndr_print_struct(ndr, "in", "spoolss_AddPrinter");
                ndr->depth++;
+               ndr_print_ptr(ndr, "server", r->in.server);
+               ndr->depth++;
+               if (r->in.server) {
+                       ndr_print_string(ndr, "server", r->in.server);
+               }
+               ndr->depth--;
+               ndr_print_ptr(ndr, "info_ctr", r->in.info_ctr);
+               ndr->depth++;
+               ndr_print_spoolss_SetPrinterInfoCtr(ndr, "info_ctr", r->in.info_ctr);
+               ndr->depth--;
+               ndr_print_ptr(ndr, "devmode_ctr", r->in.devmode_ctr);
+               ndr->depth++;
+               ndr_print_spoolss_DevmodeContainer(ndr, "devmode_ctr", r->in.devmode_ctr);
+               ndr->depth--;
+               ndr_print_ptr(ndr, "secdesc_ctr", r->in.secdesc_ctr);
+               ndr->depth++;
+               ndr_print_sec_desc_buf(ndr, "secdesc_ctr", r->in.secdesc_ctr);
+               ndr->depth--;
                ndr->depth--;
        }
        if (flags & NDR_OUT) {
                ndr_print_struct(ndr, "out", "spoolss_AddPrinter");
                ndr->depth++;
+               ndr_print_ptr(ndr, "handle", r->out.handle);
+               ndr->depth++;
+               ndr_print_policy_handle(ndr, "handle", r->out.handle);
+               ndr->depth--;
                ndr_print_WERROR(ndr, "result", r->out.result);
                ndr->depth--;
        }
@@ -20291,8 +20870,39 @@ _PUBLIC_ void ndr_print_spoolss_EnumPrinterDrivers(struct ndr_print *ndr, const
 static enum ndr_err_code ndr_push_spoolss_GetPrinterDriver(struct ndr_push *ndr, int flags, const struct spoolss_GetPrinterDriver *r)
 {
        if (flags & NDR_IN) {
+               if (r->in.handle == NULL) {
+                       return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
+               }
+               NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
+               NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.architecture));
+               if (r->in.architecture) {
+                       NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.architecture, CH_UTF16)));
+                       NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
+                       NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.architecture, CH_UTF16)));
+                       NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.architecture, ndr_charset_length(r->in.architecture, CH_UTF16), sizeof(uint16_t), CH_UTF16));
+               }
+               NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.level));
+               NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.buffer));
+               if (r->in.buffer) {
+                       NDR_CHECK(ndr_push_DATA_BLOB(ndr, NDR_SCALARS, *r->in.buffer));
+               }
+               NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.offered));
        }
        if (flags & NDR_OUT) {
+               NDR_CHECK(ndr_push_unique_ptr(ndr, r->out.info));
+               if (r->out.info) {
+                       {
+                               struct ndr_push *_ndr_info;
+                               NDR_CHECK(ndr_push_subcontext_start(ndr, &_ndr_info, 4, r->in.offered));
+                               NDR_CHECK(ndr_push_set_switch_value(_ndr_info, r->out.info, r->in.level));
+                               NDR_CHECK(ndr_push_spoolss_DriverInfo(_ndr_info, NDR_SCALARS|NDR_BUFFERS, r->out.info));
+                               NDR_CHECK(ndr_push_subcontext_end(ndr, _ndr_info, 4, r->in.offered));
+                       }
+               }
+               if (r->out.needed == NULL) {
+                       return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
+               }
+               NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.needed));
                NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
        }
        return NDR_ERR_SUCCESS;
@@ -20300,9 +20910,85 @@ static enum ndr_err_code ndr_push_spoolss_GetPrinterDriver(struct ndr_push *ndr,
 
 static enum ndr_err_code ndr_pull_spoolss_GetPrinterDriver(struct ndr_pull *ndr, int flags, struct spoolss_GetPrinterDriver *r)
 {
+       uint32_t _ptr_architecture;
+       uint32_t _ptr_buffer;
+       uint32_t _ptr_info;
+       TALLOC_CTX *_mem_save_handle_0;
+       TALLOC_CTX *_mem_save_architecture_0;
+       TALLOC_CTX *_mem_save_buffer_0;
+       TALLOC_CTX *_mem_save_info_0;
+       TALLOC_CTX *_mem_save_needed_0;
        if (flags & NDR_IN) {
+               ZERO_STRUCT(r->out);
+
+               if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
+                       NDR_PULL_ALLOC(ndr, r->in.handle);
+               }
+               _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
+               NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
+               NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
+               NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
+               NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_architecture));
+               if (_ptr_architecture) {
+                       NDR_PULL_ALLOC(ndr, r->in.architecture);
+               } else {
+                       r->in.architecture = NULL;
+               }
+               if (r->in.architecture) {
+                       _mem_save_architecture_0 = NDR_PULL_GET_MEM_CTX(ndr);
+                       NDR_PULL_SET_MEM_CTX(ndr, r->in.architecture, 0);
+                       NDR_CHECK(ndr_pull_array_size(ndr, &r->in.architecture));
+                       NDR_CHECK(ndr_pull_array_length(ndr, &r->in.architecture));
+                       if (ndr_get_array_length(ndr, &r->in.architecture) > ndr_get_array_size(ndr, &r->in.architecture)) {
+                               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));
+                       }
+                       NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.architecture), sizeof(uint16_t)));
+                       NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.architecture, ndr_get_array_length(ndr, &r->in.architecture), sizeof(uint16_t), CH_UTF16));
+                       NDR_PULL_SET_MEM_CTX(ndr, _mem_save_architecture_0, 0);
+               }
+               NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.level));
+               NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_buffer));
+               if (_ptr_buffer) {
+                       NDR_PULL_ALLOC(ndr, r->in.buffer);
+               } else {
+                       r->in.buffer = NULL;
+               }
+               if (r->in.buffer) {
+                       _mem_save_buffer_0 = NDR_PULL_GET_MEM_CTX(ndr);
+                       NDR_PULL_SET_MEM_CTX(ndr, r->in.buffer, 0);
+                       NDR_CHECK(ndr_pull_DATA_BLOB(ndr, NDR_SCALARS, r->in.buffer));
+                       NDR_PULL_SET_MEM_CTX(ndr, _mem_save_buffer_0, 0);
+               }
+               NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.offered));
+               NDR_PULL_ALLOC(ndr, r->out.needed);
+               ZERO_STRUCTP(r->out.needed);
        }
        if (flags & NDR_OUT) {
+               NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_info));
+               if (_ptr_info) {
+                       NDR_PULL_ALLOC(ndr, r->out.info);
+               } else {
+                       r->out.info = NULL;
+               }
+               if (r->out.info) {
+                       _mem_save_info_0 = NDR_PULL_GET_MEM_CTX(ndr);
+                       NDR_PULL_SET_MEM_CTX(ndr, r->out.info, 0);
+                       {
+                               struct ndr_pull *_ndr_info;
+                               NDR_CHECK(ndr_pull_subcontext_start(ndr, &_ndr_info, 4, r->in.offered));
+                               NDR_CHECK(ndr_pull_set_switch_value(_ndr_info, r->out.info, r->in.level));
+                               NDR_CHECK(ndr_pull_spoolss_DriverInfo(_ndr_info, NDR_SCALARS|NDR_BUFFERS, r->out.info));
+                               NDR_CHECK(ndr_pull_subcontext_end(ndr, _ndr_info, 4, r->in.offered));
+                       }
+                       NDR_PULL_SET_MEM_CTX(ndr, _mem_save_info_0, 0);
+               }
+               if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
+                       NDR_PULL_ALLOC(ndr, r->out.needed);
+               }
+               _mem_save_needed_0 = NDR_PULL_GET_MEM_CTX(ndr);
+               NDR_PULL_SET_MEM_CTX(ndr, r->out.needed, LIBNDR_FLAG_REF_ALLOC);
+               NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.needed));
+               NDR_PULL_SET_MEM_CTX(ndr, _mem_save_needed_0, LIBNDR_FLAG_REF_ALLOC);
                NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
        }
        return NDR_ERR_SUCCESS;
@@ -20318,11 +21004,40 @@ _PUBLIC_ void ndr_print_spoolss_GetPrinterDriver(struct ndr_print *ndr, const ch
        if (flags & NDR_IN) {
                ndr_print_struct(ndr, "in", "spoolss_GetPrinterDriver");
                ndr->depth++;
+               ndr_print_ptr(ndr, "handle", r->in.handle);
+               ndr->depth++;
+               ndr_print_policy_handle(ndr, "handle", r->in.handle);
+               ndr->depth--;
+               ndr_print_ptr(ndr, "architecture", r->in.architecture);
+               ndr->depth++;
+               if (r->in.architecture) {
+                       ndr_print_string(ndr, "architecture", r->in.architecture);
+               }
+               ndr->depth--;
+               ndr_print_uint32(ndr, "level", r->in.level);
+               ndr_print_ptr(ndr, "buffer", r->in.buffer);
+               ndr->depth++;
+               if (r->in.buffer) {
+                       ndr_print_DATA_BLOB(ndr, "buffer", *r->in.buffer);
+               }
+               ndr->depth--;
+               ndr_print_uint32(ndr, "offered", r->in.offered);
                ndr->depth--;
        }
        if (flags & NDR_OUT) {
                ndr_print_struct(ndr, "out", "spoolss_GetPrinterDriver");
                ndr->depth++;
+               ndr_print_ptr(ndr, "info", r->out.info);
+               ndr->depth++;
+               if (r->out.info) {
+                       ndr_print_set_switch_value(ndr, r->out.info, r->in.level);
+                       ndr_print_spoolss_DriverInfo(ndr, "info", r->out.info);
+               }
+               ndr->depth--;
+               ndr_print_ptr(ndr, "needed", r->out.needed);
+               ndr->depth++;
+               ndr_print_uint32(ndr, "needed", *r->out.needed);
+               ndr->depth--;
                ndr_print_WERROR(ndr, "result", r->out.result);
                ndr->depth--;
        }
@@ -23465,8 +24180,20 @@ _PUBLIC_ void ndr_print_spoolss_DeletePort(struct ndr_print *ndr, const char *na
 static enum ndr_err_code ndr_push_spoolss_CreatePrinterIC(struct ndr_push *ndr, int flags, const struct spoolss_CreatePrinterIC *r)
 {
        if (flags & NDR_IN) {
+               if (r->in.handle == NULL) {
+                       return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
+               }
+               NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
+               if (r->in.devmode_ctr == NULL) {
+                       return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
+               }
+               NDR_CHECK(ndr_push_spoolss_DevmodeContainer(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.devmode_ctr));
        }
        if (flags & NDR_OUT) {
+               if (r->out.gdi_handle == NULL) {
+                       return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
+               }
+               NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->out.gdi_handle));
                NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
        }
        return NDR_ERR_SUCCESS;
@@ -23474,9 +24201,37 @@ static enum ndr_err_code ndr_push_spoolss_CreatePrinterIC(struct ndr_push *ndr,
 
 static enum ndr_err_code ndr_pull_spoolss_CreatePrinterIC(struct ndr_pull *ndr, int flags, struct spoolss_CreatePrinterIC *r)
 {
+       TALLOC_CTX *_mem_save_handle_0;
+       TALLOC_CTX *_mem_save_gdi_handle_0;
+       TALLOC_CTX *_mem_save_devmode_ctr_0;
        if (flags & NDR_IN) {
+               ZERO_STRUCT(r->out);
+
+               if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
+                       NDR_PULL_ALLOC(ndr, r->in.handle);
+               }
+               _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
+               NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
+               NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
+               NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
+               if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
+                       NDR_PULL_ALLOC(ndr, r->in.devmode_ctr);
+               }
+               _mem_save_devmode_ctr_0 = NDR_PULL_GET_MEM_CTX(ndr);
+               NDR_PULL_SET_MEM_CTX(ndr, r->in.devmode_ctr, LIBNDR_FLAG_REF_ALLOC);
+               NDR_CHECK(ndr_pull_spoolss_DevmodeContainer(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.devmode_ctr));
+               NDR_PULL_SET_MEM_CTX(ndr, _mem_save_devmode_ctr_0, LIBNDR_FLAG_REF_ALLOC);
+               NDR_PULL_ALLOC(ndr, r->out.gdi_handle);
+               ZERO_STRUCTP(r->out.gdi_handle);
        }
        if (flags & NDR_OUT) {
+               if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
+                       NDR_PULL_ALLOC(ndr, r->out.gdi_handle);
+               }
+               _mem_save_gdi_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
+               NDR_PULL_SET_MEM_CTX(ndr, r->out.gdi_handle, LIBNDR_FLAG_REF_ALLOC);
+               NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->out.gdi_handle));
+               NDR_PULL_SET_MEM_CTX(ndr, _mem_save_gdi_handle_0, LIBNDR_FLAG_REF_ALLOC);
                NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
        }
        return NDR_ERR_SUCCESS;
@@ -23492,11 +24247,23 @@ _PUBLIC_ void ndr_print_spoolss_CreatePrinterIC(struct ndr_print *ndr, const cha
        if (flags & NDR_IN) {
                ndr_print_struct(ndr, "in", "spoolss_CreatePrinterIC");
                ndr->depth++;
+               ndr_print_ptr(ndr, "handle", r->in.handle);
+               ndr->depth++;
+               ndr_print_policy_handle(ndr, "handle", r->in.handle);
+               ndr->depth--;
+               ndr_print_ptr(ndr, "devmode_ctr", r->in.devmode_ctr);
+               ndr->depth++;
+               ndr_print_spoolss_DevmodeContainer(ndr, "devmode_ctr", r->in.devmode_ctr);
+               ndr->depth--;
                ndr->depth--;
        }
        if (flags & NDR_OUT) {
                ndr_print_struct(ndr, "out", "spoolss_CreatePrinterIC");
                ndr->depth++;
+               ndr_print_ptr(ndr, "gdi_handle", r->out.gdi_handle);
+               ndr->depth++;
+               ndr_print_policy_handle(ndr, "gdi_handle", r->out.gdi_handle);
+               ndr->depth--;
                ndr_print_WERROR(ndr, "result", r->out.result);
                ndr->depth--;
        }
@@ -23547,8 +24314,16 @@ _PUBLIC_ void ndr_print_spoolss_PlayGDIScriptOnPrinterIC(struct ndr_print *ndr,
 static enum ndr_err_code ndr_push_spoolss_DeletePrinterIC(struct ndr_push *ndr, int flags, const struct spoolss_DeletePrinterIC *r)
 {
        if (flags & NDR_IN) {
+               if (r->in.gdi_handle == NULL) {
+                       return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
+               }
+               NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.gdi_handle));
        }
        if (flags & NDR_OUT) {
+               if (r->out.gdi_handle == NULL) {
+                       return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
+               }
+               NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->out.gdi_handle));
                NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
        }
        return NDR_ERR_SUCCESS;
@@ -23556,9 +24331,28 @@ static enum ndr_err_code ndr_push_spoolss_DeletePrinterIC(struct ndr_push *ndr,
 
 static enum ndr_err_code ndr_pull_spoolss_DeletePrinterIC(struct ndr_pull *ndr, int flags, struct spoolss_DeletePrinterIC *r)
 {
+       TALLOC_CTX *_mem_save_gdi_handle_0;
        if (flags & NDR_IN) {
+               ZERO_STRUCT(r->out);
+
+               if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
+                       NDR_PULL_ALLOC(ndr, r->in.gdi_handle);
+               }
+               _mem_save_gdi_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
+               NDR_PULL_SET_MEM_CTX(ndr, r->in.gdi_handle, LIBNDR_FLAG_REF_ALLOC);
+               NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.gdi_handle));
+               NDR_PULL_SET_MEM_CTX(ndr, _mem_save_gdi_handle_0, LIBNDR_FLAG_REF_ALLOC);
+               NDR_PULL_ALLOC(ndr, r->out.gdi_handle);
+               *r->out.gdi_handle = *r->in.gdi_handle;
        }
        if (flags & NDR_OUT) {
+               if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
+                       NDR_PULL_ALLOC(ndr, r->out.gdi_handle);
+               }
+               _mem_save_gdi_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
+               NDR_PULL_SET_MEM_CTX(ndr, r->out.gdi_handle, LIBNDR_FLAG_REF_ALLOC);
+               NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->out.gdi_handle));
+               NDR_PULL_SET_MEM_CTX(ndr, _mem_save_gdi_handle_0, LIBNDR_FLAG_REF_ALLOC);
                NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
        }
        return NDR_ERR_SUCCESS;
@@ -23574,11 +24368,19 @@ _PUBLIC_ void ndr_print_spoolss_DeletePrinterIC(struct ndr_print *ndr, const cha
        if (flags & NDR_IN) {
                ndr_print_struct(ndr, "in", "spoolss_DeletePrinterIC");
                ndr->depth++;
+               ndr_print_ptr(ndr, "gdi_handle", r->in.gdi_handle);
+               ndr->depth++;
+               ndr_print_policy_handle(ndr, "gdi_handle", r->in.gdi_handle);
+               ndr->depth--;
                ndr->depth--;
        }
        if (flags & NDR_OUT) {
                ndr_print_struct(ndr, "out", "spoolss_DeletePrinterIC");
                ndr->depth++;
+               ndr_print_ptr(ndr, "gdi_handle", r->out.gdi_handle);
+               ndr->depth++;
+               ndr_print_policy_handle(ndr, "gdi_handle", r->out.gdi_handle);
+               ndr->depth--;
                ndr_print_WERROR(ndr, "result", r->out.result);
                ndr->depth--;
        }